[
  {
    "path": ".tmux.conf",
    "content": "# Bindings {{{\n# Remap prefix\nunbind C-b\nset -g prefix C-Space\n\n# Quick key for moving back to the previous window\nbind-key L last-window\n\n# Vim style bindings for pane movement\nbind-key -r h select-pane -L\nbind-key -r j select-pane -D\nbind-key -r k select-pane -U\nbind-key -r l select-pane -R\n\n# Fix issue with tmux repeating -r the arrow directions (meaning when you switch panes you can accidentally jump back to the other pane again)\nbind-key Up    select-pane -U\nbind-key Down  select-pane -D\nbind-key Left  select-pane -L\nbind-key Right select-pane -R\n\n# Make splitting windows easier\nbind-key v split-window -h\nbind-key s split-window -v\n\n# Reload tmux config\n# Same as in command mode :source-file ~/tmux.conf\n# Or outside of tmux with `tmux source-file ~/tmux.conf`\nbind-key r source-file ~/.tmux.conf\n\n# Allow Ctrl+k to clear the history\nbind-key -n C-k clear-history\n\n# Make resizing panes easier\nbind-key < resize-pane -L 5\nbind-key > resize-pane -R 5\nbind-key + resize-pane -U 5\nbind-key - resize-pane -D 5\nbind-key = select-layout even-vertical\nbind-key | select-layout even-horizontal\n# }}}\n\n# Settings {{{\n# Ensure terminal starts with its own colour scheme (defined below)\nset -g default-terminal \"screen-256color\"\n\nset-window-option -g utf8 on\n\n# Note: if you have EDITOR=vim set\n#       then the following two settings aren't needed\n\n# Use Vi style key bindings to move around command line mode\nset-option -g status-keys vi\n\n# Use Vi style key bindings to move around copy mode\nsetw -g mode-keys vi\n\n# Remove delay when pressing esc in Vim\nset -sg escape-time 0\n\n# Prevent tmux from renaming the tab when processes change\n# e.g. if you're in a directory which is a git repo and you fire up Pry then\n# tmux would first rename the tab to 'java' (for Pry) then 'git' when exiting Pry, then finally back to 'zsh'\nset-option -g allow-rename off\n\n# Tells tmux up front what shell to expect\nset-option -g default-shell /bin/zsh\n\n# Set base to 1\nset -g base-index 1\n\n# Enable UTF-8 support in status bar\nset -g status on\nset -g status-utf8 on\n\n# Increase scrollback lines\nset -g history-limit 30000\n\n# Renumber windows automatically after removing a window\n# Prevents my OCD and means I don't have to manually run {move|swap}-window\nset-option -g renumber-windows on\n\n# Colour reference...\n\n# Light Blue = 31\n# Dark Grey  = 234\n# Light Grey = 240\n# White      = 254\n\n# sets right side of the status bar to look bit nicer\nset -g status-right '#[fg=colour234,bg=white,nobold,nounderscore,noitalics]#[fg=colour250,bg=colour234] %a #[fg=colour247,bg=colour234] #[fg=colour247,bg=colour234] %b %d  %R #[fg=colour252,bg=colour234,nobold,nounderscore,noitalics]#[fg=red,bg=colour234]#[fg=white,bg=red] #H'\n\n# sets status bar background colour\nset -g status-bg white\n\n# positions each window name to the left most edge of the status bar\nset -g status-justify 'left'\n\n# sets default pane border colour\nset -g pane-border-fg white\n\n# highlights border of current pane\nset -g pane-active-border-fg red\n\n# sets status bar background colour when executing a command via command-line mode\nset -g message-bg red\n\n# sets colour of status bar font in command-line mode\nset -g message-fg white\n\n# adds separator (in this case some extra breathing space around the list of windows)\nsetw -g window-status-separator '  '\n\n# sets design of current window listed in the status bar\nsetw -g window-status-current-format '#[fg=colour231,bg=colour31,bold] #I  #W #[fg=colour31,bg=white,nobold,nounderscore,noitalics]'\n\n# Explanation of settings I don't use...\n#\n# sets background colour of status bar when you try to ESC command-line mode:\n# set -g message-command-bg 'colour31'\n#\n# sets colour of status bar font in default mode:\n# setw -g window-status-fg black\n#\n# sets the background colour of the window listed in the status bar:\n# setw -g window-status-bg 'colour234'\n#\n# sets default design around each window listed in the status bar:\n# setw -g window-status-format '#[fg=colour234,bg=colour234,nobold,nounderscore,noitalics]#[default] #I  #W #[fg=colour234,bg=colour234,nobold,nounderscore,noitalics]'\n#\n# sets left side information of status bar:\n# set -g status-left '#[fg=colour16,bg=colour254,bold] #S #[fg=colour254,bg=colour240,nobold,nounderscore,noitalics]#[fg=colour237,bg=colour240] #F #[fg=colour240,bg=colour236,nobold,nounderscore,noitalics]#[fg=colour247,bg=colour236] #W #[fg=colour236,bg=colour234,nobold,nounderscore,noitalics]'\n# }}}\n"
  },
  {
    "path": ".vim/autoload/pathogen.vim",
    "content": "\" pathogen.vim - path option manipulation\n\" Maintainer:   Tim Pope <http://tpo.pe/>\n\" Version:      2.2\n\n\" Install in ~/.vim/autoload (or ~\\vimfiles\\autoload).\n\"\n\" For management of individually installed plugins in ~/.vim/bundle (or\n\" ~\\vimfiles\\bundle), adding `execute pathogen#infect()` to the top of your\n\" .vimrc is the only other setup necessary.\n\"\n\" The API is documented inline below.  For maximum ease of reading,\n\" :set foldmethod=marker\n\nif exists(\"g:loaded_pathogen\") || &cp\n  finish\nendif\nlet g:loaded_pathogen = 1\n\nfunction! s:warn(msg)\n  echohl WarningMsg\n  echomsg a:msg\n  echohl NONE\nendfunction\n\n\" Point of entry for basic default usage.  Give a relative path to invoke\n\" pathogen#incubate() (defaults to \"bundle/{}\"), or an absolute path to invoke\n\" pathogen#surround().  For backwards compatibility purposes, a full path that\n\" does not end in {} or * is given to pathogen#runtime_prepend_subdirectories()\n\" instead.\nfunction! pathogen#infect(...) abort \" {{{1\n  for path in a:0 ? reverse(copy(a:000)) : ['bundle/{}']\n    if path =~# '^[^\\\\/]\\+$'\n      call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')')\n      call pathogen#incubate(path . '/{}')\n    elseif path =~# '^[^\\\\/]\\+[\\\\/]\\%({}\\|\\*\\)$'\n      call pathogen#incubate(path)\n    elseif path =~# '[\\\\/]\\%({}\\|\\*\\)$'\n      call pathogen#surround(path)\n    else\n      call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')')\n      call pathogen#surround(path . '/{}')\n    endif\n  endfor\n  call pathogen#cycle_filetype()\n  return ''\nendfunction \" }}}1\n\n\" Split a path into a list.\nfunction! pathogen#split(path) abort \" {{{1\n  if type(a:path) == type([]) | return a:path | endif\n  let split = split(a:path,'\\\\\\@<!\\%(\\\\\\\\\\)*\\zs,')\n  return map(split,'substitute(v:val,''\\\\\\([\\\\,]\\)'',''\\1'',\"g\")')\nendfunction \" }}}1\n\n\" Convert a list to a path.\nfunction! pathogen#join(...) abort \" {{{1\n  if type(a:1) == type(1) && a:1\n    let i = 1\n    let space = ' '\n  else\n    let i = 0\n    let space = ''\n  endif\n  let path = \"\"\n  while i < a:0\n    if type(a:000[i]) == type([])\n      let list = a:000[i]\n      let j = 0\n      while j < len(list)\n        let escaped = substitute(list[j],'[,'.space.']\\|\\\\[\\,'.space.']\\@=','\\\\&','g')\n        let path .= ',' . escaped\n        let j += 1\n      endwhile\n    else\n      let path .= \",\" . a:000[i]\n    endif\n    let i += 1\n  endwhile\n  return substitute(path,'^,','','')\nendfunction \" }}}1\n\n\" Convert a list to a path with escaped spaces for 'path', 'tag', etc.\nfunction! pathogen#legacyjoin(...) abort \" {{{1\n  return call('pathogen#join',[1] + a:000)\nendfunction \" }}}1\n\n\" Remove duplicates from a list.\nfunction! pathogen#uniq(list) abort \" {{{1\n  let i = 0\n  let seen = {}\n  while i < len(a:list)\n    if (a:list[i] ==# '' && exists('empty')) || has_key(seen,a:list[i])\n      call remove(a:list,i)\n    elseif a:list[i] ==# ''\n      let i += 1\n      let empty = 1\n    else\n      let seen[a:list[i]] = 1\n      let i += 1\n    endif\n  endwhile\n  return a:list\nendfunction \" }}}1\n\n\" \\ on Windows unless shellslash is set, / everywhere else.\nfunction! pathogen#separator() abort \" {{{1\n  return !exists(\"+shellslash\") || &shellslash ? '/' : '\\'\nendfunction \" }}}1\n\n\" Convenience wrapper around glob() which returns a list.\nfunction! pathogen#glob(pattern) abort \" {{{1\n  let files = split(glob(a:pattern),\"\\n\")\n  return map(files,'substitute(v:val,\"[\".pathogen#separator().\"/]$\",\"\",\"\")')\nendfunction \"}}}1\n\n\" Like pathogen#glob(), only limit the results to directories.\nfunction! pathogen#glob_directories(pattern) abort \" {{{1\n  return filter(pathogen#glob(a:pattern),'isdirectory(v:val)')\nendfunction \"}}}1\n\n\" Turn filetype detection off and back on again if it was already enabled.\nfunction! pathogen#cycle_filetype() \" {{{1\n  if exists('g:did_load_filetypes')\n    filetype off\n    filetype on\n  endif\nendfunction \" }}}1\n\n\" Check if a bundle is disabled.  A bundle is considered disabled if it ends\n\" in a tilde or its basename or full name is included in the list\n\" g:pathogen_disabled.\nfunction! pathogen#is_disabled(path) \" {{{1\n  if a:path =~# '\\~$'\n    return 1\n  elseif !exists(\"g:pathogen_disabled\")\n    return 0\n  endif\n  let sep = pathogen#separator()\n  let blacklist = g:pathogen_disabled\n  return index(blacklist, strpart(a:path, strridx(a:path, sep)+1)) != -1 && index(blacklist, a:path) != 1\nendfunction \"}}}1\n\n\" Prepend the given directory to the runtime path and append its corresponding\n\" after directory.  If the directory is already included, move it to the\n\" outermost position.  Wildcards are added as is.  Ending a path in /{} causes\n\" all subdirectories to be added (except those in g:pathogen_disabled).\nfunction! pathogen#surround(path) abort \" {{{1\n  let sep = pathogen#separator()\n  let rtp = pathogen#split(&rtp)\n  if a:path =~# '[\\\\/]{}$'\n    let path = fnamemodify(a:path[0:-4], ':p:s?[\\\\/]\\=$??')\n    let before = filter(pathogen#glob_directories(path.sep.'*'), '!pathogen#is_disabled(v:val)')\n    let after  = filter(reverse(pathogen#glob_directories(path.sep.\"*\".sep.\"after\")), '!pathogen#is_disabled(v:val[0:-7])')\n    call filter(rtp,'v:val[0:strlen(path)-1] !=# path')\n  else\n    let path = fnamemodify(a:path, ':p:s?[\\\\/]\\=$??')\n    let before = [path]\n    let after = [path . sep . 'after']\n    call filter(rtp, 'index(before + after, v:val) == -1')\n  endif\n  let &rtp = pathogen#join(before, rtp, after)\n  return &rtp\nendfunction \" }}}1\n\n\" Prepend all subdirectories of path to the rtp, and append all 'after'\n\" directories in those subdirectories.  Deprecated.\nfunction! pathogen#runtime_prepend_subdirectories(path) \" {{{1\n  call s:warn('Change pathogen#runtime_prepend_subdirectories('.string(a:path).') to pathogen#surround('.string(a:path.'/{}').')')\n  return pathogen#surround(a:path . pathogen#separator() . '{}')\nendfunction \" }}}1\n\n\" For each directory in the runtime path, add a second entry with the given\n\" argument appended.  If the argument ends in '/{}', add a separate entry for\n\" each subdirectory.  The default argument is 'bundle/{}', which means that\n\" .vim/bundle/*, $VIM/vimfiles/bundle/*, $VIMRUNTIME/bundle/*,\n\" $VIM/vim/files/bundle/*/after, and .vim/bundle/*/after will be added (on\n\" UNIX).\nfunction! pathogen#incubate(...) abort \" {{{1\n  let sep = pathogen#separator()\n  let name = a:0 ? a:1 : 'bundle/{}'\n  if \"\\n\".s:done_bundles =~# \"\\\\M\\n\".name.\"\\n\"\n    return \"\"\n  endif\n  let s:done_bundles .= name . \"\\n\"\n  let list = []\n  for dir in pathogen#split(&rtp)\n    if dir =~# '\\<after$'\n      if name =~# '{}$'\n        let list +=  filter(pathogen#glob_directories(substitute(dir,'after$',name[0:-3],'').'*'.sep.'after'), '!pathogen#is_disabled(v:val[0:-7])') + [dir]\n      else\n        let list += [dir, substitute(dir, 'after$', '', '') . name . sep . 'after']\n      endif\n    else\n      if name =~# '{}$'\n        let list +=  [dir] + filter(pathogen#glob_directories(dir.sep.name[0:-3].'*'), '!pathogen#is_disabled(v:val)')\n      else\n        let list += [dir . sep . name, dir]\n      endif\n    endif\n  endfor\n  let &rtp = pathogen#join(pathogen#uniq(list))\n  return 1\nendfunction \" }}}1\n\n\" Deprecated alias for pathogen#incubate().\nfunction! pathogen#runtime_append_all_bundles(...) abort \" {{{1\n  if a:0\n    call s:warn('Change pathogen#runtime_append_all_bundles('.string(a:1).') to pathogen#incubate('.string(a:1.'/{}').')')\n  else\n    call s:warn('Change pathogen#runtime_append_all_bundles() to pathogen#incubate()')\n  endif\n  return call('pathogen#incubate', map(copy(a:000),'v:val . \"/{}\"'))\nendfunction\n\nlet s:done_bundles = ''\n\" }}}1\n\n\" Invoke :helptags on all non-$VIM doc directories in runtimepath.\nfunction! pathogen#helptags() abort \" {{{1\n  let sep = pathogen#separator()\n  for glob in pathogen#split(&rtp)\n    for dir in split(glob(glob), \"\\n\")\n      if (dir.sep)[0 : strlen($VIMRUNTIME)] !=# $VIMRUNTIME.sep && filewritable(dir.sep.'doc') == 2 && !empty(filter(split(glob(dir.sep.'doc'.sep.'*'),\"\\n>\"),'!isdirectory(v:val)')) && (!filereadable(dir.sep.'doc'.sep.'tags') || filewritable(dir.sep.'doc'.sep.'tags'))\n        silent! execute 'helptags' pathogen#fnameescape(dir.'/doc')\n      endif\n    endfor\n  endfor\nendfunction \" }}}1\n\ncommand! -bar Helptags :call pathogen#helptags()\n\n\" Execute the given command.  This is basically a backdoor for --remote-expr.\nfunction! pathogen#execute(...) abort \" {{{1\n  for command in a:000\n    execute command\n  endfor\n  return ''\nendfunction \" }}}1\n\n\" Like findfile(), but hardcoded to use the runtimepath.\nfunction! pathogen#runtime_findfile(file,count) abort \"{{{1\n  let rtp = pathogen#join(1,pathogen#split(&rtp))\n  let file = findfile(a:file,rtp,a:count)\n  if file ==# ''\n    return ''\n  else\n    return fnamemodify(file,':p')\n  endif\nendfunction \" }}}1\n\n\" Backport of fnameescape().\nfunction! pathogen#fnameescape(string) abort \" {{{1\n  if exists('*fnameescape')\n    return fnameescape(a:string)\n  elseif a:string ==# '-'\n    return '\\-'\n  else\n    return substitute(escape(a:string,\" \\t\\n*?[{`$\\\\%#'\\\"|!<\"),'^[+>]','\\\\&','')\n  endif\nendfunction \" }}}1\n\nif exists(':Vedit')\n  finish\nendif\n\nlet s:vopen_warning = 0\n\nfunction! s:find(count,cmd,file,lcd) \" {{{1\n  let rtp = pathogen#join(1,pathogen#split(&runtimepath))\n  let file = pathogen#runtime_findfile(a:file,a:count)\n  if file ==# ''\n    return \"echoerr 'E345: Can''t find file \\\"\".a:file.\"\\\" in runtimepath'\"\n  endif\n  if !s:vopen_warning\n    let s:vopen_warning = 1\n    let warning = '|echohl WarningMsg|echo \"Install scriptease.vim to continue using :V'.a:cmd.'\"|echohl NONE'\n  else\n    let warning = ''\n  endif\n  if a:lcd\n    let path = file[0:-strlen(a:file)-2]\n    execute 'lcd `=path`'\n    return a:cmd.' '.pathogen#fnameescape(a:file) . warning\n  else\n    return a:cmd.' '.pathogen#fnameescape(file) . warning\n  endif\nendfunction \" }}}1\n\nfunction! s:Findcomplete(A,L,P) \" {{{1\n  let sep = pathogen#separator()\n  let cheats = {\n        \\'a': 'autoload',\n        \\'d': 'doc',\n        \\'f': 'ftplugin',\n        \\'i': 'indent',\n        \\'p': 'plugin',\n        \\'s': 'syntax'}\n  if a:A =~# '^\\w[\\\\/]' && has_key(cheats,a:A[0])\n    let request = cheats[a:A[0]].a:A[1:-1]\n  else\n    let request = a:A\n  endif\n  let pattern = substitute(request,'/\\|\\'.sep,'*'.sep,'g').'*'\n  let found = {}\n  for path in pathogen#split(&runtimepath)\n    let path = expand(path, ':p')\n    let matches = split(glob(path.sep.pattern),\"\\n\")\n    call map(matches,'isdirectory(v:val) ? v:val.sep : v:val')\n    call map(matches,'expand(v:val, \":p\")[strlen(path)+1:-1]')\n    for match in matches\n      let found[match] = 1\n    endfor\n  endfor\n  return sort(keys(found))\nendfunction \" }}}1\n\ncommand! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Ve       :execute s:find(<count>,'edit<bang>',<q-args>,0)\ncommand! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vedit    :execute s:find(<count>,'edit<bang>',<q-args>,0)\ncommand! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vopen    :execute s:find(<count>,'edit<bang>',<q-args>,1)\ncommand! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vsplit   :execute s:find(<count>,'split',<q-args>,<bang>1)\ncommand! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vvsplit  :execute s:find(<count>,'vsplit',<q-args>,<bang>1)\ncommand! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vtabedit :execute s:find(<count>,'tabedit',<q-args>,<bang>1)\ncommand! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vpedit   :execute s:find(<count>,'pedit',<q-args>,<bang>1)\ncommand! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vread    :execute s:find(<count>,'read',<q-args>,<bang>1)\n\n\" vim:set et sw=2:\n"
  },
  {
    "path": ".vim/bundle/CSApprox/README",
    "content": "This is a mirror of http://www.vim.org/scripts/script.php?script_id=2390\n\nCSApprox.vim\n\n============\nDESCRIPTION\n============\n\nIt's hard to find colorschemes for terminal Vim.  Most colorschemes are\nwritten to only support GVim, and don't work at all in terminal Vim.\n\nThis plugin makes GVim-only colorschemes Just Work in terminal Vim, as long\nas the terminal supports 88 or 256 colors - and most do these days.  This\nusually requires no user interaction (but see the help for what to do if\nthings don't Just Work).  After getting this plugin happily installed, any\ntime you use :colorscheme it will do its magic and make the colorscheme Just\nWork.\n\nWhenever you change colorschemes using the :colorscheme command this script\nwill be executed.  It will take the colors that the scheme specified for use\nin the GUI and use an approximation algorithm to try to gracefully degrade\nthem to the closest color available in your terminal.  If you are running in\na GUI or if your terminal doesn't support 88 or 256 colors, no changes are\nmade.  Also, no changes will be made if the colorscheme seems to have been\nhigh color already.\n\nIf for some reason this transparent method isn't suitable to you (for instance\nif your environment can't be configured to meet the |csapprox-requirements|,\nor you need to work in Vim 6), another option is also available: using the\n|:CSApproxSnapshot| command to create a new GUI/88-/256-color terminal\ncolorscheme.  To use this command, a user would generally start GVim, choose a\ncolorscheme that sets up the desired colors, and then use |:CSApproxSnapshot|\nto create a new colorscheme based on those colors that works in high color\nterminals.  This method is more flexible than the transparent mode and works\nin more places, but also requires more user intervention, and makes it harder\nto deal with colorschemes being updated and such.\n\n======\nNOTES\n======\n\nIdeally, this plugin should require absolutely no configuration, but you may\nneed some tweaking to make sure vim realizes that your terminal supports more\nthan 16 colors.  Also, konsole and Eterm users will want to make sure that\nthis plugin realizes that the terminal does not use colors that are exactly\nxterm-compatible; they will want to skim through the help articles\n|csapprox-palettes| and |csapprox-configuration| for a better end result.\n\n==============\nSCREENSHOTS\n==============\n\nSome quick side-by-side screenshots can be found at\nhttp://www.cs.drexel.edu/~mjw452/CSApprox/\n"
  },
  {
    "path": ".vim/bundle/CSApprox/after/plugin/CSApprox.vim",
    "content": "\" Copyright (c) 2012, Matthew J. Wozniski\n\" All rights reserved.\n\"\n\" Redistribution and use in source and binary forms, with or without\n\" modification, are permitted provided that the following conditions are met:\n\"     * Redistributions of source code must retain the above copyright\n\"       notice, this list of conditions and the following disclaimer.\n\"     * Redistributions in binary form must reproduce the above copyright\n\"       notice, this list of conditions and the following disclaimer in the\n\"       documentation and/or other materials provided with the distribution.\n\"     * The names of the contributors may not be used to endorse or promote\n\"       products derived from this software without specific prior written\n\"       permission.\n\"\n\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY\n\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n\" DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY\n\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n\" SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\" The last thing to do when sourced is to run and actually fix up the colors.\nif !has('gui_running') && exists(':CSApprox')\n  CSApprox\nendif\n"
  },
  {
    "path": ".vim/bundle/CSApprox/autoload/csapprox/common.vim",
    "content": "\" Copyright (c) 2012, Matthew J. Wozniski\n\" All rights reserved.\n\"\n\" Redistribution and use in source and binary forms, with or without\n\" modification, are permitted provided that the following conditions are met:\n\"     * Redistributions of source code must retain the above copyright\n\"       notice, this list of conditions and the following disclaimer.\n\"     * Redistributions in binary form must reproduce the above copyright\n\"       notice, this list of conditions and the following disclaimer in the\n\"       documentation and/or other materials provided with the distribution.\n\"     * The names of the contributors may not be used to endorse or promote\n\"       products derived from this software without specific prior written\n\"       permission.\n\"\n\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY\n\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n\" DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY\n\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n\" SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nlet s:xterm_colors   = [ 0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF ]\nlet s:eterm_colors   = [ 0x00, 0x2A, 0x55, 0x7F, 0xAA, 0xD4 ]\nlet s:konsole_colors = [ 0x00, 0x33, 0x66, 0x99, 0xCC, 0xFF ]\nlet s:xterm_greys    = [ 0x08, 0x12, 0x1C, 0x26, 0x30, 0x3A,\n                       \\ 0x44, 0x4E, 0x58, 0x62, 0x6C, 0x76,\n                       \\ 0x80, 0x8A, 0x94, 0x9E, 0xA8, 0xB2,\n                       \\ 0xBC, 0xC6, 0xD0, 0xDA, 0xE4, 0xEE ]\n\nlet s:urxvt_colors   = [ 0x00, 0x8B, 0xCD, 0xFF ]\nlet s:urxvt_greys    = [ 0x2E, 0x5C, 0x73, 0x8B,\n                       \\ 0xA2, 0xB9, 0xD0, 0xE7 ]\n\n\" Uses &term to determine which cube should be use.  If &term is set to\n\" \"xterm\" or begins with \"screen\", the variables g:CSApprox_eterm and\n\" g:CSApprox_konsole can be used to select a different palette.\nfunction! csapprox#common#PaletteType()\n  if &t_Co == 88\n    let type = 'urxvt'\n  elseif &term ==# 'xterm' || &term =~# '^screen' || &term==# 'builtin_gui'\n    if exists('g:CSApprox_konsole') && g:CSApprox_konsole\n      let type = 'konsole'\n    elseif exists('g:CSApprox_eterm') && g:CSApprox_eterm\n      let type = 'eterm'\n    else\n      let type = 'xterm'\n    endif\n  elseif &term =~? '^konsole'\n    \" Konsole only used its own palette up til KDE 4.2.0\n    if executable('kde4-config') && system('kde4-config --kde-version') =~ '^4\\.[10]\\.'\n      let type = 'konsole'\n    elseif executable('kde-config') && system('kde-config --version') =~# 'KDE: 3\\.'\n      let type = 'konsole'\n    else\n      let type = 'xterm'\n    endif\n  elseif &term =~? '^eterm'\n    let type = 'eterm'\n  else\n    let type = 'xterm'\n  endif\n\n  return type\nendfunction\n\n\" Retrieve the list of greyscale ramp colors for the current palette\nfunction! csapprox#common#Greys()\n  return (&t_Co == 88 ? s:urxvt_greys : s:xterm_greys)\nendfunction\n\n\" Retrieve the list of non-greyscale ramp colors for the current palette\nfunction! csapprox#common#Colors()\n  return s:{csapprox#common#PaletteType()}_colors\nendfunction\n"
  },
  {
    "path": ".vim/bundle/CSApprox/autoload/csapprox/per_component.vim",
    "content": "\" Copyright (c) 2012, Matthew J. Wozniski\n\" All rights reserved.\n\"\n\" Redistribution and use in source and binary forms, with or without\n\" modification, are permitted provided that the following conditions are met:\n\"     * Redistributions of source code must retain the above copyright\n\"       notice, this list of conditions and the following disclaimer.\n\"     * Redistributions in binary form must reproduce the above copyright\n\"       notice, this list of conditions and the following disclaimer in the\n\"       documentation and/or other materials provided with the distribution.\n\"     * The names of the contributors may not be used to endorse or promote\n\"       products derived from this software without specific prior written\n\"       permission.\n\"\n\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY\n\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n\" DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY\n\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n\" SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\" Integer comparator used to sort the complete list of possible colors\nfunction! s:IntCompare(i1, i2)\n  return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1\nendfunc\n\n\" Color comparator to find the nearest element to a given one in a given list\nfunction! s:NearestElemInList(elem, list)\n  let len = len(a:list)\n  for i in range(len-1)\n    if (a:elem <= (a:list[i] + a:list[i+1]) / 2)\n      return a:list[i]\n    endif\n  endfor\n  return a:list[len-1]\nendfunction\n\n\" Takes 3 decimal values for r, g, and b, and returns the closest cube number.\n\"\n\" This approximator considers closeness based upon the individiual components.\n\" For each of r, g, and b, it finds the closest cube component available on\n\" the cube.  If the three closest matches can combine to form a valid color,\n\" this color is used, otherwise we repeat the search with the greys removed,\n\" meaning that the three new matches must make a valid color when combined.\nfunction! csapprox#per_component#Approximate(r,g,b)\n  let hex = printf(\"%02x%02x%02x\", a:r, a:g, a:b)\n\n  let colors = csapprox#common#Colors()\n  let greys = csapprox#common#Greys()\n  let type = csapprox#common#PaletteType()\n\n  if !exists('s:approximator_cache_'.type)\n    let s:approximator_cache_{type} = {}\n  endif\n\n  let rv = get(s:approximator_cache_{type}, hex, -1)\n  if rv != -1\n    return rv\n  endif\n\n  \" Only obtain sorted list once\n  if !exists(\"s:\".type.\"_greys_colors\")\n    let s:{type}_greys_colors = sort(greys + colors, \"s:IntCompare\")\n  endif\n\n  let greys_colors = s:{type}_greys_colors\n\n  let r = s:NearestElemInList(a:r, greys_colors)\n  let g = s:NearestElemInList(a:g, greys_colors)\n  let b = s:NearestElemInList(a:b, greys_colors)\n\n  let len = len(colors)\n  if (r == g && g == b && index(greys, r) != -1)\n    let rv = 16 + len * len * len + index(greys, r)\n  else\n    let r = s:NearestElemInList(a:r, colors)\n    let g = s:NearestElemInList(a:g, colors)\n    let b = s:NearestElemInList(a:b, colors)\n    let rv = index(colors, r) * len * len\n         \\ + index(colors, g) * len\n         \\ + index(colors, b)\n         \\ + 16\n  endif\n\n  let s:approximator_cache_{type}[hex] = rv\n  return rv\nendfunction\n"
  },
  {
    "path": ".vim/bundle/CSApprox/autoload/csapprox.vim",
    "content": "\" Copyright (c) 2012, Matthew J. Wozniski\n\" All rights reserved.\n\"\n\" Redistribution and use in source and binary forms, with or without\n\" modification, are permitted provided that the following conditions are met:\n\"     * Redistributions of source code must retain the above copyright\n\"       notice, this list of conditions and the following disclaimer.\n\"     * Redistributions in binary form must reproduce the above copyright\n\"       notice, this list of conditions and the following disclaimer in the\n\"       documentation and/or other materials provided with the distribution.\n\"     * The names of the contributors may not be used to endorse or promote\n\"       products derived from this software without specific prior written\n\"       permission.\n\"\n\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY\n\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n\" DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY\n\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n\" SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nlet s:rgb = {}\n\nlet s:rgb[\"alice blue\"]             = \"#f0f8ff\"\nlet s:rgb[\"aliceblue\"]              = \"#f0f8ff\"\nlet s:rgb[\"antique white\"]          = \"#faebd7\"\nlet s:rgb[\"antiquewhite\"]           = \"#faebd7\"\nlet s:rgb[\"antiquewhite1\"]          = \"#ffefdb\"\nlet s:rgb[\"antiquewhite2\"]          = \"#eedfcc\"\nlet s:rgb[\"antiquewhite3\"]          = \"#cdc0b0\"\nlet s:rgb[\"antiquewhite4\"]          = \"#8b8378\"\nlet s:rgb[\"aquamarine\"]             = \"#7fffd4\"\nlet s:rgb[\"aquamarine1\"]            = \"#7fffd4\"\nlet s:rgb[\"aquamarine2\"]            = \"#76eec6\"\nlet s:rgb[\"aquamarine3\"]            = \"#66cdaa\"\nlet s:rgb[\"aquamarine4\"]            = \"#458b74\"\nlet s:rgb[\"azure\"]                  = \"#f0ffff\"\nlet s:rgb[\"azure1\"]                 = \"#f0ffff\"\nlet s:rgb[\"azure2\"]                 = \"#e0eeee\"\nlet s:rgb[\"azure3\"]                 = \"#c1cdcd\"\nlet s:rgb[\"azure4\"]                 = \"#838b8b\"\nlet s:rgb[\"beige\"]                  = \"#f5f5dc\"\nlet s:rgb[\"bisque\"]                 = \"#ffe4c4\"\nlet s:rgb[\"bisque1\"]                = \"#ffe4c4\"\nlet s:rgb[\"bisque2\"]                = \"#eed5b7\"\nlet s:rgb[\"bisque3\"]                = \"#cdb79e\"\nlet s:rgb[\"bisque4\"]                = \"#8b7d6b\"\nlet s:rgb[\"black\"]                  = \"#000000\"\nlet s:rgb[\"blanched almond\"]        = \"#ffebcd\"\nlet s:rgb[\"blanchedalmond\"]         = \"#ffebcd\"\nlet s:rgb[\"blue violet\"]            = \"#8a2be2\"\nlet s:rgb[\"blue\"]                   = \"#0000ff\"\nlet s:rgb[\"blue1\"]                  = \"#0000ff\"\nlet s:rgb[\"blue2\"]                  = \"#0000ee\"\nlet s:rgb[\"blue3\"]                  = \"#0000cd\"\nlet s:rgb[\"blue4\"]                  = \"#00008b\"\nlet s:rgb[\"blueviolet\"]             = \"#8a2be2\"\nlet s:rgb[\"brown\"]                  = \"#a52a2a\"\nlet s:rgb[\"brown1\"]                 = \"#ff4040\"\nlet s:rgb[\"brown2\"]                 = \"#ee3b3b\"\nlet s:rgb[\"brown3\"]                 = \"#cd3333\"\nlet s:rgb[\"brown4\"]                 = \"#8b2323\"\nlet s:rgb[\"burlywood\"]              = \"#deb887\"\nlet s:rgb[\"burlywood1\"]             = \"#ffd39b\"\nlet s:rgb[\"burlywood2\"]             = \"#eec591\"\nlet s:rgb[\"burlywood3\"]             = \"#cdaa7d\"\nlet s:rgb[\"burlywood4\"]             = \"#8b7355\"\nlet s:rgb[\"cadet blue\"]             = \"#5f9ea0\"\nlet s:rgb[\"cadetblue\"]              = \"#5f9ea0\"\nlet s:rgb[\"cadetblue1\"]             = \"#98f5ff\"\nlet s:rgb[\"cadetblue2\"]             = \"#8ee5ee\"\nlet s:rgb[\"cadetblue3\"]             = \"#7ac5cd\"\nlet s:rgb[\"cadetblue4\"]             = \"#53868b\"\nlet s:rgb[\"chartreuse\"]             = \"#7fff00\"\nlet s:rgb[\"chartreuse1\"]            = \"#7fff00\"\nlet s:rgb[\"chartreuse2\"]            = \"#76ee00\"\nlet s:rgb[\"chartreuse3\"]            = \"#66cd00\"\nlet s:rgb[\"chartreuse4\"]            = \"#458b00\"\nlet s:rgb[\"chocolate\"]              = \"#d2691e\"\nlet s:rgb[\"chocolate1\"]             = \"#ff7f24\"\nlet s:rgb[\"chocolate2\"]             = \"#ee7621\"\nlet s:rgb[\"chocolate3\"]             = \"#cd661d\"\nlet s:rgb[\"chocolate4\"]             = \"#8b4513\"\nlet s:rgb[\"coral\"]                  = \"#ff7f50\"\nlet s:rgb[\"coral1\"]                 = \"#ff7256\"\nlet s:rgb[\"coral2\"]                 = \"#ee6a50\"\nlet s:rgb[\"coral3\"]                 = \"#cd5b45\"\nlet s:rgb[\"coral4\"]                 = \"#8b3e2f\"\nlet s:rgb[\"cornflower blue\"]        = \"#6495ed\"\nlet s:rgb[\"cornflowerblue\"]         = \"#6495ed\"\nlet s:rgb[\"cornsilk\"]               = \"#fff8dc\"\nlet s:rgb[\"cornsilk1\"]              = \"#fff8dc\"\nlet s:rgb[\"cornsilk2\"]              = \"#eee8cd\"\nlet s:rgb[\"cornsilk3\"]              = \"#cdc8b1\"\nlet s:rgb[\"cornsilk4\"]              = \"#8b8878\"\nlet s:rgb[\"cyan\"]                   = \"#00ffff\"\nlet s:rgb[\"cyan1\"]                  = \"#00ffff\"\nlet s:rgb[\"cyan2\"]                  = \"#00eeee\"\nlet s:rgb[\"cyan3\"]                  = \"#00cdcd\"\nlet s:rgb[\"cyan4\"]                  = \"#008b8b\"\nlet s:rgb[\"dark blue\"]              = \"#00008b\"\nlet s:rgb[\"dark cyan\"]              = \"#008b8b\"\nlet s:rgb[\"dark goldenrod\"]         = \"#b8860b\"\nlet s:rgb[\"dark gray\"]              = \"#a9a9a9\"\nlet s:rgb[\"dark green\"]             = \"#006400\"\nlet s:rgb[\"dark grey\"]              = \"#a9a9a9\"\nlet s:rgb[\"dark khaki\"]             = \"#bdb76b\"\nlet s:rgb[\"dark magenta\"]           = \"#8b008b\"\nlet s:rgb[\"dark olive green\"]       = \"#556b2f\"\nlet s:rgb[\"dark orange\"]            = \"#ff8c00\"\nlet s:rgb[\"dark orchid\"]            = \"#9932cc\"\nlet s:rgb[\"dark red\"]               = \"#8b0000\"\nlet s:rgb[\"dark salmon\"]            = \"#e9967a\"\nlet s:rgb[\"dark sea green\"]         = \"#8fbc8f\"\nlet s:rgb[\"dark slate blue\"]        = \"#483d8b\"\nlet s:rgb[\"dark slate gray\"]        = \"#2f4f4f\"\nlet s:rgb[\"dark slate grey\"]        = \"#2f4f4f\"\nlet s:rgb[\"dark turquoise\"]         = \"#00ced1\"\nlet s:rgb[\"dark violet\"]            = \"#9400d3\"\nlet s:rgb[\"dark yellow\"]            = \"#bbbb00\"\nlet s:rgb[\"darkblue\"]               = \"#00008b\"\nlet s:rgb[\"darkcyan\"]               = \"#008b8b\"\nlet s:rgb[\"darkgoldenrod\"]          = \"#b8860b\"\nlet s:rgb[\"darkgoldenrod1\"]         = \"#ffb90f\"\nlet s:rgb[\"darkgoldenrod2\"]         = \"#eead0e\"\nlet s:rgb[\"darkgoldenrod3\"]         = \"#cd950c\"\nlet s:rgb[\"darkgoldenrod4\"]         = \"#8b6508\"\nlet s:rgb[\"darkgray\"]               = \"#a9a9a9\"\nlet s:rgb[\"darkgreen\"]              = \"#006400\"\nlet s:rgb[\"darkgrey\"]               = \"#a9a9a9\"\nlet s:rgb[\"darkkhaki\"]              = \"#bdb76b\"\nlet s:rgb[\"darkmagenta\"]            = \"#8b008b\"\nlet s:rgb[\"darkolivegreen\"]         = \"#556b2f\"\nlet s:rgb[\"darkolivegreen1\"]        = \"#caff70\"\nlet s:rgb[\"darkolivegreen2\"]        = \"#bcee68\"\nlet s:rgb[\"darkolivegreen3\"]        = \"#a2cd5a\"\nlet s:rgb[\"darkolivegreen4\"]        = \"#6e8b3d\"\nlet s:rgb[\"darkorange\"]             = \"#ff8c00\"\nlet s:rgb[\"darkorange1\"]            = \"#ff7f00\"\nlet s:rgb[\"darkorange2\"]            = \"#ee7600\"\nlet s:rgb[\"darkorange3\"]            = \"#cd6600\"\nlet s:rgb[\"darkorange4\"]            = \"#8b4500\"\nlet s:rgb[\"darkorchid\"]             = \"#9932cc\"\nlet s:rgb[\"darkorchid1\"]            = \"#bf3eff\"\nlet s:rgb[\"darkorchid2\"]            = \"#b23aee\"\nlet s:rgb[\"darkorchid3\"]            = \"#9a32cd\"\nlet s:rgb[\"darkorchid4\"]            = \"#68228b\"\nlet s:rgb[\"darkred\"]                = \"#8b0000\"\nlet s:rgb[\"darksalmon\"]             = \"#e9967a\"\nlet s:rgb[\"darkseagreen\"]           = \"#8fbc8f\"\nlet s:rgb[\"darkseagreen1\"]          = \"#c1ffc1\"\nlet s:rgb[\"darkseagreen2\"]          = \"#b4eeb4\"\nlet s:rgb[\"darkseagreen3\"]          = \"#9bcd9b\"\nlet s:rgb[\"darkseagreen4\"]          = \"#698b69\"\nlet s:rgb[\"darkslateblue\"]          = \"#483d8b\"\nlet s:rgb[\"darkslategray\"]          = \"#2f4f4f\"\nlet s:rgb[\"darkslategray1\"]         = \"#97ffff\"\nlet s:rgb[\"darkslategray2\"]         = \"#8deeee\"\nlet s:rgb[\"darkslategray3\"]         = \"#79cdcd\"\nlet s:rgb[\"darkslategray4\"]         = \"#528b8b\"\nlet s:rgb[\"darkslategrey\"]          = \"#2f4f4f\"\nlet s:rgb[\"darkturquoise\"]          = \"#00ced1\"\nlet s:rgb[\"darkviolet\"]             = \"#9400d3\"\nlet s:rgb[\"darkyellow\"]             = \"#bbbb00\"\nlet s:rgb[\"deep pink\"]              = \"#ff1493\"\nlet s:rgb[\"deep sky blue\"]          = \"#00bfff\"\nlet s:rgb[\"deeppink\"]               = \"#ff1493\"\nlet s:rgb[\"deeppink1\"]              = \"#ff1493\"\nlet s:rgb[\"deeppink2\"]              = \"#ee1289\"\nlet s:rgb[\"deeppink3\"]              = \"#cd1076\"\nlet s:rgb[\"deeppink4\"]              = \"#8b0a50\"\nlet s:rgb[\"deepskyblue\"]            = \"#00bfff\"\nlet s:rgb[\"deepskyblue1\"]           = \"#00bfff\"\nlet s:rgb[\"deepskyblue2\"]           = \"#00b2ee\"\nlet s:rgb[\"deepskyblue3\"]           = \"#009acd\"\nlet s:rgb[\"deepskyblue4\"]           = \"#00688b\"\nlet s:rgb[\"dim gray\"]               = \"#696969\"\nlet s:rgb[\"dim grey\"]               = \"#696969\"\nlet s:rgb[\"dimgray\"]                = \"#696969\"\nlet s:rgb[\"dimgrey\"]                = \"#696969\"\nlet s:rgb[\"dodger blue\"]            = \"#1e90ff\"\nlet s:rgb[\"dodgerblue\"]             = \"#1e90ff\"\nlet s:rgb[\"dodgerblue1\"]            = \"#1e90ff\"\nlet s:rgb[\"dodgerblue2\"]            = \"#1c86ee\"\nlet s:rgb[\"dodgerblue3\"]            = \"#1874cd\"\nlet s:rgb[\"dodgerblue4\"]            = \"#104e8b\"\nlet s:rgb[\"firebrick\"]              = \"#b22222\"\nlet s:rgb[\"firebrick1\"]             = \"#ff3030\"\nlet s:rgb[\"firebrick2\"]             = \"#ee2c2c\"\nlet s:rgb[\"firebrick3\"]             = \"#cd2626\"\nlet s:rgb[\"firebrick4\"]             = \"#8b1a1a\"\nlet s:rgb[\"floral white\"]           = \"#fffaf0\"\nlet s:rgb[\"floralwhite\"]            = \"#fffaf0\"\nlet s:rgb[\"forest green\"]           = \"#228b22\"\nlet s:rgb[\"forestgreen\"]            = \"#228b22\"\nlet s:rgb[\"gainsboro\"]              = \"#dcdcdc\"\nlet s:rgb[\"ghost white\"]            = \"#f8f8ff\"\nlet s:rgb[\"ghostwhite\"]             = \"#f8f8ff\"\nlet s:rgb[\"gold\"]                   = \"#ffd700\"\nlet s:rgb[\"gold1\"]                  = \"#ffd700\"\nlet s:rgb[\"gold2\"]                  = \"#eec900\"\nlet s:rgb[\"gold3\"]                  = \"#cdad00\"\nlet s:rgb[\"gold4\"]                  = \"#8b7500\"\nlet s:rgb[\"goldenrod\"]              = \"#daa520\"\nlet s:rgb[\"goldenrod1\"]             = \"#ffc125\"\nlet s:rgb[\"goldenrod2\"]             = \"#eeb422\"\nlet s:rgb[\"goldenrod3\"]             = \"#cd9b1d\"\nlet s:rgb[\"goldenrod4\"]             = \"#8b6914\"\nlet s:rgb[\"gray\"]                   = \"#bebebe\"\nlet s:rgb[\"gray0\"]                  = \"#000000\"\nlet s:rgb[\"gray1\"]                  = \"#030303\"\nlet s:rgb[\"gray10\"]                 = \"#1a1a1a\"\nlet s:rgb[\"gray100\"]                = \"#ffffff\"\nlet s:rgb[\"gray11\"]                 = \"#1c1c1c\"\nlet s:rgb[\"gray12\"]                 = \"#1f1f1f\"\nlet s:rgb[\"gray13\"]                 = \"#212121\"\nlet s:rgb[\"gray14\"]                 = \"#242424\"\nlet s:rgb[\"gray15\"]                 = \"#262626\"\nlet s:rgb[\"gray16\"]                 = \"#292929\"\nlet s:rgb[\"gray17\"]                 = \"#2b2b2b\"\nlet s:rgb[\"gray18\"]                 = \"#2e2e2e\"\nlet s:rgb[\"gray19\"]                 = \"#303030\"\nlet s:rgb[\"gray2\"]                  = \"#050505\"\nlet s:rgb[\"gray20\"]                 = \"#333333\"\nlet s:rgb[\"gray21\"]                 = \"#363636\"\nlet s:rgb[\"gray22\"]                 = \"#383838\"\nlet s:rgb[\"gray23\"]                 = \"#3b3b3b\"\nlet s:rgb[\"gray24\"]                 = \"#3d3d3d\"\nlet s:rgb[\"gray25\"]                 = \"#404040\"\nlet s:rgb[\"gray26\"]                 = \"#424242\"\nlet s:rgb[\"gray27\"]                 = \"#454545\"\nlet s:rgb[\"gray28\"]                 = \"#474747\"\nlet s:rgb[\"gray29\"]                 = \"#4a4a4a\"\nlet s:rgb[\"gray3\"]                  = \"#080808\"\nlet s:rgb[\"gray30\"]                 = \"#4d4d4d\"\nlet s:rgb[\"gray31\"]                 = \"#4f4f4f\"\nlet s:rgb[\"gray32\"]                 = \"#525252\"\nlet s:rgb[\"gray33\"]                 = \"#545454\"\nlet s:rgb[\"gray34\"]                 = \"#575757\"\nlet s:rgb[\"gray35\"]                 = \"#595959\"\nlet s:rgb[\"gray36\"]                 = \"#5c5c5c\"\nlet s:rgb[\"gray37\"]                 = \"#5e5e5e\"\nlet s:rgb[\"gray38\"]                 = \"#616161\"\nlet s:rgb[\"gray39\"]                 = \"#636363\"\nlet s:rgb[\"gray4\"]                  = \"#0a0a0a\"\nlet s:rgb[\"gray40\"]                 = \"#666666\"\nlet s:rgb[\"gray41\"]                 = \"#696969\"\nlet s:rgb[\"gray42\"]                 = \"#6b6b6b\"\nlet s:rgb[\"gray43\"]                 = \"#6e6e6e\"\nlet s:rgb[\"gray44\"]                 = \"#707070\"\nlet s:rgb[\"gray45\"]                 = \"#737373\"\nlet s:rgb[\"gray46\"]                 = \"#757575\"\nlet s:rgb[\"gray47\"]                 = \"#787878\"\nlet s:rgb[\"gray48\"]                 = \"#7a7a7a\"\nlet s:rgb[\"gray49\"]                 = \"#7d7d7d\"\nlet s:rgb[\"gray5\"]                  = \"#0d0d0d\"\nlet s:rgb[\"gray50\"]                 = \"#7f7f7f\"\nlet s:rgb[\"gray51\"]                 = \"#828282\"\nlet s:rgb[\"gray52\"]                 = \"#858585\"\nlet s:rgb[\"gray53\"]                 = \"#878787\"\nlet s:rgb[\"gray54\"]                 = \"#8a8a8a\"\nlet s:rgb[\"gray55\"]                 = \"#8c8c8c\"\nlet s:rgb[\"gray56\"]                 = \"#8f8f8f\"\nlet s:rgb[\"gray57\"]                 = \"#919191\"\nlet s:rgb[\"gray58\"]                 = \"#949494\"\nlet s:rgb[\"gray59\"]                 = \"#969696\"\nlet s:rgb[\"gray6\"]                  = \"#0f0f0f\"\nlet s:rgb[\"gray60\"]                 = \"#999999\"\nlet s:rgb[\"gray61\"]                 = \"#9c9c9c\"\nlet s:rgb[\"gray62\"]                 = \"#9e9e9e\"\nlet s:rgb[\"gray63\"]                 = \"#a1a1a1\"\nlet s:rgb[\"gray64\"]                 = \"#a3a3a3\"\nlet s:rgb[\"gray65\"]                 = \"#a6a6a6\"\nlet s:rgb[\"gray66\"]                 = \"#a8a8a8\"\nlet s:rgb[\"gray67\"]                 = \"#ababab\"\nlet s:rgb[\"gray68\"]                 = \"#adadad\"\nlet s:rgb[\"gray69\"]                 = \"#b0b0b0\"\nlet s:rgb[\"gray7\"]                  = \"#121212\"\nlet s:rgb[\"gray70\"]                 = \"#b3b3b3\"\nlet s:rgb[\"gray71\"]                 = \"#b5b5b5\"\nlet s:rgb[\"gray72\"]                 = \"#b8b8b8\"\nlet s:rgb[\"gray73\"]                 = \"#bababa\"\nlet s:rgb[\"gray74\"]                 = \"#bdbdbd\"\nlet s:rgb[\"gray75\"]                 = \"#bfbfbf\"\nlet s:rgb[\"gray76\"]                 = \"#c2c2c2\"\nlet s:rgb[\"gray77\"]                 = \"#c4c4c4\"\nlet s:rgb[\"gray78\"]                 = \"#c7c7c7\"\nlet s:rgb[\"gray79\"]                 = \"#c9c9c9\"\nlet s:rgb[\"gray8\"]                  = \"#141414\"\nlet s:rgb[\"gray80\"]                 = \"#cccccc\"\nlet s:rgb[\"gray81\"]                 = \"#cfcfcf\"\nlet s:rgb[\"gray82\"]                 = \"#d1d1d1\"\nlet s:rgb[\"gray83\"]                 = \"#d4d4d4\"\nlet s:rgb[\"gray84\"]                 = \"#d6d6d6\"\nlet s:rgb[\"gray85\"]                 = \"#d9d9d9\"\nlet s:rgb[\"gray86\"]                 = \"#dbdbdb\"\nlet s:rgb[\"gray87\"]                 = \"#dedede\"\nlet s:rgb[\"gray88\"]                 = \"#e0e0e0\"\nlet s:rgb[\"gray89\"]                 = \"#e3e3e3\"\nlet s:rgb[\"gray9\"]                  = \"#171717\"\nlet s:rgb[\"gray90\"]                 = \"#e5e5e5\"\nlet s:rgb[\"gray91\"]                 = \"#e8e8e8\"\nlet s:rgb[\"gray92\"]                 = \"#ebebeb\"\nlet s:rgb[\"gray93\"]                 = \"#ededed\"\nlet s:rgb[\"gray94\"]                 = \"#f0f0f0\"\nlet s:rgb[\"gray95\"]                 = \"#f2f2f2\"\nlet s:rgb[\"gray96\"]                 = \"#f5f5f5\"\nlet s:rgb[\"gray97\"]                 = \"#f7f7f7\"\nlet s:rgb[\"gray98\"]                 = \"#fafafa\"\nlet s:rgb[\"gray99\"]                 = \"#fcfcfc\"\nlet s:rgb[\"green yellow\"]           = \"#adff2f\"\nlet s:rgb[\"green\"]                  = \"#00ff00\"\nlet s:rgb[\"green1\"]                 = \"#00ff00\"\nlet s:rgb[\"green2\"]                 = \"#00ee00\"\nlet s:rgb[\"green3\"]                 = \"#00cd00\"\nlet s:rgb[\"green4\"]                 = \"#008b00\"\nlet s:rgb[\"greenyellow\"]            = \"#adff2f\"\nlet s:rgb[\"grey\"]                   = \"#bebebe\"\nlet s:rgb[\"grey0\"]                  = \"#000000\"\nlet s:rgb[\"grey1\"]                  = \"#030303\"\nlet s:rgb[\"grey10\"]                 = \"#1a1a1a\"\nlet s:rgb[\"grey100\"]                = \"#ffffff\"\nlet s:rgb[\"grey11\"]                 = \"#1c1c1c\"\nlet s:rgb[\"grey12\"]                 = \"#1f1f1f\"\nlet s:rgb[\"grey13\"]                 = \"#212121\"\nlet s:rgb[\"grey14\"]                 = \"#242424\"\nlet s:rgb[\"grey15\"]                 = \"#262626\"\nlet s:rgb[\"grey16\"]                 = \"#292929\"\nlet s:rgb[\"grey17\"]                 = \"#2b2b2b\"\nlet s:rgb[\"grey18\"]                 = \"#2e2e2e\"\nlet s:rgb[\"grey19\"]                 = \"#303030\"\nlet s:rgb[\"grey2\"]                  = \"#050505\"\nlet s:rgb[\"grey20\"]                 = \"#333333\"\nlet s:rgb[\"grey21\"]                 = \"#363636\"\nlet s:rgb[\"grey22\"]                 = \"#383838\"\nlet s:rgb[\"grey23\"]                 = \"#3b3b3b\"\nlet s:rgb[\"grey24\"]                 = \"#3d3d3d\"\nlet s:rgb[\"grey25\"]                 = \"#404040\"\nlet s:rgb[\"grey26\"]                 = \"#424242\"\nlet s:rgb[\"grey27\"]                 = \"#454545\"\nlet s:rgb[\"grey28\"]                 = \"#474747\"\nlet s:rgb[\"grey29\"]                 = \"#4a4a4a\"\nlet s:rgb[\"grey3\"]                  = \"#080808\"\nlet s:rgb[\"grey30\"]                 = \"#4d4d4d\"\nlet s:rgb[\"grey31\"]                 = \"#4f4f4f\"\nlet s:rgb[\"grey32\"]                 = \"#525252\"\nlet s:rgb[\"grey33\"]                 = \"#545454\"\nlet s:rgb[\"grey34\"]                 = \"#575757\"\nlet s:rgb[\"grey35\"]                 = \"#595959\"\nlet s:rgb[\"grey36\"]                 = \"#5c5c5c\"\nlet s:rgb[\"grey37\"]                 = \"#5e5e5e\"\nlet s:rgb[\"grey38\"]                 = \"#616161\"\nlet s:rgb[\"grey39\"]                 = \"#636363\"\nlet s:rgb[\"grey4\"]                  = \"#0a0a0a\"\nlet s:rgb[\"grey40\"]                 = \"#666666\"\nlet s:rgb[\"grey41\"]                 = \"#696969\"\nlet s:rgb[\"grey42\"]                 = \"#6b6b6b\"\nlet s:rgb[\"grey43\"]                 = \"#6e6e6e\"\nlet s:rgb[\"grey44\"]                 = \"#707070\"\nlet s:rgb[\"grey45\"]                 = \"#737373\"\nlet s:rgb[\"grey46\"]                 = \"#757575\"\nlet s:rgb[\"grey47\"]                 = \"#787878\"\nlet s:rgb[\"grey48\"]                 = \"#7a7a7a\"\nlet s:rgb[\"grey49\"]                 = \"#7d7d7d\"\nlet s:rgb[\"grey5\"]                  = \"#0d0d0d\"\nlet s:rgb[\"grey50\"]                 = \"#7f7f7f\"\nlet s:rgb[\"grey51\"]                 = \"#828282\"\nlet s:rgb[\"grey52\"]                 = \"#858585\"\nlet s:rgb[\"grey53\"]                 = \"#878787\"\nlet s:rgb[\"grey54\"]                 = \"#8a8a8a\"\nlet s:rgb[\"grey55\"]                 = \"#8c8c8c\"\nlet s:rgb[\"grey56\"]                 = \"#8f8f8f\"\nlet s:rgb[\"grey57\"]                 = \"#919191\"\nlet s:rgb[\"grey58\"]                 = \"#949494\"\nlet s:rgb[\"grey59\"]                 = \"#969696\"\nlet s:rgb[\"grey6\"]                  = \"#0f0f0f\"\nlet s:rgb[\"grey60\"]                 = \"#999999\"\nlet s:rgb[\"grey61\"]                 = \"#9c9c9c\"\nlet s:rgb[\"grey62\"]                 = \"#9e9e9e\"\nlet s:rgb[\"grey63\"]                 = \"#a1a1a1\"\nlet s:rgb[\"grey64\"]                 = \"#a3a3a3\"\nlet s:rgb[\"grey65\"]                 = \"#a6a6a6\"\nlet s:rgb[\"grey66\"]                 = \"#a8a8a8\"\nlet s:rgb[\"grey67\"]                 = \"#ababab\"\nlet s:rgb[\"grey68\"]                 = \"#adadad\"\nlet s:rgb[\"grey69\"]                 = \"#b0b0b0\"\nlet s:rgb[\"grey7\"]                  = \"#121212\"\nlet s:rgb[\"grey70\"]                 = \"#b3b3b3\"\nlet s:rgb[\"grey71\"]                 = \"#b5b5b5\"\nlet s:rgb[\"grey72\"]                 = \"#b8b8b8\"\nlet s:rgb[\"grey73\"]                 = \"#bababa\"\nlet s:rgb[\"grey74\"]                 = \"#bdbdbd\"\nlet s:rgb[\"grey75\"]                 = \"#bfbfbf\"\nlet s:rgb[\"grey76\"]                 = \"#c2c2c2\"\nlet s:rgb[\"grey77\"]                 = \"#c4c4c4\"\nlet s:rgb[\"grey78\"]                 = \"#c7c7c7\"\nlet s:rgb[\"grey79\"]                 = \"#c9c9c9\"\nlet s:rgb[\"grey8\"]                  = \"#141414\"\nlet s:rgb[\"grey80\"]                 = \"#cccccc\"\nlet s:rgb[\"grey81\"]                 = \"#cfcfcf\"\nlet s:rgb[\"grey82\"]                 = \"#d1d1d1\"\nlet s:rgb[\"grey83\"]                 = \"#d4d4d4\"\nlet s:rgb[\"grey84\"]                 = \"#d6d6d6\"\nlet s:rgb[\"grey85\"]                 = \"#d9d9d9\"\nlet s:rgb[\"grey86\"]                 = \"#dbdbdb\"\nlet s:rgb[\"grey87\"]                 = \"#dedede\"\nlet s:rgb[\"grey88\"]                 = \"#e0e0e0\"\nlet s:rgb[\"grey89\"]                 = \"#e3e3e3\"\nlet s:rgb[\"grey9\"]                  = \"#171717\"\nlet s:rgb[\"grey90\"]                 = \"#e5e5e5\"\nlet s:rgb[\"grey91\"]                 = \"#e8e8e8\"\nlet s:rgb[\"grey92\"]                 = \"#ebebeb\"\nlet s:rgb[\"grey93\"]                 = \"#ededed\"\nlet s:rgb[\"grey94\"]                 = \"#f0f0f0\"\nlet s:rgb[\"grey95\"]                 = \"#f2f2f2\"\nlet s:rgb[\"grey96\"]                 = \"#f5f5f5\"\nlet s:rgb[\"grey97\"]                 = \"#f7f7f7\"\nlet s:rgb[\"grey98\"]                 = \"#fafafa\"\nlet s:rgb[\"grey99\"]                 = \"#fcfcfc\"\nlet s:rgb[\"honeydew\"]               = \"#f0fff0\"\nlet s:rgb[\"honeydew1\"]              = \"#f0fff0\"\nlet s:rgb[\"honeydew2\"]              = \"#e0eee0\"\nlet s:rgb[\"honeydew3\"]              = \"#c1cdc1\"\nlet s:rgb[\"honeydew4\"]              = \"#838b83\"\nlet s:rgb[\"hot pink\"]               = \"#ff69b4\"\nlet s:rgb[\"hotpink\"]                = \"#ff69b4\"\nlet s:rgb[\"hotpink1\"]               = \"#ff6eb4\"\nlet s:rgb[\"hotpink2\"]               = \"#ee6aa7\"\nlet s:rgb[\"hotpink3\"]               = \"#cd6090\"\nlet s:rgb[\"hotpink4\"]               = \"#8b3a62\"\nlet s:rgb[\"indian red\"]             = \"#cd5c5c\"\nlet s:rgb[\"indianred\"]              = \"#cd5c5c\"\nlet s:rgb[\"indianred1\"]             = \"#ff6a6a\"\nlet s:rgb[\"indianred2\"]             = \"#ee6363\"\nlet s:rgb[\"indianred3\"]             = \"#cd5555\"\nlet s:rgb[\"indianred4\"]             = \"#8b3a3a\"\nlet s:rgb[\"ivory\"]                  = \"#fffff0\"\nlet s:rgb[\"ivory1\"]                 = \"#fffff0\"\nlet s:rgb[\"ivory2\"]                 = \"#eeeee0\"\nlet s:rgb[\"ivory3\"]                 = \"#cdcdc1\"\nlet s:rgb[\"ivory4\"]                 = \"#8b8b83\"\nlet s:rgb[\"khaki\"]                  = \"#f0e68c\"\nlet s:rgb[\"khaki1\"]                 = \"#fff68f\"\nlet s:rgb[\"khaki2\"]                 = \"#eee685\"\nlet s:rgb[\"khaki3\"]                 = \"#cdc673\"\nlet s:rgb[\"khaki4\"]                 = \"#8b864e\"\nlet s:rgb[\"lavender blush\"]         = \"#fff0f5\"\nlet s:rgb[\"lavender\"]               = \"#e6e6fa\"\nlet s:rgb[\"lavenderblush\"]          = \"#fff0f5\"\nlet s:rgb[\"lavenderblush1\"]         = \"#fff0f5\"\nlet s:rgb[\"lavenderblush2\"]         = \"#eee0e5\"\nlet s:rgb[\"lavenderblush3\"]         = \"#cdc1c5\"\nlet s:rgb[\"lavenderblush4\"]         = \"#8b8386\"\nlet s:rgb[\"lawn green\"]             = \"#7cfc00\"\nlet s:rgb[\"lawngreen\"]              = \"#7cfc00\"\nlet s:rgb[\"lemon chiffon\"]          = \"#fffacd\"\nlet s:rgb[\"lemonchiffon\"]           = \"#fffacd\"\nlet s:rgb[\"lemonchiffon1\"]          = \"#fffacd\"\nlet s:rgb[\"lemonchiffon2\"]          = \"#eee9bf\"\nlet s:rgb[\"lemonchiffon3\"]          = \"#cdc9a5\"\nlet s:rgb[\"lemonchiffon4\"]          = \"#8b8970\"\nlet s:rgb[\"light blue\"]             = \"#add8e6\"\nlet s:rgb[\"light coral\"]            = \"#f08080\"\nlet s:rgb[\"light cyan\"]             = \"#e0ffff\"\nlet s:rgb[\"light goldenrod yellow\"] = \"#fafad2\"\nlet s:rgb[\"light goldenrod\"]        = \"#eedd82\"\nlet s:rgb[\"light gray\"]             = \"#d3d3d3\"\nlet s:rgb[\"light green\"]            = \"#90ee90\"\nlet s:rgb[\"light grey\"]             = \"#d3d3d3\"\nlet s:rgb[\"light magenta\"]          = \"#ffbbff\"\nlet s:rgb[\"light pink\"]             = \"#ffb6c1\"\nlet s:rgb[\"light red\"]              = \"#ffbbbb\"\nlet s:rgb[\"light salmon\"]           = \"#ffa07a\"\nlet s:rgb[\"light sea green\"]        = \"#20b2aa\"\nlet s:rgb[\"light sky blue\"]         = \"#87cefa\"\nlet s:rgb[\"light slate blue\"]       = \"#8470ff\"\nlet s:rgb[\"light slate gray\"]       = \"#778899\"\nlet s:rgb[\"light slate grey\"]       = \"#778899\"\nlet s:rgb[\"light steel blue\"]       = \"#b0c4de\"\nlet s:rgb[\"light yellow\"]           = \"#ffffe0\"\nlet s:rgb[\"lightblue\"]              = \"#add8e6\"\nlet s:rgb[\"lightblue1\"]             = \"#bfefff\"\nlet s:rgb[\"lightblue2\"]             = \"#b2dfee\"\nlet s:rgb[\"lightblue3\"]             = \"#9ac0cd\"\nlet s:rgb[\"lightblue4\"]             = \"#68838b\"\nlet s:rgb[\"lightcoral\"]             = \"#f08080\"\nlet s:rgb[\"lightcyan\"]              = \"#e0ffff\"\nlet s:rgb[\"lightcyan1\"]             = \"#e0ffff\"\nlet s:rgb[\"lightcyan2\"]             = \"#d1eeee\"\nlet s:rgb[\"lightcyan3\"]             = \"#b4cdcd\"\nlet s:rgb[\"lightcyan4\"]             = \"#7a8b8b\"\nlet s:rgb[\"lightgoldenrod\"]         = \"#eedd82\"\nlet s:rgb[\"lightgoldenrod1\"]        = \"#ffec8b\"\nlet s:rgb[\"lightgoldenrod2\"]        = \"#eedc82\"\nlet s:rgb[\"lightgoldenrod3\"]        = \"#cdbe70\"\nlet s:rgb[\"lightgoldenrod4\"]        = \"#8b814c\"\nlet s:rgb[\"lightgoldenrodyellow\"]   = \"#fafad2\"\nlet s:rgb[\"lightgray\"]              = \"#d3d3d3\"\nlet s:rgb[\"lightgreen\"]             = \"#90ee90\"\nlet s:rgb[\"lightgrey\"]              = \"#d3d3d3\"\nlet s:rgb[\"lightmagenta\"]           = \"#ffbbff\"\nlet s:rgb[\"lightpink\"]              = \"#ffb6c1\"\nlet s:rgb[\"lightpink1\"]             = \"#ffaeb9\"\nlet s:rgb[\"lightpink2\"]             = \"#eea2ad\"\nlet s:rgb[\"lightpink3\"]             = \"#cd8c95\"\nlet s:rgb[\"lightpink4\"]             = \"#8b5f65\"\nlet s:rgb[\"lightred\"]               = \"#ffbbbb\"\nlet s:rgb[\"lightsalmon\"]            = \"#ffa07a\"\nlet s:rgb[\"lightsalmon1\"]           = \"#ffa07a\"\nlet s:rgb[\"lightsalmon2\"]           = \"#ee9572\"\nlet s:rgb[\"lightsalmon3\"]           = \"#cd8162\"\nlet s:rgb[\"lightsalmon4\"]           = \"#8b5742\"\nlet s:rgb[\"lightseagreen\"]          = \"#20b2aa\"\nlet s:rgb[\"lightskyblue\"]           = \"#87cefa\"\nlet s:rgb[\"lightskyblue1\"]          = \"#b0e2ff\"\nlet s:rgb[\"lightskyblue2\"]          = \"#a4d3ee\"\nlet s:rgb[\"lightskyblue3\"]          = \"#8db6cd\"\nlet s:rgb[\"lightskyblue4\"]          = \"#607b8b\"\nlet s:rgb[\"lightslateblue\"]         = \"#8470ff\"\nlet s:rgb[\"lightslategray\"]         = \"#778899\"\nlet s:rgb[\"lightslategrey\"]         = \"#778899\"\nlet s:rgb[\"lightsteelblue\"]         = \"#b0c4de\"\nlet s:rgb[\"lightsteelblue1\"]        = \"#cae1ff\"\nlet s:rgb[\"lightsteelblue2\"]        = \"#bcd2ee\"\nlet s:rgb[\"lightsteelblue3\"]        = \"#a2b5cd\"\nlet s:rgb[\"lightsteelblue4\"]        = \"#6e7b8b\"\nlet s:rgb[\"lightyellow\"]            = \"#ffffe0\"\nlet s:rgb[\"lightyellow1\"]           = \"#ffffe0\"\nlet s:rgb[\"lightyellow2\"]           = \"#eeeed1\"\nlet s:rgb[\"lightyellow3\"]           = \"#cdcdb4\"\nlet s:rgb[\"lightyellow4\"]           = \"#8b8b7a\"\nlet s:rgb[\"lime green\"]             = \"#32cd32\"\nlet s:rgb[\"limegreen\"]              = \"#32cd32\"\nlet s:rgb[\"linen\"]                  = \"#faf0e6\"\nlet s:rgb[\"magenta\"]                = \"#ff00ff\"\nlet s:rgb[\"magenta1\"]               = \"#ff00ff\"\nlet s:rgb[\"magenta2\"]               = \"#ee00ee\"\nlet s:rgb[\"magenta3\"]               = \"#cd00cd\"\nlet s:rgb[\"magenta4\"]               = \"#8b008b\"\nlet s:rgb[\"maroon\"]                 = \"#b03060\"\nlet s:rgb[\"maroon1\"]                = \"#ff34b3\"\nlet s:rgb[\"maroon2\"]                = \"#ee30a7\"\nlet s:rgb[\"maroon3\"]                = \"#cd2990\"\nlet s:rgb[\"maroon4\"]                = \"#8b1c62\"\nlet s:rgb[\"medium aquamarine\"]      = \"#66cdaa\"\nlet s:rgb[\"medium blue\"]            = \"#0000cd\"\nlet s:rgb[\"medium orchid\"]          = \"#ba55d3\"\nlet s:rgb[\"medium purple\"]          = \"#9370db\"\nlet s:rgb[\"medium sea green\"]       = \"#3cb371\"\nlet s:rgb[\"medium slate blue\"]      = \"#7b68ee\"\nlet s:rgb[\"medium spring green\"]    = \"#00fa9a\"\nlet s:rgb[\"medium turquoise\"]       = \"#48d1cc\"\nlet s:rgb[\"medium violet red\"]      = \"#c71585\"\nlet s:rgb[\"mediumaquamarine\"]       = \"#66cdaa\"\nlet s:rgb[\"mediumblue\"]             = \"#0000cd\"\nlet s:rgb[\"mediumorchid\"]           = \"#ba55d3\"\nlet s:rgb[\"mediumorchid1\"]          = \"#e066ff\"\nlet s:rgb[\"mediumorchid2\"]          = \"#d15fee\"\nlet s:rgb[\"mediumorchid3\"]          = \"#b452cd\"\nlet s:rgb[\"mediumorchid4\"]          = \"#7a378b\"\nlet s:rgb[\"mediumpurple\"]           = \"#9370db\"\nlet s:rgb[\"mediumpurple1\"]          = \"#ab82ff\"\nlet s:rgb[\"mediumpurple2\"]          = \"#9f79ee\"\nlet s:rgb[\"mediumpurple3\"]          = \"#8968cd\"\nlet s:rgb[\"mediumpurple4\"]          = \"#5d478b\"\nlet s:rgb[\"mediumseagreen\"]         = \"#3cb371\"\nlet s:rgb[\"mediumslateblue\"]        = \"#7b68ee\"\nlet s:rgb[\"mediumspringgreen\"]      = \"#00fa9a\"\nlet s:rgb[\"mediumturquoise\"]        = \"#48d1cc\"\nlet s:rgb[\"mediumvioletred\"]        = \"#c71585\"\nlet s:rgb[\"midnight blue\"]          = \"#191970\"\nlet s:rgb[\"midnightblue\"]           = \"#191970\"\nlet s:rgb[\"mint cream\"]             = \"#f5fffa\"\nlet s:rgb[\"mintcream\"]              = \"#f5fffa\"\nlet s:rgb[\"misty rose\"]             = \"#ffe4e1\"\nlet s:rgb[\"mistyrose\"]              = \"#ffe4e1\"\nlet s:rgb[\"mistyrose1\"]             = \"#ffe4e1\"\nlet s:rgb[\"mistyrose2\"]             = \"#eed5d2\"\nlet s:rgb[\"mistyrose3\"]             = \"#cdb7b5\"\nlet s:rgb[\"mistyrose4\"]             = \"#8b7d7b\"\nlet s:rgb[\"moccasin\"]               = \"#ffe4b5\"\nlet s:rgb[\"navajo white\"]           = \"#ffdead\"\nlet s:rgb[\"navajowhite\"]            = \"#ffdead\"\nlet s:rgb[\"navajowhite1\"]           = \"#ffdead\"\nlet s:rgb[\"navajowhite2\"]           = \"#eecfa1\"\nlet s:rgb[\"navajowhite3\"]           = \"#cdb38b\"\nlet s:rgb[\"navajowhite4\"]           = \"#8b795e\"\nlet s:rgb[\"navy blue\"]              = \"#000080\"\nlet s:rgb[\"navy\"]                   = \"#000080\"\nlet s:rgb[\"navyblue\"]               = \"#000080\"\nlet s:rgb[\"old lace\"]               = \"#fdf5e6\"\nlet s:rgb[\"oldlace\"]                = \"#fdf5e6\"\nlet s:rgb[\"olive drab\"]             = \"#6b8e23\"\nlet s:rgb[\"olivedrab\"]              = \"#6b8e23\"\nlet s:rgb[\"olivedrab1\"]             = \"#c0ff3e\"\nlet s:rgb[\"olivedrab2\"]             = \"#b3ee3a\"\nlet s:rgb[\"olivedrab3\"]             = \"#9acd32\"\nlet s:rgb[\"olivedrab4\"]             = \"#698b22\"\nlet s:rgb[\"orange red\"]             = \"#ff4500\"\nlet s:rgb[\"orange\"]                 = \"#ffa500\"\nlet s:rgb[\"orange1\"]                = \"#ffa500\"\nlet s:rgb[\"orange2\"]                = \"#ee9a00\"\nlet s:rgb[\"orange3\"]                = \"#cd8500\"\nlet s:rgb[\"orange4\"]                = \"#8b5a00\"\nlet s:rgb[\"orangered\"]              = \"#ff4500\"\nlet s:rgb[\"orangered1\"]             = \"#ff4500\"\nlet s:rgb[\"orangered2\"]             = \"#ee4000\"\nlet s:rgb[\"orangered3\"]             = \"#cd3700\"\nlet s:rgb[\"orangered4\"]             = \"#8b2500\"\nlet s:rgb[\"orchid\"]                 = \"#da70d6\"\nlet s:rgb[\"orchid1\"]                = \"#ff83fa\"\nlet s:rgb[\"orchid2\"]                = \"#ee7ae9\"\nlet s:rgb[\"orchid3\"]                = \"#cd69c9\"\nlet s:rgb[\"orchid4\"]                = \"#8b4789\"\nlet s:rgb[\"pale goldenrod\"]         = \"#eee8aa\"\nlet s:rgb[\"pale green\"]             = \"#98fb98\"\nlet s:rgb[\"pale turquoise\"]         = \"#afeeee\"\nlet s:rgb[\"pale violet red\"]        = \"#db7093\"\nlet s:rgb[\"palegoldenrod\"]          = \"#eee8aa\"\nlet s:rgb[\"palegreen\"]              = \"#98fb98\"\nlet s:rgb[\"palegreen1\"]             = \"#9aff9a\"\nlet s:rgb[\"palegreen2\"]             = \"#90ee90\"\nlet s:rgb[\"palegreen3\"]             = \"#7ccd7c\"\nlet s:rgb[\"palegreen4\"]             = \"#548b54\"\nlet s:rgb[\"paleturquoise\"]          = \"#afeeee\"\nlet s:rgb[\"paleturquoise1\"]         = \"#bbffff\"\nlet s:rgb[\"paleturquoise2\"]         = \"#aeeeee\"\nlet s:rgb[\"paleturquoise3\"]         = \"#96cdcd\"\nlet s:rgb[\"paleturquoise4\"]         = \"#668b8b\"\nlet s:rgb[\"palevioletred\"]          = \"#db7093\"\nlet s:rgb[\"palevioletred1\"]         = \"#ff82ab\"\nlet s:rgb[\"palevioletred2\"]         = \"#ee799f\"\nlet s:rgb[\"palevioletred3\"]         = \"#cd6889\"\nlet s:rgb[\"palevioletred4\"]         = \"#8b475d\"\nlet s:rgb[\"papaya whip\"]            = \"#ffefd5\"\nlet s:rgb[\"papayawhip\"]             = \"#ffefd5\"\nlet s:rgb[\"peach puff\"]             = \"#ffdab9\"\nlet s:rgb[\"peachpuff\"]              = \"#ffdab9\"\nlet s:rgb[\"peachpuff1\"]             = \"#ffdab9\"\nlet s:rgb[\"peachpuff2\"]             = \"#eecbad\"\nlet s:rgb[\"peachpuff3\"]             = \"#cdaf95\"\nlet s:rgb[\"peachpuff4\"]             = \"#8b7765\"\nlet s:rgb[\"peru\"]                   = \"#cd853f\"\nlet s:rgb[\"pink\"]                   = \"#ffc0cb\"\nlet s:rgb[\"pink1\"]                  = \"#ffb5c5\"\nlet s:rgb[\"pink2\"]                  = \"#eea9b8\"\nlet s:rgb[\"pink3\"]                  = \"#cd919e\"\nlet s:rgb[\"pink4\"]                  = \"#8b636c\"\nlet s:rgb[\"plum\"]                   = \"#dda0dd\"\nlet s:rgb[\"plum1\"]                  = \"#ffbbff\"\nlet s:rgb[\"plum2\"]                  = \"#eeaeee\"\nlet s:rgb[\"plum3\"]                  = \"#cd96cd\"\nlet s:rgb[\"plum4\"]                  = \"#8b668b\"\nlet s:rgb[\"powder blue\"]            = \"#b0e0e6\"\nlet s:rgb[\"powderblue\"]             = \"#b0e0e6\"\nlet s:rgb[\"purple\"]                 = \"#a020f0\"\nlet s:rgb[\"purple1\"]                = \"#9b30ff\"\nlet s:rgb[\"purple2\"]                = \"#912cee\"\nlet s:rgb[\"purple3\"]                = \"#7d26cd\"\nlet s:rgb[\"purple4\"]                = \"#551a8b\"\nlet s:rgb[\"red\"]                    = \"#ff0000\"\nlet s:rgb[\"red1\"]                   = \"#ff0000\"\nlet s:rgb[\"red2\"]                   = \"#ee0000\"\nlet s:rgb[\"red3\"]                   = \"#cd0000\"\nlet s:rgb[\"red4\"]                   = \"#8b0000\"\nlet s:rgb[\"rosy brown\"]             = \"#bc8f8f\"\nlet s:rgb[\"rosybrown\"]              = \"#bc8f8f\"\nlet s:rgb[\"rosybrown1\"]             = \"#ffc1c1\"\nlet s:rgb[\"rosybrown2\"]             = \"#eeb4b4\"\nlet s:rgb[\"rosybrown3\"]             = \"#cd9b9b\"\nlet s:rgb[\"rosybrown4\"]             = \"#8b6969\"\nlet s:rgb[\"royal blue\"]             = \"#4169e1\"\nlet s:rgb[\"royalblue\"]              = \"#4169e1\"\nlet s:rgb[\"royalblue1\"]             = \"#4876ff\"\nlet s:rgb[\"royalblue2\"]             = \"#436eee\"\nlet s:rgb[\"royalblue3\"]             = \"#3a5fcd\"\nlet s:rgb[\"royalblue4\"]             = \"#27408b\"\nlet s:rgb[\"saddle brown\"]           = \"#8b4513\"\nlet s:rgb[\"saddlebrown\"]            = \"#8b4513\"\nlet s:rgb[\"salmon\"]                 = \"#fa8072\"\nlet s:rgb[\"salmon1\"]                = \"#ff8c69\"\nlet s:rgb[\"salmon2\"]                = \"#ee8262\"\nlet s:rgb[\"salmon3\"]                = \"#cd7054\"\nlet s:rgb[\"salmon4\"]                = \"#8b4c39\"\nlet s:rgb[\"sandy brown\"]            = \"#f4a460\"\nlet s:rgb[\"sandybrown\"]             = \"#f4a460\"\nlet s:rgb[\"sea green\"]              = \"#2e8b57\"\nlet s:rgb[\"seagreen\"]               = \"#2e8b57\"\nlet s:rgb[\"seagreen1\"]              = \"#54ff9f\"\nlet s:rgb[\"seagreen2\"]              = \"#4eee94\"\nlet s:rgb[\"seagreen3\"]              = \"#43cd80\"\nlet s:rgb[\"seagreen4\"]              = \"#2e8b57\"\nlet s:rgb[\"seashell\"]               = \"#fff5ee\"\nlet s:rgb[\"seashell1\"]              = \"#fff5ee\"\nlet s:rgb[\"seashell2\"]              = \"#eee5de\"\nlet s:rgb[\"seashell3\"]              = \"#cdc5bf\"\nlet s:rgb[\"seashell4\"]              = \"#8b8682\"\nlet s:rgb[\"sienna\"]                 = \"#a0522d\"\nlet s:rgb[\"sienna1\"]                = \"#ff8247\"\nlet s:rgb[\"sienna2\"]                = \"#ee7942\"\nlet s:rgb[\"sienna3\"]                = \"#cd6839\"\nlet s:rgb[\"sienna4\"]                = \"#8b4726\"\nlet s:rgb[\"sky blue\"]               = \"#87ceeb\"\nlet s:rgb[\"skyblue\"]                = \"#87ceeb\"\nlet s:rgb[\"skyblue1\"]               = \"#87ceff\"\nlet s:rgb[\"skyblue2\"]               = \"#7ec0ee\"\nlet s:rgb[\"skyblue3\"]               = \"#6ca6cd\"\nlet s:rgb[\"skyblue4\"]               = \"#4a708b\"\nlet s:rgb[\"slate blue\"]             = \"#6a5acd\"\nlet s:rgb[\"slate gray\"]             = \"#708090\"\nlet s:rgb[\"slate grey\"]             = \"#708090\"\nlet s:rgb[\"slateblue\"]              = \"#6a5acd\"\nlet s:rgb[\"slateblue1\"]             = \"#836fff\"\nlet s:rgb[\"slateblue2\"]             = \"#7a67ee\"\nlet s:rgb[\"slateblue3\"]             = \"#6959cd\"\nlet s:rgb[\"slateblue4\"]             = \"#473c8b\"\nlet s:rgb[\"slategray\"]              = \"#708090\"\nlet s:rgb[\"slategray1\"]             = \"#c6e2ff\"\nlet s:rgb[\"slategray2\"]             = \"#b9d3ee\"\nlet s:rgb[\"slategray3\"]             = \"#9fb6cd\"\nlet s:rgb[\"slategray4\"]             = \"#6c7b8b\"\nlet s:rgb[\"slategrey\"]              = \"#708090\"\nlet s:rgb[\"snow\"]                   = \"#fffafa\"\nlet s:rgb[\"snow1\"]                  = \"#fffafa\"\nlet s:rgb[\"snow2\"]                  = \"#eee9e9\"\nlet s:rgb[\"snow3\"]                  = \"#cdc9c9\"\nlet s:rgb[\"snow4\"]                  = \"#8b8989\"\nlet s:rgb[\"spring green\"]           = \"#00ff7f\"\nlet s:rgb[\"springgreen\"]            = \"#00ff7f\"\nlet s:rgb[\"springgreen1\"]           = \"#00ff7f\"\nlet s:rgb[\"springgreen2\"]           = \"#00ee76\"\nlet s:rgb[\"springgreen3\"]           = \"#00cd66\"\nlet s:rgb[\"springgreen4\"]           = \"#008b45\"\nlet s:rgb[\"steel blue\"]             = \"#4682b4\"\nlet s:rgb[\"steelblue\"]              = \"#4682b4\"\nlet s:rgb[\"steelblue1\"]             = \"#63b8ff\"\nlet s:rgb[\"steelblue2\"]             = \"#5cacee\"\nlet s:rgb[\"steelblue3\"]             = \"#4f94cd\"\nlet s:rgb[\"steelblue4\"]             = \"#36648b\"\nlet s:rgb[\"tan\"]                    = \"#d2b48c\"\nlet s:rgb[\"tan1\"]                   = \"#ffa54f\"\nlet s:rgb[\"tan2\"]                   = \"#ee9a49\"\nlet s:rgb[\"tan3\"]                   = \"#cd853f\"\nlet s:rgb[\"tan4\"]                   = \"#8b5a2b\"\nlet s:rgb[\"thistle\"]                = \"#d8bfd8\"\nlet s:rgb[\"thistle1\"]               = \"#ffe1ff\"\nlet s:rgb[\"thistle2\"]               = \"#eed2ee\"\nlet s:rgb[\"thistle3\"]               = \"#cdb5cd\"\nlet s:rgb[\"thistle4\"]               = \"#8b7b8b\"\nlet s:rgb[\"tomato\"]                 = \"#ff6347\"\nlet s:rgb[\"tomato1\"]                = \"#ff6347\"\nlet s:rgb[\"tomato2\"]                = \"#ee5c42\"\nlet s:rgb[\"tomato3\"]                = \"#cd4f39\"\nlet s:rgb[\"tomato4\"]                = \"#8b3626\"\nlet s:rgb[\"turquoise\"]              = \"#40e0d0\"\nlet s:rgb[\"turquoise1\"]             = \"#00f5ff\"\nlet s:rgb[\"turquoise2\"]             = \"#00e5ee\"\nlet s:rgb[\"turquoise3\"]             = \"#00c5cd\"\nlet s:rgb[\"turquoise4\"]             = \"#00868b\"\nlet s:rgb[\"violet red\"]             = \"#d02090\"\nlet s:rgb[\"violet\"]                 = \"#ee82ee\"\nlet s:rgb[\"violetred\"]              = \"#d02090\"\nlet s:rgb[\"violetred1\"]             = \"#ff3e96\"\nlet s:rgb[\"violetred2\"]             = \"#ee3a8c\"\nlet s:rgb[\"violetred3\"]             = \"#cd3278\"\nlet s:rgb[\"violetred4\"]             = \"#8b2252\"\nlet s:rgb[\"wheat\"]                  = \"#f5deb3\"\nlet s:rgb[\"wheat1\"]                 = \"#ffe7ba\"\nlet s:rgb[\"wheat2\"]                 = \"#eed8ae\"\nlet s:rgb[\"wheat3\"]                 = \"#cdba96\"\nlet s:rgb[\"wheat4\"]                 = \"#8b7e66\"\nlet s:rgb[\"white smoke\"]            = \"#f5f5f5\"\nlet s:rgb[\"white\"]                  = \"#ffffff\"\nlet s:rgb[\"whitesmoke\"]             = \"#f5f5f5\"\nlet s:rgb[\"yellow green\"]           = \"#9acd32\"\nlet s:rgb[\"yellow\"]                 = \"#ffff00\"\nlet s:rgb[\"yellow1\"]                = \"#ffff00\"\nlet s:rgb[\"yellow2\"]                = \"#eeee00\"\nlet s:rgb[\"yellow3\"]                = \"#cdcd00\"\nlet s:rgb[\"yellow4\"]                = \"#8b8b00\"\nlet s:rgb[\"yellowgreen\"]            = \"#9acd32\"\n\nif has('mac') && !has('macunix')\n  let s:rgb[\"dark gray\"]     = \"0x808080\"\n  let s:rgb[\"darkgray\"]      = \"0x808080\"\n  let s:rgb[\"dark grey\"]     = \"0x808080\"\n  let s:rgb[\"darkgrey\"]      = \"0x808080\"\n  let s:rgb[\"gray\"]          = \"0xc0c0c0\"\n  let s:rgb[\"grey\"]          = \"0xc0c0c0\"\n  let s:rgb[\"light gray\"]    = \"0xe0e0e0\"\n  let s:rgb[\"lightgray\"]     = \"0xe0e0e0\"\n  let s:rgb[\"light grey\"]    = \"0xe0e0e0\"\n  let s:rgb[\"lightgrey\"]     = \"0xe0e0e0\"\n  let s:rgb[\"dark red\"]      = \"0x800000\"\n  let s:rgb[\"darkred\"]       = \"0x800000\"\n  let s:rgb[\"red\"]           = \"0xdd0806\"\n  let s:rgb[\"light red\"]     = \"0xffa0a0\"\n  let s:rgb[\"lightred\"]      = \"0xffa0a0\"\n  let s:rgb[\"dark blue\"]     = \"0x000080\"\n  let s:rgb[\"darkblue\"]      = \"0x000080\"\n  let s:rgb[\"blue\"]          = \"0x0000d4\"\n  let s:rgb[\"light blue\"]    = \"0xa0a0ff\"\n  let s:rgb[\"lightblue\"]     = \"0xa0a0ff\"\n  let s:rgb[\"dark green\"]    = \"0x008000\"\n  let s:rgb[\"darkgreen\"]     = \"0x008000\"\n  let s:rgb[\"green\"]         = \"0x006411\"\n  let s:rgb[\"light green\"]   = \"0xa0ffa0\"\n  let s:rgb[\"lightgreen\"]    = \"0xa0ffa0\"\n  let s:rgb[\"dark cyan\"]     = \"0x008080\"\n  let s:rgb[\"darkcyan\"]      = \"0x008080\"\n  let s:rgb[\"cyan\"]          = \"0x02abea\"\n  let s:rgb[\"light cyan\"]    = \"0xa0ffff\"\n  let s:rgb[\"lightcyan\"]     = \"0xa0ffff\"\n  let s:rgb[\"dark magenta\"]  = \"0x800080\"\n  let s:rgb[\"darkmagenta\"]   = \"0x800080\"\n  let s:rgb[\"magenta\"]       = \"0xf20884\"\n  let s:rgb[\"light magenta\"] = \"0xf0a0f0\"\n  let s:rgb[\"lightmagenta\"]  = \"0xf0a0f0\"\n  let s:rgb[\"brown\"]         = \"0x804040\"\n  let s:rgb[\"yellow\"]        = \"0xfcf305\"\n  let s:rgb[\"light yellow\"]  = \"0xffffa0\"\n  let s:rgb[\"lightyellow\"]   = \"0xffffa0\"\n  let s:rgb[\"orange\"]        = \"0xfc8000\"\n  let s:rgb[\"purple\"]        = \"0xa020f0\"\n  let s:rgb[\"slateblue\"]     = \"0x6a5acd\"\n  let s:rgb[\"violet\"]        = \"0x8d38c9\"\nendif\n\nfunction! csapprox#rgb()\n  return s:rgb\nendfunction\n"
  },
  {
    "path": ".vim/bundle/CSApprox/doc/CSApprox.txt",
    "content": "*CSApprox.txt*  Bringing GVim colorschemes to the terminal!\n\n                                                     *csapprox* *csapprox.vim*\n\n                  _____ ____ ___                               ~\n                 / ___// __// _ |  ___   ___   ____ ___  __ __ ~\n                / /__ _\\ \\ / __ | / _ \\ / _ \\ / __// _ \\ \\ \\ / ~\n                \\___//___//_/ |_|/ .__// .__//_/   \\___//_\\_\\  ~\n                                /_/   /_/                      ~\n                                                  For Vim version 7.0 or newer\n                                                      Last changed 14 Sep 2012\n\n                               By Matt Wozniski\n                             godlygeek@gmail.com\n\n                              Reference Manual~\n\n                                                                *csapprox-toc*\n\n1. Introduction                                       |csapprox-intro|\n2. Requirements                                       |csapprox-requirements|\n3. Configuration                                      |csapprox-configure|\n4. Rationale/Design                                   |csapprox-design|\n5. Known Bugs and Limitations                         |csapprox-limitations|\n6. Appendix - Terminals and Palettes                  |csapprox-terminal-list|\n7. Changelog                                          |csapprox-changelog|\n8. Contact Info                                       |csapprox-author|\n\nThe functionality mentioned here is a plugin, see |add-plugin|.\nYou can avoid loading this plugin by setting the \"CSApprox_loaded\" global\nvariable in your |vimrc| file: >\n    :let g:CSApprox_loaded = 1\n\n==============================================================================\n1. Introduction                                               *csapprox-intro*\n\nIt's hard to find colorschemes for terminal Vim.  Most colorschemes are\nwritten to only support GVim, and don't work at all in terminal Vim.\n\nThis plugin makes GVim-only colorschemes Just Work in terminal Vim, as long\nas the terminal supports 88 or 256 colors - and most do these days.  This\nusually requires no user interaction (but see below for what to do if things\ndon't Just Work).  After getting this plugin happily installed, any time you\nuse :colorscheme it will do its magic and make the colorscheme Just Work.\n\nWhenever you change colorschemes using the :colorscheme command this script\nwill be executed.  It will take the colors that the scheme specified for use\nin the GUI and use an approximation algorithm to try to gracefully degrade\nthem to the closest color available in your terminal.  If you are running in\na GUI or if your terminal doesn't support 88 or 256 colors, no changes are\nmade.  Also, no changes will be made if the colorscheme seems to have been\nhigh color already.\n\nIf for some reason this transparent method isn't suitable to you (for instance\nif your environment can't be configured to meet the |csapprox-requirements|,\nor you need to work in Vim 6), another option is also available: using the\n|:CSApproxSnapshot| command to create a new GUI/88-/256-color terminal\ncolorscheme.  To use this command, a user would generally start GVim, choose a\ncolorscheme that sets up the desired colors, and then use |:CSApproxSnapshot|\nto create a new colorscheme based on those colors that works in high color\nterminals.  This method is more flexible than the transparent mode and works\nin more places, but also requires more user intervention, and makes it harder\nto deal with colorschemes being updated and such.\n                                                           *:CSApproxSnapshot*\nThe full syntax for the command is: >\n    :CSApproxSnapshot[!] /path/to/new/colorscheme\n<       For example: >\n    :CSApproxSnapshot ~/.vim/colors/foobar.vim\n<\nNOTE: The generated colorscheme will only work in 88- and 256-color terminals,\n      and in GVim.  It will not work at all in a terminal with 16 or fewer\n      colors.  There's just no reliable way to approximate down from\n      16,777,216 colors to 16 colors, especially without there being any\n      standard for what those 16 colors look like other than 'orange-ish',\n      'red-ish', etc.\n\nNOTE: Although |:CSApproxSnapshot| can be used in both GVim and terminal Vim,\n      the resulting colors might be slightly off when run from terminal Vim.\n      I can find no way around this; Vim internally sets different colors when\n      running in a terminal than running in the GUI, and there's no way for\n      terminal Vim to figure out what color would have been used in GVim.\n\n                                                                   *:CSApprox*\nA command is also provided to run the approximation manually.  This might be\nuseful if some colors were set outside of a colorscheme file, for instance.\nBy default, it will not change any colors unless no highlight group is set to\na color above 15, which is CSApprox's normal behavior.  This probably isn't\nuseful in most use cases, though.  On the other hand, if a ! is provided,\nCSApprox will skip that test and update the cterm value for every highlight\ngroup from the corresponding gui color.  Syntax:\n>\n    :CSApprox[!]\n<\n\n==============================================================================\n2. Requirements                                        *csapprox-requirements*\n\nFor CSApprox to work, there are 2 major requirements that must be met.\n\na) GUI support (or vim >= 7.3)          *csapprox-gui-support* *csapprox-+gui*\n\nNOTE This section only applies to vim versions before 7.3.000 - a modern vim\ndoes not need GUI support in order for CSApprox to function.\n\nIf CSApprox is being used to adjust a scheme's colors transparently, then the\nterminal \"vim\" binary that is being run must be built with GUI support (see\n|csapprox-limitations| for an explanation).  If |:CSApproxSnapshot| is being\nused to create a terminal colorscheme for high color terminals, then the\n\"vim\" binary being used to create the scheme must be built with +gui, but the\nscheme can be used in terminal \"vim\" binaries that weren't built with +gui.\n\nNOTE that creating snapshots with GVim will work better than making them with\nVim, and (obviously) all \"gvim\" binaries are built with +gui.\n\nUnfortunately, several Linux distributions only include GUI support in their\n\"gvim\" binary, and not in their \"vim\" binary.  You can check if GUI support is\navailable with the following command:\n    :echo has('gui')\n\nIf that prints 0, the first thing to try would be searching for a larger vim\npackage provided by your distribution, like \"vim-enhanced\" on RedHat/CentOS\nor \"vim-gtk\" or \"vim-gnome\" on Debian/Ubuntu.\n\nIf you are unable to obtain a \"vim\" binary that includes GUI support, but\nhave a \"gvim\" binary available, you can probably launch Vim with GUI support\nanyway by calling gvim with the |-v| flag in the shell: >\n    gvim -v\n\nIf the above works, you can remove the need to call \"gvim -v\" instead of \"vim\"\nall the time by creating a symbolic link from your \"gvim\" binary to \"vim\"\nsomewhere in your $PATH, for example:\n    sudo ln -s $(which gvim) $(which vim)\n\nIf launching as \"gvim -v\" doesn\"t work, and no package with GUI support is\navailable, you will need to compile Vim yourself and ensure that GUI support\nis included to use CSApprox in its transparent mode, or create a snapshotted\nscheme from GVim to use its snapshot mode.  If this is inconvenient for you,\nmake sure that the Vim maintainer for your distribution knows it; they made a\nconscious decision to build \"vim\" without +gui and \"gvim\" without terminal\nsupport.\n\nb) Properly configured terminal                            *csapprox-terminal*\n\nAs said above, many modern terminals support 88 or 256 colors, but most of\nthese default to setting $TERM to something generic (usually \"xterm\").  Since\nVim uses the value of the \"colors\" attribute for the current $TERM in terminfo\nto figure out the number of colors used internally as 't_Co', this plugin will\neither need for 't_Co' to be set to 88 or 256 in |vimrc|, or for $TERM to be\nset to something that implies high color support.  Possible choices include\n\"xterm-256color\" for 256 color support and \"rxvt-unicode\" for 88 color\nsupport.\n                                                              *csapprox-palettes*\nAlso, there are at least three different 256-color palettes in use.  Nearly\nall terminals use an xterm-compatible palette, so most users need not concern\nthemselves with this, with only two exceptions:  Eterm uses a slightly\ndifferent palette, and older Konsole (pre KDE 2.2.0) used a third palette.\nCSApprox has no reliable way to tell which palette your terminal uses, so it\nmakes some educated guesses:\n\n i)   If vim thinks that there are 88 colors available, CSApprox will use the\n      xterm/urxvt-compatible 88 color palette (I don't know of any other\n      88 color palette in use anywhere).\n\n ii)  If $TERM starts with \"Eterm\", CSApprox will approximate based on the\n      Eterm palette.\n\n iii) If $TERM starts with \"konsole\", CSApprox will use the legacy Konsole\n      palette if either \"kde4-config --kde-version\" or \"kde-config --version\"\n      reports that the KDE version on the system is less than 4.2.0.\n      Otherwise, it will use the xterm palette.\n\n iv)  If $TERM starts with \"xterm\" or \"screen\", then CSApprox looks for the\n      vim variables \"g:CSApprox_eterm\" and \"g:CSApprox_konsole\".\n      If g:CSApprox_eterm is true, CSApprox uses the Eterm palette.\n      If g:CSApprox_konsole is true, CSApprox uses the old konsole palette.\n      Otherwise, CSApprox uses the xterm palette.\n\n v)   For all other $TERM values, CSApprox uses the xterm palette.\n\n                                                   *csapprox-terminal-example*\nTo turn on high color support despite an incorrect $TERM, you can override\nt_Co (the vim name for the terminfo setting defining how many colors are\navailable) in your .vimrc, and set either CSApprox_konsole or CSApprox_eterm\nif appropriate.  You could put something like this into your |vimrc|:\n>\n    if (&term == 'xterm' || &term =~? '^screen') && hostname() == 'my-machine'\n        \" On my machine, I use an old Konsole with 256 color support\n        set t_Co=256\n        let g:CSApprox_konsole = 1\n    endif\n\nGnome Terminal, as of the time that I am writing this, doesn't support having\nthe terminal emulator set $TERM to something adequately descriptive.  In cases\nlike this, something like the following would be appropriate:\n>\n    if &term =~ '^\\(xterm\\|screen\\)$' && $COLORTERM == 'gnome-terminal'\n      set t_Co=256\n    endif\n\n==============================================================================\n3. Configuration                                          *csapprox-configure*\n\nThere are several global variables that can be set to configure the behavior\nof CSApprox.  They are listed roughly based on the likelihood that the end\nuser might want to know about them.\n\ng:CSApprox_loaded                                          *g:CSApprox_loaded*\n    If set in your |vimrc|, CSApprox is not loaded.  Has no effect on\n    snapshotted schemes.\n\ng:CSApprox_verbose_level                            *g:CSApprox_verbose_level*\n    When CSApprox is run, the 'verbose' option will be temporarily raised to\n    the value held in this variable unless it is already greater.  The default\n    value is 1, which allows CSApprox to default to warning whenever something\n    is wrong, even if it is recoverable, but allows the user to quiet us if he\n    wants by changing this variable to 0.  The most important messages will be\n    shown at verbosity level 1; some less important ones will be shown at\n    higher verbosity levels.  Has no effect on snapshotted schemes.\n\ng:CSApprox_fake_reverse                              *g:CSApprox_fake_reverse*\n    In gvim, setting a highlight group like \"Visual\" (the color of your visual\n    mode selection) to do reverse video results in it reversing the colors of\n    each character cell under it.  Some terminals don't support this and will\n    instead always use the default background color on the default foreground\n    color when asked for reverse video.  If this variable is set to a non-zero\n    number, CSApprox will change any request for reverse video to the \"Normal\"\n    group's bg color on the \"Normal\" group's fg color, instead of asking the\n    terminal to do reverse video.  This provides a middle ground for terminals\n    that don't properly support reverse video - it's worse than having the\n    terminal properly reverse the colors of each character cell, but it's\n    better than the broken behavior of some terminal emulators.  This was the\n    default behavior before CSApprox 4.0.\n\ng:CSApprox_eterm                                            *g:CSApprox_eterm*\n    If set to a non-zero number, CSApprox will use the Eterm palette when\n    'term' is set to \"xterm\" or begins with \"screen\".  Otherwise, the xterm\n    palette would be used.  This also affects snapshotted schemes.\n\ng:CSApprox_konsole                                        *g:CSApprox_konsole*\n    If set to a non-zero number, CSApprox will use the old Konsole palette\n    when 'term' is set to \"xterm\" or begins with \"screen\".  Otherwise, the\n    xterm palette would be used.  This also affects snapshotted schemes.\n\ng:CSApprox_attr_map                                      *g:CSApprox_attr_map*\n    Since some attributes (like 'guisp') can't be used in a terminal, and\n    others (like 'italic') are often very ugly in terminals, a generic way to\n    map between a requested attribute and another attribute is included.  This\n    variable should be set to a Dictionary, where the keys are strings\n    representing the attributes the author wanted set, and the values are the\n    strings that the user wants set instead.  If a value is '', it means the\n    attribute should just be ignored.  The default is to replace 'italic' with\n    'underline', and to use 'fg' instead of 'sp': >\n        let g:CSApprox_attr_map = { 'italic' : 'underline', 'sp' : 'fg' }\n<\n    Your author prefers disabling bold and italic entirely, so uses this: >\n        let g:CSApprox_attr_map = { 'bold' : '', 'italic' : '', 'sp' : 'fg' }\n<\n\n    Note: This transformation is considered at the time a snapshotted scheme\n          is created, rather than when it is used.\n\n    Note: You can only map an attribute representing a color to another\n          attribute representing a color; likewise with boolean attributes.\n          After all, sp -> bold and italic -> fg would be nonsensical.\n\n                          *g:CSApprox_hook_pre* *g:CSApprox_hook_{scheme}_pre*\n                        *g:CSApprox_hook_post* *g:CSApprox_hook_{scheme}_post*\ng:CSApprox_hook_pre\ng:CSApprox_hook_post\ng:CSApprox_hook_{scheme}_pre\ng:CSApprox_hook_{scheme}_post                                 *csapprox-hooks*\n    These variables provide a method for adjusting tweaking the approximation\n    algorithm, either for all schemes, or on a per scheme basis.  For\n    snapshotted schemes, these will only take effect when the snapshotted\n    scheme is created, rather than when it is used.  Each of these variables\n    may be set to either a String containing a command to be :execute'd, or a\n    List of such Strings.  The _pre hooks are executed before any\n    approximations have been done.  In order to affect the approximation at\n    this stage, you would need to change the gui colors for a group; the cterm\n    colors will then be approximated from those gui colors.  Example:\n>\n      let g:CSApprox_hook_pre = 'hi Comment guibg=#ffddff'\n<\n    The advantage to tweaking the colors at this stage is that CSApprox will\n    handle approximating the given gui colors to the proper cterm colors,\n    regardless of the number of colors the terminal supports.  The\n    disadvantage is that certain things aren't possible, including clearing\n    the background or foreground color for a group, selecting a precise cterm\n    color to be used, and overriding the mappings made by g:CSApprox_attr_map.\n    Another notable disadvantage is that overriding things at this level will\n    actually affect the gui colors, in case the :gui is used to start gvim\n    from the running vim instance.\n\n    To overcome these disadvantages, the _post hooks are provided.  These\n    hooks will be executed only after all approximations have been completed.\n    At this stage, in order to have changes appear the cterm* colors must be\n    modified.  For example:\n                                                       *csapprox-transparency*\n>\n      let g:CSApprox_hook_post = ['hi Normal  ctermbg=NONE ctermfg=NONE',\n                                \\ 'hi NonText ctermbg=NONE ctermfg=NONE' ]\n<\n    Setting g:CSApprox_hook_post as shown above will clear the background of\n    the Normal and NonText groups, forcing the terminal's default background\n    color to be used instead, including any pseudotransparency done by that\n    terminal emulator.  As noted, though, the _post functions do not allow\n    CSApprox to approximate the colors.  This may be desired, but if this is\n    an inconvenience the function named by g:CSApprox_approximator_function\n    can still be called manually.  For example:\n>\n      let g:CSApprox_hook_post = 'exe \"hi Comment ctermbg=\"'\n                      \\ . '. g:CSApprox_approximator_function(0xA0,0x50,0x35)'\n<\n    The _{scheme}_ versions are exactly like their counterparts, except that\n    they will only be executed if the value of g:colors_name matches the\n    scheme name embedded in the variable name.  They will be executed after\n    the corresponding hook without _{scheme}_, which provides a way to\n    override a less specific hook with a more specific one.  For example, to\n    clear the Normal and NonText groups, but only for the colorscheme\n    \"desert\", one could do the following:\n>\n    let g:CSApprox_hook_desert_post = ['hi Normal ctermbg=NONE ctermfg=NONE',\n                                    \\ 'hi NonText ctermbg=NONE ctermfg=NONE' ]\n<\n    One final example: If you want CSApprox to be active for nearly all\n    colorschemes, but want one or two particular schemes to be ignored, you\n    can take advantage of the CSApprox logic that skips over any color scheme\n    that is already high color by setting a color to a number above 255.  Note\n    that most colors greater than 15 will work, but some will not - 256 should\n    always work.  For instance, you can prevent CSApprox from modifying the\n    colors of the zellner colorscheme like this:\n>\n    let g:CSApprox_hook_zellner_pre = 'hi _FakeGroup ctermbg=256'\n<\n    NOTE: Any characters that would stop the string stored in g:colors_name\n          from being a valid variable name will be removed before the\n          _{scheme}_ hook is searched.  Basically, this means that first all\n          characters that are neither alphanumeric nor underscore will be\n          removed, then any leading digits will be removed.  So, for a\n          colorscheme named \"123 foo_bar-baz456.vim\", the hook searched for\n          will be, eg, g:CSApprox_hook_foo_barbaz456_post\n\ng:CSApprox_use_showrgb                                *g:CSApprox_use_showrgb*\n    By default, CSApprox will use a built in mapping of color names to values.\n    This optimization greatly helps speed, but means that colors addressed by\n    name might not match up perfectly between gvim (which uses the system's\n    real rgb database) and CSApprox (which uses the builtin database).  To\n    force CSApprox to try the systemwide database first, and only fall back on\n    the builtin database if it isn't available, set this variable non-zero.\n\ng:CSApprox_approximator_function            *g:CSApprox_approximator_function*\n    If the default approximation function doesn't work well enough, the user\n    (or another author wishing to extend this plugin) can write another\n    approximation function.  This function should take three numbers,\n    representing r, g, and b in decimal, and return the index on the color\n    cube that best matches those colors.  Assigning a |Funcref| to this\n    variable will override the default approximator with the one the Funcref\n    references.  This option will take effect at the time a snapshotted scheme\n    is created, rather than when it's used.\n\ng:CSApprox_redirfallback                            *g:CSApprox_redirfallback*\n    Until Vim 7.2.052, there was a bug in the Vim function synIDattr() that\n    made it impossible to determine syntax information about the |guisp|\n    attribute.  CSApprox includes a workaround for this problem, as well as a\n    test that ought to disable this workaround if synIDattr() works properly.\n    If this test should happen to give improper results somehow, the user can\n    force the behavior with this variable.  When set to 1, the workaround will\n    always be used, and when set to 0, synIDattr() is blindly used.  Needless\n    to say, if this automatic detection should ever fail, the author would\n    like to be notified!  This option will take effect at the time a\n    snapshotted scheme is created, rather than when it's used.\n\n==============================================================================\n4. Rationale/Design                                          *csapprox-design*\n\nThere is a wealth of colorschemes available for Vim.  Unfortunately, since\ntraditional terminal emulators have only supported 2, 8 or 16 colors,\ncolorscheme authors have tended to avoid writing colorschemes for terminal\nVim, sticking instead to GVim.  Even now that nearly every popular terminal\nsupports either 88 or 256 colors, few colorschemes are written to support\nthem.  This may be because the terminal color codes are just numbers from 0 to\n87 or 255 with no semantic meaning, or because the same number doesn't yield\nthe same color in all terminals, or simply because the colorscheme author\ndoesn't use the terminal and doesn't want to take the time to support\nterminals.\n\nWhatever the reason, this leaves users of many modern terminal emulators in\nthe awkward position of having a terminal emulator that supports many colors,\nbut having very few colorschemes that were written to utilize those colors.\n\nThis is where CSApprox comes in.  It attempts to fill this void allowing GVim\ncolorschemes to be used in terminal Vim.  CSApprox has two distinct modes of\noperation.  In the first mode, it attempts to make GVim colorschemes\ntransparently backwards compatible with terminal Vim in a high color terminal.\nBasically, whenever a colorscheme is run it should set some colors for the\nGUI, and this script will then run and attempt to figure out the closest color\navailable in the terminal's color palette to the color the scheme author asked\nfor.  Unfortunately, this does not work well all the time, and it has some\nlimitations (see |csapprox-limitations|).  Most of the time, however, this\ngives a very close approximation to the GVim colors without requiring any\nchanges to the colorscheme, or any user interaction.  It only requires that\nthe plugin be installed on the machine where Vim is being run, and that the\nuser's environment meets the needs specified at |csapprox-requirements|.  In\nthe event that this doesn't work, a second option - using |:CSApproxSnapshot|\nto create a new, 88-/256-color capable colorscheme - is available.\n\nIdeally, the aim is for CSApprox to be completely transparent to the user.\nThis is why the approach I take is entirely different from the GuiColorScheme\nscript, which will break on any but the simplest colorschemes.  Unfortunately,\ngiven the difficulty of determining exactly which terminal emulator the user\nis running, and what features it supports, and which color palette it's using,\nperfect transparency is difficult.  So, to this end, I've attempted to default\nto settings that make it unlikely that this script ever makes things worse\n(this is why I chose not to override t_Co to 256 myself), and I've attempted\nto make it easy to override my choice of defaults when necessary (through\ng:CSApprox_approximator_function, g:CSApprox_konsole, g:CSApprox_eterm,\ng:CSApprox_attr_map, etc).\n\nIn the event that the transparent solution is undesirable, or that the user's\nenvironment can't be configured to allow it (no GVim and no Vim with +gui, for\ninstance), |:CSApproxSnapshot| should provide a workable alternative - less\ncool, and less flexible, but it will work in more environments, and the\nsnapshotted colorscheme will even work in Vim 6.\n\nIf any of my design choices seem to be causing extra work with no real\nadvantages, though, I'd like to hear about it.  Feel free to email me with any\nimprovements or complaints.\n\n==============================================================================\n5. Known Bugs and Limitations                           *csapprox-limitations*\n\nGUI support or vim >= 7.3 is required for transparently adapting schemes.\n\n  There is nothing I can do about this given my chosen design.  CSApprox works\n  by being notified every time a colorscheme sets some GUI colors, then\n  approximating those colors to similar terminal colors.  Unfortunately, when\n  Vim < 7.3 is not built with GUI support, it doesn't bother to store the GUI\n  colors, so querying for them fails.  This leaves me completely unable to\n  tell what the colorscheme was trying to do.  See |csapprox-+gui| for some\n  potential workarounds if your distribution doesn't provide a Vim with +gui\n  and you can't upgrade to a modern vim.\n\nUser intervention is sometimes required for information about the terminal.\n\n  This is really an insurmountable problem.  Unfortunately, most terminal\n  emulators default to setting $TERM to 'xterm', even when they're not really\n  compatible with an xterm.  $TERM is really the only reliable way to\n  find anything at all out about the terminal you're running in, so there's no\n  way to know if the terminal supports 88 or 256 colors without either the\n  terminal telling me (using $TERM) or the user telling me (using 't_Co').\n  Similarly, unless $TERM is set to something that implies a certain color\n  palette ought to be used, there's no way for me to know, so I'm forced to\n  default to the most common, xterm's palette, and allow the user to override\n  my choice with |g:CSApprox_konsole| or |g:CSApprox_eterm|.  An example of\n  configuring Vim to work around a terminal where $TERM is set to something\n  generic without configuring the terminal properly is shown at\n  |csapprox-terminal-example|.\n\nSome colorschemes could fail to be converted if they try to be too smart.\n\n  A colorscheme could decide to only set colors for the mode Vim is running\n  in.  If a scheme only sets GUI colors when the GUI is running, instead of\n  using the usual approach of setting all colors and letting Vim choose which\n  to use, my approach falls apart.  My method for figuring out what the scheme\n  author wants the scheme to look like absolutely depends upon him setting the\n  GUI colors in all modes.  Fortunately, the few colorschemes that do this\n  seem to be, by and large, intended for 256 color terminals already, meaning\n  that skipping them is the proper behavior.  Note that this will only affect\n  transparently adapted schemes and snapshots made from terminal Vim;\n  snapshots made from GVim are immune to this problem.\n\nTransparently adapting schemes is slow.\n\n  For me, it takes Vim's startup time from 0.15 seconds to 0.35 seconds.  This\n  is probably still acceptable, but it is definitely worth trying to cut down\n  on this time in future versions.  Snapshotted schemes are faster to use,\n  since all of the hard evaluations are made when they're made instead of when\n  they're used.\n\n  NOTE: As of CSApprox 3.50, the overhead is down to about 0.10 seconds on my\n        test machine.\n\nIt isn't possible to approximate only a particular set of groups.\n\n  Unfortunately, the :CSApprox command will always update all groups, even if\n  only a small set of groups has changed.  A future improvement would be to\n  provide a function called, say, CSApprox(), that takes an optional list of\n  highlight groups (default: all) and only does approximation for those\n  groups.\n\n==============================================================================\n6. Appendix - Terminals and Palettes                  *csapprox-terminal-list*\n\nWhat follows is a list of terminals known to have and known not to have high\ncolor support.  This list is certainly incomplete; feel free to contact me\nwith more to add to either list.\n\n                                                     *csapprox-terminals-good*\n------------------------------- Good Terminals -------------------------------\n\nThe most recent versions of each of these terminals can be compiled with\neither 88 or 256 color support.\n\n                                                              *csapprox-xterm*\nxterm:\n    256 color palette\n    Colors composed of: [ 0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF ]\n    Greys composed of:  [ 0x08, 0x12, 0x1C, 0x26, 0x30, 0x3A, 0x44, 0x4E,\n                          0x58, 0x62, 0x6C, 0x76, 0x80, 0x8A, 0x94, 0x9E,\n                          0xA8, 0xB2, 0xBC, 0xC6, 0xD0, 0xDA, 0xE4, 0xEE ]\n\n                                                              *csapprox-urxvt*\nrxvt-unicode (urxvt):\n    88 colors by default (but a patch is available to use xterm's palette)\n    Colors composed of: [ 0x00, 0x8B, 0xCD, 0xFF ]\n    Greys composed of:  [ 0x2E, 0x5C, 0x73, 0x8B, 0xA2, 0xB9, 0xD0, 0xE7 ]\n\n                                               *csapprox-pterm* *csapprox-putty*\nPuTTY (pterm; putty.exe):\n    256 colors; same palette as xterm\n\n                                                              *csapprox-mrxvt*\nMrxvt (mrxvt):\n    256 colors; same palette as xterm\n\n                                                     *csapprox-gnome-terminal*\nGNOME Terminal (gnome-terminal):\n    256 colors; same palette as xterm\n\n                                                            *csapprox-roxterm*\nROXTerm (roxterm):\n    256 colors; same palette as xterm\n\n                                                     *csapprox-xfce4-terminal*\nTerminal (xfce4-terminal):\n    256 colors; same palette as xterm\n\n                                                          *csapprox-iterm.app*\niTerm (iTerm.app):\n    256 colors; same palette as xterm\n                                                            *csapprox-konsole*\nKonsole (konsole):\n    256 color palette\n    Colors used to be composed of: [ 0x00, 0x33, 0x66, 0x99, 0xCC, 0xFF ]\n    As of KDE 2.2.0, colors match the xterm palette\n    Always used the same greyscales as xterm\n\n                                                              *csapprox-eterm*\neterm (Eterm):\n    256 color palette\n    Colors composed of: [ 0x00, 0x2A, 0x55, 0x7F, 0xAA, 0xD4 ]\n    Same greyscales as xterm\n    You should set the g:CSApprox_eterm variable unless $TERM begins with\n    'eterm', case insensitive\n\n                                                             *csapprox-screen*\nGNU Screen (screen):\n    256 color support.  Internally, uses the xterm palette, but this is only\n    relevant when running screen inside a terminal with fewer than 256 colors,\n    in which case screen will attempt to map between its own 256 color cube\n    and the colors supported by the real terminal to the best of its ability,\n    in much the same way as CSApprox maps between GUI and terminal colors.\n\n                                                      *csapprox-terminals-bad*\n-------------------------------- Bad Terminals -------------------------------\nThis is a list of terminals known _not_ to have high color support.  If any of\nthese terminals have high color support added at some point in the future,\nplease tell me and I'll update this information.\n\n                                                       *csapprox-terminal.app*\nTerminal.app (as of OS X 10.5.2)\n\n                                                              *csapprox-aterm*\naterm (as of version 1.00.01)\n\n                                                             *csapprox-xiterm*\nxiterm (as of version 0.5)\n\n                                                              *csapprox-wterm*\nwterm (as of version 6.2.9)\n\n                                                             *csapprox-mlterm*\nmlterm (as of version 2.9.4)\n\n                                                              *csapprox-kterm*\nkterm (as of version 6.2.0)\n\n==============================================================================\n7. Changelog                                              *csapprox-changelog*\n\n 4.00   14 Sep 2012   Fix CSApprox to not fail in vim 7.3 if not +gui, now\n                      that vim behaves properly even without +gui\n\n                      Provide the |:CSApprox| command to re-run CSApprox's\n                      approximation algorithm even if the colorscheme hasn't\n                      changed - useful for when the user has tweaked some\n                      colors manually.\n\n                      Better handling for the |inverse| (aka reverse) attribute\n                      for terminals that actually support it - and add the \n                      g:CSApprox_fake_reverse config variable to allow\n                      switching back to the old behavior for terminals that\n                      don't support real reverse video.\n\n                      Fix an issue where CSApprox would unconditionally leave\n                      'background' set to \"light\" - now it will leave\n                      'background' unchanged when it runs.\n\n                      Change the handling for Konsole to use the xterm palette\n                      by for KDE versions >= 2.2.0 - Konsole itself was\n                      changed to drop its old, slightly incompatible palette\n                      in KDE 2.2.0\n\n                      Fix a minor issue where running vim in recovery mode\n                      with |-r| would result in a complaint from CSApprox that\n                      the terminal didn't have enough colors even when it did.\n\n                      Fix an issue where, even if CSApprox had been disabled\n                      by setting |g:CSApprox_loaded|, a CSApprox error message\n                      could still be displayed.\n\n 3.50   01 Apr 2009   Fix a major regression that prevented the Eterm and\n                      Konsole colors from being correctly snapshotted\n\n                      Fix a related bug causing incorrect terminal colors\n                      after calling |:CSApproxSnapshot|\n\n                      Fix a bug causing black to be used instead of dark grey\n\n                      Have snapshots calculate g:colors_name programmatically\n\n                      Introduce many tweaks for better speed\n\n                      Clarify some things at :help csapprox-terminal-example\n\n                      Default to using our own list of rgb.txt colors rather\n                      than searching, for performance.  Add a new variable,\n                      g:CSApprox_use_showrgb, which forces us to try finding\n                      the colors using the \"showrgb\" program instead, and fall\n                      back on our own list if it isn't available\n\n                      Remove g:CSApprox_extra_rgb_txt_dirs - not needed in\n                      light of the above change\n\n 3.05   31 Jan 2009   Fix a harmless \"Undefined variable\" error in\n                      |:CSApproxSnapshot|\n\n                      Fix a behavioral bug when dumping out colors defined\n                      external to the scheme.\n\n 3.00   21 Jan 2009   Update the docs for better info on |:CSApproxSnapshot|\n\n                      Allow snapshotted schemes to work on Vim 6, and work\n                      properly in Konsole and Eterm (thanks David Majnemer!)\n\n                      Fix a bug causing a syntax error when using GVim while\n                      CSApprox was loaded.  (thanks again, David Majnemer!)\n\n 2.00   14 Dec 2008   Add a hooks system, allowing users to specify a command\n                      to run, either before or after the approximation\n                      algorithm is run, for all schemes or one specific one.\n\n                      Also rewrite |:CSApproxSnapshot| to be more maintainable\n                      and less of a hack, and fix several bugs that it\n                      contained.\n\n 1.50   19 Nov 2008   Add CSApproxSnapshot command, as an alternative solution\n                      when the user has gvim or a vim with gui support, but\n                      sometimes needs to use a vim without gui support.\n\n 1.10   28 Oct 2008   Enable running on systems with no rgb.txt (Penn Su)\n                      Begin distributing a copy of rgb.txt with CSApprox\n\n 1.00   04 Oct 2008   First public release\n\n 0.90   14 Sep 2008   Initial beta release\n\n==============================================================================\n8. Contact Info                                              *csapprox-author*\n\nYour author, a Vim nerd with some free time, was sick of seeing terminals\nalways get the short end of the stick.  He'd like to be notified of any\nproblems you find - after all, he took the time to write all this lovely\ndocumentation, and this plugin, which took more time than you could possibly\nimagine to get working transparently for every colorscheme he could get his\nhands on.  You can contact him with any problems or praises at\ngodlygeek@gmail.com\n\n==============================================================================\nvim:tw=78:fo=tcq2:isk=!-~,^*,^\\|,^\\\":ts=8:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/CSApprox/plugin/CSApprox.vim",
    "content": "\" CSApprox:    Make gvim-only colorschemes Just Work terminal vim\n\" Maintainer:  Matthew Wozniski (godlygeek@gmail.com)\n\" Date:        Fri, 14 Sep 2012 01:12:13 -0400\n\" Version:     4.00\n\" History:     :help csapprox-changelog\n\"\n\" Long Description:\n\" It's hard to find colorschemes for terminal Vim.  Most colorschemes are\n\" written to only support GVim, and don't work at all in terminal Vim.\n\"\n\" This plugin makes GVim-only colorschemes Just Work in terminal Vim, as long\n\" as the terminal supports 88 or 256 colors - and most do these days.  This\n\" usually requires no user interaction (but see below for what to do if things\n\" don't Just Work).  After getting this plugin happily installed, any time you\n\" use :colorscheme it will do its magic and make the colorscheme Just Work.\n\"\n\" Whenever you change colorschemes using the :colorscheme command this script\n\" will be executed.  It will take the colors that the scheme specified for use\n\" in the GUI and use an approximation algorithm to try to gracefully degrade\n\" them to the closest color available in your terminal.  If you are running in\n\" a GUI or if your terminal doesn't support 88 or 256 colors, no changes are\n\" made.  Also, no changes will be made if the colorscheme seems to have been\n\" high color already.\n\"\n\" License:\n\" Copyright (c) 2012, Matthew J. Wozniski\n\" All rights reserved.\n\"\n\" Redistribution and use in source and binary forms, with or without\n\" modification, are permitted provided that the following conditions are met:\n\"     * Redistributions of source code must retain the above copyright\n\"       notice, this list of conditions and the following disclaimer.\n\"     * Redistributions in binary form must reproduce the above copyright\n\"       notice, this list of conditions and the following disclaimer in the\n\"       documentation and/or other materials provided with the distribution.\n\"     * The names of the contributors may not be used to endorse or promote\n\"       products derived from this software without specific prior written\n\"       permission.\n\"\n\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY\n\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n\" DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY\n\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n\" SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\" {>1} Basic plugin setup\n\n\" {>2} Check preconditions\n\" Quit if the user doesn't want or need us or is missing the gui feature.  We\n\" need +gui to be able to check the gui color settings; vim doesn't bother to\n\" store them if it is not built with +gui.\nif exists('g:CSApprox_loaded')\n  finish\nelseif !has('gui') && v:version < 703\n  \" Vim versions less than < 7.3.0 need +gui.\n  \" Warn unless the user set g:CSApprox_verbose_level to zero.\n  if get(g:, 'CSApprox_verbose_level', 1)\n    echomsg \"CSApprox needs gui support - not loading.\"\n    echomsg \"  See :help |csapprox-+gui| for possible workarounds.\"\n  endif\n\n  finish\nendif\n\n\" {1} Mark us as loaded, and disable all compatibility options for now.\nlet g:CSApprox_loaded = 1\n\nlet s:savecpo = &cpo\nset cpo&vim\n\n\" {>1} Collect info for the set highlights\n\n\" {>2} Determine if synIDattr is usable\n\" synIDattr() couldn't support 'guisp' until 7.2.052.  This function returns\n\" true if :redir is needed to find the 'guisp' attribute, false if synIDattr()\n\" is functional.  This test can be overridden by setting the global variable\n\" g:CSApprox_redirfallback to 1 (to force use of :redir) or to 0 (to force use\n\" of synIDattr()).\nfunction! s:NeedRedirFallback()\n  if !exists(\"g:CSApprox_redirfallback\")\n    let g:CSApprox_redirfallback = (v:version == 702 && !has('patch52'))\n                                 \\  || v:version < 702\n  endif\n  return g:CSApprox_redirfallback\nendfunction\n\n\" {>2} Collect and store the highlights\n\" Get a dictionary containing information for every highlight group not merely\n\" linked to another group.  Return value is a dictionary, with highlight group\n\" numbers for keys and values that are dictionaries with four keys each,\n\" 'name', 'term', 'cterm', and 'gui'.  'name' holds the group name, and each\n\" of the others holds highlight information for that particular mode.\nfunction! s:Highlights(modes)\n  let rv = {}\n\n  let i = 0\n  while 1\n    let i += 1\n\n    \" Only interested in groups that exist and aren't linked\n    if synIDtrans(i) == 0\n      break\n    endif\n\n    \" Handle vim bug allowing groups with name == \"\" to be created\n    if synIDtrans(i) != i || len(synIDattr(i, \"name\")) == 0\n      continue\n    endif\n\n    let rv[i] = {}\n    let rv[i].name = synIDattr(i, \"name\")\n\n    for where in a:modes\n      let rv[i][where]  = {}\n      for attr in s:PossibleAttributes()\n        let rv[i][where][attr] = synIDattr(i, attr, where)\n      endfor\n\n      for attr in [ \"fg\", \"bg\" ]\n        let rv[i][where][attr] = synIDattr(i, attr.'#', where)\n      endfor\n\n      if where == \"gui\"\n        let rv[i][where][\"sp\"] = s:SynGuiSp(i, rv[i].name)\n      else\n        let rv[i][where][\"sp\"] = -1\n      endif\n\n      for attr in [ \"fg\", \"bg\", \"sp\" ]\n        if rv[i][where][attr] == -1\n          let rv[i][where][attr] = ''\n        endif\n      endfor\n    endfor\n  endwhile\n\n  return rv\nendfunction\n\n\" {>2} Retrieve guisp\n\n\" Get guisp using whichever method is specified by _redir_fallback\nfunction! s:SynGuiSp(idx, name)\n  if !s:NeedRedirFallback()\n    return s:SynGuiSpAttr(a:idx)\n  else\n    return s:SynGuiSpRedir(a:name)\n  endif\nendfunction\n\n\" {>3} Implementation for retrieving guisp with redir hack\nfunction! s:SynGuiSpRedir(name)\n  redir => temp\n  exe 'sil hi ' . a:name\n  redir END\n  let temp = matchstr(temp, 'guisp=\\zs.*')\n  if len(temp) == 0 || temp[0] =~ '\\s'\n    let temp = \"\"\n  else\n    \" Make sure we can handle guisp='dark red'\n    let temp = substitute(temp, '[\\x00].*', '', '')\n    let temp = substitute(temp, '\\s*\\(c\\=term\\|gui\\).*', '', '')\n    let temp = substitute(temp, '\\s*$', '', '')\n  endif\n  return temp\nendfunction\n\n\" {>3} Implementation for retrieving guisp with synIDattr()\nfunction! s:SynGuiSpAttr(idx)\n  return synIDattr(a:idx, 'sp#', 'gui')\nendfunction\n\n\" {>1} Handle color names\n\n\" Place to store rgb.txt name to color mappings - lazy loaded if needed\nlet s:rgb = {}\n\n\" {>2} Builtin gui color names\n\" gui_x11.c and gui_gtk_x11.c have some default colors names that are searched\n\" if the x server doesn't know about a color.  If 'showrgb' is available,\n\" we'll default to using these color names and values, and overwrite them with\n\" other values if 'showrgb' tells us about those colors.\nlet s:rgb_defaults = { \"lightred\"     : \"#FFBBBB\",\n                     \\ \"lightgreen\"   : \"#88FF88\",\n                     \\ \"lightmagenta\" : \"#FFBBFF\",\n                     \\ \"darkcyan\"     : \"#008888\",\n                     \\ \"darkblue\"     : \"#0000BB\",\n                     \\ \"darkred\"      : \"#BB0000\",\n                     \\ \"darkmagenta\"  : \"#BB00BB\",\n                     \\ \"darkgrey\"     : \"#BBBBBB\",\n                     \\ \"darkyellow\"   : \"#BBBB00\",\n                     \\ \"gray10\"       : \"#1A1A1A\",\n                     \\ \"grey10\"       : \"#1A1A1A\",\n                     \\ \"gray20\"       : \"#333333\",\n                     \\ \"grey20\"       : \"#333333\",\n                     \\ \"gray30\"       : \"#4D4D4D\",\n                     \\ \"grey30\"       : \"#4D4D4D\",\n                     \\ \"gray40\"       : \"#666666\",\n                     \\ \"grey40\"       : \"#666666\",\n                     \\ \"gray50\"       : \"#7F7F7F\",\n                     \\ \"grey50\"       : \"#7F7F7F\",\n                     \\ \"gray60\"       : \"#999999\",\n                     \\ \"grey60\"       : \"#999999\",\n                     \\ \"gray70\"       : \"#B3B3B3\",\n                     \\ \"grey70\"       : \"#B3B3B3\",\n                     \\ \"gray80\"       : \"#CCCCCC\",\n                     \\ \"grey80\"       : \"#CCCCCC\",\n                     \\ \"gray90\"       : \"#E5E5E5\",\n                     \\ \"grey90\"       : \"#E5E5E5\" }\n\n\" {>2} Colors that vim will use by name in one of the default schemes, either\n\" for bg=light or for bg=dark.  This lets us avoid loading the entire rgb.txt\n\" database when the scheme itself doesn't ask for colors by name.\nlet s:rgb_presets = { \"black\"         : \"#000000\",\n                     \\ \"blue\"         : \"#0000ff\",\n                     \\ \"brown\"        : \"#a52a2a\",\n                     \\ \"cyan\"         : \"#00ffff\",\n                     \\ \"darkblue\"     : \"#00008b\",\n                     \\ \"darkcyan\"     : \"#008b8b\",\n                     \\ \"darkgrey\"     : \"#a9a9a9\",\n                     \\ \"darkmagenta\"  : \"#8b008b\",\n                     \\ \"green\"        : \"#00ff00\",\n                     \\ \"grey\"         : \"#bebebe\",\n                     \\ \"grey40\"       : \"#666666\",\n                     \\ \"grey90\"       : \"#e5e5e5\",\n                     \\ \"lightblue\"    : \"#add8e6\",\n                     \\ \"lightcyan\"    : \"#e0ffff\",\n                     \\ \"lightgrey\"    : \"#d3d3d3\",\n                     \\ \"lightmagenta\" : \"#ffbbff\",\n                     \\ \"magenta\"      : \"#ff00ff\",\n                     \\ \"red\"          : \"#ff0000\",\n                     \\ \"seagreen\"     : \"#2e8b57\",\n                     \\ \"white\"        : \"#ffffff\",\n                     \\ \"yellow\"       : \"#ffff00\" }\n\n\" {>2} Find available color names\n\" Find the valid named colors.  By default, use our own rgb list, but try to\n\" retrieve the system's list if g:CSApprox_use_showrgb is set to true.  Store\n\" the color names and color values to the dictionary s:rgb - the keys are\n\" color names (in lowercase), the values are strings representing color values\n\" (as '#rrggbb').\nfunction! s:UpdateRgbHash()\n  try\n    if !exists(\"g:CSApprox_use_showrgb\") || !g:CSApprox_use_showrgb\n      throw \"Not using showrgb\"\n    endif\n\n    \" We want to use the 'showrgb' program, if it's around\n    let lines = split(system('showrgb'), '\\n')\n\n    if v:shell_error || !exists('lines') || empty(lines)\n      throw \"'showrgb' didn't give us an rgb.txt\"\n    endif\n\n    let s:rgb = copy(s:rgb_defaults)\n\n    \" fmt is (blanks?)(red)(blanks)(green)(blanks)(blue)(blanks)(name)\n    let parsepat  = '^\\s*\\(\\d\\+\\)\\s\\+\\(\\d\\+\\)\\s\\+\\(\\d\\+\\)\\s\\+\\(.*\\)$'\n\n    for line in lines\n      let v = matchlist(line, parsepat)\n      if len(v) < 0\n        throw \"CSApprox: Bad RGB line: \" . string(line)\n      endif\n      let s:rgb[tolower(v[4])] = printf(\"#%02x%02x%02x\", v[1], v[2], v[3])\n    endfor\n  catch\n    try\n      let s:rgb = csapprox#rgb()\n    catch\n      echohl ErrorMsg\n      echomsg \"Can't call rgb() from autoload/csapprox.vim\"\n      echomsg \"Named colors will not be available!\"\n      echohl None\n    endtry\n  endtry\n\n  return 0\nendfunction\n\n\" {>1} Derive and set cterm attributes\n\n\" {>2} List of all possible attributes\nfunction! s:PossibleAttributes()\n  return [ \"bold\", \"italic\", \"reverse\", \"underline\", \"undercurl\" ]\nendfunction\n\n\" {>2} Attribute overrides\n\" Allow the user to override a specified attribute with another attribute.\n\" For example, the default is to map 'italic' to 'underline' (since many\n\" terminals cannot display italic text, and gvim itself will replace italics\n\" with underlines where italicizing is impossible), and to replace 'sp' with\n\" 'fg' (since terminals can't use one color for the underline and another for\n\" the foreground, we color the entire word).  This default can of course be\n\" overridden by the user, by setting g:CSApprox_attr_map.  This map must be\n\" a dictionary of string keys, representing the same attributes that synIDattr\n\" can look up, to string values, representing the attribute mapped to or an\n\" empty string to disable the given attribute entirely.\nfunction! s:attr_map(attr)\n  let rv = get(g:CSApprox_attr_map, a:attr, a:attr)\n\n  return rv\nendfunction\n\nfunction! s:NormalizeAttrMap(map)\n  let old = copy(a:map)\n  let new = filter(a:map, '0')\n\n  let valid_attrs = [ 'bg', 'fg', 'sp' ] + s:PossibleAttributes()\n\n  let colorattrs = [ 'fg', 'bg', 'sp' ]\n\n  for olhs in keys(old)\n    if olhs ==? 'inverse'\n      let nlhs = 'reverse'\n    endif\n\n    let orhs = old[olhs]\n\n    if orhs ==? 'inverse'\n      let nrhs = 'reverse'\n    endif\n\n    let nlhs = tolower(olhs)\n    let nrhs = tolower(orhs)\n\n    try\n      if index(valid_attrs, nlhs) == -1\n        echomsg \"CSApprox: Bad attr map (removing unrecognized attribute \" . olhs . \")\"\n      elseif nrhs != '' && index(valid_attrs, nrhs) == -1\n        echomsg \"CSApprox: Bad attr map (removing unrecognized attribute \" . orhs . \")\"\n      elseif nrhs != '' && !!(index(colorattrs, nlhs)+1) != !!(index(colorattrs, nrhs)+1)\n        echomsg \"CSApprox: Bad attr map (removing \" . olhs . \"; type mismatch with \" . orhs . \")\"\n      elseif nrhs == 'sp'\n        echomsg \"CSApprox: Bad attr map (removing \" . olhs . \"; can't map to 'sp')\"\n      else\n        let new[nlhs] = nrhs\n      endif\n    catch\n      echo v:exception\n    endtry\n  endfor\nendfunction\n\n\" {>2} Normalize the GUI settings of a highlight group\n\" If the Normal group is cleared, set it to gvim's default, black on white\n\" Though this would be a really weird thing for a scheme to do... *shrug*\nfunction! s:FixupGuiInfo(highlights)\n  if a:highlights[s:hlid_normal].gui.bg == ''\n    let a:highlights[s:hlid_normal].gui.bg = 'white'\n  endif\n\n  if a:highlights[s:hlid_normal].gui.fg == ''\n    let a:highlights[s:hlid_normal].gui.fg = 'black'\n  endif\nendfunction\n\n\" {>2} Map gui settings to cterm settings\n\" Given information about a highlight group, replace the cterm settings with\n\" the mapped gui settings, applying any attribute overrides along the way.  In\n\" particular, this gives special treatment to the 'reverse' attribute and the\n\" 'guisp' attribute.  In particular, if the 'reverse' attribute is set for\n\" gvim, we unset it for the terminal and instead set ctermfg to match guibg\n\" and vice versa, since terminals can consider a 'reverse' flag to mean using\n\" default-bg-on-default-fg instead of current-bg-on-current-fg.  We also\n\" ensure that the 'sp' attribute is never set for cterm, since no terminal can\n\" handle that particular highlight.  If the user wants to display the guisp\n\" color, he should map it to either 'fg' or 'bg' using g:CSApprox_attr_map.\nfunction! s:FixupCtermInfo(highlights)\n  for hl in values(a:highlights)\n\n    if !has_key(hl, 'cterm')\n      let hl[\"cterm\"] = {}\n    endif\n\n    \" Find attributes to be set in the terminal\n    for attr in s:PossibleAttributes()\n      let hl.cterm[attr] = ''\n      if hl.gui[attr] == 1\n        if s:attr_map(attr) != ''\n          let hl.cterm[ s:attr_map(attr) ] = 1\n        endif\n      endif\n    endfor\n\n    for color in [ \"bg\", \"fg\" ]\n      let eff_color = color\n      if hl.cterm['reverse']\n        let eff_color = (color == 'bg' ? 'fg' : 'bg')\n      endif\n\n      let hl.cterm[color] = get(hl.gui, s:attr_map(eff_color), '')\n    endfor\n\n    if hl.gui['sp'] != '' && s:attr_map('sp') != ''\n      let hl.cterm[s:attr_map('sp')] = hl.gui['sp']\n    endif\n\n    if exists(\"g:CSApprox_fake_reverse\") && g:CSApprox_fake_reverse\n      if hl.cterm['reverse'] && hl.cterm.bg == ''\n        let hl.cterm.bg = 'fg'\n      endif\n\n      if hl.cterm['reverse'] && hl.cterm.fg == ''\n        let hl.cterm.fg = 'bg'\n      endif\n\n      if hl.cterm['reverse']\n        let hl.cterm.reverse = ''\n      endif\n    endif\n  endfor\nendfunction\n\n\" {>2} Kludge around inability to reference autoload functions\nfunction! s:DefaultApproximator(...)\n  return call('csapprox#per_component#Approximate', a:000)\nendfunction\n\n\" {>2} Set cterm colors for a highlight group\n\" Given the information for a single highlight group (ie, the value of\n\" one of the items in s:Highlights() already normalized with s:FixupCtermInfo\n\" and s:FixupGuiInfo), handle matching the gvim colors to the closest cterm\n\" colors by calling the appropriate approximator as specified with the\n\" g:CSApprox_approximator_function variable and set the colors and attributes\n\" appropriately to match the gui.\nfunction! s:SetCtermFromGui(hl)\n  let hl = a:hl\n\n  \" Set up the default approximator function, if needed\n  if !exists(\"g:CSApprox_approximator_function\")\n    let g:CSApprox_approximator_function = function(\"s:DefaultApproximator\")\n  endif\n\n  \" Clear existing highlights\n  exe 'hi ' . hl.name . ' cterm=NONE ctermbg=NONE ctermfg=NONE'\n\n  for which in [ 'bg', 'fg' ]\n    let val = hl.cterm[which]\n\n    \" Skip unset colors\n    if val == -1 || val == \"\"\n      continue\n    endif\n\n    \" Try translating anything but 'fg', 'bg', #rrggbb, and rrggbb from an\n    \" rgb.txt color to a #rrggbb color\n    if val !~? '^[fb]g$' && val !~ '^#\\=\\x\\{6}$'\n      try\n        \" First see if it is in our preset-by-vim rgb list\n        let val = s:rgb_presets[tolower(val)]\n      catch\n        \" Then try loading and checking our real rgb list\n        if empty(s:rgb)\n          call s:UpdateRgbHash()\n        endif\n        try\n          let val = s:rgb[tolower(val)]\n        catch\n          \" And then barf if we still haven't found it\n          if &verbose\n            echomsg \"CSApprox: Colorscheme uses unknown color \\\"\" . val . \"\\\"\"\n          endif\n          continue\n        endtry\n      endtry\n    endif\n\n    if val =~? '^[fb]g$'\n      exe 'hi ' . hl.name . ' cterm' . which . '=' . val\n      let hl.cterm[which] = val\n    elseif val =~ '^#\\=\\x\\{6}$'\n      let val = substitute(val, '^#', '', '')\n      let r = str2nr(val[0:1], 16)\n      let g = str2nr(val[2:3], 16)\n      let b = str2nr(val[4:5], 16)\n      let hl.cterm[which] = g:CSApprox_approximator_function(r, g, b)\n      exe 'hi ' . hl.name . ' cterm' . which . '=' . hl.cterm[which]\n    else\n      throw \"Internal error handling color: \" . val\n    endif\n  endfor\n\n  \" Finally, set the attributes\n  let attrs = s:PossibleAttributes()\n  call filter(attrs, 'hl.cterm[v:val] == 1')\n\n  if !empty(attrs)\n    exe 'hi ' . hl.name . ' cterm=' . join(attrs, ',')\n  endif\nendfunction\n\n\n\" {>1} Top-level control\n\n\" Cache the highlight ID of the normal group; it's used often and won't change\nlet s:hlid_normal = hlID('Normal')\n\n\" {>2} Builtin cterm color names above 15\n\" Vim defines some color name to high color mappings internally (see\n\" syntax.c:do_highlight).  Since we don't want to overwrite a colorscheme that\n\" was actually written for a high color terminal with our choices, but have no\n\" way to tell if a colorscheme was written for a high color terminal, we fall\n\" back on guessing.  If any highlight group has a cterm color set to 16 or\n\" higher, we assume that the user has used a high color colorscheme - unless\n\" that color is one of the below, which vim can set internally when a color is\n\" requested by name.\nlet s:presets_88  = []\nlet s:presets_88 += [32] \" Brown\nlet s:presets_88 += [72] \" DarkYellow\nlet s:presets_88 += [84] \" Gray\nlet s:presets_88 += [84] \" Grey\nlet s:presets_88 += [82] \" DarkGray\nlet s:presets_88 += [82] \" DarkGrey\nlet s:presets_88 += [43] \" LightBlue\nlet s:presets_88 += [61] \" LightGreen\nlet s:presets_88 += [63] \" LightCyan\nlet s:presets_88 += [74] \" LightRed\nlet s:presets_88 += [75] \" LightMagenta\nlet s:presets_88 += [78] \" LightYellow\n\nlet s:presets_256  = []\nlet s:presets_256 += [130] \" Brown\nlet s:presets_256 += [130] \" DarkYellow\nlet s:presets_256 += [248] \" Gray\nlet s:presets_256 += [248] \" Grey\nlet s:presets_256 += [242] \" DarkGray\nlet s:presets_256 += [242] \" DarkGrey\nlet s:presets_256 += [ 81] \" LightBlue\nlet s:presets_256 += [121] \" LightGreen\nlet s:presets_256 += [159] \" LightCyan\nlet s:presets_256 += [224] \" LightRed\nlet s:presets_256 += [225] \" LightMagenta\nlet s:presets_256 += [229] \" LightYellow\n\n\" {>2} Wrapper around :exe to allow :executing multiple commands.\n\" \"cmd\" is the command to be :executed.\n\" If the variable is a String, it is :executed.\n\" If the variable is a List, each element is :executed.\nfunction! s:exe(cmd)\n  if type(a:cmd) == type('')\n    exe a:cmd\n  else\n    for cmd in a:cmd\n      call s:exe(cmd)\n    endfor\n  endif\nendfunction\n\n\" {>2} Function to handle hooks\n\" Prototype: HandleHooks(type [, scheme])\n\" \"type\" is the type of hook to be executed, ie. \"pre\" or \"post\"\n\" \"scheme\" is the name of the colorscheme that is currently active, if known\n\"\n\" If the variables g:CSApprox_hook_{type} and g:CSApprox_hook_{scheme}_{type}\n\" exist, this will :execute them in that order.  If one does not exist, it\n\" will silently be ignored.\n\"\n\" If the scheme name contains characters that are invalid in a variable name,\n\" they will simply be removed.  Ie, g:colors_name = \"123 foo_bar-baz456\"\n\" becomes \"foo_barbaz456\"\n\"\n\" NOTE: Exceptions will be printed out, rather than end processing early.  The\n\" rationale is that it is worse for the user to fix the hook in an editor with\n\" broken colors.  :)\nfunction! s:HandleHooks(type, ...)\n  let type = a:type\n  let scheme = (a:0 == 1 ? a:1 : \"\")\n  let scheme = substitute(scheme, '[^[:alnum:]_]', '', 'g')\n  let scheme = substitute(scheme, '^\\d\\+', '', '')\n\n  for cmd in [ 'g:CSApprox_hook_' . type,\n             \\ 'g:CSApprox_' . scheme . '_hook_' . type,\n             \\ 'g:CSApprox_hook_' . scheme . '_' . type ]\n    if exists(cmd)\n      try\n        call s:exe(eval(cmd))\n      catch\n        echomsg \"Error processing \" . cmd . \":\"\n        echomsg v:exception\n      endtry\n    endif\n  endfor\nendfunction\n\n\" {>2} Main function\n\" Wrapper around the actual implementation to make it easier to ensure that\n\" all temporary settings are restored by the time we return, whether or not\n\" something was thrown.  Additionally, sets the 'verbose' option to the max of\n\" g:CSApprox_verbose_level (default 1) and &verbose for the duration of the\n\" main function.  This allows us to default to a message whenever any error,\n\" even a recoverable one, occurs, meaning the user quickly finds out when\n\" something's wrong, but makes it very easy for the user to make us silent.\nfunction! s:CSApprox(...)\n  try\n    if a:0 == 1 && a:1\n      if !exists('s:inhibit_hicolor_test')\n        let s:inhibit_hicolor_test = 0\n      endif\n      let s:inhibit_hicolor_test += 1\n    endif\n\n    let savelz  = &lz\n\n    set lz\n\n    if exists(\"g:CSApprox_attr_map\") && type(g:CSApprox_attr_map) == type({})\n      call s:NormalizeAttrMap(g:CSApprox_attr_map)\n    else\n      let g:CSApprox_attr_map = { 'italic' : 'underline', 'sp' : 'fg' }\n    endif\n\n    \" colors_name must be unset and reset, or vim will helpfully reload the\n    \" colorscheme when we set the background for the Normal group.\n    \" See the help entries ':hi-normal-cterm' and 'g:colors_name'\n    if exists(\"g:colors_name\")\n      let colors_name = g:colors_name\n      unlet g:colors_name\n    endif\n\n    \" Similarly, the global variable \"syntax_cmd\" must be set to something vim\n    \" doesn't recognize, lest vim helpfully switch all colors back to the\n    \" default whenever the Normal group is changed (in syncolor.vim)...\n    if exists(\"g:syntax_cmd\")\n      let syntax_cmd = g:syntax_cmd\n    endif\n    let g:syntax_cmd = \"PLEASE DON'T CHANGE ANY COLORS!!!\"\n\n    \" Set up our verbosity level, if needed.\n    \" Default to 1, so the user can know if something's wrong.\n    if !exists(\"g:CSApprox_verbose_level\")\n      let g:CSApprox_verbose_level = 1\n    endif\n\n    call s:HandleHooks(\"pre\", (exists(\"colors_name\") ? colors_name : \"\"))\n\n    let old_bg = &bg\n\n    \" Set 'verbose' set to the maximum of &verbose and CSApprox_verbose_level\n    exe max([&vbs, g:CSApprox_verbose_level]) 'verbose call s:CSApproxImpl()'\n\n    let &bg = old_bg\n\n    call s:HandleHooks(\"post\", (exists(\"colors_name\") ? colors_name : \"\"))\n  finally\n    if exists(\"colors_name\")\n      let g:colors_name = colors_name\n    endif\n\n    unlet g:syntax_cmd\n    if exists(\"syntax_cmd\")\n      let g:syntax_cmd = syntax_cmd\n    endif\n\n    let &lz   = savelz\n\n    if a:0 == 1 && a:1\n      let s:inhibit_hicolor_test -= 1\n      if s:inhibit_hicolor_test == 0\n        unlet s:inhibit_hicolor_test\n      endif\n    endif\n  endtry\nendfunction\n\n\" {>2} CSApprox implementation\n\" Verifies that the user has not started the gui, and that vim recognizes his\n\" terminal as having enough colors for us to go on, then gathers the existing\n\" highlights and sets the cterm colors to match the gui colors for all those\n\" highlights (unless the colorscheme was already high-color).\nfunction! s:CSApproxImpl()\n  \" Return if not running in an 88/256 color terminal\n  if &t_Co != 256 && &t_Co != 88\n    if &verbose && &t_Co != ''\n      echomsg \"CSApprox skipped; terminal only has\" &t_Co \"colors, not 88/256\"\n      echomsg \"Try checking :help csapprox-terminal for workarounds\"\n    endif\n\n    return\n  endif\n\n  \" Get the current highlight colors\n  let highlights = s:Highlights([\"gui\"])\n\n  let hinums = keys(highlights)\n\n  \" Make sure that the script is not already 256 color by checking to make\n  \" sure that no groups are set to a value above 256, unless the color they're\n  \" set to can be set internally by vim (gotten by scraping\n  \" color_numbers_{88,256} in syntax.c:do_highlight)\n  \"\n  \" XXX: s:inhibit_hicolor_test allows this test to be skipped for snapshots\n  if !exists(\"s:inhibit_hicolor_test\") || !s:inhibit_hicolor_test\n    for hlid in hinums\n      for type in [ 'bg', 'fg' ]\n        let color = synIDattr(hlid, type, 'cterm')\n\n        if color > 15 && index(s:presets_{&t_Co}, str2nr(color)) < 0\n          \" The value is set above 15, and wasn't set by vim.\n          if &verbose >= 2\n            echomsg 'CSApprox: Exiting - high' type 'color found for' highlights[hlid].name\n          endif\n          return\n        endif\n      endfor\n    endfor\n  endif\n\n  call s:FixupGuiInfo(highlights)\n  call s:FixupCtermInfo(highlights)\n\n  \" We need to set the Normal group first so 'bg' and 'fg' work as colors\n  call insert(hinums, remove(hinums, index(hinums, string(s:hlid_normal))))\n\n  \" then set each color's cterm attributes to match gui\n  for hlid in hinums\n    call s:SetCtermFromGui(highlights[hlid])\n  endfor\nendfunction\n\n\" {>2} Write out the current colors to an 88/256 color colorscheme file.\n\" \"file\" - destination filename\n\" \"overwrite\" - overwrite an existing file\nfunction! s:CSApproxSnapshot(file, overwrite)\n  let force = a:overwrite\n  let file = fnamemodify(a:file, \":p\")\n\n  if empty(file)\n    throw \"Bad file name: \\\"\" . file . \"\\\"\"\n  elseif (filewritable(fnamemodify(file, ':h')) != 2)\n    throw \"Cannot write to directory \\\"\" . fnamemodify(file, ':h') . \"\\\"\"\n  elseif (glob(file) || filereadable(file)) && !force\n    \" TODO - respect 'confirm' here and prompt if it's set.\n    echohl ErrorMsg\n    echomsg \"E13: File exists (add ! to override)\"\n    echohl None\n    return\n  endif\n\n  \" Sigh... This is basically a bug, but one that I have no chance of fixing.\n  \" Vim decides that Pmenu should be highlighted in 'LightMagenta' in terminal\n  \" vim and as 'Magenta' in gvim...  And I can't ask it what color it actually\n  \" *wants*.  As far as I can see, there's no way for me to learn that\n  \" I should output 'Magenta' when 'LightMagenta' is provided by vim for the\n  \" terminal.\n  if !has('gui_running')\n    echohl WarningMsg\n    echomsg \"Warning: The written colorscheme may have incorrect colors\"\n    echomsg \"         when CSApproxSnapshot is used in terminal vim!\"\n    echohl None\n  endif\n\n  let save_t_Co = &t_Co\n  let s:inhibit_hicolor_test = 1\n  if exists(\"g:CSApprox_konsole\")\n    let save_CSApprox_konsole = g:CSApprox_konsole\n  endif\n  if exists(\"g:CSApprox_eterm\")\n    let save_CSApprox_eterm = g:CSApprox_eterm\n  endif\n\n  \" Needed just like in CSApprox()\n  if exists(\"g:colors_name\")\n    let colors_name = g:colors_name\n    unlet g:colors_name\n  endif\n\n  \" Needed just like in CSApprox()\n  if exists(\"g:syntax_cmd\")\n    let syntax_cmd = g:syntax_cmd\n  endif\n  let g:syntax_cmd = \"PLEASE DON'T CHANGE ANY COLORS!!!\"\n\n  try\n    let lines = []\n    let lines += [ '\" This scheme was created by CSApproxSnapshot' ]\n    let lines += [ '\" on ' . strftime(\"%a, %d %b %Y\") ]\n    let lines += [ '' ]\n    let lines += [ 'hi clear' ]\n    let lines += [ 'if exists(\"syntax_on\")' ]\n    let lines += [ '    syntax reset' ]\n    let lines += [ 'endif' ]\n    let lines += [ '' ]\n    let lines += [ 'if v:version < 700' ]\n    let lines += [ '    let g:colors_name = expand(\"<sfile>:t:r\")' ]\n    let lines += [ '    command! -nargs=+ CSAHi exe \"hi\" substitute(substitute(<q-args>, \"undercurl\", \"underline\", \"g\"), \"guisp\\\\S\\\\+\", \"\", \"g\")' ]\n    let lines += [ 'else' ]\n    let lines += [ '    let g:colors_name = expand(\"<sfile>:t:r\")' ]\n    let lines += [ '    command! -nargs=+ CSAHi exe \"hi\" <q-args>' ]\n    let lines += [ 'endif' ]\n    let lines += [ '' ]\n    let lines += [ 'function! s:old_kde()' ]\n    let lines += [ '  \" Konsole only used its own palette up til KDE 4.2.0' ]\n    let lines += [ \"  if executable('kde4-config') && system('kde4-config --kde-version') =~ '^4\\.[10]\\.'\" ]\n    let lines += [ '    return 1' ]\n    let lines += [ \"  elseif executable('kde-config') && system('kde-config --version') =~# 'KDE: 3\\.'\" ]\n    let lines += [ '    return 1' ]\n    let lines += [ '  else' ]\n    let lines += [ '    return 0' ]\n    let lines += [ '  endif' ]\n    let lines += [ 'endfunction' ]\n    let lines += [ '' ]\n\n\n    let lines += [ 'if 0' ]\n    for round in [ 'konsole', 'eterm', 'xterm', 'urxvt' ]\n      sil! unlet g:CSApprox_eterm\n      sil! unlet g:CSApprox_konsole\n\n      if round == 'konsole'\n        let g:CSApprox_konsole = 1\n      elseif round == 'eterm'\n        let g:CSApprox_eterm = 1\n      endif\n\n      if round == 'urxvt'\n        set t_Co=88\n      else\n        set t_Co=256\n      endif\n\n      call s:CSApprox()\n\n      let highlights = s:Highlights([\"term\", \"cterm\", \"gui\"])\n      call s:FixupGuiInfo(highlights)\n\n      if round == 'konsole' || round == 'eterm'\n        if round == 'konsole'\n          let term_matches_round = '(&term =~? \"^konsole\" && s:old_kde())'\n        else\n          let term_matches_round = '&term =~? \"^' . round . '\"'\n        endif\n\n        let lines += [ 'elseif has(\"gui_running\") || (&t_Co == ' . &t_Co\n                   \\ . ' && (&term ==# \"xterm\" || &term =~# \"^screen\")'\n                   \\ . ' && exists(\"g:CSApprox_' . round . '\")'\n                   \\ . ' && g:CSApprox_' . round . ')'\n                   \\ . ' || ' . term_matches_round ]\n      else\n        let lines += [ 'elseif has(\"gui_running\") || &t_Co == ' . &t_Co ]\n      endif\n\n      let hinums = keys(highlights)\n\n      call insert(hinums, remove(hinums, index(hinums, string(s:hlid_normal))))\n\n      for hlnum in hinums\n        let hl = highlights[hlnum]\n        let line = '    CSAHi ' . hl.name\n        for type in [ 'term', 'cterm', 'gui' ]\n          let attrs = s:PossibleAttributes()\n          call filter(attrs, 'hl[type][v:val] == 1')\n          let line .= ' ' . type . '=' . (empty(attrs) ? 'NONE' : join(attrs, ','))\n          if type != 'term'\n            let line .= ' ' . type . 'bg=' . (len(hl[type].bg) ? hl[type].bg : 'bg')\n            let line .= ' ' . type . 'fg=' . (len(hl[type].fg) ? hl[type].fg : 'fg')\n            if type == 'gui' && hl.gui.sp !~ '^\\s*$'\n              let line .= ' ' . type . 'sp=' . hl[type].sp\n            endif\n          endif\n        endfor\n        let lines += [ line ]\n      endfor\n    endfor\n    let lines += [ 'endif' ]\n    let lines += [ '' ]\n    let lines += [ 'if 1' ]\n    let lines += [ '    delcommand CSAHi' ]\n    let lines += [ 'endif' ]\n    call writefile(lines, file)\n  finally\n    let &t_Co = save_t_Co\n\n    if exists(\"save_CSApprox_konsole\")\n      let g:CSApprox_konsole = save_CSApprox_konsole\n    endif\n    if exists(\"save_CSApprox_eterm\")\n      let g:CSApprox_eterm = save_CSApprox_eterm\n    endif\n\n    if exists(\"colors_name\")\n      let g:colors_name = colors_name\n    endif\n\n    unlet g:syntax_cmd\n    if exists(\"syntax_cmd\")\n      let g:syntax_cmd = syntax_cmd\n    endif\n\n    call s:CSApprox()\n\n    unlet s:inhibit_hicolor_test\n  endtry\nendfunction\n\n\" {>2} Snapshot user command\ncommand! -bang -nargs=1 -complete=file -bar CSApproxSnapshot\n        \\ call s:CSApproxSnapshot(<f-args>, strlen(\"<bang>\"))\n\n\" {>2} Manual updates\ncommand -bang -bar CSApprox call s:CSApprox(strlen(\"<bang>\"))\n\n\" {>1} Autocmds\n\" Set up an autogroup to hook us on the completion of any :colorscheme command\naugroup CSApprox\n  au!\n  au ColorScheme * call s:CSApprox()\n  \"au User CSApproxPost highlight Normal ctermbg=none | highlight NonText ctermbg=None\naugroup END\n\n\" {>1} Restore compatibility options\nlet &cpo = s:savecpo\nunlet s:savecpo\n\n\n\" {0} vim:sw=2:sts=2:et:fdm=expr:fde=substitute(matchstr(getline(v\\:lnum),'^\\\\s*\"\\\\s*{\\\\zs.\\\\{-}\\\\ze}'),'^$','=','')\n"
  },
  {
    "path": ".vim/bundle/Gist.vim/README",
    "content": "This is a mirror of http://www.vim.org/scripts/script.php?script_id=2423\n\nThis is vimscript for gist (http://gist.github.com)\n\nUsage:\n\n  :Gist\n    post whole text to gist.\n\n  :'<,'>Gist\n    post selected text to gist.\n\n  :Gist -p\n    post whole text to gist with private.\n    if you got empty gist list, try :Gist --abandon \n\n  :Gist -a\n    post whole text to gist with anonymous.\n\n  :Gist -m\n    post multi buffer to gist.\n\n  :Gist -e\n    edit the gist. (shoud be work on gist buffer)\n    you can update the gist with :w command on gist buffer.\n\n  :Gist -e foo.js\n    edit the gist with name 'foo.js'. (shoud be work on gist buffer)\n\n  :Gist -d\n    delete the gist. (should be work on gist buffer)\n    password authentication is needed.\n\n  :Gist -f\n    fork the gist. (should be work on gist buffer)\n    password authentication is needed.\n\n  :Gist XXXXX\n    get gist XXXXX.\n\n  :Gist -c XXXXX.\n    get gist XXXXX and put to clipboard.\n\n  :Gist -l\n    list gists from mine.\n\n  :Gist -la\n    list gists from all.\n\nTips:\n  if set g:gist_clip_command, gist.vim will copy the gist code\n    with option '-c'.\n\n    # mac\n    let g:gist_clip_command = 'pbcopy'\n\n    # linux\n    let g:gist_clip_command = 'xclip -selection clipboard'\n\n    # others(cygwin?)\n    let g:gist_clip_command = 'putclip'\n\n  if you want to detect filetype from filename...\n\n    let g:gist_detect_filetype = 1\n\n  if you want to open browser after the post...\n\n    let g:gist_open_browser_after_post = 1\n\n  if you want to change the browser...\n\n    let g:gist_browser_command = 'w3m %URL%'\n\n      or\n\n    let g:gist_browser_command = 'opera %URL% &'\n\n    on windows, should work with original setting.\n\nRequire:\n  curl command (http://curl.haxx.se/)\n  and if you want to use profile of git, it require git command.\n\n"
  },
  {
    "path": ".vim/bundle/Gist.vim/README.mkd",
    "content": "### Gist.vim\n\nThis is a vimscript for creating gists (http://gist.github.com).\n\nFor the latest version please see https://github.com/mattn/gist-vim.\n\n## Usage:\n\n- Post current buffer to gist, using default privacy option.\n\n        :Gist\n\n- Post selected text to gist, using default privacy option.\n  This applies to all permutations listed below (except multi).\n\n        :'<,'>Gist\n\n- Create a private gist.\n\n        :Gist -p\n\n- Create a public gist.\n  (Only relevant if you've set gists to be private by default.)\n\n        :Gist -P\n\n>  This is only relevant if you've set gists to be private by default;\n> if you get an empty gist list, try \":Gist --abandon\".\n\n- Create a gist anonymously.\n\n        :Gist -a\n\n- Create a gist with all open buffers.\n\n        :Gist -m\n\n- Edit the gist (you need to have opened the gist buffer first).\n  You can update the gist with the \":w\" command within the gist buffer.\n\n        :Gist -e\n\n- Edit the gist with name 'foo.js' (you need to have opened the gist buffer\n  first).\n\n        :Gist -e foo.js\n\n- Post/Edit with the description \" (you need to have opened the gist buffer\n  first). >\n\n    :Gist -s something\n    :Gist -e -s something\n\n- Delete the gist (you need to have opened the gist buffer first).\n  Password authentication is needed.\n\n        :Gist -d\n\n- Fork the gist (you need to have opened the gist buffer first).\n  Password authentication is needed.\n\n        :Gist -f\n\n- Star the gist (you need to have opened the gist buffer first).\n  Password authentication is needed.\n\n        :Gist +1\n\n- Unstar the gist (you need to have opened the gist buffer first).\n  Password authentication is needed.\n\n        :Gist -1\n\n- Get gist XXXXX.\n\n        :Gist XXXXX\n\n- Get gist XXXXX and add to clipboard.\n\n        :Gist -c XXXXX\n\n- List your public gists.\n\n        :Gist -l\n\n- List gists from user \"mattn\".\n\n        :Gist -l mattn\n\n- List everyone's gists.\n\n        :Gist -la\n\n- List gists from your starred gists.\n\n        :Gist -ls\n\n## Tips:\n\nIf you set g:gist_clip_command, gist.vim will copy the gist code with option\n'-c'.\n\n- Mac:\n\n        let g:gist_clip_command = 'pbcopy'\n\n- Linux:\n\n        let g:gist_clip_command = 'xclip -selection clipboard'\n\n- Others (cygwin?):\n\n        let g:gist_clip_command = 'putclip'\n\nIf you want to detect filetype from the filename:\n\n    let g:gist_detect_filetype = 1\n\nIf you want to open browser after the post:\n\n    let g:gist_open_browser_after_post = 1\n\nIf you want to change the browser:\n\n    let g:gist_browser_command = 'w3m %URL%'\n\nor:\n\n    let g:gist_browser_command = 'opera %URL% &'\n\nOn windows, this should work with your user settings.\n\nIf you want to show your private gists with \":Gist -l\":\n\n    let g:gist_show_privates = 1\n\nIf you want your gist to be private by default:\n\n    let g:gist_post_private = 1\n\nIf you want to manipulate multiple files in a gist:\n\n    let g:gist_get_multiplefile = 1\n\nYou need to either set global git config:\n\n\t$ git config --global github.user Username\n\n## Requirements:\n\n- curl command (http://curl.haxx.se/)\n- webapi-vim (https://github.com/mattn/webapi-vim)\n- and if you want to use your git profile, the git command-line client.\n\n## License:\n\n    Copyright 2010 by Yasuhiro Matsumoto\n    modification, are permitted provided that the following conditions are met:\n\n    1. Redistributions of source code must retain the above copyright notice,\n       this list of conditions and the following disclaimer.\n    2. Redistributions in binary form must reproduce the above copyright notice,\n       this list of conditions and the following disclaimer in the documentation\n       and/or other materials provided with the distribution.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n    REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n    OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\n## Install:\n\nCopy it to your plugin directory.\ngist.vim will create a curl cookie-jar file in your runtimepath.\n\n- rtp:\n  - plugin/gist.vim\n  - cookies/github\n\nIf you want to uninstall gist.vim, remember to also remove `~/.gist-vim`.\n\n## Setup:\n\nThis plugin uses github API v3. Setting value is stored in `~/.gist-vim`.\ngist-vim have two ways to access APIs.\n\nFirst, you need to set your Github username in global git config:\n\n    $ git config --global github.user Username\n\nThen, gist.vim will ask for your password to create an authorization when you\nfirst use it.  The password is not stored and only the OAuth access token will\nbe kept for later use.  You can revoke the token at any time from the list of\n[\"Authorized applications\" on Github's \"Account Settings\" page](https://github.com/settings/applications).\n"
  },
  {
    "path": ".vim/bundle/Gist.vim/autoload/gist.vim",
    "content": "\"=============================================================================\n\" File: gist.vim\n\" Author: Yasuhiro Matsumoto <mattn.jp@gmail.com>\n\" Last Change: 27-Sep-2012.\n\" Version: 7.0\n\" WebPage: http://github.com/mattn/gist-vim\n\" License: BSD\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nlet s:configfile = expand('~/.gist-vim')\n\nif !exists('g:github_user')\n  let s:system = function(get(g:, 'webapi#system_function', 'system'))\n  let g:github_user = substitute(s:system('git config --get github.user'), \"\\n\", '', '')\n  if strlen(g:github_user) == 0\n    let g:github_user = $GITHUB_USER\n  end\nendif\n\nfunction! s:get_browser_command()\n  let gist_browser_command = get(g:, 'gist_browser_command', '')\n  if gist_browser_command == ''\n    if has('win32') || has('win64')\n      let gist_browser_command = '!start rundll32 url.dll,FileProtocolHandler %URL%'\n    elseif has('mac') || has('macunix') || has('gui_macvim') || system('uname') =~? '^darwin'\n      let gist_browser_command = 'open %URL%'\n    elseif executable('xdg-open')\n      let gist_browser_command = 'xdg-open %URL%'\n    elseif executable('firefox')\n      let gist_browser_command = 'firefox %URL% &'\n    else\n      let gist_browser_command = ''\n    endif\n  endif\n  return gist_browser_command\nendfunction\n\nfunction! s:open_browser(url)\n  let cmd = s:get_browser_command()\n  if len(cmd) == 0\n    redraw\n    echohl WarningMsg\n    echo \"It seems that you don't have general web browser. Open URL below.\"\n    echohl None\n    echo a:url\n    return\n  endif\n  if cmd =~ '^!'\n    let cmd = substitute(cmd, '%URL%', '\\=shellescape(a:url)', 'g')\n    silent! exec cmd\n  elseif cmd =~ '^:[A-Z]'\n    let cmd = substitute(cmd, '%URL%', '\\=a:url', 'g')\n    exec cmd\n  else\n    let cmd = substitute(cmd, '%URL%', '\\=shellescape(a:url)', 'g')\n    call system(cmd)\n  endif\nendfunction\n\nfunction! s:shellwords(str)\n  let words = split(a:str, '\\%(\\([^ \\t\\''\"]\\+\\)\\|''\\([^\\'']*\\)''\\|\"\\(\\%([^\\\"\\\\]\\|\\\\.\\)*\\)\"\\)\\zs\\s*\\ze')\n  let words = map(words, 'substitute(v:val, ''\\\\\\([\\\\ ]\\)'', ''\\1'', \"g\")')\n  let words = map(words, 'matchstr(v:val, ''^\\%\\(\"\\zs\\(.*\\)\\ze\"\\|''''\\zs\\(.*\\)\\ze''''\\|.*\\)$'')')\n  return words\nendfunction\n\nfunction! s:format_gist(gist)\n  let files = sort(keys(a:gist.files))\n  if empty(files)\n    return \"\"\n  endif\n  let file = a:gist.files[files[0]]\n  if has_key(file, \"content\")\n    let code = file.content\n    let code = \"\\n\".join(map(split(code, \"\\n\"), '\"  \".v:val'), \"\\n\")\n  else\n    let code = \"\"\n  endif\n  return printf(\"gist: %s %s%s\", a:gist.id, type(a:gist.description)==0?\"\": a:gist.description, code)\nendfunction\n\n\" Note: A colon in the file name has side effects on Windows due to NTFS Alternate Data Streams; avoid it.\nlet s:bufprefix = 'gist' . (has('unix') ? ':' : '_')\nfunction! s:GistList(gistls, page)\n  if a:gistls == '-all'\n    let url = 'https://api.github.com/gists/public'\n  elseif get(g:, 'gist_show_privates', 0) && a:gistls == 'starred'\n    let url = 'https://api.github.com/gists/starred'\n  elseif get(g:, 'gist_show_privates') && a:gistls == 'mine'\n    let url = 'https://api.github.com/gists'\n  else\n    let url = 'https://api.github.com/users/'.a:gistls.'/gists'\n  endif\n  let winnum = bufwinnr(bufnr(s:bufprefix.a:gistls))\n  if winnum != -1\n    if winnum != bufwinnr('%')\n      exe winnum 'wincmd w'\n    endif\n    setlocal modifiable\n  else\n    exec 'silent noautocmd split' s:bufprefix.a:gistls\n  endif\n  if a:page > 1\n    let oldlines = getline(0, line('$'))\n    let url = url . '?page=' . a:page\n  endif\n\n  setlocal modifiable\n  let old_undolevels = &undolevels\n  let oldlines = []\n  silent %d _\n\n  redraw | echon 'Listing gists... '\n  let auth = s:GistGetAuthHeader()\n  if len(auth) == 0\n    bw!\n    redraw\n    echohl ErrorMsg | echomsg 'Canceled' | echohl None\n    return\n  endif\n  let res = webapi#http#get(url, '', { \"Authorization\": auth })\n  if v:shell_error != 0\n    bw!\n    redraw\n    echohl ErrorMsg | echomsg 'Gists not found' | echohl None\n    return\n  endif\n  let content = webapi#json#decode(res.content)\n  if type(content) == 4 && has_key(content, 'message') && len(content.message)\n    bw!\n    redraw\n    echohl ErrorMsg | echomsg content.message | echohl None\n    if content.message == 'Bad credentials'\n      call delete(s:configfile)\n    endif\n    return\n  endif\n\n  let lines = map(filter(content, '!empty(v:val.files)'), 's:format_gist(v:val)')\n  call setline(1, split(join(lines, \"\\n\"), \"\\n\"))\n\n  $put='more...'\n\n  let b:gistls = a:gistls\n  let b:page = a:page\n  setlocal buftype=nofile bufhidden=hide noswapfile\n  setlocal nomodified\n  setlocal nomodifiable\n  syntax match SpecialKey /^gist:/he=e-1\n  nnoremap <silent> <buffer> <cr> :call <SID>GistListAction(0)<cr>\n  nnoremap <silent> <buffer> <s-cr> :call <SID>GistListAction(1)<cr>\n\n  cal cursor(1+len(oldlines),1)\n  nohlsearch\n  redraw | echo ''\nendfunction\n\nfunction! gist#list(user, ...)\n  let page = get(a:000, 0, 0)\n  if a:user == '-all'\n    let url = 'https://api.github.com/gists/public'\n  elseif get(g:, 'gist_show_privates', 0) && a:user == 'starred'\n    let url = 'https://api.github.com/gists/starred'\n  elseif get(g:, 'gist_show_privates') && a:user == 'mine'\n    let url = 'https://api.github.com/gists'\n  else\n    let url = 'https://api.github.com/users/'.a:user.'/gists'\n  endif\n\n  let auth = s:GistGetAuthHeader()\n  if len(auth) == 0\n    return []\n  endif\n  let res = webapi#http#get(url, '', { \"Authorization\": auth })\n  return webapi#json#decode(res.content)\nendfunction\n\nfunction! s:GistGetFileName(gistid)\n  let auth = s:GistGetAuthHeader()\n  if len(auth) == 0\n    return ''\n  endif\n  let res = webapi#http#get('https://api.github.com/gists/'.a:gistid, '', { \"Authorization\": auth })\n  let gist = webapi#json#decode(res.content)\n  if has_key(gist, 'files')\n    return sort(keys(gist.files))[0]\n  endif\n  return ''\nendfunction\n\nfunction! s:GistDetectFiletype(gistid)\n  let auth = s:GistGetAuthHeader()\n  if len(auth) == 0\n    return ''\n  endif\n  let res = webapi#http#get('https://api.github.com/gists/'.a:gistid, '', { \"Authorization\": auth })\n  let gist = webapi#json#decode(res.content)\n  let filename = sort(keys(gist.files))[0]\n  let ext = fnamemodify(filename, ':e')\n  if has_key(s:extmap, ext)\n    let type = s:extmap[ext]\n  else\n    let type = get(gist.files[filename], \"type\", \"text\")\n  endif\n  silent! exec \"setlocal ft=\".tolower(type)\nendfunction\n\nfunction! s:GistWrite(fname)\n  if substitute(a:fname, '\\\\', '/', 'g') == expand(\"%:p:gs@\\\\@/@\")\n    Gist -e\n  else\n    exe \"w\".(v:cmdbang ? \"!\" : \"\") fnameescape(v:cmdarg) fnameescape(a:fname)\n    silent! exe \"file\" fnameescape(a:fname)\n    silent! au! BufWriteCmd <buffer>\n  endif\nendfunction\n\nfunction! s:GistGet(gistid, clipboard)\n  redraw | echon 'Getting gist... '\n  let res = webapi#http#get('https://api.github.com/gists/'.a:gistid, '', { \"Authorization\": s:GistGetAuthHeader() })\n  let status = matchstr(matchstr(res.header, '^Status:'), '^[^:]\\+: \\zs.*')\n  if status =~ '^2'\n    let gist = webapi#json#decode(res.content)\n    if get(g:, 'gist_get_multiplefile', 0) != 0\n      let num_file = len(keys(gist.files))\n    else\n      let num_file = 1\n    endif\n    redraw\n    if num_file > len(keys(gist.files))\n      echohl ErrorMsg | echomsg 'Gist not found' | echohl None\n      return\n    endif\n    for n in range(num_file)\n      try\n        let old_undolevels = &undolevels\n        let filename = sort(keys(gist.files))[n]\n\n        let winnum = bufwinnr(bufnr(s:bufprefix.a:gistid.\"/\".filename))\n        if winnum != -1\n          if winnum != bufwinnr('%')\n            exe winnum 'wincmd w'\n          endif\n          setlocal modifiable\n        else\n          exec 'silent noautocmd new'\n          setlocal noswapfile\n          exec 'noautocmd file' s:bufprefix.a:gistid.\"/\".fnameescape(filename)\n        endif\n        set undolevels=-1\n        filetype detect\n        silent %d _\n\n        let content = gist.files[filename].content\n        call setline(1, split(content, \"\\n\"))\n        let b:gist = {\n        \\ \"filename\": filename,\n        \\ \"id\": gist.id,\n        \\ \"description\": gist.description,\n        \\ \"private\": gist.public =~ 'true',\n        \\}\n      catch\n        let &undolevels = old_undolevels\n        bw!\n        redraw\n        echohl ErrorMsg | echomsg 'Gist contains binary' | echohl None\n        return\n      endtry\n      let &undolevels = old_undolevels\n      setlocal buftype=acwrite bufhidden=delete noswapfile\n      setlocal nomodified\n      doau StdinReadPost,BufRead,BufReadPost\n      let gist_detect_filetype = get(g:, 'gist_detect_filetype', 0)\n      if (&ft == '' && gist_detect_filetype == 1) || gist_detect_filetype == 2\n        call s:GistDetectFiletype(a:gistid)\n      endif\n      if a:clipboard\n        if exists('g:gist_clip_command')\n          exec 'silent w !'.g:gist_clip_command\n        elseif has('clipboard')\n          silent! %yank +\n        else\n          %yank\n        endif\n      endif\n      1\n      au! BufWriteCmd <buffer> call s:GistWrite(expand(\"<amatch>\"))\n    endfor\n  else\n    bw!\n    redraw\n    echohl ErrorMsg | echomsg 'Gist not found' | echohl None\n    return\n  endif\nendfunction\n\nfunction! s:GistListAction(shift)\n  let line = getline('.')\n  let mx = '^gist:\\s*\\zs\\(\\w\\+\\)\\ze.*'\n  if line =~# mx\n    let gistid = matchstr(line, mx)\n    if a:shift\n      call s:open_browser(\"https://gist.github.com/\" . gistid)\n    else\n      call s:GistGet(gistid, 0)\n    endif\n    return\n  endif\n  if line =~# '^more\\.\\.\\.$'\n    call s:GistList(b:gistls, b:page+1)\n    return\n  endif\nendfunction\n\nfunction! s:GistUpdate(content, gistid, gistnm, desc)\n  let gist = { \"id\": a:gistid, \"files\" : {}, \"description\": \"\",\"public\": function('webapi#json#true') }\n  if exists('b:gist')\n    if has_key(b:gist, 'private') && b:gist.private | let gist[\"public\"] = function('webapi#json#false') | endif\n    if has_key(b:gist, 'description') | let gist[\"description\"] = b:gist.description | endif\n    if has_key(b:gist, 'filename') | let filename = b:gist.filename | endif\n  else\n    let filename = a:gistnm\n    if len(filename) == 0 | let filename = s:GistGetFileName(a:gistid) | endif\n    if len(filename) == 0 | let filename = s:get_current_filename(1) | endif\n  endif\n\n  let auth = s:GistGetAuthHeader()\n  if len(auth) == 0\n    redraw\n    echohl ErrorMsg | echomsg 'Canceled' | echohl None\n    return\n  endif\n\n  \" Update description\n  \" If no new description specified, keep the old description\n  if a:desc != ' '\n    let gist[\"description\"] = a:desc\n  else\n    let res = webapi#http#get('https://api.github.com/gists/'.a:gistid, '', { \"Authorization\": auth })\n    let status = matchstr(matchstr(res.header, '^Status:'), '^[^:]\\+: \\zs.*')\n    if status =~ '^2'\n      let old_gist = webapi#json#decode(res.content)\n      let gist[\"description\"] = old_gist.description\n    endif\n  endif\n\n  let gist.files[filename] = { \"content\": a:content, \"filename\": filename }\n\n  redraw | echon 'Updating gist... '\n  let res = webapi#http#post('https://api.github.com/gists/' . a:gistid,\n  \\ webapi#json#encode(gist), {\n  \\   \"Authorization\": auth,\n  \\   \"Content-Type\": \"application/json\",\n  \\})\n  let status = matchstr(matchstr(res.header, '^Status:'), '^[^:]\\+: \\zs.*')\n  if status =~ '^2'\n    let obj = webapi#json#decode(res.content)\n    let loc = obj[\"html_url\"]\n    redraw | echomsg 'Done: '.loc\n    let b:gist = {\"id\": a:gistid, \"filename\": filename}\n    setlocal nomodified\n  else\n    let loc = ''\n    let status = matchstr(status, '^\\d\\+\\s*\\zs.*')\n    echohl ErrorMsg | echomsg 'Post failed: '.status | echohl None\n  endif\n  return loc\nendfunction\n\nfunction! s:GistDelete(gistid)\n  let auth = s:GistGetAuthHeader()\n  if len(auth) == 0\n    redraw\n    echohl ErrorMsg | echomsg 'Canceled' | echohl None\n    return\n  endif\n\n  redraw | echon 'Deleting gist... '\n  let res = webapi#http#post('https://api.github.com/gists/'.a:gistid, '', {\n  \\   \"Authorization\": auth,\n  \\   \"Content-Type\": \"application/json\",\n  \\}, 'DELETE')\n  let status = matchstr(matchstr(res.header, '^Status:'), '^[^:]\\+: \\zs.*')\n  if status =~ '^2'\n    redraw | echomsg 'Done: '\n    if exists('b:gist')\n      unlet b:gist\n    endif\n  else\n    let status = matchstr(status, '^\\d\\+\\s*\\zs.*')\n    echohl ErrorMsg | echomsg 'Delete failed: '.status | echohl None\n  endif\nendfunction\n\nfunction! s:get_current_filename(no)\n  let filename = expand('%:t')\n  if len(filename) == 0 && &ft != ''\n    let pair = filter(items(s:extmap), 'v:val[1] == &ft')\n    if len(pair) > 0\n      let filename = printf('gistfile%d%s', a:no, pair[0][0])\n    endif\n  endif\n  if filename == ''\n    let filename = printf('gistfile%d.txt', a:no)\n  endif\n  return filename\nendfunction\n\n\" GistPost function:\n\"   Post new gist to github\n\"\n\"   if there is an embedded gist url or gist id in your file,\n\"   it will just update it.\n\"                                                   -- by c9s\n\"\n\"   embedded gist url format:\n\"\n\"       Gist: https://gist.github.com/123123\n\"\n\"   embedded gist id format:\n\"\n\"       GistID: 123123\n\"\nfunction! s:GistPost(content, private, desc, anonymous)\n  let gist = { \"files\" : {}, \"description\": \"\",\"public\": function('webapi#json#true') }\n  if a:desc != ' ' | let gist[\"description\"] = a:desc | endif\n  if a:private | let gist[\"public\"] = function('webapi#json#false') | endif\n  let filename = s:get_current_filename(1)\n  let gist.files[filename] = { \"content\": a:content, \"filename\": filename }\n\n  let header = {\"Content-Type\": \"application/json\"}\n  if !a:anonymous\n    let auth = s:GistGetAuthHeader()\n    if len(auth) == 0\n      redraw\n      echohl ErrorMsg | echomsg 'Canceled' | echohl None\n      return\n    endif\n    let header[\"Authorization\"] = auth\n  endif\n\n  redraw | echon 'Posting it to gist... '\n  let res = webapi#http#post('https://api.github.com/gists', webapi#json#encode(gist), header)\n  let status = matchstr(matchstr(res.header, '^Status:'), '^[^:]\\+: \\zs.*')\n  if status =~ '^2'\n    let obj = webapi#json#decode(res.content)\n    let loc = obj[\"html_url\"]\n    redraw | echomsg 'Done: '.loc\n    let b:gist = {\n    \\ \"filename\": filename,\n    \\ \"id\": matchstr(loc, '[^/]\\+$'),\n    \\ \"description\": gist['description'],\n    \\ \"private\": a:private,\n    \\}\n  else\n    let loc = ''\n    let status = matchstr(status, '^\\d\\+\\s*\\zs.*')\n    echohl ErrorMsg | echomsg 'Post failed: '.status | echohl None\n  endif\n  return loc\nendfunction\n\nfunction! s:GistPostBuffers(private, desc, anonymous)\n  let bufnrs = range(1, bufnr(\"$\"))\n  let bn = bufnr('%')\n  let query = []\n\n  let gist = { \"files\" : {}, \"description\": \"\",\"public\": function('webapi#json#true') }\n  if a:desc != ' ' | let gist[\"description\"] = a:desc | endif\n  if a:private | let gist[\"public\"] = function('webapi#json#false') | endif\n\n  let index = 1\n  for bufnr in bufnrs\n    if !bufexists(bufnr) || buflisted(bufnr) == 0\n      continue\n    endif\n    echo \"Creating gist content\".index.\"... \"\n    silent! exec \"buffer!\" bufnr\n    let content = join(getline(1, line('$')), \"\\n\")\n    let filename = s:get_current_filename(index)\n    let gist.files[filename] = { \"content\": content, \"filename\": filename }\n    let index = index + 1\n  endfor\n  silent! exec \"buffer!\" bn\n\n  let header = {\"Content-Type\": \"application/json\"}\n  if !a:anonymous\n    let auth = s:GistGetAuthHeader()\n    if len(auth) == 0\n      redraw\n      echohl ErrorMsg | echomsg 'Canceled' | echohl None\n      return\n    endif\n    let header[\"Authorization\"] = auth\n  endif\n\n  redraw | echon 'Posting it to gist... '\n  let res = webapi#http#post('https://api.github.com/gists', webapi#json#encode(gist), header)\n  let status = matchstr(matchstr(res.header, '^Status:'), '^[^:]\\+: \\zs.*')\n  if status =~ '^2'\n    let obj = webapi#json#decode(res.content)\n    let loc = obj[\"html_url\"]\n    redraw | echomsg 'Done: '.loc\n    let b:gist = {\"id\": matchstr(loc, '[^/]\\+$'), \"filename\": filename, \"private\": a:private}\n  else\n    let loc = ''\n    let status = matchstr(status, '^\\d\\+\\s*\\zs.*')\n    echohl ErrorMsg | echomsg 'Post failed: '.status | echohl None\n  endif\n  return loc\nendfunction\n\nfunction! gist#Gist(count, line1, line2, ...)\n  redraw\n  if strlen(g:github_user) == 0\n    echohl ErrorMsg | echomsg \"You don't have github account. read ':help gist-vim-setup'.\" | echohl None\n    return\n  endif\n  let bufname = bufname(\"%\")\n  \" find GistID: in content , then we should just update\n  let gistid = ''\n  let gistls = ''\n  let gistnm = ''\n  let gistdesc = ' '\n  let private = get(g:, 'gist_post_private', 0)\n  let multibuffer = 0\n  let clipboard = 0\n  let deletepost = 0\n  let editpost = 0\n  let anonymous = 0\n  let listmx = '^\\%(-l\\|--list\\)\\s*\\([^\\s]\\+\\)\\?$'\n  let bufnamemx = '^' . s:bufprefix .'\\(\\zs[0-9a-f]\\+\\ze\\|\\zs[0-9a-f]\\+\\ze[/\\\\].*\\)$'\n  if bufname =~ bufnamemx\n    let gistidbuf = matchstr(bufname, bufnamemx)\n  else\n    let gistidbuf = matchstr(join(getline(a:line1, a:line2), \"\\n\"), 'GistID:\\s*\\zs\\w\\+')\n  endif\n\n  let args = (a:0 > 0) ? s:shellwords(a:1) : []\n  for arg in args\n    if arg =~ '^\\(-h\\|--help\\)$\\C'\n      help :Gist\n      return\n    elseif arg =~ '^\\(-la\\|--listall\\)$\\C'\n      let gistls = '-all'\n    elseif arg =~ '^\\(-ls\\|--liststar\\)$\\C'\n      let gistls = 'starred'\n    elseif arg =~ '^\\(-l\\|--list\\)$\\C'\n      if get(g:, 'gist_show_privates')\n        let gistls = 'mine'\n      else\n        let gistls = g:github_user\n      endif\n    elseif arg =~ '^\\(-m\\|--multibuffer\\)$\\C'\n      let multibuffer = 1\n    elseif arg =~ '^\\(-p\\|--private\\)$\\C'\n      let private = 1\n    elseif arg =~ '^\\(-P\\|--public\\)$\\C'\n      let private = 0\n    elseif arg =~ '^\\(-a\\|--anonymous\\)$\\C'\n      let anonymous = 1\n    elseif arg =~ '^\\(-s\\|--description\\)$\\C'\n      let gistdesc = ''\n    elseif arg =~ '^\\(-c\\|--clipboard\\)$\\C'\n      let clipboard = 1\n    elseif arg =~ '^\\(-d\\|--delete\\)$\\C' && gistidbuf != ''\n      let gistid = gistidbuf\n      let deletepost = 1\n    elseif arg =~ '^\\(-e\\|--edit\\)$\\C' && gistidbuf != ''\n      let gistid = gistidbuf\n      let editpost = 1\n    elseif arg =~ '^\\(+1\\|--star\\)$\\C' && gistidbuf != ''\n      let auth = s:GistGetAuthHeader()\n      if len(auth) == 0\n        echohl ErrorMsg | echomsg 'Canceled' | echohl None\n      else\n        let gistid = gistidbuf\n        let res = webapi#http#post('https://api.github.com/gists/'.gistid.'/star', '', { \"Authorization\": auth }, 'PUT')\n        let status = matchstr(matchstr(res.header, '^Status:'), '^[^:]\\+: \\zs.*')\n        if status =~ '^2'\n          echomsg \"Stared\" gistid\n        else\n          echohl ErrorMsg | echomsg 'Star failed' | echohl None\n        endif\n      endif\n      return\n    elseif arg =~ '^\\(-1\\|--unstar\\)$\\C' && gistidbuf != ''\n      let auth = s:GistGetAuthHeader()\n      if len(auth) == 0\n        echohl ErrorMsg | echomsg 'Canceled' | echohl None\n      else\n        let gistid = gistidbuf\n        let res = webapi#http#post('https://api.github.com/gists/'.gistid.'/star', '', { \"Authorization\": auth }, 'DELETE')\n        if status =~ '^2'\n          echomsg \"Unstared\" gistid\n        else\n          echohl ErrorMsg | echomsg 'Unstar failed' | echohl None\n        endif\n      endif\n      return\n    elseif arg =~ '^\\(-f\\|--fork\\)$\\C' && gistidbuf != ''\n      let auth = s:GistGetAuthHeader()\n      if len(auth) == 0\n        echohl ErrorMsg | echomsg 'Canceled' | echohl None\n        return\n      else\n        let gistid = gistidbuf\n        let res = webapi#http#post('https://api.github.com/gists/'.gistid.'/fork', '', { \"Authorization\": auth })\n        let status = matchstr(matchstr(res.header, '^Status:'), '^[^:]\\+: \\zs.*')\n        if status =~ '^2'\n          let obj = webapi#json#decode(res.content)\n          let gistid = obj[\"id\"]\n        else\n          echohl ErrorMsg | echomsg 'Fork failed' | echohl None\n          return\n        endif\n      endif\n    elseif arg !~ '^-' && len(gistnm) == 0\n      if gistdesc != ' '\n        let gistdesc = matchstr(arg, '^\\s*\\zs.*\\ze\\s*$')\n      elseif editpost == 1 || deletepost == 1\n        let gistnm = arg\n      elseif len(gistls) > 0 && arg != '^\\w\\+$\\C'\n        let gistls = arg\n      elseif arg =~ '^[0-9a-z]\\+$\\C'\n        let gistid = arg\n      else\n        echohl ErrorMsg | echomsg 'Invalid arguments: '.arg | echohl None\n        unlet args\n        return 0\n      endif\n    elseif len(arg) > 0\n      echohl ErrorMsg | echomsg 'Invalid arguments: '.arg | echohl None\n      unlet args\n      return 0\n    endif\n  endfor\n  unlet args\n  \"echo \"gistid=\".gistid\n  \"echo \"gistls=\".gistls\n  \"echo \"gistnm=\".gistnm\n  \"echo \"gistdesc=\".gistdesc\n  \"echo \"private=\".private\n  \"echo \"clipboard=\".clipboard\n  \"echo \"editpost=\".editpost\n  \"echo \"deletepost=\".deletepost\n\n  if gistidbuf != '' && gistid == '' && editpost == 0 && deletepost == 0\n    let editpost = 1\n    let gistid = gistidbuf\n  endif\n\n  if len(gistls) > 0\n    call s:GistList(gistls, 1)\n  elseif len(gistid) > 0 && editpost == 0 && deletepost == 0\n    call s:GistGet(gistid, clipboard)\n  else\n    let url = ''\n    if multibuffer == 1\n      let url = s:GistPostBuffers(private, gistdesc, anonymous)\n    else\n      if a:count < 1\n        let content = join(getline(a:line1, a:line2), \"\\n\")\n      else\n        let save_regcont = @\"\n        let save_regtype = getregtype('\"')\n        silent! normal! gvy\n        let content = @\"\n        call setreg('\"', save_regcont, save_regtype)\n      endif\n      if editpost == 1\n        let url = s:GistUpdate(content, gistid, gistnm, gistdesc)\n      elseif deletepost == 1\n        call s:GistDelete(gistid)\n      else\n        let url = s:GistPost(content, private, gistdesc, anonymous)\n      endif\n      if a:count >= 1 && get(g:, 'gist_keep_selection', 0) == 1\n        silent! normal! gv\n      endif\n    endif\n    if len(url) > 0\n      if get(g:, 'gist_open_browser_after_post', 0) == 1\n        call s:open_browser(url)\n      endif\n      let gist_put_url_to_clipboard_after_post = get(g:, 'gist_put_url_to_clipboard_after_post', 1)\n      if gist_put_url_to_clipboard_after_post > 0\n        if gist_put_url_to_clipboard_after_post == 2\n          let url = url . \"\\n\"\n        endif\n        if exists('g:gist_clip_command')\n          call system(g:gist_clip_command, url)\n        elseif has('unix') && !has('xterm_clipboard')\n          let @\" = url\n        else\n          let @+ = url\n        endif\n      endif\n    endif\n  endif\n  return 1\nendfunction\n\nfunction! s:GistGetAuthHeader()\n  if get(g:, 'gist_use_password_in_gitconfig', 0) != 0\n    let password = substitute(system('git config --get github.password'), \"\\n\", '', '')\n    if password =~ '^!' | let password = system(password[1:]) | endif\n    return printf(\"basic %s\", webapi#base64#b64encode(g:github_user.\":\".password))\n  endif\n  let auth = \"\"\n  if filereadable(s:configfile)\n    let str = join(readfile(s:configfile), \"\")\n    if type(str) == 1\n      let auth = str\n    endif\n  endif\n  if len(auth) > 0\n    return auth\n  endif\n\n  redraw\n  echohl WarningMsg\n  echo 'Gist.vim requires authorization to use the Github API. These settings are stored in \"~/.gist-vim\". If you want to revoke, do \"rm ~/.gist-vim\".'\n  echohl None\n  let password = inputsecret(\"Github Password for \".g:github_user.\":\")\n  if len(password) > 0\n    let insecureSecret = printf(\"basic %s\", webapi#base64#b64encode(g:github_user.\":\".password))\n    let res = webapi#http#post('https://api.github.com/authorizations', webapi#json#encode({\n                \\  \"scopes\"   : [\"gist\"],\n                \\  \"note\"     : \"Gist.vim on \".hostname(),\n                \\  \"note_url\" : \"http://www.vim.org/scripts/script.php?script_id=2423\"\n                \\}), {\n                \\  \"Content-Type\"  : \"application/json\",\n                \\  \"Authorization\" : insecureSecret,\n                \\})\n    let authorization = webapi#json#decode(res.content)\n    if has_key(authorization, 'token')\n      let secret = printf(\"token %s\", authorization.token)\n      call writefile([secret], s:configfile)\n      if !(has('win32') || has('win64'))\n        call system(\"chmod go= \".s:configfile)\n      endif\n    elseif has_key(authorization, 'message')\n      echohl WarningMsg\n      echo authorization.message\n      echohl None\n      let secret = ''\n    endif\n  else\n    let secret = ''\n  endif\n  return secret\nendfunction\n\nlet s:extmap = {\n\\\".adb\": \"ada\",\n\\\".ahk\": \"ahk\",\n\\\".arc\": \"arc\",\n\\\".as\": \"actionscript\",\n\\\".asm\": \"asm\",\n\\\".asp\": \"asp\",\n\\\".aw\": \"php\",\n\\\".b\": \"b\",\n\\\".bat\": \"bat\",\n\\\".befunge\": \"befunge\",\n\\\".bmx\": \"bmx\",\n\\\".boo\": \"boo\",\n\\\".c-objdump\": \"c-objdump\",\n\\\".c\": \"c\",\n\\\".cfg\": \"cfg\",\n\\\".cfm\": \"cfm\",\n\\\".ck\": \"ck\",\n\\\".cl\": \"cl\",\n\\\".clj\": \"clj\",\n\\\".cmake\": \"cmake\",\n\\\".coffee\": \"coffee\",\n\\\".cpp\": \"cpp\",\n\\\".cppobjdump\": \"cppobjdump\",\n\\\".cs\": \"csharp\",\n\\\".css\": \"css\",\n\\\".cw\": \"cw\",\n\\\".d-objdump\": \"d-objdump\",\n\\\".d\": \"d\",\n\\\".darcspatch\": \"darcspatch\",\n\\\".diff\": \"diff\",\n\\\".duby\": \"duby\",\n\\\".dylan\": \"dylan\",\n\\\".e\": \"e\",\n\\\".ebuild\": \"ebuild\",\n\\\".eclass\": \"eclass\",\n\\\".el\": \"lisp\",\n\\\".erb\": \"erb\",\n\\\".erl\": \"erlang\",\n\\\".f90\": \"f90\",\n\\\".factor\": \"factor\",\n\\\".feature\": \"feature\",\n\\\".fs\": \"fs\",\n\\\".fy\": \"fy\",\n\\\".go\": \"go\",\n\\\".groovy\": \"groovy\",\n\\\".gs\": \"gs\",\n\\\".gsp\": \"gsp\",\n\\\".haml\": \"haml\",\n\\\".hs\": \"haskell\",\n\\\".html\": \"html\",\n\\\".hx\": \"hx\",\n\\\".ik\": \"ik\",\n\\\".ino\": \"ino\",\n\\\".io\": \"io\",\n\\\".j\": \"j\",\n\\\".java\": \"java\",\n\\\".js\": \"javascript\",\n\\\".json\": \"json\",\n\\\".jsp\": \"jsp\",\n\\\".kid\": \"kid\",\n\\\".lhs\": \"lhs\",\n\\\".lisp\": \"lisp\",\n\\\".ll\": \"ll\",\n\\\".lua\": \"lua\",\n\\\".ly\": \"ly\",\n\\\".m\": \"objc\",\n\\\".mak\": \"mak\",\n\\\".man\": \"man\",\n\\\".mao\": \"mao\",\n\\\".matlab\": \"matlab\",\n\\\".md\": \"markdown\",\n\\\".minid\": \"minid\",\n\\\".ml\": \"ml\",\n\\\".moo\": \"moo\",\n\\\".mu\": \"mu\",\n\\\".mustache\": \"mustache\",\n\\\".mxt\": \"mxt\",\n\\\".myt\": \"myt\",\n\\\".n\": \"n\",\n\\\".nim\": \"nim\",\n\\\".nu\": \"nu\",\n\\\".numpy\": \"numpy\",\n\\\".objdump\": \"objdump\",\n\\\".ooc\": \"ooc\",\n\\\".parrot\": \"parrot\",\n\\\".pas\": \"pas\",\n\\\".pasm\": \"pasm\",\n\\\".pd\": \"pd\",\n\\\".phtml\": \"phtml\",\n\\\".pir\": \"pir\",\n\\\".pl\": \"perl\",\n\\\".po\": \"po\",\n\\\".py\": \"python\",\n\\\".pytb\": \"pytb\",\n\\\".pyx\": \"pyx\",\n\\\".r\": \"r\",\n\\\".raw\": \"raw\",\n\\\".rb\": \"ruby\",\n\\\".rhtml\": \"rhtml\",\n\\\".rkt\": \"rkt\",\n\\\".rs\": \"rs\",\n\\\".rst\": \"rst\",\n\\\".s\": \"s\",\n\\\".sass\": \"sass\",\n\\\".sc\": \"sc\",\n\\\".scala\": \"scala\",\n\\\".scm\": \"scheme\",\n\\\".scpt\": \"scpt\",\n\\\".scss\": \"scss\",\n\\\".self\": \"self\",\n\\\".sh\": \"sh\",\n\\\".sml\": \"sml\",\n\\\".sql\": \"sql\",\n\\\".st\": \"smalltalk\",\n\\\".tcl\": \"tcl\",\n\\\".tcsh\": \"tcsh\",\n\\\".tex\": \"tex\",\n\\\".textile\": \"textile\",\n\\\".tpl\": \"smarty\",\n\\\".twig\": \"twig\",\n\\\".txt\" : \"text\",\n\\\".v\": \"verilog\",\n\\\".vala\": \"vala\",\n\\\".vb\": \"vbnet\",\n\\\".vhd\": \"vhdl\",\n\\\".vim\": \"vim\",\n\\\".weechatlog\": \"weechatlog\",\n\\\".xml\": \"xml\",\n\\\".xq\": \"xquery\",\n\\\".xs\": \"xs\",\n\\\".yml\": \"yaml\",\n\\}\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim:set et:\n"
  },
  {
    "path": ".vim/bundle/Gist.vim/doc/gist-vim.txt",
    "content": "*Gist.vim* Vimscript for creating gists (http://gist.github.com)\n\nUsage                                          |gist-vim-usage| \nTips                                           |gist-vim-tips| \nRequirements                                   |gist-vim-requirements| \nLicense                                        |gist-vim-license| \nInstall                                        |gist-vim-install| \nSetup                                          |gist-vim-setup| \n\nThis is a vimscript for creating gists (http://gist.github.com) \n\nFor the latest version please see https://github.com/mattn/gist-vim.\n\n==============================================================================\nUSAGE                                                 *:Gist* *gist-vim-usage* \n\n- Post current buffer to gist, using default privacy option. >\n\n    :Gist\n<\n- Post selected text to gist, using defualt privacy option.\n  This applies to all permutations listed below (except multi). >\n\n    :'<,'>Gist\n<\n- Create a private gist. >\n\n    :Gist -p\n<\n- Create a public gist.\n  (Only relevant if you've set gists to be private by default.) >\n\n    :Gist -P\n<\n- Post whole text to gist as public.\n  This is only relevant if you've set gists to be private by default.\n>\n    :Gist -P\n<\n- Create a gist anonymously. >\n\n    :Gist -a\n<\n- Create a gist with all open buffers. >\n\n    :Gist -m\n<\n- Edit the gist (you need to have opened the gist buffer first).\n  You can update the gist with the {:w} command within the gist buffer. >\n\n    :Gist -e\n<\n- Edit the gist with name \"foo.js\" (you need to have opened the gist buffer\n  first). >\n\n    :Gist -e foo.js\n<\n- Post/Edit with the description \" (you need to have opened the gist buffer\n  first). >\n\n    :Gist -s something\n    :Gist -e -s something\n<\n- Delete the gist (you need to have opened the gist buffer first).\n  Password authentication is needed. >\n\n    :Gist -d\n<\n- Fork the gist (you need to have opened the gist buffer first).\n  Password authentication is needed. >\n\n    :Gist -f\n< \n- Star the gist (you need to have opened the gist buffer first).\n  Password authentication is needed.\n>\n    :Gist +1\n<\n- Unstar the gist (you need to have opened the gist buffer first).\n  Password authentication is needed.\n>\n    :Gist -1\n<\n- Get gist XXXXX. >\n\n    :Gist XXXXX\n<\n- Get gist XXXXX and add to clipboard. >\n\n    :Gist -c XXXXX\n<\n- List your public gists. >\n\n    :Gist -l\n<\n- List gists from user \"mattn\". >\n\n    :Gist -l mattn\n<\n- List everyone's gists. >\n\n    :Gist -la\n<\n- List gists from your starred gists.\n>\n    :Gist -ls\n<\n==============================================================================\nTIPS                                                           *gist-vim-tips*\n\nIf you set \"g:gist_clip_command\", gist.vim will copy the gist code with option\n\"-c\".\n\n  - Mac: >\n    let g:gist_clip_command = 'pbcopy'\n<\n  - Linux: >\n    let g:gist_clip_command = 'xclip -selection clipboard'\n<\n  - Others (cygwin?): >\n    let g:gist_clip_command = 'putclip'\n<\nIf you want to detect filetype from the filename: >\n\n    let g:gist_detect_filetype = 1\n<\nIf you want to open the browser after the post: >\n\n    let g:gist_open_browser_after_post = 1\n<\nIf you want to change the browser: >\n\n    let g:gist_browser_command = 'w3m %URL%'\n<\nor: >\n\n    let g:gist_browser_command = 'opera %URL% &'\n<\nOn windows, this should work with your user settings.\n\nIf you want to show your private gists with \":Gist -l\": >\n\n    let g:gist_show_privates = 1\n<\nIf you want to edit all files for gists containing more than one: >\n\n    let g:gist_get_multiplefile = 1\n<\n\nIf you want to update a gist, embed >\n\n    GistID: xxxxx\n>\nin your local file, then call >\n\n    :Gist\n>\n==============================================================================\nREQUIREMENTS                                           *gist-vim-requirements*\n\n  - curl command (http://curl.haxx.se/)\n  - webapi-vim (https://github.com/mattn/webapi-vim)\n  - and, if you want to use your git profile, the git command-line client.\n\n==============================================================================\nLICENSE                                                     *gist-vim-license*\n\n\n  Copyright 2010 by Yasuhiro Matsumoto\n  modification, are permitted provided that the following conditions are met:\n  \n  1. Redistributions of source code must retain the above copyright notice,\n     this list of conditions and the following disclaimer.\n  2. Redistributions in binary form must reproduce the above copyright notice,\n     this list of conditions and the following disclaimer in the documentation\n     and/or other materials provided with the distribution.\n  \n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n  REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n  OF THE POSSIBILITY OF SUCH DAMAGE.\n\n==============================================================================\nINSTALL                                                     *gist-vim-install*\n\nCopy gist.vim to your plugin directory.\n\ngist.vim will create a curl cookie-jar file in your runtimepath.\n\nrtp:\n  - plugin/gist.vim\n  - cookies/github\n\nIf you want to uninstall gist.vim, remember to also remove \"cookies/github\".\n\n==============================================================================\nSETUP                                                       *gist-vim-setup*\n\nThis plugin uses github API v3. Setting value is stored in `~/.gist.vim`.\ngist-vim have two ways to access APIs.\n\nFirst, you need to set your Github username in global git config:\n>\n    $ git config --global github.user Username\n<\nThen, gist.vim will ask for your password to create an authorization when you\nfirst use it.  The password is not stored and only the OAuth access token will\nbe kept for later use.  You can revoke the token at any time from the list of\n\"Authorized applications\" on Github's \"Account Settings\" page.\n(https://github.com/settings/applications)\n\nIf you happen to have your password already written in ~/.gitconfig like\nbelow:\n>\n    [github]\n        password = xxxxx\n<\nThen, add following into your ~/.vimrc\n>\n    let g:gist_use_password_in_gitconfig = 1\n<\nThis is not secure at all, so strongly discouraged.\n\n==============================================================================\nTHANKS                                                     *gist-vim-thanks*\n\n  AD7six\n  Bruno Bigras\n  c9s\n  Daniel Bretoi\n  Jeremy Michael Cantrell\n  Kien N\n  kongo2002\n  MATSUU Takuto\n  Matthew Weier O'Phinney\n  ornicar\n  Roland Schilter\n  steve\n  tyru\n  Will Gray\n  netj\n\n vim:tw=78:ts=8:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/Gist.vim/plugin/gist.vim",
    "content": "\"=============================================================================\n\" File: gist.vim\n\" Author: Yasuhiro Matsumoto <mattn.jp@gmail.com>\n\" WebPage: http://github.com/mattn/gist-vim\n\" License: BSD\n\" GetLatestVimScripts: 2423 1 :AutoInstall: gist.vim\n\" script type: plugin\n\nif &cp || (exists('g:loaded_gist_vim') && g:loaded_gist_vim)\n  finish\nendif\nlet g:loaded_gist_vim = 1\n\nif !exists('g:github_user') && !executable('git')\n  echohl ErrorMsg | echomsg \"Gist: require 'git' command\" | echohl None\n  finish\nendif\n\nif !executable('curl')\n  echohl ErrorMsg | echomsg \"Gist: require 'curl' command\" | echohl None\n  finish\nendif\n\ncommand! -nargs=? -range=% Gist :call gist#Gist(<count>, <line1>, <line2>, <f-args>)\n\n\" vim:set et:\n"
  },
  {
    "path": ".vim/bundle/Tabmerge/README",
    "content": "This is a mirror of http://www.vim.org/scripts/script.php?script_id=1961\n\nUsage:\n :Tabmerge [tab number] [top|bottom|left|right]\n\nThe tab number can be \"$\" for the last tab.  If the tab number isn't specified the tab to the right of the current tab is merged.  If there is no right tab, the left tab is merged.\n\nThe location specifies where in the current tab to merge the windows. Defaults to \"top\".\n\n"
  },
  {
    "path": ".vim/bundle/Tabmerge/plugin/Tabmerge.vim",
    "content": "\" Tabmerge -- Merge the windows in a tab with the current tab.\n\"\n\" Copyright July 17, 2007 Christian J. Robinson <infynity@onewest.net>\n\"\n\" Distributed under the terms of the Vim license.  See \":help license\".\n\n\" Usage:\n\"\n\" :Tabmerge [tab number] [top|bottom|left|right]\n\"\n\" The tab number can be \"$\" for the last tab.  If the tab number isn't\n\" specified the tab to the right of the current tab is merged.  If there\n\" is no right tab, the left tab is merged.\n\"\n\" The location specifies where in the current tab to merge the windows.\n\" Defaults to \"top\".\n\"\n\" Limitations:\n\"\n\" Vertical windows are merged as horizontal splits.  Doing otherwise would be\n\" nearly impossible.\n\nif v:version < 700\n\techoerr \"Tabmerge.vim requires at least Vim version 7\"\n\tfinish\nendif\n\ncommand! -nargs=* Tabmerge call Tabmerge(<f-args>)\n\nfunction! Tabmerge(...)  \" {{{1\n\tif a:0 > 2\n\t\techohl ErrorMsg\n\t\techo \"Too many arguments\"\n\t\techohl None\n\t\treturn\n\telseif a:0 == 2\n\t\tlet tabnr = a:1\n\t\tlet where = a:2\n\telseif a:0 == 1\n\t\tif a:1 =~ '^\\d\\+$' || a:1 == '$'\n\t\t\tlet tabnr = a:1\n\t\telse\n\t\t\tlet where = a:1\n\t\tendif\n\tendif\n\n\tif !exists('l:where')\n\t\tlet where = 'top'\n\tendif\n\n\tif !exists('l:tabnr')\n\t\tif type(tabpagebuflist(tabpagenr() + 1)) == 3\n\t\t\tlet tabnr = tabpagenr() + 1\n\t\telseif type(tabpagebuflist(tabpagenr() - 1)) == 3\n\t\t\tlet tabnr = tabpagenr() - 1\n\t\telse\n\t\t\techohl ErrorMsg\n\t\t\techo \"Already only one tab\"\n\t\t\techohl None\n\t\t\treturn\n\t\tendif\n\tendif\n\n\tif tabnr == '$'\n\t\tlet tabnr = tabpagenr(tabnr)\n\telse\n\t\tlet tabnr = tabnr\n\tendif\n\n\tlet tabwindows = tabpagebuflist(tabnr)\n\n\tif type(tabwindows) == 0 && tabwindows == 0\n\t\techohl ErrorMsg\n\t\techo \"No such tab number: \" . tabnr\n\t\techohl None\n\t\treturn\n\telseif tabnr == tabpagenr()\n\t\techohl ErrorMsg\n\t\techo \"Can't merge with the current tab\"\n\t\techohl None\n\t\treturn\n\tendif\n\n\tif where =~? '^t\\(op\\)\\?$'\n\t\tlet where = 'topleft'\n\telseif where =~? '^b\\(ot\\(tom\\)\\?\\)\\?$'\n\t\tlet where = 'botright'\n\telseif where =~? '^l\\(eft\\)\\?$'\n\t\tlet where = 'leftabove vertical'\n\telseif where =~? '^r\\(ight\\)\\?$'\n\t\tlet where = 'rightbelow vertical'\n\telse\n\t\techohl ErrorMsg\n\t\techo \"Invalid location: \" . a:2\n\t\techohl None\n\t\treturn\n\tendif\n\n\tlet save_switchbuf = &switchbuf\n\tlet &switchbuf = ''\n\n\tif where == 'top'\n\t\tlet tabwindows = reverse(tabwindows)\n\tendif\n\n\tfor buf in tabwindows\n\t\texe where . ' sbuffer ' . buf\n\tendfor\n\n\texe 'tabclose ' . tabnr\n\n\tlet &switchbuf = save_switchbuf\nendfunction\n\n\" vim:fdm=marker:fdc=2:fdl=1:\n"
  },
  {
    "path": ".vim/bundle/ZoomWin/autoload/ZoomWin.vim",
    "content": "\" ZoomWin:\tBrief-like ability to zoom into/out-of a window\n\" Author:\tCharles Campbell\n\"\t\t\toriginal version by Ron Aaron\n\" Date:\t\tMar 09, 2014 \n\" Version:\t25n\tASTRO-ONLY\n\" History: see :help zoomwin-history {{{1\n\" GetLatestVimScripts: 508 1 :AutoInstall: ZoomWin.vim\n\n\" ---------------------------------------------------------------------\n\" Load Once: {{{1\nif &cp || exists(\"g:loaded_ZoomWin\")\n finish\nendif\nif v:version < 702\n echohl WarningMsg\n echo \"***warning*** this version of ZoomWin needs vim 7.2\"\n echohl Normal\n finish\nendif\nlet s:keepcpo        = &cpo\nlet g:loaded_ZoomWin = \"v25n\"\nif !exists(\"g:zoomwin_localoptlist\")\n let s:localoptlist   = [\"ai\",\"ar\",\"bh\",\"bin\",\"bl\",\"bomb\",\"bt\",\"cfu\",\"ci\",\"cin\",\"cink\",\"cino\",\"cinw\",\"cms\",\"com\",\"cpt\",\"diff\",\"efm\",\"eol\",\"ep\",\"et\",\"fenc\",\"fex\",\"ff\",\"flp\",\"fo\",\"ft\",\"gp\",\"imi\",\"ims\",\"inde\",\"inex\",\"indk\",\"inf\",\"isk\",\"key\",\"kmp\",\"lisp\",\"mps\",\"ml\",\"ma\",\"mod\",\"nf\",\"ofu\",\"oft\",\"pi\",\"qe\",\"ro\",\"sw\",\"sn\",\"si\",\"sts\",\"spc\",\"spf\",\"spl\",\"sua\",\"swf\",\"smc\",\"syn\",\"ts\",\"tx\",\"tw\",\"udf\",\"wfh\",\"wfw\",\"wm\"]\nelse\n let s:localoptlist   = g:zoomwin_localoptlist\nendif\nset cpo&vim\n\"DechoTabOn\n\n\" =====================================================================\n\"  Functions: {{{1\n\n\" ---------------------------------------------------------------------\n\" ZoomWin#ZoomWin: toggles between a single-window and a multi-window layout {{{2\n\"          The original version was by Ron Aaron.\nfun! ZoomWin#ZoomWin()\n\"  let g:decho_hide= 1\t\t\"Decho\n  let lzkeep = &lz\n  set lz\n\"  call Dfunc(\"ZoomWin#ZoomWin() winbufnr(2)=\".winbufnr(2))\n\n  \" if the vim doesn't have +mksession, only a partial zoom is available {{{3\n  if !has(\"mksession\")\n   if !exists(\"s:partialzoom\")\n    echomsg \"missing the +mksession feature; only a partial zoom is available\"\n\tlet s:partialzoom= 0\n   endif\n   if v:version < 630\n   \techoerr \"***sorry*** you need an updated vim, preferably with +mksession\"\n   elseif s:partialzoom\n   \t\" partial zoom out\n\tlet s:partialzoom= 0\n\texe s:winrestore\n   else\n   \t\" partial zoom in\n\tlet s:partialzoom= 1\n\tlet s:winrestore = winrestcmd()\n\tres\n   endif\n   let &lz = lzkeep\n\"   call Dret(\"ZoomWin#ZoomWin : partialzoom=\".s:partialzoom)\n   return\n  endif\n\n  \" Close certain windows and save user settings {{{3\n  call s:ZoomWinPreserve(0)\n  call s:SaveUserSettings()\n\n  if winbufnr(2) == -1\n    \" there's only one window - restore to multiple-windows mode (zoom out) {{{3\n\"\tcall Decho(\"there's only one window - restore to multiple windows\")\n\n    if exists(\"s:sessionfile\") && filereadable(s:sessionfile)\n\t  \" save position in current one-window-only\n\"\t  call Decho(\"save position in current one-window-only in sponly  (s:sessionfile<\".s:sessionfile.\">)\")\n      let sponly     = s:SavePosn(0)\n      let s:origline = line(\".\")\n      let s:origcol  = virtcol(\".\")\n\t  let s:swv      = deepcopy(getwinvar(winnr(),\"\"),1)\n\t  sil! unlet key value\n\t  for [key,value] in items(s:swv)\n\t   exe \"sil! unlet w:\".key\n\t   sil! unlet key value\n\t  endfor\n\n      \" source session file to restore window layout\n\t  let ei_keep = &ei\n\t  set ei=all noswf bh=hide\n\t  exe 'sil! so '.fnameescape(s:sessionfile)\n      let v:this_session= s:sesskeep\n\t  let winrestore = winrestcmd()\n\t  \" restore any and all window variables\n\t  call s:RestoreWinVars()\n\n      if exists(\"s:savedposn1\")\n        \" restore windows' positioning and buffers\n\"\t\tcall Decho(\"restore windows, positions, buffers\")\n\t\tnoautocmd windo call s:RestorePosn(s:savedposn{winnr()})|unlet s:savedposn{winnr()}\n        call s:GotoWinNum(s:winkeep)\n\t\texecute winrestore\n        unlet s:winkeep\n      endif\n\n\t  if exists(\"s:swv\")\n\t   \" restore window variables which possibly were modified while in one-window mode\n       for [key,value] in items(s:swv)\n\t\tsil! call setwinvar(winnr(),key,value)\n\t\tsil! unlet key value\n\t   endfor\n\t  endif\n\n\t  if line(\".\") != s:origline || virtcol(\".\") != s:origcol\n\t   \" If the cursor hasn't moved from the original position,\n\t   \" then let the position remain what it was in the original\n\t   \" multi-window layout.\n\"\t   call Decho(\"restore position using sponly\")\n       call s:RestorePosn(sponly)\n\t  endif\n\n\t  \" delete session file and variable holding its name\n\"\t  call Decho(\"delete session file<\".s:sessionfile.\">\")\n\"      call delete(s:sessionfile)\n      unlet s:sessionfile\n\t  let &ei  = ei_keep\n    endif\n\n\t\" I don't know why -- but netrw-generated windows end up as [Scratch] even though the bufname is correct.\n\t\" Following code fixes this.  Without the if..[Scratch] test, though, when one attempts to write a file\n\t\" one gets an E13.  Thus, only [Scratch] windows will be affected by this windo command.\n\tlet curwin= winnr()\n\tlet winrestore = winrestcmd()\n\tnoautocmd windo if bufname(winbufnr(winnr())) == '[Scratch]'|exe \"sil! file \".fnameescape(bufname(winbufnr(winnr())))|endif\n\texe curwin.\"wincmd w\"\n\n\t\" Restore local window settings\n\tcall s:RestoreWinSettings()\n\texecute winrestore\n\n\t\" zoomwinstate used by g:ZoomWin_funcref()\n\tlet zoomwinstate= 0\n\n   else \" there's more than one window - go to only-one-window mode (zoom in){{{3\n\"\tcall Decho(\"there's multiple windows - goto one-window-only\")\n\n    let s:winkeep    = winnr()\n    let s:sesskeep   = v:this_session\n\n\t\" doesn't work with the command line window (normal mode q:)\n \tif &bt == \"nofile\" && expand(\"%\") == (v:version < 702 ? 'command-line' : '[Command Line]')\n\t echoerr \"***error*** ZoomWin#ZoomWin doesn't work with the \".expand(\"%\").\" window\"\n     let &lz= lzkeep\n\"     call Dret(\"ZoomWin#ZoomWin : \".expand('%').\" window error\")\n\t return\n\tendif\n\n\t\" disable all events (autocmds)\n\"\tcall Decho(\"disable events\")\n    let ei_keep= &ei\n\tset ei=all\n\tlet winrestore = winrestcmd()\n\n\t\" Save local window settings\n\tcall s:SaveWinSettings()\n\n\t\" save all window variables\n\tcall s:SaveWinVars()\n\n    \" save window positioning commands\n\"\tcall Decho(\"save window positioning commands\")\n\tnoautocmd windo let s:savedposn{winnr()}= s:SavePosn(1)\n    call s:GotoWinNum(s:winkeep)\n\texecute winrestore\n\n    \" set up name of session file\n    let s:sessionfile= tempname()\n\"\tcall Decho(\"s:sessionfile<\".s:sessionfile.\">\")\n\n    \" save session\n\"\tcall Decho(\"save session\")\n    let ssop_keep = &ssop\n\tlet &ssop     = 'blank,help,winsize,folds,globals,localoptions,options'\n\texe 'mksession! '.fnameescape(s:sessionfile)\n\tlet keepyy= @@\n\tlet keepy0= @0\n\tlet keepy1= @1\n\tlet keepy2= @2\n\tlet keepy3= @3\n\tlet keepy4= @4\n\tlet keepy5= @5\n\tlet keepy6= @6\n\tlet keepy7= @7\n\tlet keepy8= @8\n\tlet keepy9= @9\n    set lz ei=all bh=\n\tif v:version >= 700\n\t let curwin = winnr()\n\n\t try\n\t  exe \"keepalt keepmarks new! \".fnameescape(s:sessionfile)\n\t catch /^Vim\\%((\\a\\+)\\)\\=:E/\n\t  let seswin = -1\n\t  windo if winheight(winnr()) > 1 | let seswin= winnr() | endif\n\t  if seswin < 0\n\t   echoerr \"Too many windows (not enough room)\"\n       sil! call delete(s:sessionfile)\n       unlet s:sessionfile\n       let &lz= lzkeep\n\"       call Dret(\"ZoomWin#ZoomWin : too many windows\")\n       return\n\t  endif\n\t  exe seswin.\"wincmd w\"\n\t  exe \"keepalt keepmarks new! \".fnameescape(s:sessionfile)\n\t endtry\n\t \" modify the session (so that it merely restores window layout)\n     sil! keepjumps keepmarks v/wincmd\\|split\\|resize/d\n\t \" save modified session\n\t \" wipe out session window and buffer\n\t \" restore cursor to the window that was current before editing the session file\n     keepalt w!\n     keepalt bw!\n\t exe curwin.\"wincmd w\"\n\telse\n\t exe \"new! \".fnameescape(s:sessionfile)\n     v/wincmd\\|split\\|resize/d\n     w!\n     bw!\n    endif\n\tlet @@= keepyy\n\tlet @0= keepy0\n\tlet @1= keepy1\n\tlet @2= keepy2\n\tlet @3= keepy3\n\tlet @4= keepy4\n\tlet @5= keepy5\n\tlet @6= keepy6\n\tlet @7= keepy7\n\tlet @8= keepy8\n\tlet @9= keepy9\n    call histdel('search', -1)\n    let @/ = histget('search', -1)\n\n    \" restore user's session options and restore event handling\n\"\tcall Decho(\"restore user session options and event handling\")\n    set nolz\n    let &ssop = ssop_keep\n\tlet curwin= winnr()\n    sil! only!\n    let &ei   = ei_keep\n    echomsg expand(\"%\")\n\tcall s:RestoreOneWinSettings(curwin)\n\n\t\" zoomwinstate used by g:ZoomWin_funcref()\n\tlet zoomwinstate= 1\n  endif\n\n  \" restore user option settings {{{3\n  call s:RestoreUserSettings()\n\n  \" Re-open certain windows {{{3\n  call s:ZoomWinPreserve(1)\n  \n  \" call user's optional funcref (callback) functions\n  if exists(\"g:ZoomWin_funcref\")\n   if type(g:ZoomWin_funcref) == 2\n\tcall g:ZoomWin_funcref(zoomwinstate)\n   elseif type(g:ZoomWin_funcref) == 3\n    for Fncref in g:ZoomWin_funcref\n     if type(Fncref) == 2\n\t  call Fncref(zoomwinstate)\n     endif\n    endfor\n   endif\n  endif\n\n  let &lz= lzkeep\n\"  call Dret(\"ZoomWin#ZoomWin\")\nendfun\n\n\" ---------------------------------------------------------------------\n\" SavePosn: this function sets up a savedposn variable that {{{2\n\"          has the commands necessary to restore the view\n\"          of the current window.\nfun! s:SavePosn(savewinhoriz)\n\"  call Dfunc(\"SavePosn(savewinhoriz=\".a:savewinhoriz.\") file<\".expand(\"%\").\">\")\n  let swline = line(\".\")\n  if swline == 1 && getline(1) == \"\"\n   \" empty buffer\n   let savedposn= \"silent b \".winbufnr(0)\n\"   call Dret(\"SavePosn savedposn<\".savedposn.\">\")\n   return savedposn\n  endif\n  let swcol = col(\".\")\n  if swcol >= col(\"$\")\n   let swcol= swcol + virtcol(\".\") - virtcol(\"$\")  \" adjust for virtual edit (cursor past end-of-line)\n  endif\n  let swwline   = winline()-1\n  let swwcol    = virtcol(\".\") - wincol()\n\"  call Decho(\"swline #\".swline)\n\"  call Decho(\"swcol  #\".swcol)\n\"  call Decho(\"swwline#\".swwline)\n\"  call Decho(\"swwcol #\".swwcol)\n\n  let savedposn = \"sil! b \".winbufnr(0)\n  let savedposn = savedposn.\"|\".swline\n  let savedposn = savedposn.\"|sil! norm! 0z\\<cr>\"\n  if swwline > 0\n   let savedposn= savedposn.\":sil! norm! \".swwline.\"\\<c-y>\\<cr>\"\n  endif\n\n  if a:savewinhoriz\n   if swwcol > 0\n    let savedposn= savedposn.\":sil! norm! 0\".swwcol.\"zl\\<cr>\"\n   endif\n   let savedposn= savedposn.\":sil! call cursor(\".swline.\",\".swcol.\")\\<cr>\"\n\n   \" handle certain special settings for the multi-window savedposn call\n   \"   bufhidden buftype buflisted\n   let settings= \"\"\n   if &bh != \"\"\n\"\tcall Decho(\"special handling: changing buf#\".bufnr(\"%\").\"'s bh=\".&bh.\" to hide\")\n   \tlet settings=\"bh=\".&bh\n\tsetl bh=hide\n   endif\n   if !&bl\n\"\tcall Decho(\"special handling: changing buf#\".bufnr(\"%\").\"'s bl=\".&bl.\" to bl\")\n   \tlet settings= settings.\" nobl\"\n\tsetl bl\n   endif\n   if &bt != \"\"\n\"\tcall Decho(\"special handling: changing buf#\".bufnr(\"%\").\"'s bt=\".&bt.' to \"\"')\n   \tlet settings= settings.\" bt=\".&bt\n\tsetl bt=\n   endif\n   if settings != \"\"\n   \tlet savedposn= savedposn.\":setl \".settings.\"\\<cr>\"\n   endif\n\n  else\n   let savedposn= savedposn.\":sil! call cursor(\".swline.\",\".swcol.\")\\<cr>\"\n  endif\n\"  call Dret(\"SavePosn savedposn<\".savedposn.\"> : buf#\".bufnr(\"%\").\" bh=\".&bh.\" bl=\".&bl.\" bt=\".&bt)\n  return savedposn\nendfun\n\n\" ---------------------------------------------------------------------\n\" s:RestorePosn: this function restores noname and scratch windows {{{2\nfun! s:RestorePosn(savedposn)\n\"  call Dfunc(\"RestorePosn(savedposn<\".a:savedposn.\">) win#\".winnr().\" scb=\".&scb)\n  if &scb\n   setl noscb\n\"   try \" Decho\n    exe a:savedposn\n\"   catch /^Vim\\%((\\a\\+)\\)\\=:E/   \" Decho\n\"\tcall Decho(\"error occurred\") \" Decho\n\"   endtry \" Decho\n   setl scb\n  else\n\"   try \" Decho\n    exe a:savedposn\n\"   catch /^Vim\\%((\\a\\+)\\)\\=:E/   \" Decho\n\"\tcall Decho(\"error occurred\") \" Decho\n\"   endtry                        \" Decho\n  endif\n\"  call Dret(\"RestorePosn\")\nendfun\n\n\" ---------------------------------------------------------------------\n\" CleanupSessionFile: if you exit Vim before cleaning up the {{{2\n\"                     supposed-to-be temporary session file\nfun! ZoomWin#CleanupSessionFile()\n\"  call Dfunc(\"ZoomWin#CleanupSessionFile()\")\n  if exists(\"s:sessionfile\") && filereadable(s:sessionfile)\n\"   call Decho(\"sessionfile exists and is readable; deleting it\")\n   sil! call delete(s:sessionfile)\n   unlet s:sessionfile\n  endif\n\"  call Dret(\"ZoomWin#CleanupSessionFile\")\nendfun\n\n\" ---------------------------------------------------------------------\n\" GotoWinNum: this function puts cursor into specified window {{{2\nfun! s:GotoWinNum(winnum)\n\"  call Dfunc(\"GotoWinNum(winnum=\".a:winnum.\") winnr=\".winnr())\n  if a:winnum != winnr()\n   exe a:winnum.\"wincmd w\"\n  endif\n\"  call Dret(\"GotoWinNum\")\nendfun\n\n\n\" ---------------------------------------------------------------------\n\" ZoomWinPreserve:  This function, largely written by David Fishburn, {{{2\n\"   allows ZoomWin to \"preserve\" certain windows:\n\"\n\"   \tTagList, by Yegappan Lakshmanan\n\"   \t  http://vim.sourceforge.net/scripts/script.php?script_id=273\n\"\n\"   \tWinManager, by Srinath Avadhanula\n\"   \t  http://vim.sourceforge.net/scripts/script.php?script_id=95\n\"\n\"  It does so by closing the associated window upon entry to ZoomWin\n\"  and re-opening it upon exit by using commands provided by the\n\"  utilities themselves.\nfun! s:ZoomWinPreserve(open)\n\"  call Dfunc(\"ZoomWinPreserve(open=\".a:open.\")\")\n\n  if a:open == 0\n\n   \" Close Taglist\n   if exists('g:zoomwin_preserve_taglist') && exists('g:loaded_taglist')\n       \" If taglist window is open then close it.\n       let s:taglist_winnum = bufwinnr(g:TagList_title)\n       if s:taglist_winnum != -1\n           \" Close the window\n           exec \"sil! Tlist\"\n       endif\n   endif\n\n   \" Close Winmanager\n   if exists('g:zoomwin_preserve_winmanager') && exists('g:loaded_winmanager')\n       \" If the winmanager window is open then close it.\n       let s:is_winmgr_vis = IsWinManagerVisible()\n       if s:is_winmgr_vis == 1\n           exec \"WMClose\"\n       endif\n   endif\n\n  else\n\n   \" Re-open Taglist\n   if exists('g:zoomwin_preserve_taglist') && exists('g:loaded_taglist')\n       \" If taglist window was open, open it again\n       if s:taglist_winnum != -1\n           exec \"sil! Tlist\"\n       endif\n   endif\n\n   \" Re-Open Winmanager\n   if exists('g:zoomwin_preserve_winmanager') && exists('g:loaded_winmanager')\n       \" If the winmanager window is open then close it.\n       if s:is_winmgr_vis == 1\n           exec \"WManager\"\n       endif\n   endif\n  endif\n\n\"  call Dret(\"ZoomWinPreserve\")\nendfun\n\n\" ---------------------------------------------------------------------\n\" s:SaveWinVars: saves a copy of all window-variables into the script variable s:swv_#, {{{2\n\"                where # is the current window number, for all windows.\nfun! s:SaveWinVars()\n\"  call Dfunc(\"s:SaveWinVars()\")\n  noautocmd windo let s:swv_{winnr()}= deepcopy(getwinvar(winnr(),\"\"),1)|let s:swvmatches_{winnr()}= getmatches()\n\"  call Dret(\"s:SaveWinVars\")\nendfun\n\n\" ---------------------------------------------------------------------\n\" s:RestoreWinVars: restores window variables for all windows {{{2\nfun! s:RestoreWinVars()\n\"  call Dfunc(\"s:RestoreWinVars()\")\n\"  windo call Decho(string(s:swv_{winnr()}))\n  noautocmd windo if exists(\"s:swv_{winnr()}\")     |sil! unlet s:key s:value     |for [s:key,s:value] in items(s:swv_{winnr()})|call setwinvar(winnr(),s:key,s:value)|exe \"sil! unlet s:key s:value\"|endfor|call setmatches(s:swvmatches_{winnr()})|unlet s:swvmatches_{winnr()}|unlet s:swv_{winnr()}|endif\n\"  call Dret(\"s:RestoreWinVars\")\nendfun\n\n\" ---------------------------------------------------------------------\n\" s:SaveUserSettings: save user options, set to zoomwin-safe options.  {{{2\n\"                     Force window minimum height/width to be >= 1\nfun! s:SaveUserSettings()\n\"  call Dfunc(\"s:SaveUserSettings()\")\n\n  let s:keep_hidden = &hidden\n  let s:keep_shm    = &shm\n  let s:keep_siso   = &siso\n  let s:keep_so     = &so\n  let s:keep_ss     = &ss\n  let s:keep_wfh    = &wfh\n  let s:keep_write  = &write\n  if has(\"clipboard\")\n\"   call Decho(\"@* save    before: s:keep_star=\".@*)\n   let s:keep_star   = @*\n\"   call Decho(\"@* save    after : s:keep_star=\".@*)\n  endif\n  let s:keep_swf    = &swf\n\n  if v:version < 603\n   if &wmh == 0 || &wmw == 0\n    let s:keep_wmh = &wmh\n    let s:keep_wmw = &wmw\n    sil! set wmh=1 wmw=1\n   endif\n  endif\n  set hidden write nowfh so=0 siso=0 ss=0 shm+=A\n\"  call Dret(\"s:SaveUserSettings\")\nendfun\n\n\" ---------------------------------------------------------------------\n\" s:RestoreUserSettings: restore user option settings {{{2\nfun! s:RestoreUserSettings()\n\"  call Dfunc(\"s:RestoreUserSettings()\")\n\"  call Decho(\"restore user option settings\")\n  let &hidden= s:keep_hidden\n  let &shm   = s:keep_shm\n  let &siso  = s:keep_siso\n  let &so    = s:keep_so\n  let &ss    = s:keep_ss\n  let &wfh   = s:keep_wfh\n  let &write = s:keep_write\n  if has(\"clipboard\") && exists(\"s:keep_star\")\n\"   call Decho( \"@* restore before: s:keep_star=\".@*)\n   let @*     = s:keep_star\n\"   call Decho(\"@* restore after : s:keep_star=\".@*)\n  endif\n  let &swf   = s:keep_swf\n  if v:version < 603\n   if exists(\"s:keep_wmw\")\n    let &wmh= s:keep_wmh\n    let &wmw= s:keep_wmw\n   endif\n  endif\n\"  call Dret(\"s:RestoreUserSettings\")\nendfun\n\n\" ---------------------------------------------------------------------\n\" s:SaveWinSettings: saves all windows' local settings {{{2\nfun! s:SaveWinSettings()\n\"  call Dfunc(\"s:SaveWinSettings() curwin#\".winnr())\n  if exists(\"s:localoptlist\") && !empty(s:localoptlist)\n   let curwin= winnr()\n   for localopt in s:localoptlist\n    noautocmd windo exe \"let s:swv_\".localopt.\"_{winnr()}= &\".localopt\n   endfor\n   exe \"noautocmd \".curwin.\"wincmd w\"\n  endif\n\"  call Dret(\"s:SaveWinSettings : &bt=\".&bt.\" s:swv_bt_\".curwin.\"=\".s:swv_bt_{curwin})\nendfun\n\n\" ---------------------------------------------------------------------\n\" s:RestoreWinSettings: restores all windows' local settings {{{2\nfun! s:RestoreWinSettings()\n\"  call Dfunc(\"s:RestoreWinSettings() bh=\".&bh.\" bt=\".&bt.\" bl=\".&bl)\n  if exists(\"s:localoptlist\") && !empty(s:localoptlist)\n   let curwin= winnr()\n   for localopt in s:localoptlist\n    exe 'noautocmd windo if exists(\"s:swv_'.localopt.'_{winnr()}\")|if &'.localopt.'!=# s:swv_'.localopt.'_{winnr()}|let &'.localopt.'= s:swv_'.localopt.'_{winnr()}|endif|unlet s:swv_'.localopt.'_{winnr()}|endif'\n   endfor\n   exe \"noautocmd \".curwin.\"wincmd w\"\n  endif\n\"  call Dret(\"s:RestoreWinSettings : bh=\".&bh.\" bt=\".&bt.\" bl=\".&bl)\nendfun\n\n\" ---------------------------------------------------------------------\n\" s:RestoreOneWinSettings: assumes that s:SaveWinSettings() was called previously; this function restores the specified window's local settings {{{2\nfun! s:RestoreOneWinSettings(wnum)\n\"  call Dfunc(\"s:RestoreOneWinSettings(wnum=\".a:wnum.\") s:swv_bt_\".a:wnum.\"=\".s:swv_bt_{a:wnum}.\" bh=\".&bh.\" bt=\".&bt.\" bl=\".&bl)\n  if exists(\"s:localoptlist\") && !empty(s:localoptlist)\n   for localopt in s:localoptlist\n\"    call Decho('windo if exists(\"s:swv_'.localopt.'_{a:wnum}\")|let &'.localopt.'= s:swv_'.localopt.'_{a:wnum}|unlet s:swv_'.localopt.'_{a:wnum}|endif')\n    exe 'noautocmd windo if exists(\"s:swv_'.localopt.'_{a:wnum}\")|if &'.localopt.'!=# s:swv_'.localopt.'_{a:wnum}|let &'.localopt.'= s:swv_'.localopt.'_{a:wnum}|endif|unlet s:swv_'.localopt.'_{a:wnum}|endif'\n   endfor\n  endif\n\"  call Dret(\"s:RestoreOneWinSettings : bh=\".&bh.\" bt=\".&bt.\" bl=\".&bl)\nendfun\n\n\" =====================================================================\n\"  Restore: {{{1\nlet &cpo= s:keepcpo\nunlet s:keepcpo\n\n\" ---------------------------------------------------------------------\n\"  Modelines: {{{1\n\" vim: ts=4 fdm=marker\n"
  },
  {
    "path": ".vim/bundle/ZoomWin/doc/ZoomWin.txt",
    "content": "*ZoomWin.txt*\tZoom into/out-of a window\t\tMar 09, 2014\nAuthors: Charles E. Campbell\t\t\t\t*zoomwin*\n         Ron Aaron\nCopyright: (c) 2004-2014 by Charles E. Campbell\t\t*zoomwin-copyright*\n           The VIM LICENSE applies to ZoomWin.vim and ZoomWin.txt\n           (see |copyright|) except use \"ZoomWin\" instead of \"Vim\"\n\t   No warranty, express or implied.  Use At-Your-Own-Risk.\n\n==============================================================================\n1. Usage\t\t\t\t\t\t*zoomwin-usage*\n\n   :call ZoomWin()\n   :ZoomWin\n   <c-w>o\n\n   Either of the two commands or the normal mode <c-w>o will toggle between\n\t* selecting the current window for display as the only window or\n\t* restoring the original multiple-window view.\n\n\n==============================================================================\n2. Setup\t\t\t\t\t\t*zoomwin-setup*\n\n   ZoomWin comes as a vimball; to install it, simply >\n\n       vim ZoomWin.vba.gz\n       :so %\n       :q\n<\n   Your .vimrc needs to have, at least: >\n\n   \tset nocp\n\tfiletype plugin on\n<\n   (see |'nocp'|, |:filetype|, and |filetype-plugin-on| for an explanation of\n   these commands)\n\n==============================================================================\n3. Options\t\t\t\t\t\t*zoomwin-options*\n\n   *g:ZoomWin_funcref* : this variable is used as a function reference\n\t\t\t (|Funcref|) or as a |List| of function references.\n\t\t\t It is called with a single argument: >\n\t\t\t   0 : multi-window display; not zoomed in\n\t\t\t   1 : single-window display; zoomed in\n<\t\t\t What this does is permits ZoomWin users to have a\n\t\t\t function called whenever ZoomWin changes state.\n\t\t\t As an example, consider having the status line\n\t\t\t indicate whether one is ZoomWin'd in or not: >\n\t\t\t    set stl=Normal\n\t\t\t    fun! ZWStatline(state)\n\t\t\t      if a:state\n\t\t\t       set stl=ZoomWin\n\t\t\t      else\n\t\t\t       set stl=Normal\n\t\t\t      endif\n\t\t\t    endfun\n\t\t\t    if !exists(\"g:ZoomWin_funcref\")\n\t\t\t     let g:ZoomWin_funcref= function(\"ZWStatline\")\n\t\t\t    endif\n<\t\t\t The function, ZWStatline(), is called by ZoomWin()\n\t\t\t every time it changes state.\n\n\t*g:zoomwin_localoptlist*\tspecify a set of windows options to be\n\t\t\t\tsaved and restored during zoom-in and zoom-out.\n\t\t\t\tIt may be empty.\n\t\t\t\tDefault:  >\n\t\t\t\tlet s:localoptlist   = [\n\t\t\t\t\\ \"ai\"  , \"ar\"  , \"bh\"  , \"bin\", \"bl\"  ,\n\t\t\t\t\\ \"bomb\", \"bt\"  , \"cfu\" , \"ci\" , \"cin\" ,\n\t\t\t\t\\ \"cink\", \"cino\", \"cinw\", \"cms\", \"com\" ,\n\t\t\t\t\\ \"cpt\" , \"efm\" , \"eol\" , \"ep\" , \"et\"  ,\n\t\t\t\t\\ \"fenc\", \"fex\" , \"ff\"  , \"flp\", \"fo\"  ,\n\t\t\t\t\\ \"ft\"  , \"gp\"  , \"imi\" , \"ims\", \"inde\",\n\t\t\t\t\\ \"inex\", \"indk\", \"inf\" , \"isk\", \"key\" ,\n\t\t\t\t\\ \"kmp\" , \"lisp\", \"mps\" , \"ml\" , \"ma\"  ,\n\t\t\t\t\\ \"mod\" , \"nf\"  , \"ofu\" , \"oft\", \"pi\"  ,\n\t\t\t\t\\ \"qe\"  , \"ro\"  , \"sw\"  , \"sn\" , \"si\"  ,\n\t\t\t\t\\ \"sts\" , \"spc\" , \"spf\" , \"spl\", \"sua\" ,\n\t\t\t\t\\ \"swf\" , \"smc\" , \"syn\" , \"ts\" , \"tx\"  ,\n\t\t\t\t\\ \"tw\"  , \"udf\" , \"wm\"]\n<\n\t*g:zoomwin_preserve_taglist*\topen and close a taglist window on\n\t                              zooms\n\n\t*g:zoomwin_preserve_winmanager*\topen and close winmanager a window on\n\t                              zooms\n\t\t\t\n\n==============================================================================\n4. History\t\t\t\t\t\t*zoomwin-history*\n\n\tv25\tJul 30, 2012\t: (Paul, google01239) ZoomWin wasn't saving the\n\t\t\t\t  local value of |'diff'|.  It has now been included\n\t\t\t\t  in the s:localoptlist (options which are local).\n\t\t\t\t* (Adam George) when clipboard=unnamed, ZoomWin\n\t\t\t\t  was overwriting the @* register.  Fixed.\n\t\tOct 16, 2012\t* (Marcin Szamotulski) reported that vim -o x y,\n\t\t\t\t  then zooming in and zooming back out resulted\n\t\t\t\t  in |:swapname| showing \"No swap file\".  Fixed.\n\t\tOct 31, 2012\t* (Adam George) reported that |E13| errors occurred\n\t\t\t\t* when one zoomed in, zoomed out, and then\n\t\t\t\t* attempted to write.  Fixed (due to [Scratch]\n\t\t\t\t* file renaming)\n\t\tJan 14, 2013\t* (Jorge Rodrigues) reported on errors in\n\t\t\t\t  RestoreUserSettings() associated with\n\t\t\t\t  saving and restoring the |'scrolloff'| setting.\n\t\t\t\t  ZoomWin now protects against that by testing\n\t\t\t\t  if the current vim supports |xterm-clipboard|.\n\t\tMar 13, 2013\t* (Ingo Karkat) provided patches for three\n\t\t\t\t  problems:\n\t\t\t\t  1) setting some options (like |'keymap'|) has\n\t\t\t\t  side effects; only restore an option if its\n\t\t\t\t  changed\n\t\t\t\t  2) |:windo| has side effect of changing the height\n\t\t\t\t  of every visited window from 0 to 1\n\t\t\t\t  3) matches are saved and restored (see\n\t\t\t\t |getmatches()| and |setmatches()|)\n\t\t\t\t* buffers with bh=wipe were being wiped out during\n\t\t\t\t  zoom in and out. Fixed (cec)\n\t\tJul 15, 2013\t* (Ingo Karkat) ZoomWin now works with |i_CTRL-O|,\n\t\t\t\t  removes an |E481| when a count is used with\n\t\t\t\t  ZoomWin, and removed a superfluous <script>\n\t\t\t\t  modifier to the mapping.\n\t\tNov 09, 2013\t* (Saad Malik) reported that ZoomWin+MiniBufExpl\n\t\t\t\t  caused the latter's window to expand after a\n\t\t\t\t  zoom-in/out.  techlivezheng provided a fix\n\t\t\t\t  to have s:localoptlist include |'wfh'| and\n\t\t\t\t  |'wfw'|.\n\t\tFeb 19, 2014\t* (Daniel Hahler) ZoomWin needs to save and\n\t\t\t\t  restore |'shm'|, setting it to shm+=A to\n\t\t\t\t  avoid \"ATTENTION\" messages when an existing\n\t\t\t\t  swap file is involved.\n\t\tMar 09, 2014\t* (Adam George) reported that the @* register\n\t\t\t\t  problem was still present with MacOS (see\n\t\t\t\t  Rodriguez, above).  Wrong clipboard test\n\t\t\t\t  was used; fixed.\n\tv24\tJan 29, 2009\t: |g:ZoomWin_funcref| supported\n\t\tMay 22, 2009\t* supports the saving and restoring of window\n\t\t\t\t  variables across zooms\n\t\tOct 11, 2009\t* The state wasn't being passed along to\n\t\t\t\t  g:ZoomWin_funcref as intended.  Fixed.\n\t\tJul 09, 2010\t* Put an exists() test into s:RestoreWinVars()\n\t\tJan 18, 2011\t* (reported by talek) bypass winfixheight option\n\t\tApr 06, 2011\t* Saves and restores local options for every window\n\tv23\tApr 24, 2008\t: when |'scrollbind'| was activated: when ZoomWin\n\t\t\t\t  attempted to restore multiple-windows, the cursor\n\t\t\t\t  position was incorrect.  Fixed.\n\t\tJan 02, 2009\t* included some more things in the session file\n\t\t\t\t* broke ZoomWin into an plugin + autoload pair\n\t\t\t\t* (Ingo Karkat) contributed a patch to retain the\n\t\t\t\t  the search pattern before zooming\n\t\t\t\t* (Ingo Karkat) contributed a patch to detect the\n\t\t\t\t  vim 7.2 name for the command line window\n\t\t\t\t* too many files (more than the screen rows)\n\t\t\t\t  caused restoration problems.\n\tv22\tApr 10, 2006\t: \"only\" was occasionally issuing an \"Already one\n\t\t\t\t  window\" message, which is now prevented\n\t\t\t\t* SavePosn() issued error message when handling an\n\t\t\t\t  empty buffer\n\t\t\t\t* saves yank registers and restores them on each\n\t\t\t\t  zoom/unzoom\n\tv21\tOct 12, 2004\t: v14 fixed a bug when wmw and/or wmv equal to 0;\n\t\t\t\t  v21 will invoke the patch only if the version <= 603.\n\t\t\t\t  For vim version 6.3 users, this fix allows more files\n\t\t\t\t  to be handled by ZoomWin.\n\t\tMay 10, 2005\t* When :version shows -mksession, and the vim version\n\t\t\t\t  is at least 6.3, ZoomWin will now do a partial zoom\n\tv20\tJul 26, 2004\t: bugfix - ZoomWin didn't always retain the\n\t\t\t\t  position in the former zoomed-in window after\n\t\t\t\t  the window layout was restored.  It was restoring\n\t\t\t\t  the position when the zoom-in occurred.\n\tv19\tMay 26, 2004\t: bugfix - winmanager has events firing that,\n\t\t\t\t  amongst other things, reset the bufhidden\n\t\t\t\t  option to delete for some windows while\n\t\t\t\t  ZoomWin worked.  ZoomWin now works\n\t\t\t\t  successfully with winmanager.\n\tv18\tMay 20, 2004\t: bugfix - didn't adversely affect anything, but\n\t\t\t\t  ZoomWin was deleting its session file twice.\n\t\t\t\t  * bugfix -- a multi-source file + minibufexplorer\n\t\t\t\t  + Taglist interaction bug -- minibufexplorer's\n\t\t\t\t  autocmd events were firing, generating a new\n\t\t\t\t  window while ZoomWin was attempting to restore\n\t\t\t\t  the display.  ZoomWin didn't have restoration\n\t\t\t\t  information for the new window and so reported\n\t\t\t\t  an error.  Events are now temporarily disabled\n\t\t\t\t  while ZoomWin is restoring the layout.\n\tv17\tMar 26, 2004\t: ZoomWin command installed.  Works nicely with\n\t\t\t\t  taglist:  vim +Tlist +ZoomWin filename\n\tv16\tDec 22, 2003\t: handles bufhidden and nobl windows (TagList support).\n\t\t\t\t  * Now also works with quickfix window (:copen) but\n\t\t\t\t  still not with |cmdline-window| (q:)\n\tv15\tDec 19, 2003\t: SavePosn()/RestorePosn() needed to be preceded\n\t\t\t\t  by s: to prevent clashes\n\tv14\tDec 18, 2003\t: works around a restoration-bug with mksession\n\t\t\t\t  when either wmw or wmh settings are zero\n\t\t\t\t  * Bwipes internal temporary buffers\n\t\t\t\t  * Known bugs: will not work with command-line\n\t\t\t\t  * Editing window (|cmdline-window|) nor the\n\t\t\t\t  quickfix window (|copen|).\n\tv13\tDec 18, 2003\t: Uses eventignore to prevent events/autocmds from\n\t\t\t\t  firing while changing the mksession results.\n\tv12\tDec 12, 2003\t: uses hidden and a minimalist mksession save\n\tv11\tOct 14, 2003\t: bug fix: apparently RestorePosn()'s variables,\n\t\t\t\t  which were b:, weren't always defined, so s:\n\t\t\t\t  ones are now used.\n\tv10\tSep 22, 2003\t: Bug fix: when a single window is showing, the user\n\t\t\t\t  moves the cursor, then <c-w>o used to restore\n\t\t\t\t  screen, the current cursor position wasn't retained\n\t\t\t\t  Restores v:this_session.\n\t\t\t\t  Bug fix: change a window, use <c-w>o, then write.\n\t\t\t\t  Was saving file only to temporary file instead of\n\t\t\t\t  actual file, but when the actual file was brought back,\n\t\t\t\t  the changes were lost.\n\tv9\tAug 15, 2003\t:  v8 managed to trash syntax highlighting on\n\t\t\t\t  reload, this one removes the eventignore\n\t\t\t\t  handling.  Will need more pondering...\n\tv8\tAug 14, 2003\t:  now handles not-modified but not filereadable\n\t\t\t\t  buffers, nowrite buffers uses eventignore to\n\t\t\t\t  bypass autocmd firing\n\tv7\tMay 23, 2003\t:  bugfix - GotoWinNum() didn't always get the\n\t\t\t\t  cursor into the correct window\n\tv6\tMar 25, 2003\t:  more cleanup included\n\tv5\tMar 14, 2003\t:  includes support for handling scratch buffers,\n\t\t\t\t  no-name buffer windows, and modified-buffer\n\t\t\t\t  windows.  All windows' contents will be saved to\n\t\t\t\t  temporary buffers\n\tv4\tDec 12, 2002\t:  Zak Beck contributed code to clean up temporary\n\t\t\t\t  session files if one leaves vim while zoomed-in\n\tv3\tDec 11, 2002\t:  plugin-ized\n\tv2\tNov 08, 2002\t:  A guaranteed-to-be-unique to this\n\t\t\t\t  session file is used for session information.\n\t\t\t\t  Modified but not yet saved files are made hidden\n\t\t\t\t  during zoom in.\n\tv1\tthe epoch\t:  Ron Aaron's original\n\nvim:tw=78:ts=8:ft=help\n"
  },
  {
    "path": ".vim/bundle/ZoomWin/plugin/ZoomWinPlugin.vim",
    "content": "\" ZoomWin:\tBrief-like ability to zoom into/out-of a window\n\" Author:\tCharles Campbell\n\"\t\t\toriginal version by Ron Aaron\n\" Date:\t\tMar 27, 2014\n\" Version:\t25n\tASTRO-ONLY\n\" History: see :help zoomwin-history {{{1\n\" GetLatestVimScripts: 508 1 :AutoInstall: ZoomWin.vim\n\n\" ---------------------------------------------------------------------\n\" Load Once: {{{1\nif &cp || exists(\"g:loaded_ZoomWinPlugin\")\n finish\nendif\nif v:version < 702\n echohl WarningMsg\n echo \"***warning*** this version of ZoomWin needs vim 7.2\"\n echohl Normal\n finish\nendif\nlet s:keepcpo              = &cpo\nlet g:loaded_ZoomWinPlugin = \"v25n\"\nset cpo&vim\n\"DechoTabOn\n\n\" ---------------------------------------------------------------------\n\"  Public Interface: {{{1\nif !hasmapto(\"<Plug>ZoomWin\")\n nmap <unique> <c-w>o  <Plug>ZoomWin\nendif\nnnoremap <silent> <Plug>ZoomWin :sil call ZoomWin#ZoomWin()<CR>\ncom! ZoomWin sil call ZoomWin#ZoomWin()\n\nau VimLeave * call ZoomWin#CleanupSessionFile()\n\n\" ---------------------------------------------------------------------\n\" ZoomWin: toggles between a single-window and a multi-window layout {{{1\n\"          The original version was by Ron Aaron.\n\"          This function provides compatibility with previous versions.\nfun! ZoomWin()\n  call ZoomWin#ZoomWin()\nendfun\n\n\" ---------------------------------------------------------------------\n\"  Restore: {{{1\nlet &cpo= s:keepcpo\nunlet s:keepcpo\n\" ---------------------------------------------------------------------\n\"  Modelines: {{{1\n\" vim: ts=4 fdm=marker\n"
  },
  {
    "path": ".vim/bundle/ack.vim/README.md",
    "content": "# ack.vim #\n\nThis plugin is a front for the Perl module\n[App::Ack](http://search.cpan.org/~petdance/ack/ack).  Ack can be used as a\nreplacement for 99% of the uses of _grep_.  This plugin will allow you to run\nack from vim, and shows the results in a split window.\n\nThe *Official Version* of this plugin is available at [vim.org](http://www.vim.org/scripts/script.php?script_id=2572).\n\n## Installation ##\n\n\n### Ack\n\nYou have to install [ack](http://betterthangrep.com/), of course.\n\nInstall on Debian / Ubuntu with:\n\n    sudo apt-get install ack-grep\n\nInstall on Fedora with:\n\n    su -l -c 'yum install ack'\n\nInstall on openSUSE with:\n\n    sudo zypper install ack\n\nInstall on Gentoo with:\n\n    sudo emerge ack\n\nInstall with Homebrew:\n\n    brew install ack\n\nInstall with MacPorts:\n\n    sudo port install p5-app-ack\n\nInstall with Gentoo Prefix:\n\n    emerge ack\n\nInstall on FreeBSD with:\n\n    cd /usr/ports/textproc/p5-ack/ && make install clean\n\nYou can specify a custom ack name and path in your .vimrc like so:\n\n    let g:ackprg=\"<custom-ack-path-goes-here> -H --nocolor --nogroup --column\"\n\nOtherwise, you are on your own.\n\n### The Plugin\n\nIf you have [Rake](http://rake.rubyforge.org/) installed, you can just run: `rake install`.\n\nOtherwise, the file ack.vim goes in ~/.vim/plugin, and the ack.txt file belongs in ~/.vim/doc.  Be sure to run\n\n    :helptags ~/.vim/doc\n\nafterwards.\n\n\n## Usage ##\n\n    :Ack [options] {pattern} [{directory}]\n\nSearch recursively in {directory} (which defaults to the current directory) for the {pattern}.\n\nFiles containing the search term will be listed in the split window, along with\nthe line number of the occurrence, once for each occurrence.  [Enter] on a line\nin this window will open the file, and place the cursor on the matching line.\n\nJust like where you use :grep, :grepadd, :lgrep, and :lgrepadd, you can use `:Ack`, `:AckAdd`, `:LAck`, and `:LAckAdd` respectively. (See `doc/ack.txt`, or install and `:h Ack` for more information.)\n\n**From the [ack docs](http://betterthangrep.com/)** (my favorite feature):\n\n    --type=TYPE, --type=noTYPE\n\n        Specify the types of files to include or exclude from a search. TYPE is a filetype, like perl or xml. --type=perl can also be specified as --perl, and --type=noperl can be done as --noperl.\n\n        If a file is of both type \"foo\" and \"bar\", specifying --foo and --nobar will exclude the file, because an exclusion takes precedence over an inclusion.\n\n        Type specifications can be repeated and are ORed together.\n\n        See ack --help=types for a list of valid types.\n\n### Gotchas ###\n\nSome characters have special meaning, and need to be escaped your search pattern. For instance, '#'. You have to escape it like this `:Ack '\\\\\\#define foo'` to search for `#define foo`. (From [blueyed in issue #5](https://github.com/mileszs/ack.vim/issues/5).)\n\n### Keyboard Shortcuts ###\n\nIn the quickfix window, you can use:\n\n    o    to open (same as enter)\n    go   to preview file (open but maintain focus on ack.vim results)\n    t    to open in new tab\n    T    to open in new tab silently\n    h    to open in horizontal split\n    H    to open in horizontal split silently\n    v    to open in vertical split\n    gv   to open in vertical split silently\n    q    to close the quickfix window\n\nThis Vim plugin is derived (and by derived, I mean copied, essentially) from\nAntoine Imbert's blog post [Ack and Vim\nIntegration](http://blog.ant0ine.com/typepad/2007/03/ack-and-vim-integration.html) (in\nparticular, the function at the bottom of the post).  I added a help file that\nprovides just enough reference to get you going.  I also highly recommend you\ncheck out the docs for the Perl script 'ack', for obvious reasons: [ack -\ngrep-like text finder](http://betterthangrep.com/).\n"
  },
  {
    "path": ".vim/bundle/ack.vim/Rakefile",
    "content": "# Added by Josh Nichols, a.k.a. technicalpickles\nrequire 'rake'\n\nfiles = ['doc/ack.txt', 'plugin/ack.vim']\n\ndesc 'Install plugin and documentation'\ntask :install do\n  vimfiles = if ENV['VIMFILES']\n               ENV['VIMFILES']\n             elsif RUBY_PLATFORM =~ /(win|w)32$/\n               File.expand_path(\"~/vimfiles\")\n             else\n               File.expand_path(\"~/.vim\")\n             end\n  files.each do |file|\n    target_file = File.join(vimfiles, file)\n    FileUtils.mkdir_p File.dirname(target_file)\n    FileUtils.cp file, target_file\n\n    puts \"  Copied #{file} to #{target_file}\"\n  end\n\nend\n"
  },
  {
    "path": ".vim/bundle/ack.vim/doc/ack.txt",
    "content": "*ack.txt*   Plugin that integrates ack with Vim\n\n==============================================================================\nAuthor:  Antoine Imbert <antoine.imbert+ackvim@gmail.com>         *ack-author*\nLicense: Same terms as Vim itself (see |license|)\n\n==============================================================================\nINTRODUCTION                                                             *ack*\n\nThis plugin is a front for the Perl module App::Ack.  Ack can be used as a\nreplacement for grep.  This plugin will allow you to run ack from vim, and\nshows the results in a split window.\n\n:Ack[!] [options] {pattern} [{directory}]                               *:Ack*\n\n    Search recursively in {directory} (which defaults to the current\n    directory) for the {pattern}.  Behaves just like the |:grep| command, but\n    will open the |Quickfix| window for you. If [!] is not given the first\n    error is jumped to.\n\n:AckAdd [options] {pattern} [{directory}]                            *:AckAdd*\n\n    Just like |:Ack|, but instead of making a new list, the matches are\n    appended to the current |quickfix| list.\n\n:AckFromSearch [{directory}]                                  *:AckFromSearch*\n\n    Just like |:Ack| but the pattern is from previous search.\n\n:LAck [options] {pattern} [{directory}]                                *:LAck*\n\n    Just like |:Ack| but instead of the |quickfix| list, matches are placed in\n    the current |location-list|.\n\n:LAckAdd [options] {pattern} [{directory}]                          *:LAckAdd*\n\n    Just like |:AckAdd| but instead of the |quickfix| list, matches are added\n    to the current |location-list|\n\n:AckFile [options] {pattern} [{directory}]                          *:AckFile*\n\n    Search recursively in {directory} (which defaults to the current\n    directory) for filenames matching the {pattern}.  Behaves just like the\n    |:grep| command, but will open the |Quickfix| window for you.\n\n:AckHelp[!] [options] {pattern}                                      *:AckHelp*\n\n    Search vim documentation files for the {pattern}.  Behaves just like the \n    |:Ack| command, but searches only vim documentation .txt files\n\n:LAckHelp [options] {pattern}                                        *:LAckHelp*\n\n    Just like |:AckHelp| but instead of the |quickfix| list, matches are placed\n    in the current |location-list|.\n\nFiles containing the search term will be listed in the split window, along\nwith the line number of the occurrence, once for each occurrence.  <Enter> on\na line in this window will open the file, and place the cursor on the matching\nline.\n\nSee http://betterthangrep.com/ for more information.\n\n==============================================================================\nMAPPINGS                                                        *ack-mappings*\n\nThe following keyboard shortcuts are available in the quickfix window:\n\no                   open file (same as enter).\n\ngo                  preview file (open but maintain focus on ack.vim results).\n\nt                   open in a new tab.\n\nT                   open in new tab silently.\n\nh                   open in horizontal split.\n\nH                  open in horizontal split silently.\n\nv                   open in vertical split.\n\ngv                  open in vertical split silently.\n\nq                   close the quickfix window.\n"
  },
  {
    "path": ".vim/bundle/ack.vim/plugin/ack.vim",
    "content": "\" NOTE: You must, of course, install the ack script\n\"       in your path.\n\" On Debian / Ubuntu:\n\"   sudo apt-get install ack-grep\n\" With MacPorts:\n\"   sudo port install p5-app-ack\n\" With Homebrew:\n\"   brew install ack\n\n\" Location of the ack utility\nif !exists(\"g:ackprg\")\n  let s:ackcommand = executable('ack-grep') ? 'ack-grep' : 'ack'\n  let g:ackprg=s:ackcommand.\" -H --nocolor --nogroup --column\"\nendif\n\nif !exists(\"g:ack_apply_qmappings\")\n  let g:ack_apply_qmappings = !exists(\"g:ack_qhandler\")\nendif\n\nif !exists(\"g:ack_apply_lmappings\")\n  let g:ack_apply_lmappings = !exists(\"g:ack_lhandler\")\nendif\n\nif !exists(\"g:ack_qhandler\")\n  let g:ack_qhandler=\"botright copen\"\nendif\n\nif !exists(\"g:ack_lhandler\")\n  let g:ack_lhandler=\"botright lopen\"\nendif\n\nfunction! s:Ack(cmd, args)\n  redraw\n  echo \"Searching ...\"\n\n  \" If no pattern is provided, search for the word under the cursor\n  if empty(a:args)\n    let l:grepargs = expand(\"<cword>\")\n  else\n    let l:grepargs = a:args . join(a:000, ' ')\n  end\n\n  \" Format, used to manage column jump\n  if a:cmd =~# '-g$'\n    let g:ackformat=\"%f\"\n  else\n    let g:ackformat=\"%f:%l:%c:%m\"\n  end\n\n  let grepprg_bak=&grepprg\n  let grepformat_bak=&grepformat\n  try\n    let &grepprg=g:ackprg\n    let &grepformat=g:ackformat\n    silent execute a:cmd . \" \" . escape(l:grepargs, '|')\n  finally\n    let &grepprg=grepprg_bak\n    let &grepformat=grepformat_bak\n  endtry\n\n  if a:cmd =~# '^l'\n    exe g:ack_lhandler\n    let l:apply_mappings = g:ack_apply_lmappings\n  else\n    exe g:ack_qhandler\n    let l:apply_mappings = g:ack_apply_qmappings\n  endif\n\n  if l:apply_mappings\n    exec \"nnoremap <silent> <buffer> q :ccl<CR>\"\n    exec \"nnoremap <silent> <buffer> t <C-W><CR><C-W>T\"\n    exec \"nnoremap <silent> <buffer> T <C-W><CR><C-W>TgT<C-W><C-W>\"\n    exec \"nnoremap <silent> <buffer> o <CR>\"\n    exec \"nnoremap <silent> <buffer> go <CR><C-W><C-W>\"\n    exec \"nnoremap <silent> <buffer> h <C-W><CR><C-W>K\"\n    exec \"nnoremap <silent> <buffer> H <C-W><CR><C-W>K<C-W>b\"\n    exec \"nnoremap <silent> <buffer> v <C-W><CR><C-W>H<C-W>b<C-W>J<C-W>t\"\n    exec \"nnoremap <silent> <buffer> gv <C-W><CR><C-W>H<C-W>b<C-W>J\"\n  endif\n\n  \" If highlighting is on, highlight the search keyword.\n  if exists(\"g:ackhighlight\")\n    let @/=a:args\n    set hlsearch\n  end\n\n  redraw!\nendfunction\n\nfunction! s:AckFromSearch(cmd, args)\n  let search =  getreg('/')\n  \" translate vim regular expression to perl regular expression.\n  let search = substitute(search,'\\(\\\\<\\|\\\\>\\)','\\\\b','g')\n  call s:Ack(a:cmd, '\"' .  search .'\" '. a:args)\nendfunction\n\nfunction! s:GetDocLocations()\n    let dp = ''\n    for p in split(&rtp,',')\n        let p = p.'/doc/'\n        if isdirectory(p)\n            let dp = p.'*.txt '.dp\n        endif\n    endfor\n    return dp\nendfunction\n\nfunction! s:AckHelp(cmd,args)\n    let args = a:args.' '.s:GetDocLocations()\n    call s:Ack(a:cmd,args)\nendfunction\n\ncommand! -bang -nargs=* -complete=file Ack call s:Ack('grep<bang>',<q-args>)\ncommand! -bang -nargs=* -complete=file AckAdd call s:Ack('grepadd<bang>', <q-args>)\ncommand! -bang -nargs=* -complete=file AckFromSearch call s:AckFromSearch('grep<bang>', <q-args>)\ncommand! -bang -nargs=* -complete=file LAck call s:Ack('lgrep<bang>', <q-args>)\ncommand! -bang -nargs=* -complete=file LAckAdd call s:Ack('lgrepadd<bang>', <q-args>)\ncommand! -bang -nargs=* -complete=file AckFile call s:Ack('grep<bang> -g', <q-args>)\ncommand! -bang -nargs=* -complete=help AckHelp call s:AckHelp('grep<bang>',<q-args>)\ncommand! -bang -nargs=* -complete=help LAckHelp call s:AckHelp('lgrep<bang>',<q-args>)\n"
  },
  {
    "path": ".vim/bundle/camelcasemotion/README",
    "content": "This is a mirror of http://www.vim.org/scripts/script.php?script_id=1905\n\nDESCRIPTION\nVim provides many built-in motions, e.g. to move to the next word, or end of\nthe current word. Most programming languages use either CamelCase\n(\"anIdentifier\") or underscore_notation (\"an_identifier\") naming conventions\nfor identifiers. The best way to navigate inside those identifiers using Vim\nbuilt-in motions is the [count]f{char} motion, i.e. f{uppercase-char} or f_,\nrespectively. But we can make this easier: \n\nThis plugin defines motions ',w', ',b' and ',e' (similar to 'w', 'b', 'e'),\nwhich do not move word-wise (forward/backward), but Camel-wise; i.e. to word\nboundaries and uppercase letters. The motions also work on underscore notation,\nwhere words are delimited by underscore ('_') characters. From here on, both\nCamelCase and underscore_notation entities are referred to as \"words\" (in double\nquotes). Just like with the regular motions, a [count] can be prepended to move\nover multiple \"words\" at once. Outside of \"words\" (e.g. in non-keyword\ncharacters like // or ;), the new motions move just like the regular motions. \n\nVim provides a built-in 'iw' text object called 'inner word', which works in\noperator-pending and visual mode. Analog to that, this plugin defines inner\n\"word\" motions 'i,w', 'i,b' and 'i,e', which select the \"word\" (or multiple\n\"words\" if a [count] is given) where the cursor is located. \n\nUSAGE\nUse the new motions',w',',b' and ',e' in normal mode, operator-pending mode (cp.\n:help operator), and visual mode. For example, type 'bc,w' to change 'Camel' in\n'CamelCase' to something else. \n\nEXAMPLE: motions\nGiven the following CamelCase identifiers in a source code fragment:\n    set Script31337PathAndNameWithoutExtension11=%~dpn0\n    set Script31337PathANDNameWITHOUTExtension11=%~dpn0\nand the corresponding identifiers in underscore_notation:\n    set script_31337_path_and_name_without_extension_11=%~dpn0\n    set SCRIPT_31337_PATH_AND_NAME_WITHOUT_EXTENSION_11=%~dpn0\n\n,w moves to ([x] is cursor position): [s]et, [s]cript, [3]1337, [p]ath,\n    [a]nd, [n]ame, [w]ithout, [e]xtension, [1]1, [d]pn0, dpn[0], [s]et\n,b moves to: [d]pn0, [1]1, [e]xtension, [w]ithout, ...\n,e moves to: se[t], scrip[t], 3133[7], pat[h], an[d], nam[e], withou[t],\n    extensio[n], 1[1], dpn[0]\n\nEXAMPLE: inner motions\nGiven the following identifier, with the cursor positioned at [x]:\n    script_31337_path_and_na[m]e_without_extension_11\n\nv3i,w selects script_31337_path_and_[name_without_extension_]11\nv3i,b selects script_31337_[path_and_name]_without_extension_11\nv3i,e selects script_31337_path_and_[name_without_extension]_11\nInstead of visual mode, you can also use c3i,w to change, d3i,w to delete,\ngU3i,w to upper-case, and so on. \n\nSource: Based on http://vim.wikia.com/wiki/Moving_through_camel_case_words by\nAnthony Van Ham.\n"
  },
  {
    "path": ".vim/bundle/camelcasemotion/autoload/camelcasemotion.vim",
    "content": "\" camelcasemotion.vim: Motion through CamelCaseWords and underscore_notation. \n\"\n\" DEPENDENCIES:\n\"   - Requires Vim 7.0 or higher. \n\"\n\" Copyright: (C) 2007-2011 Ingo Karkat\n\"   The VIM LICENSE applies to this script; see ':help copyright'. \n\"\n\" Maintainer:\tIngo Karkat <ingo@karkat.de>\n\" REVISION\tDATE\t\tREMARKS \n\"   1.52.002\t18-Oct-2011\tFIX: Correct forward-to-end motion over\n\"\t\t\t\tlowercase part in \"lowerCamel\". Found this by\n\"\t\t\t\tchance in GitHub fork by Kevin Lee (bkad). \n\"\t\t\t\tBUG: Correct wrong stop on second letter of\n\"\t\t\t\tACRONYM at the beginning of a word \"AXBCText\". \n\"   1.50.001\t05-May-2009\tDo not create mappings for select mode;\n\"\t\t\t\taccording to|Select-mode|, printable character\n\"\t\t\t\tcommands should delete the selection and insert\n\"\t\t\t\tthe typed characters. \n\"\t\t\t\tMoved functions from plugin to separate autoload\n\"\t\t\t\tscript. \n\"   \t\t\t\tfile creation\n\n\"- functions ------------------------------------------------------------------\"\nfunction! s:Move( direction, count, mode )\n    \" Note: There is no inversion of the regular expression character class\n    \" 'keyword character' (\\k). We need an inversion \"non-keyword\" defined as\n    \" \"any non-whitespace character that is not a keyword character\" (e.g.\n    \" [!@#$%^&*()]). This can be specified via a non-whitespace character in\n    \" whose place no keyword character matches (\\k\\@!\\S). \n\n    \"echo \"count is \" . a:count\n    let l:i = 0\n    while l:i < a:count\n\tif a:direction == 'e'\n\t    \" \"Forward to end\" motion. \n\t    \"call search( '\\>\\|\\(\\a\\|\\d\\)\\+\\ze_', 'We' )\n\t    \" end of ...\n\t    \" number | ACRONYM followed by CamelCase or number | lowercase followed by CamelCase, ACRONYM, or number | CamelCase | underscore_notation | non-keyword | word\n\t    \" Note: Branches are ordered from specific to unspecific so that\n\t    \" in case of multiple matches, the more specific (and usually\n\t    \" longer) one it used. \n\t    call search( '\\d\\+\\|\\u\\+\\ze\\%(\\u\\l\\|\\d\\)\\|\\l\\+\\ze\\%(\\u\\|\\d\\)\\|\\u\\l\\+\\|\\%(\\a\\|\\d\\)\\+\\ze_\\|\\%(\\k\\@!\\S\\)\\+\\|\\%(_\\@!\\k\\)\\+\\>', 'We' )\n\t    \" Note: word must be defined as '\\k\\>'; '\\>' on its own somehow\n\t    \" dominates over the previous branch. Plus, \\k must exclude the\n\t    \" underscore, or a trailing one will be incorrectly moved over:\n\t    \" '\\%(_\\@!\\k\\)'. \n\t    if a:mode == 'o'\n\t\t\" Note: Special additional treatment for operator-pending mode\n\t\t\" \"forward to end\" motion. \n\t\t\" The difference between normal mode, operator-pending and visual\n\t\t\" mode is that in the latter two, the motion must go _past_ the\n\t\t\" final \"word\" character, so that all characters of the \"word\" are\n\t\t\" selected. This is done by appending a 'l' motion after the\n\t\t\" search for the next \"word\". \n\t\t\"\n\t\t\" In operator-pending mode, the 'l' motion only works properly\n\t\t\" at the end of the line (i.e. when the moved-over \"word\" is at\n\t\t\" the end of the line) when the 'l' motion is allowed to move\n\t\t\" over to the next line. Thus, the 'l' motion is added\n\t\t\" temporarily to the global 'whichwrap' setting. \n\t\t\" Without this, the motion would leave out the last character in\n\t\t\" the line. I've also experimented with temporarily setting\n\t\t\" \"set virtualedit=onemore\" , but that didn't work. \n\t\tlet l:save_ww = &whichwrap\n\t\tset whichwrap+=l\n\t\tnormal! l\n\t\tlet &whichwrap = l:save_ww\n\t    endif\n\telse\n\t    \" Forward (a:direction == '') and backward (a:direction == 'b')\n\t    \" motion. \n\n\t    let l:direction = (a:direction == 'w' ? '' : a:direction)\n\n\t    \" CamelCase: Jump to beginning of either (start of word, Word, WORD,\n\t    \" 123). \n\t    \" Underscore_notation: Jump to the beginning of an underscore-separated\n\t    \" word or number. \n\t    \"call search( '\\<\\|\\u', 'W' . l:direction )\n\t    \"call search( '\\<\\|\\u\\(\\l\\+\\|\\u\\+\\ze\\u\\)\\|\\d\\+', 'W' . l:direction )\n\t    \"call search( '\\<\\|\\u\\(\\l\\+\\|\\u\\+\\ze\\u\\)\\|\\d\\+\\|_\\zs\\(\\a\\|\\d\\)\\+', 'W' . l:direction )\n\t    \" beginning of ...\n\t    \" word | empty line | non-keyword after whitespaces | non-whitespace after word | number | start of ACRONYM followed by CamelCase or number | CamelCase | underscore followed by ACRONYM, Camel, lowercase or number\n\t    \" Note: Branches are ordered from unspecific to specific, so that\n\t    \" the cursor moves the least amount of text. \n\t    call search( '\\<\\D\\|^$\\|\\%(^\\|\\s\\)\\+\\zs\\k\\@!\\S\\|\\>\\S\\|\\d\\+\\|\\u\\@<!\\u\\+\\ze\\%(\\u\\l\\|\\d\\)\\|\\u\\l\\+\\|_\\zs\\%(\\u\\+\\|\\u\\l\\+\\|\\l\\+\\|\\d\\+\\)', 'W' . l:direction )\n\t    \" Note: word must be defined as '\\<\\D' to avoid that a word like\n\t    \" 1234Test is moved over as [1][2]34[T]est instead of [1]234[T]est\n\t    \" because \\< matches with zero width, and \\d\\+ will then start\n\t    \" matching '234'. To fix that, we make \\d\\+ be solely responsible\n\t    \" for numbers by taken this away from \\< via \\<\\D. (An alternative\n\t    \" would be to replace \\d\\+ with \\D\\%#\\zs\\d\\+, but that one is more\n\t    \" complex.) All other branches are not affected, because they match\n\t    \" multiple characters and not the same character multiple times. \n\tendif\n\tlet l:i = l:i + 1\n    endwhile\nendfunction\n\nfunction! camelcasemotion#Motion( direction, count, mode )\n\"*******************************************************************************\n\"* PURPOSE:\n\"   Perform the motion over CamelCaseWords or underscore_notation. \n\"* ASSUMPTIONS / PRECONDITIONS:\n\"   none\n\"* EFFECTS / POSTCONDITIONS:\n\"   Move cursor / change selection. \n\"* INPUTS:\n\"   a:direction\tone of 'w', 'b', 'e'\n\"   a:count\tnumber of \"words\" to move over\n\"   a:mode\tone of 'n', 'o', 'v', 'iv' (latter one is a special visual mode\n\"\t\twhen inside the inner \"word\" text objects. \n\"* RETURN VALUES: \n\"   none\n\"*******************************************************************************\n    \" Visual mode needs special preparations and postprocessing; \n    \" normal and operator-pending mode breeze through to s:Move(). \n\n    if a:mode == 'v'\n\t\" Visual mode was left when calling this function. Reselecting the current\n\t\" selection returns to visual mode and allows to call search() and issue\n\t\" normal mode motions while staying in visual mode. \n\tnormal! gv\n    endif\n    if a:mode == 'v' || a:mode == 'iv'\n\n\t\" Note_1a:\n\tif &selection != 'exclusive' && a:direction == 'w'\n\t    normal! l\n\tendif\n    endif\n\n    call s:Move( a:direction, a:count, a:mode )\n\n    if a:mode == 'v' || a:mode == 'iv'\n\t\" Note: 'selection' setting. \n\tif &selection == 'exclusive' && a:direction == 'e'\n\t    \" When set to 'exclusive', the \"forward to end\" motion (',e') does not\n\t    \" include the last character of the moved-over \"word\". To include that, an\n\t    \" additional 'l' motion is appended to the motion; similar to the\n\t    \" special treatment in operator-pending mode. \n\t    normal! l\n\telseif &selection != 'exclusive' && a:direction != 'e'\n\t    \" Note_1b:\n\t    \" The forward and backward motions move to the beginning of the next \"word\".\n\t    \" When 'selection' is set to 'inclusive' or 'old', this is one character too far. \n\t    \" The appended 'h' motion undoes this. Because of this backward step,\n\t    \" though, the forward motion finds the current \"word\" again, and would\n\t    \" be stuck on the current \"word\". An 'l' motion before the CamelCase\n\t    \" motion (see Note_1a) fixes that. \n\t    normal! h\n\tendif\n    endif\nendfunction\n\nfunction! camelcasemotion#InnerMotion( direction, count )\n    \" If the cursor is positioned on the first character of a CamelWord, the\n    \" backward motion would move to the previous word, which would result in a\n    \" wrong selection. To fix this, first move the cursor to the right, so that\n    \" the backward motion definitely will cover the current \"word\" under the\n    \" cursor. \n    normal! l\n    \n    \" Move \"word\" backwards, enter visual mode, then move \"word\" forward. This\n    \" selects the inner \"word\" in visual mode; the operator-pending mode takes\n    \" this selection as the area covered by the motion. \n    if a:direction == 'b'\n\t\" Do not do the selection backwards, because the backwards \"word\" motion\n\t\" in visual mode + selection=inclusive has an off-by-one error. \n\tcall camelcasemotion#Motion( 'b', a:count, 'n' )\n\tnormal! v\n\t\" We decree that 'b' is the opposite of 'e', not 'w'. This makes more\n\t\" sense at the end of a line and for underscore_notation. \n\tcall camelcasemotion#Motion( 'e', a:count, 'iv' )\n    else\n\tcall camelcasemotion#Motion( 'b', 1, 'n' )\n\tnormal! v\n\tcall camelcasemotion#Motion( a:direction, a:count, 'iv' )\n    endif\nendfunction\n\n\" vim: set sts=4 sw=4 noexpandtab ff=unix fdm=syntax :\n"
  },
  {
    "path": ".vim/bundle/camelcasemotion/doc/camelcasemotion.txt",
    "content": "*camelcasemotion.txt*   Motion through CamelCaseWords and underscore_notation. \n\n\t\t     CAMEL CASE MOTION    by Ingo Karkat\n\t\t\t\t\t\t\t *camelcasemotion.vim*\ndescription\t\t\t|camelcasemotion-description|\nusage\t\t\t\t|camelcasemotion-usage|\ninstallation\t\t\t|camelcasemotion-installation|\nconfiguration\t\t\t|camelcasemotion-configuration|\nknown problems\t\t\t|camelcasemotion-known-problems|\ntodo\t\t\t\t|camelcasemotion-todo|\nhistory\t\t\t\t|camelcasemotion-history|\n\n==============================================================================\nDESCRIPTION\t\t\t\t\t *camelcasemotion-description*\n\nVim provides many built-in motions, e.g. to move to the next word, or end of\nthe current word. Most programming languages use either CamelCase\n(\"anIdentifier\") or underscore_notation (\"an_identifier\") naming conventions\nfor identifiers. The best way to navigate inside those identifiers using Vim\nbuilt-in motions is the [count]f{char} motion, i.e. f{uppercase-char} or f_,\nrespectively. But we can make this easier: \n\nThis plugin defines motions |,w| |,b| and |,e| (similar to |w| |b| |e|), which do\nnot move word-wise (forward/backward), but Camel-wise; i.e. to word boundaries\nand uppercase letters. The motions also work on underscore notation, where\nwords are delimited by underscore ('_') characters. From here on, both\nCamelCase and underscore_notation entities are referred to as \"words\" (in\ndouble quotes). Just like with the regular motions, a [count] can be prepended\nto move over multiple \"words\" at once. Outside of \"words\" (e.g. in non-keyword\ncharacters like // or ;), the new motions move just like the regular motions. \n\nVim provides a built-in |iw| text object called 'inner word', which works in\noperator-pending and visual mode. Analog to that, this plugin defines inner\n\"word\" motions |i,w| |i,b| and |i,e|, which select the \"word\" (or multiple\n\"words\" if a [count] is given) where the cursor is located. \n\n==============================================================================\nUSAGE\t\t\t\t\t\t       *camelcasemotion-usage*\n\t\t\t\t\t\t\t\t*,w* *,b* *,e*\nUse the new motions |,w| |,b| and |,e| in normal mode, operator-pending mode\n(cp. |operator|), and visual mode. For example, type bc,w to change \"Camel\"\nin \"CamelCase\" to something else. \n\n\nEXAMPLE: motions\nGiven the following CamelCase identifiers in a source code fragment:\n    set Script31337PathAndNameWithoutExtension11=%~dpn0 ~\n    set Script31337PathANDNameWITHOUTExtension11=%~dpn0 ~\nand the corresponding identifiers in underscore_notation:\n    set script_31337_path_and_name_without_extension_11=%~dpn0 ~\n    set SCRIPT_31337_PATH_AND_NAME_WITHOUT_EXTENSION_11=%~dpn0 ~\n\n,w moves to ([x] is cursor position): [s]et, [s]cript, [3]1337, [p]ath,\n    [a]nd, [n]ame, [w]ithout, [e]xtension, [1]1, [d]pn0, dpn[0], [s]et\n,b moves to: [d]pn0, [1]1, [e]xtension, [w]ithout, ...\n,e moves to: se[t], scrip[t], 3133[7], pat[h], an[d], nam[e], withou[t],\n    extensio[n], 1[1], dpn[0]\n\n\nEXAMPLE: inner motions\nGiven the following identifier, with the cursor positioned at [x]:\n    script_31337_path_and_na[m]e_without_extension_11 ~\n\nv3i,w selects script_31337_path_and_[name_without_extension_]11\nv3i,b selects script_31337_[path_and_name]_without_extension_11\nv3i,e selects script_31337_path_and_[name_without_extension]_11\nInstead of visual mode, you can also use c3i,w to change, d3i,w to delete,\ngU3i,w to upper-case, and so on. \n\n==============================================================================\nINSTALLATION\t\t\t\t\t*camelcasemotion-installation*\n\nThis script is packaged as a |vimball|. If you have the \"gunzip\" decompressor\nin your PATH, simply edit the *.vba.gz package in Vim; otherwise, decompress\nthe archive first, e.g. using WinZip. Inside Vim, install by sourcing the\nvimball or via the |:UseVimball| command. >\n    vim camelcasemotion.vba.gz\n    :so %\nTo uninstall, use the |:RmVimball| command. \n\nDEPENDENCIES\t\t\t\t\t*camelcasemotion-dependencies*\n\n- Requires Vim 7.0 or higher. \n\n==============================================================================\nCONFIGURATION\t\t\t\t       *camelcasemotion-configuration*\n\nBy default, all mappings start with |,| (comma) as the map leader instead of\nusing <Leader>. I personally find the default <Leader> key too far off the\nkeyboard to be useful for custom motions (which also cannot be repeated via\nthe |.| (dot) command, so they should be very fast to type repeatedly), but\nquite suitable for general, less frequently used custom mappings. \nTo avoid losing the (rarely used) |,| mapping (which repeats latest f, t, F or\nT in opposite direction), you can remap it to ,,: >\n    nnoremap ,, ,\n    xnoremap ,, ,\n    onoremap ,, ,\n\nIf you want to use different mappings, map your keys to the\n<Plug>CamelCaseMotion_? mapping targets _before_ sourcing this script (e.g. in\nyour |vimrc|).  \n\nEXAMPLE: Replace the default |w|, |b| and |e| mappings instead of defining\nadditional mappings |,w|, |,b|  and |,e| : >\n    map w <Plug>CamelCaseMotion_w\n    map b <Plug>CamelCaseMotion_b\n    map e <Plug>CamelCaseMotion_e\n    sunmap w\n    sunmap b\n    sunmap e\n\nEXAMPLE: Replace default |iw| text-object and define |ib| and  |ie| motions: >\n    omap iw <Plug>CamelCaseMotion_iw\n    xmap iw <Plug>CamelCaseMotion_iw\n    omap ib <Plug>CamelCaseMotion_ib\n    xmap ib <Plug>CamelCaseMotion_ib\n    omap ie <Plug>CamelCaseMotion_ie\n    xmap ie <Plug>CamelCaseMotion_ie\n\n==============================================================================\nKNOWN PROBLEMS\t\t\t\t      *camelcasemotion-known-problems*\n\n- A degenerate CamelCaseWord containing '\\U\\u\\d' (e.g. \"MaP1Roblem\") confuses\n  the operator-pending and visual mode ,e mapping if 'selection' is not set to\n  \"exclusive\". It'll skip \"P\" and select \"P1\" in one step. As a workaround,\n  use ',w' instead of ',e'; those two mappings have the same effect inside\n  CamelCaseWords, anyway. \n- The operator-pending and visual mode ,e mapping doesn't work properly when\n  it reaches the end of the buffer; the final character of the moved-over\n  \"word\" remains, and a beep is issued. As a workaround, use the default 'e'\n  motion instead of ',e'. \n- When the Vim setting 'selection' is not set to \"exclusive\", a\n  forward-backward combination in visual mode (e.g. 'v,w,b') selects one\n  additional character to the left, instead of only the character where the\n  motion started. Likewise, extension of the visual selection from the front\n  end is off by one additional character. \n\n==============================================================================\nTODO\t\t\t\t\t\t\t*camelcasemotion-todo*\n\nIDEAS\t\t\t\t\t\t       *camelcasemotion-ideas*\n\n- Use search('\\%#.\\%$', 'cnW') to detect the operator-pending motion to the\n  end of the buffer and temporarily append a new line / space character to\n  work around the end-of-buffer problem. Unfortunately, the addition cannot be\n  undone as part of the motion (won't work then), so we'd have to use an\n  autocmd to remove it later. \n\n- Make separator character (currently underscore) configurable so that dashes,\n  asterisks, etc. can be added as well. Idea is to replace the single /_/ with\n  a collection /[-_*]/ built from g:CamelCaseMotion_SeparatorCharacters. Check\n  out interference with containment in 'iskeyword' and think through need to\n  buffer-local setting. (Submitted anonymously 13-Nov-2010 on Vim Tips Wiki.) \n\n==============================================================================\nHISTORY\t\t\t\t\t\t     *camelcasemotion-history*\n\n1.52\t12-Nov-2011\n- FIX: Correct forward-to-end motion over lowercase part in \"lowerCamel\".\n  Found this by chance in GitHub fork by Kevin Lee (bkad). \n- BUG: Correct wrong stop on second letter of ACRONYM at the beginning of a\n  word \"AXBCText\". \n- The motion functionality is automatically tested via a runVimTests\n  (vimscript #2565) test suite. \n\n1.51\t30-Sep-2011\nUse <silent> for <Plug> mapping instead of default mapping. \n\n1.50\t05-May-2009\n- Do not create mappings for select mode; according to |Select-mode|,\n  printable character commands should delete the selection and insert the\n  typed characters. Now using :xmap to only target visual mode. \n- Moved functions from plugin to separate autoload script. \n- Split off documentation into separate help file. Now packaging as VimBall. \n\n1.40\t30-Jun-2008\nBF: Now using :normal! to be independent from any user mappings. Thanks to\nNeil Walker for the patch.\n\n1.40\t19-May-2008\nBF: Wrong forward motion stop at the second digit if a word starts with\nmultiple numbers (e.g. 1234.56789). Thanks to Wasim Ahmed for reporting this.\n\n1.40\t24-Apr-2008\nENH: Added inner \"word\" text objects 'i,w' etc. that work analoguous to the\nbuilt-in |iw| text object. Thanks to David Kotchan for this suggestion.\n\n1.30\t20-Apr-2008\nThe motions now also stop at non-keyword boundaries, just like the regular\nmotions. This has no effect inside a CamelCaseWord or inside\nunderscore_notation, but it makes the motions behave like the regular motions\n(which is important if you replace the default motions). Thanks to Mun Johl\nfor reporting this. \n\n1.30\t09-Apr-2008\n- Allowing users to use mappings different than ,w ,b ,e by defining\n  <Plug>CamelCaseMotion_? target mappings. This can even be used to replace\n  the default 'w', 'b' and 'e' mappings, as suggested by Mun Johl.\n- Now requires VIM 7.0 or higher. \n\n1.20\t29-May-2007\nENH: The visual mode motions now also (mostly) work with the (default) setting\n'set selection=inclusive', instead of selecting one character too much. \n\n1.10\t28-May-2007\nIncorporated major improvements and simplifications done by Joseph Barker. \n\n1.00\t22-May-2007\nFirst published version. \n\n0.01\t11-Oct-2005\nStarted development based on vimtip #1016 by Anthony Van Ham. \n\n==============================================================================\nCopyright: (C) 2007-2011 Ingo Karkat\nThe VIM LICENSE applies to this script; see |copyright|. \n\nMaintainer:\tIngo Karkat <ingo@karkat.de>\n==============================================================================\n vim:tw=78:ts=8:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/camelcasemotion/plugin/camelcasemotion.vim",
    "content": "\" camelcasemotion.vim: Motion through CamelCaseWords and underscore_notation. \n\"\n\" DEPENDENCIES:\n\"   - Requires Vim 7.0 or higher. \n\"   - camelcasemotion.vim autoload script. \n\"\n\" Copyright: (C) 2007-2011 Ingo Karkat\n\"   The VIM LICENSE applies to this script; see ':help copyright'. \n\"\n\" Source: Based on vimtip #1016 by Anthony Van Ham. \n\" Maintainer:\tIngo Karkat <ingo@karkat.de>\n\" REVISION\tDATE\t\tREMARKS \n\"   1.51.020\t30-Sep-2011\tUse <silent> for <Plug> mapping instead of\n\"\t\t\t\tdefault mapping. \n\"   1.50.019\t05-May-2009\tDo not create mappings for select mode;\n\"\t\t\t\taccording to|Select-mode|, printable character\n\"\t\t\t\tcommands should delete the selection and insert\n\"\t\t\t\tthe typed characters. \n\"   \t\t\t\tMoved functions from plugin to separate autoload\n\"\t\t\t\tscript. \n\"   \t\t\t\tSplit off documentation into separate help file. \n\"   \t\t\t\tNow cleaning up Create...Mappings functions. \n\"   1.40.018\t30-Jun-2008\tMinor: Removed unnecessary <script> from\n\"\t\t\t\tmappings. \n\"   1.40.017\t19-May-2008\tBF: Now using :normal! to be independent from\n\"\t\t\t\tany user mappings. Thanks to Neil Walker for the\n\"\t\t\t\tpatch. \n\"   1.40.016\t28-Apr-2008\tBF: Wrong forward motion stop at the second\n\"\t\t\t\tdigit if a word starts with multiple numbers\n\"\t\t\t\t(e.g. 1234.56789). Thanks to Wasim Ahmed for\n\"\t\t\t\treporting this. \n\"   1.40.015\t24-Apr-2008\tENH: Added inner \"word\" text objects 'i,w' etc.\n\"\t\t\t\tthat work analogous to the built-in 'iw' text\n\"\t\t\t\tobject. Thanks to David Kotchan for this\n\"\t\t\t\tsuggestion. \n\"   1.30.014\t20-Apr-2008\tThe motions now also stop at non-keyword\n\"\t\t\t\tboundaries, just like the regular motions. This\n\"\t\t\t\thas no effect inside a CamelCaseWord or inside\n\"\t\t\t\tunderscore_notation, but it makes the motions\n\"\t\t\t\tbehave like the regular motions (which is\n\"\t\t\t\timportant if you replace the default motions). \n\"\t\t\t\tThanks to Mun Johl for reporting this. \n\"\t\t\t\tNow using non-capturing parentheses \\%() in the\n\"\t\t\t\tpatterns. \n\"   1.30.013\t09-Apr-2008\tRefactored away s:VisualCamelCaseMotion(). \n\"\t\t\t\tAllowing users to use mappings different than\n\"\t\t\t\t,w ,b ,e by defining <Plug>CamelCaseMotion_?\n\"\t\t\t\ttarget mappings. This can even be used to\n\"\t\t\t\treplace the default 'w', 'b' and 'e' mappings,\n\"\t\t\t\tas suggested by Mun Johl. \n\"\t\t\t\tMappings are now created in a generic function. \n\"\t\t\t\tNow requires Vim 7.0 or higher. \n\"   1.20.012\t02-Jun-2007\tBF: Corrected motions through mixed\n\"\t\t\t\tCamelCase_and_UnderScore words by re-ordering\n\"\t\t\t\tand narrowing the search patterns.  \n\"   1.20.011\t02-Jun-2007\tThanks again to Joseph Barker for discussing the\n\"\t\t\t\tcomplicated visual mode mapping on the vim-dev\n\"\t\t\t\tmailing list and coming up with a great\n\"\t\t\t\tsimplification:\n\"\t\t\t\tRemoved s:CheckForChangesToTheSelectionSetting().\n\"\t\t\t\tIntroduced s:VisualCamelCaseMotion(), which\n\"\t\t\t\thandles the differences depending on the\n\"\t\t\t\t'selection' setting. \n\"\t\t\t\tVisual mode mappings now directly map to the\n\"\t\t\t\ts:VisualCamelCaseMotion() function; no mark is\n\"\t\t\t\tclobbered, the complex mapping with the inline\n\"\t\t\t\texpression has been retired. \n\"   1.20.010\t29-May-2007\tBF: The operator-pending and visual mode ,e\n\"\t\t\t\tmapping doesn't work properly when it reaches\n\"\t\t\t\tthe end of line; the final character of the\n\"\t\t\t\tmoved-over \"word\" remains. Fixed this problem\n\"\t\t\t\tunless the \"word\" is at the very end of the\n\"\t\t\t\tbuffer. \n\"\t\t\t\tENH: The visual mode motions now also (mostly)\n\"\t\t\t\twork with the (default) setting\n\"\t\t\t\t'set selection=inclusive', instead of selecting\n\"\t\t\t\tone character too much. \n\"\t\t\t\tENH: All mappings will check for changes to the\n\"\t\t\t\t'selection' setting and remap the visual mode\n\"\t\t\t\tmappings via function\n\"\t\t\t\ts:SetupVisualModeMappings(). We cannot rely on\n\"\t\t\t\tthe setting while sourcing camelcasemotion.vim\n\"\t\t\t\tbecause the mswin.vim script may be sourced\n\"\t\t\t\tafterwards, and its 'behave mswin' changes\n\"\t\t\t\t'selection'. \n\"\t\t\t\tRefactored the arguments of function \n\"\t\t\t\ts:CamelCaseMotion(...). \n\"   1.10.009\t28-May-2007\tBF: Degenerate CamelCaseWords that consist of\n\"\t\t\t\tonly a single uppercase letter (e.g. \"P\" in\n\"\t\t\t\t\"MapPRoblem\") are skipped by all motions. Thanks\n\"\t\t\t\tto Joseph Barker for reporting this. \n\"\t\t\t\tBF: In CamelCaseWords that consist of uppercase\n\"\t\t\t\tletters followed by decimals (e.g.\n\"\t\t\t\t\"MyUPPER123Problem\", the uppercase \"word\" is\n\"\t\t\t\tskipped by all motions. \n\"   1.10.008\t28-May-2007\tIncorporated major improvements and\n\"\t\t\t\tsimplifications done by Joseph Barker:\n\"\t\t\t\tOperator-pending and visual mode motions now\n\"\t\t\t\taccept [count] of more than 9. \n\"\t\t\t\tVisual selections can now be extended from\n\"\t\t\t\teither end. \n\"\t\t\t\tInstead of misusing the :[range], the special\n\"\t\t\t\tvariable v:count1 is used. Custom commands are\n\"\t\t\t\tnot needed anymore. \n\"\t\t\t\tOperator-pending and visual mode mappings are\n\"\t\t\t\tnow generic: There's only a single mapping for\n\"\t\t\t\t,w that can be repeated, rather than having a\n\"\t\t\t\tseparate mapping for 1,w 2,w 3,w ...\n\"   1.00.007\t22-May-2007\tAdded documentation for publication. \n\"\t006\t20-May-2007\tBF: visual mode [1,2,3],e on pure CamelCase\n\"\t\t\t\tmistakenly marks [2,4,6] words. If the cursor is\n\"\t\t\t\ton a uppercase letter, the search pattern\n\"\t\t\t\t'\\u\\l\\+' doesn't match at the cursor position,\n\"\t\t\t\tso another match won. Changed search pattern\n\"\t\t\t\tfrom '\\l\\+', \n\"\t005\t16-May-2007\tAdded support for underscore notation. \n\"\t\t\t\tAdded support for \"forward to end of word\"\n\"\t\t\t\t(',e') motion. \n\"\t004\t16-May-2007\tImproved search pattern so that\n\"\t\t\t\tUppercaseWORDSInBetween and digits are handled,\n\"\t\t\t\ttoo. \n\"\t003\t15-May-2007\tChanged mappings from <Leader>w to ,w; \n\"\t\t\t\tother \\w mappings interfere here, because it's\n\"\t\t\t\tirritating when the cursor jump doesn't happen\n\"\t\t\t\timmediately, because Vim waits whether the\n\"\t\t\t\tmapping is complete. ,w is faster to type that\n\"\t\t\t\t\\w (and, because of the left-right touch,\n\"\t\t\t\tpreferred over gw). \n\"\t\t\t\tAdded visual mode mappings. \n\"\t0.02\t15-Feb-2006\tBF: missing <SID> for omaps. \n\"\t0.01\t11-Oct-2005\tfile creation\n\n\" Avoid installing twice or when in compatible mode\nif exists('g:loaded_camelcasemotion') || (v:version < 700)\n    finish\nendif\nlet g:loaded_camelcasemotion = 1\n\n\"- mappings -------------------------------------------------------------------\n\" The count is passed into the function through the special variable 'v:count1',\n\" which is easier than misusing the :[range] that :call supports. \n\" <C-U> is used to delete the unused range. \n\" Another option would be to use a custom 'command! -count=1', but that doesn't\n\" work with the normal mode mapping: When a count is typed before the mapping,\n\" the ':' will convert a count of 3 into ':.,+2MyCommand', but ':3MyCommand'\n\" would be required to use -count and <count>. \n\"\n\" We do not provide the fourth \"backward to end\" motion (,E), because it is\n\" seldomly used. \n\nfunction! s:CreateMotionMappings()\n    \" Create mappings according to this template:\n    \" (* stands for the mode [nov], ? for the underlying motion [wbe].) \n    \"\n    \" *noremap <silent> <Plug>CamelCaseMotion_? :<C-U>call camelcasemotion#Motion('?',v:count1,'*')<CR>\n    \" if ! hasmapto('<Plug>CamelCaseMotion_?', '*')\n    \"\t  *map ,? <Plug>CamelCaseMotion_?\n    \" endif\n\n    for l:mode in ['n', 'o', 'v']\n\tfor l:motion in ['w', 'b', 'e']\n\t    let l:targetMapping = '<Plug>CamelCaseMotion_' . l:motion\n\t    execute l:mode . 'noremap <silent> ' . l:targetMapping . ' :<C-U>call camelcasemotion#Motion(''' . l:motion . ''',v:count1,''' . l:mode . ''')<CR>'\n\t    if ! hasmapto(l:targetMapping, l:mode)\n\t\texecute (l:mode ==# 'v' ? 'x' : l:mode) . 'map ,' . l:motion . ' ' . l:targetMapping \n\t    endif\n\tendfor\n    endfor\nendfunction\n\n\" To create a text motion, a mapping for operator-pending mode needs to be\n\" defined. This mapping should move the cursor according to the implemented\n\" motion, or mark the covered text via a visual selection. As inner text motions\n\" need to mark both to the left and right of the cursor position, the visual\n\" selection needs to be used. \n\"\n\" Vim's built-in inner text objects also work in visual mode; they have\n\" different behavior depending on whether visual mode has just been entered or\n\" whether text has already been selected. \n\" We deviate from that and always override the existing selection. \nfunction! s:CreateInnerMotionMappings()\n    \" Create mappings according to this template:\n    \" (* stands for the mode [ov], ? for the underlying motion [wbe].) \n    \"\n    \" *noremap <silent> <Plug>CamelCaseMotion_i? :<C-U>call camelcasemotion#InnerMotion('?',v:count1)<CR>\n    \" if ! hasmapto('<Plug>CamelCaseInnerMotion_i?', '*')\n    \"\t  *map i,? <Plug>CamelCaseInnerMotion_i?\n    \" endif\n\n    for l:mode in ['o', 'v']\n\tfor l:motion in ['w', 'b', 'e']\n\t    let l:targetMapping = '<Plug>CamelCaseMotion_i' . l:motion\n\t    execute l:mode . 'noremap <silent> ' . l:targetMapping . ' :<C-U>call camelcasemotion#InnerMotion(''' . l:motion . ''',v:count1)<CR>'\n\t    if ! hasmapto(l:targetMapping, l:mode)\n\t\texecute (l:mode ==# 'v' ? 'x' : l:mode) . 'map i,' . l:motion . ' ' . l:targetMapping \n\t    endif\n\tendfor\n    endfor\nendfunction\n\ncall s:CreateMotionMappings()\ncall s:CreateInnerMotionMappings()\n\ndelfunction s:CreateMotionMappings\ndelfunction s:CreateInnerMotionMappings\n\n\" vim: set sts=4 sw=4 noexpandtab ff=unix fdm=syntax :\n"
  },
  {
    "path": ".vim/bundle/ctrlp.vim/autoload/ctrlp/bookmarkdir.vim",
    "content": "\" =============================================================================\n\" File:          autoload/ctrlp/bookmarkdir.vim\n\" Description:   Bookmarked directories extension\n\" Author:        Kien Nguyen <github.com/kien>\n\" =============================================================================\n\n\" Init {{{1\nif exists('g:loaded_ctrlp_bookmarkdir') && g:loaded_ctrlp_bookmarkdir\n\tfini\nen\nlet g:loaded_ctrlp_bookmarkdir = 1\n\ncal add(g:ctrlp_ext_vars, {\n\t\\ 'init': 'ctrlp#bookmarkdir#init()',\n\t\\ 'accept': 'ctrlp#bookmarkdir#accept',\n\t\\ 'lname': 'bookmarked dirs',\n\t\\ 'sname': 'bkd',\n\t\\ 'type': 'tabs',\n\t\\ 'opmul': 1,\n\t\\ 'nolim': 1,\n\t\\ 'wipe': 'ctrlp#bookmarkdir#remove',\n\t\\ })\n\nlet s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)\n\" Utilities {{{1\nfu! s:getinput(str, ...)\n\techoh Identifier\n\tcal inputsave()\n\tlet input = call('input', a:0 ? [a:str] + a:000 : [a:str])\n\tcal inputrestore()\n\techoh None\n\tretu input\nendf\n\nfu! s:cachefile()\n\tif !exists('s:cadir') || !exists('s:cafile')\n\t\tlet s:cadir = ctrlp#utils#cachedir().ctrlp#utils#lash().'bkd'\n\t\tlet s:cafile = s:cadir.ctrlp#utils#lash().'cache.txt'\n\ten\n\tretu s:cafile\nendf\n\nfu! s:writecache(lines)\n\tcal ctrlp#utils#writecache(a:lines, s:cadir, s:cafile)\nendf\n\nfu! s:getbookmarks()\n\tretu ctrlp#utils#readfile(s:cachefile())\nendf\n\nfu! s:savebookmark(name, cwd)\n\tlet cwds = exists('+ssl') ? [tr(a:cwd, '\\', '/'), tr(a:cwd, '/', '\\')] : [a:cwd]\n\tlet entries = filter(s:getbookmarks(), 'index(cwds, s:parts(v:val)[1]) < 0')\n\tcal s:writecache(insert(entries, a:name.'\t'.a:cwd))\nendf\n\nfu! s:setentries()\n\tlet time = getftime(s:cachefile())\n\tif !( exists('s:bookmarks') && time == s:bookmarks[0] )\n\t\tlet s:bookmarks = [time, s:getbookmarks()]\n\ten\nendf\n\nfu! s:parts(str)\n\tlet mlist = matchlist(a:str, '\\v([^\\t]+)\\t(.*)$')\n\tretu mlist != [] ? mlist[1:2] : ['', '']\nendf\n\nfu! s:process(entries, type)\n\tretu map(a:entries, 's:modify(v:val, a:type)')\nendf\n\nfu! s:modify(entry, type)\n\tlet [name, dir] = s:parts(a:entry)\n\tlet dir = fnamemodify(dir, a:type)\n\tretu name.'\t'.( dir == '' ? '.' : dir )\nendf\n\nfu! s:msg(name, cwd)\n\tredr\n\techoh Identifier | echon 'Bookmarked ' | echoh Constant\n\techon a:name.' ' | echoh Directory | echon a:cwd\n\techoh None\nendf\n\nfu! s:syntax()\n\tif !ctrlp#nosy()\n\t\tcal ctrlp#hicheck('CtrlPBookmark', 'Identifier')\n\t\tcal ctrlp#hicheck('CtrlPTabExtra', 'Comment')\n\t\tsy match CtrlPBookmark '^> [^\\t]\\+' contains=CtrlPLinePre\n\t\tsy match CtrlPTabExtra '\\zs\\t.*\\ze$'\n\ten\nendf\n\" Public {{{1\nfu! ctrlp#bookmarkdir#init()\n\tcal s:setentries()\n\tcal s:syntax()\n\tretu s:process(copy(s:bookmarks[1]), ':.')\nendf\n\nfu! ctrlp#bookmarkdir#accept(mode, str)\n\tlet parts = s:parts(s:modify(a:str, ':p'))\n\tcal call('s:savebookmark', parts)\n\tif a:mode =~ 't\\|v\\|h'\n\t\tcal ctrlp#exit()\n\ten\n\tcal ctrlp#setdir(parts[1], a:mode =~ 't\\|h' ? 'chd!' : 'lc!')\n\tif a:mode == 'e'\n\t\tcal ctrlp#switchtype(0)\n\t\tcal ctrlp#recordhist()\n\t\tcal ctrlp#prtclear()\n\ten\nendf\n\nfu! ctrlp#bookmarkdir#add(dir, ...)\n\tlet str = 'Directory to bookmark: '\n\tlet cwd = a:dir != '' ? a:dir : s:getinput(str, getcwd(), 'dir')\n\tif cwd == '' | retu | en\n\tlet cwd = fnamemodify(cwd, ':p')\n\tlet name = a:0 && a:1 != '' ? a:1 : s:getinput('Bookmark as: ', cwd)\n\tif name == '' | retu | en\n\tlet name = tr(name, '\t', ' ')\n\tcal s:savebookmark(name, cwd)\n\tcal s:msg(name, cwd)\nendf\n\nfu! ctrlp#bookmarkdir#remove(entries)\n\tcal s:process(a:entries, ':p')\n\tcal s:writecache(a:entries == [] ? [] :\n\t\t\\ filter(s:getbookmarks(), 'index(a:entries, v:val) < 0'))\n\tcal s:setentries()\n\tretu s:process(copy(s:bookmarks[1]), ':.')\nendf\n\nfu! ctrlp#bookmarkdir#id()\n\tretu s:id\nendf\n\"}}}\n\n\" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2\n"
  },
  {
    "path": ".vim/bundle/ctrlp.vim/autoload/ctrlp/buffertag.vim",
    "content": "\" =============================================================================\n\" File:          autoload/ctrlp/buffertag.vim\n\" Description:   Buffer Tag extension\n\" Maintainer:    Kien Nguyen <github.com/kien>\n\" Credits:       Much of the code was taken from tagbar.vim by Jan Larres, plus\n\"                a few lines from taglist.vim by Yegappan Lakshmanan and from\n\"                buffertag.vim by Takeshi Nishida.\n\" =============================================================================\n\n\" Init {{{1\nif exists('g:loaded_ctrlp_buftag') && g:loaded_ctrlp_buftag\n\tfini\nen\nlet g:loaded_ctrlp_buftag = 1\n\ncal add(g:ctrlp_ext_vars, {\n\t\\ 'init': 'ctrlp#buffertag#init(s:crfile)',\n\t\\ 'accept': 'ctrlp#buffertag#accept',\n\t\\ 'lname': 'buffer tags',\n\t\\ 'sname': 'bft',\n\t\\ 'exit': 'ctrlp#buffertag#exit()',\n\t\\ 'type': 'tabs',\n\t\\ 'opts': 'ctrlp#buffertag#opts()',\n\t\\ })\n\nlet s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)\n\nlet [s:pref, s:opts] = ['g:ctrlp_buftag_', {\n\t\\ 'systemenc': ['s:enc', &enc],\n\t\\ 'ctags_bin': ['s:bin', ''],\n\t\\ 'types': ['s:usr_types', {}],\n\t\\ }]\n\nlet s:bins = [\n\t\\ 'ctags-exuberant',\n\t\\ 'exuberant-ctags',\n\t\\ 'exctags',\n\t\\ '/usr/local/bin/ctags',\n\t\\ '/opt/local/bin/ctags',\n\t\\ 'ctags',\n\t\\ 'ctags.exe',\n\t\\ 'tags',\n\t\\ ]\n\nlet s:types = {\n\t\\ 'asm'    : '%sasm%sasm%sdlmt',\n\t\\ 'aspperl': '%sasp%sasp%sfsv',\n\t\\ 'aspvbs' : '%sasp%sasp%sfsv',\n\t\\ 'awk'    : '%sawk%sawk%sf',\n\t\\ 'beta'   : '%sbeta%sbeta%sfsv',\n\t\\ 'c'      : '%sc%sc%sdgsutvf',\n\t\\ 'cpp'    : '%sc++%sc++%snvdtcgsuf',\n\t\\ 'cs'     : '%sc#%sc#%sdtncEgsipm',\n\t\\ 'cobol'  : '%scobol%scobol%sdfgpPs',\n\t\\ 'eiffel' : '%seiffel%seiffel%scf',\n\t\\ 'erlang' : '%serlang%serlang%sdrmf',\n\t\\ 'expect' : '%stcl%stcl%scfp',\n\t\\ 'fortran': '%sfortran%sfortran%spbceiklmntvfs',\n\t\\ 'html'   : '%shtml%shtml%saf',\n\t\\ 'java'   : '%sjava%sjava%spcifm',\n\t\\ 'javascript': '%sjavascript%sjavascript%sf',\n\t\\ 'lisp'   : '%slisp%slisp%sf',\n\t\\ 'lua'    : '%slua%slua%sf',\n\t\\ 'make'   : '%smake%smake%sm',\n\t\\ 'ocaml'  : '%socaml%socaml%scmMvtfCre',\n\t\\ 'pascal' : '%spascal%spascal%sfp',\n\t\\ 'perl'   : '%sperl%sperl%sclps',\n\t\\ 'php'    : '%sphp%sphp%scdvf',\n\t\\ 'python' : '%spython%spython%scmf',\n\t\\ 'rexx'   : '%srexx%srexx%ss',\n\t\\ 'ruby'   : '%sruby%sruby%scfFm',\n\t\\ 'scheme' : '%sscheme%sscheme%ssf',\n\t\\ 'sh'     : '%ssh%ssh%sf',\n\t\\ 'csh'    : '%ssh%ssh%sf',\n\t\\ 'zsh'    : '%ssh%ssh%sf',\n\t\\ 'slang'  : '%sslang%sslang%snf',\n\t\\ 'sml'    : '%ssml%ssml%secsrtvf',\n\t\\ 'sql'    : '%ssql%ssql%scFPrstTvfp',\n\t\\ 'tcl'    : '%stcl%stcl%scfmp',\n\t\\ 'vera'   : '%svera%svera%scdefgmpPtTvx',\n\t\\ 'verilog': '%sverilog%sverilog%smcPertwpvf',\n\t\\ 'vim'    : '%svim%svim%savf',\n\t\\ 'yacc'   : '%syacc%syacc%sl',\n\t\\ }\n\ncal map(s:types, 'printf(v:val, \"--language-force=\", \" --\", \"-types=\")')\n\nif executable('jsctags')\n\tcal extend(s:types, { 'javascript': { 'args': '-f -', 'bin': 'jsctags' } })\nen\n\nfu! ctrlp#buffertag#opts()\n\tfor [ke, va] in items(s:opts)\n\t\tlet {va[0]} = exists(s:pref.ke) ? {s:pref.ke} : va[1]\n\tendfo\n\t\" Ctags bin\n\tif empty(s:bin)\n\t\tfor bin in s:bins | if executable(bin)\n\t\t\tlet s:bin = bin\n\t\t\tbrea\n\t\ten | endfo\n\tel\n\t\tlet s:bin = expand(s:bin, 1)\n\ten\n\t\" Types\n\tcal extend(s:types, s:usr_types)\nendf\n\" Utilities {{{1\nfu! s:validfile(fname, ftype)\n\tif ( !empty(a:fname) || !empty(a:ftype) ) && filereadable(a:fname)\n\t\t\\ && index(keys(s:types), a:ftype) >= 0 | retu 1 | en\n\tretu 0\nendf\n\nfu! s:exectags(cmd)\n\tif exists('+ssl')\n\t\tlet [ssl, &ssl] = [&ssl, 0]\n\ten\n\tif &sh =~ 'cmd\\.exe'\n\t\tlet [sxq, &sxq, shcf, &shcf] = [&sxq, '\"', &shcf, '/s /c']\n\ten\n\tlet output = system(a:cmd)\n\tif &sh =~ 'cmd\\.exe'\n\t\tlet [&sxq, &shcf] = [sxq, shcf]\n\ten\n\tif exists('+ssl')\n\t\tlet &ssl = ssl\n\ten\n\tretu output\nendf\n\nfu! s:exectagsonfile(fname, ftype)\n\tlet [ags, ft] = ['-f - --sort=no --excmd=pattern --fields=nKs ', a:ftype]\n\tif type(s:types[ft]) == 1\n\t\tlet ags .= s:types[ft]\n\t\tlet bin = s:bin\n\telsei type(s:types[ft]) == 4\n\t\tlet ags = s:types[ft]['args']\n\t\tlet bin = expand(s:types[ft]['bin'], 1)\n\ten\n\tif empty(bin) | retu '' | en\n\tlet cmd = s:esctagscmd(bin, ags, a:fname)\n\tif empty(cmd) | retu '' | en\n\tlet output = s:exectags(cmd)\n\tif v:shell_error || output =~ 'Warning: cannot open' | retu '' | en\n\tretu output\nendf\n\nfu! s:esctagscmd(bin, args, ...)\n\tif exists('+ssl')\n\t\tlet [ssl, &ssl] = [&ssl, 0]\n\ten\n\tlet fname = a:0 ? shellescape(a:1) : ''\n\tlet cmd = shellescape(a:bin).' '.a:args.' '.fname\n\tif &sh =~ 'cmd\\.exe'\n\t\tlet cmd = substitute(cmd, '[&()@^<>|]', '^\\0', 'g')\n\ten\n\tif exists('+ssl')\n\t\tlet &ssl = ssl\n\ten\n\tif has('iconv')\n\t\tlet last = s:enc != &enc ? s:enc : !empty( $LANG ) ? $LANG : &enc\n\t\tlet cmd = iconv(cmd, &enc, last)\n\ten\n\tretu cmd\nendf\n\nfu! s:process(fname, ftype)\n\tif !s:validfile(a:fname, a:ftype) | retu [] | endif\n\tlet ftime = getftime(a:fname)\n\tif has_key(g:ctrlp_buftags, a:fname)\n\t\t\\ && g:ctrlp_buftags[a:fname]['time'] >= ftime\n\t\tlet lines = g:ctrlp_buftags[a:fname]['lines']\n\tel\n\t\tlet data = s:exectagsonfile(a:fname, a:ftype)\n\t\tlet [raw, lines] = [split(data, '\\n\\+'), []]\n\t\tfor line in raw\n\t\t\tif line !~# '^!_TAG_' && len(split(line, ';\"')) == 2\n\t\t\t\tlet parsed_line = s:parseline(line)\n\t\t\t\tif parsed_line != ''\n\t\t\t\t\tcal add(lines, parsed_line)\n\t\t\t\ten\n\t\t\ten\n\t\tendfo\n\t\tlet cache = { a:fname : { 'time': ftime, 'lines': lines } }\n\t\tcal extend(g:ctrlp_buftags, cache)\n\ten\n\tretu lines\nendf\n\nfu! s:parseline(line)\n\tlet vals = matchlist(a:line,\n\t\t\\ '\\v^([^\\t]+)\\t(.+)\\t[?/]\\^?(.{-1,})\\$?[?/]\\;\\\"\\t(.+)\\tline(no)?\\:(\\d+)')\n\tif vals == [] | retu '' | en\n\tlet [bufnr, bufname] = [bufnr('^'.vals[2].'$'), fnamemodify(vals[2], ':p:t')]\n\tretu vals[1].'\t'.vals[4].'|'.bufnr.':'.bufname.'|'.vals[6].'| '.vals[3]\nendf\n\nfu! s:syntax()\n\tif !ctrlp#nosy()\n\t\tcal ctrlp#hicheck('CtrlPTagKind', 'Title')\n\t\tcal ctrlp#hicheck('CtrlPBufName', 'Directory')\n\t\tcal ctrlp#hicheck('CtrlPTabExtra', 'Comment')\n\t\tsy match CtrlPTagKind '\\zs[^\\t|]\\+\\ze|\\d\\+:[^|]\\+|\\d\\+|'\n\t\tsy match CtrlPBufName '|\\d\\+:\\zs[^|]\\+\\ze|\\d\\+|'\n\t\tsy match CtrlPTabExtra '\\zs\\t.*\\ze$' contains=CtrlPBufName,CtrlPTagKind\n\ten\nendf\n\nfu! s:chknearby(pat)\n\tif match(getline('.'), a:pat) < 0\n\t\tlet [int, forw, maxl] = [1, 1, line('$')]\n\t\twh !search(a:pat, 'W'.( forw ? '' : 'b' ))\n\t\t\tif !forw\n\t\t\t\tif int > maxl | brea | en\n\t\t\t\tlet int += int\n\t\t\ten\n\t\t\tlet forw = !forw\n\t\tendw\n\ten\nendf\n\" Public {{{1\nfu! ctrlp#buffertag#init(fname)\n\tlet bufs = exists('s:btmode') && s:btmode\n\t\t\\ ? filter(ctrlp#buffers(), 'filereadable(v:val)')\n\t\t\\ : [exists('s:bufname') ? s:bufname : a:fname]\n\tlet lines = []\n\tfor each in bufs\n\t\tlet bname = fnamemodify(each, ':p')\n\t\tlet tftype = get(split(getbufvar('^'.bname.'$', '&ft'), '\\.'), 0, '')\n\t\tcal extend(lines, s:process(bname, tftype))\n\tendfo\n\tcal s:syntax()\n\tretu lines\nendf\n\nfu! ctrlp#buffertag#accept(mode, str)\n\tlet vals = matchlist(a:str,\n\t\t\\ '\\v^[^\\t]+\\t+[^\\t|]+\\|(\\d+)\\:[^\\t|]+\\|(\\d+)\\|\\s(.+)$')\n\tlet bufnr = str2nr(get(vals, 1))\n\tif bufnr\n\t\tcal ctrlp#acceptfile(a:mode, bufnr)\n\t\texe 'norm!' str2nr(get(vals, 2, line('.'))).'G'\n\t\tcal s:chknearby('\\V\\C'.get(vals, 3, ''))\n\t\tsil! norm! zvzz\n\ten\nendf\n\nfu! ctrlp#buffertag#cmd(mode, ...)\n\tlet s:btmode = a:mode\n\tif a:0 && !empty(a:1)\n\t\tlet s:btmode = 0\n\t\tlet bname = a:1 =~# '^%$\\|^#\\d*$' ? expand(a:1) : a:1\n\t\tlet s:bufname = fnamemodify(bname, ':p')\n\ten\n\tretu s:id\nendf\n\nfu! ctrlp#buffertag#exit()\n\tunl! s:btmode s:bufname\nendf\n\"}}}\n\n\" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2\n"
  },
  {
    "path": ".vim/bundle/ctrlp.vim/autoload/ctrlp/changes.vim",
    "content": "\" =============================================================================\n\" File:          autoload/ctrlp/changes.vim\n\" Description:   Change list extension\n\" Author:        Kien Nguyen <github.com/kien>\n\" =============================================================================\n\n\" Init {{{1\nif exists('g:loaded_ctrlp_changes') && g:loaded_ctrlp_changes\n\tfini\nen\nlet g:loaded_ctrlp_changes = 1\n\ncal add(g:ctrlp_ext_vars, {\n\t\\ 'init': 'ctrlp#changes#init(s:bufnr, s:crbufnr)',\n\t\\ 'accept': 'ctrlp#changes#accept',\n\t\\ 'lname': 'changes',\n\t\\ 'sname': 'chs',\n\t\\ 'exit': 'ctrlp#changes#exit()',\n\t\\ 'type': 'tabe',\n\t\\ 'sort': 0,\n\t\\ 'nolim': 1,\n\t\\ })\n\nlet s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)\n\" Utilities {{{1\nfu! s:changelist(bufnr)\n\tsil! exe 'noa hid b' a:bufnr\n\tredi => result\n\tsil! changes\n\tredi END\n\tretu map(split(result, \"\\n\")[1:], 'tr(v:val, \"\t\", \" \")')\nendf\n\nfu! s:process(clines, ...)\n\tlet [clines, evas] = [[], []]\n\tfor each in a:clines\n\t\tlet parts = matchlist(each, '\\v^.\\s*\\d+\\s+(\\d+)\\s+(\\d+)\\s(.*)$')\n\t\tif !empty(parts)\n\t\t\tif parts[3] == '' | let parts[3] = ' ' | en\n\t\t\tcal add(clines, parts[3].'\t|'.a:1.':'.a:2.'|'.parts[1].':'.parts[2].'|')\n\t\ten\n\tendfo\n\tretu reverse(filter(clines, 'count(clines, v:val) == 1'))\nendf\n\nfu! s:syntax()\n\tif !ctrlp#nosy()\n\t\tcal ctrlp#hicheck('CtrlPBufName', 'Directory')\n\t\tcal ctrlp#hicheck('CtrlPTabExtra', 'Comment')\n\t\tsy match CtrlPBufName '\\t|\\d\\+:\\zs[^|]\\+\\ze|\\d\\+:\\d\\+|$'\n\t\tsy match CtrlPTabExtra '\\zs\\t.*\\ze$' contains=CtrlPBufName\n\ten\nendf\n\" Public {{{1\nfu! ctrlp#changes#init(original_bufnr, bufnr)\n\tlet bufnr = exists('s:bufnr') ? s:bufnr : a:bufnr\n\tlet bufs = exists('s:clmode') && s:clmode ? ctrlp#buffers('id') : [bufnr]\n\tcal filter(bufs, 'v:val > 0')\n\tlet [swb, &swb] = [&swb, '']\n\tlet lines = []\n\tfor each in bufs\n\t\tlet bname = bufname(each)\n\t\tlet fnamet = fnamemodify(bname == '' ? '[No Name]' : bname, ':t')\n\t\tcal extend(lines, s:process(s:changelist(each), each, fnamet))\n\tendfo\n\tsil! exe 'noa hid b' a:original_bufnr\n\tlet &swb = swb\n\tcal ctrlp#syntax()\n\tcal s:syntax()\n\tretu lines\nendf\n\nfu! ctrlp#changes#accept(mode, str)\n\tlet info = matchlist(a:str, '\\t|\\(\\d\\+\\):[^|]\\+|\\(\\d\\+\\):\\(\\d\\+\\)|$')\n\tlet bufnr = str2nr(get(info, 1))\n\tif bufnr\n\t\tcal ctrlp#acceptfile(a:mode, bufnr)\n\t\tcal cursor(get(info, 2), get(info, 3))\n\t\tsil! norm! zvzz\n\ten\nendf\n\nfu! ctrlp#changes#cmd(mode, ...)\n\tlet s:clmode = a:mode\n\tif a:0 && !empty(a:1)\n\t\tlet s:clmode = 0\n\t\tlet bname = a:1 =~# '^%$\\|^#\\d*$' ? expand(a:1) : a:1\n\t\tlet s:bufnr = bufnr('^'.fnamemodify(bname, ':p').'$')\n\ten\n\tretu s:id\nendf\n\nfu! ctrlp#changes#exit()\n\tunl! s:clmode s:bufnr\nendf\n\"}}}\n\n\" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2\n"
  },
  {
    "path": ".vim/bundle/ctrlp.vim/autoload/ctrlp/dir.vim",
    "content": "\" =============================================================================\n\" File:          autoload/ctrlp/dir.vim\n\" Description:   Directory extension\n\" Author:        Kien Nguyen <github.com/kien>\n\" =============================================================================\n\n\" Init {{{1\nif exists('g:loaded_ctrlp_dir') && g:loaded_ctrlp_dir\n\tfini\nen\nlet [g:loaded_ctrlp_dir, g:ctrlp_newdir] = [1, 0]\n\nlet s:ars = ['s:maxdepth', 's:maxfiles', 's:compare_lim', 's:glob', 's:caching']\n\ncal add(g:ctrlp_ext_vars, {\n\t\\ 'init': 'ctrlp#dir#init('.join(s:ars, ', ').')',\n\t\\ 'accept': 'ctrlp#dir#accept',\n\t\\ 'lname': 'dirs',\n\t\\ 'sname': 'dir',\n\t\\ 'type': 'path',\n\t\\ 'specinput': 1,\n\t\\ })\n\nlet s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)\n\nlet s:dircounts = {}\n\" Utilities {{{1\nfu! s:globdirs(dirs, depth)\n\tlet entries = split(globpath(a:dirs, s:glob), \"\\n\")\n\tlet [dirs, depth] = [ctrlp#dirnfile(entries)[0], a:depth + 1]\n\tcal extend(g:ctrlp_alldirs, dirs)\n\tlet nr = len(g:ctrlp_alldirs)\n\tif !empty(dirs) && !s:max(nr, s:maxfiles) && depth <= s:maxdepth\n\t\tsil! cal ctrlp#progress(nr)\n\t\tcal map(dirs, 'ctrlp#utils#fnesc(v:val, \"g\", \",\")')\n\t\tcal s:globdirs(join(dirs, ','), depth)\n\ten\nendf\n\nfu! s:max(len, max)\n\tretu a:max && a:len > a:max\nendf\n\nfu! s:nocache()\n\tretu !s:caching || ( s:caching > 1 && get(s:dircounts, s:cwd) < s:caching )\nendf\n\" Public {{{1\nfu! ctrlp#dir#init(...)\n\tlet s:cwd = getcwd()\n\tfor each in range(len(s:ars))\n\t\tlet {s:ars[each]} = a:{each + 1}\n\tendfo\n\tlet cadir = ctrlp#utils#cachedir().ctrlp#utils#lash().'dir'\n\tlet cafile = cadir.ctrlp#utils#lash().ctrlp#utils#cachefile('dir')\n\tif g:ctrlp_newdir || s:nocache() || !filereadable(cafile)\n\t\tlet [s:initcwd, g:ctrlp_alldirs] = [s:cwd, []]\n\t\tif !ctrlp#igncwd(s:cwd)\n\t\t\tcal s:globdirs(ctrlp#utils#fnesc(s:cwd, 'g', ','), 0)\n\t\ten\n\t\tcal ctrlp#rmbasedir(g:ctrlp_alldirs)\n\t\tif len(g:ctrlp_alldirs) <= s:compare_lim\n\t\t\tcal sort(g:ctrlp_alldirs, 'ctrlp#complen')\n\t\ten\n\t\tcal ctrlp#utils#writecache(g:ctrlp_alldirs, cadir, cafile)\n\t\tlet g:ctrlp_newdir = 0\n\tel\n\t\tif !( exists('s:initcwd') && s:initcwd == s:cwd )\n\t\t\tlet s:initcwd = s:cwd\n\t\t\tlet g:ctrlp_alldirs = ctrlp#utils#readfile(cafile)\n\t\ten\n\ten\n\tcal extend(s:dircounts, { s:cwd : len(g:ctrlp_alldirs) })\n\tretu g:ctrlp_alldirs\nendf\n\nfu! ctrlp#dir#accept(mode, str)\n\tlet path = a:mode == 'h' ? getcwd() : s:cwd.ctrlp#call('s:lash', s:cwd).a:str\n\tif a:mode =~ 't\\|v\\|h'\n\t\tcal ctrlp#exit()\n\ten\n\tcal ctrlp#setdir(path, a:mode =~ 't\\|h' ? 'chd!' : 'lc!')\n\tif a:mode == 'e'\n\t\tsil! cal ctrlp#statusline()\n\t\tcal ctrlp#setlines(s:id)\n\t\tcal ctrlp#recordhist()\n\t\tcal ctrlp#prtclear()\n\ten\nendf\n\nfu! ctrlp#dir#id()\n\tretu s:id\nendf\n\"}}}\n\n\" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2\n"
  },
  {
    "path": ".vim/bundle/ctrlp.vim/autoload/ctrlp/line.vim",
    "content": "\" =============================================================================\n\" File:          autoload/ctrlp/line.vim\n\" Description:   Line extension\n\" Author:        Kien Nguyen <github.com/kien>\n\" =============================================================================\n\n\" Init {{{1\nif exists('g:loaded_ctrlp_line') && g:loaded_ctrlp_line\n\tfini\nen\nlet g:loaded_ctrlp_line = 1\n\ncal add(g:ctrlp_ext_vars, {\n\t\\ 'init': 'ctrlp#line#init(s:crbufnr)',\n\t\\ 'accept': 'ctrlp#line#accept',\n\t\\ 'lname': 'lines',\n\t\\ 'sname': 'lns',\n\t\\ 'type': 'tabe',\n\t\\ })\n\nlet s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)\n\" Utilities {{{1\nfu! s:syntax()\n\tif !ctrlp#nosy()\n\t\tcal ctrlp#hicheck('CtrlPBufName', 'Directory')\n\t\tcal ctrlp#hicheck('CtrlPTabExtra', 'Comment')\n\t\tsy match CtrlPBufName '\\t|\\zs[^|]\\+\\ze|\\d\\+:\\d\\+|$'\n\t\tsy match CtrlPTabExtra '\\zs\\t.*\\ze$' contains=CtrlPBufName\n\ten\nendf\n\" Public {{{1\nfu! ctrlp#line#init(bufnr)\n\tlet [lines, bufnr] = [[], exists('s:bufnr') ? s:bufnr : a:bufnr]\n\tlet bufs = exists('s:lnmode') && s:lnmode ? ctrlp#buffers('id') : [bufnr]\n\tfor bufnr in bufs\n\t\tlet [lfb, bufn] = [getbufline(bufnr, 1, '$'), bufname(bufnr)]\n\t\tif lfb == [] && bufn != ''\n\t\t\tlet lfb = ctrlp#utils#readfile(fnamemodify(bufn, ':p'))\n\t\ten\n\t\tcal map(lfb, 'tr(v:val, ''\t'', '' '')')\n\t\tlet [linenr, len_lfb] = [1, len(lfb)]\n\t\tlet buft = bufn == '' ? '[No Name]' : fnamemodify(bufn, ':t')\n\t\twh linenr <= len_lfb\n\t\t\tlet lfb[linenr - 1] .= '\t|'.buft.'|'.bufnr.':'.linenr.'|'\n\t\t\tlet linenr += 1\n\t\tendw\n\t\tcal extend(lines, filter(lfb, 'v:val !~ ''^\\s*\\t|[^|]\\+|\\d\\+:\\d\\+|$'''))\n\tendfo\n\tcal s:syntax()\n\tretu lines\nendf\n\nfu! ctrlp#line#accept(mode, str)\n\tlet info = matchlist(a:str, '\\t|[^|]\\+|\\(\\d\\+\\):\\(\\d\\+\\)|$')\n\tlet bufnr = str2nr(get(info, 1))\n\tif bufnr\n\t\tcal ctrlp#acceptfile(a:mode, bufnr, get(info, 2))\n\ten\nendf\n\nfu! ctrlp#line#cmd(mode, ...)\n\tlet s:lnmode = a:mode\n\tif a:0 && !empty(a:1)\n\t\tlet s:lnmode = 0\n\t\tlet bname = a:1 =~# '^%$\\|^#\\d*$' ? expand(a:1) : a:1\n\t\tlet s:bufnr = bufnr('^'.fnamemodify(bname, ':p').'$')\n\ten\n\tretu s:id\nendf\n\"}}}\n\n\" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2\n"
  },
  {
    "path": ".vim/bundle/ctrlp.vim/autoload/ctrlp/mixed.vim",
    "content": "\" =============================================================================\n\" File:          autoload/ctrlp/mixed.vim\n\" Description:   Mixing Files + MRU + Buffers\n\" Author:        Kien Nguyen <github.com/kien>\n\" =============================================================================\n\n\" Init {{{1\nif exists('g:loaded_ctrlp_mixed') && g:loaded_ctrlp_mixed\n\tfini\nen\nlet [g:loaded_ctrlp_mixed, g:ctrlp_newmix] = [1, 0]\n\ncal add(g:ctrlp_ext_vars, {\n\t\\ 'init': 'ctrlp#mixed#init(s:compare_lim)',\n\t\\ 'accept': 'ctrlp#acceptfile',\n\t\\ 'lname': 'fil + mru + buf',\n\t\\ 'sname': 'mix',\n\t\\ 'type': 'path',\n\t\\ 'opmul': 1,\n\t\\ 'specinput': 1,\n\t\\ })\n\nlet s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)\n\" Utilities {{{1\nfu! s:newcache(cwd)\n\tif g:ctrlp_newmix || !has_key(g:ctrlp_allmixes, 'data') | retu 1 | en\n\tretu g:ctrlp_allmixes['cwd'] != a:cwd\n\t\t\\ || g:ctrlp_allmixes['filtime'] < getftime(ctrlp#utils#cachefile())\n\t\t\\ || g:ctrlp_allmixes['mrutime'] < getftime(ctrlp#mrufiles#cachefile())\n\t\t\\ || g:ctrlp_allmixes['bufs'] < len(ctrlp#mrufiles#bufs())\nendf\n\nfu! s:getnewmix(cwd, clim)\n\tif g:ctrlp_newmix\n\t\tcal ctrlp#mrufiles#refresh('raw')\n\t\tlet g:ctrlp_newcache = 1\n\ten\n\tlet g:ctrlp_lines = copy(ctrlp#files())\n\tcal ctrlp#progress('Mixing...')\n\tlet mrufs = copy(ctrlp#mrufiles#list('raw'))\n\tif exists('+ssl') && &ssl\n\t\tcal map(mrufs, 'tr(v:val, \"\\\\\", \"/\")')\n\ten\n\tlet allbufs = map(ctrlp#buffers(), 'fnamemodify(v:val, \":p\")')\n\tlet [bufs, ubufs] = [[], []]\n\tfor each in allbufs\n\t\tcal add(filereadable(each) ? bufs : ubufs, each)\n\tendfo\n\tlet mrufs = bufs + filter(mrufs, 'index(bufs, v:val) < 0')\n\tif len(mrufs) > len(g:ctrlp_lines)\n\t\tcal filter(mrufs, 'stridx(v:val, a:cwd)')\n\tel\n\t\tlet cwd_mrufs = filter(copy(mrufs), '!stridx(v:val, a:cwd)')\n\t\tlet cwd_mrufs = ctrlp#rmbasedir(cwd_mrufs)\n\t\tfor each in cwd_mrufs\n\t\t\tlet id = index(g:ctrlp_lines, each)\n\t\t\tif id >= 0 | cal remove(g:ctrlp_lines, id) | en\n\t\tendfo\n\ten\n\tlet mrufs += ubufs\n\tcal map(mrufs, 'fnamemodify(v:val, \":.\")')\n\tlet g:ctrlp_lines = len(mrufs) > len(g:ctrlp_lines)\n\t\t\\ ? g:ctrlp_lines + mrufs : mrufs + g:ctrlp_lines\n\tif len(g:ctrlp_lines) <= a:clim\n\t\tcal sort(g:ctrlp_lines, 'ctrlp#complen')\n\ten\n\tlet g:ctrlp_allmixes = { 'filtime': getftime(ctrlp#utils#cachefile()),\n\t\t\\ 'mrutime': getftime(ctrlp#mrufiles#cachefile()), 'cwd': a:cwd,\n\t\t\\ 'bufs': len(ctrlp#mrufiles#bufs()), 'data': g:ctrlp_lines }\nendf\n\" Public {{{1\nfu! ctrlp#mixed#init(clim)\n\tlet cwd = getcwd()\n\tif s:newcache(cwd)\n\t\tcal s:getnewmix(cwd, a:clim)\n\tel\n\t\tlet g:ctrlp_lines = g:ctrlp_allmixes['data']\n\ten\n\tlet g:ctrlp_newmix = 0\n\tretu g:ctrlp_lines\nendf\n\nfu! ctrlp#mixed#id()\n\tretu s:id\nendf\n\"}}}\n\n\" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2\n"
  },
  {
    "path": ".vim/bundle/ctrlp.vim/autoload/ctrlp/mrufiles.vim",
    "content": "\" =============================================================================\n\" File:          autoload/ctrlp/mrufiles.vim\n\" Description:   Most Recently Used Files extension\n\" Author:        Kien Nguyen <github.com/kien>\n\" =============================================================================\n\n\" Static variables {{{1\nlet [s:mrbs, s:mrufs] = [[], []]\n\nfu! ctrlp#mrufiles#opts()\n\tlet [pref, opts] = ['g:ctrlp_mruf_', {\n\t\t\\ 'max': ['s:max', 250],\n\t\t\\ 'include': ['s:in', ''],\n\t\t\\ 'exclude': ['s:ex', ''],\n\t\t\\ 'case_sensitive': ['s:cseno', 1],\n\t\t\\ 'relative': ['s:re', 0],\n\t\t\\ 'save_on_update': ['s:soup', 1],\n\t\t\\ }]\n\tfor [ke, va] in items(opts)\n\t\tlet [{va[0]}, {pref.ke}] = [pref.ke, exists(pref.ke) ? {pref.ke} : va[1]]\n\tendfo\nendf\ncal ctrlp#mrufiles#opts()\n\" Utilities {{{1\nfu! s:excl(fn)\n\tretu !empty({s:ex}) && a:fn =~# {s:ex}\nendf\n\nfu! s:mergelists()\n\tlet diskmrufs = ctrlp#utils#readfile(ctrlp#mrufiles#cachefile())\n\tcal filter(diskmrufs, 'index(s:mrufs, v:val) < 0')\n\tlet mrufs = s:mrufs + diskmrufs\n\tretu s:chop(mrufs)\nendf\n\nfu! s:chop(mrufs)\n\tif len(a:mrufs) > {s:max} | cal remove(a:mrufs, {s:max}, -1) | en\n\tretu a:mrufs\nendf\n\nfu! s:reformat(mrufs, ...)\n\tlet cwd = getcwd()\n\tlet cwd .= cwd !~ '[\\/]$' ? ctrlp#utils#lash() : ''\n\tif {s:re}\n\t\tlet cwd = exists('+ssl') ? tr(cwd, '/', '\\') : cwd\n\t\tcal filter(a:mrufs, '!stridx(v:val, cwd)')\n\ten\n\tif a:0 && a:1 == 'raw' | retu a:mrufs | en\n\tlet idx = strlen(cwd)\n\tif exists('+ssl') && &ssl\n\t\tlet cwd = tr(cwd, '\\', '/')\n\t\tcal map(a:mrufs, 'tr(v:val, \"\\\\\", \"/\")')\n\ten\n\tretu map(a:mrufs, '!stridx(v:val, cwd) ? strpart(v:val, idx) : v:val')\nendf\n\nfu! s:record(bufnr)\n\tif s:locked | retu | en\n\tlet bufnr = a:bufnr + 0\n\tlet bufname = bufname(bufnr)\n\tif bufnr > 0 && !empty(bufname)\n\t\tcal filter(s:mrbs, 'v:val != bufnr')\n\t\tcal insert(s:mrbs, bufnr)\n\t\tcal s:addtomrufs(bufname)\n\ten\nendf\n\nfu! s:addtomrufs(fname)\n\tlet fn = fnamemodify(a:fname, ':p')\n\tlet fn = exists('+ssl') ? tr(fn, '/', '\\') : fn\n\tif ( !empty({s:in}) && fn !~# {s:in} ) || ( !empty({s:ex}) && fn =~# {s:ex} )\n\t\t\\ || !empty(getbufvar('^'.fn.'$', '&bt')) || !filereadable(fn) | retu\n\ten\n\tlet idx = index(s:mrufs, fn, 0, !{s:cseno})\n\tif idx\n\t\tcal filter(s:mrufs, 'v:val !='.( {s:cseno} ? '#' : '?' ).' fn')\n\t\tcal insert(s:mrufs, fn)\n\t\tif {s:soup} && idx < 0\n\t\t\tcal s:savetofile(s:mergelists())\n\t\ten\n\ten\nendf\n\nfu! s:savetofile(mrufs)\n\tcal ctrlp#utils#writecache(a:mrufs, s:cadir, s:cafile)\nendf\n\" Public {{{1\nfu! ctrlp#mrufiles#refresh(...)\n\tlet mrufs = s:mergelists()\n\tcal filter(mrufs, '!empty(ctrlp#utils#glob(v:val, 1)) && !s:excl(v:val)')\n\tif exists('+ssl')\n\t\tcal map(mrufs, 'tr(v:val, \"/\", \"\\\\\")')\n\t\tcal map(s:mrufs, 'tr(v:val, \"/\", \"\\\\\")')\n\t\tlet cond = 'count(mrufs, v:val, !{s:cseno}) == 1'\n\t\tcal filter(mrufs, cond)\n\t\tcal filter(s:mrufs, cond)\n\ten\n\tcal s:savetofile(mrufs)\n\tretu a:0 && a:1 == 'raw' ? [] : s:reformat(mrufs)\nendf\n\nfu! ctrlp#mrufiles#remove(files)\n\tlet mrufs = []\n\tif a:files != []\n\t\tlet mrufs = s:mergelists()\n\t\tlet cond = 'index(a:files, v:val, 0, !{s:cseno}) < 0'\n\t\tcal filter(mrufs, cond)\n\t\tcal filter(s:mrufs, cond)\n\ten\n\tcal s:savetofile(mrufs)\n\tretu s:reformat(mrufs)\nendf\n\nfu! ctrlp#mrufiles#add(fn)\n\tif !empty(a:fn)\n\t\tcal s:addtomrufs(a:fn)\n\ten\nendf\n\nfu! ctrlp#mrufiles#list(...)\n\tretu a:0 ? a:1 == 'raw' ? s:reformat(s:mergelists(), a:1) : 0\n\t\t\\ : s:reformat(s:mergelists())\nendf\n\nfu! ctrlp#mrufiles#bufs()\n\tretu s:mrbs\nendf\n\nfu! ctrlp#mrufiles#tgrel()\n\tlet {s:re} = !{s:re}\nendf\n\nfu! ctrlp#mrufiles#cachefile()\n\tif !exists('s:cadir') || !exists('s:cafile')\n\t\tlet s:cadir = ctrlp#utils#cachedir().ctrlp#utils#lash().'mru'\n\t\tlet s:cafile = s:cadir.ctrlp#utils#lash().'cache.txt'\n\ten\n\tretu s:cafile\nendf\n\nfu! ctrlp#mrufiles#init()\n\tif !has('autocmd') | retu | en\n\tlet s:locked = 0\n\taug CtrlPMRUF\n\t\tau!\n\t\tau BufAdd,BufEnter,BufLeave,BufWritePost * cal s:record(expand('<abuf>', 1))\n\t\tau QuickFixCmdPre  *vimgrep* let s:locked = 1\n\t\tau QuickFixCmdPost *vimgrep* let s:locked = 0\n\t\tau VimLeavePre * cal s:savetofile(s:mergelists())\n\taug END\nendf\n\"}}}\n\n\" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2\n"
  },
  {
    "path": ".vim/bundle/ctrlp.vim/autoload/ctrlp/quickfix.vim",
    "content": "\" =============================================================================\n\" File:          autoload/ctrlp/quickfix.vim\n\" Description:   Quickfix extension\n\" Author:        Kien Nguyen <github.com/kien>\n\" =============================================================================\n\n\" Init {{{1\nif exists('g:loaded_ctrlp_quickfix') && g:loaded_ctrlp_quickfix\n\tfini\nen\nlet g:loaded_ctrlp_quickfix = 1\n\ncal add(g:ctrlp_ext_vars, {\n\t\\ 'init': 'ctrlp#quickfix#init()',\n\t\\ 'accept': 'ctrlp#quickfix#accept',\n\t\\ 'lname': 'quickfix',\n\t\\ 'sname': 'qfx',\n\t\\ 'type': 'line',\n\t\\ 'sort': 0,\n\t\\ 'nolim': 1,\n\t\\ })\n\nlet s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)\n\nfu! s:lineout(dict)\n\tretu printf('%s|%d:%d| %s', bufname(a:dict['bufnr']), a:dict['lnum'],\n\t\t\\ a:dict['col'], matchstr(a:dict['text'], '\\s*\\zs.*\\S'))\nendf\n\" Utilities {{{1\nfu! s:syntax()\n\tif !ctrlp#nosy()\n\t\tcal ctrlp#hicheck('CtrlPqfLineCol', 'Search')\n\t\tsy match CtrlPqfLineCol '|\\zs\\d\\+:\\d\\+\\ze|'\n\ten\nendf\n\" Public {{{1\nfu! ctrlp#quickfix#init()\n\tcal s:syntax()\n\tretu map(getqflist(), 's:lineout(v:val)')\nendf\n\nfu! ctrlp#quickfix#accept(mode, str)\n\tlet vals = matchlist(a:str, '^\\([^|]\\+\\ze\\)|\\(\\d\\+\\):\\(\\d\\+\\)|')\n\tif vals == [] || vals[1] == '' | retu | en\n\tcal ctrlp#acceptfile(a:mode, vals[1])\n\tlet cur_pos = getpos('.')[1:2]\n\tif cur_pos != [1, 1] && cur_pos != map(vals[2:3], 'str2nr(v:val)')\n\t\tmark '\n\ten\n\tcal cursor(vals[2], vals[3])\n\tsil! norm! zvzz\nendf\n\nfu! ctrlp#quickfix#id()\n\tretu s:id\nendf\n\"}}}\n\n\" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2\n"
  },
  {
    "path": ".vim/bundle/ctrlp.vim/autoload/ctrlp/rtscript.vim",
    "content": "\" =============================================================================\n\" File:          autoload/ctrlp/rtscript.vim\n\" Description:   Runtime scripts extension\n\" Author:        Kien Nguyen <github.com/kien>\n\" =============================================================================\n\n\" Init {{{1\nif exists('g:loaded_ctrlp_rtscript') && g:loaded_ctrlp_rtscript\n\tfini\nen\nlet [g:loaded_ctrlp_rtscript, g:ctrlp_newrts] = [1, 0]\n\ncal add(g:ctrlp_ext_vars, {\n\t\\ 'init': 'ctrlp#rtscript#init(s:caching)',\n\t\\ 'accept': 'ctrlp#acceptfile',\n\t\\ 'lname': 'runtime scripts',\n\t\\ 'sname': 'rts',\n\t\\ 'type': 'path',\n\t\\ 'opmul': 1,\n\t\\ })\n\nlet s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)\n\nlet s:filecounts = {}\n\" Utilities {{{1\nfu! s:nocache()\n\tretu g:ctrlp_newrts ||\n\t\t\\ !s:caching || ( s:caching > 1 && get(s:filecounts, s:cwd) < s:caching )\nendf\n\" Public {{{1\nfu! ctrlp#rtscript#init(caching)\n\tlet [s:caching, s:cwd] = [a:caching, getcwd()]\n\tif s:nocache() ||\n\t\t\\ !( exists('g:ctrlp_rtscache') && g:ctrlp_rtscache[0] == &rtp )\n\t\tsil! cal ctrlp#progress('Indexing...')\n\t\tlet entries = split(globpath(ctrlp#utils#fnesc(&rtp, 'g'), '**/*.*'), \"\\n\")\n\t\tcal filter(entries, 'count(entries, v:val) == 1')\n\t\tlet [entries, echoed] = [ctrlp#dirnfile(entries)[1], 1]\n\tel\n\t\tlet [entries, results] = g:ctrlp_rtscache[2:3]\n\ten\n\tif s:nocache() ||\n\t\t\\ !( exists('g:ctrlp_rtscache') && g:ctrlp_rtscache[:1] == [&rtp, s:cwd] )\n\t\tif !exists('echoed')\n\t\t\tsil! cal ctrlp#progress('Processing...')\n\t\ten\n\t\tlet results = map(copy(entries), 'fnamemodify(v:val, '':.'')')\n\ten\n\tlet [g:ctrlp_rtscache, g:ctrlp_newrts] = [[&rtp, s:cwd, entries, results], 0]\n\tcal extend(s:filecounts, { s:cwd : len(results) })\n\tretu results\nendf\n\nfu! ctrlp#rtscript#id()\n\tretu s:id\nendf\n\"}}}\n\n\" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2\n"
  },
  {
    "path": ".vim/bundle/ctrlp.vim/autoload/ctrlp/tag.vim",
    "content": "\" =============================================================================\n\" File:          autoload/ctrlp/tag.vim\n\" Description:   Tag file extension\n\" Author:        Kien Nguyen <github.com/kien>\n\" =============================================================================\n\n\" Init {{{1\nif exists('g:loaded_ctrlp_tag') && g:loaded_ctrlp_tag\n\tfini\nen\nlet g:loaded_ctrlp_tag = 1\n\ncal add(g:ctrlp_ext_vars, {\n\t\\ 'init': 'ctrlp#tag#init()',\n\t\\ 'accept': 'ctrlp#tag#accept',\n\t\\ 'lname': 'tags',\n\t\\ 'sname': 'tag',\n\t\\ 'enter': 'ctrlp#tag#enter()',\n\t\\ 'type': 'tabs',\n\t\\ })\n\nlet s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)\n\" Utilities {{{1\nfu! s:findcount(str)\n\tlet [tg, ofname] = split(a:str, '\\t\\+\\ze[^\\t]\\+$')\n\tlet tgs = taglist('^'.tg.'$')\n\tif len(tgs) < 2\n\t\tretu [0, 0, 0, 0]\n\ten\n\tlet bname = fnamemodify(bufname('%'), ':p')\n\tlet fname = expand(fnamemodify(simplify(ofname), ':s?^[.\\/]\\+??:p:.'), 1)\n\tlet [fnd, cnt, pos, ctgs, otgs] = [0, 0, 0, [], []]\n\tfor tgi in tgs\n\t\tlet lst = bname == fnamemodify(tgi[\"filename\"], ':p') ? 'ctgs' : 'otgs'\n\t\tcal call('add', [{lst}, tgi])\n\tendfo\n\tlet ntgs = ctgs + otgs\n\tfor tgi in ntgs\n\t\tlet cnt += 1\n\t\tlet fulname = fnamemodify(tgi[\"filename\"], ':p')\n\t\tif stridx(fulname, fname) >= 0\n\t\t\t\\ && strlen(fname) + stridx(fulname, fname) == strlen(fulname)\n\t\t\tlet fnd += 1\n\t\t\tlet pos = cnt\n\t\ten\n\tendfo\n\tlet cnt = 0\n\tfor tgi in ntgs\n\t\tlet cnt += 1\n\t\tif tgi[\"filename\"] == ofname\n\t\t\tlet [fnd, pos] = [0, cnt]\n\t\ten\n\tendfo\n\tretu [1, fnd, pos, len(ctgs)]\nendf\n\nfu! s:filter(tags)\n\tlet nr = 0\n\twh 0 < 1\n\t\tif a:tags == [] | brea | en\n\t\tif a:tags[nr] =~ '^!' && a:tags[nr] !~# '^!_TAG_'\n\t\t\tlet nr += 1\n\t\t\tcon\n\t\ten\n\t\tif a:tags[nr] =~# '^!_TAG_' && len(a:tags) > nr\n\t\t\tcal remove(a:tags, nr)\n\t\tel\n\t\t\tbrea\n\t\ten\n\tendw\n\tretu a:tags\nendf\n\nfu! s:syntax()\n\tif !ctrlp#nosy()\n\t\tcal ctrlp#hicheck('CtrlPTabExtra', 'Comment')\n\t\tsy match CtrlPTabExtra '\\zs\\t.*\\ze$'\n\ten\nendf\n\" Public {{{1\nfu! ctrlp#tag#init()\n\tif empty(s:tagfiles) | retu [] | en\n\tlet g:ctrlp_alltags = []\n\tlet tagfiles = sort(filter(s:tagfiles, 'count(s:tagfiles, v:val) == 1'))\n\tfor each in tagfiles\n\t\tlet alltags = s:filter(ctrlp#utils#readfile(each))\n\t\tcal extend(g:ctrlp_alltags, alltags)\n\tendfo\n\tcal s:syntax()\n\tretu g:ctrlp_alltags\nendf\n\nfu! ctrlp#tag#accept(mode, str)\n\tcal ctrlp#exit()\n\tlet str = matchstr(a:str, '^[^\\t]\\+\\t\\+[^\\t]\\+\\ze\\t')\n\tlet [tg, fdcnt] = [split(str, '^[^\\t]\\+\\zs\\t')[0], s:findcount(str)]\n\tlet cmds = {\n\t\t\\ 't': ['tab sp', 'tab stj'],\n\t\t\\ 'h': ['sp', 'stj'],\n\t\t\\ 'v': ['vs', 'vert stj'],\n\t\t\\ 'e': ['', 'tj'],\n\t\t\\ }\n\tlet utg = fdcnt[3] < 2 && fdcnt[0] == 1 && fdcnt[1] == 1\n\tlet cmd = !fdcnt[0] || utg ? cmds[a:mode][0] : cmds[a:mode][1]\n\tlet cmd = a:mode == 'e' && ctrlp#modfilecond(!&aw)\n\t\t\\ ? ( cmd == 'tj' ? 'stj' : 'sp' ) : cmd\n\tlet cmd = a:mode == 't' ? ctrlp#tabcount().cmd : cmd\n\tif !fdcnt[0] || utg\n\t\tif cmd != ''\n\t\t\texe cmd\n\t\ten\n\t\tlet save_cst = &cst\n\t\tset cst&\n\t\tcal feedkeys(\":\".( utg ? fdcnt[2] : \"\" ).\"ta \".tg.\"\\r\", 'nt')\n\t\tlet &cst = save_cst\n\tel\n\t\tlet ext = \"\"\n\t\tif fdcnt[1] < 2 && fdcnt[2]\n\t\t\tlet [sav_more, &more] = [&more, 0]\n\t\t\tlet ext = fdcnt[2].\"\\r\".\":let &more = \".sav_more.\"\\r\"\n\t\ten\n\t\tcal feedkeys(\":\".cmd.\" \".tg.\"\\r\".ext, 'nt')\n\ten\n\tcal ctrlp#setlcdir()\nendf\n\nfu! ctrlp#tag#id()\n\tretu s:id\nendf\n\nfu! ctrlp#tag#enter()\n\tlet tfs = tagfiles()\n\tlet s:tagfiles = tfs != [] ? filter(map(tfs, 'fnamemodify(v:val, \":p\")'),\n\t\t\\ 'filereadable(v:val)') : []\nendf\n\"}}}\n\n\" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2\n"
  },
  {
    "path": ".vim/bundle/ctrlp.vim/autoload/ctrlp/undo.vim",
    "content": "\" =============================================================================\n\" File:          autoload/ctrlp/undo.vim\n\" Description:   Undo extension\n\" Author:        Kien Nguyen <github.com/kien>\n\" =============================================================================\n\n\" Init {{{1\nif ( exists('g:loaded_ctrlp_undo') && g:loaded_ctrlp_undo )\n\tfini\nen\nlet g:loaded_ctrlp_undo = 1\n\ncal add(g:ctrlp_ext_vars, {\n\t\\ 'init': 'ctrlp#undo#init()',\n\t\\ 'accept': 'ctrlp#undo#accept',\n\t\\ 'lname': 'undo',\n\t\\ 'sname': 'udo',\n\t\\ 'enter': 'ctrlp#undo#enter()',\n\t\\ 'exit': 'ctrlp#undo#exit()',\n\t\\ 'type': 'line',\n\t\\ 'sort': 0,\n\t\\ 'nolim': 1,\n\t\\ })\n\nlet s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)\n\nlet s:text = map(['second', 'seconds', 'minutes', 'hours', 'days', 'weeks',\n\t\\ 'months', 'years'], '\" \".v:val.\" ago\"')\n\" Utilities {{{1\nfu! s:getundo()\n\tif exists('*undotree')\n\t\t\\ && ( v:version > 703 || ( v:version == 703 && has('patch005') ) )\n\t\tretu [1, undotree()]\n\tel\n\t\tredi => result\n\t\tsil! undol\n\t\tredi END\n\t\tretu [0, split(result, \"\\n\")[1:]]\n\ten\nendf\n\nfu! s:flatten(tree, cur)\n\tlet flatdict = {}\n\tfor each in a:tree\n\t\tlet saved = has_key(each, 'save') ? 'saved' : ''\n\t\tlet current = each['seq'] == a:cur ? 'current' : ''\n\t\tcal extend(flatdict, { each['seq'] : [each['time'], saved, current] })\n\t\tif has_key(each, 'alt')\n\t\t\tcal extend(flatdict, s:flatten(each['alt'], a:cur))\n\t\ten\n\tendfo\n\tretu flatdict\nendf\n\nfu! s:elapsed(nr)\n\tlet [text, time] = [s:text, localtime() - a:nr]\n\tlet mins = time / 60\n\tlet hrs  = time / 3600\n\tlet days = time / 86400\n\tlet wks  = time / 604800\n\tlet mons = time / 2592000\n\tlet yrs  = time / 31536000\n\tif yrs > 1\n\t\tretu yrs.text[7]\n\telsei mons > 1\n\t\tretu mons.text[6]\n\telsei wks > 1\n\t\tretu wks.text[5]\n\telsei days > 1\n\t\tretu days.text[4]\n\telsei hrs > 1\n\t\tretu hrs.text[3]\n\telsei mins > 1\n\t\tretu mins.text[2]\n\telsei time == 1\n\t\tretu time.text[0]\n\telsei time < 120\n\t\tretu time.text[1]\n\ten\nendf\n\nfu! s:syntax()\n\tif ctrlp#nosy() | retu | en\n\tfor [ke, va] in items({'T': 'Directory', 'Br': 'Comment', 'Nr': 'String',\n\t\t\\ 'Sv': 'Comment', 'Po': 'Title'})\n\t\tcal ctrlp#hicheck('CtrlPUndo'.ke, va)\n\tendfo\n\tsy match CtrlPUndoT '\\v\\d+ \\zs[^ ]+\\ze|\\d+:\\d+:\\d+'\n\tsy match CtrlPUndoBr '\\[\\|\\]'\n\tsy match CtrlPUndoNr '\\[\\d\\+\\]' contains=CtrlPUndoBr\n\tsy match CtrlPUndoSv 'saved'\n\tsy match CtrlPUndoPo 'current'\nendf\n\nfu! s:dict2list(dict)\n\tfor ke in keys(a:dict)\n\t\tlet a:dict[ke][0] = s:elapsed(a:dict[ke][0])\n\tendfo\n\tretu map(keys(a:dict), 'eval(''[v:val, a:dict[v:val]]'')')\nendf\n\nfu! s:compval(...)\n\tretu a:2[0] - a:1[0]\nendf\n\nfu! s:format(...)\n\tlet saved = !empty(a:1[1][1]) ? ' '.a:1[1][1] : ''\n\tlet current = !empty(a:1[1][2]) ? ' '.a:1[1][2] : ''\n\tretu a:1[1][0].' ['.a:1[0].']'.saved.current\nendf\n\nfu! s:formatul(...)\n\tlet parts = matchlist(a:1,\n\t\t\\ '\\v^\\s+(\\d+)\\s+\\d+\\s+([^ ]+\\s?[^ ]+|\\d+\\s\\w+\\s\\w+)(\\s*\\d*)$')\n\tretu parts == [] ? '----'\n\t\t\\ : parts[2].' ['.parts[1].']'.( parts[3] != '' ? ' saved' : '' )\nendf\n\" Public {{{1\nfu! ctrlp#undo#init()\n\tlet entries = s:undos[0] ? s:undos[1]['entries'] : s:undos[1]\n\tif empty(entries) | retu [] | en\n\tif !exists('s:lines')\n\t\tif s:undos[0]\n\t\t\tlet entries = s:dict2list(s:flatten(entries, s:undos[1]['seq_cur']))\n\t\t\tlet s:lines = map(sort(entries, 's:compval'), 's:format(v:val)')\n\t\tel\n\t\t\tlet s:lines = map(reverse(entries), 's:formatul(v:val)')\n\t\ten\n\ten\n\tcal s:syntax()\n\tretu s:lines\nendf\n\nfu! ctrlp#undo#accept(mode, str)\n\tlet undon = matchstr(a:str, '\\[\\zs\\d\\+\\ze\\]')\n\tif empty(undon) | retu | en\n\tcal ctrlp#exit()\n\texe 'u' undon\nendf\n\nfu! ctrlp#undo#id()\n\tretu s:id\nendf\n\nfu! ctrlp#undo#enter()\n\tlet s:undos = s:getundo()\nendf\n\nfu! ctrlp#undo#exit()\n\tunl! s:lines\nendf\n\"}}}\n\n\" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2\n"
  },
  {
    "path": ".vim/bundle/ctrlp.vim/autoload/ctrlp/utils.vim",
    "content": "\" =============================================================================\n\" File:          autoload/ctrlp/utils.vim\n\" Description:   Utilities\n\" Author:        Kien Nguyen <github.com/kien>\n\" =============================================================================\n\n\" Static variables {{{1\nfu! ctrlp#utils#lash()\n\tretu &ssl || !exists('+ssl') ? '/' : '\\'\nendf\n\nfu! s:lash(...)\n\tretu ( a:0 ? a:1 : getcwd() ) !~ '[\\/]$' ? s:lash : ''\nendf\n\nfu! ctrlp#utils#opts()\n\tlet s:lash = ctrlp#utils#lash()\n\tlet usrhome = $HOME . s:lash( $HOME )\n\tlet cahome = exists('$XDG_CACHE_HOME') ? $XDG_CACHE_HOME : usrhome.'.cache'\n\tlet cadir = isdirectory(usrhome.'.ctrlp_cache')\n\t\t\\ ? usrhome.'.ctrlp_cache' : cahome.s:lash(cahome).'ctrlp'\n\tif exists('g:ctrlp_cache_dir')\n\t\tlet cadir = expand(g:ctrlp_cache_dir, 1)\n\t\tif isdirectory(cadir.s:lash(cadir).'.ctrlp_cache')\n\t\t\tlet cadir = cadir.s:lash(cadir).'.ctrlp_cache'\n\t\ten\n\ten\n\tlet s:cache_dir = cadir\nendf\ncal ctrlp#utils#opts()\n\nlet s:wig_cond = v:version > 702 || ( v:version == 702 && has('patch051') )\n\" Files and Directories {{{1\nfu! ctrlp#utils#cachedir()\n\tretu s:cache_dir\nendf\n\nfu! ctrlp#utils#cachefile(...)\n\tlet [tail, dir] = [a:0 == 1 ? '.'.a:1 : '', a:0 == 2 ? a:1 : getcwd()]\n\tlet cache_file = substitute(dir, '\\([\\/]\\|^\\a\\zs:\\)', '%', 'g').tail.'.txt'\n\tretu a:0 == 1 ? cache_file : s:cache_dir.s:lash(s:cache_dir).cache_file\nendf\n\nfu! ctrlp#utils#readfile(file)\n\tif filereadable(a:file)\n\t\tlet data = readfile(a:file)\n\t\tif empty(data) || type(data) != 3\n\t\t\tunl data\n\t\t\tlet data = []\n\t\ten\n\t\tretu data\n\ten\n\tretu []\nendf\n\nfu! ctrlp#utils#mkdir(dir)\n\tif exists('*mkdir') && !isdirectory(a:dir)\n\t\tsil! cal mkdir(a:dir, 'p')\n\ten\n\tretu a:dir\nendf\n\nfu! ctrlp#utils#writecache(lines, ...)\n\tif isdirectory(ctrlp#utils#mkdir(a:0 ? a:1 : s:cache_dir))\n\t\tsil! cal writefile(a:lines, a:0 >= 2 ? a:2 : ctrlp#utils#cachefile())\n\ten\nendf\n\nfu! ctrlp#utils#glob(...)\n\tlet path = ctrlp#utils#fnesc(a:1, 'g')\n\tretu s:wig_cond ? glob(path, a:2) : glob(path)\nendf\n\nfu! ctrlp#utils#globpath(...)\n\tretu call('globpath', s:wig_cond ? a:000 : a:000[:1])\nendf\n\nfu! ctrlp#utils#fnesc(path, type, ...)\n\tif exists('*fnameescape')\n\t\tif exists('+ssl')\n\t\t\tif a:type == 'c'\n\t\t\t\tlet path = escape(a:path, '%#')\n\t\t\telsei a:type == 'f'\n\t\t\t\tlet path = fnameescape(a:path)\n\t\t\telsei a:type == 'g'\n\t\t\t\tlet path = escape(a:path, '?*')\n\t\t\ten\n\t\t\tlet path = substitute(path, '[', '[[]', 'g')\n\t\tel\n\t\t\tlet path = fnameescape(a:path)\n\t\ten\n\tel\n\t\tif exists('+ssl')\n\t\t\tif a:type == 'c'\n\t\t\t\tlet path = escape(a:path, '%#')\n\t\t\telsei a:type == 'f'\n\t\t\t\tlet path = escape(a:path, \" \\t\\n%#*?|<\\\"\")\n\t\t\telsei a:type == 'g'\n\t\t\t\tlet path = escape(a:path, '?*')\n\t\t\ten\n\t\t\tlet path = substitute(path, '[', '[[]', 'g')\n\t\tel\n\t\t\tlet path = escape(a:path, \" \\t\\n*?[{`$\\\\%#'\\\"|!<\")\n\t\ten\n\ten\n\tretu a:0 ? escape(path, a:1) : path\nendf\n\"}}}\n\n\" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2\n"
  },
  {
    "path": ".vim/bundle/ctrlp.vim/autoload/ctrlp.vim",
    "content": "\" =============================================================================\n\" File:          autoload/ctrlp.vim\n\" Description:   Fuzzy file, buffer, mru, tag, etc finder.\n\" Author:        Kien Nguyen <github.com/kien>\n\" Version:       1.79\n\" =============================================================================\n\n\" ** Static variables {{{1\n\" s:ignore() {{{2\nfu! s:ignore()\n\tlet igdirs = [\n\t\t\\ '\\.git',\n\t\t\\ '\\.hg',\n\t\t\\ '\\.svn',\n\t\t\\ '_darcs',\n\t\t\\ '\\.bzr',\n\t\t\\ '\\.cdv',\n\t\t\\ '\\~\\.dep',\n\t\t\\ '\\~\\.dot',\n\t\t\\ '\\~\\.nib',\n\t\t\\ '\\~\\.plst',\n\t\t\\ '\\.pc',\n\t\t\\ '_MTN',\n\t\t\\ 'blib',\n\t\t\\ 'CVS',\n\t\t\\ 'RCS',\n\t\t\\ 'SCCS',\n\t\t\\ '_sgbak',\n\t\t\\ 'autom4te\\.cache',\n\t\t\\ 'cover_db',\n\t\t\\ '_build',\n\t\t\\ ]\n\tlet igfiles = [\n\t\t\\ '\\~$',\n\t\t\\ '#.+#$',\n\t\t\\ '[._].*\\.swp$',\n\t\t\\ 'core\\.\\d+$',\n\t\t\\ '\\.exe$',\n\t\t\\ '\\.so$',\n\t\t\\ '\\.bak$',\n\t\t\\ '\\.png$',\n\t\t\\ '\\.jpg$',\n\t\t\\ '\\.gif$',\n\t\t\\ '\\.zip$',\n\t\t\\ '\\.rar$',\n\t\t\\ '\\.tar\\.gz$',\n\t\t\\ ]\n\tretu {\n\t\t\\ 'dir': '\\v[\\/]('.join(igdirs, '|').')$',\n\t\t\\ 'file': '\\v'.join(igfiles, '|'),\n\t\t\\ }\nendf\n\" Script local vars {{{2\nlet [s:pref, s:bpref, s:opts, s:new_opts, s:lc_opts] =\n\t\\ ['g:ctrlp_', 'b:ctrlp_', {\n\t\\ 'abbrev':                ['s:abbrev', {}],\n\t\\ 'arg_map':               ['s:argmap', 0],\n\t\\ 'buffer_func':           ['s:buffunc', {}],\n\t\\ 'by_filename':           ['s:byfname', 0],\n\t\\ 'custom_ignore':         ['s:usrign', s:ignore()],\n\t\\ 'default_input':         ['s:deftxt', 0],\n\t\\ 'dont_split':            ['s:nosplit', 'netrw'],\n\t\\ 'dotfiles':              ['s:showhidden', 0],\n\t\\ 'extensions':            ['s:extensions', []],\n\t\\ 'follow_symlinks':       ['s:folsym', 0],\n\t\\ 'highlight_match':       ['s:mathi', [1, 'CtrlPMatch']],\n\t\\ 'jump_to_buffer':        ['s:jmptobuf', 'Et'],\n\t\\ 'key_loop':              ['s:keyloop', 0],\n\t\\ 'lazy_update':           ['s:lazy', 0],\n\t\\ 'match_func':            ['s:matcher', {}],\n\t\\ 'match_window':          ['s:mw', ''],\n\t\\ 'match_window_bottom':   ['s:mwbottom', 1],\n\t\\ 'match_window_reversed': ['s:mwreverse', 1],\n\t\\ 'max_depth':             ['s:maxdepth', 40],\n\t\\ 'max_files':             ['s:maxfiles', 10000],\n\t\\ 'max_height':            ['s:mxheight', 10],\n\t\\ 'max_history':           ['s:maxhst', exists('+hi') ? &hi : 20],\n\t\\ 'mruf_default_order':    ['s:mrudef', 0],\n\t\\ 'open_func':             ['s:openfunc', {}],\n\t\\ 'open_multi':            ['s:opmul', '1v'],\n\t\\ 'open_new_file':         ['s:newfop', 'v'],\n\t\\ 'prompt_mappings':       ['s:urprtmaps', 0],\n\t\\ 'regexp_search':         ['s:regexp', 0],\n\t\\ 'root_markers':          ['s:rmarkers', []],\n\t\\ 'split_window':          ['s:splitwin', 0],\n\t\\ 'status_func':           ['s:status', {}],\n\t\\ 'tabpage_position':      ['s:tabpage', 'ac'],\n\t\\ 'use_caching':           ['s:caching', 1],\n\t\\ 'use_migemo':            ['s:migemo', 0],\n\t\\ 'user_command':          ['s:usrcmd', ''],\n\t\\ 'working_path_mode':     ['s:pathmode', 'ra'],\n\t\\ }, {\n\t\\ 'open_multiple_files':   's:opmul',\n\t\\ 'regexp':                's:regexp',\n\t\\ 'reuse_window':          's:nosplit',\n\t\\ 'show_hidden':           's:showhidden',\n\t\\ 'switch_buffer':         's:jmptobuf',\n\t\\ }, {\n\t\\ 'root_markers':          's:rmarkers',\n\t\\ 'user_command':          's:usrcmd',\n\t\\ 'working_path_mode':     's:pathmode',\n\t\\ }]\n\n\" Global options\nlet s:glbs = { 'magic': 1, 'to': 1, 'tm': 0, 'sb': 1, 'hls': 0, 'im': 0,\n\t\\ 'report': 9999, 'sc': 0, 'ss': 0, 'siso': 0, 'mfd': 200, 'ttimeout': 0,\n\t\\ 'gcr': 'a:blinkon0', 'ic': 1, 'lmap': '', 'mousef': 0, 'imd': 1 }\n\n\" Keymaps\nlet [s:lcmap, s:prtmaps] = ['nn <buffer> <silent>', {\n\t\\ 'PrtBS()':              ['<bs>', '<c-]>'],\n\t\\ 'PrtDelete()':          ['<del>'],\n\t\\ 'PrtDeleteWord()':      ['<c-w>'],\n\t\\ 'PrtClear()':           ['<c-u>'],\n\t\\ 'PrtSelectMove(\"j\")':   ['<c-j>', '<down>'],\n\t\\ 'PrtSelectMove(\"k\")':   ['<c-k>', '<up>'],\n\t\\ 'PrtSelectMove(\"t\")':   ['<Home>', '<kHome>'],\n\t\\ 'PrtSelectMove(\"b\")':   ['<End>', '<kEnd>'],\n\t\\ 'PrtSelectMove(\"u\")':   ['<PageUp>', '<kPageUp>'],\n\t\\ 'PrtSelectMove(\"d\")':   ['<PageDown>', '<kPageDown>'],\n\t\\ 'PrtHistory(-1)':       ['<c-n>'],\n\t\\ 'PrtHistory(1)':        ['<c-p>'],\n\t\\ 'AcceptSelection(\"e\")': ['<cr>', '<2-LeftMouse>'],\n\t\\ 'AcceptSelection(\"h\")': ['<c-x>', '<c-cr>', '<c-s>'],\n\t\\ 'AcceptSelection(\"t\")': ['<c-t>'],\n\t\\ 'AcceptSelection(\"v\")': ['<c-v>', '<RightMouse>'],\n\t\\ 'ToggleFocus()':        ['<s-tab>'],\n\t\\ 'ToggleRegex()':        ['<c-r>'],\n\t\\ 'ToggleByFname()':      ['<c-d>'],\n\t\\ 'ToggleType(1)':        ['<c-f>', '<c-up>'],\n\t\\ 'ToggleType(-1)':       ['<c-b>', '<c-down>'],\n\t\\ 'PrtExpandDir()':       ['<tab>'],\n\t\\ 'PrtInsert(\"c\")':       ['<MiddleMouse>', '<insert>'],\n\t\\ 'PrtInsert()':          ['<c-\\>'],\n\t\\ 'PrtCurStart()':        ['<c-a>'],\n\t\\ 'PrtCurEnd()':          ['<c-e>'],\n\t\\ 'PrtCurLeft()':         ['<c-h>', '<left>', '<c-^>'],\n\t\\ 'PrtCurRight()':        ['<c-l>', '<right>'],\n\t\\ 'PrtClearCache()':      ['<F5>'],\n\t\\ 'PrtDeleteEnt()':       ['<F7>'],\n\t\\ 'CreateNewFile()':      ['<c-y>'],\n\t\\ 'MarkToOpen()':         ['<c-z>'],\n\t\\ 'OpenMulti()':          ['<c-o>'],\n\t\\ 'PrtExit()':            ['<esc>', '<c-c>', '<c-g>'],\n\t\\ }]\n\nif !has('gui_running')\n\tcal add(s:prtmaps['PrtBS()'], remove(s:prtmaps['PrtCurLeft()'], 0))\nen\n\nlet s:compare_lim = 3000\n\nlet s:ficounts = {}\n\nlet s:ccex = s:pref.'clear_cache_on_exit'\n\n\" Regexp\nlet s:fpats = {\n\t\\ '^\\(\\\\|\\)\\|\\(\\\\|\\)$': '\\\\|',\n\t\\ '^\\\\\\(zs\\|ze\\|<\\|>\\)': '^\\\\\\(zs\\|ze\\|<\\|>\\)',\n\t\\ '^\\S\\*$': '\\*',\n\t\\ '^\\S\\\\?$': '\\\\?',\n\t\\ }\n\n\" Keypad\nlet s:kprange = {\n\t\\ 'Plus': '+',\n\t\\ 'Minus': '-',\n\t\\ 'Divide': '/',\n\t\\ 'Multiply': '*',\n\t\\ 'Point': '.',\n\t\\ }\n\n\" Highlight groups\nlet s:hlgrps = {\n\t\\ 'NoEntries': 'Error',\n\t\\ 'Mode1': 'Character',\n\t\\ 'Mode2': 'LineNr',\n\t\\ 'Stats': 'Function',\n\t\\ 'Match': 'Identifier',\n\t\\ 'PrtBase': 'Comment',\n\t\\ 'PrtText': 'Normal',\n\t\\ 'PrtCursor': 'Constant',\n\t\\ }\n\" Get the options {{{2\nfu! s:opts(...)\n\tunl! s:usrign s:usrcmd s:urprtmaps\n\tfor each in ['byfname', 'regexp', 'extensions'] | if exists('s:'.each)\n\t\tlet {each} = s:{each}\n\ten | endfo\n\tfor [ke, va] in items(s:opts)\n\t\tlet {va[0]} = exists(s:pref.ke) ? {s:pref.ke} : va[1]\n\tendfo\n\tunl va\n\tfor [ke, va] in items(s:new_opts)\n\t\tlet {va} = {exists(s:pref.ke) ? s:pref.ke : va}\n\tendfo\n\tunl va\n\tfor [ke, va] in items(s:lc_opts)\n\t\tif exists(s:bpref.ke)\n\t\t\tunl {va}\n\t\t\tlet {va} = {s:bpref.ke}\n\t\ten\n\tendfo\n\t\" Match window options\n\tcal s:match_window_opts()\n\t\" One-time values\n\tif a:0 && a:1 != {}\n\t\tunl va\n\t\tfor [ke, va] in items(a:1)\n\t\t\tlet opke = substitute(ke, '\\(\\w:\\)\\?ctrlp_', '', '')\n\t\t\tif has_key(s:lc_opts, opke)\n\t\t\t\tlet sva = s:lc_opts[opke]\n\t\t\t\tunl {sva}\n\t\t\t\tlet {sva} = va\n\t\t\ten\n\t\tendfo\n\ten\n\tfor each in ['byfname', 'regexp'] | if exists(each)\n\t\tlet s:{each} = {each}\n\ten | endfo\n\tif !exists('g:ctrlp_newcache') | let g:ctrlp_newcache = 0 | en\n\tlet s:maxdepth = min([s:maxdepth, 100])\n\tlet s:glob = s:showhidden ? '.*\\|*' : '*'\n\tlet s:igntype = empty(s:usrign) ? -1 : type(s:usrign)\n\tlet s:lash = ctrlp#utils#lash()\n\tif s:keyloop\n\t\tlet [s:lazy, s:glbs['imd']] = [0, 0]\n\ten\n\tif s:lazy\n\t\tcal extend(s:glbs, { 'ut': ( s:lazy > 1 ? s:lazy : 250 ) })\n\ten\n\t\" Extensions\n\tif !( exists('extensions') && extensions == s:extensions )\n\t\tfor each in s:extensions\n\t\t\texe 'ru autoload/ctrlp/'.each.'.vim'\n\t\tendfo\n\ten\n\t\" Keymaps\n\tif type(s:urprtmaps) == 4\n\t\tcal extend(s:prtmaps, s:urprtmaps)\n\ten\nendf\n\nfu! s:match_window_opts()\n\tlet s:mw_pos =\n\t\t\\ s:mw =~ 'top\\|bottom' ? matchstr(s:mw, 'top\\|bottom') :\n\t\t\\ exists('g:ctrlp_match_window_bottom') ? ( s:mwbottom ? 'bottom' : 'top' )\n\t\t\\ : 'bottom'\n\tlet s:mw_order =\n\t\t\\ s:mw =~ 'order:[^,]\\+' ? matchstr(s:mw, 'order:\\zs[^,]\\+') :\n\t\t\\ exists('g:ctrlp_match_window_reversed') ? ( s:mwreverse ? 'btt' : 'ttb' )\n\t\t\\ : 'btt'\n\tlet s:mw_max =\n\t\t\\ s:mw =~ 'max:[^,]\\+' ? str2nr(matchstr(s:mw, 'max:\\zs\\d\\+')) :\n\t\t\\ exists('g:ctrlp_max_height') ? s:mxheight\n\t\t\\ : 10\n\tlet s:mw_min =\n\t\t\\ s:mw =~ 'min:[^,]\\+' ? str2nr(matchstr(s:mw, 'min:\\zs\\d\\+')) : 1\n\tlet [s:mw_max, s:mw_min] = [max([s:mw_max, 1]), max([s:mw_min, 1])]\n\tlet s:mw_min = min([s:mw_min, s:mw_max])\n\tlet s:mw_res =\n\t\t\\ s:mw =~ 'results:[^,]\\+' ? str2nr(matchstr(s:mw, 'results:\\zs\\d\\+'))\n\t\t\\ : min([s:mw_max, &lines])\n\tlet s:mw_res = max([s:mw_res, 1])\nendf\n\"}}}1\n\" * Open & Close {{{1\nfu! s:Open()\n\tcal s:log(1)\n\tcal s:getenv()\n\tcal s:execextvar('enter')\n\tsil! exe 'keepa' ( s:mw_pos == 'top' ? 'to' : 'bo' ) '1new ControlP'\n\tcal s:buffunc(1)\n\tlet [s:bufnr, s:winw] = [bufnr('%'), winwidth(0)]\n\tlet [s:focus, s:prompt] = [1, ['', '', '']]\n\tabc <buffer>\n\tif !exists('s:hstry')\n\t\tlet hst = filereadable(s:gethistloc()[1]) ? s:gethistdata() : ['']\n\t\tlet s:hstry = empty(hst) || !s:maxhst ? [''] : hst\n\ten\n\tfor [ke, va] in items(s:glbs) | if exists('+'.ke)\n\t\tsil! exe 'let s:glb_'.ke.' = &'.ke.' | let &'.ke.' = '.string(va)\n\ten | endfo\n\tif s:opmul != '0' && has('signs')\n\t\tsign define ctrlpmark text=+> texthl=Search\n\ten\n\tcal s:setupblank()\nendf\n\nfu! s:Close()\n\tcal s:buffunc(0)\n\tif winnr('$') == 1\n\t\tbw!\n\tel\n\t\ttry | bun!\n\t\tcat | clo! | endt\n\t\tcal s:unmarksigns()\n\ten\n\tfor key in keys(s:glbs) | if exists('+'.key)\n\t\tsil! exe 'let &'.key.' = s:glb_'.key\n\ten | endfo\n\tif exists('s:glb_acd') | let &acd = s:glb_acd | en\n\tlet g:ctrlp_lines = []\n\tif s:winres[1] >= &lines && s:winres[2] == winnr('$')\n\t\texe s:winres[0].s:winres[0]\n\ten\n\tunl! s:focus s:hisidx s:hstgot s:marked s:statypes s:cline s:init s:savestr\n\t\t\\ s:mrbs s:did_exp\n\tcal ctrlp#recordhist()\n\tcal s:execextvar('exit')\n\tcal s:log(0)\n\tlet v:errmsg = s:ermsg\n\tec\nendf\n\" * Clear caches {{{1\nfu! ctrlp#clr(...)\n\tlet [s:matches, g:ctrlp_new{ a:0 ? a:1 : 'cache' }] = [1, 1]\nendf\n\nfu! ctrlp#clra()\n\tlet cadir = ctrlp#utils#cachedir()\n\tif isdirectory(cadir)\n\t\tlet cafiles = split(s:glbpath(s:fnesc(cadir, 'g', ','), '**', 1), \"\\n\")\n\t\tlet eval = '!isdirectory(v:val) && v:val !~ ''\\v[\\/]cache[.a-z]+$|\\.log$'''\n\t\tsil! cal map(s:ifilter(cafiles, eval), 'delete(v:val)')\n\ten\n\tcal ctrlp#clr()\nendf\n\nfu! s:Reset(args)\n\tlet opts = has_key(a:args, 'opts') ? [a:args['opts']] : []\n\tcal call('s:opts', opts)\n\tcal s:autocmds()\n\tcal ctrlp#utils#opts()\n\tcal s:execextvar('opts')\nendf\n\" * Files {{{1\nfu! ctrlp#files()\n\tlet cafile = ctrlp#utils#cachefile()\n\tif g:ctrlp_newcache || !filereadable(cafile) || s:nocache(cafile)\n\t\tlet [lscmd, s:initcwd, g:ctrlp_allfiles] = [s:lsCmd(), s:dyncwd, []]\n\t\t\" Get the list of files\n\t\tif empty(lscmd)\n\t\t\tif !ctrlp#igncwd(s:dyncwd)\n\t\t\t\tcal s:GlobPath(s:fnesc(s:dyncwd, 'g', ','), 0)\n\t\t\ten\n\t\tel\n\t\t\tsil! cal ctrlp#progress('Indexing...')\n\t\t\ttry | cal s:UserCmd(lscmd)\n\t\t\tcat | retu [] | endt\n\t\ten\n\t\t\" Remove base directory\n\t\tcal ctrlp#rmbasedir(g:ctrlp_allfiles)\n\t\tif len(g:ctrlp_allfiles) <= s:compare_lim\n\t\t\tcal sort(g:ctrlp_allfiles, 'ctrlp#complen')\n\t\ten\n\t\tcal s:writecache(cafile)\n\t\tlet catime = getftime(cafile)\n\tel\n\t\tlet catime = getftime(cafile)\n\t\tif !( exists('s:initcwd') && s:initcwd == s:dyncwd )\n\t\t\t\\ || get(s:ficounts, s:dyncwd, [0, catime])[1] != catime\n\t\t\tlet s:initcwd = s:dyncwd\n\t\t\tlet g:ctrlp_allfiles = ctrlp#utils#readfile(cafile)\n\t\ten\n\ten\n\tcal extend(s:ficounts, { s:dyncwd : [len(g:ctrlp_allfiles), catime] })\n\tretu g:ctrlp_allfiles\nendf\n\nfu! s:GlobPath(dirs, depth)\n\tlet entries = split(globpath(a:dirs, s:glob), \"\\n\")\n\tlet [dnf, depth] = [ctrlp#dirnfile(entries), a:depth + 1]\n\tcal extend(g:ctrlp_allfiles, dnf[1])\n\tif !empty(dnf[0]) && !s:maxf(len(g:ctrlp_allfiles)) && depth <= s:maxdepth\n\t\tsil! cal ctrlp#progress(len(g:ctrlp_allfiles), 1)\n\t\tcal s:GlobPath(join(map(dnf[0], 's:fnesc(v:val, \"g\", \",\")'), ','), depth)\n\ten\nendf\n\nfu! s:UserCmd(lscmd)\n\tlet [path, lscmd] = [s:dyncwd, a:lscmd]\n\tlet do_ign =\n\t\t\\ type(s:usrcmd) == 4 && has_key(s:usrcmd, 'ignore') && s:usrcmd['ignore']\n\tif do_ign && ctrlp#igncwd(s:cwd) | retu | en\n\tif exists('+ssl') && &ssl\n\t\tlet [ssl, &ssl, path] = [&ssl, 0, tr(path, '/', '\\')]\n\ten\n\tif has('win32') || has('win64')\n\t\tlet lscmd = substitute(lscmd, '\\v(^|\\&\\&\\s*)\\zscd (/d)@!', 'cd /d ', '')\n\ten\n\tlet path = exists('*shellescape') ? shellescape(path) : path\n\tlet g:ctrlp_allfiles = split(system(printf(lscmd, path)), \"\\n\")\n\tif exists('+ssl') && exists('ssl')\n\t\tlet &ssl = ssl\n\t\tcal map(g:ctrlp_allfiles, 'tr(v:val, \"\\\\\", \"/\")')\n\ten\n\tif exists('s:vcscmd') && s:vcscmd\n\t\tcal map(g:ctrlp_allfiles, 'tr(v:val, \"/\", \"\\\\\")')\n\ten\n\tif do_ign\n\t\tif !empty(s:usrign)\n\t\t\tlet g:ctrlp_allfiles = ctrlp#dirnfile(g:ctrlp_allfiles)[1]\n\t\ten\n\t\tif &wig != ''\n\t\t\tcal filter(g:ctrlp_allfiles, 'glob(v:val) != \"\"')\n\t\ten\n\ten\nendf\n\nfu! s:lsCmd()\n\tlet cmd = s:usrcmd\n\tif type(cmd) == 1\n\t\tretu cmd\n\telsei type(cmd) == 3 && len(cmd) >= 2 && cmd[:1] != ['', '']\n\t\tif s:findroot(s:dyncwd, cmd[0], 0, 1) == []\n\t\t\tretu len(cmd) == 3 ? cmd[2] : ''\n\t\ten\n\t\tlet s:vcscmd = s:lash == '\\'\n\t\tretu cmd[1]\n\telsei type(cmd) == 4 && ( has_key(cmd, 'types') || has_key(cmd, 'fallback') )\n\t\tlet fndroot = []\n\t\tif has_key(cmd, 'types') && cmd['types'] != {}\n\t\t\tlet [markrs, cmdtypes] = [[], values(cmd['types'])]\n\t\t\tfor pair in cmdtypes\n\t\t\t\tcal add(markrs, pair[0])\n\t\t\tendfo\n\t\t\tlet fndroot = s:findroot(s:dyncwd, markrs, 0, 1)\n\t\ten\n\t\tif fndroot == []\n\t\t\tretu has_key(cmd, 'fallback') ? cmd['fallback'] : ''\n\t\ten\n\t\tfor pair in cmdtypes\n\t\t\tif pair[0] == fndroot[0] | brea | en\n\t\tendfo\n\t\tlet s:vcscmd = s:lash == '\\'\n\t\tretu pair[1]\n\ten\nendf\n\" - Buffers {{{1\nfu! ctrlp#buffers(...)\n\tlet ids = sort(filter(range(1, bufnr('$')), 'empty(getbufvar(v:val, \"&bt\"))'\n\t\t\\ .' && getbufvar(v:val, \"&bl\")'), 's:compmreb')\n\tif a:0 && a:1 == 'id'\n\t\tretu ids\n\tel\n\t\tlet bufs = [[], []]\n\t\tfor id in ids\n\t\t\tlet bname = bufname(id)\n\t\t\tlet ebname = bname == ''\n\t\t\tlet fname = fnamemodify(ebname ? '['.id.'*No Name]' : bname, ':.')\n\t\t\tcal add(bufs[ebname], fname)\n\t\tendfo\n\t\tretu bufs[0] + bufs[1]\n\ten\nendf\n\" * MatchedItems() {{{1\nfu! s:MatchIt(items, pat, limit, exc)\n\tlet [lines, id] = [[], 0]\n\tlet pat =\n\t\t\\ s:byfname() ? map(split(a:pat, '^[^;]\\+\\\\\\@<!\\zs;', 1), 's:martcs.v:val')\n\t\t\\ : s:martcs.a:pat\n\tfor item in a:items\n\t\tlet id += 1\n\t\ttry | if !( s:ispath && item == a:exc ) && call(s:mfunc, [item, pat]) >= 0\n\t\t\tcal add(lines, item)\n\t\ten | cat | brea | endt\n\t\tif a:limit > 0 && len(lines) >= a:limit | brea | en\n\tendfo\n\tlet s:mdata = [s:dyncwd, s:itemtype, s:regexp, s:sublist(a:items, id, -1)]\n\tretu lines\nendf\n\nfu! s:MatchedItems(items, pat, limit)\n\tlet exc = exists('s:crfilerel') ? s:crfilerel : ''\n\tlet items = s:narrowable() ? s:matched + s:mdata[3] : a:items\n\tif s:matcher != {}\n\t\tlet argms =\n\t\t\t\\ has_key(s:matcher, 'arg_type') && s:matcher['arg_type'] == 'dict' ? [{\n\t\t\t\\ 'items':  items,\n\t\t\t\\ 'str':    a:pat,\n\t\t\t\\ 'limit':  a:limit,\n\t\t\t\\ 'mmode':  s:mmode(),\n\t\t\t\\ 'ispath': s:ispath,\n\t\t\t\\ 'crfile': exc,\n\t\t\t\\ 'regex':  s:regexp,\n\t\t\t\\ }] : [items, a:pat, a:limit, s:mmode(), s:ispath, exc, s:regexp]\n\t\tlet lines = call(s:matcher['match'], argms, s:matcher)\n\tel\n\t\tlet lines = s:MatchIt(items, a:pat, a:limit, exc)\n\ten\n\tlet s:matches = len(lines)\n\tunl! s:did_exp\n\tretu lines\nendf\n\nfu! s:SplitPattern(str)\n\tlet str = a:str\n\tif s:migemo && s:regexp && len(str) > 0 && executable('cmigemo')\n\t\tlet str = s:migemo(str)\n\ten\n\tlet s:savestr = str\n\tif s:regexp\n\t\tlet pat = s:regexfilter(str)\n\tel\n\t\tlet lst = split(str, '\\zs')\n\t\tif exists('+ssl') && !&ssl\n\t\t\tcal map(lst, 'escape(v:val, ''\\'')')\n\t\ten\n\t\tfor each in ['^', '$', '.']\n\t\t\tcal map(lst, 'escape(v:val, each)')\n\t\tendfo\n\ten\n\tif exists('lst')\n\t\tlet pat = ''\n\t\tif !empty(lst)\n\t\t\tif s:byfname() && index(lst, ';') > 0\n\t\t\t\tlet fbar = index(lst, ';')\n\t\t\t\tlet lst_1 = s:sublist(lst, 0, fbar - 1)\n\t\t\t\tlet lst_2 = len(lst) - 1 > fbar ? s:sublist(lst, fbar + 1, -1) : ['']\n\t\t\t\tlet pat = s:buildpat(lst_1).';'.s:buildpat(lst_2)\n\t\t\tel\n\t\t\t\tlet pat = s:buildpat(lst)\n\t\t\ten\n\t\ten\n\ten\n\tretu escape(pat, '~')\nendf\n\" * BuildPrompt() {{{1\nfu! s:Render(lines, pat)\n\tlet [&ma, lines, s:res_count] = [1, a:lines, len(a:lines)]\n\tlet height = min([max([s:mw_min, s:res_count]), s:winmaxh])\n\tlet pat = s:byfname() ? split(a:pat, '^[^;]\\+\\\\\\@<!\\zs;', 1)[0] : a:pat\n\tlet cur_cmd = 'keepj norm! '.( s:mw_order == 'btt' ? 'G' : 'gg' ).'1|'\n\t\" Setup the match window\n\tsil! exe '%d _ | res' height\n\t\" Print the new items\n\tif empty(lines)\n\t\tlet [s:matched, s:lines] = [[], []]\n\t\tlet lines = [' == NO ENTRIES ==']\n\t\tcal setline(1, s:offset(lines, height - 1))\n\t\tsetl noma nocul\n\t\texe cur_cmd\n\t\tcal s:unmarksigns()\n\t\tif s:dohighlight() | cal clearmatches() | en\n\t\tretu\n\ten\n\tlet s:matched = copy(lines)\n\t\" Sorting\n\tif !s:nosort()\n\t\tlet s:compat = s:martcs.pat\n\t\tcal sort(lines, 's:mixedsort')\n\t\tunl s:compat\n\ten\n\tif s:mw_order == 'btt' | cal reverse(lines) | en\n\tlet s:lines = copy(lines)\n\tcal map(lines, 's:formatline(v:val)')\n\tcal setline(1, s:offset(lines, height))\n\tsetl noma cul\n\texe cur_cmd\n\tcal s:unmarksigns()\n\tcal s:remarksigns()\n\tif exists('s:cline') && s:nolim != 1\n\t\tcal cursor(s:cline, 1)\n\ten\n\t\" Highlighting\n\tif s:dohighlight()\n\t\tcal s:highlight(pat, s:mathi[1])\n\ten\nendf\n\nfu! s:Update(str)\n\t\" Get the previous string if existed\n\tlet oldstr = exists('s:savestr') ? s:savestr : ''\n\t\" Get the new string sans tail\n\tlet str = s:sanstail(a:str)\n\t\" Stop if the string's unchanged\n\tif str == oldstr && !empty(str) && !exists('s:force') | retu | en\n\tlet s:martcs = &scs && str =~ '\\u' ? '\\C' : ''\n\tlet pat = s:matcher == {} ? s:SplitPattern(str) : str\n\tlet lines = s:nolim == 1 && empty(str) ? copy(g:ctrlp_lines)\n\t\t\\ : s:MatchedItems(g:ctrlp_lines, pat, s:mw_res)\n\tcal s:Render(lines, pat)\nendf\n\nfu! s:ForceUpdate()\n\tsil! cal s:Update(escape(s:getinput(), '\\'))\nendf\n\nfu! s:BuildPrompt(upd)\n\tlet base = ( s:regexp ? 'r' : '>' ).( s:byfname() ? 'd' : '>' ).'> '\n\tlet str = escape(s:getinput(), '\\')\n\tlet lazy = str == '' || exists('s:force') || !has('autocmd') ? 0 : s:lazy\n\tif a:upd && !lazy && ( s:matches || s:regexp || exists('s:did_exp')\n\t\t\\ || str =~ '\\(\\\\\\(<\\|>\\)\\|[*|]\\)\\|\\(\\\\\\:\\([^:]\\|\\\\:\\)*$\\)' )\n\t\tsil! cal s:Update(str)\n\ten\n\tsil! cal ctrlp#statusline()\n\t\" Toggling\n\tlet [hiactive, hicursor, base] = s:focus\n\t\t\\ ? ['CtrlPPrtText', 'CtrlPPrtCursor', base]\n\t\t\\ : ['CtrlPPrtBase', 'CtrlPPrtBase', tr(base, '>', '-')]\n\tlet hibase = 'CtrlPPrtBase'\n\t\" Build it\n\tredr\n\tlet prt = copy(s:prompt)\n\tcal map(prt, 'escape(v:val, ''\"\\'')')\n\texe 'echoh' hibase '| echon \"'.base.'\"\n\t\t\\ | echoh' hiactive '| echon \"'.prt[0].'\"\n\t\t\\ | echoh' hicursor '| echon \"'.prt[1].'\"\n\t\t\\ | echoh' hiactive '| echon \"'.prt[2].'\" | echoh None'\n\t\" Append the cursor at the end\n\tif empty(prt[1]) && s:focus\n\t\texe 'echoh' hibase '| echon \"_\" | echoh None'\n\ten\nendf\n\" - SetDefTxt() {{{1\nfu! s:SetDefTxt()\n\tif s:deftxt == '0' || ( s:deftxt == 1 && !s:ispath ) | retu | en\n\tlet txt = s:deftxt\n\tif !type(txt)\n\t\tlet path = s:crfpath.s:lash(s:crfpath)\n\t\tlet txt = txt && !stridx(path, s:dyncwd) ? ctrlp#rmbasedir([path])[0] : ''\n\ten\n\tlet s:prompt[0] = txt\nendf\n\" ** Prt Actions {{{1\n\" Editing {{{2\nfu! s:PrtClear()\n\tif !s:focus | retu | en\n\tunl! s:hstgot\n\tlet [s:prompt, s:matches] = [['', '', ''], 1]\n\tcal s:BuildPrompt(1)\nendf\n\nfu! s:PrtAdd(char)\n\tunl! s:hstgot\n\tlet s:act_add = 1\n\tlet s:prompt[0] .= a:char\n\tcal s:BuildPrompt(1)\n\tunl s:act_add\nendf\n\nfu! s:PrtBS()\n\tif !s:focus | retu | en\n\tunl! s:hstgot\n\tlet [s:prompt[0], s:matches] = [substitute(s:prompt[0], '.$', '', ''), 1]\n\tcal s:BuildPrompt(1)\nendf\n\nfu! s:PrtDelete()\n\tif !s:focus | retu | en\n\tunl! s:hstgot\n\tlet [prt, s:matches] = [s:prompt, 1]\n\tlet prt[1] = matchstr(prt[2], '^.')\n\tlet prt[2] = substitute(prt[2], '^.', '', '')\n\tcal s:BuildPrompt(1)\nendf\n\nfu! s:PrtDeleteWord()\n\tif !s:focus | retu | en\n\tunl! s:hstgot\n\tlet [str, s:matches] = [s:prompt[0], 1]\n\tlet str = str =~ '\\W\\w\\+$' ? matchstr(str, '^.\\+\\W\\ze\\w\\+$')\n\t\t\\ : str =~ '\\w\\W\\+$' ? matchstr(str, '^.\\+\\w\\ze\\W\\+$')\n\t\t\\ : str =~ '\\s\\+$' ? matchstr(str, '^.*\\S\\ze\\s\\+$')\n\t\t\\ : str =~ '\\v^(\\S+|\\s+)$' ? '' : str\n\tlet s:prompt[0] = str\n\tcal s:BuildPrompt(1)\nendf\n\nfu! s:PrtInsert(...)\n\tif !s:focus | retu | en\n\tlet type = !a:0 ? '' : a:1\n\tif !a:0\n\t\tlet type = s:insertstr()\n\t\tif type == 'cancel' | retu | en\n\ten\n\tif type ==# 'r'\n\t\tlet regcont = s:getregs()\n\t\tif regcont < 0 | retu | en\n\ten\n\tunl! s:hstgot\n\tlet s:act_add = 1\n\tlet s:prompt[0] .= type ==# 'w' ? s:crword\n\t\t\\ : type ==# 'f' ? s:crgfile\n\t\t\\ : type ==# 's' ? s:regisfilter('/')\n\t\t\\ : type ==# 'v' ? s:crvisual\n\t\t\\ : type ==# 'c' ? s:regisfilter('+')\n\t\t\\ : type ==# 'r' ? regcont : ''\n\tcal s:BuildPrompt(1)\n\tunl s:act_add\nendf\n\nfu! s:PrtExpandDir()\n\tif !s:focus | retu | en\n\tlet str = s:getinput('c')\n\tif str =~ '\\v^\\@(cd|lc[hd]?|chd)\\s.+' && s:spi\n\t\tlet hasat = split(str, '\\v^\\@(cd|lc[hd]?|chd)\\s*\\zs')\n\t\tlet str = get(hasat, 1, '')\n\t\tif str =~# '\\v^[~$]\\i{-}[\\/]?|^#(\\<?\\d+)?:(p|h|8|\\~|\\.|g?s+)'\n\t\t\tlet str = expand(s:fnesc(str, 'g'))\n\t\telsei str =~# '\\v^(\\%|\\<c\\h{4}\\>):(p|h|8|\\~|\\.|g?s+)'\n\t\t\tlet spc = str =~# '^%' ? s:crfile\n\t\t\t\t\\ : str =~# '^<cfile>' ? s:crgfile\n\t\t\t\t\\ : str =~# '^<cword>' ? s:crword\n\t\t\t\t\\ : str =~# '^<cWORD>' ? s:crnbword : ''\n\t\t\tlet pat = '(:(p|h|8|\\~|\\.|g?s(.)[^\\3]*\\3[^\\3]*\\3))+'\n\t\t\tlet mdr = matchstr(str, '\\v^[^:]+\\zs'.pat)\n\t\t\tlet nmd = matchstr(str, '\\v^[^:]+'.pat.'\\zs.{-}$')\n\t\t\tlet str = fnamemodify(s:fnesc(spc, 'g'), mdr).nmd\n\t\ten\n\ten\n\tif str == '' | retu | en\n\tunl! s:hstgot\n\tlet s:act_add = 1\n\tlet [base, seed] = s:headntail(str)\n\tif str =~# '^[\\/]'\n\t\tlet base = expand('/').base\n\ten\n\tlet dirs = s:dircompl(base, seed)\n\tif len(dirs) == 1\n\t\tlet str = dirs[0]\n\telsei len(dirs) > 1\n\t\tlet str .= s:findcommon(dirs, str)\n\ten\n\tlet s:prompt[0] = exists('hasat') ? hasat[0].str : str\n\tcal s:BuildPrompt(1)\n\tunl s:act_add\nendf\n\" Movement {{{2\nfu! s:PrtCurLeft()\n\tif !s:focus | retu | en\n\tlet prt = s:prompt\n\tif !empty(prt[0])\n\t\tlet s:prompt = [substitute(prt[0], '.$', '', ''), matchstr(prt[0], '.$'),\n\t\t\t\\ prt[1] . prt[2]]\n\ten\n\tcal s:BuildPrompt(0)\nendf\n\nfu! s:PrtCurRight()\n\tif !s:focus | retu | en\n\tlet prt = s:prompt\n\tlet s:prompt = [prt[0] . prt[1], matchstr(prt[2], '^.'),\n\t\t\\ substitute(prt[2], '^.', '', '')]\n\tcal s:BuildPrompt(0)\nendf\n\nfu! s:PrtCurStart()\n\tif !s:focus | retu | en\n\tlet str = join(s:prompt, '')\n\tlet s:prompt = ['', matchstr(str, '^.'), substitute(str, '^.', '', '')]\n\tcal s:BuildPrompt(0)\nendf\n\nfu! s:PrtCurEnd()\n\tif !s:focus | retu | en\n\tlet s:prompt = [join(s:prompt, ''), '', '']\n\tcal s:BuildPrompt(0)\nendf\n\nfu! s:PrtSelectMove(dir)\n\tlet wht = winheight(0)\n\tlet dirs = {'t': 'gg','b': 'G','j': 'j','k': 'k','u': wht.'k','d': wht.'j'}\n\texe 'keepj norm!' dirs[a:dir]\n\tif s:nolim != 1 | let s:cline = line('.') | en\n\tif line('$') > winheight(0) | cal s:BuildPrompt(0) | en\nendf\n\nfu! s:PrtSelectJump(char)\n\tlet lines = copy(s:lines)\n\tif s:byfname()\n\t\tcal map(lines, 'split(v:val, ''[\\/]\\ze[^\\/]\\+$'')[-1]')\n\ten\n\t\" Cycle through matches, use s:jmpchr to store last jump\n\tlet chr = escape(matchstr(a:char, '^.'), '.~')\n\tlet smartcs = &scs && chr =~ '\\u' ? '\\C' : ''\n\tif match(lines, smartcs.'^'.chr) >= 0\n\t\t\" If not exists or does but not for the same char\n\t\tlet pos = match(lines, smartcs.'^'.chr)\n\t\tif !exists('s:jmpchr') || ( exists('s:jmpchr') && s:jmpchr[0] != chr )\n\t\t\tlet [jmpln, s:jmpchr] = [pos, [chr, pos]]\n\t\telsei exists('s:jmpchr') && s:jmpchr[0] == chr\n\t\t\t\" Start of lines\n\t\t\tif s:jmpchr[1] == -1 | let s:jmpchr[1] = pos | en\n\t\t\tlet npos = match(lines, smartcs.'^'.chr, s:jmpchr[1] + 1)\n\t\t\tlet [jmpln, s:jmpchr] = [npos == -1 ? pos : npos, [chr, npos]]\n\t\ten\n\t\texe 'keepj norm!' ( jmpln + 1 ).'G'\n\t\tif s:nolim != 1 | let s:cline = line('.') | en\n\t\tif line('$') > winheight(0) | cal s:BuildPrompt(0) | en\n\ten\nendf\n\" Misc {{{2\nfu! s:PrtFocusMap(char)\n\tcal call(( s:focus ? 's:PrtAdd' : 's:PrtSelectJump' ), [a:char])\nendf\n\nfu! s:PrtClearCache()\n\tif s:itemtype == 0\n\t\tcal ctrlp#clr()\n\telsei s:itemtype > 2\n\t\tcal ctrlp#clr(s:statypes[s:itemtype][1])\n\ten\n\tif s:itemtype == 2\n\t\tlet g:ctrlp_lines = ctrlp#mrufiles#refresh()\n\tel\n\t\tcal ctrlp#setlines()\n\ten\n\tlet s:force = 1\n\tcal s:BuildPrompt(1)\n\tunl s:force\nendf\n\nfu! s:PrtDeleteEnt()\n\tif s:itemtype == 2\n\t\tcal s:PrtDeleteMRU()\n\telsei type(s:getextvar('wipe')) == 1\n\t\tcal s:delent(s:getextvar('wipe'))\n\ten\nendf\n\nfu! s:PrtDeleteMRU()\n\tif s:itemtype == 2\n\t\tcal s:delent('ctrlp#mrufiles#remove')\n\ten\nendf\n\nfu! s:PrtExit()\n\tif bufnr('%') == s:bufnr && bufname('%') == 'ControlP'\n\t\tnoa cal s:Close()\n\t\tnoa winc p\n\ten\nendf\n\nfu! s:PrtHistory(...)\n\tif !s:focus || !s:maxhst | retu | en\n\tlet [str, hst, s:matches] = [join(s:prompt, ''), s:hstry, 1]\n\t\" Save to history if not saved before\n\tlet [hst[0], hslen] = [exists('s:hstgot') ? hst[0] : str, len(hst)]\n\tlet idx = exists('s:hisidx') ? s:hisidx + a:1 : a:1\n\t\" Limit idx within 0 and hslen\n\tlet idx = idx < 0 ? 0 : idx >= hslen ? hslen > 1 ? hslen - 1 : 0 : idx\n\tlet s:prompt = [hst[idx], '', '']\n\tlet [s:hisidx, s:hstgot, s:force] = [idx, 1, 1]\n\tcal s:BuildPrompt(1)\n\tunl s:force\nendf\n\"}}}1\n\" * Mappings {{{1\nfu! s:MapNorms()\n\tif exists('s:nmapped') && s:nmapped == s:bufnr | retu | en\n\tlet pcmd = \"nn \\<buffer> \\<silent> \\<k%s> :\\<c-u>cal \\<SID>%s(\\\"%s\\\")\\<cr>\"\n\tlet cmd = substitute(pcmd, 'k%s', 'char-%d', '')\n\tlet pfunc = 'PrtFocusMap'\n\tlet ranges = [32, 33, 125, 126] + range(35, 91) + range(93, 123)\n\tfor each in [34, 92, 124]\n\t\texe printf(cmd, each, pfunc, escape(nr2char(each), '\"|\\'))\n\tendfo\n\tfor each in ranges\n\t\texe printf(cmd, each, pfunc, nr2char(each))\n\tendfo\n\tfor each in range(0, 9)\n\t\texe printf(pcmd, each, pfunc, each)\n\tendfo\n\tfor [ke, va] in items(s:kprange)\n\t\texe printf(pcmd, ke, pfunc, va)\n\tendfo\n\tlet s:nmapped = s:bufnr\nendf\n\nfu! s:MapSpecs()\n\tif !( exists('s:smapped') && s:smapped == s:bufnr )\n\t\t\" Correct arrow keys in terminal\n\t\tif ( has('termresponse') && v:termresponse =~ \"\\<ESC>\" )\n\t\t\t\\ || &term =~? '\\vxterm|<k?vt|gnome|screen|linux|ansi'\n\t\t\tfor each in ['\\A <up>','\\B <down>','\\C <right>','\\D <left>']\n\t\t\t\texe s:lcmap.' <esc>['.each\n\t\t\tendfo\n\t\ten\n\ten\n\tfor [ke, va] in items(s:prtmaps) | for kp in va\n\t\texe s:lcmap kp ':<c-u>cal <SID>'.ke.'<cr>'\n\tendfo | endfo\n\tlet s:smapped = s:bufnr\nendf\n\nfu! s:KeyLoop()\n\twh exists('s:init') && s:keyloop\n\t\tredr\n\t\tlet nr = getchar()\n\t\tlet chr = !type(nr) ? nr2char(nr) : nr\n\t\tif nr >=# 0x20\n\t\t\tcal s:PrtFocusMap(chr)\n\t\tel\n\t\t\tlet cmd = matchstr(maparg(chr), ':<C-U>\\zs.\\+\\ze<CR>$')\n\t\t\texe ( cmd != '' ? cmd : 'norm '.chr )\n\t\ten\n\tendw\nendf\n\" * Toggling {{{1\nfu! s:ToggleFocus()\n\tlet s:focus = !s:focus\n\tcal s:BuildPrompt(0)\nendf\n\nfu! s:ToggleRegex()\n\tlet s:regexp = !s:regexp\n\tcal s:PrtSwitcher()\nendf\n\nfu! s:ToggleByFname()\n\tif s:ispath\n\t\tlet s:byfname = !s:byfname\n\t\tlet s:mfunc = s:mfunc()\n\t\tcal s:PrtSwitcher()\n\ten\nendf\n\nfu! s:ToggleType(dir)\n\tlet max = len(g:ctrlp_ext_vars) + 2\n\tlet next = s:walker(max, s:itemtype, a:dir)\n\tcal ctrlp#syntax()\n\tcal ctrlp#setlines(next)\n\tcal s:PrtSwitcher()\nendf\n\nfu! s:ToggleKeyLoop()\n\tlet s:keyloop = !s:keyloop\n\tif exists('+imd')\n\t\tlet &imd = !s:keyloop\n\ten\n\tif s:keyloop\n\t\tlet [&ut, s:lazy] = [0, 0]\n\t\tcal s:KeyLoop()\n\telsei has_key(s:glbs, 'ut')\n\t\tlet [&ut, s:lazy] = [s:glbs['ut'], 1]\n\ten\nendf\n\nfu! s:ToggleMRURelative()\n\tcal ctrlp#mrufiles#tgrel()\n\tcal s:PrtClearCache()\nendf\n\nfu! s:PrtSwitcher()\n\tlet [s:force, s:matches] = [1, 1]\n\tcal s:BuildPrompt(1)\n\tunl s:force\nendf\n\" - SetWD() {{{1\nfu! s:SetWD(args)\n\tif has_key(a:args, 'args') && stridx(a:args['args'], '--dir') >= 0\n\t\t\\ && exists('s:dyncwd')\n\t\tcal ctrlp#setdir(s:dyncwd) | retu\n\ten\n\tif has_key(a:args, 'dir') && a:args['dir'] != ''\n\t\tcal ctrlp#setdir(a:args['dir']) | retu\n\ten\n\tlet pmode = has_key(a:args, 'mode') ? a:args['mode'] : s:pathmode\n\tlet [s:crfilerel, s:dyncwd] = [fnamemodify(s:crfile, ':.'), getcwd()]\n\tif s:crfile =~ '^.\\+://' | retu | en\n\tif pmode =~ 'c' || ( pmode =~ 'a' && stridx(s:crfpath, s:cwd) < 0 )\n\t\t\\ || ( !type(pmode) && pmode )\n\t\tif exists('+acd') | let [s:glb_acd, &acd] = [&acd, 0] | en\n\t\tcal ctrlp#setdir(s:crfpath)\n\ten\n\tif pmode =~ 'r' || pmode == 2\n\t\tlet markers = ['.git', '.hg', '.svn', '.bzr', '_darcs']\n\t\tlet spath = pmode =~ 'd' ? s:dyncwd : pmode =~ 'w' ? s:cwd : s:crfpath\n\t\tif type(s:rmarkers) == 3 && !empty(s:rmarkers)\n\t\t\tif s:findroot(spath, s:rmarkers, 0, 0) != [] | retu | en\n\t\t\tcal filter(markers, 'index(s:rmarkers, v:val) < 0')\n\t\ten\n\t\tcal s:findroot(spath, markers, 0, 0)\n\ten\nendf\n\" * AcceptSelection() {{{1\nfu! ctrlp#acceptfile(...)\n\tlet useb = 0\n\tif a:0 == 1 && type(a:1) == 4\n\t\tlet [md, line] = [a:1['action'], a:1['line']]\n\t\tlet atl = has_key(a:1, 'tail') ? a:1['tail'] : ''\n\tel\n\t\tlet [md, line] = [a:1, a:2]\n\t\tlet atl = a:0 > 2 ? a:3 : ''\n\ten\n\tif !type(line)\n\t\tlet [filpath, bufnr, useb] = [line, line, 1]\n\tel\n\t\tlet filpath = fnamemodify(line, ':p')\n\t\tif s:nonamecond(line, filpath)\n\t\t\tlet bufnr = str2nr(matchstr(line, '[\\/]\\?\\[\\zs\\d\\+\\ze\\*No Name\\]$'))\n\t\t\tlet [filpath, useb] = [bufnr, 1]\n\t\tel\n\t\t\tlet bufnr = bufnr('^'.filpath.'$')\n\t\ten\n\ten\n\tcal s:PrtExit()\n\tlet tail = s:tail()\n\tlet j2l = atl != '' ? atl : matchstr(tail, '^ +\\zs\\d\\+$')\n\tif ( s:jmptobuf =~ md || ( s:jmptobuf && md =~ '[et]' ) ) && bufnr > 0\n\t\t\\ && !( md == 'e' && bufnr == bufnr('%') )\n\t\tlet [jmpb, bufwinnr] = [1, bufwinnr(bufnr)]\n\t\tlet buftab = ( s:jmptobuf =~# '[tTVH]' || s:jmptobuf > 1 )\n\t\t\t\\ ? s:buftab(bufnr, md) : [0, 0]\n\ten\n\t\" Switch to existing buffer or open new one\n\tif exists('jmpb') && bufwinnr > 0\n\t\t\\ && !( md == 't' && ( s:jmptobuf !~# toupper(md) || buftab[0] ) )\n\t\texe bufwinnr.'winc w'\n\t\tif j2l | cal ctrlp#j2l(j2l) | en\n\telsei exists('jmpb') && buftab[0]\n\t\t\\ && !( md =~ '[evh]' && s:jmptobuf !~# toupper(md) )\n\t\texe 'tabn' buftab[0]\n\t\texe buftab[1].'winc w'\n\t\tif j2l | cal ctrlp#j2l(j2l) | en\n\tel\n\t\t\" Determine the command to use\n\t\tlet useb = bufnr > 0 && buflisted(bufnr) && ( empty(tail) || useb )\n\t\tlet cmd =\n\t\t\t\\ md == 't' || s:splitwin == 1 ? ( useb ? 'tab sb' : 'tabe' ) :\n\t\t\t\\ md == 'h' || s:splitwin == 2 ? ( useb ? 'sb' : 'new' ) :\n\t\t\t\\ md == 'v' || s:splitwin == 3 ? ( useb ? 'vert sb' : 'vne' ) :\n\t\t\t\\ call('ctrlp#normcmd', useb ? ['b', 'bo vert sb'] : ['e'])\n\t\t\" Reset &switchbuf option\n\t\tlet [swb, &swb] = [&swb, '']\n\t\t\" Open new window/buffer\n\t\tlet [fid, tail] = [( useb ? bufnr : filpath ), ( atl != '' ? ' +'.atl : tail )]\n\t\tlet args = [cmd, fid, tail, 1, [useb, j2l]]\n\t\tcal call('s:openfile', args)\n\t\tlet &swb = swb\n\ten\nendf\n\nfu! s:SpecInputs(str)\n\tif a:str =~ '\\v^(\\.\\.([\\/]\\.\\.)*[\\/]?[.\\/]*)$' && s:spi\n\t\tlet cwd = s:dyncwd\n\t\tcal ctrlp#setdir(a:str =~ '^\\.\\.\\.*$' ?\n\t\t\t\\ '../'.repeat('../', strlen(a:str) - 2) : a:str)\n\t\tif cwd != s:dyncwd | cal ctrlp#setlines() | en\n\t\tcal s:PrtClear()\n\t\tretu 1\n\telsei a:str == s:lash && s:spi\n\t\tcal s:SetWD({ 'mode': 'rd' })\n\t\tcal ctrlp#setlines()\n\t\tcal s:PrtClear()\n\t\tretu 1\n\telsei a:str =~ '^@.\\+' && s:spi\n\t\tretu s:at(a:str)\n\telsei a:str == '?'\n\t\tcal s:PrtExit()\n\t\tlet hlpwin = &columns > 159 ? '| vert res 80' : ''\n\t\tsil! exe 'bo vert h ctrlp-mappings' hlpwin '| norm! 0'\n\t\tretu 1\n\ten\n\tretu 0\nendf\n\nfu! s:AcceptSelection(action)\n\tlet [md, icr] = [a:action[0], match(a:action, 'r') >= 0]\n\tlet subm = icr || ( !icr && md == 'e' )\n\tif !subm && s:OpenMulti(md) != -1 | retu | en\n\tlet str = s:getinput()\n\tif subm | if s:SpecInputs(str) | retu | en | en\n\t\" Get the selected line\n\tlet line = ctrlp#getcline()\n\tif !subm && !s:itemtype && line == '' && line('.') > s:offset\n\t\t\\ && str !~ '\\v^(\\.\\.([\\/]\\.\\.)*[\\/]?[.\\/]*|/|\\\\|\\?|\\@.+)$'\n\t\tcal s:CreateNewFile(md) | retu\n\ten\n\tif empty(line) | retu | en\n\t\" Do something with it\n\tif s:openfunc != {} && has_key(s:openfunc, s:ctype)\n\t\tlet actfunc = s:openfunc[s:ctype]\n\t\tlet type = has_key(s:openfunc, 'arg_type') ? s:openfunc['arg_type'] : 'list'\n\tel\n\t\tif s:itemtype < 3\n\t\t\tlet [actfunc, type] = ['ctrlp#acceptfile', 'dict']\n\t\tel\n\t\t\tlet [actfunc, exttype] = [s:getextvar('accept'), s:getextvar('act_farg')]\n\t\t\tlet type = exttype == 'dict' ? exttype : 'list'\n\t\ten\n\ten\n\tlet actargs = type == 'dict' ? [{ 'action': md, 'line': line, 'icr': icr }]\n\t\t\\ : [md, line]\n\tcal call(actfunc, actargs)\nendf\n\" - CreateNewFile() {{{1\nfu! s:CreateNewFile(...)\n\tlet [md, str] = ['', s:getinput('n')]\n\tif empty(str) | retu | en\n\tif s:argmap && !a:0\n\t\t\" Get the extra argument\n\t\tlet md = s:argmaps(md, 1)\n\t\tif md == 'cancel' | retu | en\n\ten\n\tlet str = s:sanstail(str)\n\tlet [base, fname] = s:headntail(str)\n\tif fname =~ '^[\\/]$' | retu | en\n\tif exists('s:marked') && len(s:marked)\n\t\t\" Use the first marked file's path\n\t\tlet path = fnamemodify(values(s:marked)[0], ':p:h')\n\t\tlet base = path.s:lash(path).base\n\t\tlet str = fnamemodify(base.s:lash.fname, ':.')\n\ten\n\tif base != '' | if isdirectory(ctrlp#utils#mkdir(base))\n\t\tlet optyp = str | en | el | let optyp = fname\n\ten\n\tif !exists('optyp') | retu | en\n\tlet [filpath, tail] = [fnamemodify(optyp, ':p'), s:tail()]\n\tif !stridx(filpath, s:dyncwd) | cal s:insertcache(str) | en\n\tcal s:PrtExit()\n\tlet cmd = md == 'r' ? ctrlp#normcmd('e') :\n\t\t\\ s:newfop =~ '1\\|t' || ( a:0 && a:1 == 't' ) || md == 't' ? 'tabe' :\n\t\t\\ s:newfop =~ '2\\|h' || ( a:0 && a:1 == 'h' ) || md == 'h' ? 'new' :\n\t\t\\ s:newfop =~ '3\\|v' || ( a:0 && a:1 == 'v' ) || md == 'v' ? 'vne' :\n\t\t\\ ctrlp#normcmd('e')\n\tcal s:openfile(cmd, filpath, tail, 1)\nendf\n\" * OpenMulti() {{{1\nfu! s:MarkToOpen()\n\tif s:bufnr <= 0 || s:opmul == '0'\n\t\t\\ || ( s:itemtype > 2 && s:getextvar('opmul') != 1 )\n\t\tretu\n\ten\n\tlet line = ctrlp#getcline()\n\tif empty(line) | retu | en\n\tlet filpath = s:ispath ? fnamemodify(line, ':p') : line\n\tif exists('s:marked') && s:dictindex(s:marked, filpath) > 0\n\t\t\" Unmark and remove the file from s:marked\n\t\tlet key = s:dictindex(s:marked, filpath)\n\t\tcal remove(s:marked, key)\n\t\tif empty(s:marked) | unl s:marked | en\n\t\tif has('signs')\n\t\t\texe 'sign unplace' key 'buffer='.s:bufnr\n\t\ten\n\tel\n\t\t\" Add to s:marked and place a new sign\n\t\tif exists('s:marked')\n\t\t\tlet vac = s:vacantdict(s:marked)\n\t\t\tlet key = empty(vac) ? len(s:marked) + 1 : vac[0]\n\t\t\tlet s:marked = extend(s:marked, { key : filpath })\n\t\tel\n\t\t\tlet [key, s:marked] = [1, { 1 : filpath }]\n\t\ten\n\t\tif has('signs')\n\t\t\texe 'sign place' key 'line='.line('.').' name=ctrlpmark buffer='.s:bufnr\n\t\ten\n\ten\n\tsil! cal ctrlp#statusline()\nendf\n\nfu! s:OpenMulti(...)\n\tlet has_marked = exists('s:marked')\n\tif ( !has_marked && a:0 ) || s:opmul == '0' || !s:ispath\n\t\t\\ || ( s:itemtype > 2 && s:getextvar('opmul') != 1 )\n\t\tretu -1\n\ten\n\t\" Get the options\n\tlet [nr, md] = [matchstr(s:opmul, '\\d\\+'), matchstr(s:opmul, '[thvi]')]\n\tlet [ur, jf] = [s:opmul =~ 'r', s:opmul =~ 'j']\n\tlet md = a:0 ? a:1 : ( md == '' ? 'v' : md )\n\tlet nopt = exists('g:ctrlp_open_multiple_files')\n\tif !has_marked\n\t\tlet line = ctrlp#getcline()\n\t\tif line == '' | retu | en\n\t\tlet marked = { 1 : fnamemodify(line, ':p') }\n\t\tlet [nr, ur, jf, nopt] = ['1', 0, 0, 1]\n\ten\n\tif ( s:argmap || !has_marked ) && !a:0\n\t\tlet md = s:argmaps(md, !has_marked ? 2 : 0)\n\t\tif md == 'c'\n\t\t\tcal s:unmarksigns()\n\t\t\tunl! s:marked\n\t\t\tcal s:BuildPrompt(0)\n\t\telsei !has_marked && md =~ '[axd]'\n\t\t\tretu s:OpenNoMarks(md, line)\n\t\ten\n\t\tif md =~ '\\v^c(ancel)?$' | retu | en\n\t\tlet nr = nr == '0' ? ( nopt ? '' : '1' ) : nr\n\t\tlet ur = !has_marked && md == 'r' ? 1 : ur\n\ten\n\tlet mkd = values(has_marked ? s:marked : marked)\n\tcal s:sanstail(join(s:prompt, ''))\n\tcal s:PrtExit()\n\tif nr == '0' || md == 'i'\n\t\tretu map(mkd, \"s:openfile('bad', v:val, '', 0)\")\n\ten\n\tlet tail = s:tail()\n\tlet [emptytail, bufnr] = [empty(tail), bufnr('^'.mkd[0].'$')]\n\tlet useb = bufnr > 0 && buflisted(bufnr) && emptytail\n\t\" Move to a replaceable window\n\tlet ncmd = ( useb ? ['b', 'bo vert sb'] : ['e', 'bo vne'] )\n\t\t\\ + ( ur ? [] : ['ignruw'] )\n\tlet fst = call('ctrlp#normcmd', ncmd)\n\t\" Check if the current window has a replaceable buffer\n\tlet repabl = !( md == 't' && !ur ) && empty(bufname('%')) && empty(&l:ft)\n\t\" Commands for the rest of the files\n\tlet [ic, cmds] = [1, { 'v': ['vert sb', 'vne'], 'h': ['sb', 'new'],\n\t\t\\ 't': ['tab sb', 'tabe'] }]\n\tlet [swb, &swb] = [&swb, '']\n\tif md == 't' && ctrlp#tabcount() < tabpagenr()\n\t\tlet s:tabct = ctrlp#tabcount()\n\ten\n\t\" Open the files\n\tfor va in mkd\n\t\tlet bufnr = bufnr('^'.va.'$')\n\t\tif bufnr < 0 && getftype(va) == '' | con | en\n\t\tlet useb = bufnr > 0 && buflisted(bufnr) && emptytail\n\t\tlet snd = md != '' && has_key(cmds, md) ?\n\t\t\t\\ ( useb ? cmds[md][0] : cmds[md][1] ) : ( useb ? 'vert sb' : 'vne' )\n\t\tlet cmd = ic == 1 && ( !( !ur && fst =~ '^[eb]$' ) || repabl ) ? fst : snd\n\t\tlet conds = [( nr != '' && nr > 1 && nr < ic ) || ( nr == '' && ic > 1 ),\n\t\t\t\\ nr != '' && nr < ic]\n\t\tif conds[nopt]\n\t\t\tif !buflisted(bufnr) | cal s:openfile('bad', va, '', 0) | en\n\t\tel\n\t\t\tcal s:openfile(cmd, useb ? bufnr : va, tail, ic == 1)\n\t\t\tif jf | if ic == 1\n\t\t\t\tlet crpos = [tabpagenr(), winnr()]\n\t\t\tel\n\t\t\t\tlet crpos[0] += tabpagenr() <= crpos[0]\n\t\t\t\tlet crpos[1] += winnr() <= crpos[1]\n\t\t\ten | en\n\t\t\tlet ic += 1\n\t\ten\n\tendfo\n\tif jf && exists('crpos') && ic > 2\n\t\texe ( md == 't' ? 'tabn '.crpos[0] : crpos[1].'winc w' )\n\ten\n\tlet &swb = swb\n\tunl! s:tabct\nendf\n\nfu! s:OpenNoMarks(md, line)\n\tif a:md == 'a'\n\t\tlet [s:marked, key] = [{}, 1]\n\t\tfor line in s:lines\n\t\t\tlet s:marked = extend(s:marked, { key : fnamemodify(line, ':p') })\n\t\t\tlet key += 1\n\t\tendfo\n\t\tcal s:remarksigns()\n\t\tcal s:BuildPrompt(0)\n\telsei a:md == 'x'\n\t\tlet type = has_key(s:openfunc, 'arg_type') ? s:openfunc['arg_type'] : 'dict'\n\t\tlet argms = type == 'dict' ? [{ 'action': a:md, 'line': a:line }]\n\t\t\t\\ : [a:md, a:line]\n\t\tcal call(s:openfunc[s:ctype], argms, s:openfunc)\n\telsei a:md == 'd'\n\t\tlet dir = fnamemodify(a:line, ':h')\n\t\tif isdirectory(dir)\n\t\t\tcal ctrlp#setdir(dir)\n\t\t\tcal ctrlp#switchtype(0)\n\t\t\tcal ctrlp#recordhist()\n\t\t\tcal s:PrtClear()\n\t\ten\n\ten\nendf\n\" ** Helper functions {{{1\n\" Sorting {{{2\nfu! ctrlp#complen(...)\n\t\" By length\n\tlet [len1, len2] = [strlen(a:1), strlen(a:2)]\n\tretu len1 == len2 ? 0 : len1 > len2 ? 1 : -1\nendf\n\nfu! s:compmatlen(...)\n\t\" By match length\n\tlet mln1 = s:shortest(s:matchlens(a:1, s:compat))\n\tlet mln2 = s:shortest(s:matchlens(a:2, s:compat))\n\tretu mln1 == mln2 ? 0 : mln1 > mln2 ? 1 : -1\nendf\n\nfu! s:comptime(...)\n\t\" By last modified time\n\tlet [time1, time2] = [getftime(a:1), getftime(a:2)]\n\tretu time1 == time2 ? 0 : time1 < time2 ? 1 : -1\nendf\n\nfu! s:compmreb(...)\n\t\" By last entered time (bufnr)\n\tlet [id1, id2] = [index(s:mrbs, a:1), index(s:mrbs, a:2)]\n\tretu id1 == id2 ? 0 : id1 > id2 ? 1 : -1\nendf\n\nfu! s:compmref(...)\n\t\" By last entered time (MRU)\n\tlet [id1, id2] = [index(g:ctrlp_lines, a:1), index(g:ctrlp_lines, a:2)]\n\tretu id1 == id2 ? 0 : id1 > id2 ? 1 : -1\nendf\n\nfu! s:comparent(...)\n\t\" By same parent dir\n\tif !stridx(s:crfpath, s:dyncwd)\n\t\tlet [as1, as2] = [s:dyncwd.s:lash().a:1, s:dyncwd.s:lash().a:2]\n\t\tlet [loc1, loc2] = [s:getparent(as1), s:getparent(as2)]\n\t\tif loc1 == s:crfpath && loc2 != s:crfpath | retu -1 | en\n\t\tif loc2 == s:crfpath && loc1 != s:crfpath | retu 1  | en\n\t\tretu 0\n\ten\n\tretu 0\nendf\n\nfu! s:compfnlen(...)\n\t\" By filename length\n\tlet len1 = strlen(split(a:1, s:lash)[-1])\n\tlet len2 = strlen(split(a:2, s:lash)[-1])\n\tretu len1 == len2 ? 0 : len1 > len2 ? 1 : -1\nendf\n\nfu! s:matchlens(str, pat, ...)\n\tif empty(a:pat) || index(['^', '$'], a:pat) >= 0 | retu {} | en\n\tlet st   = a:0 ? a:1 : 0\n\tlet lens = a:0 >= 2 ? a:2 : {}\n\tlet nr   = a:0 >= 3 ? a:3 : 0\n\tif nr > 20 | retu {} | en\n\tif match(a:str, a:pat, st) >= 0\n\t\tlet [mst, mnd] = [matchstr(a:str, a:pat, st), matchend(a:str, a:pat, st)]\n\t\tlet lens = extend(lens, { nr : [strlen(mst), mst] })\n\t\tlet lens = s:matchlens(a:str, a:pat, mnd, lens, nr + 1)\n\ten\n\tretu lens\nendf\n\nfu! s:shortest(lens)\n\tretu min(map(values(a:lens), 'v:val[0]'))\nendf\n\nfu! s:mixedsort(...)\n\tif s:itemtype == 1\n\t\tlet pat = '[\\/]\\?\\[\\d\\+\\*No Name\\]$'\n\t\tif a:1 =~# pat && a:2 =~# pat | retu 0\n\t\telsei a:1 =~# pat | retu 1\n\t\telsei a:2 =~# pat | retu -1 | en\n\ten\n\tlet [cln, cml] = [ctrlp#complen(a:1, a:2), s:compmatlen(a:1, a:2)]\n\tif s:ispath\n\t\tlet ms = []\n\t\tif s:res_count < 21\n\t\t\tlet ms += [s:compfnlen(a:1, a:2)]\n\t\t\tif s:itemtype !~ '^[12]$' | let ms += [s:comptime(a:1, a:2)] | en\n\t\t\tif !s:itemtype | let ms += [s:comparent(a:1, a:2)] | en\n\t\ten\n\t\tif s:itemtype =~ '^[12]$'\n\t\t\tlet ms += [s:compmref(a:1, a:2)]\n\t\t\tlet cln = cml ? cln : 0\n\t\ten\n\t\tlet ms += [cml, 0, 0, 0]\n\t\tlet mp = call('s:multipliers', ms[:3])\n\t\tretu cln + ms[0] * mp[0] + ms[1] * mp[1] + ms[2] * mp[2] + ms[3] * mp[3]\n\ten\n\tretu cln + cml * 2\nendf\n\nfu! s:multipliers(...)\n\tlet mp0 = !a:1 ? 0 : 2\n\tlet mp1 = !a:2 ? 0 : 1 + ( !mp0 ? 1 : mp0 )\n\tlet mp2 = !a:3 ? 0 : 1 + ( !( mp0 + mp1 ) ? 1 : ( mp0 + mp1 ) )\n\tlet mp3 = !a:4 ? 0 : 1 + ( !( mp0 + mp1 + mp2 ) ? 1 : ( mp0 + mp1 + mp2 ) )\n\tretu [mp0, mp1, mp2, mp3]\nendf\n\nfu! s:compval(...)\n\tretu a:1 - a:2\nendf\n\" Statusline {{{2\nfu! ctrlp#statusline()\n\tif !exists('s:statypes')\n\t\tlet s:statypes = [\n\t\t\t\\ ['files', 'fil'],\n\t\t\t\\ ['buffers', 'buf'],\n\t\t\t\\ ['mru files', 'mru'],\n\t\t\t\\ ]\n\t\tif !empty(g:ctrlp_ext_vars)\n\t\t\tcal map(copy(g:ctrlp_ext_vars),\n\t\t\t\t\\ 'add(s:statypes, [ v:val[\"lname\"], v:val[\"sname\"] ])')\n\t\ten\n\ten\n\tlet tps = s:statypes\n\tlet max = len(tps) - 1\n\tlet nxt = tps[s:walker(max, s:itemtype,  1)][1]\n\tlet prv = tps[s:walker(max, s:itemtype, -1)][1]\n\tlet s:ctype = tps[s:itemtype][0]\n\tlet focus   = s:focus ? 'prt'  : 'win'\n\tlet byfname = s:ispath ? s:byfname ? 'file' : 'path' : 'line'\n\tlet marked  = s:opmul != '0' ?\n\t\t\\ exists('s:marked') ? ' <'.s:dismrk().'>' : ' <->' : ''\n\tif s:status != {}\n\t\tlet argms =\n\t\t\t\\ has_key(s:status, 'arg_type') && s:status['arg_type'] == 'dict' ? [{\n\t\t\t\\ 'focus':   focus,\n\t\t\t\\ 'byfname': byfname,\n\t\t\t\\ 'regex':   s:regexp,\n\t\t\t\\ 'prev':    prv,\n\t\t\t\\ 'item':    s:ctype,\n\t\t\t\\ 'next':    nxt,\n\t\t\t\\ 'marked':  marked,\n\t\t\t\\ }] : [focus, byfname, s:regexp, prv, s:ctype, nxt, marked]\n\t\tlet &l:stl = call(s:status['main'], argms, s:status)\n\tel\n\t\tlet item    = '%#CtrlPMode1# '.s:ctype.' %*'\n\t\tlet focus   = '%#CtrlPMode2# '.focus.' %*'\n\t\tlet byfname = '%#CtrlPMode1# '.byfname.' %*'\n\t\tlet regex   = s:regexp  ? '%#CtrlPMode2# regex %*' : ''\n\t\tlet slider  = ' <'.prv.'>={'.item.'}=<'.nxt.'>'\n\t\tlet dir     = ' %=%<%#CtrlPMode2# %{getcwd()} %*'\n\t\tlet &l:stl  = focus.byfname.regex.slider.marked.dir\n\ten\nendf\n\nfu! s:dismrk()\n\tretu has('signs') ? len(s:marked) :\n\t\t\\ '%<'.join(values(map(copy(s:marked), 'split(v:val, \"[\\\\/]\")[-1]')), ', ')\nendf\n\nfu! ctrlp#progress(enum, ...)\n\tif has('macunix') || has('mac') | sl 1m | en\n\tlet txt = a:0 ? '(press ctrl-c to abort)' : ''\n\tif s:status != {}\n\t\tlet argms = has_key(s:status, 'arg_type') && s:status['arg_type'] == 'dict'\n\t\t\t\\ ? [{ 'str': a:enum }] : [a:enum]\n\t\tlet &l:stl = call(s:status['prog'], argms, s:status)\n\tel\n\t\tlet &l:stl = '%#CtrlPStats# '.a:enum.' %* '.txt.'%=%<%#CtrlPMode2# %{getcwd()} %*'\n\ten\n\tredraws\nendf\n\" *** Paths {{{2\n\" Line formatting {{{3\nfu! s:formatline(str)\n\tlet str = a:str\n\tif s:itemtype == 1\n\t\tlet filpath = fnamemodify(str, ':p')\n\t\tlet bufnr = s:nonamecond(str, filpath)\n\t\t\t\\ ? str2nr(matchstr(str, '[\\/]\\?\\[\\zs\\d\\+\\ze\\*No Name\\]$'))\n\t\t\t\\ : bufnr('^'.filpath.'$')\n\t\tlet idc = ( bufnr == bufnr('#') ? '#' : '' )\n\t\t\t\\ . ( getbufvar(bufnr, '&ma') ? '' : '-' )\n\t\t\t\\ . ( getbufvar(bufnr, '&ro') ? '=' : '' )\n\t\t\t\\ . ( getbufvar(bufnr, '&mod') ? '+' : '' )\n\t\tlet str .= idc != '' ? ' '.idc : ''\n\ten\n\tlet cond = s:ispath && ( s:winw - 4 ) < s:strwidth(str)\n\tretu '> '.( cond ? s:pathshorten(str) : str )\nendf\n\nfu! s:pathshorten(str)\n\tretu matchstr(a:str, '^.\\{9}').'...'\n\t\t\\ .matchstr(a:str, '.\\{'.( s:winw - 16 ).'}$')\nendf\n\nfu! s:offset(lines, height)\n\tlet s:offset = s:mw_order == 'btt' ? ( a:height - s:res_count ) : 0\n\tretu s:offset > 0 ? ( repeat([''], s:offset) + a:lines ) : a:lines\nendf\n\" Directory completion {{{3\nfu! s:dircompl(be, sd)\n\tif a:sd == '' | retu [] | en\n\tif a:be == ''\n\t\tlet [be, sd] = [s:dyncwd, a:sd]\n\tel\n\t\tlet be = a:be.s:lash(a:be)\n\t\tlet sd = be.a:sd\n\ten\n\tlet dirs = split(globpath(s:fnesc(be, 'g', ','), a:sd.'*/'), \"\\n\")\n\tif a:be == ''\n\t\tlet dirs = ctrlp#rmbasedir(dirs)\n\ten\n\tcal filter(dirs, '!match(v:val, escape(sd, ''~$.\\''))'\n\t\t\\ . ' && v:val !~ ''\\v(^|[\\/])\\.{1,2}[\\/]$''')\n\tretu dirs\nendf\n\nfu! s:findcommon(items, seed)\n\tlet [items, id, cmn, ic] = [copy(a:items), strlen(a:seed), '', 0]\n\tcal map(items, 'strpart(v:val, id)')\n\tfor char in split(items[0], '\\zs')\n\t\tfor item in items[1:]\n\t\t\tif item[ic] != char | let brk = 1 | brea | en\n\t\tendfo\n\t\tif exists('brk') | brea | en\n\t\tlet cmn .= char\n\t\tlet ic += 1\n\tendfo\n\tretu cmn\nendf\n\" Misc {{{3\nfu! s:headntail(str)\n\tlet parts = split(a:str, '[\\/]\\ze[^\\/]\\+[\\/:]\\?$')\n\tretu len(parts) == 1 ? ['', parts[0]] : len(parts) == 2 ? parts : []\nendf\n\nfu! s:lash(...)\n\tretu ( a:0 ? a:1 : s:dyncwd ) !~ '[\\/]$' ? s:lash : ''\nendf\n\nfu! s:ispathitem()\n\tretu s:itemtype < 3 || ( s:itemtype > 2 && s:getextvar('type') == 'path' )\nendf\n\nfu! ctrlp#igncwd(cwd)\n\tretu ctrlp#utils#glob(a:cwd, 0) == '' ||\n\t\t\\ ( s:igntype >= 0 && s:usrign(a:cwd, getftype(a:cwd)) )\nendf\n\nfu! ctrlp#dirnfile(entries)\n\tlet [items, cwd] = [[[], []], s:dyncwd.s:lash()]\n\tfor each in a:entries\n\t\tlet etype = getftype(each)\n\t\tif s:igntype >= 0 && s:usrign(each, etype) | con | en\n\t\tif etype == 'dir'\n\t\t\tif s:showhidden | if each !~ '[\\/]\\.\\{1,2}$'\n\t\t\t\tcal add(items[0], each)\n\t\t\ten | el\n\t\t\t\tcal add(items[0], each)\n\t\t\ten\n\t\telsei etype == 'link'\n\t\t\tif s:folsym\n\t\t\t\tlet isfile = !isdirectory(each)\n\t\t\t\tif s:folsym == 2 || !s:samerootsyml(each, isfile, cwd)\n\t\t\t\t\tcal add(items[isfile], each)\n\t\t\t\ten\n\t\t\ten\n\t\telsei etype == 'file'\n\t\t\tcal add(items[1], each)\n\t\ten\n\tendfo\n\tretu items\nendf\n\nfu! s:usrign(item, type)\n\tretu s:igntype == 1 ? a:item =~ s:usrign\n\t\t\\ : s:igntype == 4 && has_key(s:usrign, a:type) && s:usrign[a:type] != ''\n\t\t\\ ? a:item =~ s:usrign[a:type] : 0\nendf\n\nfu! s:samerootsyml(each, isfile, cwd)\n\tlet resolve = fnamemodify(resolve(a:each), ':p:h')\n\tlet resolve .= s:lash(resolve)\n\tretu !( stridx(resolve, a:cwd) && ( stridx(a:cwd, resolve) || a:isfile ) )\nendf\n\nfu! ctrlp#rmbasedir(items)\n\tlet cwd = s:dyncwd.s:lash()\n\tif a:items != [] && !stridx(a:items[0], cwd)\n\t\tlet idx = strlen(cwd)\n\t\tretu map(a:items, 'strpart(v:val, idx)')\n\ten\n\tretu a:items\nendf\n\" Working directory {{{3\nfu! s:getparent(item)\n\tlet parent = substitute(a:item, '[\\/][^\\/]\\+[\\/:]\\?$', '', '')\n\tif parent == '' || parent !~ '[\\/]'\n\t\tlet parent .= s:lash\n\ten\n\tretu parent\nendf\n\nfu! s:findroot(curr, mark, depth, type)\n\tlet [depth, fnd] = [a:depth + 1, 0]\n\tif type(a:mark) == 1\n\t\tlet fnd = s:glbpath(s:fnesc(a:curr, 'g', ','), a:mark, 1) != ''\n\telsei type(a:mark) == 3\n\t\tfor markr in a:mark\n\t\t\tif s:glbpath(s:fnesc(a:curr, 'g', ','), markr, 1) != ''\n\t\t\t\tlet fnd = 1\n\t\t\t\tbrea\n\t\t\ten\n\t\tendfo\n\ten\n\tif fnd\n\t\tif !a:type | cal ctrlp#setdir(a:curr) | en\n\t\tretu [exists('markr') ? markr : a:mark, a:curr]\n\telsei depth > s:maxdepth\n\t\tcal ctrlp#setdir(s:cwd)\n\tel\n\t\tlet parent = s:getparent(a:curr)\n\t\tif parent != a:curr\n\t\t\tretu s:findroot(parent, a:mark, depth, a:type)\n\t\ten\n\ten\n\tretu []\nendf\n\nfu! ctrlp#setdir(path, ...)\n\tlet cmd = a:0 ? a:1 : 'lc!'\n\tsil! exe cmd s:fnesc(a:path, 'c')\n\tlet [s:crfilerel, s:dyncwd] = [fnamemodify(s:crfile, ':.'), getcwd()]\nendf\n\" Fallbacks {{{3\nfu! s:glbpath(...)\n\tretu call('ctrlp#utils#globpath', a:000)\nendf\n\nfu! s:fnesc(...)\n\tretu call('ctrlp#utils#fnesc', a:000)\nendf\n\nfu! ctrlp#setlcdir()\n\tif exists('*haslocaldir')\n\t\tcal ctrlp#setdir(getcwd(), haslocaldir() ? 'lc!' : 'cd!')\n\ten\nendf\n\" Highlighting {{{2\nfu! ctrlp#syntax()\n\tif ctrlp#nosy() | retu | en\n\tfor [ke, va] in items(s:hlgrps) | cal ctrlp#hicheck('CtrlP'.ke, va) | endfo\n\tif synIDattr(synIDtrans(hlID('Normal')), 'bg') !~ '^-1$\\|^$'\n\t\tsil! exe 'hi CtrlPLinePre '.( has(\"gui_running\") ? 'gui' : 'cterm' ).'fg=bg'\n\ten\n\tsy match CtrlPNoEntries '^ == NO ENTRIES ==$'\n\tif hlexists('CtrlPLinePre')\n\t\tsy match CtrlPLinePre '^>'\n\ten\nendf\n\nfu! s:highlight(pat, grp)\n\tif s:matcher != {} | retu | en\n\tcal clearmatches()\n\tif !empty(a:pat) && s:ispath\n\t\tlet pat = s:regexp ? substitute(a:pat, '\\\\\\@<!\\^', '^> \\\\zs', 'g') : a:pat\n\t\tif s:byfname\n\t\t\tlet pat = substitute(pat, '\\[\\^\\(.\\{-}\\)\\]\\\\{-}', '[^\\\\/\\1]\\\\{-}', 'g')\n\t\t\tlet pat = substitute(pat, '\\$\\@<!$', '\\\\ze[^\\\\/]*$', 'g')\n\t\ten\n\t\tcal matchadd(a:grp, ( s:martcs == '' ? '\\c' : '\\C' ).pat)\n\t\tcal matchadd('CtrlPLinePre', '^>')\n\ten\nendf\n\nfu! s:dohighlight()\n\tretu s:mathi[0] && exists('*clearmatches') && !ctrlp#nosy()\nendf\n\" Prompt history {{{2\nfu! s:gethistloc()\n\tlet utilcadir = ctrlp#utils#cachedir()\n\tlet cache_dir = utilcadir.s:lash(utilcadir).'hist'\n\tretu [cache_dir, cache_dir.s:lash(cache_dir).'cache.txt']\nendf\n\nfu! s:gethistdata()\n\tretu ctrlp#utils#readfile(s:gethistloc()[1])\nendf\n\nfu! ctrlp#recordhist()\n\tlet str = join(s:prompt, '')\n\tif empty(str) || !s:maxhst | retu | en\n\tlet hst = s:hstry\n\tif len(hst) > 1 && hst[1] == str | retu | en\n\tcal extend(hst, [str], 1)\n\tif len(hst) > s:maxhst | cal remove(hst, s:maxhst, -1) | en\n\tcal ctrlp#utils#writecache(hst, s:gethistloc()[0], s:gethistloc()[1])\nendf\n\" Signs {{{2\nfu! s:unmarksigns()\n\tif !s:dosigns() | retu | en\n\tfor key in keys(s:marked)\n\t\texe 'sign unplace' key 'buffer='.s:bufnr\n\tendfo\nendf\n\nfu! s:remarksigns()\n\tif !s:dosigns() | retu | en\n\tfor ic in range(1, len(s:lines))\n\t\tlet line = s:ispath ? fnamemodify(s:lines[ic - 1], ':p') : s:lines[ic - 1]\n\t\tlet key = s:dictindex(s:marked, line)\n\t\tif key > 0\n\t\t\texe 'sign place' key 'line='.ic.' name=ctrlpmark buffer='.s:bufnr\n\t\ten\n\tendfo\nendf\n\nfu! s:dosigns()\n\tretu exists('s:marked') && s:bufnr > 0 && s:opmul != '0' && has('signs')\nendf\n\" Lists & Dictionaries {{{2\nfu! s:ifilter(list, str)\n\tlet [rlist, estr] = [[], substitute(a:str, 'v:val', 'each', 'g')]\n\tfor each in a:list\n\t\ttry\n\t\t\tif eval(estr)\n\t\t\t\tcal add(rlist, each)\n\t\t\ten\n\t\tcat | con | endt\n\tendfo\n\tretu rlist\nendf\n\nfu! s:dictindex(dict, expr)\n\tfor key in keys(a:dict)\n\t\tif a:dict[key] == a:expr | retu key | en\n\tendfo\n\tretu -1\nendf\n\nfu! s:vacantdict(dict)\n\tretu filter(range(1, max(keys(a:dict))), '!has_key(a:dict, v:val)')\nendf\n\nfu! s:sublist(l, s, e)\n\tretu v:version > 701 ? a:l[(a:s):(a:e)] : s:sublist7071(a:l, a:s, a:e)\nendf\n\nfu! s:sublist7071(l, s, e)\n\tlet [newlist, id, ae] = [[], a:s, a:e == -1 ? len(a:l) - 1 : a:e]\n\twh id <= ae\n\t\tcal add(newlist, get(a:l, id))\n\t\tlet id += 1\n\tendw\n\tretu newlist\nendf\n\" Buffers {{{2\nfu! s:buftab(bufnr, md)\n\tfor tabnr in range(1, tabpagenr('$'))\n\t\tif tabpagenr() == tabnr && a:md == 't' | con | en\n\t\tlet buflist = tabpagebuflist(tabnr)\n\t\tif index(buflist, a:bufnr) >= 0\n\t\t\tfor winnr in range(1, tabpagewinnr(tabnr, '$'))\n\t\t\t\tif buflist[winnr - 1] == a:bufnr | retu [tabnr, winnr] | en\n\t\t\tendfo\n\t\ten\n\tendfo\n\tretu [0, 0]\nendf\n\nfu! s:bufwins(bufnr)\n\tlet winns = 0\n\tfor tabnr in range(1, tabpagenr('$'))\n\t\tlet winns += count(tabpagebuflist(tabnr), a:bufnr)\n\tendfo\n\tretu winns\nendf\n\nfu! s:nonamecond(str, filpath)\n\tretu a:str =~ '[\\/]\\?\\[\\d\\+\\*No Name\\]$' && !filereadable(a:filpath)\n\t\t\\ && bufnr('^'.a:filpath.'$') < 1\nendf\n\nfu! ctrlp#normcmd(cmd, ...)\n\tif a:0 < 2 && s:nosplit() | retu a:cmd | en\n\tlet norwins = filter(range(1, winnr('$')),\n\t\t\\ 'empty(getbufvar(winbufnr(v:val), \"&bt\"))')\n\tfor each in norwins\n\t\tlet bufnr = winbufnr(each)\n\t\tif empty(bufname(bufnr)) && empty(getbufvar(bufnr, '&ft'))\n\t\t\tlet fstemp = each | brea\n\t\ten\n\tendfo\n\tlet norwin = empty(norwins) ? 0 : norwins[0]\n\tif norwin\n\t\tif index(norwins, winnr()) < 0\n\t\t\texe ( exists('fstemp') ? fstemp : norwin ).'winc w'\n\t\ten\n\t\tretu a:cmd\n\ten\n\tretu a:0 ? a:1 : 'bo vne'\nendf\n\nfu! ctrlp#modfilecond(w)\n\tretu &mod && !&hid && &bh != 'hide' && s:bufwins(bufnr('%')) == 1 && !&cf &&\n\t\t\\ ( ( !&awa && a:w ) || filewritable(fnamemodify(bufname('%'), ':p')) != 1 )\nendf\n\nfu! s:nosplit()\n\tretu !empty(s:nosplit) && match([bufname('%'), &l:ft, &l:bt], s:nosplit) >= 0\nendf\n\nfu! s:setupblank()\n\tsetl noswf nonu nobl nowrap nolist nospell nocuc wfh\n\tsetl fdc=0 fdl=99 tw=0 bt=nofile bh=unload\n\tif v:version > 702\n\t\tsetl nornu noudf cc=0\n\ten\nendf\n\nfu! s:leavepre()\n\tif exists('s:bufnr') && s:bufnr == bufnr('%') | bw! | en\n\tif !( exists(s:ccex) && !{s:ccex} )\n\t\t\\ && !( has('clientserver') && len(split(serverlist(), \"\\n\")) > 1 )\n\t\tcal ctrlp#clra()\n\ten\nendf\n\nfu! s:checkbuf()\n\tif !exists('s:init') && exists('s:bufnr') && s:bufnr > 0\n\t\texe s:bufnr.'bw!'\n\ten\nendf\n\nfu! s:iscmdwin()\n\tlet ermsg = v:errmsg\n\tsil! noa winc p\n\tsil! noa winc p\n\tlet [v:errmsg, ermsg] = [ermsg, v:errmsg]\n\tretu ermsg =~ '^E11:'\nendf\n\" Arguments {{{2\nfu! s:at(str)\n\tif a:str =~ '\\v^\\@(cd|lc[hd]?|chd).*'\n\t\tlet str = substitute(a:str, '\\v^\\@(cd|lc[hd]?|chd)\\s*', '', '')\n\t\tif str == '' | retu 1 | en\n\t\tlet str = str =~ '^%:.\\+' ? fnamemodify(s:crfile, str[1:]) : str\n\t\tlet path = fnamemodify(expand(str, 1), ':p')\n\t\tif isdirectory(path)\n\t\t\tif path != s:dyncwd\n\t\t\t\tcal ctrlp#setdir(path)\n\t\t\t\tcal ctrlp#setlines()\n\t\t\ten\n\t\t\tcal ctrlp#recordhist()\n\t\t\tcal s:PrtClear()\n\t\ten\n\t\tretu 1\n\ten\n\tretu 0\nendf\n\nfu! s:tail()\n\tif exists('s:optail') && !empty('s:optail')\n\t\tlet tailpref = s:optail !~ '^\\s*+' ? ' +' : ' '\n\t\tretu tailpref.s:optail\n\ten\n\tretu ''\nendf\n\nfu! s:sanstail(str)\n\tlet str = s:spi ?\n\t\t\\ substitute(a:str, '^\\(@.*$\\|\\\\\\\\\\ze@\\|\\.\\.\\zs[.\\/]\\+$\\)', '', 'g') : a:str\n\tlet [str, pat] = [substitute(str, '\\\\\\\\', '\\', 'g'), '\\([^:]\\|\\\\:\\)*$']\n\tunl! s:optail\n\tif str =~ '\\\\\\@<!:'.pat\n\t\tlet s:optail = matchstr(str, '\\\\\\@<!:\\zs'.pat)\n\t\tlet str = substitute(str, '\\\\\\@<!:'.pat, '', '')\n\ten\n\tretu substitute(str, '\\\\\\ze:', '', 'g')\nendf\n\nfu! s:argmaps(md, i)\n\tlet roh = [\n\t\t\\ ['Open Multiple Files', '/h[i]dden/[c]lear', ['i', 'c']],\n\t\t\\ ['Create a New File', '/[r]eplace', ['r']],\n\t\t\\ ['Open Selected', '/[r]eplace', ['r', 'd', 'a']],\n\t\t\\ ]\n\tif a:i == 2\n\t\tif !buflisted(bufnr('^'.fnamemodify(ctrlp#getcline(), ':p').'$'))\n\t\t\tlet roh[2][1] .= '/h[i]dden'\n\t\t\tlet roh[2][2] += ['i']\n\t\ten\n\t\tif s:openfunc != {} && has_key(s:openfunc, s:ctype)\n\t\t\tlet roh[2][1] .= '/e[x]ternal'\n\t\t\tlet roh[2][2] += ['x']\n\t\ten\n\ten\n\tlet str = roh[a:i][0].': [t]ab/[v]ertical/[h]orizontal'.roh[a:i][1].'? '\n\tretu s:choices(str, ['t', 'v', 'h'] + roh[a:i][2], 's:argmaps', [a:md, a:i])\nendf\n\nfu! s:insertstr()\n\tlet str = 'Insert: c[w]ord/c[f]ile/[s]earch/[v]isual/[c]lipboard/[r]egister? '\n\tretu s:choices(str, ['w', 'f', 's', 'v', 'c', 'r'], 's:insertstr', [])\nendf\n\nfu! s:textdialog(str)\n\tredr | echoh MoreMsg | echon a:str | echoh None\n\tretu nr2char(getchar())\nendf\n\nfu! s:choices(str, choices, func, args)\n\tlet char = s:textdialog(a:str)\n\tif index(a:choices, char) >= 0\n\t\tretu char\n\telsei char =~# \"\\\\v\\<Esc>|\\<C-c>|\\<C-g>|\\<C-u>|\\<C-w>|\\<C-[>\"\n\t\tcal s:BuildPrompt(0)\n\t\tretu 'cancel'\n\telsei char =~# \"\\<CR>\" && a:args != []\n\t\tretu a:args[0]\n\ten\n\tretu call(a:func, a:args)\nendf\n\nfu! s:getregs()\n\tlet char = s:textdialog('Insert from register: ')\n\tif char =~# \"\\\\v\\<Esc>|\\<C-c>|\\<C-g>|\\<C-u>|\\<C-w>|\\<C-[>\"\n\t\tcal s:BuildPrompt(0)\n\t\tretu -1\n\telsei char =~# \"\\<CR>\"\n\t\tretu s:getregs()\n\ten\n\tretu s:regisfilter(char)\nendf\n\nfu! s:regisfilter(reg)\n\tretu substitute(getreg(a:reg), \"[\\t\\n]\", ' ', 'g')\nendf\n\" Misc {{{2\nfu! s:modevar()\n\tlet s:matchtype = s:mtype()\n\tlet s:ispath = s:ispathitem()\n\tlet s:mfunc = s:mfunc()\n\tlet s:nolim = s:getextvar('nolim')\n\tlet s:dosort = s:getextvar('sort')\n\tlet s:spi = !s:itemtype || s:getextvar('specinput') > 0\nendf\n\nfu! s:nosort()\n\tretu s:matcher != {} || s:nolim == 1 || ( s:itemtype == 2 && s:mrudef )\n\t\t\\ || ( s:itemtype =~ '\\v^(1|2)$' && s:prompt == ['', '', ''] ) || !s:dosort\nendf\n\nfu! s:byfname()\n\tretu s:ispath && s:byfname\nendf\n\nfu! s:narrowable()\n\tretu exists('s:act_add') && exists('s:matched') && s:matched != []\n\t\t\\ && exists('s:mdata') && s:mdata[:2] == [s:dyncwd, s:itemtype, s:regexp]\n\t\t\\ && s:matcher == {} && !exists('s:did_exp')\nendf\n\nfu! s:getinput(...)\n\tlet [prt, spi] = [s:prompt, ( a:0 ? a:1 : '' )]\n\tif s:abbrev != {}\n\t\tlet gmd = has_key(s:abbrev, 'gmode') ? s:abbrev['gmode'] : ''\n\t\tlet str = ( gmd =~ 't' && !a:0 ) || spi == 'c' ? prt[0] : join(prt, '')\n\t\tif gmd =~ 't' && gmd =~ 'k' && !a:0 && matchstr(str, '.$') =~ '\\k'\n\t\t\tretu join(prt, '')\n\t\ten\n\t\tlet [pf, rz] = [( s:byfname() ? 'f' : 'p' ), ( s:regexp ? 'r' : 'z' )]\n\t\tfor dict in s:abbrev['abbrevs']\n\t\t\tlet dmd = has_key(dict, 'mode') ? dict['mode'] : ''\n\t\t\tlet pat = escape(dict['pattern'], '~')\n\t\t\tif ( dmd == '' || ( dmd =~ pf && dmd =~ rz && !a:0 )\n\t\t\t\t\\ || dmd =~ '['.spi.']' ) && str =~ pat\n\t\t\t\tlet [str, s:did_exp] = [join(split(str, pat, 1), dict['expanded']), 1]\n\t\t\ten\n\t\tendfo\n\t\tif gmd =~ 't' && !a:0\n\t\t\tlet prt[0] = str\n\t\tel\n\t\t\tretu str\n\t\ten\n\ten\n\tretu spi == 'c' ? prt[0] : join(prt, '')\nendf\n\nfu! s:migemo(str)\n\tlet [str, rtp] = [a:str, s:fnesc(&rtp, 'g')]\n\tlet dict = s:glbpath(rtp, printf(\"dict/%s/migemo-dict\", &enc), 1)\n\tif !len(dict)\n\t\tlet dict = s:glbpath(rtp, \"dict/migemo-dict\", 1)\n\ten\n\tif len(dict)\n\t\tlet [tokens, str, cmd] = [split(str, '\\s'), '', 'cmigemo -v -w %s -d %s']\n\t\tfor token in tokens\n\t\t\tlet rtn = system(printf(cmd, shellescape(token), shellescape(dict)))\n\t\t\tlet str .= !v:shell_error && strlen(rtn) > 0 ? '.*'.rtn : token\n\t\tendfo\n\ten\n\tretu str\nendf\n\nfu! s:strwidth(str)\n\tretu exists('*strdisplaywidth') ? strdisplaywidth(a:str) : strlen(a:str)\nendf\n\nfu! ctrlp#j2l(nr)\n\texe 'norm!' a:nr.'G'\n\tsil! norm! zvzz\nendf\n\nfu! s:maxf(len)\n\tretu s:maxfiles && a:len > s:maxfiles\nendf\n\nfu! s:regexfilter(str)\n\tlet str = a:str\n\tfor key in keys(s:fpats) | if str =~ key\n\t\tlet str = substitute(str, s:fpats[key], '', 'g')\n\ten | endfo\n\tretu str\nendf\n\nfu! s:walker(m, p, d)\n\tretu a:d >= 0 ? a:p < a:m ? a:p + a:d : 0 : a:p > 0 ? a:p + a:d : a:m\nendf\n\nfu! s:delent(rfunc)\n\tif a:rfunc == '' | retu | en\n\tlet [s:force, tbrem] = [1, []]\n\tif exists('s:marked')\n\t\tlet tbrem = values(s:marked)\n\t\tcal s:unmarksigns()\n\t\tunl s:marked\n\ten\n\tif tbrem == [] && ( has('dialog_gui') || has('dialog_con') ) &&\n\t\t\\ confirm(\"Wipe all entries?\", \"&OK\\n&Cancel\") != 1\n\t\tunl s:force\n\t\tcal s:BuildPrompt(0)\n\t\tretu\n\ten\n\tlet g:ctrlp_lines = call(a:rfunc, [tbrem])\n\tcal s:BuildPrompt(1)\n\tunl s:force\nendf\n\" Entering & Exiting {{{2\nfu! s:getenv()\n\tlet [s:cwd, s:winres] = [getcwd(), [winrestcmd(), &lines, winnr('$')]]\n\tlet [s:crword, s:crnbword] = [expand('<cword>', 1), expand('<cWORD>', 1)]\n\tlet [s:crgfile, s:crline] = [expand('<cfile>', 1), getline('.')]\n\tlet [s:winmaxh, s:crcursor] = [min([s:mw_max, &lines]), getpos('.')]\n\tlet [s:crbufnr, s:crvisual] = [bufnr('%'), s:lastvisual()]\n\tlet s:crfile = bufname('%') == ''\n\t\t\\ ? '['.s:crbufnr.'*No Name]' : expand('%:p', 1)\n\tlet s:crfpath = expand('%:p:h', 1)\n\tlet s:mrbs = ctrlp#mrufiles#bufs()\nendf\n\nfu! s:lastvisual()\n\tlet cview = winsaveview()\n\tlet [ovreg, ovtype] = [getreg('v'), getregtype('v')]\n\tlet [oureg, outype] = [getreg('\"'), getregtype('\"')]\n\tsil! norm! gv\"vy\n\tlet selected = s:regisfilter('v')\n\tcal setreg('v', ovreg, ovtype)\n\tcal setreg('\"', oureg, outype)\n\tcal winrestview(cview)\n\tretu selected\nendf\n\nfu! s:log(m)\n\tif exists('g:ctrlp_log') && g:ctrlp_log | if a:m\n\t\tlet cadir = ctrlp#utils#cachedir()\n\t\tlet apd = g:ctrlp_log > 1 ? '>' : ''\n\t\tsil! exe 'redi! >'.apd cadir.s:lash(cadir).'ctrlp.log'\n\tel\n\t\tsil! redi END\n\ten | en\nendf\n\nfu! s:buffunc(e)\n\tif a:e && has_key(s:buffunc, 'enter')\n\t\tcal call(s:buffunc['enter'], [], s:buffunc)\n\telsei !a:e && has_key(s:buffunc, 'exit')\n\t\tcal call(s:buffunc['exit'], [], s:buffunc)\n\ten\nendf\n\nfu! s:openfile(cmd, fid, tail, chkmod, ...)\n\tlet cmd = a:cmd\n\tif a:chkmod && cmd =~ '^[eb]$' && ctrlp#modfilecond(!( cmd == 'b' && &aw ))\n\t\tlet cmd = cmd == 'b' ? 'sb' : 'sp'\n\ten\n\tlet cmd = cmd =~ '^tab' ? ctrlp#tabcount().cmd : cmd\n\tlet j2l = a:0 && a:1[0] ? a:1[1] : 0\n\texe cmd.( a:0 && a:1[0] ? '' : a:tail ) s:fnesc(a:fid, 'f')\n\tif j2l\n\t\tcal ctrlp#j2l(j2l)\n\ten\n\tif !empty(a:tail)\n\t\tsil! norm! zvzz\n\ten\n\tif cmd != 'bad'\n\t\tcal ctrlp#setlcdir()\n\ten\nendf\n\nfu! ctrlp#tabcount()\n\tif exists('s:tabct')\n\t\tlet tabct = s:tabct\n\t\tlet s:tabct += 1\n\telsei !type(s:tabpage)\n\t\tlet tabct = s:tabpage\n\telsei type(s:tabpage) == 1\n\t\tlet tabpos =\n\t\t\t\\ s:tabpage =~ 'c' ? tabpagenr() :\n\t\t\t\\ s:tabpage =~ 'f' ? 1 :\n\t\t\t\\ s:tabpage =~ 'l' ? tabpagenr('$') :\n\t\t\t\\ tabpagenr()\n\t\tlet tabct =\n\t\t\t\\ s:tabpage =~ 'a' ? tabpos :\n\t\t\t\\ s:tabpage =~ 'b' ? tabpos - 1 :\n\t\t\t\\ tabpos\n\ten\n\tretu tabct < 0 ? 0 : tabct\nendf\n\nfu! s:settype(type)\n\tretu a:type < 0 ? exists('s:itemtype') ? s:itemtype : 0 : a:type\nendf\n\" Matching {{{2\nfu! s:matchfname(item, pat)\n\tlet parts = split(a:item, '[\\/]\\ze[^\\/]\\+$')\n\tlet mfn = match(parts[-1], a:pat[0])\n\tretu len(a:pat) == 1 ? mfn : len(a:pat) == 2 ?\n\t\t\\ ( mfn >= 0 && ( len(parts) == 2 ? match(parts[0], a:pat[1]) : -1 ) >= 0\n\t\t\\ ? 0 : -1 ) : -1\n\ten\nendf\n\nfu! s:matchtabs(item, pat)\n\tretu match(split(a:item, '\\t\\+')[0], a:pat)\nendf\n\nfu! s:matchtabe(item, pat)\n\tretu match(split(a:item, '\\t\\+[^\\t]\\+$')[0], a:pat)\nendf\n\nfu! s:buildpat(lst)\n\tlet pat = a:lst[0]\n\tfor item in range(1, len(a:lst) - 1)\n\t\tlet pat .= '[^'.a:lst[item - 1].']\\{-}'.a:lst[item]\n\tendfo\n\tretu pat\nendf\n\nfu! s:mfunc()\n\tlet mfunc = 'match'\n\tif s:byfname()\n\t\tlet mfunc = 's:matchfname'\n\telsei s:itemtype > 2\n\t\tlet matchtypes = { 'tabs': 's:matchtabs', 'tabe': 's:matchtabe' }\n\t\tif has_key(matchtypes, s:matchtype)\n\t\t\tlet mfunc = matchtypes[s:matchtype]\n\t\ten\n\ten\n\tretu mfunc\nendf\n\nfu! s:mmode()\n\tlet matchmodes = {\n\t\t\\ 'match': 'full-line',\n\t\t\\ 's:matchfname': 'filename-only',\n\t\t\\ 's:matchtabs': 'first-non-tab',\n\t\t\\ 's:matchtabe': 'until-last-tab',\n\t\t\\ }\n\tretu matchmodes[s:mfunc]\nendf\n\" Cache {{{2\nfu! s:writecache(cafile)\n\tif ( g:ctrlp_newcache || !filereadable(a:cafile) ) && !s:nocache()\n\t\tcal ctrlp#utils#writecache(g:ctrlp_allfiles)\n\t\tlet g:ctrlp_newcache = 0\n\ten\nendf\n\nfu! s:nocache(...)\n\tif !s:caching\n\t\tretu 1\n\telsei s:caching > 1\n\t\tif !( exists(s:ccex) && !{s:ccex} ) || has_key(s:ficounts, s:dyncwd)\n\t\t\tretu get(s:ficounts, s:dyncwd, [0, 0])[0] < s:caching\n\t\telsei a:0 && filereadable(a:1)\n\t\t\tretu len(ctrlp#utils#readfile(a:1)) < s:caching\n\t\ten\n\t\tretu 1\n\ten\n\tretu 0\nendf\n\nfu! s:insertcache(str)\n\tlet [data, g:ctrlp_newcache, str] = [g:ctrlp_allfiles, 1, a:str]\n\tif data == [] || strlen(str) <= strlen(data[0])\n\t\tlet pos = 0\n\telsei strlen(str) >= strlen(data[-1])\n\t\tlet pos = len(data) - 1\n\tel\n\t\tlet pos = 0\n\t\tfor each in data\n\t\t\tif strlen(each) > strlen(str) | brea | en\n\t\t\tlet pos += 1\n\t\tendfo\n\ten\n\tcal insert(data, str, pos)\n\tcal s:writecache(ctrlp#utils#cachefile())\nendf\n\" Extensions {{{2\nfu! s:mtype()\n\tretu s:itemtype > 2 ? s:getextvar('type') : 'path'\nendf\n\nfu! s:execextvar(key)\n\tif !empty(g:ctrlp_ext_vars)\n\t\tcal map(filter(copy(g:ctrlp_ext_vars),\n\t\t\t\\ 'has_key(v:val, a:key)'), 'eval(v:val[a:key])')\n\ten\nendf\n\nfu! s:getextvar(key)\n\tif s:itemtype > 2\n\t\tlet vars = g:ctrlp_ext_vars[s:itemtype - 3]\n\t\tretu has_key(vars, a:key) ? vars[a:key] : -1\n\ten\n\tretu -1\nendf\n\nfu! ctrlp#getcline()\n\tlet [linenr, offset] = [line('.'), ( s:offset > 0 ? s:offset : 0 )]\n\tretu !empty(s:lines) && !( offset && linenr <= offset )\n\t\t\\ ? s:lines[linenr - 1 - offset] : ''\nendf\n\nfu! ctrlp#getmarkedlist()\n\tretu exists('s:marked') ? values(s:marked) : []\nendf\n\nfu! ctrlp#exit()\n\tcal s:PrtExit()\nendf\n\nfu! ctrlp#prtclear()\n\tcal s:PrtClear()\nendf\n\nfu! ctrlp#switchtype(id)\n\tcal s:ToggleType(a:id - s:itemtype)\nendf\n\nfu! ctrlp#nosy()\n\tretu !( has('syntax') && exists('g:syntax_on') )\nendf\n\nfu! ctrlp#hicheck(grp, defgrp)\n\tif !hlexists(a:grp)\n\t\texe 'hi link' a:grp a:defgrp\n\ten\nendf\n\nfu! ctrlp#call(func, ...)\n\tretu call(a:func, a:000)\nendf\n\nfu! ctrlp#getvar(var)\n\tretu {a:var}\nendf\n\"}}}1\n\" * Initialization {{{1\nfu! ctrlp#setlines(...)\n\tif a:0 | let s:itemtype = a:1 | en\n\tcal s:modevar()\n\tlet types = ['ctrlp#files()', 'ctrlp#buffers()', 'ctrlp#mrufiles#list()']\n\tif !empty(g:ctrlp_ext_vars)\n\t\tcal map(copy(g:ctrlp_ext_vars), 'add(types, v:val[\"init\"])')\n\ten\n\tlet g:ctrlp_lines = eval(types[s:itemtype])\nendf\n\nfu! ctrlp#init(type, ...)\n\tif exists('s:init') || s:iscmdwin() | retu | en\n\tlet [s:ermsg, v:errmsg] = [v:errmsg, '']\n\tlet [s:matches, s:init] = [1, 1]\n\tcal s:Reset(a:0 ? a:1 : {})\n\tnoa cal s:Open()\n\tcal s:SetWD(a:0 ? a:1 : {})\n\tcal s:MapNorms()\n\tcal s:MapSpecs()\n\tcal ctrlp#syntax()\n\tcal ctrlp#setlines(s:settype(a:type))\n\tcal s:SetDefTxt()\n\tcal s:BuildPrompt(1)\n\tif s:keyloop | cal s:KeyLoop() | en\nendf\n\" - Autocmds {{{1\nif has('autocmd')\n\taug CtrlPAug\n\t\tau!\n\t\tau BufEnter ControlP cal s:checkbuf()\n\t\tau BufLeave ControlP noa cal s:Close()\n\t\tau VimLeavePre * cal s:leavepre()\n\taug END\nen\n\nfu! s:autocmds()\n\tif !has('autocmd') | retu | en\n\tif exists('#CtrlPLazy')\n\t\tau! CtrlPLazy\n\ten\n\tif s:lazy\n\t\taug CtrlPLazy\n\t\t\tau!\n\t\t\tau CursorHold ControlP cal s:ForceUpdate()\n\t\taug END\n\ten\nendf\n\"}}}\n\n\" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2\n"
  },
  {
    "path": ".vim/bundle/ctrlp.vim/doc/ctrlp.txt",
    "content": "*ctrlp.txt*       Fuzzy file, buffer, mru, tag, ... finder. v1.79\n*CtrlP* *ControlP* *'ctrlp'* *'ctrl-p'*\n===============================================================================\n#                                                                             #\n#          :::::::: ::::::::::: :::::::::  :::             :::::::::          #\n#         :+:    :+:    :+:     :+:    :+: :+:             :+:    :+:         #\n#         +:+           +:+     +:+    +:+ +:+             +:+    +:+         #\n#         +#+           +#+     +#++:++#:  +#+             +#++:++#+          #\n#         +#+           +#+     +#+    +#+ +#+             +#+                #\n#         #+#    #+#    #+#     #+#    #+# #+#             #+#                #\n#          ########     ###     ###    ### ##########      ###                #\n#                                                                             #\n===============================================================================\nCONTENTS                                                       *ctrlp-contents*\n\n    1. Intro........................................|ctrlp-intro|\n    2. Options......................................|ctrlp-options|\n    3. Commands.....................................|ctrlp-commands|\n    4. Mappings.....................................|ctrlp-mappings|\n    5. Input Formats................................|ctrlp-input-formats|\n    6. Extensions...................................|ctrlp-extensions|\n\n===============================================================================\nINTRO                                                             *ctrlp-intro*\n\nFull path fuzzy file, buffer, mru, tag, ... finder with an intuitive interface.\nWritten in pure Vimscript for MacVim, gVim and Vim version 7.0+. Has full\nsupport for Vim's |regexp| as search pattern, built-in MRU files monitoring,\nproject's root finder, and more.\n\nTo enable optional extensions (tag, dir, rtscript...), see |ctrlp-extensions|.\n\n===============================================================================\nOPTIONS                                                         *ctrlp-options*\n\nOverview:~\n\n  |loaded_ctrlp|................Disable the plugin.\n  |ctrlp_map|...................Default mapping.\n  |ctrlp_cmd|...................Default command used for the default mapping.\n  |ctrlp_by_filename|...........Default to filename mode or not.\n  |ctrlp_regexp|................Default to regexp mode or not.\n  |ctrlp_match_window|..........Order, height and position of the match window.\n  |ctrlp_switch_buffer|.........Jump to an open buffer if already opened.\n  |ctrlp_reuse_window|..........Reuse special windows (help, quickfix, etc).\n  |ctrlp_tabpage_position|......Where to put the new tab page.\n  |ctrlp_working_path_mode|.....How to set CtrlP's local working directory.\n  |ctrlp_root_markers|..........Additional, high priority root markers.\n  |ctrlp_use_caching|...........Use per-session caching or not.\n  |ctrlp_clear_cache_on_exit|...Keep cache after exiting Vim or not.\n  |ctrlp_cache_dir|.............Location of the cache directory.\n  |ctrlp_show_hidden|...........Ignore dotfiles and dotdirs or not.\n  |ctrlp_custom_ignore|.........Hide stuff when using |globpath()|.\n  |ctrlp_max_files|.............Number of files to scan initially.\n  |ctrlp_max_depth|.............Directory depth to recurse into when scanning.\n  |ctrlp_user_command|..........Use an external scanner.\n  |ctrlp_max_history|...........Number of entries saved in the prompt history.\n  |ctrlp_open_new_file|.........How to open a file created by <c-y>.\n  |ctrlp_open_multiple_files|...How to open files selected by <c-z>.\n  |ctrlp_arg_map|...............Intercept <c-y> and <c-o> or not.\n  |ctrlp_follow_symlinks|.......Follow symbolic links or not.\n  |ctrlp_lazy_update|...........Only update when typing has stopped.\n  |ctrlp_default_input|.........Seed the prompt with an initial string.\n  |ctrlp_abbrev|................Input abbreviations.\n  |ctrlp_key_loop|..............Use input looping for multi-byte input.\n  |ctrlp_use_migemo|............Use Migemo patterns for Japanese filenames.\n  |ctrlp_prompt_mappings|.......Change the mappings inside the prompt.\n\n  MRU mode:\n  |ctrlp_mruf_max|..............Max MRU entries to remember.\n  |ctrlp_mruf_exclude|..........Files that shouldn't be remembered.\n  |ctrlp_mruf_include|..........Files to be remembered.\n  |ctrlp_mruf_relative|.........Show only MRU files in the working directory.\n  |ctrlp_mruf_default_order|....Disable sorting.\n  |ctrlp_mruf_case_sensitive|...MRU files are case sensitive or not.\n  |ctrlp_mruf_save_on_update|...Save to disk whenever a new entry is added.\n\n  BufferTag mode: (to enable, see |ctrlp-extensions|)\n  |g:ctrlp_buftag_ctags_bin|....The location of the ctags-compatible binary.\n  |g:ctrlp_buftag_systemenc|....The encoding used for the ctags command.\n  |g:ctrlp_buftag_types|........Add new filetypes and set the cmd arguments.\n\n  Advanced options:\n  |ctrlp_open_func|.............Use custom file opening functions.\n  |ctrlp_status_func|...........Change CtrlP's two statuslines.\n  |ctrlp_buffer_func|...........Call custom functions in the CtrlP buffer.\n  |ctrlp_match_func|............Replace the built-in matching algorithm.\n\n-------------------------------------------------------------------------------\nDetailed descriptions and default values:~\n\n                                                                *'g:ctrlp_map'*\nUse this option to change the mapping to invoke CtrlP in |Normal| mode: >\n  let g:ctrlp_map = '<c-p>'\n<\n\n                                                                *'g:ctrlp_cmd'*\nSet the default opening command to use when pressing the above mapping: >\n  let g:ctrlp_cmd = 'CtrlP'\n<\n\n                                                             *'g:loaded_ctrlp'*\nUse this to disable the plugin completely: >\n  let g:loaded_ctrlp = 1\n<\n\n                                                        *'g:ctrlp_by_filename'*\nSet this to 1 to set searching by filename (as opposed to full path) as the\ndefault: >\n  let g:ctrlp_by_filename = 0\n<\nCan be toggled on/off by pressing <c-d> inside the prompt.\n\n                                                             *'g:ctrlp_regexp'*\nSet this to 1 to set regexp search as the default: >\n  let g:ctrlp_regexp = 0\n<\nCan be toggled on/off by pressing <c-r> inside the prompt.\n\n                                                       *'g:ctrlp_match_window'*\nChange the postion, the listing order of results, the minimum and the maximum\nheights of the match window: >\n  let g:ctrlp_match_window = ''\n<\nExample: >\n  let g:ctrlp_match_window = 'bottom,order:btt,min:1,max:10,results:10'\n<\nThe position: (default: bottom)\n  top - show the match window at the top of the screen.\n  bottom - show the match window at the bottom of the screen.\n\nThe listing order of results: (default: btt)\n  order:ttb - from top to bottom.\n  order:btt - from bottom to top.\n\nThe minimum and maximum heights:\n  min:{n} - show minimum {n} lines (default: 1).\n  max:{n} - show maximum {n} lines (default: 10).\n\nThe maximum number of results:\n  results:{n} - list maximum {n} results (default: sync with max height).\n\nNote: When a setting isn't set, its default value will be used.\n\n                                                      *'g:ctrlp_switch_buffer'*\nWhen opening a file, if it's already open in a window somewhere, CtrlP will try\nto jump to it instead of opening a new instance: >\n  let g:ctrlp_switch_buffer = 'Et'\n<\n  e - jump when <cr> is pressed, but only to windows in the current tab.\n  t - jump when <c-t> is pressed, but only to windows in another tab.\n  v - like \"e\", but jump when <c-v> is pressed.\n  h - like \"e\", but jump when <c-x> is pressed.\n  E, T, V, H - like \"e\", \"t\", \"v\", and \"h\", but jump to windows anywhere.\n  0 or <empty> - disable this feature.\n\n                                                       *'g:ctrlp_reuse_window'*\nWhen opening a file with <cr>, CtrlP avoids opening it in windows created by\nplugins, help and quickfix. Use this to setup some exceptions: >\n  let g:ctrlp_reuse_window = 'netrw'\n<\nAcceptable values are partial name, filetype or buftype of the special buffers.\nUse regexp to specify the pattern.\nExample: >\n  let g:ctrlp_reuse_window = 'netrw\\|help\\|quickfix'\n<\n\n                                                   *'g:ctrlp_tabpage_position'*\nWhere to put the new tab page when opening one: >\n  let g:ctrlp_tabpage_position = 'ac'\n<\n  a - after.\n  b - before.\n  c - the current tab page.\n  l - the last tab page.\n  f - the first tab page.\n\n                                                  *'g:ctrlp_working_path_mode'*\nWhen starting up, CtrlP sets its local working directory according to this\nvariable: >\n  let g:ctrlp_working_path_mode = 'ra'\n<\n  c - the directory of the current file.\n  a - like \"c\", but only applies when the current working directory outside of\n      CtrlP isn't a direct ancestor of the directory of the current file.\n  r - the nearest ancestor that contains one of these directories or files:\n      .git .hg .svn .bzr _darcs\n  w - begin finding a root from the current working directory outside of CtrlP\n      instead of from the directory of the current file (default). Only applies\n      when \"r\" is also present.\n  0 or <empty> - disable this feature.\n\nNote #1: if \"a\" or \"c\" is included with \"r\", use the behavior of \"a\" or \"c\" (as\na fallback) when a root can't be found.\n\nNote #2: you can use a |b:var| to set this option on a per buffer basis.\n\n                                                       *'g:ctrlp_root_markers'*\nUse this to set your own root markers in addition to the default ones (.git,\n.hg, .svn, .bzr, and _darcs). Your markers will take precedence: >\n  let g:ctrlp_root_markers = ['']\n<\nNote: you can use a |b:var| to set this option on a per buffer basis.\n\n                                                        *'g:ctrlp_use_caching'*\nEnable/Disable per-session caching: >\n  let g:ctrlp_use_caching = 1\n<\n  0 - Disable caching.\n  1 - Enable caching.\n  n - When bigger than 1, disable caching and use the number as the limit to\n      enable caching again.\n\nNote: you can quickly purge the cache by pressing <F5> while inside CtrlP.\n\n                                                *'g:ctrlp_clear_cache_on_exit'*\nSet this to 0 to enable cross-session caching by not deleting the cache files\nupon exiting Vim: >\n  let g:ctrlp_clear_cache_on_exit = 1\n<\n\n                                                          *'g:ctrlp_cache_dir'*\nSet the directory to store the cache files: >\n  let g:ctrlp_cache_dir = $HOME.'/.cache/ctrlp'\n<\n\n                                                        *'g:ctrlp_show_hidden'*\nSet this to 1 if you want CtrlP to scan for dotfiles and dotdirs: >\n  let g:ctrlp_show_hidden = 0\n<\nNote: does not apply when a command defined with |g:ctrlp_user_command| is\nbeing used.\n\n                                                           *'ctrlp-wildignore'*\nYou can use Vim's |'wildignore'| to exclude files and directories from the\nresults.\nExamples: >\n  \" Excluding version control directories\n  set wildignore+=*/.git/*,*/.hg/*,*/.svn/*        \" Linux/MacOSX\n  set wildignore+=*\\\\.git\\\\*,*\\\\.hg\\\\*,*\\\\.svn\\\\*  \" Windows ('noshellslash')\n<\nNote #1: the `*/` in front of each directory glob is required.\n\nNote #2: |wildignore| influences the result of |expand()|, |globpath()| and\n|glob()| which many plugins use to find stuff on the system (e.g. VCS related\nplugins look for .git/, .hg/,... some other plugins look for external *.exe\ntools on Windows). So be a little mindful of what you put in your |wildignore|.\n\n                                                      *'g:ctrlp_custom_ignore'*\nIn addition to |'wildignore'|, use this for files and directories you want only\nCtrlP to not show. Use regexp to specify the patterns: >\n  let g:ctrlp_custom_ignore = ''\n<\nExamples: >\n  let g:ctrlp_custom_ignore = '\\v[\\/]\\.(git|hg|svn)$'\n  let g:ctrlp_custom_ignore = {\n    \\ 'dir':  '\\v[\\/]\\.(git|hg|svn)$',\n    \\ 'file': '\\v\\.(exe|so|dll)$',\n    \\ 'link': 'SOME_BAD_SYMBOLIC_LINKS',\n    \\ }\n  let g:ctrlp_custom_ignore = {\n    \\ 'file': '\\v(\\.cpp|\\.h|\\.hh|\\.cxx)@<!$'\n    \\ }\n<\nNote #1: by default, |wildignore| and |g:ctrlp_custom_ignore| only apply when\n|globpath()| is used to scan for files, thus these options do not apply when a\ncommand defined with |g:ctrlp_user_command| is being used.\n\nNote #2: when changing the option's variable type, remember to |:unlet| it\nfirst or restart Vim to avoid the \"E706: Variable type mismatch\" error.\n\n                                                          *'g:ctrlp_max_files'*\nThe maximum number of files to scan, set to 0 for no limit: >\n  let g:ctrlp_max_files = 10000\n<\nNote: does not apply when a command defined with |g:ctrlp_user_command| is\nbeing used.\n\n                                                          *'g:ctrlp_max_depth'*\nThe maximum depth of a directory tree to recurse into: >\n  let g:ctrlp_max_depth = 40\n<\nNote: does not apply when a command defined with |g:ctrlp_user_command| is\nbeing used.\n\n                                                       *'g:ctrlp_user_command'*\nSpecify an external tool to use for listing files instead of using Vim's\n|globpath()|. Use %s in place of the target directory: >\n  let g:ctrlp_user_command = ''\n<\nExamples: >\n  let g:ctrlp_user_command = 'find %s -type f'       \" MacOSX/Linux\n  let g:ctrlp_user_command = 'dir %s /-n /b /s /a-d' \" Windows\n<\nYou can also use 'grep', 'findstr' or something else to filter the results.\nExamples: >\n  let g:ctrlp_user_command =\n    \\ 'find %s -type f | grep -v -P \"\\.jpg$|/tmp/\"'          \" MacOSX/Linux\n  let g:ctrlp_user_command =\n    \\ 'dir %s /-n /b /s /a-d | findstr /v /l \".jpg \\\\tmp\\\\\"' \" Windows\n<\nUse a version control listing command when inside a repository, this is faster\nwhen scanning large projects: >\n  let g:ctrlp_user_command = [root_marker, listing_command, fallback_command]\n  let g:ctrlp_user_command = {\n    \\ 'types': {\n      \\ 1: [root_marker_1, listing_command_1],\n      \\ n: [root_marker_n, listing_command_n],\n      \\ },\n    \\ 'fallback': fallback_command,\n    \\ 'ignore': 0 or 1\n    \\ }\n<\nSome examples: >\n  \" Single VCS, listing command does not list untracked files:\n  let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files']\n  let g:ctrlp_user_command = ['.hg', 'hg --cwd %s locate -I .']\n\n  \" Multiple VCS's:\n  let g:ctrlp_user_command = {\n    \\ 'types': {\n      \\ 1: ['.git', 'cd %s && git ls-files'],\n      \\ 2: ['.hg', 'hg --cwd %s locate -I .'],\n      \\ },\n    \\ 'fallback': 'find %s -type f'\n    \\ }\n\n  \" Single VCS, listing command lists untracked files (slower):\n  let g:ctrlp_user_command =\n    \\ ['.git', 'cd %s && git ls-files . -co --exclude-standard']\n\n  let g:ctrlp_user_command =\n    \\ ['.hg', 'hg --cwd %s status -numac -I . $(hg root)'] \" MacOSX/Linux\n\n  let g:ctrlp_user_command = ['.hg', 'for /f \"tokens=1\" %%a in (''hg root'') '\n    \\ . 'do hg --cwd %s status -numac -I . %%a']           \" Windows\n<\nNote #1: in the |Dictionary| format, 'fallback' and 'ignore' are optional. In\nthe |List| format, fallback_command is optional.\n\nNote #2: if the fallback_command is empty or the 'fallback' key is not defined,\n|globpath()| will then be used when scanning outside of a repository.\n\nNote #3: unless the |Dictionary| format is used and 'ignore' is defined and set\nto 1, the |wildignore| and |g:ctrlp_custom_ignore| options do not apply when\nthese custom commands are being used. When not present, 'ignore' is set to 0 by\ndefault to retain the performance advantage of using external commands.\n\nNote #4: when changing the option's variable type, remember to |:unlet| it\nfirst or restart Vim to avoid the \"E706: Variable type mismatch\" error.\n\nNote #5: you can use a |b:var| to set this option on a per buffer basis.\n\n                                                        *'g:ctrlp_max_history'*\nThe maximum number of input strings you want CtrlP to remember. The default\nvalue mirrors Vim's global |'history'| option: >\n  let g:ctrlp_max_history = &history\n<\nSet to 0 to disable prompt's history. Browse the history with <c-n> and <c-p>.\n\n                                                      *'g:ctrlp_open_new_file'*\nUse this option to specify how the newly created file is to be opened when\npressing <c-y>: >\n  let g:ctrlp_open_new_file = 'v'\n<\n  t - in a new tab.\n  h - in a new horizontal split.\n  v - in a new vertical split.\n  r - in the current window.\n\n                                                *'g:ctrlp_open_multiple_files'*\nIf non-zero, this will enable opening multiple files with <c-z> and <c-o>: >\n  let g:ctrlp_open_multiple_files = 'v'\n<\nExample: >\n  let g:ctrlp_open_multiple_files = '2vjr'\n<\nFor the number:\n  - If given, it'll be used as the maximum number of windows or tabs to create\n    when opening the files (the rest will be opened as hidden buffers).\n  - If not given, <c-o> will open all files, each in a new window or new tab.\n\nFor the letters:\n  t - each file in a new tab.\n  h - each file in a new horizontal split.\n  v - each file in a new vertical split.\n  i - all files as hidden buffers.\n  j - after opening, jump to the first opened tab or window.\n  r - open the first file in the current window, then the remaining files in\n      new splits or new tabs depending on which of \"h\", \"v\" and \"t\" is also\n      present.\n\n                                                            *'g:ctrlp_arg_map'*\nWhen this is set to 1, the <c-o> and <c-y> mappings will accept one extra key\nas an argument to override their default behavior: >\n  let g:ctrlp_arg_map = 0\n<\nPressing <c-o> or <c-y> will then prompt for a keypress. The key can be:\n  t - open in tab(s)\n  h - open in horizontal split(s)\n  v - open in vertical split(s)\n  i - open as hidden buffers (for <c-o> only)\n  c - clear the marked files (for <c-o> only)\n  r - open in the current window (for <c-y> only)\n  <esc>, <c-c>, <c-u> - cancel and go back to the prompt.\n  <cr> - use the default behavior specified with |g:ctrlp_open_new_file| and\n  |g:ctrlp_open_multiple_files|.\n\n                                                    *'g:ctrlp_follow_symlinks'*\nIf non-zero, CtrlP will follow symbolic links when listing files: >\n  let g:ctrlp_follow_symlinks = 0\n<\n  0 - don't follow symbolic links.\n  1 - follow but ignore looped internal symlinks to avoid duplicates.\n  2 - follow all symlinks indiscriminately.\n\nNote: does not apply when a command defined with |g:ctrlp_user_command| is\nbeing used.\n\n                                                        *'g:ctrlp_lazy_update'*\nSet this to 1 to enable the lazy-update feature: only update the match window\nafter typing's been stopped for a certain amount of time: >\n  let g:ctrlp_lazy_update = 0\n<\nIf is 1, update after 250ms. If bigger than 1, the number will be used as the\ndelay time in milliseconds.\n\n                                                      *'g:ctrlp_default_input'*\nSet this to 1 to enable seeding the prompt with the current file's relative\npath: >\n  let g:ctrlp_default_input = 0\n<\nInstead of 1 or 0, if the value of the option is a string, it'll be used as-is\nas the default input: >\n  let g:ctrlp_default_input = 'anystring'\n<\n\n                                                             *'g:ctrlp_abbrev'*\nDefine input abbreviations that can be expanded (either internally or visibly)\nin the prompt: >\n  let g:ctrlp_abbrev = {}\n<\nExamples: >\n  let g:ctrlp_abbrev = {\n    \\ 'gmode': 'i',\n    \\ 'abbrevs': [\n      \\ {\n        \\ 'pattern': '^cd b',\n        \\ 'expanded': '@cd ~/.vim/bundle',\n        \\ 'mode': 'pfrz',\n      \\ },\n      \\ {\n        \\ 'pattern': '\\(^@.\\+\\|\\\\\\@<!:.\\+\\)\\@<! ',\n        \\ 'expanded': '.\\{-}',\n        \\ 'mode': 'pfr',\n      \\ },\n      \\ {\n        \\ 'pattern': '\\\\\\@<!:.\\+\\zs\\\\\\@<! ',\n        \\ 'expanded': '\\ ',\n        \\ 'mode': 'pfz',\n      \\ },\n      \\ ]\n    \\ }\n<\nThe 'pattern' string is regexp matched against the entered input. The expansion\nis as if the 'expanded' string was typed into the prompt.\n\nFor 'gmode' (optional):\n  i - expand internally (default).\n  t - insert the expanded results into the prompt as you type.\n  k - insert the expanded results when a non-keyword character is typed. Only\n      applies when \"t\" is also present.\n\nFor 'mode' (of each entry; optional):\n  f - only in filename mode.\n  p - only in full path mode.\n  r - only in regexp mode.\n  z - only in fuzzy mode.\n  n - only when creating a new file with <c-y> (use the expanded string in the\n      new filename).\n  c - only when auto-completing directory names with <tab> (expand the pattern\n      immediately before doing the auto-completion).\n  <empty> or not defined - always enable.\n\nNote: the abbrev entries are evaluated in sequence, so a later entry can be\nevaluated against the expanded result of a previous entry; this includes itself\nwhen 'gmode' is \"t\".\n\n                                                           *'g:ctrlp_key_loop'*\nAn experimental feature. Set this to 1 to enable input looping for the typing\nof multi-byte characters: >\n  let g:ctrlp_key_loop = 0\n<\nNote #1: when set, this option resets the |g:ctrlp_lazy_update| option.\n\nNote #2: you can toggle this feature inside the prompt with a custom mapping: >\n  let g:ctrlp_prompt_mappings = { 'ToggleKeyLoop()': ['<F3>'] }\n<\n\n                                                         *'g:ctrlp_use_migemo'*\nSet this to 1 to use Migemo Pattern for Japanese filenames. Migemo Search only\nworks in regexp mode. To split the pattern, separate words with space: >\n  let g:ctrlp_use_migemo = 0\n<\n\n                                                    *'g:ctrlp_prompt_mappings'*\nUse this to customize the mappings inside CtrlP's prompt to your liking. You\nonly need to keep the lines that you've changed the values (inside []): >\n  let g:ctrlp_prompt_mappings = {\n    \\ 'PrtBS()':              ['<bs>', '<c-]>'],\n    \\ 'PrtDelete()':          ['<del>'],\n    \\ 'PrtDeleteWord()':      ['<c-w>'],\n    \\ 'PrtClear()':           ['<c-u>'],\n    \\ 'PrtSelectMove(\"j\")':   ['<c-j>', '<down>'],\n    \\ 'PrtSelectMove(\"k\")':   ['<c-k>', '<up>'],\n    \\ 'PrtSelectMove(\"t\")':   ['<Home>', '<kHome>'],\n    \\ 'PrtSelectMove(\"b\")':   ['<End>', '<kEnd>'],\n    \\ 'PrtSelectMove(\"u\")':   ['<PageUp>', '<kPageUp>'],\n    \\ 'PrtSelectMove(\"d\")':   ['<PageDown>', '<kPageDown>'],\n    \\ 'PrtHistory(-1)':       ['<c-n>'],\n    \\ 'PrtHistory(1)':        ['<c-p>'],\n    \\ 'AcceptSelection(\"e\")': ['<cr>', '<2-LeftMouse>'],\n    \\ 'AcceptSelection(\"h\")': ['<c-x>', '<c-cr>', '<c-s>'],\n    \\ 'AcceptSelection(\"t\")': ['<c-t>'],\n    \\ 'AcceptSelection(\"v\")': ['<c-v>', '<RightMouse>'],\n    \\ 'ToggleFocus()':        ['<s-tab>'],\n    \\ 'ToggleRegex()':        ['<c-r>'],\n    \\ 'ToggleByFname()':      ['<c-d>'],\n    \\ 'ToggleType(1)':        ['<c-f>', '<c-up>'],\n    \\ 'ToggleType(-1)':       ['<c-b>', '<c-down>'],\n    \\ 'PrtExpandDir()':       ['<tab>'],\n    \\ 'PrtInsert(\"c\")':       ['<MiddleMouse>', '<insert>'],\n    \\ 'PrtInsert()':          ['<c-\\>'],\n    \\ 'PrtCurStart()':        ['<c-a>'],\n    \\ 'PrtCurEnd()':          ['<c-e>'],\n    \\ 'PrtCurLeft()':         ['<c-h>', '<left>', '<c-^>'],\n    \\ 'PrtCurRight()':        ['<c-l>', '<right>'],\n    \\ 'PrtClearCache()':      ['<F5>'],\n    \\ 'PrtDeleteEnt()':       ['<F7>'],\n    \\ 'CreateNewFile()':      ['<c-y>'],\n    \\ 'MarkToOpen()':         ['<c-z>'],\n    \\ 'OpenMulti()':          ['<c-o>'],\n    \\ 'PrtExit()':            ['<esc>', '<c-c>', '<c-g>'],\n    \\ }\n<\nNote: if pressing <bs> moves the cursor one character to the left instead of\ndeleting a character for you, add this to your |.vimrc| to disable the plugin's\ndefault <c-h> mapping: >\n  let g:ctrlp_prompt_mappings = { 'PrtCurLeft()': ['<left>', '<c-^>'] }\n<\n\n----------------------------------------\nMRU mode options:~\n\n                                                           *'g:ctrlp_mruf_max'*\nSpecify the number of recently opened files you want CtrlP to remember: >\n  let g:ctrlp_mruf_max = 250\n<\n\n                                                       *'g:ctrlp_mruf_exclude'*\nFiles you don't want CtrlP to remember. Use regexp to specify the patterns: >\n  let g:ctrlp_mruf_exclude = ''\n<\nExamples: >\n  let g:ctrlp_mruf_exclude = '/tmp/.*\\|/temp/.*' \" MacOSX/Linux\n  let g:ctrlp_mruf_exclude = '^C:\\\\dev\\\\tmp\\\\.*' \" Windows\n<\n\n                                                       *'g:ctrlp_mruf_include'*\nAnd if you want CtrlP to only remember some files, specify them here: >\n  let g:ctrlp_mruf_include = ''\n<\nExample: >\n  let g:ctrlp_mruf_include = '\\.py$\\|\\.rb$'\n<\n\n                                                      *'g:ctrlp_mruf_relative'*\nSet this to 1 to show only MRU files in the current working directory: >\n  let g:ctrlp_mruf_relative = 0\n<\nNote: you can use a custom mapping to toggle this option inside the prompt: >\n  let g:ctrlp_prompt_mappings = { 'ToggleMRURelative()': ['<F2>'] }\n<\n\n                                                 *'g:ctrlp_mruf_default_order'*\nSet this to 1 to disable sorting when searching in MRU mode: >\n  let g:ctrlp_mruf_default_order = 0\n<\n\n                                                *'g:ctrlp_mruf_case_sensitive'*\nMatch this with your file system case-sensitivity setting to avoid duplicate\nMRU entries: >\n  let g:ctrlp_mruf_case_sensitive = 1\n<\n\n                                                *'g:ctrlp_mruf_save_on_update'*\nSet this to 0 to disable saving of the MRU list to hard drive whenever a new\nentry is added, saving will then only occur when exiting Vim: >\n  let g:ctrlp_mruf_save_on_update = 1\n<\n\n----------------------------------------\nAdvanced options:~\n\n                                                          *'g:ctrlp_open_func'*\nDefine a custom function to open the selected file: >\n  let g:ctrlp_open_func = {}\n<\nExample: >\n  let g:ctrlp_open_func = {\n    \\ 'files'     : 'Function_Name_1',\n    \\ 'buffers'   : 'Function_Name_2',\n    \\ 'mru files' : 'Function_Name_3',\n    \\ }\n<\nStructure of the functions: >\n  function! Function_Name(action, line)\n    \" Arguments:\n    \" |\n    \" +- a:action : The opening action:\n    \" |             + 'e' : user pressed <cr>  (default)\n    \" |             + 'h' : user pressed <c-x> (default)\n    \" |             + 'v' : user pressed <c-v> (default)\n    \" |             + 't' : user pressed <c-t> (default)\n    \" |             + 'x' : user used the <c-o> console dialog (default) and\n    \" |                     chose \"e[x]ternal\".\n    \" |\n    \" +- a:line   : The selected line.\n\n  endfunction\n<\nNote: does not apply when opening multiple files with <c-z> and <c-o>.\n\nExample: open HTML files in the default web browser when <c-t> is pressed and\nin Vim otherwise >\n  function! HTMLOpenFunc(action, line)\n    if a:action =~ '^[tx]$' && fnamemodify(a:line, ':e') =~? '^html\\?$'\n\n      \" Get the filename\n      let filename = fnameescape(fnamemodify(a:line, ':p'))\n\n      \" Close CtrlP\n      call ctrlp#exit()\n\n      \" Open the file\n      silent! execute '!xdg-open' filename\n\n    elseif a:action == 'x' && fnamemodify(a:line, ':e') !~? '^html\\?$'\n\n      \" Not a HTML file, simulate pressing <c-o> again and wait for new input\n      call feedkeys(\"\\<c-o>\")\n\n    else\n\n      \" Use CtrlP's default file opening function\n      call call('ctrlp#acceptfile', [a:action, a:line])\n\n    endif\n  endfunction\n\n  let g:ctrlp_open_func = { 'files': 'HTMLOpenFunc' }\n<\n\n                                                        *'g:ctrlp_status_func'*\nUse this to customize the statuslines for the CtrlP window: >\n  let g:ctrlp_status_func = {}\n<\nExample: >\n  let g:ctrlp_status_func = {\n    \\ 'main': 'Function_Name_1',\n    \\ 'prog': 'Function_Name_2',\n    \\ }\n<\nStructure of the functions: >\n  \" Main statusline\n  function! Function_Name_1(focus, byfname, regex, prev, item, next, marked)\n    \" Arguments:\n    \" |\n    \" +- a:focus   : The focus of the prompt: \"prt\" or \"win\".\n    \" |\n    \" +- a:byfname : In filename mode or in full path mode: \"file\" or \"path\".\n    \" |\n    \" +- a:regex   : In regex mode: 1 or 0.\n    \" |\n    \" +- a:prev    : The previous search mode.\n    \" |\n    \" +- a:item    : The current search mode.\n    \" |\n    \" +- a:next    : The next search mode.\n    \" |\n    \" +- a:marked  : The number of marked files, or a comma separated list of\n    \"                the marked filenames.\n\n    return full_statusline\n  endfunction\n\n  \" Progress statusline\n  function! Function_Name_2(str)\n    \" a:str : Either the number of files scanned so far, or a string indicating\n    \"         the current directory is being scanned with a user_command.\n\n    return full_statusline\n  endfunction\n<\nSee https://gist.github.com/1610859 for a working example.\n\n                                                        *'g:ctrlp_buffer_func'*\nSpecify the functions that will be called after entering and before exiting the\nCtrlP buffer: >\n  let g:ctrlp_buffer_func = {}\n<\nExample: >\n  let g:ctrlp_buffer_func = {\n    \\ 'enter': 'Function_Name_1',\n    \\ 'exit':  'Function_Name_2',\n    \\ }\n<\n\n                                                         *'g:ctrlp_match_func'*\nSet an external fuzzy matching function for CtrlP to use: >\n  let g:ctrlp_match_func = {}\n<\nExample: >\n  let g:ctrlp_match_func = { 'match': 'Function_Name' }\n<\nStructure of the function: >\n  function! Function_Name(items, str, limit, mmode, ispath, crfile, regex)\n    \" Arguments:\n    \" |\n    \" +- a:items  : The full list of items to search in.\n    \" |\n    \" +- a:str    : The string entered by the user.\n    \" |\n    \" +- a:limit  : The max height of the match window. Can be used to limit\n    \" |             the number of items to return.\n    \" |\n    \" +- a:mmode  : The match mode. Can be one of these strings:\n    \" |             + \"full-line\": match the entire line.\n    \" |             + \"filename-only\": match only the filename.\n    \" |             + \"first-non-tab\": match until the first tab char.\n    \" |             + \"until-last-tab\": match until the last tab char.\n    \" |\n    \" +- a:ispath : Is 1 when searching in file, buffer, mru, mixed, dir, and\n    \" |             rtscript modes. Is 0 otherwise.\n    \" |\n    \" +- a:crfile : The file in the current window. Should be excluded from the\n    \" |             results when a:ispath == 1.\n    \" |\n    \" +- a:regex  : In regex mode: 1 or 0.\n\n    return list_of_matched_items\n  endfunction\n<\n\nNote: you can extend any of the above options with { 'arg_type': 'dict' } to\nenable passing all the function arguments in a single Dictionary argument. Use\nthe existing argument names as keys in this Dictionary.\n\nExample: >\n  let g:ctrlp_status_func = {\n    \\ 'arg_type' : 'dict',\n    \\ 'enter': 'Function_Name_1',\n    \\ 'exit':  'Function_Name_2',\n    \\ }\n\n  function! Function_Name_1(dict)\n    \" where dict == {\n    \" \\ 'focus':   value,\n    \" \\ 'byfname': value,\n    \" \\ 'regex':   value,\n    \" \\ ...\n    \" }\n  endfunction\n<\n\n===============================================================================\nCOMMANDS                                                       *ctrlp-commands*\n\n                                                                       *:CtrlP*\n:CtrlP [starting-directory]\n   Open CtrlP in find file mode.\n\n   If no argument is given, the value of |g:ctrlp_working_path_mode| will be\n   used to determine the starting directory.\n\n   You can use <tab> to auto-complete the [starting-directory] when typing it.\n\n                                                                 *:CtrlPBuffer*\n:CtrlPBuffer\n   Open CtrlP in find buffer mode.\n\n                                                                    *:CtrlPMRU*\n:CtrlPMRU\n   Open CtrlP in find Most-Recently-Used file mode.\n\n                                                               *:CtrlPLastMode*\n:CtrlPLastMode [--dir]\n   Open CtrlP in the last mode used. When having the \"--dir\" argument, also\n   reuse the last working directory.\n\n                                                                   *:CtrlPRoot*\n:CtrlPRoot\n    This acts like |:CtrlP| with |g:ctrlp_working_path_mode| = 'r' and ignores\n    the variable's current value.\n\n                                                             *:CtrlPClearCache*\n:CtrlPClearCache\n   Flush the cache for the current working directory. The same as pressing <F5>\n   inside CtrlP.\n   To enable or disable caching, use the |g:ctrlp_use_caching| option.\n\n                                                         *:CtrlPClearAllCaches*\n:CtrlPClearAllCaches\n   Delete all the cache files saved in |g:ctrlp_cache_dir| location.\n\n-------------------------------------------------------------------------------\nFor commands provided by bundled extensions, see |ctrlp-extensions|.\n\n===============================================================================\nMAPPINGS                                                       *ctrlp-mappings*\n\n                                                                *'ctrlp-<c-p>'*\n<c-p>\n   Default |Normal| mode mapping to open the CtrlP prompt in find file mode.\n\n----------------------------------------\nOnce inside the prompt:~\n\n  <c-d>\n    Toggle between full-path search and filename only search.\n    Note: in filename mode, the prompt's base is '>d>' instead of '>>>'\n\n  <c-r>                                                    *'ctrlp-fullregexp'*\n    Toggle between the string mode and full regexp mode.\n    Note: in full regexp mode, the prompt's base is 'r>>' instead of '>>>'\n\n    See also: |input-formats| (guide) and |g:ctrlp_regexp_search| (option).\n\n  <c-f>, 'forward'\n  <c-up>\n    Scroll to the 'next' search mode in the sequence.\n\n  <c-b>, 'backward'\n  <c-down>\n    Scroll to the 'previous' search mode in the sequence.\n\n  <tab>                                                *'ctrlp-autocompletion'*\n    Auto-complete directory names under the current working directory inside\n    the prompt.\n\n  <s-tab>\n    Toggle the focus between the match window and the prompt.\n\n  <esc>,\n  <c-c>\n    Exit CtrlP.\n\nMoving:~\n\n  <c-j>,\n  <down>\n    Move selection down.\n\n  <c-k>,\n  <up>\n    Move selection up.\n\n  <c-a>\n    Move the cursor to the 'start' of the prompt.\n\n  <c-e>\n    Move the cursor to the 'end' of the prompt.\n\n  <c-h>,\n  <left>,\n  <c-^>\n    Move the cursor one character to the 'left'.\n\n  <c-l>,\n  <right>\n    Move the cursor one character to the 'right'.\n\nEditing:~\n\n  <c-]>,\n  <bs>\n    Delete the preceding character.\n\n  <del>\n    Delete the current character.\n\n  <c-w>\n    Delete a preceding inner word.\n\n  <c-u>\n    Clear the input field.\n\nBrowsing input history:~\n\n  <c-n>\n    Next string in the prompt's history.\n\n  <c-p>\n    Previous string in the prompt's history.\n\nOpening/Creating a file:~\n\n  <cr>\n    Open the selected file in the 'current' window if possible.\n\n  <c-t>\n    Open the selected file in a new 'tab'.\n\n  <c-v>\n    Open the selected file in a 'vertical' split.\n\n  <c-x>,\n  <c-cr>,\n  <c-s>\n    Open the selected file in a 'horizontal' split.\n\n  <c-y>\n    Create a new file and its parent directories.\n\nOpening multiple files:~\n\n  <c-z>\n    - Mark/unmark a file to be opened with <c-o>.\n    - Mark/unmark a file to create a new file in its directory using <c-y>.\n\n  <c-o>\n    - Open files marked by <c-z>.\n    - When no file has been marked by <c-z>, open a console dialog with the\n      following options:\n\n      Open the selected file:\n        t - in a tab page.\n        v - in a vertical split.\n        h - in a horizontal split.\n        r - in the current window.\n        i - as a hidden buffer.\n        x - (optional) with the function defined in |g:ctrlp_open_func|.\n\n      Other options (not shown):\n        a - mark all files in the match window.\n        d - change CtrlP's local working directory to the selected file's\n            directory and switch to find file mode.\n\nFunction keys:~\n\n  <F5>\n    - Refresh the match window and purge the cache for the current directory.\n    - Remove deleted files from the MRU list.\n\n  <F7>\n    - Wipe the MRU list.\n    - Delete MRU entries marked by <c-z>.\n\nPasting:~\n\n  <Insert>,                                                   *'ctrlp-pasting'*\n  <MiddleMouse>\n    Paste the clipboard content into the prompt.\n\n  <c-\\>\n    Open a console dialog to paste <cword>, <cfile>, the content of the search\n    register, the last visual selection, the clipboard or any register into the\n    prompt.\n\nChoose your own mappings with |g:ctrlp_prompt_mappings|.\n\n----------------------------------------\nWhen inside the match window (press <s-tab> to switch):~\n\n  a-z\n  0-9\n  ~^-=;`',.+!@#$%&_(){}[]\n    Cycle through the lines which have the matching first character.\n\n===============================================================================\nINPUT FORMATS                                             *ctrlp-input-formats*\n\nFormats for inputting in the prompt:~\n\na)  Simple string.\n\n    E.g. 'abc' is understood internally as 'a[^a]\\{-}b[^b]\\{-}c'\n\nb)  When in regexp mode, the input string's treated as a Vim's regexp |pattern|\n    without any modification.\n\n    E.g. 'abc\\d*efg' will be read as 'abc\\d*efg'.\n\n    See |ctrlp-fullregexp| (keymap) and |g:ctrlp_regexp_search| (option) for\n    how to enable regexp mode.\n\nc)  End the string with a colon ':' followed by a Vim command to execute that\n    command after opening the file. If you need to use ':' literally, escape it\n    with a backslash: '\\:'. When opening multiple files, the command will be\n    executed on each opening file.\n\n    E.g. Use ':45' to jump to line 45.\n\n         Use ':/any\\:string' to jump to the first instance of 'any:string'.\n\n         Use ':+setf\\ myfiletype|50' to set the filetype to 'myfiletype', then\n         jump to line 50.\n\n         Use ':diffthis' when opening multiple files to run |:diffthis| on the\n         first 4 files.\n\n    See also: Vim's |++opt| and |+cmd|.\n\nd)  Submit two dots '..' to go upward the directory tree by 1 level. To go up\n    multiple levels, use one extra dot for each extra level:\n>\n         Raw input    Interpreted as\n         ..           ../\n         ...          ../../\n         ....         ../../../\n<\n    Note: if the parent directories are large and uncached, this can be slow.\n\n    You can also use '@cd path/' to change CtrlP's local working directory.\n    Use '@cd %:h' to change to the directory of the current file.\n\ne)  Similarly, submit '/' or '\\' to find and go to the project's root.\n\n    If the project is large, using a VCS listing command to look for files\n    might help speeding up the intial scan (see |g:ctrlp_user_command| for more\n    details).\n\n    Note: d) and e) only work in file, directory and mixed modes.\n\nf)  Type the name of a non-existent file and press <c-y> to create it. Mark a\n    file with <c-z> to create the new file in the same directory as the marked\n    file.\n\n    E.g. Using 'newdir/newfile.txt' will create a directory named 'newdir' as\n         well as a file named 'newfile.txt'.\n\n         If an entry 'some/old/dirs/oldfile.txt' is marked with <c-z>, then\n         'newdir' and 'newfile.txt' will be created under 'some/old/dirs'. The\n         final path will then be 'some/old/dirs/newdir/newfile.txt'.\n\n    Note: use '\\' in place of '/' on Windows (if |'shellslash'| is not set).\n\ng)  In filename mode (toggle with <c-d>), you can use one primary pattern and\n    one refining pattern separated by a semicolon. Both patterns work like (a),\n    or (b) when in regexp mode.\n\nh)  Submit ? to open this help file.\n\n===============================================================================\nEXTENSIONS                                                   *ctrlp-extensions*\n\nExtensions are optional. To enable an extension, add its name to the variable\ng:ctrlp_extensions: >\n  let g:ctrlp_extensions = ['tag', 'buffertag', 'quickfix', 'dir', 'rtscript',\n                          \\ 'undo', 'line', 'changes', 'mixed', 'bookmarkdir']\n<\nThe order of the items will be the order they appear on the statusline and when\nusing <c-f>, <c-b>.\n\nAvailable extensions:~\n\n                                                                    *:CtrlPTag*\n  * Tag mode:~\n    - Name: 'tag'\n    - Command: \":CtrlPTag\"\n    - Search for a tag within a generated central tags file, and jump to the\n      definition. Use the Vim's option |'tags'| to specify the names and the\n      locations of the tags file(s).\n      E.g. set tags+=doc/tags\n\n                                                                 *:CtrlPBufTag*\n                                                              *:CtrlPBufTagAll*\n  * Buffer Tag mode:~\n    - Name: 'buffertag'\n    - Commands: \":CtrlPBufTag [buffer]\",\n                \":CtrlPBufTagAll\".\n    - Search for a tag within the current buffer or all listed buffers and jump\n      to the definition. Requires |exuberant_ctags| or compatible programs.\n\n                                                               *:CtrlPQuickfix*\n  * Quickfix mode:~\n    - Name: 'quickfix'\n    - Command: \":CtrlPQuickfix\"\n    - Search for an entry in the current quickfix errors and jump to it.\n\n                                                                    *:CtrlPDir*\n  * Directory mode:~\n    - Name: 'dir'\n    - Command: \":CtrlPDir [starting-directory]\"\n    - Search for a directory and change the working directory to it.\n    - Mappings:\n      + <cr> change the local working directory for CtrlP and keep it open.\n      + <c-t> change the global working directory (exit).\n      + <c-v> change the local working directory for the current window (exit).\n      + <c-x> change the global working directory to CtrlP's current local\n        working directory (exit).\n\n                                                                    *:CtrlPRTS*\n  * Runtime script mode:~\n    - Name: 'rtscript'\n    - Command: \":CtrlPRTS\"\n    - Search for files (vimscripts, docs, snippets...) in runtimepath.\n\n                                                                   *:CtrlPUndo*\n  * Undo mode:~\n    - Name: 'undo'\n    - Command: \":CtrlPUndo\"\n    - Browse undo history.\n\n                                                                   *:CtrlPLine*\n  * Line mode:~\n    - Name: 'line'\n    - Command: \":CtrlPLine [buffer]\"\n    - Search for a line in all listed buffers or in the specified [buffer].\n\n                                                                 *:CtrlPChange*\n                                                              *:CtrlPChangeAll*\n  * Change list mode:~\n    - Name: 'changes'\n    - Commands: \":CtrlPChange [buffer]\",\n                \":CtrlPChangeAll\".\n    - Search for and jump to a recent change in the current buffer or in all\n      listed buffers.\n\n                                                                  *:CtrlPMixed*\n  * Mixed mode:~\n    - Name: 'mixed'\n    - Command: \":CtrlPMixed\"\n    - Search in files, buffers and MRU files at the same time.\n\n                                                            *:CtrlPBookmarkDir*\n                                                         *:CtrlPBookmarkDirAdd*\n  * BookmarkDir mode:~\n    - Name: 'bookmarkdir'\n    - Commands: \":CtrlPBookmarkDir\",\n                \":CtrlPBookmarkDirAdd [directory]\".\n    - Search for a bookmarked directory and change the working directory to it.\n    - Mappings:\n      + <cr> change the local working directory for CtrlP, keep it open and\n        switch to find file mode.\n      + <c-x> change the global working directory (exit).\n      + <c-v> change the local working directory for the current window (exit).\n      + <F7>\n        - Wipe bookmark list.\n        - Delete entries marked by <c-z>.\n\n----------------------------------------\nBuffer Tag mode options:~\n\n                                                   *'g:ctrlp_buftag_ctags_bin'*\nIf ctags isn't in your $PATH, use this to set its location: >\n  let g:ctrlp_buftag_ctags_bin = ''\n<\n\n                                                   *'g:ctrlp_buftag_systemenc'*\nMatch this with your OS's encoding (not Vim's). The default value mirrors Vim's\nglobal |'encoding'| option: >\n  let g:ctrlp_buftag_systemenc = &encoding\n<\n\n                                                       *'g:ctrlp_buftag_types'*\nUse this to set the arguments for ctags, jsctags... for a given filetype: >\n  let g:ctrlp_buftag_types = ''\n<\nExamples: >\n  let g:ctrlp_buftag_types = {\n    \\ 'erlang'     : '--language-force=erlang --erlang-types=drmf',\n    \\ 'javascript' : {\n      \\ 'bin': 'jsctags',\n      \\ 'args': '-f -',\n      \\ },\n    \\ }\n<\n\n===============================================================================\nCUSTOMIZATION                                             *ctrlp-customization*\n\nHighlighting:~\n  * For the CtrlP buffer:\n    CtrlPNoEntries : the message when no match is found (Error)\n    CtrlPMatch     : the matched pattern (Identifier)\n    CtrlPLinePre   : the line prefix '>' in the match window\n    CtrlPPrtBase   : the prompt's base (Comment)\n    CtrlPPrtText   : the prompt's text (|hl-Normal|)\n    CtrlPPrtCursor : the prompt's cursor when moving over the text (Constant)\n\n  * In extensions:\n    CtrlPTabExtra  : the part of each line that's not matched against (Comment)\n    CtrlPBufName   : the buffer name an entry belongs to (|hl-Directory|)\n    CtrlPTagKind   : the kind of the tag in buffer-tag mode (|hl-Title|)\n    CtrlPqfLineCol : the line and column numbers in quickfix mode (Comment)\n    CtrlPUndoT     : the elapsed time in undo mode (|hl-Directory|)\n    CtrlPUndoBr    : the square brackets [] in undo mode (Comment)\n    CtrlPUndoNr    : the undo number inside [] in undo mode (String)\n    CtrlPUndoSv    : the point where the file was saved (Comment)\n    CtrlPUndoPo    : the current position in the undo tree (|hl-Title|)\n    CtrlPBookmark  : the name of the bookmark (Identifier)\n\nStatuslines:~\n  * Highlight groups:\n    CtrlPMode1 : 'file' or 'path' or 'line', and the current mode (Character)\n    CtrlPMode2 : 'prt' or 'win', 'regex', the working directory (|hl-LineNr|)\n    CtrlPStats : the scanning status (Function)\n\n  For rebuilding the statuslines, see |g:ctrlp_status_func|.\n\n===============================================================================\nMISCELLANEOUS CONFIGS                             *ctrlp-miscellaneous-configs*\n\n* Using |wildignore| for |g:ctrlp_user_command|:\n>\n  function! s:wig2cmd()\n    \" Change wildignore into space or | separated groups\n    \" e.g. .aux .out .toc .jpg .bmp .gif\n    \" or   .aux$\\|.out$\\|.toc$\\|.jpg$\\|.bmp$\\|.gif$\n    let pats = ['[*\\/]*\\([?_.0-9A-Za-z]\\+\\)\\([*\\/]*\\)\\(\\\\\\@<!,\\|$\\)','\\\\\\@<!,']\n    let subs = has('win32') || has('win64') ? ['\\1\\3', ' '] : ['\\1\\2\\3', '\\\\|']\n    let expr = substitute(&wig, pats[0], subs[0], 'g')\n    let expr = substitute(expr, pats[1], subs[1], 'g')\n    let expr = substitute(expr, '\\\\,', ',', 'g')\n\n    \" Set the user_command option\n    let g:ctrlp_user_command = has('win32') || has('win64')\n      \\ ? 'dir %s /-n /b /s /a-d | findstr /V /l \"'.expr.'\"'\n      \\ : 'find %s -type f | grep -v \"'.expr .'\"'\n  endfunction\n\n  call s:wig2cmd()\n<\n(submitted by Rich Alesi <github.com/ralesi>)\n\n* A standalone function to set the working directory to the project's root, or\n  to the parent directory of the current file if a root can't be found:\n>\n  function! s:setcwd()\n    let cph = expand('%:p:h', 1)\n    if cph =~ '^.\\+://' | retu | en\n    for mkr in ['.git/', '.hg/', '.svn/', '.bzr/', '_darcs/', '.vimprojects']\n      let wd = call('find'.(mkr =~ '/$' ? 'dir' : 'file'), [mkr, cph.';'])\n      if wd != '' | let &acd = 0 | brea | en\n    endfo\n    exe 'lc!' fnameescape(wd == '' ? cph : substitute(wd, mkr.'$', '.', ''))\n  endfunction\n\n  autocmd BufEnter * call s:setcwd()\n<\n(requires Vim 7.1.299+)\n\n* Using a |count| to invoke different commands using the same mapping:\n>\n  let g:ctrlp_cmd = 'exe \"CtrlP\".get([\"\", \"Buffer\", \"MRU\"], v:count)'\n<\n\n===============================================================================\nCREDITS                                                         *ctrlp-credits*\n\nDeveloped by Kien Nguyen <github.com/kien>. Distributed under Vim's |license|.\n\nProject's homepage:   http://kien.github.com/ctrlp.vim\nGit repository:       https://github.com/kien/ctrlp.vim\nMercurial repository: https://bitbucket.org/kien/ctrlp.vim\n\n-------------------------------------------------------------------------------\nThanks to everyone that has submitted ideas, bug reports or helped debugging on\ngibhub, bitbucket, and through email.\n\nSpecial thanks:~\n\n    * Woojong Koh <github.com/wjkoh>\n    * Simon Ruderich\n    * Yasuhiro Matsumoto <github.com/mattn>\n    * Ken Earley <github.com/kenearley>\n    * Kyo Nagashima <github.com/hail2u>\n    * Zak Johnson <github.com/zakj>\n    * Diego Viola <github.com/diegoviola>\n    * Piet Delport <github.com/pjdelport>\n    * Thibault Duplessis <github.com/ornicar>\n    * Kent Sibilev <github.com/datanoise>\n    * Tacahiroy <github.com/tacahiroy>\n    * Luca Pette <github.com/lucapette>\n    * Seth Fowler <github.com/sfowler>\n    * Lowe Thiderman <github.com/thiderman>\n    * Christopher Fredén <github.com/icetan>\n    * Zahary Karadjov <github.com/zah>\n    * Jo De Boeck <github.com/grimpy>\n    * Rudi Grinberg <github.com/rgrinberg>\n    * Timothy Mellor <github.com/mellort>\n\n===============================================================================\nCHANGELOG                                                     *ctrlp-changelog*\n\n    + Combine *g:ctrlp_match_window_bottom* *g:ctrlp_match_window_reversed* and\n      *g:ctrlp_max_height* into |g:ctrlp_match_window|.\n    + New option: |g:ctrlp_match_window|.\n\nBefore 2012/11/30~\n\n    + New options: |g:ctrlp_abbrev|,\n                   |g:ctrlp_key_loop|,\n                   |g:ctrlp_open_func|,\n                   |g:ctrlp_tabpage_position|,\n                   |g:ctrlp_mruf_save_on_update|\n    + Rename:\n        *g:ctrlp_dotfiles* -> |g:ctrlp_show_hidden|.\n    + Change |g:ctrlp_switch_buffer|'s and |g:ctrlp_working_path_mode|'s type\n      (old values still work).\n    + New key for |g:ctrlp_user_command| when it's a Dictionary: 'ignore'.\n\nBefore 2012/06/15~\n\n    + New value for |g:ctrlp_follow_symlinks|: 2.\n    + New value for |g:ctrlp_open_multiple_files|: 'j'.\n    + Allow using <c-t>, <c-x>, <c-v> to open files marked by <c-z>.\n    + Extend '..' (|ctrlp-input-formats| (d))\n    + New input format: '@cd' (|ctrlp-input-formats| (d))\n\nBefore 2012/04/30~\n\n    + New option: |g:ctrlp_mruf_default_order|\n    + New feature: Bookmarked directories extension.\n    + New commands: |:CtrlPBookmarkDir|\n                    |:CtrlPBookmarkDirAdd|\n\nBefore 2012/04/15~\n\n    + New option: |g:ctrlp_buffer_func|, callback functions for CtrlP buffer.\n    + Remove: g:ctrlp_mruf_last_entered, make it a default for MRU mode.\n    + New commands: |:CtrlPLastMode|, open CtrlP in the last mode used.\n                    |:CtrlPMixed|, search in files, buffers and MRU files.\n\nBefore 2012/03/31~\n\n    + New options: |g:ctrlp_default_input|, default input when entering CtrlP.\n                   |g:ctrlp_match_func|, allow using a custom fuzzy matcher.\n    + Rename:\n        *ClearCtrlPCache* -> |CtrlPClearCache|\n        *ClearAllCtrlPCaches* -> |CtrlPClearAllCaches|\n        *ResetCtrlP* -> |CtrlPReload|\n\nBefore 2012/03/02~\n\n    + Rename:\n        *g:ctrlp_regexp_search* -> |g:ctrlp_regexp|,\n        *g:ctrlp_dont_split* -> |g:ctrlp_reuse_window|,\n        *g:ctrlp_jump_to_buffer* -> |g:ctrlp_switch_buffer|.\n    + Rename and tweak:\n        *g:ctrlp_open_multi* -> |g:ctrlp_open_multiple_files|.\n    + Deprecate *g:ctrlp_highlight_match*\n    + Extend |g:ctrlp_user_command| to support multiple commands.\n    + New option: |g:ctrlp_mruf_last_entered| change MRU to Recently-Entered.\n\nBefore 2012/01/15~\n\n    + New mapping: Switch <tab> and <s-tab>. <tab> is now used for completion\n                   of directory names under the current working directory.\n    + New options: |g:ctrlp_arg_map| for <c-y>, <c-o> to accept an argument.\n                   |g:ctrlp_status_func| custom statusline.\n                   |g:ctrlp_mruf_relative| show only MRU files inside cwd.\n    + Extend g:ctrlp_open_multi with new optional values: tr, hr, vr.\n    + Extend |g:ctrlp_custom_ignore| to specifically filter dir, file and link.\n\nBefore 2012/01/05~\n\n    + New feature: Buffer Tag extension.\n    + New commands: |:CtrlPBufTag|, |:CtrlPBufTagAll|.\n    + New options: |g:ctrlp_cmd|,\n                   |g:ctrlp_custom_ignore|\n\nBefore 2011/11/30~\n\n    + New features: Tag, Quickfix and Directory extensions.\n    + New commands: |:CtrlPTag|, |:CtrlPQuickfix|, |:CtrlPDir|.\n    + New options: |g:ctrlp_use_migemo|,\n                   |g:ctrlp_lazy_update|,\n                   |g:ctrlp_follow_symlinks|\n\nBefore 2011/11/13~\n\n    + New special input: '/' and '\\' find root (|ctrlp-input-formats| (e))\n    + Remove ctrlp#SetWorkingPath().\n    + Remove *g:ctrlp_mru_files* and make MRU mode permanent.\n    + Extend g:ctrlp_open_multi, add new ways to open files.\n    + New option: g:ctrlp_dont_split,\n                  |g:ctrlp_mruf_case_sensitive|\n\nBefore 2011/10/30~\n\n    + New feature: Support for custom extensions.\n                   <F5> also removes non-existent files from MRU list.\n    + New option: g:ctrlp_jump_to_buffer\n\nBefore 2011/10/12~\n\n    + New features: Open multiple files.\n                    Pass Vim's |++opt| and |+cmd| to the opening file\n                    (|ctrlp-input-formats| (c))\n                    Auto-complete each dir for |:CtrlP| [starting-directory]\n    + New mappings: <c-z> mark/unmark a file to be opened with <c-o>.\n                    <c-o> open all marked files.\n    + New option: g:ctrlp_open_multi\n    + Remove *g:ctrlp_persistent_input* *g:ctrlp_live_update* and <c-^>.\n\nBefore 2011/09/29~\n\n    + New mappings: <c-n>, <c-p> next/prev string in the input history.\n                    <c-y> create a new file and its parent dirs.\n    + New options: |g:ctrlp_open_new_file|,\n                   |g:ctrlp_max_history|\n    + Added a new open-in-horizontal-split mapping: <c-x>\n\nBefore 2011/09/19~\n\n    + New command: ResetCtrlP\n    + New options: |g:ctrlp_max_files|,\n                   |g:ctrlp_max_depth|,\n                   g:ctrlp_live_update\n    + New mapping: <c-^>\n\nBefore 2011/09/12~\n\n    + Ability to cycle through matched lines in the match window.\n    + Extend the behavior of g:ctrlp_persistent_input\n    + Extend the behavior of |:CtrlP|\n    + New options: |g:ctrlp_dotfiles|,\n                   |g:ctrlp_clear_cache_on_exit|,\n                   g:ctrlp_highlight_match,\n                   |g:ctrlp_user_command|\n    + New special input: '..' (|ctrlp-input-formats| (d))\n    + New mapping: <F5>.\n    + New commands: |:CtrlPCurWD|,\n                    |:CtrlPCurFile|,\n                    |:CtrlPRoot|\n\n    + New feature: Search in most recently used (MRU) files\n    + New mapping: <c-b>.\n    + Extended the behavior of <c-f>.\n    + New options: g:ctrlp_mru_files,\n                   |g:ctrlp_mruf_max|,\n                   |g:ctrlp_mruf_exclude|,\n                   |g:ctrlp_mruf_include|\n    + New command: |:CtrlPMRU|\n\nFirst public release: 2011/09/06~\n\n===============================================================================\nvim:ft=help:et:ts=2:sw=2:sts=2:norl\n"
  },
  {
    "path": ".vim/bundle/ctrlp.vim/plugin/ctrlp.vim",
    "content": "\" =============================================================================\n\" File:          plugin/ctrlp.vim\n\" Description:   Fuzzy file, buffer, mru, tag, etc finder.\n\" Author:        Kien Nguyen <github.com/kien>\n\" =============================================================================\n\" GetLatestVimScripts: 3736 1 :AutoInstall: ctrlp.zip\n\nif ( exists('g:loaded_ctrlp') && g:loaded_ctrlp ) || v:version < 700 || &cp\n\tfini\nen\nlet g:loaded_ctrlp = 1\n\nlet [g:ctrlp_lines, g:ctrlp_allfiles, g:ctrlp_alltags, g:ctrlp_alldirs,\n\t\\ g:ctrlp_allmixes, g:ctrlp_buftags, g:ctrlp_ext_vars, g:ctrlp_builtins]\n\t\\ = [[], [], [], [], {}, {}, [], 2]\n\nif !exists('g:ctrlp_map') | let g:ctrlp_map = '<c-p>' | en\nif !exists('g:ctrlp_cmd') | let g:ctrlp_cmd = 'CtrlP' | en\n\ncom! -n=? -com=dir CtrlP         cal ctrlp#init(0, { 'dir': <q-args> })\ncom! -n=? -com=dir CtrlPMRUFiles cal ctrlp#init(2, { 'dir': <q-args> })\n\ncom! -bar CtrlPBuffer   cal ctrlp#init(1)\ncom! -n=? CtrlPLastMode cal ctrlp#init(-1, { 'args': <q-args> })\n\ncom! -bar CtrlPClearCache     cal ctrlp#clr()\ncom! -bar CtrlPClearAllCaches cal ctrlp#clra()\n\ncom! -bar ClearCtrlPCache     cal ctrlp#clr()\ncom! -bar ClearAllCtrlPCaches cal ctrlp#clra()\n\ncom! -bar CtrlPCurWD   cal ctrlp#init(0, { 'mode': '' })\ncom! -bar CtrlPCurFile cal ctrlp#init(0, { 'mode': 'c' })\ncom! -bar CtrlPRoot    cal ctrlp#init(0, { 'mode': 'r' })\n\nif g:ctrlp_map != '' && !hasmapto(':<c-u>'.g:ctrlp_cmd.'<cr>', 'n')\n\texe 'nn <silent>' g:ctrlp_map ':<c-u>'.g:ctrlp_cmd.'<cr>'\nen\n\ncal ctrlp#mrufiles#init()\n\ncom! -bar CtrlPTag      cal ctrlp#init(ctrlp#tag#id())\ncom! -bar CtrlPQuickfix cal ctrlp#init(ctrlp#quickfix#id())\n\ncom! -n=? -com=dir CtrlPDir\n\t\\ cal ctrlp#init(ctrlp#dir#id(), { 'dir': <q-args> })\n\ncom! -n=? -com=buffer CtrlPBufTag\n\t\\ cal ctrlp#init(ctrlp#buffertag#cmd(0, <q-args>))\n\ncom! -bar CtrlPBufTagAll cal ctrlp#init(ctrlp#buffertag#cmd(1))\ncom! -bar CtrlPRTS       cal ctrlp#init(ctrlp#rtscript#id())\ncom! -bar CtrlPUndo      cal ctrlp#init(ctrlp#undo#id())\n\ncom! -n=? -com=buffer CtrlPLine\n\t\\ cal ctrlp#init(ctrlp#line#cmd(1, <q-args>))\n\ncom! -n=? -com=buffer CtrlPChange\n\t\\ cal ctrlp#init(ctrlp#changes#cmd(0, <q-args>))\n\ncom! -bar CtrlPChangeAll   cal ctrlp#init(ctrlp#changes#cmd(1))\ncom! -bar CtrlPMixed       cal ctrlp#init(ctrlp#mixed#id())\ncom! -bar CtrlPBookmarkDir cal ctrlp#init(ctrlp#bookmarkdir#id())\n\ncom! -n=? -com=dir CtrlPBookmarkDirAdd\n\t\\ cal ctrlp#call('ctrlp#bookmarkdir#add', <q-args>)\n\n\" vim:ts=2:sw=2:sts=2\n"
  },
  {
    "path": ".vim/bundle/ctrlp.vim/readme.md",
    "content": "# ctrlp.vim\nFull path fuzzy __file__, __buffer__, __mru__, __tag__, __...__ finder for Vim.\n\n* Written in pure Vimscript for MacVim, gVim and Vim 7.0+.\n* Full support for Vim's regexp as search patterns.\n* Built-in Most Recently Used (MRU) files monitoring.\n* Built-in project's root finder.\n* Open multiple files at once.\n* Create new files and directories.\n* [Extensible][2].\n\n![ctrlp][1]\n\n## Basic Usage\n* Run `:CtrlP` or `:CtrlP [starting-directory]` to invoke CtrlP in find file mode.\n* Run `:CtrlPBuffer` or `:CtrlPMRU` to invoke CtrlP in find buffer or find MRU file mode.\n* Run `:CtrlPMixed` to search in Files, Buffers and MRU files at the same time.\n\nCheck `:help ctrlp-commands` and `:help ctrlp-extensions` for other commands.\n\n##### Once CtrlP is open:\n* Press `<F5>` to purge the cache for the current directory to get new files, remove deleted files and apply new ignore options.\n* Press `<c-f>` and `<c-b>` to cycle between modes.\n* Press `<c-d>` to switch to filename only search instead of full path.\n* Press `<c-r>` to switch to regexp mode.\n* Use `<c-j>`, `<c-k>` or the arrow keys to navigate the result list.\n* Use `<c-t>` or `<c-v>`, `<c-x>` to open the selected entry in a new tab or in a new split.\n* Use `<c-n>`, `<c-p>` to select the next/previous string in the prompt's history.\n* Use `<c-y>` to create a new file and its parent directories.\n* Use `<c-z>` to mark/unmark multiple files and `<c-o>` to open them.\n\nRun `:help ctrlp-mappings` or submit `?` in CtrlP for more mapping help.\n\n* Submit two or more dots `..` to go up the directory tree by one or multiple levels.\n* End the input string with a colon `:` followed by a command to execute it on the opening file(s):  \nUse `:25` to jump to line 25.  \nUse `:diffthis` when opening multiple files to run `:diffthis` on the first 4 files.\n\n## Basic Options\n* Change the default mapping and the default command to invoke CtrlP:\n\n    ```vim\n    let g:ctrlp_map = '<c-p>'\n    let g:ctrlp_cmd = 'CtrlP'\n    ```\n\n* When invoked, unless a starting directory is specified, CtrlP will set its local working directory according to this variable:\n\n    ```vim\n    let g:ctrlp_working_path_mode = 'ra'\n    ```\n\n    `'c'` - the directory of the current file.  \n    `'r'` - the nearest ancestor that contains one of these directories or files: `.git` `.hg` `.svn` `.bzr` `_darcs`  \n    `'a'` - like c, but only if the current working directory outside of CtrlP is not a direct ancestor of the directory of the current file.  \n    `0` or `''` (empty string) - disable this feature.\n\n    Define additional root markers with the `g:ctrlp_root_markers` option.\n\n* Exclude files and directories using Vim's `wildignore` and CtrlP's own `g:ctrlp_custom_ignore`:\n\n    ```vim\n    set wildignore+=*/tmp/*,*.so,*.swp,*.zip     \" MacOSX/Linux\n    set wildignore+=*\\\\tmp\\\\*,*.swp,*.zip,*.exe  \" Windows\n\n    let g:ctrlp_custom_ignore = '\\v[\\/]\\.(git|hg|svn)$'\n    let g:ctrlp_custom_ignore = {\n      \\ 'dir':  '\\v[\\/]\\.(git|hg|svn)$',\n      \\ 'file': '\\v\\.(exe|so|dll)$',\n      \\ 'link': 'some_bad_symbolic_links',\n      \\ }\n    ```\n\n* Use a custom file listing command:\n\n    ```vim\n    let g:ctrlp_user_command = 'find %s -type f'        \" MacOSX/Linux\n    let g:ctrlp_user_command = 'dir %s /-n /b /s /a-d'  \" Windows\n    ```\n\nCheck `:help ctrlp-options` for other options.\n\n## Installation\nUse your favorite method or check the homepage for a [quick installation guide][3].\n\n[1]: http://i.imgur.com/yIynr.png\n[2]: https://github.com/kien/ctrlp.vim/tree/extensions\n[3]: http://kien.github.com/ctrlp.vim#installation\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/Makefile",
    "content": "all : emmet-vim.zip\n\nremove-zip:\n\t-rm doc/tags\n\t-rm emmet-vim.zip\n\nemmet-vim.zip: remove-zip\n\tzip -r emmet-vim.zip autoload plugin doc\n\nrelease: emmet-vim.zip\n\tvimup update-script emmet.vim\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/README.mkd",
    "content": "# Emmet-vim\n\n[emmet-vim](http://mattn.github.com/emmet-vim) is a vim plug-in\nwhich provides support for expanding abbreviations similar to\n[emmet](http://emmet.io/).\n\n[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/mattn/emmet-vim/trend.png)](https://bitdeli.com/free \"Bitdeli Badge\")\n\n## Installation\n\n[Download zip file](http://www.vim.org/scripts/script.php?script_id=2981):\n\n    cd ~/.vim\n    unzip emmet-vim.zip\n\nTo install using pathogen.vim:\n\n    cd ~/.vim/bundle\n    git clone https://github.com/mattn/emmet-vim.git\n    \nTo install using [Vundle](https://github.com/gmarik/vundle):\n\n    # add this line to your .vimrc file\n    Bundle \"mattn/emmet-vim\"\n\nTo checkout the source from repository:\n\n    cd ~/.vim/bundle\n    git clone https://github.com/mattn/emmet-vim.git\n\nor:\n\n    git clone https://github.com/mattn/emmet-vim.git\n    cd emmet-vim\n    cp plugin/emmet.vim ~/.vim/plugin/\n    cp autoload/emmet.vim ~/.vim/autoload/\n    cp -a autoload/emmet ~/.vim/autoload/\n\n\n## Quick Tutorial\n\nOpen or create a New File:\n\n    vim index.html\n\nType (\"\\_\" is the cursor position):\n\n    html:5_\n\nThen type \"\\<c-y\\>,\" (Ctrl + y + ','), you should see:\n\n```html\n<!DOCTYPE HTML>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"UTF-8\">\n\t<title></title>\n</head>\n<body>\n\t_\n</body>\n</html>\n```\n\n[More Tutorials](https://raw.github.com/mattn/emmet-vim/master/TUTORIAL)\n\n\n## Enable in different mode\n\nIf you don't want to enable emmet in all modes,\nyou can use set these options in `vimrc`:\n\n```vim\nlet g:user_emmet_mode='n'    \"only enable normal mode functions.\nlet g:user_emmet_mode='inv'  \"enable all functions, which is equal to\nlet g:user_emmet_mode='a'    \"enable all function in all mode.\n```\n\n## Enable just for html/css\n\n```vim\nlet g:user_emmet_install_global = 0\nautocmd FileType html,css EmmetInstall\n```\n\n## Redefine trigger key\n\n```vim\nlet g:user_emmet_leader_key='<C-Z>'\n```\n\n## Project Authors\n\n[Yasuhiro Matsumoto](http://mattn.kaoriya.net/)\n\n## Donating\n\n[![Support via Gittip][gittip-badge]][gittip]\n\n[gittip-badge]: https://rawgithub.com/twolfson/gittip-badge/master/dist/gittip.png\n[gittip]: https://www.gittip.com/mattn/\n\n## Links\n\n### Emmet official site:\n\n* <http://emmet.io/>\n\n### zen-coding official site:\n\n* <http://code.google.com/p/zen-coding/>\n\n### emmet.vim:\n\n* <http://mattn.github.com/emmet-vim>\n\n### development repository:\n\n* <https://github.com/mattn/emmet-vim>\n\n### my blog posts about zencoding-vim:\n\n* <http://mattn.kaoriya.net/software/vim/20100222103327.htm>\n\n* <http://mattn.kaoriya.net/software/vim/20100306021632.htm>\n\n### Japanese blog posts about zencoding-vim:\n\n* <http://d.hatena.ne.jp/idesaku/20100424/1272092255>\n\n* <http://d.hatena.ne.jp/griefworker/20110118/vim_zen_coding>\n\n* <http://d.hatena.ne.jp/sakurako_s/20110126/1295988873>\n\n* <http://looxu.blogspot.jp/2010/02/zencodingvimhtml.html>\n\n### A Chinese translation of the tutorial:\n\n* <http://www.zfanw.com/blog/zencoding-vim-tutorial-chinese.html>\n\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/TODO",
    "content": ""
  },
  {
    "path": ".vim/bundle/emmet-vim/TUTORIAL",
    "content": "Tutorial for Emmet.vim\n\n                                                    mattn <mattn.jp@gmail.com>\n\n1. Expand an Abbreviation\n\n  Type the abbreviation as 'div>p#foo$*3>a' and type '<c-y>,'.\n  ---------------------\n  <div>\n      <p id=\"foo1\">\n          <a href=\"\"></a>\n      </p>\n      <p id=\"foo2\">\n          <a href=\"\"></a>\n      </p>\n      <p id=\"foo3\">\n          <a href=\"\"></a>\n      </p>\n  </div>\n  ---------------------\n\n2. Wrap with an Abbreviation\n\n  Write as below.\n  ---------------------\n  test1\n  test2\n  test3\n  ---------------------\n  Then do visual select(line wise) and type '<c-y>,'.\n  Once you get to the 'Tag:' prompt, type 'ul>li*'.\n  ---------------------\n  <ul>\n      <li>test1</li>\n      <li>test2</li>\n      <li>test3</li>\n  </ul>\n  ---------------------\n\n  If you type a tag, such as 'blockquote', then you'll see the following:\n  ---------------------\n  <blockquote>\n      test1\n      test2\n      test3\n  </blockquote>\n  ---------------------\n\n3. Balance a Tag Inward\n\n  type '<c-y>d' in insert mode.\n\n4. Balance a Tag Outward\n\n  type '<c-y>D' in insert mode.\n\n5. Go to the Next Edit Point\n\n  type '<c-y>n' in insert mode.\n\n6. Go to the Previous Edit Point\n\n  type '<c-y>N' in insert mode.\n\n7. Update an <img>’s Size\n\n  Move cursor to the img tag.\n  ---------------------\n  <img src=\"foo.png\" />\n  ---------------------\n  Type '<c-y>i' on img tag\n  ---------------------\n  <img src=\"foo.png\" width=\"32\" height=\"48\" />\n  ---------------------\n\n8. Merge Lines\n\n  select the lines, which include '<li>'\n  ---------------------\n  <ul>\n  \t<li class=\"list1\"></li>\n  \t<li class=\"list2\"></li>\n  \t<li class=\"list3\"></li>\n  </ul>\n  ---------------------\n  and then type '<c-y>m'\n  ---------------------\n  <ul>\n  \t<li class=\"list1\"></li><li class=\"list2\"></li><li class=\"list3\"></li>\n  </ul>\n  ---------------------\n\n9. Remove a Tag\n\n  Move cursor in block\n  ---------------------\n  <div class=\"foo\">\n  \t<a>cursor is here</a>\n  </div>\n  ---------------------\n  Type '<c-y>k' in insert mode.\n  ---------------------\n  <div class=\"foo\">\n\n  </div>\n  ---------------------\n\n  And type '<c-y>k' in there again.\n  ---------------------\n\n  ---------------------\n\n10. Split/Join Tag\n\n  Move the cursor inside block\n  ---------------------\n  <div class=\"foo\">\n  \tcursor is here\n  </div>\n  ---------------------\n  Type '<c-y>j' in insert mode.\n  ---------------------\n  <div class=\"foo\"/>\n  ---------------------\n\n  And then type '<c-y>j' in there again.\n  ---------------------\n  <div class=\"foo\">\n  </div>\n  ---------------------\n\n11. Toggle Comment\n\n  Move cursor inside the block\n  ---------------------\n  <div>\n  \thello world\n  </div>\n  ---------------------\n  Type '<c-y>/' in insert mode.\n  ---------------------\n  <!-- <div>\n  \thello world\n  </div> -->\n  ---------------------\n  Type '<c-y>/' in there again.\n  ---------------------\n  <div>\n  \thello world\n  </div>\n  ---------------------\n\n12. Make an anchor from a URL\n\n  Move cursor to URL\n  ---------------------\n  http://www.google.com/\n  ---------------------\n  Type '<c-y>a'\n  ---------------------\n  <a href=\"http://www.google.com/\">Google</a>\n  ---------------------\n\n13. Make some quoted text from a URL\n\n  Move cursor to the URL\n  ---------------------\n  http://github.com/\n  ---------------------\n  Type '<c-y>A'\n  ---------------------\n  <blockquote class=\"quote\">\n  \t<a href=\"http://github.com/\">Secure source code hosting and collaborative development - GitHub</a><br />\n  \t<p>How does it work? Get up and running in seconds by forking a project, pushing an existing repository...</p>\n  \t<cite>http://github.com/</cite>\n  </blockquote>\n  ---------------------\n\n14. Installing emmet.vim for the language you are using:\n\n  # cd ~/.vim\n  # unzip emmet-vim.zip\n\n  Or if you are using pathogen.vim:\n\n  # cd ~/.vim/bundle # or make directory\n  # unzip /path/to/emmet-vim.zip\n\n  Or if you get the sources from the repository:\n\n  # cd ~/.vim/bundle # or make directory\n  # git clone http://github.com/mattn/emmet-vim.git\n\n15. Enable emmet.vim for the language you using.\n\n  You can customize the behavior of the languages you are using.\n\n  ---------------------\n  # cat >> ~/.vimrc\n  let g:user_emmet_settings = {\n  \\  'php' : {\n  \\    'extends' : 'html',\n  \\    'filters' : 'c',\n  \\  },\n  \\  'xml' : {\n  \\    'extends' : 'html',\n  \\  },\n  \\  'haml' : {\n  \\    'extends' : 'html',\n  \\  },\n  \\}\n  ---------------------\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/autoload/emmet/lang/css.vim",
    "content": "function! emmet#lang#css#findTokens(str)\n  return substitute(substitute(a:str, '^.*[;{]\\s*', '', ''), '}\\s*$', '', '')\nendfunction\n\nfunction! emmet#lang#css#parseIntoTree(abbr, type)\n  let abbr = a:abbr\n  let type = a:type\n  let prefix = 0\n  let value = ''\n\n  let settings = emmet#getSettings()\n  let indent = emmet#getIndentation(type)\n  let aliases = emmet#getResource(type, 'aliases', {})\n  let snippets = emmet#getResource(type, 'snippets', {})\n  let use_pipe_for_cursor = emmet#getResource(type, 'use_pipe_for_cursor', 1)\n\n  let root = emmet#newNode()\n\n  \" emmet\n  let tokens = split(abbr, '+\\ze[^+)!]')\n  let block = emmet#util#searchRegion(\"{\", \"}\")\n  if type == 'css' && block[0] == [0,0] && block[1] == [0,0]\n    let current = emmet#newNode()\n    let current.snippet = abbr . \" {\\n\\t${cursor}\\n}\"\n    let current.name = ''\n    call add(root.child, deepcopy(current))\n  else\n    for n in range(len(tokens))\n      let token = tokens[n]\n      let prop = matchlist(token, '^\\(-\\{0,1}[a-zA-Z]\\+\\|[a-zA-Z0-9]\\++\\{0,1}\\|([a-zA-Z0-9]\\++\\{0,1})\\)\\(\\%([0-9.-]\\+[pe]\\{0,1}-\\{0,1}\\|-auto\\)*\\)$')\n      if len(prop)\n        let token = substitute(prop[1], '^(\\(.*\\))', '\\1', '')\n        if token =~ '^-'\n          let prefix = 1\n          let token = token[1:]\n        endif\n        let value = ''\n        for v in split(prop[2], '\\d\\zs-')\n          if len(value) > 0\n            let value .= ' '\n          endif\n          if token =~ '^[z]'\n            \" TODO\n            let value .= substitute(v, '[^0-9.]*$', '', '')\n          elseif v =~ 'p$'\n            let value .= substitute(v, 'p$', '%', '')\n          elseif v =~ 'e$'\n            let value .= substitute(v, 'e$', 'em', '')\n          elseif v =~ '\\.'\n            let value .= v . 'em'\n          elseif v == 'auto'\n            let value .= v\n          elseif v == '0'\n            let value .= '0'\n          else\n            let value .= v . 'px'\n          endif\n        endfor\n      endif\n  \n      let tag_name = token\n      if tag_name =~ '.!$'\n        let tag_name = tag_name[:-2]\n        let important = 1\n      else\n        let important = 0\n      endif\n      \" make default node\n      let current = emmet#newNode()\n      let current.important = important\n      let current.name = tag_name\n  \n      \" aliases\n      if has_key(aliases, tag_name)\n        let current.name = aliases[tag_name]\n      endif\n  \n      \" snippets\n      if !empty(snippets)\n        let snippet_name = tag_name\n        if !has_key(snippets, snippet_name)\n          let pat = '^' . join(split(tag_name, '\\zs'), '\\%(\\|[^:-]\\+-\\)')\n          let vv = filter(sort(keys(snippets)), 'snippets[v:val] =~ pat')\n          if len(vv) > 0\n            let snippet_name = vv[0]\n          else\n            let pat = '^' . join(split(tag_name, '\\zs'), '\\%(\\|[^:-]\\+-*\\)')\n            let vv = filter(sort(keys(snippets)), 'snippets[v:val] =~ pat')\n            let minl = -1\n            for vk in vv\n              let vvs = snippets[vk]\n              if minl == -1 || len(vvs) < minl\n                let snippet_name = vk\n                let minl = len(vvs)\n              endif\n            endfor\n          endif\n        endif\n        if has_key(snippets, snippet_name)\n          let snippet = snippets[snippet_name]\n          if use_pipe_for_cursor\n            let snippet = substitute(snippet, '|', '${cursor}', 'g')\n          endif\n          let lines = split(snippet, \"\\n\")\n          call map(lines, 'substitute(v:val, \"\\\\(    \\\\|\\\\t\\\\)\", escape(indent, \"\\\\\\\\\"), \"g\")')\n          let current.snippet = join(lines, \"\\n\")\n          let current.name = ''\n          let current.snippet = substitute(current.snippet, ';', value . ';', '')\n          if use_pipe_for_cursor && len(value) > 0\n            let current.snippet = substitute(current.snippet, '\\${cursor}', '', 'g')\n          endif\n          if n < len(tokens) - 1\n            let current.snippet .= \"\\n\"\n          endif\n        endif\n      endif\n  \n      let current.pos = 0\n      let lg = matchlist(token, '^\\%(linear-gradient\\|lg\\)(\\s*\\(\\S\\+\\)\\s*,\\s*\\([^,]\\+\\)\\s*,\\s*\\([^)]\\+\\)\\s*)$')\n      if len(lg) == 0\n        let lg = matchlist(token, '^\\%(linear-gradient\\|lg\\)(\\s*\\(\\S\\+\\)\\s*,\\s*\\([^,]\\+\\)\\s*)$')\n        if len(lg)\n          let [lg[1], lg[2], lg[3]] = ['linear', lg[1], lg[2]]\n        endif\n      endif\n      if len(lg)\n        let current.name = ''\n        let current.snippet = printf(\"background-image:-webkit-gradient(%s, 0 0, 0 100%, from(%s), to(%s));\\n\", lg[1], lg[2], lg[3])\n        call add(root.child, deepcopy(current))\n        let current.snippet = printf(\"background-image:-webkit-linear-gradient(%s, %s);\\n\", lg[2], lg[3])\n        call add(root.child, deepcopy(current))\n        let current.snippet = printf(\"background-image:-moz-linear-gradient(%s, %s);\\n\", lg[2], lg[3])\n        call add(root.child, deepcopy(current))\n        let current.snippet = printf(\"background-image:-o-linear-gradient(%s, %s);\\n\", lg[2], lg[3])\n        call add(root.child, deepcopy(current))\n        let current.snippet = printf(\"background-image:linear-gradient(%s, %s);\\n\", lg[2], lg[3])\n        call add(root.child, deepcopy(current))\n      elseif prefix\n        let snippet = current.snippet\n        let current.snippet = '-webkit-' . snippet . \"\\n\"\n        call add(root.child, deepcopy(current))\n        let current.snippet = '-moz-' . snippet . \"\\n\"\n        call add(root.child, deepcopy(current))\n        let current.snippet = snippet\n        call add(root.child, current)\n      else\n        call add(root.child, current)\n      endif\n    endfor\n  endif\n  return root\nendfunction\n\nfunction! emmet#lang#css#toString(settings, current, type, inline, filters, itemno, indent)\n  let current = a:current\n  let value = current.value[1:-2]\n  if emmet#useFilter(a:filters, 'fc')\n    let value = substitute(value, '\\([^:]\\+\\):\\([^;]*\\)', '\\1: \\2', 'g')\n  else\n    let value = substitute(value, '\\([^:]\\+\\):\\([^;]*\\)', '\\1:\\2', 'g')\n  endif\n  if current.important\n    let value = substitute(value, ';', ' !important;', '')\n  endif\n  return value\nendfunction\n\nfunction! emmet#lang#css#imageSize()\n  let img_region = emmet#util#searchRegion('{', '}')\n  if !emmet#util#regionIsValid(img_region) || !emmet#util#cursorInRegion(img_region)\n    return\n  endif\n  let content = emmet#util#getContent(img_region)\n  let fn = matchstr(content, '\\<url(\\zs[^)]\\+\\ze)')\n  let fn = substitute(fn, '[''\" \\t]', '', 'g')\n  if fn =~ '^\\s*$'\n    return\n  elseif fn !~ '^\\(/\\|http\\)'\n    let fn = simplify(expand('%:h') . '/' . fn)\n  endif\n  let [width, height] = emmet#util#getImageSize(fn)\n  if width == -1 && height == -1\n    return\n  endif\n  let indent = emmet#getIndentation('css')\n  if content =~ '.*\\<width\\s*:[^;]*;.*'\n    let content = substitute(content, '\\<width\\s*:[^;]*;', 'width: ' . width . 'px;', '')\n  else\n    let content = substitute(content, '}', indent . 'width: ' . width . \"px;\\n}\", '')\n  endif\n  if content =~ '.*\\<height\\s*:[^;]*;.*'\n    let content = substitute(content, '\\<height\\s*:[^;]*;', 'height: ' . height . 'px;', '')\n  else\n    let content = substitute(content, '}', indent . 'height: ' . height . \"px;\\n}\", '')\n  endif\n  call emmet#util#setContent(img_region, content)\nendfunction\n\nfunction! emmet#lang#css#encodeImage()\nendfunction\n\nfunction! emmet#lang#css#parseTag(tag)\n  return {}\nendfunction\n\nfunction! emmet#lang#css#toggleComment()\n  let line = getline('.')\n  let mx = '^\\(\\s*\\)/\\*\\s*\\(.*\\)\\s*\\*/\\s*$'\n  if line =~ '{\\s*$'\n    let block = emmet#util#searchRegion('/\\*', '\\*/\\zs')\n    if emmet#util#regionIsValid(block)\n      let content = emmet#util#getContent(block)\n      let content = substitute(content, '/\\*\\s\\(.*\\)\\s\\*/', '\\1', '')\n      call emmet#util#setContent(block, content)\n    else\n      let node = expand('<cword>')\n      if len(node)\n        exe \"normal ciw\\<c-r>='/* '.node.' */'\\<cr>\"\n      endif\n    endif\n  else\n    if line =~ mx\n      let space = substitute(matchstr(line, mx), mx, '\\1', '')\n      let line = substitute(matchstr(line, mx), mx, '\\2', '')\n      let line = space . substitute(line, '^\\s*\\|\\s*$', '\\1', 'g')\n    else\n      let mx = '^\\(\\s*\\)\\(.*\\)\\s*$'\n      let line = substitute(line, mx, '\\1/* \\2 */', '')\n    endif\n    call setline('.', line)\n  endif\nendfunction\n\nfunction! emmet#lang#css#balanceTag(flag) range\n  if a:flag == -2 || a:flag == 2\n    let curpos = [0, line(\"'<\"), col(\"'<\"), 0]\n  else\n    let curpos = emmet#util#getcurpos()\n  endif\n  let block = emmet#util#getVisualBlock()\n  if !emmet#util#regionIsValid(block)\n    if a:flag > 0\n      let block = emmet#util#searchRegion('^', ';')\n      if emmet#util#regionIsValid(block)\n        call emmet#util#selectRegion(block)\n        return\n      endif\n    endif\n  else\n    if a:flag > 0\n      let content = emmet#util#getContent(block)\n      if content !~ '^{.*}$'\n        let block = emmet#util#searchRegion('{', '}')\n        if emmet#util#regionIsValid(block)\n          call emmet#util#selectRegion(block)\n          return\n        endif\n      endif\n    else\n      let pos = searchpos('.*;', 'nW')\n      if pos[0] != 0\n        call setpos('.', [0, pos[0], pos[1], 0])\n        let block = emmet#util#searchRegion('^', ';')\n        if emmet#util#regionIsValid(block)\n          call emmet#util#selectRegion(block)\n          return\n        endif\n      endif\n    endif\n  endif\n  if a:flag == -2 || a:flag == 2\n    silent! exe \"normal! gv\"\n  else\n    call setpos('.', curpos)\n  endif\nendfunction\n\nfunction! emmet#lang#css#moveNextPrevItem(flag)\n  return emmet#lang#css#moveNextPrev(a:flag)\nendfunction\n\nfunction! emmet#lang#css#moveNextPrev(flag)\n  let pos = search('\"\"\\|()\\|\\(:\\s*\\zs$\\)', a:flag ? 'Wbp' : 'Wp')\n  if pos == 2\n    startinsert!\n  else\n    silent! normal! l\n    startinsert\n  endif\nendfunction\n\nfunction! emmet#lang#css#splitJoinTag()\n  \" nothing to do\nendfunction\n\nfunction! emmet#lang#css#removeTag()\n  \" nothing to do\nendfunction\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/autoload/emmet/lang/haml.vim",
    "content": "function! emmet#lang#haml#findTokens(str)\n  return emmet#lang#html#findTokens(a:str)\nendfunction\n\nfunction! emmet#lang#haml#parseIntoTree(abbr, type)\n  return emmet#lang#html#parseIntoTree(a:abbr, a:type)\nendfunction\n\nfunction! emmet#lang#haml#toString(settings, current, type, inline, filters, itemno, indent)\n  let settings = a:settings\n  let current = a:current\n  let type = a:type\n  let inline = a:inline\n  let filters = a:filters\n  let itemno = a:itemno\n  let indent = emmet#getIndentation(type)\n  let dollar_expr = emmet#getResource(type, 'dollar_expr', 1)\n  let str = \"\"\n\n  let comment_indent = ''\n  let comment = ''\n  let current_name = current.name\n  if dollar_expr\n    let current_name = substitute(current.name, '\\$$', itemno+1, '')\n  endif\n  if len(current.name) > 0\n    let str .= '%' . current_name\n    let tmp = ''\n    for attr in emmet#util#unique(current.attrs_order + keys(current.attr))\n      if !has_key(current.attr, attr)\n        continue\n      endif\n      let Val = current.attr[attr]\n      if type(Val) == 2 && Val == function('emmet#types#true')\n        let tmp .= ' :' . attr . ' => true'\n\t  else\n        if dollar_expr\n          while Val =~ '\\$\\([^#{]\\|$\\)'\n            let Val = substitute(Val, '\\(\\$\\+\\)\\([^{]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", itemno+1).submatch(2)', 'g')\n          endwhile\n          let attr = substitute(attr, '\\$$', itemno+1, '')\n        endif\n        let valtmp = substitute(Val, '\\${cursor}', '', '')\n        if attr == 'id' && len(valtmp) > 0\n          let str .= '#' . Val\n        elseif attr == 'class' && len(valtmp) > 0\n          let str .= '.' . substitute(Val, ' ', '.', 'g')\n        else\n          if len(tmp) > 0 | let tmp .= ',' | endif\n          let Val = substitute(Val, '\\${cursor}', '', '')\n          let tmp .= ' :' . attr . ' => \"' . Val . '\"'\n        endif\n      endif\n    endfor\n    if len(tmp)\n      let str .= '{' . tmp . ' }'\n    endif\n    if stridx(','.settings.html.empty_elements.',', ','.current_name.',') != -1 && len(current.value) == 0\n      let str .= \"/\"\n    endif\n\n    let inner = ''\n    if len(current.value) > 0\n      let text = current.value[1:-2]\n      if dollar_expr\n        let text = substitute(text, '\\%(\\\\\\)\\@\\<!\\(\\$\\+\\)\\([^{#]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", itemno+1).submatch(2)', 'g')\n        let text = substitute(text, '\\${nr}', \"\\n\", 'g')\n        let text = substitute(text, '\\\\\\$', '$', 'g')\n        let str = substitute(str, '\\$#', text, 'g')\n      endif\n      let lines = split(text, \"\\n\")\n      if len(lines) == 1\n        let str .= \" \" . text\n      else\n        for line in lines\n          let str .= \"\\n\" . indent . line . \" |\"\n        endfor\n      endif\n    elseif len(current.child) == 0\n      let str .= '${cursor}'\n    endif\n    if len(current.child) == 1 && len(current.child[0].name) == 0\n      let text = current.child[0].value[1:-2]\n      if dollar_expr\n        let text = substitute(text, '\\%(\\\\\\)\\@\\<!\\(\\$\\+\\)\\([^{#]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", itemno+1).submatch(2)', 'g')\n        let text = substitute(text, '\\${nr}', \"\\n\", 'g')\n        let text = substitute(text, '\\\\\\$', '$', 'g')\n      endif\n      let lines = split(text, \"\\n\")\n      if len(lines) == 1\n        let str .= \" \" . text\n      else\n        for line in lines\n          let str .= \"\\n\" . indent . line . \" |\"\n        endfor\n      endif\n    elseif len(current.child) > 0\n      for child in current.child\n        let inner .= emmet#toString(child, type, inline, filters, itemno, indent)\n      endfor\n      let inner = substitute(inner, \"\\n\", \"\\n\" . escape(indent, '\\'), 'g')\n      let inner = substitute(inner, \"\\n\" . escape(indent, '\\') . \"$\", \"\", 'g')\n      let str .= \"\\n\" . indent . inner\n    endif\n  else\n    let str = current.value[1:-2]\n    if dollar_expr\n      let str = substitute(str, '\\%(\\\\\\)\\@\\<!\\(\\$\\+\\)\\([^{#]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", itemno+1).submatch(2)', 'g')\n      let str = substitute(str, '\\${nr}', \"\\n\", 'g')\n      let str = substitute(str, '\\\\\\$', '$', 'g')\n    endif\n  endif\n  let str .= \"\\n\"\n  return str\nendfunction\n\nfunction! emmet#lang#haml#imageSize()\n  let line = getline('.')\n  let current = emmet#lang#haml#parseTag(line)\n  if empty(current) || !has_key(current.attr, 'src')\n    return\n  endif\n  let fn = current.attr.src\n  if fn =~ '^\\s*$'\n    return\n  elseif fn !~ '^\\(/\\|http\\)'\n    let fn = simplify(expand('%:h') . '/' . fn)\n  endif\n\n  let [width, height] = emmet#util#getImageSize(fn)\n  if width == -1 && height == -1\n    return\n  endif\n  let current.attr.width = width\n  let current.attr.height = height\n  let current.attrs_order += ['width', 'height']\n  let haml = emmet#toString(current, 'haml', 1)\n  let haml = substitute(haml, '\\${cursor}', '', '')\n  call setline('.', substitute(matchstr(line, '^\\s*') . haml, \"\\n\", \"\", \"g\"))\nendfunction\n\nfunction! emmet#lang#haml#encodeImage()\nendfunction\n\nfunction! emmet#lang#haml#parseTag(tag)\n  let current = emmet#newNode()\n  let mx = '%\\([a-zA-Z][a-zA-Z0-9]*\\)\\s*\\%({\\(.*\\)}\\)'\n  let match = matchstr(a:tag, mx)\n  let current.name = substitute(match, mx, '\\1', 'i')\n  let attrs = substitute(match, mx, '\\2', 'i')\n  let mx = '\\([a-zA-Z0-9]\\+\\)\\s*=>\\s*\\%(\\([^\"'' \\t]\\+\\)\\|\"\\([^\"]\\{-}\\)\"\\|''\\([^'']\\{-}\\)''\\)'\n  while len(attrs) > 0\n    let match = matchstr(attrs, mx)\n    if len(match) == 0\n      break\n    endif\n    let attr_match = matchlist(match, mx)\n    let name = attr_match[1]\n    let value = len(attr_match[2]) ? attr_match[2] : attr_match[3]\n    let current.attr[name] = value\n    let current.attrs_order += [name]\n    let attrs = attrs[stridx(attrs, match) + len(match):]\n  endwhile\n  return current\nendfunction\n\nfunction! emmet#lang#haml#toggleComment()\n  let line = getline('.')\n  let space = matchstr(line, '^\\s*')\n  if line =~ '^\\s*-#'\n    call setline('.', space . matchstr(line[len(space)+2:], '^\\s*\\zs.*'))\n  elseif line =~ '^\\s*%[a-z]'\n    call setline('.', space . '-# ' . line[len(space):])\n  endif\nendfunction\n\nfunction! emmet#lang#haml#balanceTag(flag) range\n  let block = emmet#util#getVisualBlock()\n  if a:flag == -2 || a:flag == 2\n    let curpos = [0, line(\"'<\"), col(\"'<\"), 0]\n  else\n    let curpos = emmet#util#getcurpos()\n  endif\n  let n = curpos[1]\n  let ml = len(matchstr(getline(n), '^\\s*'))\n\n  if a:flag > 0\n    if a:flag == 1 || !emmet#util#regionIsValid(block)\n      let n = line('.')\n    else\n      while n > 0\n        let l = len(matchstr(getline(n), '^\\s*\\ze%[a-z]'))\n        if l > 0 && l < ml\n          let ml = l\n          break\n        endif\n        let n -= 1\n      endwhile\n    endif\n    let sn = n\n    if n == 0\n      let ml = 0\n    endif\n    while n < line('$')\n      let l = len(matchstr(getline(n), '^\\s*%[a-z]'))\n      if l > 0 && l <= ml\n        let n -= 1\n        break\n      endif\n      let n += 1\n    endwhile\n    call setpos('.', [0, n, 1, 0])\n    normal! V\n    call setpos('.', [0, sn, 1, 0])\n  else\n    while n > 0\n      let l = len(matchstr(getline(n), '^\\s*\\ze[a-z]'))\n      if l > 0 && l > ml\n        let ml = l\n        break\n      endif\n      let n += 1\n    endwhile\n    let sn = n\n    if n == 0\n      let ml = 0\n    endif\n    while n < line('$')\n      let l = len(matchstr(getline(n), '^\\s*%[a-z]'))\n      if l > 0 && l <= ml\n        let n -= 1\n        break\n      endif\n      let n += 1\n    endwhile\n    call setpos('.', [0, n, 1, 0])\n    normal! V\n    call setpos('.', [0, sn, 1, 0])\n  endif\nendfunction\n\nfunction! emmet#lang#haml#moveNextPrevItem(flag)\n  return emmet#lang#haml#moveNextPrev(a:flag)\nendfunction\n\nfunction! emmet#lang#haml#moveNextPrev(flag)\n  let pos = search('\"\"', a:flag ? 'Wb' : 'W')\n  if pos != 0\n    silent! normal! l\n    startinsert\n  endif\nendfunction\n\nfunction! emmet#lang#haml#splitJoinTag()\n  let n = line('.')\n  let sml = len(matchstr(getline(n), '^\\s*%[a-z]'))\n  while n > 0\n    if getline(n) =~ '^\\s*\\ze%[a-z]'\n      if len(matchstr(getline(n), '^\\s*%[a-z]')) < sml\n        break\n      endif\n      let line = getline(n)\n      call setline(n, substitute(line, '^\\s*%\\w\\+\\%(\\s*{[^}]*}\\|\\s\\)\\zs.*', '', ''))\n      let sn = n\n      let n += 1\n      let ml = len(matchstr(getline(n), '^\\s*%[a-z]'))\n      if len(matchstr(getline(n), '^\\s*')) > ml\n        while n <= line('$')\n          let l = len(matchstr(getline(n), '^\\s*'))\n          if l <= ml\n            break\n          endif\n          exe n \"delete\"\n        endwhile\n        call setpos('.', [0, sn, 1, 0])\n      else\n        let tag = matchstr(getline(sn), '^\\s*%\\zs\\(\\w\\+\\)')\n        let spaces = matchstr(getline(sn), '^\\s*')\n        let settings = emmet#getSettings()\n        if stridx(','.settings.html.inline_elements.',', ','.tag.',') == -1\n          call append(sn, spaces . '   ')\n          call setpos('.', [0, sn+1, 1, 0])\n        else\n          call setpos('.', [0, sn, 1, 0])\n        endif\n        startinsert!\n      endif\n      break\n    endif\n    let n -= 1\n  endwhile\nendfunction\n\nfunction! emmet#lang#haml#removeTag()\n  let n = line('.')\n  let ml = 0\n  while n > 0\n    if getline(n) =~ '^\\s*\\ze[a-z]'\n      let ml = len(matchstr(getline(n), '^\\s*%[a-z]'))\n      break\n    endif\n    let n -= 1\n  endwhile\n  let sn = n\n  while n < line('$')\n    let l = len(matchstr(getline(n), '^\\s*%[a-z]'))\n    if l > 0 && l <= ml\n      let n -= 1\n      break\n    endif\n    let n += 1\n  endwhile\n  if sn == n\n    exe \"delete\"\n  else\n    exe sn \",\" (n-1) \"delete\"\n  endif\nendfunction\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/autoload/emmet/lang/html.vim",
    "content": "let s:mx = '\\([+>]\\|[<^]\\+\\)\\{-}\\s*'\n\\     .'\\((*\\)\\{-}\\s*'\n\\       .'\\([@#.]\\{-}[a-zA-Z_\\!][a-zA-Z0-9:_\\!\\-$]*\\|{\\%([^$}]\\+\\|\\$#\\|\\${\\w\\+}\\|\\$\\+\\)*}*[ \\t\\r\\n}]*\\)'\n\\       .'\\('\n\\         .'\\%('\n\\           .'\\%(#{[{}a-zA-Z0-9_\\-\\$]\\+\\|#[a-zA-Z0-9_\\-\\$]\\+\\)'\n\\           .'\\|\\%(\\[[^\\]]\\+\\]\\)'\n\\           .'\\|\\%(\\.{[{}a-zA-Z0-9_\\-\\$]\\+\\|\\.[a-zA-Z0-9_\\-\\$]\\+\\)'\n\\         .'\\)*'\n\\       .'\\)'\n\\       .'\\%(\\({\\%([^$}]\\+\\|\\$#\\|\\${\\w\\+}\\|\\$\\+\\)*}\\+\\)\\)\\{0,1}'\n\\         .'\\%(\\(@-\\{0,1}[0-9]*\\)\\{0,1}\\*\\([0-9]\\+\\)\\)\\{0,1}'\n\\     .'\\(\\%()\\%(\\(@-\\{0,1}[0-9]*\\)\\{0,1}\\*[0-9]\\+\\)\\{0,1}\\)*\\)'\n\nfunction! emmet#lang#html#findTokens(str)\n  let str = a:str\n  let [pos, last_pos] = [0, 0]\n  while 1\n    let tag = matchstr(str, '<[a-zA-Z].\\{-}>', pos)\n    if len(tag) == 0\n      break\n    endif\n    let pos = stridx(str, tag, pos) + len(tag)\n  endwhile\n  let last_pos = pos\n  while len(str) > 0\n    let token = matchstr(str, s:mx, pos)\n    if token == ''\n      break\n    endif\n    if token =~ '^\\s'\n      let token = matchstr(token, '^\\s*\\zs.*')\n      let last_pos = stridx(str, token, pos)\n    endif\n    let pos = stridx(str, token, pos) + len(token)\n  endwhile\n  return a:str[last_pos :-1]\nendfunction\n\nfunction! emmet#lang#html#parseIntoTree(abbr, type)\n  let abbr = a:abbr\n  let type = a:type\n\n  let settings = emmet#getSettings()\n  if !has_key(settings, type)\n    let type = 'html'\n  endif\n  if len(type) == 0 | let type = 'html' | endif\n\n  let settings = emmet#getSettings()\n  let indent = emmet#getIndentation(type)\n\n  \" try 'foo' to (foo-x)\n  let rabbr = emmet#getExpandos(type, abbr)\n  if rabbr == abbr\n    \" try 'foo+(' to (foo-x)\n    let rabbr = substitute(abbr, '\\%(+\\|^\\)\\([a-zA-Z][a-zA-Z0-9+]\\+\\)+\\([(){}>]\\|$\\)', '\\=\"(\".emmet#getExpandos(type, submatch(1)).\")\".submatch(2)', 'i')\n  endif\n  let abbr = rabbr\n\n  let root = emmet#newNode()\n  let parent = root\n  let last = root\n  let pos = []\n  while len(abbr)\n    \" parse line\n    let match = matchstr(abbr, s:mx)\n    let str = substitute(match, s:mx, '\\0', 'ig')\n    let operator = substitute(match, s:mx, '\\1', 'ig')\n    let block_start = substitute(match, s:mx, '\\2', 'ig')\n    let tag_name = substitute(match, s:mx, '\\3', 'ig')\n    let attributes = substitute(match, s:mx, '\\4', 'ig')\n    let value = substitute(match, s:mx, '\\5', 'ig')\n    let basevalue = substitute(match, s:mx, '\\6', 'ig')\n    let multiplier = 0 + substitute(match, s:mx, '\\7', 'ig')\n    let block_end = substitute(match, s:mx, '\\8', 'ig')\n    let important = 0\n    if len(str) == 0\n      break\n    endif\n    if tag_name =~ '^#'\n      let attributes = tag_name . attributes\n      let tag_name = 'div'\n    endif\n    if tag_name =~ '[^!]!$'\n      let tag_name = tag_name[:-2]\n      let important = 1\n    endif\n    if tag_name =~ '^\\.'\n      let attributes = tag_name . attributes\n      let tag_name = 'div'\n    endif\n    let basedirect = basevalue[1] == '-' ? -1 : 1\n    let basevalue = 0 + abs(basevalue[1:])\n    if multiplier <= 0 | let multiplier = 1 | endif\n\n    \" make default node\n    let current = emmet#newNode()\n    let current.name = tag_name\n\n    let current.important = important\n\n    \" aliases\n    let aliases = emmet#getResource(type, 'aliases', {})\n    if has_key(aliases, tag_name)\n      let current.name = aliases[tag_name]\n    endif\n\n    let use_pipe_for_cursor = emmet#getResource(type, 'use_pipe_for_cursor', 1)\n\n    \" snippets\n    let snippets = emmet#getResource(type, 'snippets', {})\n    if !empty(snippets)\n      let snippet_name = tag_name\n      if has_key(snippets, snippet_name)\n        let snippet = snippets[snippet_name]\n        if use_pipe_for_cursor\n          let snippet = substitute(snippet, '|', '${cursor}', 'g')\n        endif\n        let lines = split(snippet, \"\\n\")\n        call map(lines, 'substitute(v:val, \"\\\\(    \\\\|\\\\t\\\\)\", escape(indent, \"\\\\\\\\\"), \"g\")')\n        let current.snippet = join(lines, \"\\n\")\n        let current.name = ''\n      endif\n    endif\n\n    let custom_expands = emmet#getResource(type, 'custom_expands', {})\n    if empty(custom_expands) && has_key(settings, 'custom_expands')\n      let custom_expands = settings['custom_expands']\n    endif\n    for k in keys(custom_expands)\n      if tag_name =~ k\n        let current.snippet = '${' . tag_name . '}'\n        let current.name = ''\n        break\n      endif\n    endfor\n\n    \" default_attributes\n    let default_attributes = emmet#getResource(type, 'default_attributes', {})\n    if !empty(default_attributes)\n      for pat in [current.name, tag_name]\n        if has_key(default_attributes, pat)\n          if type(default_attributes[pat]) == 4\n            let a = default_attributes[pat]\n            let current.attrs_order += keys(a)\n            if use_pipe_for_cursor\n              for k in keys(a)\n                let current.attr[k] = len(a[k]) ? substitute(a[k], '|', '${cursor}', 'g') : '${cursor}'\n              endfor\n            else\n              for k in keys(a)\n                let current.attr[k] = a[k]\n              endfor\n            endif\n          else\n            for a in default_attributes[pat]\n              let current.attrs_order += keys(a)\n              if use_pipe_for_cursor\n                for k in keys(a)\n                  let current.attr[k] = len(a[k]) ? substitute(a[k], '|', '${cursor}', 'g') : '${cursor}'\n                endfor\n              else\n                for k in keys(a)\n                  let current.attr[k] = a[k]\n                endfor\n              endif\n            endfor\n          endif\n          if has_key(settings.html.default_attributes, current.name)\n            let current.name = substitute(current.name, ':.*$', '', '')\n          endif\n          break\n        endif\n      endfor\n    endif\n\n    \" parse attributes\n    if len(attributes)\n      let attr = attributes\n      while len(attr)\n        let item = matchstr(attr, '\\(\\%(\\%(#[{}a-zA-Z0-9_\\-\\$]\\+\\)\\|\\%(\\[[^\\]]\\+\\]\\)\\|\\%(\\.[{}a-zA-Z0-9_\\-\\$]\\+\\)*\\)\\)')\n        if len(item) == 0\n          break\n        endif\n        if item[0] == '#'\n          let current.attr.id = item[1:]\n        endif\n        if item[0] == '.'\n          let current.attr.class = substitute(item[1:], '\\.', ' ', 'g')\n        endif\n        if item[0] == '['\n          let atts = item[1:-2]\n          if matchstr(atts, '^\\s*\\zs[0-9a-zA-Z-:]\\+\\(=\"[^\"]*\"\\|=''[^'']*''\\|=[^ ''\"]\\+\\)') == ''\n\t\t\tif has_key(default_attributes, current.name)\n              let keys = keys(default_attributes[current.name])\n            endif\n            if len(keys) == 0\n              let keys = keys(default_attributes[current.name . ':src'])\n            endif\n            if len(keys) > 0\n              let current.attr[keys[0]] = atts\n            endif\n          else\n            while len(atts)\n              let amat = matchstr(atts, '^\\s*\\zs\\([0-9a-zA-Z-:]\\+\\%(=\"[^\"]*\"\\|=''[^'']*''\\|=[^ ''\"]\\+\\|[^ ''\"\\]]*\\)\\{0,1}\\)')\n              if len(amat) == 0\n                break\n              endif\n              let key = split(amat, '=')[0]\n              let Val = amat[len(key)+1:]\n              if key =~ '\\.$' && Val == ''\n                let key = key[:-2]\n                unlet Val\n                let Val = function('emmet#types#true')\n              elseif Val =~ '^[\"'']'\n                let Val = Val[1:-2]\n              endif\n              let current.attr[key] = Val\n              if index(current.attrs_order, key) == -1\n                let current.attrs_order += [key]\n              endif\n              let atts = atts[stridx(atts, amat) + len(amat):]\n              unlet Val\n            endwhile\n          endif\n        endif\n        let attr = substitute(strpart(attr, len(item)), '^\\s*', '', '')\n      endwhile\n    endif\n\n    \" parse text\n    if tag_name =~ '^{.*}$'\n      let current.name = ''\n      let current.value = tag_name\n    else\n      let current.value = value\n    endif\n    let current.basedirect = basedirect\n    let current.basevalue = basevalue\n    let current.multiplier = multiplier\n\n    \" parse step inside/outside\n    if !empty(last)\n      if operator =~ '>'\n        unlet! parent\n        let parent = last\n        let current.parent = last\n        let current.pos = last.pos + 1\n      else\n        let current.parent = parent\n        let current.pos = last.pos\n      endif\n    else\n      let current.parent = parent\n      let current.pos = 1\n    endif\n    if operator =~ '[<^]'\n      for c in range(len(operator))\n        let tmp = parent.parent\n        if empty(tmp)\n          break\n        endif\n        let parent = tmp\n        let current.parent = tmp\n      endfor\n    endif\n\n    call add(parent.child, current)\n    let last = current\n\n    \" parse block\n    if block_start =~ '('\n      if operator =~ '>'\n        let last.pos += 1\n      endif\n      for n in range(len(block_start))\n        let pos += [last.pos]\n      endfor\n    endif\n    if block_end =~ ')'\n      for n in split(substitute(substitute(block_end, ' ', '', 'g'), ')', ',),', 'g'), ',')\n        if n == ')'\n          if len(pos) > 0 && last.pos >= pos[-1]\n            for c in range(last.pos - pos[-1])\n              let tmp = parent.parent\n              if !has_key(tmp, 'parent')\n                break\n              endif\n              let parent = tmp\n            endfor\n            if len(pos) > 0\n              call remove(pos, -1)\n            endif\n            let last = parent\n            let last.pos += 1\n          endif\n        elseif len(n)\n          let cl = last.child\n          let cls = []\n          for c in range(n[1:])\n            for cc in cl\n              if cc.multiplier > 1\n                let cc.basedirect = c + 1\n              else\n                let cc.basevalue = c + 1\n              endif\n            endfor\n            let cls += deepcopy(cl)\n          endfor\n          let last.child = cls\n        endif\n      endfor\n    endif\n    let abbr = abbr[stridx(abbr, match) + len(match):]\n\n    if g:emmet_debug > 1\n      echomsg \"str=\".str\n      echomsg \"block_start=\".block_start\n      echomsg \"tag_name=\".tag_name\n      echomsg \"operator=\".operator\n      echomsg \"attributes=\".attributes\n      echomsg \"value=\".value\n      echomsg \"basevalue=\".basevalue\n      echomsg \"multiplier=\".multiplier\n      echomsg \"block_end=\".block_end\n      echomsg \"abbr=\".abbr\n      echomsg \"pos=\".string(pos)\n      echomsg \"---\"\n    endif\n  endwhile\n  return root\nendfunction\n\nfunction! emmet#lang#html#toString(settings, current, type, inline, filters, itemno, indent)\n  let settings = a:settings\n  let current = a:current\n  let type = a:type\n  let inline = a:inline\n  let filters = a:filters\n  let itemno = a:itemno\n  let indent = a:indent\n  let dollar_expr = emmet#getResource(type, 'dollar_expr', 1)\n  let q = emmet#getResource(type, 'quote_char', '\"')\n\n  if emmet#useFilter(filters, 'haml')\n    return emmet#lang#haml#toString(settings, current, type, inline, filters, itemno, indent)\n  endif\n  if emmet#useFilter(filters, 'slim')\n    return emmet#lang#slim#toString(settings, current, type, inline, filters, itemno, indent)\n  endif\n\n  let comment = ''\n  let current_name = current.name\n  if dollar_expr\n    let current_name = substitute(current_name, '\\$$', itemno+1, '')\n  endif\n\n  let str = ''\n  if len(current_name) == 0\n    let text = current.value[1:-2]\n    if dollar_expr\n      \" TODO: regexp engine specified\n      if exists('&regexpengine')\n        let text = substitute(text, '\\%#=1\\%(\\\\\\)\\@\\<!\\(\\$\\+\\)\\([^{#]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", itemno+1).submatch(2)', 'g')\n      else\n        let text = substitute(text, '\\%(\\\\\\)\\@\\<!\\(\\$\\+\\)\\([^{#]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", itemno+1).submatch(2)', 'g')\n      endif\n      let text = substitute(text, '\\${nr}', \"\\n\", 'g')\n      let text = substitute(text, '\\\\\\$', '$', 'g')\n    endif\n    return text\n  endif\n  if len(current_name) > 0\n  let str .= '<' . current_name\n  for attr in emmet#util#unique(current.attrs_order + keys(current.attr))\n    if !has_key(current.attr, attr)\n      continue\n    endif\n    let Val = current.attr[attr]\n    if type(Val) == 2 && Val == function('emmet#types#true')\n      unlet Val\n      let Val = 'true'\n      if g:emmet_html5\n        let str .= ' ' . attr\n      else\n        let str .= ' ' . attr . '=' . q . attr . q\n      endif\n      if emmet#useFilter(filters, 'c')\n        if attr == 'id' | let comment .= '#' . Val | endif\n        if attr == 'class' | let comment .= '.' . Val | endif\n      endif\n    else\n      if dollar_expr\n        while Val =~ '\\$\\([^#{]\\|$\\)'\n          \" TODO: regexp engine specified\n          if exists('&regexpengine')\n            let Val = substitute(Val, '\\%#=1\\(\\$\\+\\)\\([^{#]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", itemno+1).submatch(2)', 'g')\n          else\n            let Val = substitute(Val, '\\(\\$\\+\\)\\([^{#]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", itemno+1).submatch(2)', 'g')\n          endif\n        endwhile\n        let attr = substitute(attr, '\\$$', itemno+1, '')\n      endif\n      if attr == 'class' && emmet#useFilter(filters, 'bem')\n        let vals = split(Val, '\\s\\+')\n        let Val = ''\n        let lead = ''\n        for _val in vals\n          if len(Val) > 0\n            let Val .= ' '\n          endif\n          if _val =~ '^\\a_'\n            let lead = _val[0]\n            let Val .= lead . ' ' .  _val\n          elseif _val =~ '^_'\n            if len(lead) == 0\n              let pattr = current.parent.attr\n              if has_key(pattr, 'class')\n                let lead = pattr['class']\n              endif\n            endif\n            let Val .= lead . ' ' . lead . _val\n          else\n            let Val .= _val\n          endif\n        endfor\n      endif\n      let str .= ' ' . attr . '=' . q . Val . q\n      if emmet#useFilter(filters, 'c')\n        if attr == 'id' | let comment .= '#' . Val | endif\n        if attr == 'class' | let comment .= '.' . Val | endif\n      endif\n    endif\n    unlet Val\n  endfor\n  if len(comment) > 0\n    let str = \"<!-- \" . comment . \" -->\\n\" . str\n  endif\n  if stridx(','.settings.html.empty_elements.',', ','.current_name.',') != -1\n    let str .= settings.html.empty_element_suffix\n  else\n    let str .= \">\"\n    let text = current.value[1:-2]\n    if dollar_expr\n      \" TODO: regexp engine specified\n      if exists('&regexpengine')\n        let text = substitute(text, '\\%#=1\\%(\\\\\\)\\@\\<!\\(\\$\\+\\)\\([^{#]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", itemno+1).submatch(2)', 'g')\n      else\n        let text = substitute(text, '\\%(\\\\\\)\\@\\<!\\(\\$\\+\\)\\([^{#]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", itemno+1).submatch(2)', 'g')\n      endif\n      let text = substitute(text, '\\${nr}', \"\\n\", 'g')\n      let text = substitute(text, '\\\\\\$', '$', 'g')\n      let str = substitute(str, '\\(\"\\zs$#\\ze\"\\|\\s\\zs\\$#\"\\|\"\\$#\\ze\\s\\)', text, 'g')\n    endif\n    let str .= text\n    let nc = len(current.child)\n    let dr = 0\n    if nc > 0\n      for n in range(nc)\n        let child = current.child[n]\n        if child.multiplier > 1\n          let str .= \"\\n\" . indent\n          let dr = 1\n        elseif len(current_name) > 0 && stridx(','.settings.html.inline_elements.',', ','.current_name.',') == -1\n          if nc > 1 || (len(child.name) > 0 && stridx(','.settings.html.inline_elements.',', ','.child.name.',') == -1)\n            let str .= \"\\n\" . indent\n            let dr = 1\n          elseif current.multiplier == 1 && nc == 1 && len(child.name) == 0\n            let str .= \"\\n\" . indent\n            let dr = 1\n          endif\n        endif\n        let inner = emmet#toString(child, type, 0, filters, itemno, indent)\n        let inner = substitute(inner, \"^\\n\", \"\", 'g')\n        let inner = substitute(inner, \"\\n\", \"\\n\" . escape(indent, '\\'), 'g')\n        let inner = substitute(inner, \"\\n\" . escape(indent, '\\') . '$', '', 'g')\n        let str .= inner\n      endfor\n    else\n      let str .= '${cursor}'\n    endif\n    if dr\n      let str .= \"\\n\"\n    endif\n    let str .= \"</\" . current_name . \">\"\n  endif\n  if len(comment) > 0\n    let str .= \"\\n<!-- /\" . comment . \" -->\"\n  endif\n  if len(current_name) > 0 && current.multiplier > 0 || stridx(','.settings.html.block_elements.',', ','.current_name.',') != -1\n    let str .= \"\\n\"\n  endif\n  return str\nendfunction\n\nfunction! emmet#lang#html#imageSize()\n  let img_region = emmet#util#searchRegion('<img\\s', '>')\n  if !emmet#util#regionIsValid(img_region) || !emmet#util#cursorInRegion(img_region)\n    return\n  endif\n  let content = emmet#util#getContent(img_region)\n  if content !~ '^<img[^><]\\+>$'\n    return\n  endif\n  let current = emmet#lang#html#parseTag(content)\n  if empty(current) || !has_key(current.attr, 'src')\n    return\n  endif\n  let fn = current.attr.src\n  if fn =~ '^\\s*$'\n    return\n  elseif fn !~ '^\\(/\\|http\\)'\n    let fn = simplify(expand('%:h') . '/' . fn)\n  endif\n\n  let [width, height] = emmet#util#getImageSize(fn)\n  if width == -1 && height == -1\n    return\n  endif\n  let current.attr.width = width\n  let current.attr.height = height\n  let current.attrs_order += ['width', 'height']\n  let html = substitute(emmet#toString(current, 'html', 1), '\\n', '', '')\n  let html = substitute(html, '\\${cursor}', '', '')\n  call emmet#util#setContent(img_region, html)\nendfunction\n\nfunction! emmet#lang#html#encodeImage()\n  let img_region = emmet#util#searchRegion('<img\\s', '>')\n  if !emmet#util#regionIsValid(img_region) || !emmet#util#cursorInRegion(img_region)\n    return\n  endif\n  let content = emmet#util#getContent(img_region)\n  if content !~ '^<img[^><]\\+>$'\n    return\n  endif\n  let current = emmet#lang#html#parseTag(content)\n  if empty(current) || !has_key(current.attr, 'src')\n    return\n  endif\n  let fn = current.attr.src\n  if fn !~ '^\\(/\\|http\\)'\n    let fn = simplify(expand('%:h') . '/' . fn)\n  endif\n\n  let [width, height] = emmet#util#getImageSize(fn)\n  if width == -1 && height == -1\n    return\n  endif\n  let current.attr.width = width\n  let current.attr.height = height\n  let html = emmet#toString(current, 'html', 1)\n  call emmet#util#setContent(img_region, html)\nendfunction\n\nfunction! emmet#lang#html#parseTag(tag)\n  let current = emmet#newNode()\n  let mx = '<\\([a-zA-Z][a-zA-Z0-9]*\\)\\(\\%(\\s[a-zA-Z][a-zA-Z0-9]\\+=\\%([^\"'' \\t]\\+\\|\"[^\"]\\{-}\"\\|''[^'']\\{-}''\\)\\s*\\)*\\)\\(/\\{0,1}\\)>'\n  let match = matchstr(a:tag, mx)\n  let current.name = substitute(match, mx, '\\1', 'i')\n  let attrs = substitute(match, mx, '\\2', 'i')\n  let mx = '\\([a-zA-Z0-9]\\+\\)=\\%(\\([^\"'' \\t]\\+\\)\\|\"\\([^\"]\\{-}\\)\"\\|''\\([^'']\\{-}\\)''\\)'\n  while len(attrs) > 0\n    let match = matchstr(attrs, mx)\n    if len(match) == 0\n      break\n    endif\n    let attr_match = matchlist(match, mx)\n    let name = attr_match[1]\n    let value = len(attr_match[2]) ? attr_match[2] : attr_match[3]\n    let current.attr[name] = value\n    let current.attrs_order += [name]\n    let attrs = attrs[stridx(attrs, match) + len(match):]\n  endwhile\n  return current\nendfunction\n\nfunction! emmet#lang#html#toggleComment()\n  let orgpos = emmet#util#getcurpos()\n  let curpos = emmet#util#getcurpos()\n  let mx = '<\\%#[^>]*>'\n  while 1\n    let block = emmet#util#searchRegion('<!--', '-->')\n    if emmet#util#regionIsValid(block)\n      let block[1][1] += 2\n      let content = emmet#util#getContent(block)\n      let content = substitute(content, '^<!--\\s\\(.*\\)\\s-->$', '\\1', '')\n      call emmet#util#setContent(block, content)\n      silent! call setpos('.', orgpos)\n      return\n    endif\n    let block = emmet#util#searchRegion('<[^>]', '>')\n    if !emmet#util#regionIsValid(block)\n      let pos1 = searchpos('<', 'bcW')\n      if pos1[0] == 0 && pos1[1] == 0\n        return\n      endif\n      let curpos = emmet#util#getcurpos()\n      continue\n    endif\n    let pos1 = block[0]\n    let pos2 = block[1]\n    let content = emmet#util#getContent(block)\n    let tag_name = matchstr(content, '^<\\zs/\\{0,1}[^ \\r\\n>]\\+')\n    if tag_name[0] == '/'\n      call setpos('.', [0, pos1[0], pos1[1], 0])\n      let pos2 = searchpairpos('<'. tag_name[1:] . '\\>[^>]*>', '', '</' . tag_name[1:] . '>', 'bnW')\n      let pos1 = searchpos('>', 'cneW')\n      let block = [pos2, pos1]\n    elseif tag_name =~ '/$'\n      if !emmet#util#pointInRegion(orgpos[1:2], block)\n        \" it's broken tree\n        call setpos('.', orgpos)\n        let block = emmet#util#searchRegion('>', '<')\n        let content = '><!-- ' . emmet#util#getContent(block)[1:-2] . ' --><'\n        call emmet#util#setContent(block, content)\n        silent! call setpos('.', orgpos)\n        return\n      endif\n    else\n      call setpos('.', [0, pos2[0], pos2[1], 0])\n      let pos3 = searchpairpos('<'. tag_name . '\\>[^>]*>', '', '</' . tag_name . '>', 'nW')\n      if pos3 == [0, 0]\n        let block = [pos1, pos2]\n      else\n        call setpos('.', [0, pos3[0], pos3[1], 0])\n        let pos2 = searchpos('>', 'neW')\n        let block = [pos1, pos2]\n      endif\n    endif\n    if !emmet#util#regionIsValid(block)\n      silent! call setpos('.', orgpos)\n      return\n    endif\n    if emmet#util#pointInRegion(curpos[1:2], block)\n      let content = '<!-- ' . emmet#util#getContent(block) . ' -->'\n      call emmet#util#setContent(block, content)\n      silent! call setpos('.', orgpos)\n      return\n    endif\n  endwhile\nendfunction\n\nfunction! emmet#lang#html#balanceTag(flag) range\n  let vblock = emmet#util#getVisualBlock()\n  if a:flag == -2 || a:flag == 2\n    let curpos = [0, line(\"'<\"), col(\"'<\"), 0]\n  else\n    let curpos = emmet#util#getcurpos()\n  endif\n  let settings = emmet#getSettings()\n\n  if a:flag > 0\n    let mx = '<\\([a-zA-Z][a-zA-Z0-9:_\\-]*\\)[^>]*>'\n    while 1\n      let pos1 = searchpos(mx, 'bW')\n      let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx)\n      let tag_name = matchstr(content, '^<\\zs[a-zA-Z0-9:_\\-]*\\ze')\n      if stridx(','.settings.html.empty_elements.',', ','.tag_name.',') != -1\n        let pos2 = searchpos('>', 'nW')\n      else\n        let pos2 = searchpairpos('<' . tag_name . '[^>]*>', '', '</'. tag_name . '>\\zs', 'nW')\n      endif\n      let block = [pos1, pos2]\n      if pos1[0] == 0 && pos1[1] == 0\n        break\n      endif\n      if emmet#util#pointInRegion(curpos[1:2], block) && emmet#util#regionIsValid(block)\n        call emmet#util#selectRegion(block)\n        return\n      endif\n    endwhile\n  else\n    let mx = '<\\([a-zA-Z][a-zA-Z0-9:_\\-]*\\)[^>]*>'\n    while 1\n      let pos1 = searchpos(mx, 'W')\n      if pos1 == curpos[1:2]\n        let pos1 = searchpos(mx . '\\zs', 'W')\n        let pos2 = searchpos('.\\ze<', 'W')\n        let block = [pos1, pos2]\n        if emmet#util#regionIsValid(block)\n          call emmet#util#selectRegion(block)\n          return\n        endif\n      endif\n      let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx)\n      let tag_name = matchstr(content, '^<\\zs[a-zA-Z0-9:_\\-]*\\ze')\n      if stridx(','.settings.html.empty_elements.',', ','.tag_name.',') != -1\n        let pos2 = searchpos('>', 'nW')\n      else\n        let pos2 = searchpairpos('<' . tag_name . '[^>]*>', '', '</'. tag_name . '>\\zs', 'nW')\n      endif\n      let block = [pos1, pos2]\n      if pos1[0] == 0 && pos1[1] == 0\n        break\n      endif\n      if emmet#util#regionIsValid(block)\n        call emmet#util#selectRegion(block)\n        return\n      endif\n    endwhile\n  endif\n  if a:flag == -2 || a:flag == 2\n    silent! exe \"normal! gv\"\n  else\n    call setpos('.', curpos)\n  endif\nendfunction\n\nfunction! emmet#lang#html#moveNextPrevItem(flag)\n  silent! exe \"normal \\<esc>\"\n  let mx = '\\%([0-9a-zA-Z-:]\\+\\%(=\"[^\"]*\"\\|=''[^'']*''\\|[^ ''\">\\]]*\\)\\{0,1}\\)'\n  let pos = searchpos('\\s'.mx.'\\zs', '')\n  if pos != [0,0]\n    call feedkeys('v?\\s\\zs'.mx.\"\\<cr>\", '')\n  endif\nendfunction\n\nfunction! emmet#lang#html#moveNextPrev(flag)\n  let pos = search('\\%(</\\w\\+\\)\\@<!\\zs><\\/\\|\\(\"\"\\)\\|^\\(\\s*\\)$', a:flag ? 'Wpb' : 'Wp')\n  if pos == 3\n    startinsert!\n  elseif pos != 0\n    silent! normal! l\n    startinsert\n  endif\nendfunction\n\nfunction! emmet#lang#html#splitJoinTag()\n  let curpos = emmet#util#getcurpos()\n  while 1\n    let mx = '<\\(/\\{0,1}[a-zA-Z][a-zA-Z0-9:_\\-]*\\)[^>]*>'\n    let pos1 = searchpos(mx, 'bcnW')\n    let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx)\n    let tag_name = substitute(content, '^<\\(/\\{0,1}[a-zA-Z][a-zA-Z0-9:_\\-]*\\).*$', '\\1', '')\n    let block = [pos1, [pos1[0], pos1[1] + len(content) - 1]]\n    if content[-2:] == '/>' && emmet#util#cursorInRegion(block)\n      let content = content[:-3] . \"></\" . tag_name . '>'\n      call emmet#util#setContent(block, content)\n      call setpos('.', [0, block[0][0], block[0][1], 0])\n      return\n    else\n      if tag_name[0] == '/'\n        let pos1 = searchpos('<' . tag_name[1:] . '[^a-zA-Z0-9]', 'bcnW')\n        call setpos('.', [0, pos1[0], pos1[1], 0])\n        let pos2 = searchpos('</' . tag_name[1:] . '>', 'cneW')\n      else\n        let pos2 = searchpos('</' . tag_name . '>', 'cneW')\n      endif\n      let block = [pos1, pos2]\n      let content = emmet#util#getContent(block)\n      if emmet#util#pointInRegion(curpos[1:2], block) && content[1:] !~ '<' . tag_name . '[^a-zA-Z0-9]*[^>]*>'\n        let content = matchstr(content, mx)[:-2] . '/>'\n        call emmet#util#setContent(block, content)\n        call setpos('.', [0, block[0][0], block[0][1], 0])\n        return\n      else\n        if block[0][0] > 0\n          call setpos('.', [0, block[0][0]-1, block[0][1], 0])\n        else\n          call setpos('.', curpos)\n          return\n        endif\n      endif\n    endif\n  endwhile\nendfunction\n\nfunction! emmet#lang#html#removeTag()\n  let curpos = emmet#util#getcurpos()\n  while 1\n    let mx = '<\\(/\\{0,1}[a-zA-Z][a-zA-Z0-9:_\\-]*\\)[^>]*>'\n    let pos1 = searchpos(mx, 'bcnW')\n    let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx)\n    let tag_name = substitute(content, '^<\\(/\\{0,1}[a-zA-Z0-9:_\\-]*\\).*$', '\\1', '')\n    let block = [pos1, [pos1[0], pos1[1] + len(content) - 1]]\n    if content[-2:] == '/>' && emmet#util#cursorInRegion(block)\n      call emmet#util#setContent(block, '')\n      call setpos('.', [0, block[0][0], block[0][1], 0])\n      return\n    else\n      if tag_name[0] == '/'\n        let pos1 = searchpos('<' . tag_name[1:] . '[^a-zA-Z0-9]', 'bcnW')\n        call setpos('.', [0, pos1[0], pos1[1], 0])\n        let pos2 = searchpos('</' . tag_name[1:] . '>', 'cneW')\n      else\n        let pos2 = searchpos('</' . tag_name . '>', 'cneW')\n      endif\n      let block = [pos1, pos2]\n      let content = emmet#util#getContent(block)\n      if emmet#util#pointInRegion(curpos[1:2], block) && content[1:] !~ '<' . tag_name . '[^a-zA-Z0-9]*[^>]*>'\n        call emmet#util#setContent(block, '')\n        call setpos('.', [0, block[0][0], block[0][1], 0])\n        return\n      else\n        if block[0][0] > 0\n          call setpos('.', [0, block[0][0]-1, block[0][1], 0])\n        else\n          call setpos('.', curpos)\n          return\n        endif\n      endif\n    endif\n  endwhile\nendfunction\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/autoload/emmet/lang/less.vim",
    "content": "function! emmet#lang#less#findTokens(str)\n  return emmet#lang#html#findTokens(a:str)\nendfunction\n\nfunction! emmet#lang#less#parseIntoTree(abbr, type)\n  return emmet#lang#scss#parseIntoTree(a:abbr, a:type)\nendfunction\n\nfunction! emmet#lang#less#toString(settings, current, type, inline, filters, itemno, indent)\n  return emmet#lang#scss#toString(a:settings, a:current, a:type, a:inline, a:filters, a:itemno, a:indent)\nendfunction\n\nfunction! emmet#lang#less#imageSize()\n  call emmet#lang#css#imageSize()\nendfunction\n\nfunction! emmet#lang#less#encodeImage()\n  return emmet#lang#css#encodeImage()\nendfunction\n\nfunction! emmet#lang#less#parseTag(tag)\n  return emmet#lang#css#parseTag(a:tag)\nendfunction\n\nfunction! emmet#lang#less#toggleComment()\n  call emmet#lang#css#toggleComment()\nendfunction\n\nfunction! emmet#lang#less#balanceTag(flag) range\n  call emmet#lang#scss#balanceTag(a:flag)\nendfunction\n\nfunction! emmet#lang#less#moveNextPrevItem(flag)\n  return emmet#lang#less#moveNextPrev(a:flag)\nendfunction\n\nfunction! emmet#lang#less#moveNextPrev(flag)\n  call emmet#lang#scss#moveNextPrev(a:flag)\nendfunction\n\nfunction! emmet#lang#less#splitJoinTag()\n  call emmet#lang#css#splitJoinTag()\nendfunction\n\nfunction! emmet#lang#less#removeTag()\n  call emmet#lang#css#removeTag()\nendfunction\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/autoload/emmet/lang/sass.vim",
    "content": "function! emmet#lang#sass#findTokens(str)\n  return a:str\nendfunction\n\nfunction! emmet#lang#sass#parseIntoTree(abbr, type)\n  if a:abbr =~ '>'\n    return emmet#lang#html#parseIntoTree(a:abbr, a:type)\n  else\n    return emmet#lang#css#parseIntoTree(a:abbr, a:type)\n  endif\nendfunction\n\nfunction! emmet#lang#sass#toString(settings, current, type, inline, filters, itemno, indent)\n  let settings = a:settings\n  let current = a:current\n  let type = a:type\n  let inline = a:inline\n  let filters = a:filters\n  let itemno = a:itemno\n  let indent = a:indent\n  let str = \"\"\n\n  let current_name = current.name\n  let current_name = substitute(current.name, '\\$$', itemno+1, '')\n  if len(current.name) > 0\n    let str .= current_name\n    let tmp = ''\n    for attr in keys(current.attr)\n      let val = current.attr[attr]\n      while val =~ '\\$\\([^#{]\\|$\\)'\n        let val = substitute(val, '\\(\\$\\+\\)\\([^{]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", itemno+1).submatch(2)', 'g')\n      endwhile\n      let attr = substitute(attr, '\\$$', itemno+1, '')\n      if attr == 'id'\n        let str .= '#' . val\n      elseif attr == 'class'\n        let str .= '.' . val\n      else\n        let tmp .= attr . ': ' . val\n      endif\n    endfor\n    if len(tmp) > 0\n      let str .= \"\\n\"\n      for line in split(tmp, \"\\n\")\n        let str .= indent . line . \"\\n\"\n      endfor\n    else\n      let str .= \"\\n\"\n    endif\n\n    let inner = ''\n    for child in current.child\n      let tmp = emmet#toString(child, type, inline, filters, itemno, indent)\n      let tmp = substitute(tmp, \"\\n\", \"\\n\" . escape(indent, '\\'), 'g')\n      let tmp = substitute(tmp, \"\\n\" . escape(indent, '\\') . '$', '${cursor}\\n', 'g')\n      let inner .= tmp\n    endfor\n    if len(inner) > 0\n      let str .= indent . inner\n    endif\n  else\n    let text = emmet#lang#css#toString(settings, current, type, inline, filters, itemno, indent)\n    let text = substitute(text, '\\s*;\\ze\\(\\${[^}]\\+}\\)\\?\\(\\n\\|$\\)', '', 'g')\n    return text\n  endif\n  return str\nendfunction\n\nfunction! emmet#lang#sass#imageSize()\nendfunction\n\nfunction! emmet#lang#sass#encodeImage()\nendfunction\n\nfunction! emmet#lang#sass#parseTag(tag)\nendfunction\n\nfunction! emmet#lang#sass#toggleComment()\nendfunction\n\nfunction! emmet#lang#sass#balanceTag(flag) range\n  let block = emmet#util#getVisualBlock()\n  if a:flag == -2 || a:flag == 2\n    let curpos = [0, line(\"'<\"), col(\"'<\"), 0]\n  else\n    let curpos = emmet#util#getcurpos()\n  endif\n  let n = curpos[1]\n  let ml = len(matchstr(getline(n), '^\\s*'))\n\n  if a:flag > 0\n    if a:flag == 1 || !emmet#util#regionIsValid(block)\n      let n = line('.')\n    else\n      while n > 0\n        let l = len(matchstr(getline(n), '^\\s*\\ze[a-z]'))\n        if l > 0 && l < ml\n          let ml = l\n          break\n        endif\n        let n -= 1\n      endwhile\n    endif\n    let sn = n\n    if n == 0\n      let ml = 0\n    endif\n    while n < line('$')\n      let l = len(matchstr(getline(n), '^\\s*[a-z]'))\n      if l > 0 && l <= ml\n        let n -= 1\n        break\n      endif\n      let n += 1\n    endwhile\n    call setpos('.', [0, n, 1, 0])\n    normal! V\n    call setpos('.', [0, sn, 1, 0])\n  else\n    while n > 0\n      let l = len(matchstr(getline(n), '^\\s*\\ze[a-z]'))\n      if l > 0 && l > ml\n        let ml = l\n        break\n      endif\n      let n += 1\n    endwhile\n    let sn = n\n    if n == 0\n      let ml = 0\n    endif\n    while n < line('$')\n      let l = len(matchstr(getline(n), '^\\s*[a-z]'))\n      if l > 0 && l <= ml\n        let n -= 1\n        break\n      endif\n      let n += 1\n    endwhile\n    call setpos('.', [0, n, 1, 0])\n    normal! V\n    call setpos('.', [0, sn, 1, 0])\n  endif\nendfunction\n\nfunction! emmet#lang#sass#moveNextPrevItem(flag)\n  return emmet#lang#sass#moveNextPrev(a:flag)\nendfunction\n\nfunction! emmet#lang#sass#moveNextPrev(flag)\n  let pos = search('\"\"\\|\\(^\\s*|\\s*\\zs\\)', a:flag ? 'Wpb' : 'Wp')\n  if pos == 2\n    startinsert!\n  elseif pos != 0\n    silent! normal! l\n    startinsert\n  endif\nendfunction\n\nfunction! emmet#lang#sass#splitJoinTag()\nendfunction\n\nfunction! emmet#lang#sass#removeTag()\nendfunction\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/autoload/emmet/lang/scss.vim",
    "content": "function! emmet#lang#scss#findTokens(str)\n  return emmet#lang#html#findTokens(a:str)\nendfunction\n\nfunction! emmet#lang#scss#parseIntoTree(abbr, type)\n  if a:abbr =~ '>'\n    return emmet#lang#html#parseIntoTree(a:abbr, a:type)\n  else\n    return emmet#lang#css#parseIntoTree(a:abbr, a:type)\n  endif\nendfunction\n\nfunction! emmet#lang#scss#toString(settings, current, type, inline, filters, itemno, indent)\n  let settings = a:settings\n  let current = a:current\n  let type = a:type\n  let inline = a:inline\n  let filters = a:filters\n  let itemno = a:itemno\n  let indent = a:indent\n  let str = \"\"\n\n  let current_name = substitute(current.name, '\\$$', itemno+1, '')\n  if len(current.name) > 0\n    let str .= current_name\n    let tmp = ''\n    for attr in keys(current.attr)\n      let val = current.attr[attr]\n      while val =~ '\\$\\([^#{]\\|$\\)'\n        let val = substitute(val, '\\(\\$\\+\\)\\([^{]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", itemno+1).submatch(2)', 'g')\n      endwhile\n      let attr = substitute(attr, '\\$$', itemno+1, '')\n      if attr == 'id'\n        let str .= '#' . val\n      elseif attr == 'class'\n        let str .= '.' . val\n      else\n        let tmp .= attr . ': ' . val . ';'\n      endif\n    endfor\n    if len(tmp) > 0\n      let str .= \" {\\n\"\n      for line in split(tmp, \"\\n\")\n        let str .= indent . line . \"\\n\"\n      endfor\n    else\n      let str .= \" {\\n\"\n    endif\n\n    let inner = ''\n    for child in current.child\n      let inner .= emmet#toString(child, type, inline, filters, itemno)\n    endfor\n    let inner = substitute(inner, \"\\n\", \"\\n\" . escape(indent, '\\'), 'g')\n    let inner = substitute(inner, \"\\n\" . escape(indent, '\\') . \"$\", \"\", 'g')\n    let str .= indent . inner . \"\\n}\\n\"\n  else\n    return emmet#lang#css#toString(settings, current, type, inline, filters, itemno, indent)\n  endif\n  return str\nendfunction\n\nfunction! emmet#lang#scss#imageSize()\n  call emmet#lang#css#imageSize()\nendfunction\n\nfunction! emmet#lang#scss#encodeImage()\n  return emmet#lang#css#encodeImage()\nendfunction\n\nfunction! emmet#lang#scss#parseTag(tag)\n  return emmet#lang#css#parseTag(a:tag)\nendfunction\n\nfunction! emmet#lang#scss#toggleComment()\n  call emmet#lang#css#toggleComment()\nendfunction\n\nfunction! emmet#lang#scss#balanceTag(flag) range\n  if a:flag == -2 || a:flag == 2\n    let curpos = [0, line(\"'<\"), col(\"'<\"), 0]\n    call setpos('.', curpos)\n  else\n    let curpos = emmet#util#getcurpos()\n  endif\n  if a:flag < 0\n    let ret = searchpair('}', '', '.\\zs{')\n  else\n    let ret = searchpair('{', '', '}', 'bW')\n  endif\n  if ret > 0\n    let pos1 = emmet#util#getcurpos()[1:2]\n    if a:flag < 0\n      let pos2 = searchpairpos('{', '', '}')\n    else\n      let pos2 = searchpairpos('{', '', '}')\n    endif\n    let block = [pos1, pos2]\n    if emmet#util#regionIsValid(block)\n      call emmet#util#selectRegion(block)\n      return\n    endif\n  endif\n  if a:flag == -2 || a:flag == 2\n    silent! exe \"normal! gv\"\n  else\n    call setpos('.', curpos)\n  endif\nendfunction\n\nfunction! emmet#lang#scss#moveNextPrevItem(flag)\n  return emmet#lang#scss#moveNextPrev(a:flag)\nendfunction\n\nfunction! emmet#lang#scss#moveNextPrev(flag)\n  call emmet#lang#css#moveNextPrev(a:flag)\nendfunction\n\nfunction! emmet#lang#scss#splitJoinTag()\n  call emmet#lang#css#splitJoinTag()\nendfunction\n\nfunction! emmet#lang#scss#removeTag()\n  call emmet#lang#css#removeTag()\nendfunction\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/autoload/emmet/lang/slim.vim",
    "content": "function! emmet#lang#slim#findTokens(str)\n  return emmet#lang#html#findTokens(a:str)\nendfunction\n\nfunction! emmet#lang#slim#parseIntoTree(abbr, type)\n  return emmet#lang#html#parseIntoTree(a:abbr, a:type)\nendfunction\n\nfunction! emmet#lang#slim#toString(settings, current, type, inline, filters, itemno, indent)\n  let settings = a:settings\n  let current = a:current\n  let type = a:type\n  let inline = a:inline\n  let filters = a:filters\n  let itemno = a:itemno\n  let indent = emmet#getIndentation(type)\n  let dollar_expr = emmet#getResource(type, 'dollar_expr', 1)\n  let str = \"\"\n\n  let comment_indent = ''\n  let comment = ''\n  let current_name = current.name\n  if dollar_expr\n    let current_name = substitute(current.name, '\\$$', itemno+1, '')\n  endif\n  if len(current.name) > 0\n    let str .= current_name\n    for attr in emmet#util#unique(current.attrs_order + keys(current.attr))\n      if !has_key(current.attr, attr)\n        continue\n      endif\n      let Val = current.attr[attr]\n      if type(Val) == 2 && Val == function('emmet#types#true')\n        let str .= ' ' . attr . '=true'\n      else\n        if dollar_expr\n          while Val =~ '\\$\\([^#{]\\|$\\)'\n            let Val = substitute(Val, '\\(\\$\\+\\)\\([^{]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", itemno+1).submatch(2)', 'g')\n          endwhile\n        endif\n        let attr = substitute(attr, '\\$$', itemno+1, '')\n        let str .= ' ' . attr . '=\"' . Val . '\"'\n      endif\n    endfor\n\n    let inner = ''\n    if len(current.value) > 0\n      let str .= \"\\n\"\n      let text = current.value[1:-2]\n      if dollar_expr\n        let text = substitute(text, '\\%(\\\\\\)\\@\\<!\\(\\$\\+\\)\\([^{#]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", itemno+1).submatch(2)', 'g')\n        let text = substitute(text, '\\${nr}', \"\\n\", 'g')\n        let text = substitute(text, '\\\\\\$', '$', 'g')\n        let str = substitute(str, '\\$#', text, 'g')\n      endif\n      for line in split(text, \"\\n\")\n        let str .= indent . \"| \" . line . \"\\n\"\n      endfor\n    elseif len(current.child) == 0\n      let str .= '${cursor}'\n    endif\n    if len(current.child) == 1 && len(current.child[0].name) == 0\n      let str .= \"\\n\"\n      let text = current.child[0].value[1:-2]\n      if dollar_expr\n        let text = substitute(text, '\\%(\\\\\\)\\@\\<!\\(\\$\\+\\)\\([^{#]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", itemno+1).submatch(2)', 'g')\n        let text = substitute(text, '\\${nr}', \"\\n\", 'g')\n        let text = substitute(text, '\\\\\\$', '$', 'g')\n      endif\n      for line in split(text, \"\\n\")\n        let str .= indent . \"| \" . line . \"\\n\"\n      endfor\n    elseif len(current.child) > 0\n      for child in current.child\n        let inner .= emmet#toString(child, type, inline, filters, itemno, indent)\n      endfor\n      let inner = substitute(inner, \"\\n\", \"\\n\" . escape(indent, '\\'), 'g')\n      let inner = substitute(inner, \"\\n\" . escape(indent, '\\') . \"$\", \"\", 'g')\n      let str .= \"\\n\" . indent . inner\n    endif\n  else\n    let str = current.value[1:-2]\n    if dollar_expr\n      let str = substitute(str, '\\%(\\\\\\)\\@\\<!\\(\\$\\+\\)\\([^{#]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", itemno+1).submatch(2)', 'g')\n      let str = substitute(str, '\\${nr}', \"\\n\", 'g')\n      let str = substitute(str, '\\\\\\$', '$', 'g')\n    endif\n  endif\n  if str !~ \"\\n$\"\n    let str .= \"\\n\"\n  endif\n  return str\nendfunction\n\nfunction! emmet#lang#slim#imageSize()\n  let line = getline('.')\n  let current = emmet#lang#slim#parseTag(line)\n  if empty(current) || !has_key(current.attr, 'src')\n    return\n  endif\n  let fn = current.attr.src\n  if fn =~ '^\\s*$'\n    return\n  elseif fn !~ '^\\(/\\|http\\)'\n    let fn = simplify(expand('%:h') . '/' . fn)\n  endif\n\n  let [width, height] = emmet#util#getImageSize(fn)\n  if width == -1 && height == -1\n    return\n  endif\n  let current.attr.width = width\n  let current.attr.height = height\n  let current.attrs_order += ['width', 'height']\n  let slim = emmet#toString(current, 'slim', 1)\n  let slim = substitute(slim, '\\${cursor}', '', '')\n  call setline('.', substitute(matchstr(line, '^\\s*') . slim, \"\\n\", \"\", \"g\"))\nendfunction\n\nfunction! emmet#lang#slim#encodeImage()\nendfunction\n\nfunction! emmet#lang#slim#parseTag(tag)\n  let current = emmet#newNode()\n  let mx = '\\([a-zA-Z][a-zA-Z0-9]*\\)\\s\\+\\(.*\\)'\n  let match = matchstr(a:tag, mx)\n  let current.name = substitute(match, mx, '\\1', 'i')\n  let attrs = substitute(match, mx, '\\2', 'i')\n  let mx = '\\([a-zA-Z0-9]\\+\\)=\\%(\\([^\"'' \\t]\\+\\)\\|\"\\([^\"]\\{-}\\)\"\\|''\\([^'']\\{-}\\)''\\)'\n  while len(attrs) > 0\n    let match = matchstr(attrs, mx)\n    if len(match) == 0\n      break\n    endif\n    let attr_match = matchlist(match, mx)\n    let name = attr_match[1]\n    let value = len(attr_match[2]) ? attr_match[2] : attr_match[3]\n    let current.attr[name] = value\n    let current.attrs_order += [name]\n    let attrs = attrs[stridx(attrs, match) + len(match):]\n  endwhile\n  return current\nendfunction\n\nfunction! emmet#lang#slim#toggleComment()\n  let line = getline('.')\n  let space = matchstr(line, '^\\s*')\n  if line =~ '^\\s*/'\n    call setline('.', space . line[len(space)+1:])\n  elseif line =~ '^\\s*[a-z]'\n    call setline('.', space . '/' . line[len(space):])\n  endif\nendfunction\n\nfunction! emmet#lang#slim#balanceTag(flag) range\n  let block = emmet#util#getVisualBlock()\n  if a:flag == -2 || a:flag == 2\n    let curpos = [0, line(\"'<\"), col(\"'<\"), 0]\n  else\n    let curpos = emmet#util#getcurpos()\n  endif\n  let n = curpos[1]\n  let ml = len(matchstr(getline(n), '^\\s*'))\n\n  if a:flag > 0\n    if a:flag == 1 || !emmet#util#regionIsValid(block)\n      let n = line('.')\n    else\n      while n > 0\n        let l = len(matchstr(getline(n), '^\\s*\\ze[a-z]'))\n        if l > 0 && l < ml\n          let ml = l\n          break\n        endif\n        let n -= 1\n      endwhile\n    endif\n    let sn = n\n    if n == 0\n      let ml = 0\n    endif\n    while n < line('$')\n      let l = len(matchstr(getline(n), '^\\s*[a-z]'))\n      if l > 0 && l <= ml\n        let n -= 1\n        break\n      endif\n      let n += 1\n    endwhile\n    call setpos('.', [0, n, 1, 0])\n    normal! V\n    call setpos('.', [0, sn, 1, 0])\n  else\n    while n > 0\n      let l = len(matchstr(getline(n), '^\\s*\\ze[a-z]'))\n      if l > 0 && l > ml\n        let ml = l\n        break\n      endif\n      let n += 1\n    endwhile\n    let sn = n\n    if n == 0\n      let ml = 0\n    endif\n    while n < line('$')\n      let l = len(matchstr(getline(n), '^\\s*[a-z]'))\n      if l > 0 && l <= ml\n        let n -= 1\n        break\n      endif\n      let n += 1\n    endwhile\n    call setpos('.', [0, n, 1, 0])\n    normal! V\n    call setpos('.', [0, sn, 1, 0])\n  endif\nendfunction\n\nfunction! emmet#lang#slim#moveNextPrevItem(flag)\n  return emmet#lang#slim#moveNextPrev(a:flag)\nendfunction\n\nfunction! emmet#lang#slim#moveNextPrev(flag)\n  let pos = search('\"\"\\|\\(^\\s*|\\s*\\zs\\)', a:flag ? 'Wpb' : 'Wp')\n  if pos == 2\n    startinsert!\n  elseif pos != 0\n    silent! normal! l\n    startinsert\n  endif\nendfunction\n\nfunction! emmet#lang#slim#splitJoinTag()\n  let n = line('.')\n  while n > 0\n    if getline(n) =~ '^\\s*\\ze[a-z]'\n      let sn = n\n      let n += 1\n      if getline(n) =~ '^\\s*|'\n        while n <= line('$')\n          if getline(n) !~ '^\\s*|'\n            break\n          endif\n          exe n \"delete\"\n        endwhile\n        call setpos('.', [0, sn, 1, 0])\n      else\n        let spaces = matchstr(getline(sn), '^\\s*')\n        call append(sn, spaces . '  | ')\n        call setpos('.', [0, sn+1, 1, 0])\n        startinsert!\n      endif\n      break\n    endif\n    let n -= 1\n  endwhile\nendfunction\n\nfunction! emmet#lang#slim#removeTag()\n  let n = line('.')\n  let ml = 0\n  while n > 0\n    if getline(n) =~ '^\\s*\\ze[a-z]'\n      let ml = len(matchstr(getline(n), '^\\s*[a-z]'))\n      break\n    endif\n    let n -= 1\n  endwhile\n  let sn = n\n  while n < line('$')\n    let l = len(matchstr(getline(n), '^\\s*[a-z]'))\n    if l > 0 && l <= ml\n      let n -= 1\n      break\n    endif\n    let n += 1\n  endwhile\n  if sn == n\n    exe \"delete\"\n  else\n    exe sn \",\" (n-1) \"delete\"\n  endif\nendfunction\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/autoload/emmet/lang.vim",
    "content": "let s:exists = {}\nfunction! emmet#lang#exists(type)\n  if len(a:type) == 0\n    return 0\n  elseif has_key(s:exists, a:type)\n    return s:exists[a:type]\n  endif\n  let s:exists[a:type] = len(globpath(&rtp, 'autoload/emmet/lang/'.a:type.'.vim')) > 0\n  return s:exists[a:type]\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/autoload/emmet/lorem/en.vim",
    "content": "function! emmet#lorem#en#expand(command)\n  let wcount = matchstr(a:command, '\\(\\d*\\)$')\n  let wcount = wcount > 0 ? wcount : 30\n  \n  let common = ['lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipisicing', 'elit']\n  let words = ['exercitationem', 'perferendis', 'perspiciatis', 'laborum', 'eveniet',\n  \\            'sunt', 'iure', 'nam', 'nobis', 'eum', 'cum', 'officiis', 'excepturi',\n  \\            'odio', 'consectetur', 'quasi', 'aut', 'quisquam', 'vel', 'eligendi',\n  \\            'itaque', 'non', 'odit', 'tempore', 'quaerat', 'dignissimos',\n  \\            'facilis', 'neque', 'nihil', 'expedita', 'vitae', 'vero', 'ipsum',\n  \\            'nisi', 'animi', 'cumque', 'pariatur', 'velit', 'modi', 'natus',\n  \\            'iusto', 'eaque', 'sequi', 'illo', 'sed', 'ex', 'et', 'voluptatibus',\n  \\            'tempora', 'veritatis', 'ratione', 'assumenda', 'incidunt', 'nostrum',\n  \\            'placeat', 'aliquid', 'fuga', 'provident', 'praesentium', 'rem',\n  \\            'necessitatibus', 'suscipit', 'adipisci', 'quidem', 'possimus',\n  \\            'voluptas', 'debitis', 'sint', 'accusantium', 'unde', 'sapiente',\n  \\            'voluptate', 'qui', 'aspernatur', 'laudantium', 'soluta', 'amet',\n  \\            'quo', 'aliquam', 'saepe', 'culpa', 'libero', 'ipsa', 'dicta',\n  \\            'reiciendis', 'nesciunt', 'doloribus', 'autem', 'impedit', 'minima',\n  \\            'maiores', 'repudiandae', 'ipsam', 'obcaecati', 'ullam', 'enim',\n  \\            'totam', 'delectus', 'ducimus', 'quis', 'voluptates', 'dolores',\n  \\            'molestiae', 'harum', 'dolorem', 'quia', 'voluptatem', 'molestias',\n  \\            'magni', 'distinctio', 'omnis', 'illum', 'dolorum', 'voluptatum', 'ea',\n  \\            'quas', 'quam', 'corporis', 'quae', 'blanditiis', 'atque', 'deserunt',\n  \\            'laboriosam', 'earum', 'consequuntur', 'hic', 'cupiditate',\n  \\            'quibusdam', 'accusamus', 'ut', 'rerum', 'error', 'minus', 'eius',\n  \\            'ab', 'ad', 'nemo', 'fugit', 'officia', 'at', 'in', 'id', 'quos',\n  \\            'reprehenderit', 'numquam', 'iste', 'fugiat', 'sit', 'inventore',\n  \\            'beatae', 'repellendus', 'magnam', 'recusandae', 'quod', 'explicabo',\n  \\            'doloremque', 'aperiam', 'consequatur', 'asperiores', 'commodi',\n  \\            'optio', 'dolor', 'labore', 'temporibus', 'repellat', 'veniam',\n  \\            'architecto', 'est', 'esse', 'mollitia', 'nulla', 'a', 'similique',\n  \\            'eos', 'alias', 'dolore', 'tenetur', 'deleniti', 'porro', 'facere',\n  \\            'maxime', 'corrupti']\n  let ret = []\n  let sentence = 0\n  for i in range(wcount)\n    let arr = common\n    if sentence > 0\n      let arr += words\n    endif\n    let r = emmet#util#rand()\n    let word = arr[r % len(arr)]\n    if sentence == 0\n      let word = substitute(word, '^.', '\\U&', '')\n    endif\n    let sentence += 1\n    call add(ret, word)\n    if (sentence > 5 && emmet#util#rand() < 10000) || i == wcount - 1\n      if i == wcount - 1\n        let endc = \"?!...\"[emmet#util#rand() % 5]\n        call add(ret, endc)\n      else\n        let endc = \"?!,...\"[emmet#util#rand() % 6]\n        call add(ret, endc . ' ')\n      endif\n      if endc != ','\n        let sentence = 0\n      endif\n    else\n      call add(ret, ' ')\n    endif\n  endfor\n  return join(ret, '')\nendfunction\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/autoload/emmet/lorem/ja.vim",
    "content": "scriptencoding utf-8\n\nfunction! emmet#lorem#ja#expand(command)\n  let wcount = matchstr(a:command, '^\\%(lorem\\|lipsum\\)\\(\\d*\\)}$', '\\1', '')\n  let wcount = wcount > 0 ? wcount : 30\n\n  let url = \"http://www.aozora.gr.jp/cards/000081/files/470_15407.html\"\n  let content = emmet#util#cache(url)\n  if len(content) == 0\n    let content = emmet#util#getContentFromURL(url)\n    let content = matchstr(content, '<div[^>]*>\\zs.\\{-}</div>')\n    let content = substitute(content, '[　\\r]', '', 'g')\n    let content = substitute(content, '<br[^>]*>', \"\\n\", 'g')\n    let content = substitute(content, '<[^>]\\+>', '', 'g')\n    let content = join(filter(split(content, \"\\n\"), 'len(v:val)>0'), \"\\n\")\n    call emmet#util#cache(url, content)\n  endif\n  \n  let content = substitute(content, \"、\\n\", \"、\", \"g\")\n  let clines = split(content, '\\n')\n  let lines = filter(clines, 'len(substitute(v:val,\".\",\".\",\"g\"))<=wcount')\n  if len(lines) == 0\n    let lines = clines\n  endif\n  let r = emmet#util#rand()\n  return lines[r % len(lines)]\nendfunction\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/autoload/emmet/util.vim",
    "content": "\"==============================================================================\n\" region utils\n\"==============================================================================\n\" deleteContent : delete content in region\n\"   if region make from between '<foo>' and '</foo>'\n\"   --------------------\n\"   begin:<foo>\n\"   </foo>:end\n\"   --------------------\n\"   this function make the content as following\n\"   --------------------\n\"   begin::end\n\"   --------------------\nfunction! emmet#util#deleteContent(region)\n  let lines = getline(a:region[0][0], a:region[1][0])\n  call setpos('.', [0, a:region[0][0], a:region[0][1], 0])\n  silent! exe \"delete \".(a:region[1][0] - a:region[0][0])\n  call setline(line('.'), lines[0][:a:region[0][1]-2] . lines[-1][a:region[1][1]])\nendfunction\n\n\" change_content : change content in region\n\"   if region make from between '<foo>' and '</foo>'\n\"   --------------------\n\"   begin:<foo>\n\"   </foo>:end\n\"   --------------------\n\"   and content is\n\"   --------------------\n\"   foo\n\"   bar\n\"   baz\n\"   --------------------\n\"   this function make the content as following\n\"   --------------------\n\"   begin:foo\n\"   bar\n\"   baz:end\n\"   --------------------\nfunction! emmet#util#setContent(region, content)\n  let newlines = split(a:content, '\\n', 1)\n  let oldlines = getline(a:region[0][0], a:region[1][0])\n  call setpos('.', [0, a:region[0][0], a:region[0][1], 0])\n  silent! exe \"delete \".(a:region[1][0] - a:region[0][0])\n  if len(newlines) == 0\n    let tmp = ''\n    if a:region[0][1] > 1\n      let tmp = oldlines[0][:a:region[0][1]-2]\n    endif\n    if a:region[1][1] >= 1\n      let tmp .= oldlines[-1][a:region[1][1]:]\n    endif\n    call setline(line('.'), tmp)\n  elseif len(newlines) == 1\n    if a:region[0][1] > 1\n      let newlines[0] = oldlines[0][:a:region[0][1]-2] . newlines[0]\n    endif\n    if a:region[1][1] >= 1\n      let newlines[0] .= oldlines[-1][a:region[1][1]:]\n    endif\n    call setline(line('.'), newlines[0])\n  else\n    if a:region[0][1] > 1\n      let newlines[0] = oldlines[0][:a:region[0][1]-2] . newlines[0]\n    endif\n    if a:region[1][1] >= 1\n      let newlines[-1] .= oldlines[-1][a:region[1][1]:]\n    endif\n    call setline(line('.'), newlines[0])\n    call append(line('.'), newlines[1:])\n  endif\nendfunction\n\n\" select_region : select region\n\"   this function make a selection of region\nfunction! emmet#util#selectRegion(region)\n  call setpos('.', [0, a:region[1][0], a:region[1][1], 0])\n  normal! v\n  call setpos('.', [0, a:region[0][0], a:region[0][1], 0])\nendfunction\n\n\" point_in_region : check point is in the region\n\"   this function return 0 or 1\nfunction! emmet#util#pointInRegion(point, region)\n  if !emmet#util#regionIsValid(a:region) | return 0 | endif\n  if a:region[0][0] > a:point[0] | return 0 | endif\n  if a:region[1][0] < a:point[0] | return 0 | endif\n  if a:region[0][0] == a:point[0] && a:region[0][1] > a:point[1] | return 0 | endif\n  if a:region[1][0] == a:point[0] && a:region[1][1] < a:point[1] | return 0 | endif\n  return 1\nendfunction\n\n\" cursor_in_region : check cursor is in the region\n\"   this function return 0 or 1\nfunction! emmet#util#cursorInRegion(region)\n  if !emmet#util#regionIsValid(a:region) | return 0 | endif\n  let cur = emmet#util#getcurpos()[1:2]\n  return emmet#util#pointInRegion(cur, a:region)\nendfunction\n\n\" region_is_valid : check region is valid\n\"   this function return 0 or 1\nfunction! emmet#util#regionIsValid(region)\n  if a:region[0][0] == 0 || a:region[1][0] == 0 | return 0 | endif\n  return 1\nendfunction\n\n\" search_region : make region from pattern which is composing start/end\n\"   this function return array of position\nfunction! emmet#util#searchRegion(start, end)\n  let b = searchpairpos(a:start, '', a:end, 'bcnW')\n  if b == [0, 0]\n    return [searchpairpos(a:start, '', a:end, 'bnW'), searchpairpos(a:start, '\\%#', a:end, 'nW')]\n  else\n    return [b, searchpairpos(a:start, '', a:end. '', 'nW')]\n  endif\nendfunction\n\n\" get_content : get content in region\n\"   this function return string in region\nfunction! emmet#util#getContent(region)\n  if !emmet#util#regionIsValid(a:region)\n    return ''\n  endif\n  let lines = getline(a:region[0][0], a:region[1][0])\n  if a:region[0][0] == a:region[1][0]\n    let lines[0] = lines[0][a:region[0][1]-1:a:region[1][1]-1]\n  else\n    let lines[0] = lines[0][a:region[0][1]-1:]\n    let lines[-1] = lines[-1][:a:region[1][1]-1]\n  endif\n  return join(lines, \"\\n\")\nendfunction\n\n\" region_in_region : check region is in the region\n\"   this function return 0 or 1\nfunction! emmet#util#regionInRegion(outer, inner)\n  if !emmet#util#regionIsValid(a:inner) || !emmet#util#regionIsValid(a:outer)\n    return 0\n  endif\n  return emmet#util#pointInRegion(a:inner[0], a:outer) && emmet#util#pointInRegion(a:inner[1], a:outer)\nendfunction\n\n\" get_visualblock : get region of visual block\n\"   this function return region of visual block\nfunction! emmet#util#getVisualBlock()\n  return [[line(\"'<\"), col(\"'<\")], [line(\"'>\"), col(\"'>\")]]\nendfunction\n\n\"==============================================================================\n\" html utils\n\"==============================================================================\nfunction! emmet#util#getContentFromURL(url)\n  let res = system(printf(\"%s -i %s\", g:emmet_curl_command, shellescape(substitute(a:url, '#.*', '', ''))))\n  while res =~ '^HTTP/1.\\d 3' || res =~ '^HTTP/1\\.\\d 200 Connection established' || res =~ '^HTTP/1\\.\\d 100 Continue'\n    let pos = stridx(res, \"\\r\\n\\r\\n\")\n    if pos != -1\n      let res = strpart(res, pos+4)\n    else\n      let pos = stridx(res, \"\\n\\n\")\n      let res = strpart(res, pos+2)\n    endif\n  endwhile\n  let pos = stridx(res, \"\\r\\n\\r\\n\")\n  if pos != -1\n    let content = strpart(res, pos+4)\n  else\n    let pos = stridx(res, \"\\n\\n\")\n    let content = strpart(res, pos+2)\n  endif\n  let header = res[:pos-1]\n  let charset = matchstr(content, '<meta[^>]\\+content=[\"''][^;\"'']\\+;\\s*charset=\\zs[^;\"'']\\+\\ze[\"''][^>]*>')\n  if len(charset) == 0\n    let charset = matchstr(content, '<meta\\s\\+charset=[\"'']\\?\\zs[^\"'']\\+\\ze[\"'']\\?[^>]*>')\n  endif\n  if len(charset) == 0\n    let charset = matchstr(header, '\\nContent-Type:.* charset=[''\"]\\?\\zs[^''\";\\n]\\+\\ze')\n  endif\n  if len(charset) == 0\n    let s1 = len(split(content, '?'))\n    let utf8 = iconv(content, 'utf-8', &encoding)\n    let s2 = len(split(utf8, '?'))\n    return (s2 == s1 || s2 >= s1 * 2) ? utf8 : content\n  endif\n  return iconv(content, charset, &encoding)\nendfunction\n\nfunction! emmet#util#getTextFromHTML(buf)\n  let threshold_len = 100\n  let threshold_per = 0.1\n  let buf = a:buf\n\n  let buf = strpart(buf, stridx(buf, '</head>'))\n  let buf = substitute(buf, '<style[^>]*>.\\{-}</style>', '', 'g')\n  let buf = substitute(buf, '<script[^>]*>.\\{-}</script>', '', 'g')\n  let res = ''\n  let max = 0\n  let mx = '\\(<td[^>]\\{-}>\\)\\|\\(<\\/td>\\)\\|\\(<div[^>]\\{-}>\\)\\|\\(<\\/div>\\)'\n  let m = split(buf, mx)\n  for str in m\n    let c = split(str, '<[^>]*?>')\n    let str = substitute(str, '<[^>]\\{-}>', ' ', 'g')\n    let str = substitute(str, '&gt;', '>', 'g')\n    let str = substitute(str, '&lt;', '<', 'g')\n    let str = substitute(str, '&quot;', '\"', 'g')\n    let str = substitute(str, '&apos;', \"'\", 'g')\n    let str = substitute(str, '&nbsp;', ' ', 'g')\n    let str = substitute(str, '&yen;', '\\&#65509;', 'g')\n    let str = substitute(str, '&amp;', '\\&', 'g')\n    let str = substitute(str, '^\\s*\\(.*\\)\\s*$', '\\1', '')\n    let str = substitute(str, '\\s\\+', ' ', 'g')\n    let l = len(str)\n    if l > threshold_len\n      let per = (l+0.0) / len(c)\n      if max < l && per > threshold_per\n        let max = l\n        let res = str\n      endif\n    endif\n  endfor\n  let res = substitute(res, '^\\s*\\(.*\\)\\s*$', '\\1', 'g')\n  return res\nendfunction\n\nfunction! emmet#util#getImageSize(fn)\n  let fn = a:fn\n\n  if emmet#util#isImageMagickInstalled()\n    return emmet#util#imageSizeWithImageMagick(fn)\n  endif\n\n  if filereadable(fn)\n    let hex = substitute(system('xxd -p \"'.fn.'\"'), '\\n', '', 'g')\n  else\n    if fn !~ '^\\w\\+://'\n      let path = fnamemodify(expand('%'), ':p:gs?\\\\?/?')\n      if has('win32') || has('win64') | \n        let path = tolower(path)\n      endif\n      for k in keys(g:emmet_docroot)\n        let root = fnamemodify(k, ':p:gs?\\\\?/?')\n        if has('win32') || has('win64') | \n          let root = tolower(root)\n        endif\n        if stridx(path, root) == 0\n          let v = g:emmet_docroot[k]\n          let fn = (len(v) == 0 ? k : v) . fn\n          break\n        endif\n      endfor\n    endif\n    let hex = substitute(system(g:emmet_curl_command.' \"'.fn.'\" | xxd -p'), '\\n', '', 'g')\n  endif\n\n  let [width, height] = [-1, -1]\n  if hex =~ '^89504e470d0a1a0a'\n    let width = eval('0x'.hex[32:39])\n    let height = eval('0x'.hex[40:47])\n  endif\n  if hex =~ '^ffd8'\n    let pos = 4\n    while pos < len(hex)\n      let bs = hex[pos+0:pos+3]\n      let pos += 4\n      if bs == 'ffc0' || bs == 'ffc2'\n        let pos += 6\n        let height = eval('0x'.hex[pos+0:pos+1])*256 + eval('0x'.hex[pos+2:pos+3])\n        let pos += 4\n        let width = eval('0x'.hex[pos+0:pos+1])*256 + eval('0x'.hex[pos+2:pos+3])\n        break\n      elseif bs =~ 'ffd[9a]'\n        break\n      elseif bs =~ 'ff\\(e[0-9a-e]\\|fe\\|db\\|dd\\|c4\\)'\n        let pos += (eval('0x'.hex[pos+0:pos+1])*256 + eval('0x'.hex[pos+2:pos+3])) * 2\n      endif\n    endwhile\n  endif\n  if hex =~ '^47494638'\n    let width = eval('0x'.hex[14:15].hex[12:13])\n    let height = eval('0x'.hex[18:19].hex[16:17])\n  endif\n\n  return [width, height]\nendfunction\n\nfunction! emmet#util#imageSizeWithImageMagick(fn)\n  let fn = a:fn\n  let img_info = system('identify -format \"%wx%h\" \"'.a:fn.'\"')\n  let img_size = split(substitute(img_info, '\\n', '', ''), 'x')\n  if len(img_size) != 2\n    return [-1, -1]\n  endif\n  return img_size\nendfunction\n\nfunction! emmet#util#isImageMagickInstalled()\n  if !get(s:, 'emmet_use_identify', 1)\n    return 0\n  endif\n  return executable('identify')\nendfunction\n\nfunction! emmet#util#unique(arr)\n  let m = {}\n  let r = []\n  for i in a:arr\n    if !has_key(m, i)\n      let m[i] = 1\n      call add(r, i)\n    endif\n  endfor\n  return r\nendfunction\n\nlet s:seed = localtime()\nfunction! emmet#util#srand(seed)\n  let s:seed = a:seed\nendfunction\n\nfunction! emmet#util#rand()\n  let s:seed = s:seed * 214013 + 2531011\n  return (s:seed < 0 ? s:seed - 0x80000000 : s:seed) / 0x10000 % 0x8000\nendfunction\n\nfunction! emmet#util#cache(name, ...)\n  let content = get(a:000, 0, \"\")\n  let dir = expand(\"~/.emmet/cache\")\n  if !isdirectory(dir)\n    call mkdir(dir, \"p\", 0700)\n  endif\n  let file = dir . \"/\" . substitute(a:name, '\\W', '_', 'g')\n  if len(content) == 0\n    if !filereadable(file)\n      return \"\"\n    endif\n\treturn join(readfile(file), \"\\n\")\n  endif\n  call writefile(split(content, \"\\n\"), file)\nendfunction\n\nfunction! emmet#util#getcurpos()\n  let pos = getpos('.')\n  if mode(0) == 'i' && pos[2] > 0\n    let pos[2] -=1\n  endif\n  return pos\nendfunction\n\nfunction! emmet#util#closePopup()\n  return pumvisible() ? \"\\<c-e>\" : \"\"\nendfunction\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/autoload/emmet.vim",
    "content": "\"=============================================================================\n\" emmet.vim\n\" Author: Yasuhiro Matsumoto <mattn.jp@gmail.com>\n\" Last Change: 06-Dec-2013.\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nlet s:filtermx = '|\\(\\%(bem\\|html\\|haml\\|slim\\|e\\|c\\|fc\\|xsl\\|t\\|\\/[^ ]\\+\\)\\s*,\\{0,1}\\s*\\)*$'\n\nfunction! emmet#getExpandos(type, key)\n  let expandos = emmet#getResource(a:type, 'expandos', {})\n  if has_key(expandos, a:key)\n    return expandos[a:key]\n  endif\n  return a:key\nendfunction\n\nfunction! emmet#splitFilterArg(filters)\n  for f in a:filters\n    if f =~ '^/'\n      return f[1:]\n    endif\n  endfor\n  return ''\nendfunction\n\nfunction! emmet#useFilter(filters, filter)\n  for f in a:filters\n    if a:filter == '/' && f =~ '^/'\n      return 1\n    elseif f == a:filter\n      return 1\n    endif\n  endfor\n  return 0\nendfunction\n\nfunction! emmet#getIndentation(...)\n  if a:0 > 0\n    let type = a:1\n  else\n    let type = emmet#getFileType()\n  endif\n  if has_key(s:emmet_settings, type) && has_key(s:emmet_settings[type], 'indentation')\n    let indent = s:emmet_settings[type].indentation\n  elseif has_key(s:emmet_settings, 'indentation')\n    let indent = s:emmet_settings.indentation\n  else\n    let indent = (&l:expandtab || &l:tabstop != &l:shiftwidth) ? repeat(' ', &l:shiftwidth) : \"\\t\"\n  endif\n  return indent\nendfunction\n\nfunction! emmet#getBaseType(type)\n  if !has_key(s:emmet_settings, a:type)\n    return ''\n  endif\n  if !has_key(s:emmet_settings[a:type], 'extends')\n    return a:type\n  endif\n  let extends = s:emmet_settings[a:type].extends\n  if type(extends) == 1\n    let tmp = split(extends, '\\s*,\\s*')\n    let ext = tmp[0]\n  else\n    let ext = extends[0]\n  endif\n  if a:type != ext\n    return emmet#getBaseType(ext)\n  endif\n  return ''\nendfunction\n\nfunction! emmet#isExtends(type, extend)\n  if a:type == a:extend\n    return 1\n  endif\n  if !has_key(s:emmet_settings, a:type)\n    return 0\n  endif\n  if !has_key(s:emmet_settings[a:type], 'extends')\n    return 0\n  endif\n  let extends = s:emmet_settings[a:type].extends\n  if type(extends) == 1\n    let tmp = split(extends, '\\s*,\\s*')\n    unlet! extends\n    let extends = tmp\n  endif\n  for ext in extends\n    if a:extend == ext\n      return 1\n    endif\n  endfor\n  return 0\nendfunction\n\nfunction! emmet#parseIntoTree(abbr, type)\n  let abbr = a:abbr\n  let type = a:type\n  let rtype = emmet#lang#exists(type) ? type : 'html'\n  return emmet#lang#{rtype}#parseIntoTree(abbr, type)\nendfunction\n\nfunction! emmet#expandAbbrIntelligent(feedkey)\n  if !emmet#isExpandable()\n    return a:feedkey\n  endif \n  return \"\\<plug>(EmmetExpandAbbr)\"\nendfunction\n\nfunction! emmet#isExpandable()\n  let line = getline('.')\n  if col('.') < len(line)\n    let line = matchstr(line, '^\\(.*\\%'.col('.').'c\\)')\n  endif\n  let part = matchstr(line, '\\(\\S.*\\)$')\n  let type = emmet#getFileType()\n  let ftype = emmet#lang#exists(type) ? type : 'html'\n  let part = emmet#lang#{ftype}#findTokens(part)\n  return len(part) > 0\nendfunction\n\nfunction! emmet#mergeConfig(lhs, rhs)\n  if type(a:lhs) == 3 && type(a:rhs) == 3\n    let a:lhs += a:rhs\n    if len(a:lhs)\n      call remove(a:lhs, 0, len(a:lhs)-1)\n    endif\n    for rhi in a:rhs\n      call add(a:lhs, a:rhs[rhi])\n    endfor\n  elseif type(a:lhs) == 4 && type(a:rhs) == 4\n    for key in keys(a:rhs)\n      if type(a:rhs[key]) == 3\n        if !has_key(a:lhs, key)\n          let a:lhs[key] = []\n        endif\n        let a:lhs[key] += a:rhs[key]\n      elseif type(a:rhs[key]) == 4\n        if has_key(a:lhs, key)\n          call emmet#mergeConfig(a:lhs[key], a:rhs[key])\n        else\n          let a:lhs[key] = a:rhs[key]\n        endif\n      else\n        let a:lhs[key] = a:rhs[key]\n      endif\n    endfor\n  endif\nendfunction\n\nfunction! emmet#newNode()\n  return { 'name': '', 'attr': {}, 'child': [], 'snippet': '', 'basevalue': 0, 'basedirect': 1, 'multiplier': 1, 'parent': {}, 'value': '', 'pos': 0, 'important': 0, 'attrs_order': ['id', 'class'] }\nendfunction\n\nfunction! s:itemno(itemno, current)\n  let current = a:current\n  if current.basedirect > 0\n    if current.basevalue == 0\n      return a:itemno\n    else\n      return current.basevalue - 1 + a:itemno\n    endif\n  else\n    if current.basevalue == 0\n      return current.multiplier - 1 - a:itemno\n    else\n      return current.multiplier + current.basevalue - 2 - a:itemno\n    endif\n  endif\nendfunction\n\nfunction! emmet#toString(...)\n  let current = a:1\n  if a:0 > 1\n    let type = a:2\n  else\n    let type = &ft\n  endif\n  if len(type) == 0 | let type = 'html' | endif\n  if a:0 > 2\n    let inline = a:3\n  else\n    let inline = 0\n  endif\n  if a:0 > 3\n    if type(a:4) == 1\n      let filters = split(a:4, '\\s*,\\s*')\n    else\n      let filters = a:4\n    endif\n  else\n    let filters = ['html']\n  endif\n  if a:0 > 4\n    let group_itemno = a:5\n  else\n    let group_itemno = 0\n  endif\n  if a:0 > 5\n    let indent = a:6\n  else\n    let indent = ''\n  endif\n\n  let dollar_expr = emmet#getResource(type, 'dollar_expr', 1)\n  let itemno = 0\n  let str = ''\n  let rtype = emmet#lang#exists(type) ? type : 'html'\n  while itemno < current.multiplier\n    if len(current.name)\n      if current.multiplier == 1\n        let inner = emmet#lang#{rtype}#toString(s:emmet_settings, current, type, inline, filters, s:itemno(group_itemno, current), indent)\n      else\n        let inner = emmet#lang#{rtype}#toString(s:emmet_settings, current, type, inline, filters, s:itemno(itemno, current), indent)\n      endif\n      if current.multiplier > 1\n        let inner = substitute(inner, '\\$#', '$line'.(itemno+1).'$', 'g')\n      endif\n      let str .= inner\n    else\n      let snippet = current.snippet\n      if len(current.snippet) == 0\n        let snippets = emmet#getResource(type, 'snippets', {})\n        if !empty(snippets) && has_key(snippets, 'emmet_snippet')\n          let snippet = snippets['emmet_snippet']\n        endif\n      endif\n      if len(snippet) > 0\n        let tmp = snippet\n        let tmp = substitute(tmp, '\\${emmet_name}', current.name, 'g')\n        let snippet_node = emmet#newNode()\n        let snippet_node.value = '{'.tmp.'}'\n        let snippet_node.important = current.important\n        let str = emmet#lang#{rtype}#toString(s:emmet_settings, snippet_node, type, inline, filters, s:itemno(group_itemno, current), indent)\n      else\n        if len(current.name)\n          let str .= current.name\n        endif\n        if len(current.value)\n          let text = current.value[1:-2]\n          if dollar_expr\n            \" TODO: regexp engine specified\n            if exists('&regexpengine')\n              let text = substitute(text, '\\%#=1\\%(\\\\\\)\\@\\<!\\(\\$\\+\\)\\([^{#]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", max([itemno, group_itemno])+1).submatch(2)', 'g')\n            else\n              let text = substitute(text, '\\%(\\\\\\)\\@\\<!\\(\\$\\+\\)\\([^{#]\\|$\\)', '\\=printf(\"%0\".len(submatch(1)).\"d\", max([itemno, group_itemno])+1).submatch(2)', 'g')\n            endif\n            let text = substitute(text, '\\${nr}', \"\\n\", 'g')\n            let text = substitute(text, '\\\\\\$', '$', 'g')\n          endif\n          let str .= text\n        endif\n      endif\n      let inner = ''\n      if len(current.child)\n        for n in current.child\n          let inner .= emmet#toString(n, type, inline, filters, s:itemno(group_itemno, n), indent)\n        endfor\n      else\n        let inner = current.value[1:-2]\n      endif\n      let inner = substitute(inner, \"\\n\", \"\\n\" . indent, 'g')\n      let str = substitute(str, '\\${child}', inner, '')\n    endif\n    let itemno = itemno + 1\n  endwhile\n  return str\nendfunction\n\nfunction! emmet#getSettings()\n  return s:emmet_settings\nendfunction\n\nfunction! emmet#getFilters(type)\n  let filterstr = emmet#getResource(a:type, 'filters', '')\n  return split(filterstr, '\\s*,\\s*')\nendfunction\n\nfunction! emmet#getResource(type, name, default)\n  if exists('b:emmet_' . a:name)\n    return get(b:, 'emmet_' . a:name)\n  endif\n  if !has_key(s:emmet_settings, a:type)\n    return a:default\n  endif\n  let ret = a:default\n\n  if has_key(s:emmet_settings[a:type], 'extends')\n    let extends = s:emmet_settings[a:type].extends\n    if type(extends) == 1\n      let tmp = split(extends, '\\s*,\\s*')\n      unlet! extends\n      let extends = tmp\n    endif\n    for ext in extends\n      if has_key(s:emmet_settings, ext) && has_key(s:emmet_settings[ext], a:name)\n        let V = s:emmet_settings[ext][a:name]\n        if type(ret) == 3 || type(ret) == 4\n          call emmet#mergeConfig(ret, s:emmet_settings[ext][a:name])\n        else\n          let ret = s:emmet_settings[ext][a:name]\n        endif\n      endif\n    endfor\n  endif\n\n  if has_key(s:emmet_settings[a:type], a:name)\n    let v = s:emmet_settings[a:type][a:name]\n    if type(ret) == 3 || type(ret) == 4\n      call emmet#mergeConfig(ret, s:emmet_settings[a:type][a:name])\n    else\n      let ret = s:emmet_settings[a:type][a:name]\n    endif\n  endif\n\n  return ret\nendfunction\n\nfunction! emmet#getFileType(...)\n  let flg = get(a:000, 0, 0)\n  let type = ''\n  for part in split(&ft, '\\.')\n    if emmet#lang#exists(part)\n      let type = part\n      break\n    endif\n    let base = emmet#getBaseType(part)\n    if base != ''\n      if flg\n        let type = &ft\n      else\n        let type = base\n      endif\n      unlet base\n      break\n    endif\n  endfor\n  if type == 'html'\n    let pos = emmet#util#getcurpos()\n    let type = synIDattr(synID(pos[1], pos[2], 1), \"name\")\n    if type =~ '^css\\w'\n      let type = 'css'\n    endif\n    if type =~ '^html\\w'\n      let type = 'html'\n    endif\n    if type =~ '^javaScript'\n      let type = 'javascript'\n    endif\n    if len(type) == 0 && type =~ '^xml'\n      let type = 'xml'\n    endif\n  endif\n  if len(type) == 0 | let type = 'html' | endif\n  return type\nendfunction\n\nfunction! emmet#getDollarExprs(expand)\n  let expand = a:expand\n  let dollar_list = []\n  let dollar_reg = '\\%(\\\\\\)\\@<!\\${\\(\\([^{}]\\|\\%(\\\\\\)\\@\\<=[{}]\\)\\{}\\)}'\n  while 1\n    let matcharr = matchlist(expand, dollar_reg)\n    if len(matcharr) > 0\n      let key = get(matcharr, 1)\n      if key !~ '^\\d\\+:'\n        let key = substitute(key, '\\\\{', '{', 'g')\n        let key = substitute(key, '\\\\}', '}', 'g')\n        let value = emmet#getDollarValueByKey(key)\n        if type(value) == type('')\n          let expr = get(matcharr, 0)\n          call add(dollar_list, {'expr': expr, 'value': value})\n        endif\n      endif\n    else\n      break\n    endif\n    let expand = substitute(expand, dollar_reg, '', '')\n  endwhile\n  return dollar_list\nendfunction\n\nfunction! emmet#getDollarValueByKey(key)\n  let ret = 0\n  let key = a:key\n  let ftsetting = get(s:emmet_settings, emmet#getFileType())\n  if type(ftsetting) == 4 && has_key(ftsetting, key)\n    let V = get(ftsetting, key)\n    if type(V) == 1 | return V | endif\n  endif\n  if type(ret) != 1 && has_key(s:emmet_settings, key)\n    let V = get(s:emmet_settings, key)\n    if type(V) == 1 | return V | endif\n  endif\n  if has_key(s:emmet_settings, 'custom_expands') && type(s:emmet_settings['custom_expands']) == 4\n    for k in keys(s:emmet_settings['custom_expands'])\n      if key =~ k\n        let V = get(s:emmet_settings['custom_expands'], k)\n        if type(V) == 1 | return V | endif\n        if type(V) == 2 | return V(key) | endif\n      endif\n    endfor\n  endif\n  return ret\nendfunction\n\nfunction! emmet#reExpandDollarExpr(expand, times)\n  let expand = a:expand\n  let dollar_exprs = emmet#getDollarExprs(expand)\n  if len(dollar_exprs) > 0\n    if a:times < 9\n      for n in range(len(dollar_exprs))\n        let pair = get(dollar_exprs, n)\n        let pat = get(pair, 'expr')\n        let sub = get(pair, 'value')\n        let expand = substitute(expand, pat, sub, '')\n      endfor\n      return emmet#reExpandDollarExpr(expand, a:times + 1)\n    endif\n  endif\n  return expand\nendfunction\n\nfunction! emmet#expandDollarExpr(expand)\n  return emmet#reExpandDollarExpr(a:expand, 0)\nendfunction\n\nfunction! emmet#expandCursorExpr(expand, mode)\n  let expand = a:expand\n  let type = emmet#getFileType()\n  if expand !~ '\\${cursor}'\n    if a:mode == 2\n      let expand = '${cursor}' . expand\n    else\n      let expand .= '${cursor}'\n    endif\n  endif\n  let expand = substitute(expand, '\\${cursor}', '$cursor$', '')\n  let expand = substitute(expand, '\\${cursor}', '', 'g')\n  return expand\nendfunction\n\nfunction! emmet#unescapeDollarExpr(expand)\n  return substitute(a:expand, '\\\\\\$', '$', 'g')\nendfunction\n\nfunction! emmet#expandAbbr(mode, abbr) range\n  let type = emmet#getFileType()\n  let rtype = emmet#getFileType(1)\n  let indent = emmet#getIndentation(type)\n  let expand = ''\n  let line = ''\n  let part = ''\n  let rest = ''\n\n  let filters = emmet#getFilters(type)\n  if len(filters) == 0\n    let filters = ['html']\n  endif\n\n  if a:mode == 2\n    let leader = substitute(input('Tag: ', ''), '^\\s*\\(.*\\)\\s*$', '\\1', 'g')\n    if len(leader) == 0\n      return ''\n    endif\n    if leader =~ s:filtermx\n      let filters = map(split(matchstr(leader, s:filtermx)[1:], '\\s*[^\\\\]\\zs,\\s*'), 'substitute(v:val, \"\\\\\\\\\\\\\\\\zs.\\\\\\\\ze\", \"&\", \"g\")')\n      let leader = substitute(leader, s:filtermx, '', '')\n    endif\n    if leader =~ '\\*'\n      let query = substitute(leader, '*', '*' . (a:lastline - a:firstline + 1), '')\n      if query !~ '}\\s*$'\n        let query .= '>{$#}'\n      endif\n      if emmet#useFilter(filters, '/')\n        let spl = emmet#splitFilterArg(filters)\n        let fline = getline(a:firstline)\n        let query = substitute(query, '>\\{0,1}{\\$#}\\s*$', '{\\\\$column\\\\$}*' . len(split(fline, spl)), '')\n      endif\n      let items = emmet#parseIntoTree(query, type).child\n      for item in items\n        let expand .= emmet#toString(item, rtype, 0, filters, 0, indent)\n      endfor\n      if emmet#useFilter(filters, 'e')\n        let expand = substitute(expand, '&', '\\&amp;', 'g')\n        let expand = substitute(expand, '<', '\\&lt;', 'g')\n        let expand = substitute(expand, '>', '\\&gt;', 'g')\n      endif\n      let line = getline(a:firstline)\n      let part = substitute(line, '^\\s*', '', '')\n      for n in range(a:firstline, a:lastline)\n        let lline = getline(n)\n        let lpart = substitute(lline, '^\\s\\+', '', '')\n        if emmet#useFilter(filters, 't')\n          let lpart = substitute(lpart, '^[0-9.-]\\+\\s\\+', '', '')\n          let lpart = substitute(lpart, '\\s\\+$', '', '')\n        endif\n        if emmet#useFilter(filters, '/')\n          for column in split(lpart, spl)\n            let expand = substitute(expand, '\\$column\\$', '\\=column', '')\n          endfor\n        else\n          let expand = substitute(expand, '\\$line'.(n-a:firstline+1).'\\$', '\\=lpart', 'g')\n        endif\n      endfor\n      let expand = substitute(expand, '\\$line\\d*\\$', '', 'g')\n      let expand = substitute(expand, '\\$column\\$', '', 'g')\n      let content = join(getline(a:firstline, a:lastline), \"\\n\")\n      if stridx(expand, '$#') < len(expand)-2\n        let expand = substitute(expand, '^\\(.*\\)\\$#\\s*$', '\\1', '')\n      endif\n      let expand = substitute(expand, '\\$#', '\\=content', 'g')\n    else\n      let str = ''\n      if visualmode() ==# 'V'\n        let line = getline(a:firstline)\n        let lspaces = matchstr(line, '^\\s*', '', '')\n        let part = substitute(line, '^\\s*', '', '')\n        for n in range(a:firstline, a:lastline)\n          if len(leader) > 0\n            let line = getline(a:firstline)\n            let spaces = matchstr(line, '^\\s*', '', '')\n            if len(spaces) >= len(lspaces)\n              let str .= indent . getline(n)[len(lspaces):] . \"\\n\"\n            else\n              let str .= getline(n) . \"\\n\"\n            endif\n          else\n            let lpart = substitute(getline(n), '^\\s*', '', '')\n            let str .= lpart . \"\\n\"\n          endif\n        endfor\n        let leader .= (str =~ \"\\n\" ? \">{\\n\" : \"{\") . str . \"}\"\n        let items = emmet#parseIntoTree(leader, type).child\n      else\n        let save_regcont = @\"\n        let save_regtype = getregtype('\"')\n        silent! normal! gvygv\n        let str = @\"\n        call setreg('\"', save_regcont, save_regtype)\n        let items = emmet#parseIntoTree(leader . \"{\".str.\"}\", type).child\n      endif\n      for item in items\n        let expand .= emmet#toString(item, rtype, 0, filters, 0, '')\n      endfor\n      if emmet#useFilter(filters, 'e')\n        let expand = substitute(expand, '&', '\\&amp;', 'g')\n        let expand = substitute(expand, '<', '\\&lt;', 'g')\n        let expand = substitute(expand, '>', '\\&gt;', 'g')\n      endif\n    endif\n  elseif a:mode == 4\n    let line = getline('.')\n    let spaces = matchstr(line, '^\\s*')\n    if line !~ '^\\s*$'\n      put =spaces.a:abbr\n    else\n      call setline('.', spaces.a:abbr)\n    endif\n    normal! $\n    call emmet#expandAbbr(0, \"\")\n    return ''\n  else\n    let line = getline('.')\n    if col('.') < len(line)\n      let line = matchstr(line, '^\\(.*\\%'.col('.').'c\\)')\n    endif\n    if a:mode == 1\n      let part = matchstr(line, '\\([a-zA-Z0-9:_\\-\\@|]\\+\\)$')\n    else\n      let part = matchstr(line, '\\(\\S.*\\)$')\n      let ftype = emmet#lang#exists(type) ? type : 'html'\n      let part = emmet#lang#{ftype}#findTokens(part)\n      let line = line[0: stridx(line, part) + len(part) - 1]\n    endif\n    if col('.') == col('$')\n      let rest = ''\n    else\n      let rest = getline('.')[len(line):]\n    endif\n    let str = part\n    if str =~ s:filtermx\n      let filters = split(matchstr(str, s:filtermx)[1:], '\\s*,\\s*')\n      let str = substitute(str, s:filtermx, '', '')\n    endif\n    let items = emmet#parseIntoTree(str, rtype).child\n    for item in items\n      let expand .= emmet#toString(item, rtype, 0, filters, 0, indent)\n    endfor\n    if emmet#useFilter(filters, 'e')\n      let expand = substitute(expand, '&', '\\&amp;', 'g')\n      let expand = substitute(expand, '<', '\\&lt;', 'g')\n      let expand = substitute(expand, '>', '\\&gt;', 'g')\n    endif\n    let expand = substitute(expand, '\\$line\\([0-9]\\+\\)\\$', '\\=submatch(1)', 'g')\n  endif\n  let expand = emmet#expandDollarExpr(expand)\n  let expand = emmet#expandCursorExpr(expand, a:mode)\n  if len(expand)\n    if has_key(s:emmet_settings, 'timezone') && len(s:emmet_settings.timezone)\n      let expand = substitute(expand, '${datetime}', strftime(\"%Y-%m-%dT%H:%M:%S\") . s:emmet_settings.timezone, 'g')\n    else\n      \" TODO: on windows, %z/%Z is 'Tokyo(Standard)'\n      let expand = substitute(expand, '${datetime}', strftime(\"%Y-%m-%dT%H:%M:%S %z\"), 'g')\n    endif\n    let expand = emmet#unescapeDollarExpr(expand)\n    if a:mode == 2 && visualmode() ==# 'v'\n      if a:firstline == a:lastline\n        let expand = substitute(expand, '\\n\\s*', '', 'g')\n      else\n        let expand = substitute(expand, '\\n$', '', 'g')\n      endif\n      silent! normal! gv\n      let col = col(\"'<\")\n      silent! normal! c\n      let line = getline('.')\n      let lhs = matchstr(line, '.*\\%<'.col.'c.')\n      let rhs = matchstr(line, '\\%>'.(col-1).'c.*')\n      let expand = lhs.expand.rhs\n      let lines = split(expand, '\\n')\n      call setline(line('.'), lines[0])\n      if len(lines) > 1\n        call append(line('.'), lines[1:])\n      endif\n    else\n      if line[:-len(part)-1] =~ '^\\s\\+$'\n        let indent = line[:-len(part)-1]\n      else\n        let indent = ''\n      endif\n      let expand = substitute(expand, '\\n\\s*$', '', 'g')\n      let expand = line[:-len(part)-1] . substitute(expand, \"\\n\", \"\\n\" . indent, 'g') . rest\n      let lines = split(expand, '\\n')\n      if a:mode == 2\n        silent! exe \"normal! gvc\"\n      endif\n      call setline(line('.'), lines[0])\n      if len(lines) > 1\n        call append(line('.'), lines[1:])\n      endif\n    endif\n  endif\n  if search('\\$cursor\\$', 'e')\n    let oldselection = &selection\n    let &selection = 'inclusive'\n    if foldclosed(line('.')) != -1\n      silent! foldopen\n    endif\n    silent! exe \"normal! v7h\\\"_s\"\n    if col('.') == col('$')\n      call feedkeys('', 'n')\n    endif\n    let &selection = oldselection\n  endif\n  if g:emmet_debug > 1\n    call getchar()\n  endif\n  return ''\nendfunction\n\nfunction! emmet#moveNextPrevItem(flag)\n  let type = emmet#getFileType()\n  let rtype = emmet#lang#exists(type) ? type : 'html'\n  return emmet#lang#{rtype}#moveNextPrevItem(a:flag)\nendfunction\n\nfunction! emmet#moveNextPrev(flag)\n  let type = emmet#getFileType()\n  let rtype = emmet#lang#exists(type) ? type : 'html'\n  return emmet#lang#{rtype}#moveNextPrev(a:flag)\nendfunction\n\nfunction! emmet#imageSize()\n  let orgpos = emmet#util#getcurpos()\n  let type = emmet#getFileType()\n  let rtype = emmet#lang#exists(type) ? type : 'html'\n  call emmet#lang#{rtype}#imageSize()\n  silent! call setpos('.', orgpos)\n  return ''\nendfunction\n\nfunction! emmet#encodeImage()\n  let type = emmet#getFileType()\n  let rtype = emmet#lang#exists(type) ? type : 'html'\n  return emmet#lang#{rtype}#encodeImage()\nendfunction\n\nfunction! emmet#toggleComment()\n  let type = emmet#getFileType()\n  let rtype = emmet#lang#exists(type) ? type : 'html'\n  call emmet#lang#{rtype}#toggleComment()\n  return ''\nendfunction\n\nfunction! emmet#balanceTag(flag) range\n  let type = emmet#getFileType()\n  let rtype = emmet#lang#exists(type) ? type : 'html'\n  return emmet#lang#{rtype}#balanceTag(a:flag)\nendfunction\n\nfunction! emmet#splitJoinTag()\n  let type = emmet#getFileType()\n  let rtype = emmet#lang#exists(type) ? type : 'html'\n  return emmet#lang#{rtype}#splitJoinTag()\nendfunction\n\nfunction! emmet#mergeLines() range\n  let lines = join(map(getline(a:firstline, a:lastline), 'matchstr(v:val, \"^\\\\s*\\\\zs.*\\\\ze\\\\s*$\")'), '')\n  let indent = substitute(getline('.'), '^\\(\\s*\\).*', '\\1', '')\n  silent! exe \"normal! gvc\"\n  call setline('.', indent . lines)\nendfunction\n\nfunction! emmet#removeTag()\n  let type = emmet#getFileType()\n  let rtype = emmet#lang#exists(type) ? type : 'html'\n  call emmet#lang#{rtype}#removeTag()\n  return ''\nendfunction\n\nfunction! emmet#anchorizeURL(flag)\n  let mx = 'https\\=:\\/\\/[-!#$%&*+,./:;=?@0-9a-zA-Z_~]\\+'\n  let pos1 = searchpos(mx, 'bcnW')\n  let url = matchstr(getline(pos1[0])[pos1[1]-1:], mx)\n  let block = [pos1, [pos1[0], pos1[1] + len(url) - 1]]\n  if !emmet#util#cursorInRegion(block)\n    return ''\n  endif\n\n  let mx = '.*<title[^>]*>\\s*\\zs\\([^<]\\+\\)\\ze\\s*<\\/title[^>]*>.*'\n  let content = emmet#util#getContentFromURL(url)\n  let content = substitute(content, '\\r', '', 'g')\n  let content = substitute(content, '[ \\n]\\+', ' ', 'g')\n  let content = substitute(content, '<!--.\\{-}-->', '', 'g')\n  let title = matchstr(content, mx)\n\n  let type = emmet#getFileType()\n  let rtype = emmet#lang#exists(type) ? type : 'html'\n  if a:flag == 0\n    let a = emmet#lang#html#parseTag('<a>')\n    let a.attr.href = url\n    let a.value = '{' . title . '}'\n    let expand = emmet#toString(a, rtype, 0, [])\n    let expand = substitute(expand, '\\${cursor}', '', 'g')\n  else\n    let body = emmet#util#getTextFromHTML(content)\n    let body = '{' . substitute(body, '^\\(.\\{0,100}\\).*', '\\1', '') . '...}'\n\n    let blockquote = emmet#lang#html#parseTag('<blockquote class=\"quote\">')\n    let a = emmet#lang#html#parseTag('<a>')\n    let a.attr.href = url\n    let a.value = '{' . title . '}'\n    call add(blockquote.child, a)\n    call add(blockquote.child, emmet#lang#html#parseTag('<br/>'))\n    let p = emmet#lang#html#parseTag('<p>')\n    let p.value = body\n    call add(blockquote.child, p)\n    let cite = emmet#lang#html#parseTag('<cite>')\n    let cite.value = '{' . url . '}'\n    call add(blockquote.child, cite)\n    let expand = emmet#toString(blockquote, rtype, 0, [])\n    let expand = substitute(expand, '\\${cursor}', '', 'g')\n  endif\n  let indent = substitute(getline('.'), '^\\(\\s*\\).*', '\\1', '')\n  let expand = substitute(expand, \"\\n\", \"\\n\" . indent, 'g')\n  call emmet#util#setContent(block, expand)\n  return ''\nendfunction\n\nfunction! emmet#codePretty() range\n  let type = input('FileType: ', &ft, 'filetype')\n  if len(type) == 0\n    return\n  endif\n  let block = emmet#util#getVisualBlock()\n  let content = emmet#util#getContent(block)\n  silent! 1new\n  let &l:filetype = type\n  call setline(1, split(content, \"\\n\"))\n  let old_lazyredraw = &lazyredraw\n  set lazyredraw\n  silent! TOhtml\n  let &lazyredraw = old_lazyredraw\n  let content = join(getline(1, '$'), \"\\n\")\n  silent! bw!\n  silent! bw!\n  let content = matchstr(content, '<body[^>]*>[\\s\\n]*\\zs.*\\ze</body>')\n  call emmet#util#setContent(block, content)\nendfunction\n\nfunction! emmet#expandWord(abbr, type, orig)\n  let str = a:abbr\n  let type = a:type\n  let indent = emmet#getIndentation(type)\n\n  if len(type) == 0 | let type = 'html' | endif\n  if str =~ s:filtermx\n    let filters = split(matchstr(str, s:filtermx)[1:], '\\s*,\\s*')\n    let str = substitute(str, s:filtermx, '', '')\n  else\n    let filters = emmet#getFilters(a:type)\n    if len(filters) == 0\n      let filters = ['html']\n    endif\n  endif\n  let str = substitute(str, '|', '${cursor}', 'g')\n  let items = emmet#parseIntoTree(str, a:type).child\n  let expand = ''\n  for item in items\n    let expand .= emmet#toString(item, a:type, 0, filters, 0, indent)\n  endfor\n  if emmet#useFilter(filters, 'e')\n    let expand = substitute(expand, '&', '\\&amp;', 'g')\n    let expand = substitute(expand, '<', '\\&lt;', 'g')\n    let expand = substitute(expand, '>', '\\&gt;', 'g')\n  endif\n  if a:orig == 0\n    let expand = emmet#expandDollarExpr(expand)\n    let expand = substitute(expand, '\\${cursor}', '', 'g')\n  endif\n  return expand\nendfunction\n\nfunction! emmet#getSnippets(type)\n  let type = a:type\n  if len(type) == 0 || !has_key(s:emmet_settings, type)\n    let type = 'html'\n  endif\n  return emmet#getResource(type, 'snippets', {})\nendfunction\n\nfunction! emmet#completeTag(findstart, base)\n  if a:findstart\n    let line = getline('.')\n    let start = col('.') - 1\n    while start > 0 && line[start - 1] =~ '[a-zA-Z0-9:_\\@\\-]'\n      let start -= 1\n    endwhile\n    return start\n  else\n    let type = emmet#getFileType()\n    let res = []\n\n    let snippets = emmet#getResource(type, 'snippets', {})\n    for item in keys(snippets)\n      if stridx(item, a:base) != -1\n        call add(res, substitute(item, '\\${cursor}\\||', '', 'g'))\n      endif\n    endfor\n    let aliases = emmet#getResource(type, 'aliases', {})\n    for item in values(aliases)\n      if stridx(item, a:base) != -1\n        call add(res, substitute(item, '\\${cursor}\\||', '', 'g'))\n      endif\n    endfor\n    return res\n  endif\nendfunction\n\nunlet! s:emmet_settings\nlet s:emmet_settings = {\n\\    'lang': \"en\",\n\\    'charset': \"UTF-8\",\n\\    'custom_expands' : {\n\\      '^\\%(lorem\\|lipsum\\)\\(\\d*\\)$' : function('emmet#lorem#en#expand'),\n\\    },\n\\    'css': {\n\\        'snippets': {\n\\            '@i': '@import url(|);',\n\\            '@m': \"@media print {\\n\\t|\\n}\",\n\\            '@f': \"@font-face {\\n\\tfont-family:|;\\n\\tsrc:url(|);\\n}\",\n\\            '!': '!important',\n\\            'pos': 'position:|;',\n\\            'pos:s': 'position:static;',\n\\            'pos:a': 'position:absolute;',\n\\            'pos:r': 'position:relative;',\n\\            'pos:f': 'position:fixed;',\n\\            't': 'top:|;',\n\\            't:a': 'top:auto;',\n\\            'r': 'right:|;',\n\\            'r:a': 'right:auto;',\n\\            'b': 'bottom:|;',\n\\            'b:a': 'bottom:auto;',\n\\            'l': 'left:|;',\n\\            'l:a': 'left:auto;',\n\\            'z': 'z-index:|;',\n\\            'z:a': 'z-index:auto;',\n\\            'fl': 'float:|;',\n\\            'fl:n': 'float:none;',\n\\            'fl:l': 'float:left;',\n\\            'fl:r': 'float:right;',\n\\            'cl': 'clear:|;',\n\\            'cl:n': 'clear:none;',\n\\            'cl:l': 'clear:left;',\n\\            'cl:r': 'clear:right;',\n\\            'cl:b': 'clear:both;',\n\\            'd': 'display:|;',\n\\            'd:n': 'display:none;',\n\\            'd:b': 'display:block;',\n\\            'd:i': 'display:inline;',\n\\            'd:ib': 'display:inline-block;',\n\\            'd:li': 'display:list-item;',\n\\            'd:ri': 'display:run-in;',\n\\            'd:cp': 'display:compact;',\n\\            'd:tb': 'display:table;',\n\\            'd:itb': 'display:inline-table;',\n\\            'd:tbcp': 'display:table-caption;',\n\\            'd:tbcl': 'display:table-column;',\n\\            'd:tbclg': 'display:table-column-group;',\n\\            'd:tbhg': 'display:table-header-group;',\n\\            'd:tbfg': 'display:table-footer-group;',\n\\            'd:tbr': 'display:table-row;',\n\\            'd:tbrg': 'display:table-row-group;',\n\\            'd:tbc': 'display:table-cell;',\n\\            'd:rb': 'display:ruby;',\n\\            'd:rbb': 'display:ruby-base;',\n\\            'd:rbbg': 'display:ruby-base-group;',\n\\            'd:rbt': 'display:ruby-text;',\n\\            'd:rbtg': 'display:ruby-text-group;',\n\\            'v': 'visibility:|;',\n\\            'v:v': 'visibility:visible;',\n\\            'v:h': 'visibility:hidden;',\n\\            'v:c': 'visibility:collapse;',\n\\            'ov': 'overflow:|;',\n\\            'ov:v': 'overflow:visible;',\n\\            'ov:h': 'overflow:hidden;',\n\\            'ov:s': 'overflow:scroll;',\n\\            'ov:a': 'overflow:auto;',\n\\            'ovx': 'overflow-x:|;',\n\\            'ovx:v': 'overflow-x:visible;',\n\\            'ovx:h': 'overflow-x:hidden;',\n\\            'ovx:s': 'overflow-x:scroll;',\n\\            'ovx:a': 'overflow-x:auto;',\n\\            'ovy': 'overflow-y:|;',\n\\            'ovy:v': 'overflow-y:visible;',\n\\            'ovy:h': 'overflow-y:hidden;',\n\\            'ovy:s': 'overflow-y:scroll;',\n\\            'ovy:a': 'overflow-y:auto;',\n\\            'ovs': 'overflow-style:|;',\n\\            'ovs:a': 'overflow-style:auto;',\n\\            'ovs:s': 'overflow-style:scrollbar;',\n\\            'ovs:p': 'overflow-style:panner;',\n\\            'ovs:m': 'overflow-style:move;',\n\\            'ovs:mq': 'overflow-style:marquee;',\n\\            'zoo': 'zoom:1;',\n\\            'cp': 'clip:|;',\n\\            'cp:a': 'clip:auto;',\n\\            'cp:r': 'clip:rect(|);',\n\\            'bxz': 'box-sizing:|;',\n\\            'bxz:cb': 'box-sizing:content-box;',\n\\            'bxz:bb': 'box-sizing:border-box;',\n\\            'bxsh': 'box-shadow:|;',\n\\            'bxsh:n': 'box-shadow:none;',\n\\            'bxsh:w': '-webkit-box-shadow:0 0 0 #000;',\n\\            'bxsh:m': '-moz-box-shadow:0 0 0 0 #000;',\n\\            'm': 'margin:|;',\n\\            'm:a': 'margin:auto;',\n\\            'm:0': 'margin:0;',\n\\            'm:2': 'margin:0 0;',\n\\            'm:3': 'margin:0 0 0;',\n\\            'm:4': 'margin:0 0 0 0;',\n\\            'mt': 'margin-top:|;',\n\\            'mt:a': 'margin-top:auto;',\n\\            'mr': 'margin-right:|;',\n\\            'mr:a': 'margin-right:auto;',\n\\            'mb': 'margin-bottom:|;',\n\\            'mb:a': 'margin-bottom:auto;',\n\\            'ml': 'margin-left:|;',\n\\            'ml:a': 'margin-left:auto;',\n\\            'p': 'padding:|;',\n\\            'p:0': 'padding:0;',\n\\            'p:2': 'padding:0 0;',\n\\            'p:3': 'padding:0 0 0;',\n\\            'p:4': 'padding:0 0 0 0;',\n\\            'pt': 'padding-top:|;',\n\\            'pr': 'padding-right:|;',\n\\            'pb': 'padding-bottom:|;',\n\\            'pl': 'padding-left:|;',\n\\            'w': 'width:|;',\n\\            'w:a': 'width:auto;',\n\\            'h': 'height:|;',\n\\            'h:a': 'height:auto;',\n\\            'maw': 'max-width:|;',\n\\            'maw:n': 'max-width:none;',\n\\            'mah': 'max-height:|;',\n\\            'mah:n': 'max-height:none;',\n\\            'miw': 'min-width:|;',\n\\            'mih': 'min-height:|;',\n\\            'o': 'outline:|;',\n\\            'o:n': 'outline:none;',\n\\            'oo': 'outline-offset:|;',\n\\            'ow': 'outline-width:|;',\n\\            'os': 'outline-style:|;',\n\\            'oc': 'outline-color:#000;',\n\\            'oc:i': 'outline-color:invert;',\n\\            'bd': 'border:|;',\n\\            'bd+': 'border:1px solid #000;',\n\\            'bd:n': 'border:none;',\n\\            'bdbk': 'border-break:|;',\n\\            'bdbk:c': 'border-break:close;',\n\\            'bdcl': 'border-collapse:|;',\n\\            'bdcl:c': 'border-collapse:collapse;',\n\\            'bdcl:s': 'border-collapse:separate;',\n\\            'bdc': 'border-color:#000;',\n\\            'bdi': 'border-image:url(|);',\n\\            'bdi:n': 'border-image:none;',\n\\            'bdi:w': '-webkit-border-image:url(|) 0 0 0 0 stretch stretch;',\n\\            'bdi:m': '-moz-border-image:url(|) 0 0 0 0 stretch stretch;',\n\\            'bdti': 'border-top-image:url(|);',\n\\            'bdti:n': 'border-top-image:none;',\n\\            'bdri': 'border-right-image:url(|);',\n\\            'bdri:n': 'border-right-image:none;',\n\\            'bdbi': 'border-bottom-image:url(|);',\n\\            'bdbi:n': 'border-bottom-image:none;',\n\\            'bdli': 'border-left-image:url(|);',\n\\            'bdli:n': 'border-left-image:none;',\n\\            'bdci': 'border-corner-image:url(|);',\n\\            'bdci:n': 'border-corner-image:none;',\n\\            'bdci:c': 'border-corner-image:continue;',\n\\            'bdtli': 'border-top-left-image:url(|);',\n\\            'bdtli:n': 'border-top-left-image:none;',\n\\            'bdtli:c': 'border-top-left-image:continue;',\n\\            'bdtri': 'border-top-right-image:url(|);',\n\\            'bdtri:n': 'border-top-right-image:none;',\n\\            'bdtri:c': 'border-top-right-image:continue;',\n\\            'bdbri': 'border-bottom-right-image:url(|);',\n\\            'bdbri:n': 'border-bottom-right-image:none;',\n\\            'bdbri:c': 'border-bottom-right-image:continue;',\n\\            'bdbli': 'border-bottom-left-image:url(|);',\n\\            'bdbli:n': 'border-bottom-left-image:none;',\n\\            'bdbli:c': 'border-bottom-left-image:continue;',\n\\            'bdf': 'border-fit:|;',\n\\            'bdf:c': 'border-fit:clip;',\n\\            'bdf:r': 'border-fit:repeat;',\n\\            'bdf:sc': 'border-fit:scale;',\n\\            'bdf:st': 'border-fit:stretch;',\n\\            'bdf:ow': 'border-fit:overwrite;',\n\\            'bdf:of': 'border-fit:overflow;',\n\\            'bdf:sp': 'border-fit:space;',\n\\            'bdl': 'border-left:|;',\n\\            'bdl:a': 'border-length:auto;',\n\\            'bdsp': 'border-spacing:|;',\n\\            'bds': 'border-style:|;',\n\\            'bds:n': 'border-style:none;',\n\\            'bds:h': 'border-style:hidden;',\n\\            'bds:dt': 'border-style:dotted;',\n\\            'bds:ds': 'border-style:dashed;',\n\\            'bds:s': 'border-style:solid;',\n\\            'bds:db': 'border-style:double;',\n\\            'bds:dtds': 'border-style:dot-dash;',\n\\            'bds:dtdtds': 'border-style:dot-dot-dash;',\n\\            'bds:w': 'border-style:wave;',\n\\            'bds:g': 'border-style:groove;',\n\\            'bds:r': 'border-style:ridge;',\n\\            'bds:i': 'border-style:inset;',\n\\            'bds:o': 'border-style:outset;',\n\\            'bdw': 'border-width:|;',\n\\            'bdt': 'border-top:|;',\n\\            'bdt+': 'border-top:1px solid #000;',\n\\            'bdt:n': 'border-top:none;',\n\\            'bdtw': 'border-top-width:|;',\n\\            'bdts': 'border-top-style:|;',\n\\            'bdts:n': 'border-top-style:none;',\n\\            'bdtc': 'border-top-color:#000;',\n\\            'bdr': 'border-right:|;',\n\\            'bdr+': 'border-right:1px solid #000;',\n\\            'bdr:n': 'border-right:none;',\n\\            'bdrw': 'border-right-width:|;',\n\\            'bdrt': 'border-right-style:|;',\n\\            'bdrs:n': 'border-right-style:none;',\n\\            'bdrc': 'border-right-color:#000;',\n\\            'bdb': 'border-bottom:|;',\n\\            'bdb+': 'border-bottom:1px solid #000;',\n\\            'bdb:n': 'border-bottom:none;',\n\\            'bdbw': 'border-bottom-width:|;',\n\\            'bdbs': 'border-bottom-style:|;',\n\\            'bdbs:n': 'border-bottom-style:none;',\n\\            'bdbc': 'border-bottom-color:#000;',\n\\            'bdln': 'border-length:|;',\n\\            'bdl+': 'border-left:1px solid #000;',\n\\            'bdl:n': 'border-left:none;',\n\\            'bdlw': 'border-left-width:|;',\n\\            'bdls': 'border-left-style:|;',\n\\            'bdls:n': 'border-left-style:none;',\n\\            'bdlc': 'border-left-color:#000;',\n\\            'bdrs': 'border-radius:|;',\n\\            'bdtrrz': 'border-top-right-radius:|;',\n\\            'bdtlrz': 'border-top-left-radius:|;',\n\\            'bdbrrz': 'border-bottom-right-radius:|;',\n\\            'bdblrz': 'border-bottom-left-radius:|;',\n\\            'bdrz:w': '-webkit-border-radius:|;',\n\\            'bdrz:m': '-moz-border-radius:|;',\n\\            'bg': 'background:|;',\n\\            'bg+': 'background:#FFF url(|) 0 0 no-repeat;',\n\\            'bg:n': 'background:none;',\n\\            'bg:ie': 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=''|x.png'');',\n\\            'bgc': 'background-color:#FFF;',\n\\            'bgi': 'background-image:url(|);',\n\\            'bgi:n': 'background-image:none;',\n\\            'bgr': 'background-repeat:|;',\n\\            'bgr:n': 'background-repeat:no-repeat;',\n\\            'bgr:x': 'background-repeat:repeat-x;',\n\\            'bgr:y': 'background-repeat:repeat-y;',\n\\            'bga': 'background-attachment:|;',\n\\            'bga:f': 'background-attachment:fixed;',\n\\            'bga:s': 'background-attachment:scroll;',\n\\            'bgp': 'background-position:0 0;',\n\\            'bgpx': 'background-position-x:|;',\n\\            'bgpy': 'background-position-y:|;',\n\\            'bgbk': 'background-break:|;',\n\\            'bgbk:bb': 'background-break:bounding-box;',\n\\            'bgbk:eb': 'background-break:each-box;',\n\\            'bgbk:c': 'background-break:continuous;',\n\\            'bgcp': 'background-clip:|;',\n\\            'bgcp:bb': 'background-clip:border-box;',\n\\            'bgcp:pb': 'background-clip:padding-box;',\n\\            'bgcp:cb': 'background-clip:content-box;',\n\\            'bgcp:nc': 'background-clip:no-clip;',\n\\            'bgo': 'background-origin:|;',\n\\            'bgo:pb': 'background-origin:padding-box;',\n\\            'bgo:bb': 'background-origin:border-box;',\n\\            'bgo:cb': 'background-origin:content-box;',\n\\            'bgz': 'background-size:|;',\n\\            'bgz:a': 'background-size:auto;',\n\\            'bgz:ct': 'background-size:contain;',\n\\            'bgz:cv': 'background-size:cover;',\n\\            'c': 'color:#000;',\n\\            'tbl': 'table-layout:|;',\n\\            'tbl:a': 'table-layout:auto;',\n\\            'tbl:f': 'table-layout:fixed;',\n\\            'cps': 'caption-side:|;',\n\\            'cps:t': 'caption-side:top;',\n\\            'cps:b': 'caption-side:bottom;',\n\\            'ec': 'empty-cells:|;',\n\\            'ec:s': 'empty-cells:show;',\n\\            'ec:h': 'empty-cells:hide;',\n\\            'lis': 'list-style:|;',\n\\            'lis:n': 'list-style:none;',\n\\            'lisp': 'list-style-position:|;',\n\\            'lisp:i': 'list-style-position:inside;',\n\\            'lisp:o': 'list-style-position:outside;',\n\\            'list': 'list-style-type:|;',\n\\            'list:n': 'list-style-type:none;',\n\\            'list:d': 'list-style-type:disc;',\n\\            'list:c': 'list-style-type:circle;',\n\\            'list:s': 'list-style-type:square;',\n\\            'list:dc': 'list-style-type:decimal;',\n\\            'list:dclz': 'list-style-type:decimal-leading-zero;',\n\\            'list:lr': 'list-style-type:lower-roman;',\n\\            'list:ur': 'list-style-type:upper-roman;',\n\\            'lisi': 'list-style-image:|;',\n\\            'lisi:n': 'list-style-image:none;',\n\\            'q': 'quotes:|;',\n\\            'q:n': 'quotes:none;',\n\\            'q:ru': 'quotes:''\\00AB'' ''\\00BB'' ''\\201E'' ''\\201C'';',\n\\            'q:en': 'quotes:''\\201C'' ''\\201D'' ''\\2018'' ''\\2019'';',\n\\            'ct': 'content:|;',\n\\            'ct:n': 'content:normal;',\n\\            'ct:oq': 'content:open-quote;',\n\\            'ct:noq': 'content:no-open-quote;',\n\\            'ct:cq': 'content:close-quote;',\n\\            'ct:ncq': 'content:no-close-quote;',\n\\            'ct:a': 'content:attr(|);',\n\\            'ct:c': 'content:counter(|);',\n\\            'ct:cs': 'content:counters(|);',\n\\            'coi': 'counter-increment:|;',\n\\            'cor': 'counter-reset:|;',\n\\            'va': 'vertical-align:|;',\n\\            'va:sup': 'vertical-align:super;',\n\\            'va:t': 'vertical-align:top;',\n\\            'va:tt': 'vertical-align:text-top;',\n\\            'va:m': 'vertical-align:middle;',\n\\            'va:bl': 'vertical-align:baseline;',\n\\            'va:b': 'vertical-align:bottom;',\n\\            'va:tb': 'vertical-align:text-bottom;',\n\\            'va:sub': 'vertical-align:sub;',\n\\            'ta': 'text-align:|;',\n\\            'ta:l': 'text-align:left;',\n\\            'ta:c': 'text-align:center;',\n\\            'ta:r': 'text-align:right;',\n\\            'tal': 'text-align-last:|;',\n\\            'tal:a': 'text-align-last:auto;',\n\\            'tal:l': 'text-align-last:left;',\n\\            'tal:c': 'text-align-last:center;',\n\\            'tal:r': 'text-align-last:right;',\n\\            'td': 'text-decoration:|;',\n\\            'td:n': 'text-decoration:none;',\n\\            'td:u': 'text-decoration:underline;',\n\\            'td:o': 'text-decoration:overline;',\n\\            'td:l': 'text-decoration:line-through;',\n\\            'te': 'text-emphasis:|;',\n\\            'te:n': 'text-emphasis:none;',\n\\            'te:ac': 'text-emphasis:accent;',\n\\            'te:dt': 'text-emphasis:dot;',\n\\            'te:c': 'text-emphasis:circle;',\n\\            'te:ds': 'text-emphasis:disc;',\n\\            'te:b': 'text-emphasis:before;',\n\\            'te:a': 'text-emphasis:after;',\n\\            'th': 'text-height:|;',\n\\            'th:a': 'text-height:auto;',\n\\            'th:f': 'text-height:font-size;',\n\\            'th:t': 'text-height:text-size;',\n\\            'th:m': 'text-height:max-size;',\n\\            'ti': 'text-indent:|;',\n\\            'ti:-': 'text-indent:-9999px;',\n\\            'tj': 'text-justify:|;',\n\\            'tj:a': 'text-justify:auto;',\n\\            'tj:iw': 'text-justify:inter-word;',\n\\            'tj:ii': 'text-justify:inter-ideograph;',\n\\            'tj:ic': 'text-justify:inter-cluster;',\n\\            'tj:d': 'text-justify:distribute;',\n\\            'tj:k': 'text-justify:kashida;',\n\\            'tj:t': 'text-justify:tibetan;',\n\\            'to': 'text-outline:|;',\n\\            'to+': 'text-outline:0 0 #000;',\n\\            'to:n': 'text-outline:none;',\n\\            'tr': 'text-replace:|;',\n\\            'tr:n': 'text-replace:none;',\n\\            'tt': 'text-transform:|;',\n\\            'tt:n': 'text-transform:none;',\n\\            'tt:c': 'text-transform:capitalize;',\n\\            'tt:u': 'text-transform:uppercase;',\n\\            'tt:l': 'text-transform:lowercase;',\n\\            'tw': 'text-wrap:|;',\n\\            'tw:n': 'text-wrap:normal;',\n\\            'tw:no': 'text-wrap:none;',\n\\            'tw:u': 'text-wrap:unrestricted;',\n\\            'tw:s': 'text-wrap:suppress;',\n\\            'tsh': 'text-shadow:|;',\n\\            'tsh+': 'text-shadow:0 0 0 #000;',\n\\            'tsh:n': 'text-shadow:none;',\n\\            'lh': 'line-height:|;',\n\\            'whs': 'white-space:|;',\n\\            'whs:n': 'white-space:normal;',\n\\            'whs:p': 'white-space:pre;',\n\\            'whs:nw': 'white-space:nowrap;',\n\\            'whs:pw': 'white-space:pre-wrap;',\n\\            'whs:pl': 'white-space:pre-line;',\n\\            'whsc': 'white-space-collapse:|;',\n\\            'whsc:n': 'white-space-collapse:normal;',\n\\            'whsc:k': 'white-space-collapse:keep-all;',\n\\            'whsc:l': 'white-space-collapse:loose;',\n\\            'whsc:bs': 'white-space-collapse:break-strict;',\n\\            'whsc:ba': 'white-space-collapse:break-all;',\n\\            'wob': 'word-break:|;',\n\\            'wob:n': 'word-break:normal;',\n\\            'wob:k': 'word-break:keep-all;',\n\\            'wob:l': 'word-break:loose;',\n\\            'wob:bs': 'word-break:break-strict;',\n\\            'wob:ba': 'word-break:break-all;',\n\\            'wos': 'word-spacing:|;',\n\\            'wow': 'word-wrap:|;',\n\\            'wow:nm': 'word-wrap:normal;',\n\\            'wow:n': 'word-wrap:none;',\n\\            'wow:u': 'word-wrap:unrestricted;',\n\\            'wow:s': 'word-wrap:suppress;',\n\\            'lts': 'letter-spacing:|;',\n\\            'f': 'font:|;',\n\\            'f+': 'font:1em Arial,sans-serif;',\n\\            'fw': 'font-weight:|;',\n\\            'fw:n': 'font-weight:normal;',\n\\            'fw:b': 'font-weight:bold;',\n\\            'fw:br': 'font-weight:bolder;',\n\\            'fw:lr': 'font-weight:lighter;',\n\\            'fs': 'font-style:|;',\n\\            'fs:n': 'font-style:normal;',\n\\            'fs:i': 'font-style:italic;',\n\\            'fs:o': 'font-style:oblique;',\n\\            'fv': 'font-variant:|;',\n\\            'fv:n': 'font-variant:normal;',\n\\            'fv:sc': 'font-variant:small-caps;',\n\\            'fz': 'font-size:|;',\n\\            'fza': 'font-size-adjust:|;',\n\\            'fza:n': 'font-size-adjust:none;',\n\\            'ff': 'font-family:|;',\n\\            'ff:s': 'font-family:serif;',\n\\            'ff:ss': 'font-family:sans-serif;',\n\\            'ff:c': 'font-family:cursive;',\n\\            'ff:f': 'font-family:fantasy;',\n\\            'ff:m': 'font-family:monospace;',\n\\            'fef': 'font-effect:|;',\n\\            'fef:n': 'font-effect:none;',\n\\            'fef:eg': 'font-effect:engrave;',\n\\            'fef:eb': 'font-effect:emboss;',\n\\            'fef:o': 'font-effect:outline;',\n\\            'fem': 'font-emphasize:|;',\n\\            'femp': 'font-emphasize-position:|;',\n\\            'femp:b': 'font-emphasize-position:before;',\n\\            'femp:a': 'font-emphasize-position:after;',\n\\            'fems': 'font-emphasize-style:|;',\n\\            'fems:n': 'font-emphasize-style:none;',\n\\            'fems:ac': 'font-emphasize-style:accent;',\n\\            'fems:dt': 'font-emphasize-style:dot;',\n\\            'fems:c': 'font-emphasize-style:circle;',\n\\            'fems:ds': 'font-emphasize-style:disc;',\n\\            'fsm': 'font-smooth:|;',\n\\            'fsm:a': 'font-smooth:auto;',\n\\            'fsm:n': 'font-smooth:never;',\n\\            'fsm:aw': 'font-smooth:always;',\n\\            'fst': 'font-stretch:|;',\n\\            'fst:n': 'font-stretch:normal;',\n\\            'fst:uc': 'font-stretch:ultra-condensed;',\n\\            'fst:ec': 'font-stretch:extra-condensed;',\n\\            'fst:c': 'font-stretch:condensed;',\n\\            'fst:sc': 'font-stretch:semi-condensed;',\n\\            'fst:se': 'font-stretch:semi-expanded;',\n\\            'fst:e': 'font-stretch:expanded;',\n\\            'fst:ee': 'font-stretch:extra-expanded;',\n\\            'fst:ue': 'font-stretch:ultra-expanded;',\n\\            'op': 'opacity:|;',\n\\            'op:ie': 'filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);',\n\\            'op:ms': '-ms-filter:''progid:DXImageTransform.Microsoft.Alpha(Opacity=100)'';',\n\\            'rz': 'resize:|;',\n\\            'rz:n': 'resize:none;',\n\\            'rz:b': 'resize:both;',\n\\            'rz:h': 'resize:horizontal;',\n\\            'rz:v': 'resize:vertical;',\n\\            'cur': 'cursor:|;',\n\\            'cur:a': 'cursor:auto;',\n\\            'cur:d': 'cursor:default;',\n\\            'cur:c': 'cursor:crosshair;',\n\\            'cur:ha': 'cursor:hand;',\n\\            'cur:he': 'cursor:help;',\n\\            'cur:m': 'cursor:move;',\n\\            'cur:p': 'cursor:pointer;',\n\\            'cur:t': 'cursor:text;',\n\\            'pgbb': 'page-break-before:|;',\n\\            'pgbb:au': 'page-break-before:auto;',\n\\            'pgbb:al': 'page-break-before:always;',\n\\            'pgbb:l': 'page-break-before:left;',\n\\            'pgbb:r': 'page-break-before:right;',\n\\            'pgbi': 'page-break-inside:|;',\n\\            'pgbi:au': 'page-break-inside:auto;',\n\\            'pgbi:av': 'page-break-inside:avoid;',\n\\            'pgba': 'page-break-after:|;',\n\\            'pgba:au': 'page-break-after:auto;',\n\\            'pgba:al': 'page-break-after:always;',\n\\            'pgba:l': 'page-break-after:left;',\n\\            'pgba:r': 'page-break-after:right;',\n\\            'orp': 'orphans:|;',\n\\            'wid': 'widows:|;',\n\\        },\n\\        'filters': 'fc',\n\\    },\n\\    'sass': {\n\\        'extends': 'css',\n\\        'snippets': {\n\\            '@if': \"@if {\\n\\t|\\n}\",\n\\            '@e': \"@else {\\n\\t|\\n}\",\n\\            '@in': \"@include |\",\n\\            '@ex': \"@extend |\",\n\\            '@mx': \"@mixin {\\n\\t|\\n}\",\n\\            '@fn': \"@function {\\n\\t|\\n}\",\n\\            '@r': \"@return |\",\n\\        },\n\\    },\n\\    'scss': {\n\\        'extends': 'css',\n\\    },\n\\    'less': {\n\\        'extends': 'css',\n\\    },\n\\    'css.drupal': {\n\\        'extends': 'css',\n\\    },\n\\    'html': {\n\\        'snippets': {\n\\            '!!!': \"<!doctype html>\",\n\\            '!!!4t':  \"<!DOCTYPE HTML PUBLIC \\\"-//W3C//DTD HTML 4.01 Transitional//EN\\\" \\\"http://www.w3.org/TR/html4/loose.dtd\\\">\",\n\\            '!!!4s':  \"<!DOCTYPE HTML PUBLIC \\\"-//W3C//DTD HTML 4.01//EN\\\" \\\"http://www.w3.org/TR/html4/strict.dtd\\\">\",\n\\            '!!!xt':  \"<!DOCTYPE html PUBLIC \\\"-//W3C//DTD XHTML 1.0 Transitional//EN\\\" \\\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\\\">\",\n\\            '!!!xs':  \"<!DOCTYPE html PUBLIC \\\"-//W3C//DTD XHTML 1.0 Strict//EN\\\" \\\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\\\">\",\n\\            '!!!xxs': \"<!DOCTYPE html PUBLIC \\\"-//W3C//DTD XHTML 1.1//EN\\\" \\\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\\\">\",\n\\            'c': \"<!-- |${child} -->\",\n\\            'cc:ie6': \"<!--[if lte IE 6]>\\n\\t${child}|\\n<![endif]-->\",\n\\            'cc:ie': \"<!--[if IE]>\\n\\t${child}|\\n<![endif]-->\",\n\\            'cc:noie': \"<!--[if !IE]><!-->\\n\\t${child}|\\n<!--<![endif]-->\",\n\\            'html:4t': \"<!DOCTYPE HTML PUBLIC \\\"-//W3C//DTD HTML 4.01 Transitional//EN\\\" \\\"http://www.w3.org/TR/html4/loose.dtd\\\">\\n\"\n\\                    .\"<html lang=\\\"${lang}\\\">\\n\"\n\\                    .\"<head>\\n\"\n\\                    .\"\\t<meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=${charset}\\\">\\n\"\n\\                    .\"\\t<title></title>\\n\"\n\\                    .\"</head>\\n\"\n\\                    .\"<body>\\n\\t${child}|\\n</body>\\n\"\n\\                    .\"</html>\",\n\\            'html:4s': \"<!DOCTYPE HTML PUBLIC \\\"-//W3C//DTD HTML 4.01//EN\\\" \\\"http://www.w3.org/TR/html4/strict.dtd\\\">\\n\"\n\\                    .\"<html lang=\\\"${lang}\\\">\\n\"\n\\                    .\"<head>\\n\"\n\\                    .\"\\t<meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=${charset}\\\">\\n\"\n\\                    .\"\\t<title></title>\\n\"\n\\                    .\"</head>\\n\"\n\\                    .\"<body>\\n\\t${child}|\\n</body>\\n\"\n\\                    .\"</html>\",\n\\            'html:xt': \"<!DOCTYPE html PUBLIC \\\"-//W3C//DTD XHTML 1.0 Transitional//EN\\\" \\\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\\\">\\n\"\n\\                    .\"<html xmlns=\\\"http://www.w3.org/1999/xhtml\\\" xml:lang=\\\"${lang}\\\">\\n\"\n\\                    .\"<head>\\n\"\n\\                    .\"\\t<meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=${charset}\\\" />\\n\"\n\\                    .\"\\t<title></title>\\n\"\n\\                    .\"</head>\\n\"\n\\                    .\"<body>\\n\\t${child}|\\n</body>\\n\"\n\\                    .\"</html>\",\n\\            'html:xs': \"<!DOCTYPE html PUBLIC \\\"-//W3C//DTD XHTML 1.0 Strict//EN\\\" \\\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\\\">\\n\"\n\\                    .\"<html xmlns=\\\"http://www.w3.org/1999/xhtml\\\" xml:lang=\\\"${lang}\\\">\\n\"\n\\                    .\"<head>\\n\"\n\\                    .\"\\t<meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=${charset}\\\" />\\n\"\n\\                    .\"\\t<title></title>\\n\"\n\\                    .\"</head>\\n\"\n\\                    .\"<body>\\n\\t${child}|\\n</body>\\n\"\n\\                    .\"</html>\",\n\\            'html:xxs': \"<!DOCTYPE html PUBLIC \\\"-//W3C//DTD XHTML 1.1//EN\\\" \\\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\\\">\\n\"\n\\                    .\"<html xmlns=\\\"http://www.w3.org/1999/xhtml\\\" xml:lang=\\\"${lang}\\\">\\n\"\n\\                    .\"<head>\\n\"\n\\                    .\"\\t<meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=${charset}\\\" />\\n\"\n\\                    .\"\\t<title></title>\\n\"\n\\                    .\"</head>\\n\"\n\\                    .\"<body>\\n\\t${child}|\\n</body>\\n\"\n\\                    .\"</html>\",\n\\            'html:5': \"<!DOCTYPE html>\\n\"\n\\                    .\"<html lang=\\\"${lang}\\\">\\n\"\n\\                    .\"<head>\\n\"\n\\                    .\"\\t<meta charset=\\\"${charset}\\\">\\n\"\n\\                    .\"\\t<title></title>\\n\"\n\\                    .\"</head>\\n\"\n\\                    .\"<body>\\n\\t${child}|\\n</body>\\n\"\n\\                    .\"</html>\",\n\\        },\n\\        'default_attributes': {\n\\            'a': {'href': ''},\n\\            'a:link': {'href': 'http://|'},\n\\            'a:mail': {'href': 'mailto:|'},\n\\            'abbr': {'title': ''},\n\\            'acronym': {'title': ''},\n\\            'base': {'href': ''},\n\\            'bdo': {'dir': ''},\n\\            'bdo:r': {'dir': 'rtl'},\n\\            'bdo:l': {'dir': 'ltr'},\n\\            'del': {'datetime': '${datetime}'},\n\\            'ins': {'datetime': '${datetime}'},\n\\            'link:css': [{'rel': 'stylesheet'}, g:emmet_html5 ? {} : {'type': 'text/css'}, {'href': '|style.css'}, {'media': 'all'}],\n\\            'link:print': [{'rel': 'stylesheet'}, g:emmet_html5 ? {} : {'type': 'text/css'}, {'href': '|print.css'}, {'media': 'print'}],\n\\            'link:favicon': [{'rel': 'shortcut icon'}, {'type': 'image/x-icon'}, {'href': '|favicon.ico'}],\n\\            'link:touch': [{'rel': 'apple-touch-icon'}, {'href': '|favicon.png'}],\n\\            'link:rss': [{'rel': 'alternate'}, {'type': 'application/rss+xml'}, {'title': 'RSS'}, {'href': '|rss.xml'}],\n\\            'link:atom': [{'rel': 'alternate'}, {'type': 'application/atom+xml'}, {'title': 'Atom'}, {'href': 'atom.xml'}],\n\\            'meta:utf': [{'http-equiv': 'Content-Type'}, {'content': 'text/html;charset=UTF-8'}],\n\\            'meta:win': [{'http-equiv': 'Content-Type'}, {'content': 'text/html;charset=Win-1251'}],\n\\            'meta:compat': [{'http-equiv': 'X-UA-Compatible'}, {'content': 'IE=7'}],\n\\            'style': g:emmet_html5 ? {} : {'type': 'text/css'},\n\\            'script': g:emmet_html5 ? {} : {'type': 'text/javascript'},\n\\            'script:src': g:emmet_html5 ? {'src': ''} : [{'type': 'text/javascript'}, {'src': ''}],\n\\            'img': [{'src': ''}, {'alt': ''}],\n\\            'iframe': [{'src': ''}, {'frameborder': '0'}],\n\\            'embed': [{'src': ''}, {'type': ''}],\n\\            'object': [{'data': ''}, {'type': ''}],\n\\            'param': [{'name': ''}, {'value': ''}],\n\\            'map': {'name': ''},\n\\            'area': [{'shape': ''}, {'coords': ''}, {'href': ''}, {'alt': ''}],\n\\            'area:d': [{'shape': 'default'}, {'href': ''}, {'alt': ''}],\n\\            'area:c': [{'shape': 'circle'}, {'coords': ''}, {'href': ''}, {'alt': ''}],\n\\            'area:r': [{'shape': 'rect'}, {'coords': ''}, {'href': ''}, {'alt': ''}],\n\\            'area:p': [{'shape': 'poly'}, {'coords': ''}, {'href': ''}, {'alt': ''}],\n\\            'link': [{'rel': 'stylesheet'}, {'href': ''}],\n\\            'form': {'action': ''},\n\\            'form:get': {'action': '', 'method': 'get'},\n\\            'form:post': {'action': '', 'method': 'post'},\n\\            'form:upload': {'action': '', 'method': 'post', 'enctype': 'multipart/form-data'},\n\\            'label': {'for': ''},\n\\            'input': {'type': ''},\n\\            'input:hidden': [{'type': 'hidden'}, {'name': ''}],\n\\            'input:h': [{'type': 'hidden'}, {'name': ''}],\n\\            'input:text': [{'type': 'text'}, {'name': ''}, {'id': ''}],\n\\            'input:t': [{'type': 'text'}, {'name': ''}, {'id': ''}],\n\\            'input:search': [{'type': 'search'}, {'name': ''}, {'id': ''}],\n\\            'input:email': [{'type': 'email'}, {'name': ''}, {'id': ''}],\n\\            'input:url': [{'type': 'url'}, {'name': ''}, {'id': ''}],\n\\            'input:password': [{'type': 'password'}, {'name': ''}, {'id': ''}],\n\\            'input:p': [{'type': 'password'}, {'name': ''}, {'id': ''}],\n\\            'input:datetime': [{'type': 'datetime'}, {'name': ''}, {'id': ''}],\n\\            'input:date': [{'type': 'date'}, {'name': ''}, {'id': ''}],\n\\            'input:datetime-local': [{'type': 'datetime-local'}, {'name': ''}, {'id': ''}],\n\\            'input:month': [{'type': 'month'}, {'name': ''}, {'id': ''}],\n\\            'input:week': [{'type': 'week'}, {'name': ''}, {'id': ''}],\n\\            'input:time': [{'type': 'time'}, {'name': ''}, {'id': ''}],\n\\            'input:number': [{'type': 'number'}, {'name': ''}, {'id': ''}],\n\\            'input:color': [{'type': 'color'}, {'name': ''}, {'id': ''}],\n\\            'input:checkbox': [{'type': 'checkbox'}, {'name': ''}, {'id': ''}],\n\\            'input:c': [{'type': 'checkbox'}, {'name': ''}, {'id': ''}],\n\\            'input:radio': [{'type': 'radio'}, {'name': ''}, {'id': ''}],\n\\            'input:r': [{'type': 'radio'}, {'name': ''}, {'id': ''}],\n\\            'input:range': [{'type': 'range'}, {'name': ''}, {'id': ''}],\n\\            'input:file': [{'type': 'file'}, {'name': ''}, {'id': ''}],\n\\            'input:f': [{'type': 'file'}, {'name': ''}, {'id': ''}],\n\\            'input:submit': [{'type': 'submit'}, {'value': ''}],\n\\            'input:s': [{'type': 'submit'}, {'value': ''}],\n\\            'input:image': [{'type': 'image'}, {'src': ''}, {'alt': ''}],\n\\            'input:i': [{'type': 'image'}, {'src': ''}, {'alt': ''}],\n\\            'input:reset': [{'type': 'reset'}, {'value': ''}],\n\\            'input:button': [{'type': 'button'}, {'value': ''}],\n\\            'input:b': [{'type': 'button'}, {'value': ''}],\n\\            'select': [{'name': ''}, {'id': ''}],\n\\            'option': {'value': ''},\n\\            'textarea': [{'name': ''}, {'id': ''}, {'cols': '30'}, {'rows': '10'}],\n\\            'menu:context': {'type': 'context'},\n\\            'menu:c': {'type': 'context'},\n\\            'menu:toolbar': {'type': 'toolbar'},\n\\            'menu:t': {'type': 'toolbar'},\n\\            'video': {'src': ''},\n\\            'audio': {'src': ''},\n\\            'html:xml': [{'xmlns': 'http://www.w3.org/1999/xhtml'}, {'xml:lang': '${lang}'}],\n\\        },\n\\        'aliases': {\n\\            'link:*': 'link',\n\\            'meta:*': 'meta',\n\\            'area:*': 'area',\n\\            'bdo:*': 'bdo',\n\\            'form:*': 'form',\n\\            'input:*': 'input',\n\\            'script:*': 'script',\n\\            'html:*': 'html',\n\\            'a:*': 'a',\n\\            'menu:*': 'menu',\n\\            'bq': 'blockquote',\n\\            'acr': 'acronym',\n\\            'fig': 'figure',\n\\            'ifr': 'iframe',\n\\            'emb': 'embed',\n\\            'obj': 'object',\n\\            'src': 'source',\n\\            'cap': 'caption',\n\\            'colg': 'colgroup',\n\\            'fst': 'fieldset',\n\\            'btn': 'button',\n\\            'optg': 'optgroup',\n\\            'opt': 'option',\n\\            'tarea': 'textarea',\n\\            'leg': 'legend',\n\\            'sect': 'section',\n\\            'art': 'article',\n\\            'hdr': 'header',\n\\            'ftr': 'footer',\n\\            'adr': 'address',\n\\            'dlg': 'dialog',\n\\            'str': 'strong',\n\\            'sty': 'style',\n\\            'prog': 'progress',\n\\            'fset': 'fieldset',\n\\            'datag': 'datagrid',\n\\            'datal': 'datalist',\n\\            'kg': 'keygen',\n\\            'out': 'output',\n\\            'det': 'details',\n\\            'cmd': 'command',\n\\        },\n\\        'expandos': {\n\\            'ol': 'ol>li',\n\\            'ul': 'ul>li',\n\\            'dl': 'dl>dt+dd',\n\\            'map': 'map>area',\n\\            'table': 'table>tr>td',\n\\            'colgroup': 'colgroup>col',\n\\            'colg': 'colgroup>col',\n\\            'tr': 'tr>td',\n\\            'select': 'select>option',\n\\            'optgroup': 'optgroup>option',\n\\            'optg': 'optgroup>option',\n\\        },\n\\        'empty_elements': 'area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed,keygen,command',\n\\        'block_elements': 'address,applet,blockquote,button,center,dd,del,dir,div,dl,dt,fieldset,form,frameset,hr,iframe,ins,isindex,li,link,map,menu,noframes,noscript,object,ol,p,pre,script,table,tbody,td,tfoot,th,thead,tr,ul,h1,h2,h3,h4,h5,h6',\n\\        'inline_elements': 'a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var',\n\\        'empty_element_suffix': g:emmet_html5 ? '>' : ' />',\n\\    },\n\\    'htmldjango': {\n\\        'extends': 'html',\n\\    },\n\\    'html.django_template': {\n\\        'extends': 'html',\n\\    },\n\\    'xsl': {\n\\        'extends': 'html',\n\\        'default_attributes': {\n\\            'tmatch': [{'match': ''}, {'mode': ''}],\n\\            'tname': [{'name': ''}],\n\\            'xsl:when': {'test': ''},\n\\            'var': [{'name': ''}, {'select': ''}],\n\\            'vari': {'name': ''},\n\\            'if': {'test': ''},\n\\            'call': {'name': ''},\n\\            'attr': {'name': ''},\n\\            'wp': [{'name': ''}, {'select': ''}],\n\\            'par': [{'name': ''}, {'select': ''}],\n\\            'val': {'select': ''},\n\\            'co': {'select': ''},\n\\            'each': {'select': ''},\n\\            'ap': [{'select': ''}, {'mode': ''}]\n\\        },\n\\        'aliases': {\n\\            'tmatch': 'xsl:template',\n\\            'tname': 'xsl:template',\n\\            'var': 'xsl:variable',\n\\            'vari': 'xsl:variable',\n\\            'if': 'xsl:if',\n\\            'choose': 'xsl:choose',\n\\            'call': 'xsl:call-template',\n\\            'wp': 'xsl:with-param',\n\\            'par': 'xsl:param',\n\\            'val': 'xsl:value-of',\n\\            'attr': 'xsl:attribute',\n\\            'co' : 'xsl:copy-of',\n\\            'each' : 'xsl:for-each',\n\\            'ap' : 'xsl:apply-templates',\n\\        },\n\\        'expandos': {\n\\            'choose': 'xsl:choose>xsl:when+xsl:otherwise',\n\\        }\n\\    },\n\\    'xslt': {\n\\        'extends': 'xsl',\n\\    },\n\\    'haml': {\n\\        'indentation': '  ',\n\\        'extends': 'html',\n\\        'snippets': {\n\\            'html:5': \"!!! 5\\n\"\n\\                    .\"%html{:lang => \\\"${lang}\\\"}\\n\"\n\\                    .\"\\t%head\\n\"\n\\                    .\"\\t\\t%meta{:charset => \\\"${charset}\\\"}\\n\"\n\\                    .\"\\t\\t%title\\n\"\n\\                    .\"\\t%body\\n\"\n\\                    .\"\\t\\t${child}|\\n\",\n\\        },\n\\    },\n\\    'slim': {\n\\        'indentation': '  ',\n\\        'extends': 'html',\n\\        'snippets': {\n\\            'html:5': \"doctype 5\\n\"\n\\                    .\"html lang=\\\"${lang}\\\"\\n\"\n\\                    .\"\\thead\\n\"\n\\                    .\"\\t\\tmeta charset=\\\"${charset}\\\"\\n\"\n\\                    .\"\\t\\ttitle\\n\"\n\\                    .\"\\tbody\\n\"\n\\                    .\"\\t\\t${child}|\\n\",\n\\        },\n\\    },\n\\    'xhtml': {\n\\        'extends': 'html'\n\\    },\n\\    'mustache': {\n\\        'extends': 'html'\n\\    },\n\\    'xsd': {\n\\        'extends': 'html',\n\\        'snippets': {\n\\            'xsd:w3c': \"<?xml version=\\\"1.0\\\"?>\\n\"\n\\                    .\"<xsd:schema xmlns:xsd=\\\"http://www.w3.org/2001/XMLSchema\\\">\\n\"\n\\                    .\"\\t<xsd:element name=\\\"\\\" type=\\\"\\\"/>\\n\"\n\\                    .\"</xsd:schema>\\n\"\n\\        }\n\\    }\n\\}\n\nif exists('g:user_emmet_settings')\n  call emmet#mergeConfig(s:emmet_settings, g:user_emmet_settings)\nendif\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim:set et:\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/doc/emmet.txt",
    "content": "*emmet.txt*\tEmmet for Vim\n\n\t   -------------------------------------------------------\n\t     Emmet: vim plugins for HTML and CSS hi-speed coding\n\t   -------------------------------------------------------\n\nAuthor: Yasuhiro Matsumoto <mattn.jp@gmail.com>\nWebSite: http://mattn.kaoriya.net/\nRepository: http://github.com/mattn/emmet-vim\nSite: http://mattn.github.com/emmet-vim\nLicense: BSD style license\n\n==============================================================================\nCONTENTS                                                        *emmet-contents*\n\nIntroduction           |emmet-introduction|\nInstall                |emmet-install|\nTutorial               |emmet-tutorial|\n  1. Expand Abbreviation            |emmet-expandabbr|\n  2. Wrap with Abbreviation         |emmet-wrap-with-abbreviation|\n  3. Balance Tag Inward             |emmet-balance-tag-inward|\n  4. Balance Tag Outward            |emmet-balance-tag-outward|\n  5. Go to Next Edit Point          |emmet-goto-next-point| |<C-Y>n|\n  6. Go to Previous Edit Point      |emmet-goto-previous-point|\n  7. Update <img> Size              |emmet-update-image-size|\n  8. Merge Lines                    |emmet-merge-lines|\n  9. Remove Tag                     |emmet-remove-tag|\n 10. Split/Join Tag                 |emmet-split-join-tag|\n 11. Toggle Comment                 |emmet-toggle-comment|\n 12. Make anchor from URL           |emmet-make-anchor-url|\n 13. Make quoted text from URL      |emmet-quoted-text-url|\n 14. Code Pretty                    |emmet-code-pretty|\n 15. Lorem Ipsum                    |emmet-lorem-ipsum|\nCustomize             |emmet-customize|\n  1. Key Mappings                   |emmet-customize-keymappings|\n  2. Indent Size                    |emmet-indent-size|\n  3. Define Tag's Behavior          |emmet-define-tags-behavior|\n  4. Complete Tag                   |emmet-complete-tag|\nLinks                 |emmet-links|\nToDo                  |emmet-todo|\n\n==============================================================================\nINTRODUCTION                                          *emmet-introduction* *emmet*\n\n|Emmet| is an editor plugin for high-speed HTML, XML, XSL (or any other\nstructured code format) coding and editing. The core of this plugin is a\npowerful abbreviation engine which allows you to expand expressions?similar to\nCSS selectors?into HTML code:\n>\n    div#page>div.logo+ul#navigation>li*5>a\n<\n...can be expanded into:\n>\n    <div id=\"page\">\n        <div class=\"logo\"></div>\n        <ul id=\"navigation\">\n            <li><a href=\"\"></a></li>\n            <li><a href=\"\"></a></li>\n            <li><a href=\"\"></a></li>\n            <li><a href=\"\"></a></li>\n            <li><a href=\"\"></a></li>\n        </ul>\n    </div>\n<\nRead more about current Emmet syntax\n  http://docs.emmet.io/abbreviations/\n\nAbbreviation engine has a modular structure which allows you to expand\nabbreviations into different languages. Emmet currently supports CSS,\nHTML, XML/XSL and HAML, Slim languages via filters.\n\n==============================================================================\nINSTALL                                                          *emmet-install*\n\nInstall the distributed files into Vim runtime directory which is usually\n~/.vim/, or $HOME/vimfiles on Windows.\n\nIf you install pathogen that provided from Tim Pope, you should extract the\nfile into 'bundle' directory.\n\n==============================================================================\nTUTORIAL                                                        *emmet-tutorial*\n\nIf you are seeing this file as :help, then you can't edit this file.\nYou should copy this section and create new buffer, paste and write as\n'emmet-tutor.txt'. Formally, open the file to start tutorial.\n\n1. Expand Abbreviation                                 *emmet-expandabbr* *<C-Y>,*\n\n  Type abbreviation as 'div>p#foo$*3>a' and type |<C-Y>,|.\n>\n  <div>\n      <p id=\"foo1\">\n          <a href=\"\"></a>\n      </p>\n      <p id=\"foo2\">\n          <a href=\"\"></a>\n      </p>\n      <p id=\"foo3\">\n          <a href=\"\"></a>\n      </p>\n  </div>\n<\n2. Wrap with Abbreviation                *emmet-wrap-with-abbreviation* *v_<C-Y>,*\n\n  Write as below.\n>\n  test1\n  test2\n  test3\n<\n  Then do visual select(line wise) and type |<C-Y>,|.\n  If you request 'Tag:', then type 'ul>li*'.\n>\n  <ul>\n      <li>test1</li>\n      <li>test2</li>\n      <li>test3</li>\n  </ul>\n<\n  If you type tag as 'blockquote', then you'll see as following.\n>\n  <blockquote>\n      test1\n      test2\n      test3\n  </blockquote>\n<\n3. Balance Tag Inward                          *emmet-balance-tag-inward* *<C-Y>d*\n\n  To select inward of ul tag, type |<C-Y>d| in insert mode.\n>\n  <ul>\n  *   <li class=\"list1\"></li>\n      <li class=\"list2\"></li>\n      <li class=\"list3\"></li>\n  </ul>\n<\n  If cursor is at '*', |<C-Y>d| select from begin of <ul> to end of </ul>.\n  If cursor is at first of <li>, it select <li class=\"list1\"></li>.\n\n4. Balance Tag Outward                        *emmet-balance-tag-outward* *<C-Y>D*\n\n  To select outward of ul tag,  insert mode, type <C-Y>D in insert mode.\n>\n  <ul>\n    * <li class=\"list1\"></li>\n      <li class=\"list2\"></li>\n      <li class=\"list3\"></li>\n  </ul>\n<\n  If cursor is at '*', |<C-Y>D| select from next letter of <ul> to previous\n  letter of </ul>.\n  If cursor is at first of <li>, it select <li class=\"list1\"></li>.\n\n5. Go to Next Edit Point                          *emmet-goto-next-point* *<C-Y>n*\n\n  To jump next point that need to edit, type |<C-Y>n| in insert mode.\n>\n  * <div id=\"foo\" class=\"\">foo</div>\n    <div id=\"bar\" class=\"bar\"></li>\n<\n  If cursor is at '*', |<C-Y>n| move a cursor into attribute value of div\n  specified id as 'foo'. And type again |<C-Y>n| move a cursor into inner of\n  div specified id as 'bar'.\n\n6. Go to Previous Edit Point                  *emmet-goto-previous-point* *<C-Y>N*\n\n  To jump previous point that need to edit, type |<C-Y>N| in insert mode.\n>\n  <div id=\"foo\" class=\"\">foo</div>\n  <div id=\"bar\" class=\"bar\"></li> *\n<\n  If cursor is at '*', |<C-Y>N| move a cursor into div specified id as 'bar'.\n  And type again |<C-Y>N| move a cursor into attribute value of 'foo'.\n\n7. Update <img> Size                            *emmet-update-image-size* *<C-Y>i*\n\n  To expand or update size of image, type |<C-Y>i| on img tag\n>\n  <img src=\"foo.png\" />\n<\n  Type '<c-y>i' on img tag\n>\n  <img src=\"foo.png\" width=\"32\" height=\"32\" />\n<\n  If you change image, then type it again. it will be following.\n>\n  <img src=\"foo-48.png\" width=\"32\" height=\"48\" />\n<\n8. Merge Lines                                               *emmet-merge-lines*\n\n  To join multi line text like following, type |J|.\n>\n  <ul>\n      <li class=\"list1\"></li>\n      <li class=\"list2\"></li>\n      <li class=\"list3\"></li>\n  </ul>\n<\n  If you select part of line include <li> and type |<C-Y>m|, it will be\n  following.\n>\n  <ul>\n      <li class=\"list1\"></li><li class=\"list2\"></li><li class=\"list3\"></li>\n  </ul>\n<\n9. Remove Tag                                          *emmet-remove-tag* *<C-Y>k*\n\n  To remove tag in the block, type |<C-Y>k|.\n>\n  <div class=\"foo\">\n      <a>cursor is here</a>\n  </div>\n<\n  Type |<C-Y>k| in insert mode, then\n>\n  <div class=\"foo\">\n\n  </div>\n<\n  And type |<C-Y>k| in there again, then div will be removed.\n\n10. Split/Join Tag                                 *emmet-split-join-tag* *<C-Y>j*\n\n  To join block, type |<C-Y>j|.\n>\n  <div class=\"foo\">\n      cursor is here\n  </div>\n<\n  Type |<C-Y>j| in insert mode. Then,\n>\n  <div class=\"foo\"/>\n<\n  And type |<C-Y>j| in there again.\n>\n  <div class=\"foo\">\n  </div>\n<\n11. Toggle Comment                                 *emmet-toggle-comment* *<C-Y>/*\n\n  Move cursor to block\n>\n  <div>\n      hello world\n  </div>\n<\n  Type '<c-y>/' in insert mode.\n>\n  <!-- <div>\n      hello world\n  </div> -->\n<\n  Type '<c-y>/' in there again.\n>\n  <div>\n      hello world\n  </div>\n<\n12. Make anchor from URL                          *emmet-make-anchor-url* *<C-Y>a*\n\n  Move cursor to URL\n>\n  http://www.google.com/\n<\n  Type |<C-Y>a|\n>\n  <a href=\"http://www.google.com/\">Google</a>\n<\n13. Make quoted text from URL                     *emmet-quoted-text-url* *<C-Y>A*\n\n  Move cursor to URL\n>\n  http://github.com/\n<\n  Type |<C-Y>A|\n>\n  <blockquote class=\"quote\">\n      <a href=\"http://github.com/\">Secure source code hosting and collaborative development - GitHub</a><br />\n      <p>How does it work? Get up and running in seconds by forking a project, pushing an existing repository...</p>\n      <cite>http://github.com/</cite>\n  </blockquote>\n<\n14. Code Pretty                                       *emmet-code-pretty* *<C-Y>c*\n\n  Select code block, for example select following code from \"int main()\".\n>\n  <p>Writing in C language</p>\n\n  int main() {\n    puts(\"hello world\");\n  }\n<\n  Type |<C-Y>c|\n>\n  <span class=\"Type\">int</span>&nbsp;main() {<br />\n  &nbsp;&nbsp;puts(<span class=\"Constant\">&quot;hello world&quot;</span>);<br />\n  }<br />\n<\n15. Lorem Ipsum                                              *emmet-lorem-ipsum*\n\n  To insert dummy text.\n>\n  lorem\n<\n  Type |<C-Y>,|\n>\n  <div>Adipisicing asperiores deleniti ipsum fuga deserunt perferendis\n  molestiae sunt excepturi aut quo nihil! Optio accusantium corporis molestiae\n  deserunt ab, veritatis commodi. Eius nobis ab deserunt magni iure quo\n  laboriosam laboriosam.</div>\n<\n  For japanese user, put like follow into your g:user_emmet_settings:\n>\n  let g:user_emmet_settings = {\n    ...\n\n    \\  'custom_expands1' : {\n    \\    '^\\%(lorem\\|lipsum\\)\\(\\d*\\)$' : function('emmet#lorem#ja#expand'),\n    \\  },\n\n    ...\n<\n  You will get japanese dummy text.\n>\n==============================================================================\nCUSTOMIZE                                                      *emmet-customize*\n\n1. Key Mapping                                     *emmet-customize-keymappings*\n\n  To specify leading key for expanding or balance tag, or for all,\n  Add this line in your vimrc: >\n>\n  let g:user_emmet_leader_key = '<c-y>'\n<\n  Or if you prefer to map for each actions, then you set each variables.\n\n    'user_emmet_expandabbr_key'\n    'user_emmet_expandword_key'\n    'user_emmet_balancetaginward_key'\n    'user_emmet_balancetagoutward_key'\n    'user_emmet_next_key'\n    'user_emmet_prev_key'\n    'user_emmet_imagesize_key'\n    'user_emmet_togglecomment_key'\n    'user_emmet_splitjointag_key'\n    'user_emmet_removetag_key'\n    'user_emmet_anchorizeurl_key'\n    'user_emmet_anchorizesummary_key'\n\n  Or if you want to use <plug> mappings\n\n    EmmetExpandAbbr\n    EmmetExpandWord\n    EmmetBalanceTagInward\n    EmmetBalanceTagOutward\n    EmmetMoveNext\n    EmmetMovePrev\n    EmmetImageSize\n    EmmetToggleComment\n    EmmetSplitJoinTag\n    EmmetRemoveTag\n    EmmetAnchorizeURL\n    EmmetAnchorizeSummary\n    EmmetMergeLines\n    EmmetCodePretty\n\n  So you can make the mapping affected only for a filetype you want.\n>\n  autocmd FileType css imap <tab> <plug>(EmmetExpandAbbr)\n<\n2. Indent Size                                               *emmet-indent-size*\n\n  To change indent size of html, add this code in your vimrc.\n>\n  let g:user_emmet_settings = {\n  \\  'html' : {\n  \\    'indentation' : ' '\n  \\  },\n  \\}\n<\n  If you prefer to change global indent size then add this.\n>\n  let g:user_emmet_settings = {\n  \\  'indentation' : ' '\n  \\}\n<\n3. Define Tag's Behavior                            *emmet-define-tags-behavior*\n\n  Emmet.vim can change behavior of expanding abbreviation for each\n  filetypes as |Dictionary|. For details, see official site of Emmet.\n  for example, vimmer can add following.\n>\n  let g:user_emmet_settings = {\n  \\  'lang' : 'ja',\n  \\  'html' : {\n  \\    'filters' : 'html',\n  \\    'indentation' : ' '\n  \\  },\n  \\  'perl' : {\n  \\    'indentation' : '  ',\n  \\    'aliases' : {\n  \\      'req' : \"require '|'\"\n  \\    },\n  \\    'snippets' : {\n  \\      'use' : \"use strict\\nuse warnings\\n\\n\",\n  \\      'w' : \"warn \\\"${cursor}\\\";\",\n  \\    },\n  \\  },\n  \\  'php' : {\n  \\    'extends' : 'html',\n  \\    'filters' : 'html,c',\n  \\  },\n  \\  'css' : {\n  \\    'filters' : 'fc',\n  \\  },\n  \\  'javascript' : {\n  \\    'snippets' : {\n  \\      'jq' : \"$(function() {\\n\\t${cursor}${child}\\n});\",\n  \\      'jq:each' : \"$.each(arr, function(index, item)\\n\\t${child}\\n});\",\n  \\      'fn' : \"(function() {\\n\\t${cursor}\\n})();\",\n  \\      'tm' : \"setTimeout(function() {\\n\\t${cursor}\\n}, 100);\",\n  \\    },\n  \\  },\n  \\ 'java' : {\n  \\  'indentation' : '    ',\n  \\  'snippets' : {\n  \\   'main': \"public static void main(String[] args) {\\n\\t|\\n}\",\n  \\   'println': \"System.out.println(\\\"|\\\");\",\n  \\   'class': \"public class | {\\n}\\n\",\n  \\  },\n  \\ },\n  \\}\n<\n4. Complete Tag                                             *emmet-complete-tag*\n\n  If you want to complete tags using |omnifunc| then add this.\n>\n  let g:use_emmet_complete_tag = 1\n<\n\n5. Enable functions in different mode\n\n  If you want to use Emmet only in some modes, set an mode option:\n\n    let g:user_emmet_mode='n'    \"only enable normal mode functions, or\n    let g:user_emmet_mode='inv'  \"enable all functions, which is equal to\n    let g:user_emmet_mode='a'    \"enable all function in all mode.\n\n==============================================================================\nLINKS                                                              *emmet-links*\n\nEmmet official site:\n  http://emmet.io/\n\nzen-coding official site:\n  http://code.google.com/p/zen-coding/\n\nzen-coding official site:\n  http://code.google.com/p/zen-coding/\n\nzencoding.vim:\n  http://mattn.github.com/zencoding-vim\n\ndevelopment repository:\n  https://github.com/mattn/zencoding-vim\n\nmy blog posts about zencoding-vim:\n  http://mattn.kaoriya.net/software/vim/20100222103327.htm\n  http://mattn.kaoriya.net/software/vim/20100306021632.htm\n\nJapanese blog posts about zencoding-vim:\n  http://d.hatena.ne.jp/idesaku/20100424/1272092255\n  http://d.hatena.ne.jp/griefworker/20110118/vim_zen_coding\n  http://d.hatena.ne.jp/sakurako_s/20110126/1295988873\n  http://looxu.blogspot.jp/2010/02/zencodingvimhtml.html\n\ntutorial translated in Chinese:\n  http://www.zfanw.com/blog/zencoding-vim-tutorial-chinese.html\n\n==============================================================================\nTODO                                                                *emmet-todo*\n  * wrapping inline selected.\n  * more documents.\n  * more contributor.\n  * more time to improve emmet.vim.\n\n==============================================================================\nvim:tw=78:ts=8:ft=help:norl:noet:fen:fdl=0:\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/emmet.vim.vimup",
    "content": "script_name: Emmet.vim\nscript_id: '2981'\nscript_type: utility\nscript_package: emmet-vim.zip\nscript_version: '0.83'\nrequired_vim_version: '7.0'\nsummary: vim plugins for HTML and CSS hi-speed coding.\n\ndetailed_description: |\n\n  This is vim script support expanding abbreviation like emmet.\n  ref: http://emmet.io/\n\n  There is a movie using emmet.vim\n  ref: http://mattn.github.com/emmet-vim\n\n  Source Repository.\n  ref: http://github.com/mattn/emmet-vim\n\n  Type abbreviation\n     +-------------------------------------\n     | html:5_\n     +-------------------------------------\n  \"_\" is a cursor position. and type \"<c-y>,\" (Ctrl + y and Comma)\n  NOTE: Don't worry about key map. you can change it easily.\n     +-------------------------------------\n     | <!DOCTYPE HTML>\n     | <html lang=\"en\">\n     | <head>\n     |     <title></title>\n     |     <meta charset=\"UTF-8\">\n     | </head>\n     | <body>\n     |      _\n     | </body>\n     | </html>\n     +-------------------------------------\n  Type following\n     +-------------------------------------\n     | div#foo$*2>div.bar\n     +-------------------------------------\n  And type \"<c-y>,\"\n     +-------------------------------------\n     |<div id=\"foo1\">\n     |    <div class=\"bar\">_</div>\n     |</div>\n     |<div id=\"foo2\">\n     |    <div class=\"bar\"></div>\n     |</div>\n     | _\n     +-------------------------------------\n\n  Tutorial:\n\n    http://github.com/mattn/emmet-vim/raw/master/TUTORIAL\n\n  How work this:\n\n    http://mattn.github.com/emmet-vim\n\n  Tips:\n\n  You can customize behavior of expanding with overriding config.\n  This configuration will be merged at loading plugin.\n\n    let g:user_emmet_settings = {\n    \\  'indentation' : '  ',\n    \\  'perl' : {\n    \\    'aliases' : {\n    \\      'req' : 'require '\n    \\    },\n    \\    'snippets' : {\n    \\      'use' : \"use strict\\nuse warnings\\n\\n\",\n    \\      'warn' : \"warn \\\"|\\\";\",\n    \\    }\n    \\  }\n    \\}\n\n    let g:user_emmet_expandabbr_key = '<c-e>'\n\n    let g:use_emmet_complete_tag = 1\n\n  You can set language attribute in html using emmet_settings['lang'].\n\ninstall_details: |\n\n  # cd ~/.vim\n  # unzip emmet-vim.zip\n\n  or if you install pathogen.vim:\n\n  # cd ~/.vim/bundle # or make directory\n  # unzip /path/to/emmet-vim.zip\n\n  if you get sources from repository:\n\n  # cd ~/.vim/bundle # or make directory\n  # git clone http://github.com/mattn/emmet-vim.git\n\nversions:\n- '0.83': |\n   This is an upgrade for Emmet.vim: lot of bug fixes.\n- '0.82': |\n   This is an upgrade for Emmet.vim: many bug fixes.\n- '0.81': |\n   Release of Emmet.vim: renamed from ZenCoding.vim.\n- '0.80': |\n   This is an upgrade for ZenCoding.vim: add emmet features.\n- '0.74': |\n   This is an upgrade for ZenCoding.vim: many bug fixes.\n- '0.73': |\n   This is an upgrade for ZenCoding.vim: many bug fixes. and support slim format (experimental).\n- '0.72': |\n   This is an upgrade for ZenCoding.vim:\n   [fix] fix finding tokens.\n- '0.71': |\n   This is an upgrade for ZenCoding.vim:\n   [fix] fix finding begin of tokens.\n- '0.70': |\n   This is an upgrade for ZenCoding.vim:\n   [mod] Changed behavior of expanding. \"div div>a|\" should keep first div element.\n   [add] Supported slim formatter.\n- '0.60': |\n   This is an upgrade for ZenCoding.vim:\n   [fix] fixed expanding {{}}.\n- '0.59': |\n   This is an upgrade for ZenCoding.vim:\n   [fix] fixed toggleComment and mny bugs.\n- '0.58': |\n   This is an upgrade for ZenCoding.vim:\n   [fix] fixed 'foo+' style expandos.\n- '0.57': |\n   This is an upgrade for ZenCoding.vim:\n   [fix] fixed expandos that don't work 'choose' in xsl.\n- '0.56': |\n   This is an upgrade for ZenCoding.vim:\n   [fix] fixed contents parser.\n- '0.55': |\n   uploaded again: sorry, files was old.\n- '0.54': |\n   [add] support sass, xsd.\n   [fix] expanding with html tag.\n   uploaded again: sorry, fileformat was DOS.\n- '0.53': |\n   [fix] gif width/height was swapped.\n- '0.52': |\n   [fix] broken wrap expanding.\n- '0.51': |\n   This is an upgrade for ZenCoding.vim:\n   [fix] wrap expanding with '&'.\n   [fix] expand .content to class=\"content\".\n   [fix] haml expanding.\n   [fix] bg+ snippet\n- '0.50': |\n   This is an upgrade for ZenCoding.vim:\n   [fix] fixed parsing '#{{foo}}' and '.{{bar}}'.\n- '0.49': |\n   This is an upgrade for ZenCoding.vim:\n   [doc] add help manual.\n- '0.48': |\n   This is an upgrade for ZenCoding.vim:\n   [fix] install mappings to global.\n- '0.47': |\n   This is an upgrade for ZenCoding.vim:\n   [drastic changes] enable autoload. you should whole replace older files.\n   package was empty. upload again.\n- '0.46': |\n   This is an upgrade for ZenCoding.vim:\n   [drastic changes] enable autoload. you should whole replace older files.\n- '0.45': |\n   This is an upgrade for ZenCoding.vim:\n   fixed attribute parsing like: a[href=\"hello', world\" rel].\n- '0.44': |\n   This is an upgrade for ZenCoding.vim:\n   fixed checking whether have mapping using maparg() / hasmapto().\n- '0.43': |\n   This is an upgrade for ZenCoding.vim:\n   fixed behavior for nested block. like \"html:5>#page>(header#globalHeader>(hgroup>h1+h2)+(nav>ul>li*3>a)+(form>p.siteSearch>input+input[type=button]))+(#contents>(#main>(section>h2+p*5)+p.pagetop>a[href=#page])+(#sub>p+(nav>ul>li>a)))+(footer#globalFoooter>(ul>li>a)+(p.copyright>small))\"\n- '0.42': |\n   This is an upgrade for ZenCoding.vim:\n   fixed select/option indent.\n- '0.41': |\n   This is an upgrade for ZenCoding.vim:\n   fixed default filter. when using 'e' filter, output become empty.\n- '0.40': |\n   This is an upgrade for ZenCoding.vim:\n   add the pure vimscript code for 'get image size'. you can use it without perl interface just now.\n   change key assign of ZenCodingExpandWord from ',' to ';'. it don't effect to most users.\n- '0.39': |\n   This is an upgrade for ZenCoding.vim: fixed problem about 'selection'. see http://github.com/mattn/zencoding-vim/issues/#issue/2\n- '0.38': |\n   This is an upgrade for ZenCoding.vim: use v7h\"_s instead of v7hs for backspace.\n- '0.37': |\n   This is an upgrade for ZenCoding.vim: fixed problem that won't working with some 'backspace' options.\n- '0.36': |\n   This is an upgrade for ZenCoding.vim: fixed problem that filter does not work.\n- '0.35': |\n   This is an upgrade for ZenCoding.vim: enable zencoding for other languages. (meaning php also)\n- '0.34': |\n   This is an upgrade for ZenCoding.vim: enable zencoding for xsl. (you should add ~/.vim/ftplugin/xslt/zencoding.vim)\n- '0.33': |\n   This is an upgrade for ZenCoding.vim: fixed problem breaking multibyte when cursor is in a part of line. enabled zencoding for javascript in html.\n- '0.32': |\n   This is an upgrade for ZenCoding.vim: fixed indentation. supported extends so that you can enable zencoding for php/xhtml/haml other's section 14 in http://github.com/mattn/zencoding-vim/raw/master/TUTORIAL\n- '0.31': |\n   This is an upgrade for ZenCoding.vim: fixed indentation and $$$ problem. fixed about missing support multiple classes.\n- '0.30': |\n   This is an upgrade for ZenCoding.vim: Fixed key assign.\n- '0.29': |\n   This is an upgrade for ZenCoding.vim: Changed leading key to '<c-y>' from '<c-z>'.\n- '0.28': |\n   This is an upgrade for ZenCoding.vim: supported 'Balance Tag Inward/Outward', 'Go to Next/Previous Edit Point', 'Update <img> Size', 'Remove Tag', 'Split/Join Tag', 'Toggle Comment'\n- '0.27': |\n   This is an upgrade for ZenCoding.vim: fixed problem that can't work on the part of multibyte characters. fixed inline elements behavior.\n- '0.26': |\n   This is an upgrade for ZenCoding.vim: The count of '(((a#foo + a#bar)*2)*3)' should be 12.\n- '0.25': |\n   This is an upgrade for ZenCoding.vim: store undo before working. good luck about 'table>(tr>td*3)*4'.\n- '0.24': |\n   This is an upgrade for ZenCoding.vim: fixed behavior of parsing area of visual selection.\n- '0.23': |\n   This is an upgrade for ZenCoding.vim: pre-expand '#header>li<#content' to 'div#header>li<div#content'. support () expression.\n- '0.22': |\n   This is an upgrade for ZenCoding.vim: expand 'ul+' to 'ul>li'. fix undo ring. support visual selection. when type trigger key on visual select, it request you leader like 'ul>li'. if you give 'ul>li*' as leader, you'll get each separate 'ul>li' tags. and when you give 'blockquote' as leader, you'll get blocked text.\n- '0.21': |\n   This is an upgrade for ZenCoding.vim: treat xhtml as html.\n- '0.20': |\n   This is an upgrade for ZenCoding.vim: add option use_zen_complete_tag for complete abbr.\n- '0.19': |\n   This is an upgrade for ZenCoding.vim: fixed problem that couldn't expand 'link:css' correctly.\n- '0.18': |\n   This is an upgrade for ZenCoding.vim: ignore duplicate key map.\n- '0.17': |\n   This is an upgrade for ZenCoding.vim: fixed key map.\n- '0.16': |\n   This is an upgrade for ZenCoding.vim: fixed problem 'endless loop'.\n- '0.15': |\n   This is an upgrade for ZenCoding.vim: set default filetype to 'html'.\n- '0.14': |\n   This is an upgrade for ZenCoding.vim: fixed tag name like 'fs:n' in 'css'.\n- '0.14': |\n   This is an upgrade for ZenCoding.vim: indentation for each languages.\n- '0.13': |\n   This is an upgrade for ZenCoding.vim: user key map.\n- '0.12': |\n   This is an upgrade for ZenCoding.vim: few extensive notation.\n- '0.11': |\n   This is an upgrade for ZenCoding.vim: fixed indent.\n- '0.10': |\n   This is an upgrade for ZenCoding.vim: fixed behavior of '+' operator\n- '0.9': |\n   This is an upgrade for ZenCoding.vim: fixed single line behavior\n- '0.8': |\n   This is an upgrade for ZenCoding.vim: support 'a[href=http://www.google.com]{Google}'\n- '0.7': |\n   This is an upgrade for ZenCoding.vim: fixed behavior in 'a+b'.\n- '0.6': |\n   This is an upgrade for ZenCoding.vim: fixed strange behavior about '<a href=\"\">b_</a>'.\n- '0.5': |\n   This is an upgrade for ZenCoding.vim: recover rest part in line.\n- '0.4': |\n   This is an upgrade for ZenCoding.vim: fixed cursor position. fixed ${lang} replacement.\n- '0.3': |\n   This is an upgrade for ZenCoding.vim: fixed line expanding.\n- '0.2': |\n   This is an upgrade for ZenCoding.vim: fixed problem that moving cursor with expanding.\n- '0.1': |\n   Initial upload\n\n# __END__\n# vim: filetype=yaml\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/plugin/emmet.vim",
    "content": "\"=============================================================================\n\" File: emmet.vim\n\" Author: Yasuhiro Matsumoto <mattn.jp@gmail.com>\n\" Last Change: 28-Nov-2013.\n\" Version: 0.83\n\" WebPage: http://github.com/mattn/emmet-vim\n\" Description: vim plugins for HTML and CSS hi-speed coding.\n\" SeeAlso: http://emmet.io/\n\" Usage:\n\"\n\"   This is vim script support expanding abbreviation like emmet.\n\"   ref: http://emmet.io/\n\"\n\"   Type abbreviation\n\"      +-------------------------------------\n\"      | html:5_\n\"      +-------------------------------------\n\"   \"_\" is a cursor position. and type \"<c-y>,\" (Ctrl+y and Comma)\n\"   NOTE: Don't worry about key map. you can change it easily.\n\"      +-------------------------------------\n\"      | <!DOCTYPE HTML>\n\"      | <html lang=\"en\">\n\"      | <head>\n\"      |     <title></title>\n\"      |     <meta charset=\"UTF-8\">\n\"      | </head>\n\"      | <body>\n\"      |      _\n\"      | </body>\n\"      | </html>\n\"      +-------------------------------------\n\"   Type following\n\"      +-------------------------------------\n\"      | div#foo$*2>div.bar\n\"      +-------------------------------------\n\"   And type \"<c-y>,\"\n\"      +-------------------------------------\n\"      |<div id=\"foo1\">\n\"      |    <div class=\"bar\">_</div>\n\"      |</div>\n\"      |<div id=\"foo2\">\n\"      |    <div class=\"bar\"></div>\n\"      |</div>\n\"      +-------------------------------------\n\"\n\" Tips:\n\"\n\"   You can customize behavior of expanding with overriding config.\n\"   This configuration will be marged at loading plugin.\n\"\n\"     let g:user_emmet_settings = {\n\"     \\  'indentation' : '  ',\n\"     \\  'perl' : {\n\"     \\    'aliases' : {\n\"     \\      'req' : 'require '\n\"     \\    },\n\"     \\    'snippets' : {\n\"     \\      'use' : \"use strict\\nuse warnings\\n\\n\",\n\"     \\      'warn' : \"warn \\\"|\\\";\",\n\"     \\    }\n\"     \\  }\n\"     \\}\n\"\n\"   You can set language attribute in html using 'emmet_settings.lang'.\n\"\n\" GetLatestVimScripts: 2981 1 :AutoInstall: emmet.vim\n\" script type: plugin\n\nif &cp || v:version < 702 || (exists('g:loaded_emmet_vim') && g:loaded_emmet_vim)\n  finish\nendif\nlet g:loaded_emmet_vim = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nif !exists('g:emmet_html5')\n  let g:emmet_html5 = 1\nendif\n\nif !exists('g:emmet_docroot')\n  let g:emmet_docroot = {}\nendif\n\nif !exists('g:emmet_debug')\n  let g:emmet_debug = 0\nendif\n\nif !exists('g:emmet_curl_command')\n  let g:emmet_curl_command = 'curl -s -L -A Mozilla/5.0'\nendif\n\nif exists('g:user_emmet_complete_tag') && g:user_emmet_complete_tag\n  setlocal omnifunc=emmet#completeTag\nendif\n\nif !exists('g:user_emmet_leader_key')\n  let g:user_emmet_leader_key = '<c-y>'\nendif\n\nfunction! s:install_plugin(mode, buffer)\n  let buffer = a:buffer ? '<buffer>' : ''\n  for item in [\n  \\ {'mode': 'i', 'var': 'user_emmet_expandabbr_key', 'key': ',', 'plug': 'EmmetExpandAbbr', 'func': '<c-r>=emmet#util#closePopup()<cr><c-r>=emmet#expandAbbr(0,\"\")<cr><right>'},\n  \\ {'mode': 'n', 'var': 'user_emmet_expandabbr_key', 'key': ',', 'plug': 'EmmetExpandAbbr', 'func': ':call emmet#expandAbbr(3,\"\")<cr>'},\n  \\ {'mode': 'v', 'var': 'user_emmet_expandabbr_key', 'key': ',', 'plug': 'EmmetExpandAbbr', 'func': ':call emmet#expandAbbr(2,\"\")<cr>'},\n  \\ {'mode': 'i', 'var': 'user_emmet_expandword_key', 'key': ';', 'plug': 'EmmetExpandWord', 'func': '<c-r>=emmet#util#closePopup()<cr><c-r>=emmet#expandAbbr(1,\"\")<cr><right>'},\n  \\ {'mode': 'n', 'var': 'user_emmet_expandword_key', 'key': ';', 'plug': 'EmmetExpandWord', 'func': ':call emmet#expandAbbr(1,\"\")<cr>'},\n  \\ {'mode': 'i', 'var': 'user_emmet_balancetaginward_key', 'key': 'd', 'plug': 'EmmetBalanceTagInward', 'func': '<esc>:call emmet#balanceTag(1)<cr>'},\n  \\ {'mode': 'n', 'var': 'user_emmet_balancetaginward_key', 'key': 'd', 'plug': 'EmmetBalanceTagInward', 'func': ':call emmet#balanceTag(1)<cr>'},\n  \\ {'mode': 'v', 'var': 'user_emmet_balancetaginward_key', 'key': 'd', 'plug': 'EmmetBalanceTagInward', 'func': ':call emmet#balanceTag(2)<cr>'},\n  \\ {'mode': 'i', 'var': 'user_emmet_balancetagoutward_key', 'key': 'D', 'plug': 'EmmetBalanceTagOutward', 'func': '<esc>:call emmet#balanceTag(-1)<cr>'},\n  \\ {'mode': 'n', 'var': 'user_emmet_balancetagoutward_key', 'key': 'D', 'plug': 'EmmetBalanceTagOutward', 'func': ':call emmet#balanceTag(-1)<cr>'},\n  \\ {'mode': 'v', 'var': 'user_emmet_balancetagoutward_key', 'key': 'D', 'plug': 'EmmetBalanceTagOutward', 'func': ':call emmet#balanceTag(-2)<cr>'},\n  \\ {'mode': 'i', 'var': 'user_emmet_next_key', 'key': 'n', 'plug': 'EmmetMoveNext', 'func': '<esc>:call emmet#moveNextPrev(0)<cr>'},\n  \\ {'mode': 'n', 'var': 'user_emmet_next_key', 'key': 'n', 'plug': 'EmmetMoveNext', 'func': ':call emmet#moveNextPrev(0)<cr>'},\n  \\ {'mode': 'i', 'var': 'user_emmet_prev_key', 'key': 'N', 'plug': 'EmmetMovePrev', 'func': '<esc>:call emmet#moveNextPrev(1)<cr>'},\n  \\ {'mode': 'n', 'var': 'user_emmet_prev_key', 'key': 'N', 'plug': 'EmmetMovePrev', 'func': ':call emmet#moveNextPrev(1)<cr>'},\n  \\ {'mode': 'i', 'var': 'user_emmet_imagesize_key', 'key': 'i', 'plug': 'EmmetImageSize', 'func': '<c-r>=emmet#util#closePopup()<cr><c-r>=emmet#imageSize()<cr><right>'},\n  \\ {'mode': 'n', 'var': 'user_emmet_imagesize_key', 'key': 'i', 'plug': 'EmmetImageSize', 'func': ':call emmet#imageSize()<cr>'},\n  \\ {'mode': 'i', 'var': 'user_emmet_togglecomment_key', 'key': '/', 'plug': 'EmmetToggleComment', 'func': '<c-r>=emmet#util#closePopup()<cr><c-r>=emmet#toggleComment()<cr><right>'},\n  \\ {'mode': 'n', 'var': 'user_emmet_togglecomment_key', 'key': '/', 'plug': 'EmmetToggleComment', 'func': ':call emmet#toggleComment()<cr>'},\n  \\ {'mode': 'i', 'var': 'user_emmet_splitjointag_key', 'key': 'j', 'plug': 'EmmetSplitJoinTag', 'func': '<esc>:call emmet#splitJoinTag()<cr>'},\n  \\ {'mode': 'n', 'var': 'user_emmet_splitjointag_key', 'key': 'j', 'plug': 'EmmetSplitJoinTag', 'func': ':call emmet#splitJoinTag()<cr>'},\n  \\ {'mode': 'i', 'var': 'user_emmet_removetag_key', 'key': 'k', 'plug': 'EmmetRemoveTag', 'func': '<c-r>=emmet#util#closePopup()<cr><c-r>=emmet#removeTag()<cr><right>'},\n  \\ {'mode': 'n', 'var': 'user_emmet_removetag_key', 'key': 'k', 'plug': 'EmmetRemoveTag', 'func': ':call emmet#removeTag()<cr>'},\n  \\ {'mode': 'i', 'var': 'user_emmet_anchorizeurl_key', 'key': 'a', 'plug': 'EmmetAnchorizeURL', 'func': '<c-r>=emmet#util#closePopup()<cr><c-r>=emmet#anchorizeURL(0)<cr><right>'},\n  \\ {'mode': 'n', 'var': 'user_emmet_anchorizeurl_key', 'key': 'a', 'plug': 'EmmetAnchorizeURL', 'func': ':call emmet#anchorizeURL(0)<cr>'},\n  \\ {'mode': 'i', 'var': 'user_emmet_anchorizesummary_key', 'key': 'A', 'plug': 'EmmetAnchorizeSummary', 'func': '<c-r>=emmet#util#closePopup()<cr><c-r>=emmet#anchorizeURL(1)<cr><right>'},\n  \\ {'mode': 'n', 'var': 'user_emmet_anchorizesummary_key', 'key': 'A', 'plug': 'EmmetAnchorizeSummary', 'func': ':call emmet#anchorizeURL(1)<cr>'},\n  \\ {'mode': 'v', 'var': 'user_emmet_mergelines_key', 'key': 'm', 'plug': 'EmmetMergeLines', 'func': ':call emmet#mergeLines()<cr>'},\n  \\ {'mode': 'v', 'var': 'user_emmet_codepretty_key', 'key': 'c', 'plug': 'EmmetCodePretty', 'func': ':call emmet#codePretty()<cr>'},\n  \\]\n\n    if a:mode != 'a' && stridx(a:mode, item.mode) == -1\n      continue\n    endif\n    if !hasmapto('<plug>(' . item.plug . ')', item.mode)\n      exe item.mode . 'noremap '. buffer .' <plug>(' . item.plug . ') ' . item.func\n    endif\n    if exists('g:' . item.var)\n      let key = eval('g:' . item.var)\n    else\n      let key = g:user_emmet_leader_key . item.key\n    endif\n    if len(maparg(key, item.mode)) == 0\n      exe item.mode . 'map ' . buffer . ' <unique> ' . key . ' <plug>(' . item.plug . ')'\n    endif\n  endfor\nendfunction\n\ncommand! -nargs=0 EmmetInstall call <SID>install_plugin(get(g:, 'user_emmet_mode', 'a'), 1)\n\nif get(g:, 'user_emmet_install_global', 1)\n  call s:install_plugin(get(g:, 'user_emmet_mode', 'a'), 0)\nendif\n\nif get(g:, 'user_emmet_install_command', 1)\n  command! -nargs=1 Emmet call emmet#expandAbbr(4, <q-args>)\nendif\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim:set et:\n"
  },
  {
    "path": ".vim/bundle/emmet-vim/unittest.vim",
    "content": "\" {{{\nlet s:sfile = expand('<sfile>')\n\nfunction! s:reload(d)\n  exe \"so\" a:d.\"/plugin/emmet.vim\"\n  for f in split(globpath(a:d, 'autoload/**/*.vim'), \"\\n\")\n    silent! exe \"so\" f\n  endfor\nendfunction\n\nfunction! s:show_type(type)\n  echohl Search | echon \"[\" a:type \"]\\n\" | echohl None\n  echo \"\\r\"\nendfunction\n\nfunction! s:show_category(category)\n  echohl MatchParen | echon \"[\" a:category \"]\\n\" | echohl None\n  echo \"\\r\"\nendfunction\n\nfunction! s:show_pass(pass)\n  echohl Title | echo \"pass\".a:pass.\"\\n\" | echohl None\nendfunction\n\nfunction! s:show_done()\n  echohl IncSearch | echo \"done\" | echohl None\nendfunction\n\nfunction! s:escape(str)\n  let str = a:str\n  let str = substitute(str, \"\\n\", '\\\\n', 'g')\n  let str = substitute(str, \"\\t\", '\\\\t', 'g')\n  return str\nendfunction\n\nfunction! s:show_title(no, title)\n  let title = s:escape(a:title)\n  let width = &columns - 23\n  echohl MoreMsg | echon \"\\rtesting #\".printf(\"%03d\", a:no)\n  echohl None | echon \": \" . (len(title) < width ? (title.repeat(' ', width-len(title))) : strpart(title, 0, width)) . ' ... '\nendfunction\n\nfunction! s:show_skip(no, title)\n  let title = s:escape(a:title)\n  let width = &columns - 23\n  echohl WarningMsg | echon \"\\rskipped #\".printf(\"%03d\", a:no)\n  echohl None | echon \": \" . (len(title) < width ? (title.repeat(' ', width-len(title))) : strpart(title, 0, width)) . ' ... '\n  echo \"\"\nendfunction\n\nfunction! s:show_ok()\n  echohl Title | echon \"ok\\n\" | echohl None\n  echo \"\"\nendfunction\n\nfunction! s:show_ng(no, expect, got)\n  echohl WarningMsg | echon \"ng\\n\" | echohl None\n  echohl ErrorMsg | echo \"failed test #\".a:no | echohl None\n  set more\n  echohl WarningMsg | echo printf(\"expect(%d):\", len(a:expect)) | echohl None\n  echo join(split(a:expect, \"\\n\", 1), \"|\\n\")\n  echohl WarningMsg | echo printf(\"got(%d):\", len(a:got)) | echohl None\n  echo join(split(a:got, \"\\n\", 1), \"|\\n\")\n  let cs = split(a:expect, '\\zs')\n  for c in range(len(cs))\n    if c < len(a:got)\n      if a:expect[c] != a:got[c]\n        echohl WarningMsg | echo \"differ at:\" | echohl None\n        echo a:expect[c :-1]\n        break\n      endif\n    endif\n  endfor\n  echo \"\"\n  throw \"stop\"\nendfunction\n\nfunction! s:test(...)\n  let type = get(a:000, 0, '')\n  let name = get(a:000, 1, '')\n  let index = get(a:000, 2, '')\n\n  let testgroups = eval(join(filter(split(substitute(join(readfile(s:sfile), \"\\n\"), '.*\\nfinish\\n', '', ''), '\\n', 1), \"v:val !~ '^\\\"'\")))\n  for testgroup in testgroups\n    if len(type) > 0 && testgroup.type != type | continue | endif\n    call s:show_type(testgroup.type)\n    for category in testgroup.categories\n      if len(name) > 0 && substitute(category.name,' ','_','g') != name | continue | endif\n      call s:show_category(category.name)\n      let tests = category.tests\n      let start = reltime()\n      for n in range(len(tests))\n        if len(index) > 0 && n != index | continue | endif\n        let query = tests[n].query\n        let options = has_key(tests[n], 'options') ? tests[n].options : {}\n        let result = tests[n].result\n        if has_key(tests[n], 'skip') && tests[n].skip != 0\n          call s:show_skip(n+1, query)\n          continue\n        endif\n        let oldoptions = {}\n        for opt in keys(options)\n          if has_key(g:, opt)\n            let oldoptions[opt] = get(g:, opt)\n          endif\n          let g:[opt] = options[opt]\n        endfor\n        if stridx(query, '$$$$') != -1\n          silent! 1new\n          silent! exe \"setlocal ft=\".testgroup.type\n          silent! let key = matchstr(query, '.*\\$\\$\\$\\$\\zs.*\\ze\\$\\$\\$\\$')\n          if len(key) > 0\n            exe printf('let key = \"%s\"', key)\n          else\n            let key = \"\\<c-y>,\"\n          endif\n          silent! let query = substitute(query, '\\$\\$\\$\\$.*\\$\\$\\$\\$', '$$$$', '')\n          silent! call setline(1, split(query, \"\\n\"))\n          let cmd = \"normal gg0/\\\\$\\\\$\\\\$\\\\$\\ri\\<del>\\<del>\\<del>\\<del>\".key\n          if stridx(result, '$$$$') != -1\n            let cmd .= '$$$$'\n          endif\n          silent! exe cmd\n          unlet! res | let res = join(getline(1, line('$')), \"\\n\")\n          silent! bw!\n          call s:show_title(n+1, query)\n        else\n          call s:show_title(n+1, query)\n          unlet! res | let res = emmet#expandWord(query, testgroup.type, 0)\n        endif\n        for opt in keys(options)\n          if has_key(oldoptions, opt)\n            let g:[opt] = oldoptions[opt]\n          else\n            call remove(g:, opt)\n          endif\n        endfor\n        if stridx(result, '$$$$') != -1\n          if res ==# result\n            call s:show_ok()\n          else\n            call s:show_ng(n+1, result, res)\n          endif\n        else\n          if res ==# result\n            call s:show_ok()\n          else\n            call s:show_ng(n+1, result, res)\n          endif\n        endif\n      endfor\n      call s:show_pass(reltimestr(reltime(start)))\n    endfor\n  endfor\nendfunction\n\nfunction! s:do_tests(...)\n  try\n    if exists('g:user_emmet_settings')\n      let s:old_user_emmet_settings = g:user_emmet_settings\n    endif\n    let g:user_emmet_settings = { 'indentation': \"\\t\" }\n    let oldmore = &more\n    call s:reload(fnamemodify(s:sfile, ':h'))\n    let &more = 0\n    call call('s:test', a:000)\n    call s:show_done()\n  catch\n    echohl ErrorMsg | echomsg v:exception | echohl None\n  finally\n    let &more=oldmore\n    if exists('s:old_user_emmet_settings')\n      let g:user_emmet_settings = s:old_user_emmet_settings\n    endif\n  endtry\nendfunction\n\nfunction! g:emmet_unittest_complete(arglead, cmdline, cmdpos)\n  let args = split(a:cmdline, '\\s\\+', 1)\n  let testgroups = eval(join(filter(split(substitute(join(readfile(s:sfile), \"\\n\"), '.*\\nfinish\\n', '', ''), '\\n', 1), \"v:val !~ '^\\\"'\")))\n  try\n    if len(args) == 2\n      return filter(map(testgroups, 'v:val.type'), 'stridx(v:val,args[1])!=-1')\n    elseif len(args) == 3\n      return map(filter(testgroups, 'v:val.type==args[1]')[0].categories, 'substitute(v:val.name,\" \",\"_\",\"g\")')\n    endif\n  catch\n  endtry\n  return []\nendfunction\n\ncommand! -nargs=* -complete=customlist,g:emmet_unittest_complete EmmetUnitTest call s:do_tests(<f-args>)\nif s:sfile == expand('%:p')\n  EmmetUnitTest\nendif\n\" }}}\n\nfinish\n[\n{ 'test-html': \"{{{\",\n  'type': \"html\",\n  'categories': [\n    {\n      'name': 'expand abbreviation',\n      'tests': [\n        {\n          'query': \"div\",\n          'result': \"<div></div>\\n\",\n        },\n        {\n          'query': \"div#wrapper\",\n          'result': \"<div id=\\\"wrapper\\\"></div>\\n\",\n        },\n        {\n          'query': \"div.box\",\n          'result': \"<div class=\\\"box\\\"></div>\\n\",\n        },\n        {\n          'query': \"a[title=TITLE]\",\n          'result': \"<a href=\\\"\\\" title=\\\"TITLE\\\"></a>\\n\",\n        },\n        {\n          'query': \"div#wrapper.box\",\n          'result': \"<div id=\\\"wrapper\\\" class=\\\"box\\\"></div>\\n\",\n        },\n        {\n          'query': \"div#wrapper.box.current\",\n          'result': \"<div id=\\\"wrapper\\\" class=\\\"box current\\\"></div>\\n\",\n        },\n        {\n          'query': \"div#wrapper.box.current[title=TITLE rel]\",\n          'result': \"<div id=\\\"wrapper\\\" class=\\\"box current\\\" title=\\\"TITLE\\\" rel=\\\"\\\"></div>\\n\",\n        },\n        {\n          'query': \"div#main+div#sub\",\n          'result': \"<div id=\\\"main\\\"></div>\\n<div id=\\\"sub\\\"></div>\\n\",\n        },\n        {\n          'query': \"div#main>div#sub\",\n          'result': \"<div id=\\\"main\\\">\\n\\t<div id=\\\"sub\\\"></div>\\n</div>\\n\",\n        },\n        {\n          'query': \"html:xt>div#header>div#logo+ul#nav>li.item-$*5>a\",\n          'result': \"<!DOCTYPE html PUBLIC \\\"-//W3C//DTD XHTML 1.0 Transitional//EN\\\" \\\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\\\">\\n<html xmlns=\\\"http://www.w3.org/1999/xhtml\\\" xml:lang=\\\"en\\\">\\n<head>\\n\\t<meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=UTF-8\\\" />\\n\\t<title></title>\\n</head>\\n<body>\\n\\t<div id=\\\"header\\\">\\n\\t\\t<div id=\\\"logo\\\"></div>\\n\\t\\t<ul id=\\\"nav\\\">\\n\\t\\t\\t<li class=\\\"item-1\\\"><a href=\\\"\\\"></a></li>\\n\\t\\t\\t<li class=\\\"item-2\\\"><a href=\\\"\\\"></a></li>\\n\\t\\t\\t<li class=\\\"item-3\\\"><a href=\\\"\\\"></a></li>\\n\\t\\t\\t<li class=\\\"item-4\\\"><a href=\\\"\\\"></a></li>\\n\\t\\t\\t<li class=\\\"item-5\\\"><a href=\\\"\\\"></a></li>\\n\\t\\t</ul>\\n\\t</div>\\n\\t\\n</body>\\n</html>\",\n        },\n        {\n          'query': \"ol>li*2\",\n          'result': \"<ol>\\n\\t<li></li>\\n\\t<li></li>\\n</ol>\\n\",\n        },\n        {\n          'query': \"a\",\n          'result': \"<a href=\\\"\\\"></a>\\n\",\n        },\n        {\n          'query': \"obj\",\n          'result': \"<object data=\\\"\\\" type=\\\"\\\"></object>\\n\",\n        },\n        {\n          'query': \"cc:ie6>p+blockquote#sample$.so.many.classes*2\",\n          'result': \"<!--[if lte IE 6]>\\n\\t<p></p>\\n\\t<blockquote id=\\\"sample1\\\" class=\\\"so many classes\\\"></blockquote>\\n\\t<blockquote id=\\\"sample2\\\" class=\\\"so many classes\\\"></blockquote>\\n\\t\\n<![endif]-->\",\n        },\n        {\n          'query': \"html:4t>div#wrapper>div#header+div#contents+div#footer\",\n          'result': \"<!DOCTYPE HTML PUBLIC \\\"-//W3C//DTD HTML 4.01 Transitional//EN\\\" \\\"http://www.w3.org/TR/html4/loose.dtd\\\">\\n<html lang=\\\"en\\\">\\n<head>\\n\\t<meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=UTF-8\\\">\\n\\t<title></title>\\n</head>\\n<body>\\n\\t<div id=\\\"wrapper\\\">\\n\\t\\t<div id=\\\"header\\\"></div>\\n\\t\\t<div id=\\\"contents\\\"></div>\\n\\t\\t<div id=\\\"footer\\\"></div>\\n\\t</div>\\n\\t\\n</body>\\n</html>\",\n        },\n        {\n          'query': \"a[href=http://www.google.com/].foo#hoge\",\n          'result': \"<a id=\\\"hoge\\\" class=\\\"foo\\\" href=\\\"http://www.google.com/\\\"></a>\\n\",\n        },\n        {\n          'query': \"a[href=http://www.google.com/]{Google}\",\n          'result': \"<a href=\\\"http://www.google.com/\\\">Google</a>\\n\",\n        },\n        {\n          'query': \"{Emmet}\",\n          'result': \"Emmet\",\n        },\n        {\n          'query': \"a+b\",\n          'result': \"<a href=\\\"\\\"></a>\\n<b></b>\\n\",\n        },\n        {\n          'query': \"a>b>i<b\",\n          'result': \"<a href=\\\"\\\"><b><i></i></b><b></b></a>\\n\",\n        },\n        {\n          'query': \"a>b>i^b\",\n          'result': \"<a href=\\\"\\\"><b><i></i></b><b></b></a>\\n\",\n        },\n        {\n          'query': \"a>b>i<<b\",\n          'result': \"<a href=\\\"\\\"><b><i></i></b></a>\\n<b></b>\\n\",\n        },\n        {\n          'query': \"a>b>i^^b\",\n          'result': \"<a href=\\\"\\\"><b><i></i></b></a>\\n<b></b>\\n\",\n        },\n        {\n          'query': \"blockquote>b>i<<b\",\n          'result': \"<blockquote><b><i></i></b></blockquote>\\n<b></b>\\n\",\n        },\n        {\n          'query': \"blockquote>b>i^^b\",\n          'result': \"<blockquote><b><i></i></b></blockquote>\\n<b></b>\\n\",\n        },\n        {\n          'query': \"a[href=foo][class=bar]\",\n          'result': \"<a class=\\\"bar\\\" href=\\\"foo\\\"></a>\\n\",\n        },\n        {\n          'query': \"a[a=b][b=c=d][e]{foo}*2\",\n          'result': \"<a href=\\\"e\\\" a=\\\"b\\\" b=\\\"c=d\\\">foo</a>\\n<a href=\\\"e\\\" a=\\\"b\\\" b=\\\"c=d\\\">foo</a>\\n\",\n        },\n        {\n          'query': \"a[a=b][b=c=d][e]*2{foo}\",\n          'result': \"<a href=\\\"e\\\" a=\\\"b\\\" b=\\\"c=d\\\"></a>\\n<a href=\\\"e\\\" a=\\\"b\\\" b=\\\"c=d\\\"></a>\\nfoo\",\n        },\n        {\n          'query': \"a*2{foo}a\",\n          'result': \"<a href=\\\"\\\"></a>\\n<a href=\\\"\\\"></a>\\nfoo<a href=\\\"\\\"></a>\\n\",\n        },\n        {\n          'query': \"a{foo}*2>b\",\n          'result': \"<a href=\\\"\\\">foo<b></b></a>\\n<a href=\\\"\\\">foo<b></b></a>\\n\",\n        },\n        {\n          'query': \"a*2{foo}>b\",\n          'result': \"<a href=\\\"\\\"></a>\\n<a href=\\\"\\\"></a>\\nfoo\",\n        },\n        {\n          'query': \"table>tr>td.name#foo+td*3\",\n          'result': \"<table>\\n\\t<tr>\\n\\t\\t<td id=\\\"foo\\\" class=\\\"name\\\"></td>\\n\\t\\t<td></td>\\n\\t\\t<td></td>\\n\\t\\t<td></td>\\n\\t</tr>\\n</table>\\n\",\n        },\n        {\n          'query': \"div#header + div#footer\",\n          'result': \"<div id=\\\"header\\\"></div>\\n<div id=\\\"footer\\\"></div>\\n\",\n        },\n        {\n          'query': \"#header + div#footer\",\n          'result': \"<div id=\\\"header\\\"></div>\\n<div id=\\\"footer\\\"></div>\\n\",\n        },\n        {\n          'query': \"#header > ul > li < p{Footer}\",\n          'result': \"<div id=\\\"header\\\">\\n\\t<ul>\\n\\t\\t<li></li>\\n\\t</ul>\\n\\t<p>Footer</p>\\n</div>\\n\",\n        },\n        {\n          'query': \"#header > ul > li ^ p{Footer}\",\n          'result': \"<div id=\\\"header\\\">\\n\\t<ul>\\n\\t\\t<li></li>\\n\\t</ul>\\n\\t<p>Footer</p>\\n</div>\\n\",\n        },\n        {\n          'query': \"a#foo$$$*3\",\n          'result': \"<a id=\\\"foo001\\\" href=\\\"\\\"></a>\\n<a id=\\\"foo002\\\" href=\\\"\\\"></a>\\n<a id=\\\"foo003\\\" href=\\\"\\\"></a>\\n\",\n        },\n        {\n          'query': \"ul+\",\n          'result': \"<ul>\\n\\t<li></li>\\n</ul>\\n\",\n        },\n        {\n          'query': \"table+\",\n          'result': \"<table>\\n\\t<tr>\\n\\t\\t<td></td>\\n\\t</tr>\\n</table>\\n\",\n        },\n        {\n          'query': \"#header>li<#content\",\n          'result': \"<div id=\\\"header\\\">\\n\\t<li></li>\\n</div>\\n<div id=\\\"content\\\"></div>\\n\",\n        },\n        {\n          'query': \"#header>li^#content\",\n          'result': \"<div id=\\\"header\\\">\\n\\t<li></li>\\n</div>\\n<div id=\\\"content\\\"></div>\\n\",\n        },\n        {\n          'query': \"(#header>li)<#content\",\n          'result': \"<div id=\\\"header\\\">\\n\\t<li></li>\\n</div>\\n<div id=\\\"content\\\"></div>\\n\",\n        },\n        {\n          'query': \"(#header>li)^#content\",\n          'result': \"<div id=\\\"header\\\">\\n\\t<li></li>\\n</div>\\n<div id=\\\"content\\\"></div>\\n\",\n        },\n        {\n          'query': \"a>b>i<<div\",\n          'result': \"<a href=\\\"\\\"><b><i></i></b></a>\\n<div></div>\\n\",\n        },\n        {\n          'query': \"a>b>i^^div\",\n          'result': \"<a href=\\\"\\\"><b><i></i></b></a>\\n<div></div>\\n\",\n        },\n        {\n          'query': \"(#header>h1)+#content+#footer\",\n          'result': \"<div id=\\\"header\\\">\\n\\t<h1></h1>\\n</div>\\n<div id=\\\"content\\\"></div>\\n<div id=\\\"footer\\\"></div>\\n\",\n        },\n        {\n          'query': \"(#header>h1)+(#content>(#main>h2+div#entry$.section*5>(h3>a)+div>p*3+ul+)+(#utilities))+(#footer>address)\",\n          'result': \"<div id=\\\"header\\\">\\n\\t<h1></h1>\\n</div>\\n<div id=\\\"content\\\">\\n\\t<div id=\\\"main\\\">\\n\\t\\t<h2></h2>\\n\\t\\t<div id=\\\"entry1\\\" class=\\\"section\\\">\\n\\t\\t\\t<h3><a href=\\\"\\\"></a></h3>\\n\\t\\t\\t<div>\\n\\t\\t\\t\\t<p></p>\\n\\t\\t\\t\\t<p></p>\\n\\t\\t\\t\\t<p></p>\\n\\t\\t\\t\\t<ul>\\n\\t\\t\\t\\t\\t<li></li>\\n\\t\\t\\t\\t</ul>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t\\t<div id=\\\"entry2\\\" class=\\\"section\\\">\\n\\t\\t\\t<h3><a href=\\\"\\\"></a></h3>\\n\\t\\t\\t<div>\\n\\t\\t\\t\\t<p></p>\\n\\t\\t\\t\\t<p></p>\\n\\t\\t\\t\\t<p></p>\\n\\t\\t\\t\\t<ul>\\n\\t\\t\\t\\t\\t<li></li>\\n\\t\\t\\t\\t</ul>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t\\t<div id=\\\"entry3\\\" class=\\\"section\\\">\\n\\t\\t\\t<h3><a href=\\\"\\\"></a></h3>\\n\\t\\t\\t<div>\\n\\t\\t\\t\\t<p></p>\\n\\t\\t\\t\\t<p></p>\\n\\t\\t\\t\\t<p></p>\\n\\t\\t\\t\\t<ul>\\n\\t\\t\\t\\t\\t<li></li>\\n\\t\\t\\t\\t</ul>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t\\t<div id=\\\"entry4\\\" class=\\\"section\\\">\\n\\t\\t\\t<h3><a href=\\\"\\\"></a></h3>\\n\\t\\t\\t<div>\\n\\t\\t\\t\\t<p></p>\\n\\t\\t\\t\\t<p></p>\\n\\t\\t\\t\\t<p></p>\\n\\t\\t\\t\\t<ul>\\n\\t\\t\\t\\t\\t<li></li>\\n\\t\\t\\t\\t</ul>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t\\t<div id=\\\"entry5\\\" class=\\\"section\\\">\\n\\t\\t\\t<h3><a href=\\\"\\\"></a></h3>\\n\\t\\t\\t<div>\\n\\t\\t\\t\\t<p></p>\\n\\t\\t\\t\\t<p></p>\\n\\t\\t\\t\\t<p></p>\\n\\t\\t\\t\\t<ul>\\n\\t\\t\\t\\t\\t<li></li>\\n\\t\\t\\t\\t</ul>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n\\t<div id=\\\"utilities\\\"></div>\\n</div>\\n<div id=\\\"footer\\\">\\n\\t<address></address>\\n</div>\\n\",\n        },\n        {\n          'query': \"(div>(ul*2)*2)+(#utilities)\",\n          'result': \"<div>\\n\\t<ul></ul>\\n\\t<ul></ul>\\n\\t<ul></ul>\\n\\t<ul></ul>\\n</div>\\n<div id=\\\"utilities\\\"></div>\\n\",\n        },\n        {\n          'query': \"table>(tr>td*3)*4\",\n          'result': \"<table>\\n\\t<tr>\\n\\t\\t<td></td>\\n\\t\\t<td></td>\\n\\t\\t<td></td>\\n\\t</tr>\\n\\t<tr>\\n\\t\\t<td></td>\\n\\t\\t<td></td>\\n\\t\\t<td></td>\\n\\t</tr>\\n\\t<tr>\\n\\t\\t<td></td>\\n\\t\\t<td></td>\\n\\t\\t<td></td>\\n\\t</tr>\\n\\t<tr>\\n\\t\\t<td></td>\\n\\t\\t<td></td>\\n\\t\\t<td></td>\\n\\t</tr>\\n</table>\\n\",\n        },\n        {\n          'query': \"(((a#foo+a#bar)*2)*3)\",\n          'result': \"<a id=\\\"foo\\\" href=\\\"\\\"></a>\\n<a id=\\\"bar\\\" href=\\\"\\\"></a>\\n<a id=\\\"foo\\\" href=\\\"\\\"></a>\\n<a id=\\\"bar\\\" href=\\\"\\\"></a>\\n<a id=\\\"foo\\\" href=\\\"\\\"></a>\\n<a id=\\\"bar\\\" href=\\\"\\\"></a>\\n<a id=\\\"foo\\\" href=\\\"\\\"></a>\\n<a id=\\\"bar\\\" href=\\\"\\\"></a>\\n<a id=\\\"foo\\\" href=\\\"\\\"></a>\\n<a id=\\\"bar\\\" href=\\\"\\\"></a>\\n<a id=\\\"foo\\\" href=\\\"\\\"></a>\\n<a id=\\\"bar\\\" href=\\\"\\\"></a>\\n\",\n        },\n        {\n          'query': \"div#box$*3>h3+p*2\",\n          'result': \"<div id=\\\"box1\\\">\\n\\t<h3></h3>\\n\\t<p></p>\\n\\t<p></p>\\n</div>\\n<div id=\\\"box2\\\">\\n\\t<h3></h3>\\n\\t<p></p>\\n\\t<p></p>\\n</div>\\n<div id=\\\"box3\\\">\\n\\t<h3></h3>\\n\\t<p></p>\\n\\t<p></p>\\n</div>\\n\"\n        },\n        {\n          'query': \"div#box.foo$$$.bar$$$*3\",\n          'result': \"<div id=\\\"box\\\" class=\\\"foo001 bar001\\\"></div>\\n<div id=\\\"box\\\" class=\\\"foo002 bar002\\\"></div>\\n<div id=\\\"box\\\" class=\\\"foo003 bar003\\\"></div>\\n\",\n        },\n        {\n          'query': \"div#box$*3>h3+p.bar*2|e\",\n          'result': \"&lt;div id=\\\"box1\\\"&gt;\\n\\t&lt;h3&gt;&lt;/h3&gt;\\n\\t&lt;p class=\\\"bar\\\"&gt;&lt;/p&gt;\\n\\t&lt;p class=\\\"bar\\\"&gt;&lt;/p&gt;\\n&lt;/div&gt;\\n&lt;div id=\\\"box2\\\"&gt;\\n\\t&lt;h3&gt;&lt;/h3&gt;\\n\\t&lt;p class=\\\"bar\\\"&gt;&lt;/p&gt;\\n\\t&lt;p class=\\\"bar\\\"&gt;&lt;/p&gt;\\n&lt;/div&gt;\\n&lt;div id=\\\"box3\\\"&gt;\\n\\t&lt;h3&gt;&lt;/h3&gt;\\n\\t&lt;p class=\\\"bar\\\"&gt;&lt;/p&gt;\\n\\t&lt;p class=\\\"bar\\\"&gt;&lt;/p&gt;\\n&lt;/div&gt;\\n\",\n        },\n        {\n          'query': \"div>div#page>p.title+p|c\",\n          'result': \"<div>\\n\\t<!-- #page -->\\n\\t<div id=\\\"page\\\">\\n\\t\\t<!-- .title -->\\n\\t\\t<p class=\\\"title\\\"></p>\\n\\t\\t<!-- /.title -->\\n\\t\\t<p></p>\\n\\t</div>\\n\\t<!-- /#page -->\\n</div>\\n\",\n        },\n        {\n          'query': \"link:css\",\n          'result': \"<link rel=\\\"stylesheet\\\" href=\\\"style.css\\\" media=\\\"all\\\">\\n\",\n        },\n        {\n          'query': \"a[title=\\\"Hello', world\\\" rel]\",\n          'result': \"<a href=\\\"\\\" title=\\\"Hello', world\\\" rel=\\\"\\\"></a>\\n\",\n        },\n        {\n          'query': \"div>a#foo{bar}\",\n          'result': \"<div><a id=\\\"foo\\\" href=\\\"\\\">bar</a></div>\\n\",\n        },\n        {\n          'query': \".content{Hello!}\",\n          'result': \"<div class=\\\"content\\\">Hello!</div>\\n\",\n        },\n        {\n          'query': \"div.logo+(div#navigation)+(div#links)\",\n          'result': \"<div class=\\\"logo\\\"></div>\\n<div id=\\\"navigation\\\"></div>\\n<div id=\\\"links\\\"></div>\\n\",\n        },\n        {\n          'query': \"h1{header}+{Text}+a[href=http://link.org]{linktext}+{again some text}+a[href=http://anoterlink.org]{click me!}+{some final text}\",\n          'result': \"<h1>header</h1>\\nText<a href=\\\"http://link.org\\\">linktext</a>\\nagain some text<a href=\\\"http://anoterlink.org\\\">click me!</a>\\nsome final text\",\n        },\n        {\n          'query': \"a{&}+div{&&}\",\n          'result': \"<a href=\\\"\\\">&</a>\\n<div>&&</div>\\n\",\n        },\n        {\n          'query': \"<foo/>span$$$$\\\\<c-y>,$$$$\",\n          'result': \"<foo/><span></span>\",\n        },\n        {\n          'query': \"foo span$$$$\\\\<c-y>,$$$$\",\n          'result': \"foo <span></span>\",\n        },\n        {\n          'query': \"foo span$$$$\\\\<c-y>,$$$$ bar\",\n          'result': \"foo <span></span> bar\",\n        },\n        {\n          'query': \"foo $$$$\\\\<c-o>ve\\\\<c-y>,p\\\\<cr>$$$$bar baz\",\n          'result': \"foo <p>bar</p> baz\",\n        },\n        {\n          'query': \"foo $$$$\\\\<c-o>vee\\\\<c-y>,p\\\\<cr>$$$$bar baz\",\n          'result': \"foo <p>bar baz</p>\",\n        },\n        {\n          'query': \"f div.boxes>article.box2>header>(hgroup>h2{aaa}+h3{bbb})+p{ccc}$$$$\",\n          'result': \"f <div class=\\\"boxes\\\">\\n\\t<article class=\\\"box2\\\">\\n\\t\\t<header>\\n\\t\\t\\t<hgroup>\\n\\t\\t\\t\\t<h2>aaa</h2>\\n\\t\\t\\t\\t<h3>bbb</h3>\\n\\t\\t\\t</hgroup>\\n\\t\\t\\t<p>ccc</p>\\n\\t\\t</header>\\n\\t</article>\\n</div>\",\n        },\n        {\n          'query': \"div.boxes>(div.box2>section>h2{a}+p{b})+(div.box1>section>h2{c}+p{d}+p{e}+(bq>h2{f}+h3{g})+p{h})\",\n          'result': \"<div class=\\\"boxes\\\">\\n\\t<div class=\\\"box2\\\">\\n\\t\\t<section>\\n\\t\\t\\t<h2>a</h2>\\n\\t\\t\\t<p>b</p>\\n\\t\\t</section>\\n\\t</div>\\n\\t<div class=\\\"box1\\\">\\n\\t\\t<section>\\n\\t\\t\\t<h2>c</h2>\\n\\t\\t\\t<p>d</p>\\n\\t\\t\\t<p>e</p>\\n\\t\\t\\t<blockquote>\\n\\t\\t\\t\\t<h2>f</h2>\\n\\t\\t\\t\\t<h3>g</h3>\\n\\t\\t\\t</blockquote>\\n\\t\\t\\t<p>h</p>\\n\\t\\t</section>\\n\\t</div>\\n</div>\\n\",\n        },\n        {\n          'query': \"(div>(label+input))+div\",\n          'result': \"<div>\\n\\t<label for=\\\"\\\"></label>\\n\\t<input type=\\\"\\\">\\n</div>\\n<div></div>\\n\",\n        },\n        {\n          'query': \"test1\\ntest2\\ntest3$$$$\\\\<esc>ggVG\\\\<c-y>,ul>li>span*>a\\\\<cr>$$$$\",\n          'result': \"<ul>\\n\\t<li>\\n\\t\\t<span><a href=\\\"\\\">test1</a></span>\\n\\t\\t<span><a href=\\\"\\\">test2</a></span>\\n\\t\\t<span><a href=\\\"\\\">test3</a></span>\\n\\t</li>\\n</ul>\",\n        },\n        {\n          'query': \"test1\\ntest2\\ntest3$$$$\\\\<esc>ggVG\\\\<c-y>,input[type=input value=$#]*\\\\<cr>$$$$\",\n          'result': \"<input type=\\\"input\\\" value=\\\"test1\\\">\\n<input type=\\\"input\\\" value=\\\"test2\\\">\\n<input type=\\\"input\\\" value=\\\"test3\\\">\",\n        },\n        {\n          'query': \"div#id-$*5>div#id2-$\",\n          'result': \"<div id=\\\"id-1\\\">\\n\\t<div id=\\\"id2-1\\\"></div>\\n</div>\\n<div id=\\\"id-2\\\">\\n\\t<div id=\\\"id2-2\\\"></div>\\n</div>\\n<div id=\\\"id-3\\\">\\n\\t<div id=\\\"id2-3\\\"></div>\\n</div>\\n<div id=\\\"id-4\\\">\\n\\t<div id=\\\"id2-4\\\"></div>\\n</div>\\n<div id=\\\"id-5\\\">\\n\\t<div id=\\\"id2-5\\\"></div>\\n</div>\\n\",\n        },\n        {\n          'query': \"{test case $ }*3\",\n          'result': \"test case 1 test case 2 test case 3 \",\n        },\n        {\n          'query': \"{test case $${nr}}*3\",\n          'result': \"test case 1\\ntest case 2\\ntest case 3\\n\",\n        },\n        {\n          'query': \"{test case \\\\$ }*3\",\n          'result': \"test case $ test case $ test case $ \",\n        },\n        {\n          'query': \"{test case $$$ }*3\",\n          'result': \"test case 001 test case 002 test case 003 \",\n        },\n        {\n          'query': \"a[title=$#]{foo}\",\n          'result': \"<a href=\\\"\\\" title=\\\"foo\\\">foo</a>\\n\",\n        },\n        {\n          'query': \"span.item$*2>{item $}\",\n          'result': \"<span class=\\\"item1\\\">item 1</span>\\n<span class=\\\"item2\\\">item 2</span>\\n\",\n        },\n        {\n          'query': \"\\t<div class=\\\"footer_nav\\\">\\n\\t\\t<a href=\\\"#\\\">nav link</a>\\n\\t</div>$$$$\\\\<esc>ggVG\\\\<c-y>,div\\\\<cr>$$$$\",\n          'result': \"\\t<div>\\n\\t\\t<div class=\\\"footer_nav\\\">\\n\\t\\t\\t<a href=\\\"#\\\">nav link</a>\\n\\t\\t</div>\\n\\t</div>\",\n        },\n      ],\n    },\n    {\n      'name': 'split join tag',\n      'tests': [\n        {\n          'query': \"<div>\\n\\t<span>$$$$\\\\<c-y>j$$$$</span>\\n</div>\",\n          'result': \"<div>\\n\\t<span/>\\n</div>\",\n        },\n        {\n          'query': \"<div>\\n\\t<span$$$$\\\\<c-y>j$$$$/>\\n</div>\",\n          'result': \"<div>\\n\\t<span></span>\\n</div>\",\n        },\n      ],\n    },\n    {\n      'name': 'toggle comment',\n      'tests': [\n        {\n          'query': \"<div>\\n\\t<span>$$$$\\\\<c-y>/$$$$</span>\\n</div>\",\n          'result': \"<div>\\n\\t<!-- <span></span> -->\\n</div>\",\n        },\n        {\n          'query': \"<div>\\n\\t<!-- <span>$$$$\\\\<c-y>/$$$$</span> -->\\n</div>\",\n          'result': \"<div>\\n\\t<span></span>\\n</div>\",\n        },\n      ],\n    },\n    {\n      'name': 'image size',\n      'tests': [\n        {\n          'query': \"img[src=http://mattn.kaoriya.net/images/logo.png]$$$$\\\\<c-y>,\\\\<c-y>i$$$$\",\n          'result': \"<img src=\\\"http://mattn.kaoriya.net/images/logo.png\\\" alt=\\\"\\\" width=\\\"96\\\" height=\\\"96\\\">\",\n        },\n        {\n          'query': \"img[src=/logo.png]$$$$\\\\<c-y>,\\\\<c-y>i$$$$\",\n          'result': \"<img src=\\\"/logo.png\\\" alt=\\\"\\\">\",\n        },\n        {\n          'query': \"img[src=http://mattn.kaoriya.net/images/logo.png width=foo height=bar]$$$$\\\\<c-y>,\\\\<c-y>i$$$$\",\n          'result': \"<img src=\\\"http://mattn.kaoriya.net/images/logo.png\\\" alt=\\\"\\\" width=\\\"96\\\" height=\\\"96\\\">\",\n        },\n      ],\n    },\n    {\n      'name': 'move next prev',\n      'tests': [\n        {\n          'query': \"foo+bar+baz[dankogai=\\\"\\\"]$$$$\\\\<c-y>,\\\\<esc>gg0\\\\<c-y>n\\\\<c-y>n\\\\<c-y>n\\\\<esc>Byw:%d _\\\\<cr>p$$$$\",\n          'result': \"dankogai\",\n        },\n      ],\n    },\n    {\n      'name': 'contains dash in attributes',\n      'tests': [\n        {\n          'query': \"div[foo-bar=\\\"baz\\\"]\",\n          'result': \"<div foo-bar=\\\"baz\\\"></div>\\n\",\n        },\n      ],\n    },\n    {\n      'name': 'default attributes',\n      'tests': [\n        {\n          'query': \"p.title>a[/hoge/]\",\n          'result': \"<p class=\\\"title\\\"><a href=\\\"/hoge/\\\"></a></p>\\n\",\n        },\n        {\n          'query': \"script[jquery.js]\",\n          'result': \"<script src=\\\"jquery.js\\\"></script>\\n\",\n        },\n      ],\n    },\n    {\n      'name': 'multiple group',\n      'tests': [\n        {\n          'query': \".outer$*3>.inner$*2\",\n          'result': \"<div class=\\\"outer1\\\">\\n\\t<div class=\\\"inner1\\\"></div>\\n\\t<div class=\\\"inner2\\\"></div>\\n</div>\\n<div class=\\\"outer2\\\">\\n\\t<div class=\\\"inner1\\\"></div>\\n\\t<div class=\\\"inner2\\\"></div>\\n</div>\\n<div class=\\\"outer3\\\">\\n\\t<div class=\\\"inner1\\\"></div>\\n\\t<div class=\\\"inner2\\\"></div>\\n</div>\\n\",\n        },\n      ],\n    },\n    {\n      'name': 'group itemno',\n      'tests': [\n        {\n          'query': \"dl>(dt{$}+dd)*3\",\n          'result': \"<dl>\\n\\t<dt>1</dt>\\n\\t<dd></dd>\\n\\t<dt>2</dt>\\n\\t<dd></dd>\\n\\t<dt>3</dt>\\n\\t<dd></dd>\\n</dl>\\n\",\n        },\n        {\n          'query': \"(div[attr=$]*3)*3\",\n          'result': \"<div attr=\\\"1\\\"></div>\\n<div attr=\\\"2\\\"></div>\\n<div attr=\\\"3\\\"></div>\\n<div attr=\\\"1\\\"></div>\\n<div attr=\\\"2\\\"></div>\\n<div attr=\\\"3\\\"></div>\\n<div attr=\\\"1\\\"></div>\\n<div attr=\\\"2\\\"></div>\\n<div attr=\\\"3\\\"></div>\\n\",\n        },\n      ],\n    },\n  ],\n  'dummy': \"}}}\"},\n{ 'test-css': '{{{',\n  'type': 'css',\n  'categories': [\n    {\n      'name': 'expand abbreviation',\n      'tests': [\n        {\n          'query': \"{fs:n$$$$}\",\n          'result': \"{font-style: normal;}\",\n        },\n        {\n          'query': \"{fl:l|fc$$$$}\",\n          'result': \"{float: left;}\",\n        },\n        {\n          'query': \"{bg+$$$$}\",\n          'result': \"{background: #FFF url($$$$) 0 0 no-repeat;}\",\n        },\n        {\n          'query': \"{bg+!$$$$}\",\n          'result': \"{background: #FFF url($$$$) 0 0 no-repeat !important;}\",\n        },\n        {\n          'query': \"{m$$$$}\",\n          'result': \"{margin: $$$$;}\",\n        },\n        {\n          'query': \"{m0.1p$$$$}\",\n          'result': \"{margin: 0.1%;}\",\n        },\n        {\n          'query': \"{m1.0$$$$}\",\n          'result': \"{margin: 1.0em;}\",\n        },\n        {\n          'query': \"{m2$$$$}\",\n          'result': \"{margin: 2px;}\",\n        },\n        {\n          'query': \"{bdrs10$$$$}\",\n          'result': \"{border-radius: 10px;}\",\n        },\n        {\n          'query': \"{-bdrs20$$$$}\",\n          'result': \"{-webkit-border-radius: 20px;\\n-moz-border-radius: 20px;\\nborder-radius: 20px;}\",\n        },\n        {\n          'query': \"{lg(top,#fff,#000)$$$$}\",\n          'result': \"{background-image: -webkit-gradient(top, 0 0, 0 100, from(#fff), to(#000));\\nbackground-image: -webkit-linear-gradient(#fff, #000);\\nbackground-image: -moz-linear-gradient(#fff, #000);\\nbackground-image: -o-linear-gradient(#fff, #000);\\nbackground-image: linear-gradient(#fff, #000);\\n}\",\n        },\n        {\n          'query': \"{m10-5-0$$$$}\",\n          'result': \"{margin: 10px 5px 0;}\",\n        },\n        {\n          'query': \"{m-10--5$$$$}\",\n          'result': \"{margin: -10px -5px;}\",\n        },\n        {\n          'query': \"{m10-auto$$$$}\",\n          'result': \"{margin: 10px auto;}\",\n        },\n        {\n          'query': \"{w100p$$$$}\",\n          'result': \"{width: 100%;}\",\n        },\n        {\n          'query': \"{h50e$$$$}\",\n          'result': \"{height: 50em;}\",\n        },\n        {\n          'query': \"{(bg+)+c$$$$}\",\n          'result': \"{background: #FFF url($$$$) 0 0 no-repeat;\\ncolor: #000;}\",\n        },\n        {\n          'query': \"{m0+bgi+bg++p0$$$$}\",\n          'result': \"{margin: 0;\\nbackground-image: url($$$$);\\nbackground: #FFF url() 0 0 no-repeat;\\npadding: 0;}\",\n        },\n        {\n          'query': \"{borle$$$$}\",\n          'result': \"{border-left: $$$$;}\",\n        },\n      ],\n    },\n  ],\n  'dummy': \"}}}\"},\n{ 'test-haml': '{{{',\n  'type': 'haml',\n  'categories': [\n    {\n      'name': 'expand abbreviation',\n      'tests': [\n        {\n          'query': \"div>p+ul#foo>li.bar$[foo=bar][bar=baz]*3>{baz}\",\n          'result': \"%div\\n  %p\\n  %ul#foo\\n    %li.bar1{ :foo => \\\"bar\\\", :bar => \\\"baz\\\" } baz\\n    %li.bar2{ :foo => \\\"bar\\\", :bar => \\\"baz\\\" } baz\\n    %li.bar3{ :foo => \\\"bar\\\", :bar => \\\"baz\\\" } baz\\n\",\n        },\n        {\n          'query': \"div>p+ul#foo>li.bar$[foo=bar][bar=baz]*3>{baz}|haml\",\n          'result': \"%div\\n  %p\\n  %ul#foo\\n    %li.bar1{ :foo => \\\"bar\\\", :bar => \\\"baz\\\" } baz\\n    %li.bar2{ :foo => \\\"bar\\\", :bar => \\\"baz\\\" } baz\\n    %li.bar3{ :foo => \\\"bar\\\", :bar => \\\"baz\\\" } baz\\n\",\n        },\n        {\n          'query': \"a*3|haml\",\n          'result': \"%a{ :href => \\\"\\\" }\\n%a{ :href => \\\"\\\" }\\n%a{ :href => \\\"\\\" }\\n\",\n        },\n        {\n          'query': \".content{Hello!}|haml\",\n          'result': \"%div.content Hello!\\n\",\n        },\n        {\n          'query': \"a[title=$#]{foo}\",\n          'result': \"%a{ :href => \\\"\\\", :title => \\\"foo\\\" } foo\\n\",\n        },\n      ],\n    },\n    {\n      'name': 'expand abbreviation',\n      'tests': [\n        {\n          'query': \"%a foo\\n  bar$$$$\\\\<c-y>j$$$$\",\n          'result': \"%a \",\n        },\n        {\n          'query': \"$$$$\\\\<c-y>j$$$$%a \",\n          'result': \"%a $$$$\",\n        },\n      ],\n    },\n    {\n      'name': 'toggle comment',\n      'tests': [\n        {\n          'query': \"%a{ :href => \\\"http://www.google.com\\\"$$$$\\\\<c-y>/$$$$ } hello\",\n          'result': \"-# %a{ :href => \\\"http://www.google.com\\\" } hello\",\n        },\n        {\n          'query': \"-# %a{ :href => \\\"http://www.google.com\\\"$$$$\\\\<c-y>/$$$$ } hello\",\n          'result': \"%a{ :href => \\\"http://www.google.com\\\" } hello\",\n        },\n      ],\n    },\n  ],\n  'dummy': \"}}}\"},\n{ 'test-slim': \"{{{\",\n  'type': 'slim',\n  'categories': [\n    {\n      'name': 'expand abbreviation',\n      'tests': [\n        {\n          'query': \"div>p+ul#foo>li.bar$[foo=bar][bar=baz]*3>{baz}\",\n          'result': \"div\\n  p\\n  ul id=\\\"foo\\\"\\n    li class=\\\"bar1\\\" foo=\\\"bar\\\" bar=\\\"baz\\\"\\n      | baz\\n    li class=\\\"bar2\\\" foo=\\\"bar\\\" bar=\\\"baz\\\"\\n      | baz\\n    li class=\\\"bar3\\\" foo=\\\"bar\\\" bar=\\\"baz\\\"\\n      | baz\\n\",\n        },\n        {\n          'query': \"div>p+ul#foo>li.bar$[foo=bar][bar=baz]*3>{baz}|slim\",\n          'result': \"div\\n  p\\n  ul id=\\\"foo\\\"\\n    li class=\\\"bar1\\\" foo=\\\"bar\\\" bar=\\\"baz\\\"\\n      | baz\\n    li class=\\\"bar2\\\" foo=\\\"bar\\\" bar=\\\"baz\\\"\\n      | baz\\n    li class=\\\"bar3\\\" foo=\\\"bar\\\" bar=\\\"baz\\\"\\n      | baz\\n\",\n        },\n        {\n          'query': \"a*3|slim\",\n          'result': \"a href=\\\"\\\"\\na href=\\\"\\\"\\na href=\\\"\\\"\\n\",\n        },\n        {\n          'query': \".content{Hello!}|slim\",\n          'result': \"div class=\\\"content\\\"\\n  | Hello!\\n\",\n        },\n        {\n          'query': \"a[title=$#]{foo}\",\n          'result': \"a href=\\\"\\\" title=\\\"foo\\\"\\n  | foo\\n\",\n        },\n      ],\n    },\n    {\n      'name': 'split join tag',\n      'tests': [\n        {\n          'query': \"a\\n  | foo$$$$\\\\<c-y>j$$$$\",\n          'result': \"a\",\n        },\n        {\n          'query': \"a$$$$\\\\<c-y>j$$$$\",\n          'result': \"a\\n  | $$$$\",\n        },\n      ],\n    },\n    {\n      'name': 'toggle comment',\n      'tests': [\n        {\n          'query': \"a href=\\\"http://www.google.com\\\"$$$$\\\\<c-y>/$$$$\\n  | hello\",\n          'result': \"/a href=\\\"http://www.google.com\\\"\\n  | hello\",\n        },\n        {\n          'query': \"/a href=\\\"http://www.google.com\\\"$$$$\\\\<c-y>/$$$$\\n  | hello\",\n          'result': \"a href=\\\"http://www.google.com\\\"\\n  | hello\",\n        },\n      ],\n    },\n  ],\n  'dummy': \"}}}\"},\n{ 'test-xsl': \"{{{\",\n  'type': 'xsl',\n  'categories': [\n    {\n      'name': 'expand abbreviation',\n      'tests': [\n        {\n          'query': \"vari\",\n          'result': \"<xsl:variable name=\\\"\\\"></xsl:variable>\\n\",\n        },\n        {\n          'query': \"ap>wp\",\n          'result': \"<xsl:apply-templates select=\\\"\\\" mode=\\\"\\\">\\n\\t<xsl:with-param name=\\\"\\\" select=\\\"\\\"></xsl:with-param>\\n</xsl:apply-templates>\\n\",\n        },\n      ],\n    },\n  ],\n  'dummy': \"}}}\"},\n{ 'test-xsd': \"{{{\",\n  'type': 'xsd',\n  'categories': [\n    {\n      'name': 'expand abbreviation',\n      'tests': [\n        {\n          'query': \"xsd:w3c\",\n          'result': \"<?xml version=\\\"1.0\\\"?>\\n<xsd:schema xmlns:xsd=\\\"http://www.w3.org/2001/XMLSchema\\\">\\n\\t<xsd:element name=\\\"\\\" type=\\\"\\\"/>\\n</xsd:schema>\",\n        },\n      ],\n    },\n  ],\n  'dummy': \"}}}\"},\n{ 'test-mustache': \"{{{\",\n  'type': 'mustache',\n  'categories': [\n    {\n      'name': 'expand abbreviation',\n      'tests': [\n        {\n          'query': \"div#{{foo}}\",\n          'result': \"<div id=\\\"{{foo}}\\\"></div>\\n\",\n        },\n        {\n          'query': \"div.{{foo}}\",\n          'result': \"<div class=\\\"{{foo}}\\\"></div>\\n\",\n        },\n      ],\n    },\n  ],\n  'dummy': \"}}}\"},\n{ 'test-sass': \"{{{\",\n  'type': 'sass',\n  'categories': [\n    {\n      'name': 'expand abbreviation',\n      'tests': [\n        {\n          'query': \"@i$$$$\",\n          'result': \"@import url()\",\n        },\n        {\n          'query': \"fs:n\",\n          'result': \"font-style: normal\",\n        },\n        {\n          'query': \"fl:l|fc\",\n          'result': \"float: left\",\n        },\n        {\n          'query': \"bg+$$$$\",\n          'result': \"background: #FFF url($$$$) 0 0 no-repeat\",\n        },\n        {\n          'query': \"bg+!$$$$\",\n          'result': \"background: #FFF url($$$$) 0 0 no-repeat !important\",\n        },\n        {\n          'query': \"m$$$$\",\n          'result': \"margin: $$$$\",\n        },\n        {\n          'query': \"m0.1p$$$$\",\n          'result': \"margin: 0.1%\",\n        },\n        {\n          'query': \"m1.0$$$$\",\n          'result': \"margin: 1.0em\",\n        },\n        {\n          'query': \"m2$$$$\",\n          'result': \"margin: 2px\",\n        },\n        {\n          'query': \"bdrs10$$$$\",\n          'result': \"border-radius: 10px\",\n        },\n        {\n          'query': \"-bdrs20$$$$\",\n          'result': \"-webkit-border-radius: 20px\\n-moz-border-radius: 20px\\nborder-radius: 20px\",\n        },\n        {\n          'query': \"lg(top,#fff,#000)$$$$\",\n          'result': \"background-image: -webkit-gradient(top, 0 0, 0 100, from(#fff), to(#000))\\nbackground-image: -webkit-linear-gradient(#fff, #000)\\nbackground-image: -moz-linear-gradient(#fff, #000)\\nbackground-image: -o-linear-gradient(#fff, #000)\\nbackground-image: linear-gradient(#fff, #000)\\n\",\n        },\n        {\n          'query': \"m10-5-0$$$$\",\n          'result': \"margin: 10px 5px 0\",\n        },\n        {\n          'query': \"m-10--5$$$$\",\n          'result': \"margin: -10px -5px\",\n        },\n        {\n          'query': \"m10-auto$$$$\",\n          'result': \"margin: 10px auto\",\n        },\n        {\n          'query': \"w100p$$$$\",\n          'result': \"width: 100%\",\n        },\n        {\n          'query': \"h50e$$$$\",\n          'result': \"height: 50em\",\n        },\n        {\n          'query': \"(bg+)+c$$$$\",\n          'result': \"background: #FFF url($$$$) 0 0 no-repeat\\ncolor: #000\",\n        },\n        {\n          'query': \".first>.second>.third$$$$\",\n          'result': \"div.first\\n\\tdiv.second\\n\\t\\tdiv.third$$$$\",\n        },\n      ],\n    },\n  ],\n  'dummy': \"}}}\"},\n]\n\" vim:set et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/gruvbox/README.md",
    "content": "gruvbox\n=======\n\nRetro groove color scheme for Vim.\n\nGruvbox is heavily inspired by [badwolf][], [jellybeans][] and [solarized][].\n\nDesigned as a bright theme with pastel 'retro groove' colors and light/dark mode switching in the way of [solarized][]. The main focus when developing Gruvbox is to keep colors easily distinguishable, contrast enough and still pleasant for the eyes.\n\n   [badwolf]: https://github.com/sjl/badwolf\n   [jellybeans]: https://github.com/nanotech/jellybeans.vim\n   [solarized]: http://ethanschoonover.com/solarized\n\nScreenshots\n-----------\n\nRefer [Gallery][] for more syntax-specific screenshots.\n\n   [Gallery]: https://github.com/morhetz/gruvbox/wiki/Gallery\n\n### Dark mode\n\n![Screenshot](http://i.imgur.com/2870c.png)\n\n### Light mode\n\n![Screenshot](http://i.imgur.com/oS9I3.png)\n\nDocumentation\n-------------\n\nPlease check [wiki][] for installation details, terminal-specific setup, troubleshooting, configuration options and others.\n\n   [wiki]: https://github.com/morhetz/gruvbox/wiki\n\nFeatures\n--------\n\n* Lots of style-customization options (contrast, color invertion, italics usage etc.)\n* Extended filetype highlighting: Html, Xml, Vim, Clojure, C, Python, JavaScript, CoffeeScript, Ruby, Objective-C, Go, Lua, MoonScript, Java\n* Supported plugins: [EasyMotion][], [vim-sneak][], [Indent Guides][], [indentLine][], [Rainbow Parentheses][], [Airline][], [GitGutter][], [Signify][], [ShowMarks][], [Signature][], [Syntastic][], [CtrlP][], [Startify][]\n\n   [EasyMotion]: https://github.com/Lokaltog/vim-easymotion\n   [vim-sneak]: https://github.com/justinmk/vim-sneak\n   [Indent Guides]: https://github.com/nathanaelkane/vim-indent-guides\n   [indentLine]: https://github.com/Yggdroot/indentLine\n   [Rainbow Parentheses]: https://github.com/kien/rainbow_parentheses.vim\n   [Airline]: https://github.com/bling/vim-airline\n   [GitGutter]: https://github.com/airblade/vim-gitgutter\n   [Signify]: https://github.com/mhinz/vim-signify\n   [ShowMarks]: http://www.vim.org/scripts/script.php?script_id=152\n   [Signature]: https://github.com/kshenoy/vim-signature\n   [Syntastic]: https://github.com/scrooloose/syntastic\n   [CtrlP]: https://github.com/kien/ctrlp.vim\n   [Startify]: https://github.com/mhinz/vim-startify\n\nContributions\n-------------\n\nSee [gruvbox-generalized][] repo for contributions, ports and extras.\n\n[gruvbox-generalized]: https://github.com/morhetz/gruvbox-generalized\n\nToDo\n----\n\n* Filetype syntax highlighting (R, TeX and I'm still dissatisfied with CSS)\n* Plugin support (MiniBufExplorer, Tagbar)\n* Airline theme\n\nSelf-Promotion\n--------------\n\nIf you like gruvbox follow the repository on\n[GitHub](https://github.com/morhetz/gruvbox) and vote for it on\n[vim.org](http://www.vim.org/scripts/script.php?script_id=4349).\n\nLicense\n-------\n[MIT/X11][]\n\n   [MIT/X11]: https://en.wikipedia.org/wiki/MIT_License\n"
  },
  {
    "path": ".vim/bundle/gruvbox/autoload/gruvbox.vim",
    "content": "\" -----------------------------------------------------------------------------\n\" File: gruvbox.vim\n\" Description: Retro groove color scheme for Vim\n\" Author: morhetz <morhetz@gmail.com>\n\" Source: https://github.com/morhetz/gruvbox\n\" Last Modified: 09 Apr 2014\n\" -----------------------------------------------------------------------------\n\nfunction! gruvbox#invert_signs_toggle()\n\tif g:gruvbox_invert_signs == 0\n\t\tlet g:gruvbox_invert_signs=1\n\telse\n\t\tlet g:gruvbox_invert_signs=0\n\tendif\n\n\tcolorscheme gruvbox\nendfunction\n\n\" Search Highlighting {{{\n\nfunction! gruvbox#hls_show()\n\tset hlsearch\n\tcall GruvboxHlsShowCursor()\nendfunction\n\nfunction! gruvbox#hls_hide()\n\tset nohlsearch\n\tcall GruvboxHlsHideCursor()\nendfunction\n\nfunction! gruvbox#hls_toggle()\n\tif &hlsearch\n\t\tcall gruvbox#hls_hide()\n\telse\n\t\tcall gruvbox#hls_show()\n\tendif\nendfunction\n\n\" }}}\n\n\" vim: set sw=3 ts=3 sts=3 noet tw=80 ft=vim fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/gruvbox/colors/gruvbox.vim",
    "content": "\" -----------------------------------------------------------------------------\n\" File: gruvbox.vim\n\" Description: Retro groove color scheme for Vim\n\" Author: morhetz <morhetz@gmail.com>\n\" Source: https://github.com/morhetz/gruvbox\n\" Last Modified: 11 Mar 2014\n\" -----------------------------------------------------------------------------\n\n\" Supporting code -------------------------------------------------------------\n\" Initialisation: {{{\n\nif version > 580\n\thi clear\n\tif exists(\"syntax_on\")\n\t\tsyntax reset\n\tendif\nendif\n\nlet g:colors_name='gruvbox'\n\nif !has('gui_running') && &t_Co != 256\n\tfinish\nendif\n\n\" }}}\n\" Global Settings: {{{\n\nif !exists('g:gruvbox_bold')\n\tlet g:gruvbox_bold=1\nendif\nif !exists('g:gruvbox_italic')\n\tlet g:gruvbox_italic=1\nendif\nif !exists('g:gruvbox_undercurl')\n\tlet g:gruvbox_undercurl=1\nendif\nif !exists('g:gruvbox_underline')\n\tlet g:gruvbox_underline=1\nendif\n\nif !exists('g:gruvbox_italicize_comments')\n\tlet g:gruvbox_italicize_comments=1\nendif\nif !exists('g:gruvbox_italicize_strings')\n\tlet g:gruvbox_italicize_strings=0\nendif\n\nif !exists('g:gruvbox_termcolors')\n\tlet g:gruvbox_termcolors=256\nendif\n\nif !exists('g:gruvbox_invert_indent_guides')\n\tlet g:gruvbox_invert_indent_guides=0\nendif\n\nif !exists('g:gruvbox_hls_cursor')\n\tlet g:gruvbox_hls_cursor='orange'\nendif\n\nif !exists('g:gruvbox_sign_column')\n\tlet g:gruvbox_sign_column='dark1'\nendif\n\nif !exists('g:gruvbox_invert_signs')\n\tlet g:gruvbox_invert_signs=0\nendif\n\nif !exists('g:gruvbox_invert_selection')\n\tlet g:gruvbox_invert_selection=1\nendif\n\nif !exists('g:gruvbox_contrast')\n\tlet g:gruvbox_contrast='medium'\nendif\n\nlet s:is_dark=(&background == 'dark')\n\n\" }}}\n\" Palette: {{{\n\nlet s:gb = {}\n\nif s:is_dark\n\tlet s:gb.dark0  = ['282828', 235]     \" 40-40-40\n\tlet s:gb.dark1  = ['3c3836', 237]     \" 60-56-54\n\tlet s:gb.dark2  = ['504945', 239]     \" 80-73-69\n\tlet s:gb.dark3  = ['665c54', 241]     \" 102-92-84\n\tlet s:gb.dark4  = ['7c6f64', 243]     \" 124-111-100\n\n\tlet s:gb.medium = ['928374', 245]     \" 146-131-116\n\n\tlet s:gb.light0 = ['fdf4c1', 229]     \" 253-244-193\n\tlet s:gb.light1 = ['ebdbb2', 223]     \" 235-219-178\n\tlet s:gb.light2 = ['d5c4a1', 250]     \" 213-196-161\n\tlet s:gb.light3 = ['bdae93', 248]     \" 189-174-147\n\tlet s:gb.light4 = ['a89984', 246]     \" 168-153-132\n\n\tlet s:gb.light4_256 = ['a89984', 246] \" 168-153-132\n\n\tlet s:gb.red    = ['fb4934', 167]     \" 251-73-52\n\tlet s:gb.green  = ['b8bb26', 142]     \" 184-187-38\n\tlet s:gb.yellow = ['fabd2f', 214]     \" 250-189-47\n\tlet s:gb.blue   = ['83a598', 109]     \" 131-165-152\n\tlet s:gb.purple = ['d3869b', 175]     \" 211-134-155\n\tlet s:gb.aqua   = ['8ec07c', 108]     \" 142-192-124\n\tlet s:gb.orange = ['fe8019', 208]     \" 254-128-25\n\n\tif g:gruvbox_termcolors == 16\n\t\tlet s:gb.dark0  = ['282828', 0]\n\t\tlet s:gb.light4 = ['a89984', 7]\n\t\tlet s:gb.medium = ['928374', 8]\n\t\tlet s:gb.red    = ['fb4934', 9]\n\t\tlet s:gb.green  = ['b8bb26', 10]\n\t\tlet s:gb.yellow = ['fabd2f', 11]\n\t\tlet s:gb.blue   = ['83a598', 12]\n\t\tlet s:gb.purple = ['d3869b', 13]\n\t\tlet s:gb.aqua   = ['8ec07c', 14]\n\t\tlet s:gb.light1 = ['ebdbb2', 15]\n\tendif\n\n\tif g:gruvbox_contrast == 'soft'\n\t\tlet s:gb.dark0  = ['32302f', 236]     \" 50-48-47\n\tendif\n\n\tif g:gruvbox_contrast == 'hard'\n\t\tlet s:gb.dark0  = ['1d2021', 234]     \" 29-32-33\n\tendif\nelse\n\tlet s:gb.dark0  = ['fdf4c1', 229]     \" 253-244-193\n\tlet s:gb.dark1  = ['ebdbb2', 223]     \" 235-219-178\n\tlet s:gb.dark2  = ['d5c4a1', 250]     \" 213-196-161\n\tlet s:gb.dark3  = ['bdae93', 248]     \" 189-174-147\n\tlet s:gb.dark4  = ['a89984', 246]     \" 168-153-132\n\n\tlet s:gb.medium = ['928374', 244]     \" 146-131-116\n\n\tlet s:gb.light0 = ['282828', 235]     \" 40-40-40\n\tlet s:gb.light1 = ['3c3836', 237]     \" 60-56-54\n\tlet s:gb.light2 = ['504945', 239]     \" 80-73-69\n\tlet s:gb.light3 = ['665c54', 241]     \" 102-92-84\n\tlet s:gb.light4 = ['7c6f64', 243]     \" 124-111-100\n\n\tlet s:gb.light4_256 = ['7c6f64', 243] \" 124-111-100\n\n\tlet s:gb.red    = ['9d0006', 88]      \" 157-0-6\n\tlet s:gb.green  = ['79740e', 100]     \" 121-116-14\n\tlet s:gb.yellow = ['b57614', 136]     \" 181-118-20\n\tlet s:gb.blue   = ['076678', 24]      \" 7-102-120\n\tlet s:gb.purple = ['8f3f71', 96]      \" 143-63-113\n\tlet s:gb.aqua   = ['427b58', 66]      \" 66-123-88\n\tlet s:gb.orange = ['af3a03', 130]     \" 175-58-3\n\n\tif g:gruvbox_termcolors == 16\n\t\tlet s:gb.dark0  = ['fdf4c1', 0]\n\t\tlet s:gb.light4 = ['7c6f64', 7]\n\t\tlet s:gb.medium = ['928374', 8]\n\t\tlet s:gb.red    = ['9d0006', 9]\n\t\tlet s:gb.green  = ['79740e', 10]\n\t\tlet s:gb.yellow = ['b57614', 11]\n\t\tlet s:gb.blue   = ['076678', 12]\n\t\tlet s:gb.purple = ['8f3f71', 13]\n\t\tlet s:gb.aqua   = ['427b58', 14]\n\t\tlet s:gb.light1 = ['3c3836', 15]\n\tendif\n\n\tif g:gruvbox_contrast == 'soft'\n\t\tlet s:gb.dark0  = ['f4e8ba', 228]     \" 244-232-186\n\tendif\n\n\tif g:gruvbox_contrast == 'hard'\n\t\tlet s:gb.dark0  = ['ffffc8', 230]     \" 255-255-200\n\tendif\nendif\n\n\" }}}\n\" Highlighting Function: {{{\n\nfunction! s:HL(group, fg, ...)\n\t\" Arguments: group, guifg, guibg, gui, guisp\n\n\tlet histring = 'hi ' . a:group . ' '\n\n\tif strlen(a:fg)\n\t\tif a:fg == 'fg'\n\t\t\tlet histring .= 'guifg=fg ctermfg=fg '\n\t\telseif a:fg == 'bg'\n\t\t\tlet histring .= 'guifg=bg ctermfg=bg '\n\t\telseif a:fg == 'none'\n\t\t\tlet histring .= 'guifg=NONE ctermfg=NONE '\n\t\telse\n\t\t\tlet c = get(s:gb, a:fg)\n\t\t\tlet histring .= 'guifg=#' . c[0] . ' ctermfg=' . c[1] . ' '\n\t\tendif\n\tendif\n\n\tif a:0 >= 1 && strlen(a:1)\n\t\tif a:1 == 'bg'\n\t\t\tlet histring .= 'guibg=bg ctermbg=bg '\n\t\telseif a:fg == 'fg'\n\t\t\tlet histring .= 'guibg=fg ctermbg=fg '\n\t\telseif a:1 == 'none'\n\t\t\tlet histring .= 'guibg=NONE ctermbg=NONE '\n\t\telse\n\t\t\tlet c = get(s:gb, a:1)\n\t\t\tlet histring .= 'guibg=#' . c[0] . ' ctermbg=' . c[1] . ' '\n\t\tendif\n\telse\n\t\tlet histring .= 'guibg=NONE ctermbg=NONE '\n\tendif\n\n\t\" Hotfixing #24;\n\t\" TODO: get rid of this spaghetti\n\tif a:0 >= 2 && strlen(a:2)\n\t\tif a:2 == 'none'\n\t\t\tlet histring .= 'gui=NONE cterm=NONE '\n\t\telseif a:2 == 'italic' && g:gruvbox_italic == 0\n\t\t\tlet histring .= 'gui=NONE cterm=NONE '\n\t\telseif a:2 == 'bold' && g:gruvbox_bold == 0\n\t\t\tlet histring .= 'gui=NONE cterm=NONE '\n\t\telseif a:2 == 'bold,inverse' && g:gruvbox_bold == 0\n\t\t\tlet histring .= 'gui=inverse cterm=inverse '\n\t\telseif a:2 == 'undercurl' && g:gruvbox_undercurl == 0\n\t\t\tlet histring .= 'gui=NONE cterm=NONE '\n\t\telseif a:2 == 'underline' && g:gruvbox_underline == 0\n\t\t\tlet histring .= 'gui=NONE cterm=NONE '\n\t\telseif a:2 == 'bold,italic'\n\t\t\tif g:gruvbox_italic == 0 && g:gruvbox_bold == 0\n\t\t\t\tlet histring .= 'gui=NONE cterm=NONE '\n\t\t\telseif g:gruvbox_italic == 0\n\t\t\t\tlet histring .= 'gui=bold cterm=bold '\n\t\t\telseif g:gruvbox_bold == 0\n\t\t\t\tlet histring .= 'gui=italic cterm=italic '\n\t\t\telse\n\t\t\t\tlet histring .= 'gui=' . a:2 . ' cterm=' . a:2 . ' '\n\t\t\tendif\n\t\telseif a:2 == 'bold,underline'\n\t\t\tif g:gruvbox_underline == 0 && g:gruvbox_bold == 0\n\t\t\t\tlet histring .= 'gui=NONE cterm=NONE '\n\t\t\telseif g:gruvbox_underline == 0\n\t\t\t\tlet histring .= 'gui=bold cterm=bold '\n\t\t\telseif g:gruvbox_bold == 0\n\t\t\t\tlet histring .= 'gui=underline cterm=underline '\n\t\t\telse\n\t\t\t\tlet histring .= 'gui=' . a:2 . ' cterm=' . a:2 . ' '\n\t\t\tendif\n\t\telseif a:2 == 'underline,italic'\n\t\t\tif g:gruvbox_underline == 0 && g:gruvbox_italic == 0\n\t\t\t\tlet histring .= 'gui=NONE cterm=NONE '\n\t\t\telseif g:gruvbox_underline == 0\n\t\t\t\tlet histring .= 'gui=italic cterm=italic '\n\t\t\telseif g:gruvbox_italic == 0\n\t\t\t\tlet histring .= 'gui=underline cterm=underline '\n\t\t\telse\n\t\t\t\tlet histring .= 'gui=' . a:2 . ' cterm=' . a:2 . ' '\n\t\t\tendif\n\t\telseif a:2 == 'bold,underline,italic'\n\t\t\tif g:gruvbox_italic == 0 && g:gruvbox_bold == 0\n\t\t\t\tlet histring .= 'gui=underline cterm=underline '\n\t\t\telseif g:gruvbox_italic == 0\n\t\t\t\tlet histring .= 'gui=bold,underline cterm=bold,underline '\n\t\t\telseif g:gruvbox_bold == 0\n\t\t\t\tlet histring .= 'gui=italic,underline cterm=italic,underline '\n\t\t\telse\n\t\t\t\tlet histring .= 'gui=' . a:2 . ' cterm=' . a:2 . ' '\n\t\t\tendif\n\t\telse\n\t\t\tlet histring .= 'gui=' . a:2 . ' cterm=' . a:2 . ' '\n\t\tendif\n\telse\n\t\tlet histring .= 'gui=NONE cterm=NONE '\n\tendif\n\n\tif a:0 >= 3 && strlen(a:3)\n\t\tif a:3 == 'none'\n\t\t\tlet histring .= 'guisp=NONE '\n\t\telse\n\t\t\tlet c = get(s:gb, a:3)\n\t\t\tlet histring .= 'guisp=#' . c[0] . ' '\n\t\tendif\n\tendif\n\n\texecute histring\nendfunction\n\n\" }}}\n\n\" Vanilla colorscheme ---------------------------------------------------------\n\" General UI: {{{\n\n\" Normal text\ncall s:HL('Normal', 'light1', 'dark0')\n\n\" Correct background (see issue #7):\n\" --- Problem with changing between dark and light on 256 color terminal\n\" --- https://github.com/morhetz/gruvbox/issues/7\nif s:is_dark\n\tset background=dark\nelse\n\tset background=light\nendif\n\nif version >= 700\n\t\" Screen line that the cursor is\n\tcall s:HL('CursorLine',   'none', 'dark1')\n\t\" Screen column that the cursor is\n\tcall s:HL('CursorColumn', 'none', 'dark1')\n\n\t\" Tab pages line filler\n\tcall s:HL('TabLineFill', 'dark4', 'bg')\n\t\" Active tab page label\n\tcall s:HL('TabLineSel', 'bg', 'dark4', 'bold')\n\t\" Not active tab page label\n\tcall s:HL('TabLine', 'dark4', 'bg')\n\n\t\" Match paired bracket under the cursor\n\tcall s:HL('MatchParen', 'none', 'dark3', 'bold')\nendif\n\nif version >= 703\n\t\" Highlighted screen columns\n\tcall s:HL('ColorColumn',  'none', 'dark1')\n\n\t\" Concealed element: \\lambda → λ\n\tcall s:HL('Conceal', 'blue', 'none')\n\n\t\" Line number of CursorLine\n\tcall s:HL('CursorLineNr', 'yellow', 'dark1')\nendif\n\ncall s:HL('NonText',    'dark2')\ncall s:HL('SpecialKey', 'dark2')\n\nif g:gruvbox_invert_selection == 0\n\tcall s:HL('Visual',    'none',  'dark2')\n\tcall s:HL('VisualNOS', 'none',  'dark2')\nelse\n\tcall s:HL('Visual',    'none',  'dark3', 'inverse')\n\tcall s:HL('VisualNOS', 'none',  'dark3', 'inverse')\nendif\n\ncall s:HL('Search',    'dark0', 'yellow')\ncall s:HL('IncSearch', 'dark0', g:gruvbox_hls_cursor)\n\ncall s:HL('Underlined', 'blue', 'none', 'underline')\n\ncall s:HL('StatusLine',   'dark4', 'dark0', 'bold,inverse')\ncall s:HL('StatusLineNC', 'dark2', 'light4', 'bold,inverse')\n\n\" The column separating vertically split windows\ncall s:HL('VertSplit', 'light4', 'dark2')\n\n\" Current match in wildmenu completion\ncall s:HL('WildMenu', 'blue', 'dark2', 'bold')\n\n\" Directory names, special names in listing\ncall s:HL('Directory', 'green', 'none', 'bold')\n\n\" Titles for output from :set all, :autocmd, etc.\ncall s:HL('Title', 'green', 'none', 'bold')\n\n\" Error messages on the command line\ncall s:HL('ErrorMsg',   'bg', 'red', 'bold')\n\" More prompt: -- More --\ncall s:HL('MoreMsg',    'yellow', 'none', 'bold')\n\" Current mode message: -- INSERT --\ncall s:HL('ModeMsg',    'yellow', 'none', 'bold')\n\" 'Press enter' prompt and yes/no questions\ncall s:HL('Question',   'orange', 'none', 'bold')\n\" Warning messages\ncall s:HL('WarningMsg', 'red', 'none', 'bold')\n\n\" }}}\n\" Gutter: {{{\n\n\" Line number for :number and :# commands\ncall s:HL('LineNr', 'dark4')\n\n\" Column where signs are displayed\ncall s:HL('SignColumn', 'none', g:gruvbox_sign_column)\n\n\" Line used for closed folds\ncall s:HL('Folded', 'medium', 'dark1', 'italic')\n\" Column where folds are displayed\ncall s:HL('FoldColumn', 'medium', 'dark1')\n\n\" }}}\n\" Cursor: {{{\n\n\" Character under cursor\ncall s:HL('Cursor', 'none', 'none', 'inverse')\n\" Visual mode cursor, selection\ncall s:HL('vCursor', 'none', 'none', 'inverse')\n\" Input moder cursor\ncall s:HL('iCursor', 'none', 'none', 'inverse')\n\" Language mapping cursor\ncall s:HL('lCursor', 'none', 'none', 'inverse')\n\n\" }}}\n\" Syntax Highlighting: {{{\n\ncall s:HL('Special', 'orange')\nif g:gruvbox_italicize_comments == 0\n\tcall s:HL('Comment', 'medium', 'none')\nelse\n\tcall s:HL('Comment', 'medium', 'none', 'italic')\nendif\ncall s:HL('Todo', 'fg', 'bg', 'bold')\ncall s:HL('Error', 'bg', 'red', 'bold')\n\n\" Generic statement\ncall s:HL('Statement',   'red')\n\" if, then, else, endif, swicth, etc.\ncall s:HL('Conditional', 'red')\n\" for, do, while, etc.\ncall s:HL('Repeat',      'red')\n\" case, default, etc.\ncall s:HL('Label',       'red')\n\" try, catch, throw\ncall s:HL('Exception',   'red')\n\" sizeof, \"+\", \"*\", etc.\nhi! link Operator Normal\n\" Any other keyword\ncall s:HL('Keyword',     'red')\n\n\" Variable name\ncall s:HL('Identifier', 'blue')\n\" Function name\ncall s:HL('Function',   'green', 'none', 'bold')\n\n\" Generic preprocessor\ncall s:HL('PreProc',   'aqua')\n\" Preprocessor #include\ncall s:HL('Include',   'aqua')\n\" Preprocessor #define\ncall s:HL('Define',    'aqua')\n\" Same as Define\ncall s:HL('Macro',     'aqua')\n\" Preprocessor #if, #else, #endif, etc.\ncall s:HL('PreCondit', 'aqua')\n\n\" Generic constant\ncall s:HL('Constant',  'purple')\n\" Character constant: 'c', '/n'\ncall s:HL('Character', 'purple')\n\" String constant: \"this is a string\"\nif g:gruvbox_italicize_strings == 0\n\tcall s:HL('String',  'green')\nelse\n\tcall s:HL('String',  'green', 'none', 'italic')\nendif\n\" Boolean constant: TRUE, false\ncall s:HL('Boolean',   'purple')\n\" Number constant: 234, 0xff\ncall s:HL('Number',    'purple')\n\" Floating point constant: 2.3e10\ncall s:HL('Float',     'purple')\n\n\" Generic type\ncall s:HL('Type', 'yellow')\n\" static, register, volatile, etc\ncall s:HL('StorageClass', 'orange')\n\" struct, union, enum, etc.\ncall s:HL('Structure', 'aqua')\n\" typedef\ncall s:HL('Typedef', 'yellow')\n\n\" }}}\n\" Completion Menu: {{{\n\nif version >= 700\n\t\" Popup menu: normal item\n\tcall s:HL('Pmenu', 'light1', 'dark2')\n\t\" Popup menu: selected item\n\tcall s:HL('PmenuSel', 'dark2', 'blue', 'bold')\n\t\" Popup menu: scrollbar\n\tcall s:HL('PmenuSbar', 'none', 'dark2')\n\t\" Popup menu: scrollbar thumb\n\tcall s:HL('PmenuThumb', 'none', 'dark4')\nendif\n\n\" }}}\n\" Diffs: {{{\n\ncall s:HL('DiffDelete', 'dark0', 'red')\ncall s:HL('DiffAdd',    'dark0', 'green')\n\"call s:HL('DiffChange', 'dark0', 'blue')\n\"call s:HL('DiffText',   'dark0', 'yellow')\n\n\" Alternative setting\ncall s:HL('DiffChange', 'dark0', 'aqua')\ncall s:HL('DiffText',   'dark0', 'yellow')\n\n\" }}}\n\" Spelling: {{{\n\nif has(\"spell\")\n\t\" Not capitalised word\n\tcall s:HL('SpellCap',   'none', 'none', 'undercurl', 'red')\n\t\" Not recognized word\n\tcall s:HL('SpellBad',   'none', 'none', 'undercurl', 'blue')\n\t\" Wrong spelling for selected region\n\tcall s:HL('SpellLocal', 'none', 'none', 'undercurl', 'aqua')\n\t\" Rare word\n\tcall s:HL('SpellRare',  'none', 'none', 'undercurl', 'purple')\nendif\n\n\" }}}\n\n\" Plugin specific -------------------------------------------------------------\n\" EasyMotion: {{{\n\nhi! link EasyMotionTarget Search\nhi! link EasyMotionShade Comment\n\n\" }}}\n\" Sneak: {{{\n\nhi! link SneakPluginTarget Search\nhi! link SneakStreakTarget Search\ncall s:HL('SneakStreakMask', 'yellow', 'yellow')\nhi! link SneakStreakStatusLine Search\n\n\" }}}\n\" Indent Guides: {{{\n\nlet g:indent_guides_auto_colors = 0\n\nif g:gruvbox_invert_indent_guides == 0\n\tcall s:HL('IndentGuidesOdd', 'bg', 'dark2')\n\tcall s:HL('IndentGuidesEven', 'bg', 'dark1')\nelse\n\tcall s:HL('IndentGuidesOdd', 'bg', 'dark2', 'inverse')\n\tcall s:HL('IndentGuidesEven', 'bg', 'dark3', 'inverse')\nendif\n\n\" }}}\n\" IndentLine: {{{\n\nlet g:indentLine_color_term = s:gb.dark2[1]\nlet g:indentLine_color_gui = '#' . s:gb.dark2[0]\n\n\" }}}\n\" Rainbow Parentheses: {{{\n\nlet g:rbpt_colorpairs = \n\t\\ [\n\t\t\\ ['brown',       '#458588'], ['Darkblue',    '#b16286'],\n\t\t\\ ['darkgray',    '#cc241d'], ['darkgreen',   '#d65d0e'],\n\t\t\\ ['darkcyan',    '#458588'], ['darkred',     '#b16286'],\n\t\t\\ ['darkmagenta', '#cc241d'], ['brown',       '#d65d0e'],\n\t\t\\ ['gray',        '#458588'], ['black',       '#b16286'],\n\t\t\\ ['darkmagenta', '#cc241d'], ['Darkblue',    '#d65d0e'],\n\t\t\\ ['darkgreen',   '#458588'], ['darkcyan',    '#b16286'],\n\t\t\\ ['darkred',     '#cc241d'], ['red',         '#d65d0e'],\n\t\\ ]\n\nlet g:rainbow_guifgs = \n\t\\ [\n\t\t\\ '#458588', '#b16286', '#cc241d', '#d65d0e',\n\t\t\\ '#458588', '#b16286', '#cc241d', '#d65d0e',\n\t\t\\ '#458588', '#b16286', '#cc241d', '#d65d0e',\n\t\t\\ '#458588', '#b16286', '#cc241d', '#d65d0e'\n\t\\ ]\n\nlet g:rainbow_ctermfgs = \n\t\\ [\n\t\t\\ 'brown', 'Darkblue', 'darkgray', 'darkgreen',\n\t\t\\ 'darkcyan', 'darkred', 'darkmagenta', 'brown',\n\t\t\\ 'gray', 'black', 'darkmagenta', 'Darkblue',\n\t\t\\ 'darkgreen', 'darkcyan', 'darkred', 'red',\n\t\\ ]\n\n\"}}}\n\" Airline: {{{\n\nif !exists('g:airline_theme_map')\n\tlet g:airline_theme_map = { 'gruvbox.*': 'tomorrow' }\nelse\n\tlet g:airline_theme_map['gruvbox.*'] = 'tomorrow'\nendif\n\n\" }}}\n\" GitGutter: {{{\n\nif g:gruvbox_invert_signs == 0\n\tcall s:HL('GitGutterAdd', 'green', g:gruvbox_sign_column)\n\tcall s:HL('GitGutterChange', 'aqua', g:gruvbox_sign_column)\n\tcall s:HL('GitGutterDelete', 'red', g:gruvbox_sign_column)\n\tcall s:HL('GitGutterChangeDelete', 'aqua', g:gruvbox_sign_column)\nelse\n\tcall s:HL('GitGutterAdd', 'green', g:gruvbox_sign_column, 'inverse')\n\tcall s:HL('GitGutterChange', 'aqua', g:gruvbox_sign_column, 'inverse')\n\tcall s:HL('GitGutterDelete', 'red', g:gruvbox_sign_column, 'inverse')\n\tcall s:HL('GitGutterChangeDelete', 'aqua', g:gruvbox_sign_column, 'inverse')\nendif\n\n\" }}}\n\" Signify: {{{\n\nif g:gruvbox_invert_signs == 0\n\tcall s:HL('SignifySignAdd', 'green', g:gruvbox_sign_column)\n\tcall s:HL('SignifySignChange ', 'aqua', g:gruvbox_sign_column)\n\tcall s:HL('SignifySignDelete', 'red', g:gruvbox_sign_column)\nelse\n\tcall s:HL('SignifySignAdd', 'green', g:gruvbox_sign_column, 'inverse')\n\tcall s:HL('SignifySignChange ', 'aqua', g:gruvbox_sign_column, 'inverse')\n\tcall s:HL('SignifySignDelete', 'red', g:gruvbox_sign_column, 'inverse')\nendif\n\n\" }}}\n\" Syntastic: {{{\n\ncall s:HL('SyntasticError', 'none', 'none', 'undercurl', 'red')\ncall s:HL('SyntasticWarning', 'none', 'none', 'undercurl', 'yellow')\n\nif g:gruvbox_invert_signs == 0\n\tcall s:HL('SyntasticErrorSign', 'red', g:gruvbox_sign_column)\n\tcall s:HL('SyntasticWarningSign', 'yellow', g:gruvbox_sign_column)\nelse\n\tcall s:HL('SyntasticErrorSign', 'red', g:gruvbox_sign_column, 'inverse')\n\tcall s:HL('SyntasticWarningSign', 'yellow', g:gruvbox_sign_column, 'inverse')\nendif\n\n\" }}}\n\" Signature: {{{\n\nif g:gruvbox_invert_signs == 0\n\tcall s:HL('SignatureMarkerText', 'purple', g:gruvbox_sign_column)\n\tcall s:HL('SignatureMarkText', 'blue', g:gruvbox_sign_column)\nelse\n\tcall s:HL('SignatureMarkerText', 'purple', g:gruvbox_sign_column, 'inverse')\n\tcall s:HL('SignatureMarkText', 'blue', g:gruvbox_sign_column, 'inverse')\nendif\n\nlet g:SignatureMarkerTextHL='SignatureMarkerText'\nlet g:SignatureMarkTextHL='SignatureMarkText'\n\n\" }}}\n\" ShowMarks: {{{\n\nif g:gruvbox_invert_signs == 0\n\tcall s:HL('ShowMarksHLl', 'blue', g:gruvbox_sign_column)\n\tcall s:HL('ShowMarksHLu', 'blue', g:gruvbox_sign_column)\n\tcall s:HL('ShowMarksHLo', 'blue', g:gruvbox_sign_column)\n\tcall s:HL('ShowMarksHLm', 'blue', g:gruvbox_sign_column)\nelse\n\tcall s:HL('ShowMarksHLl', 'blue', g:gruvbox_sign_column, 'inverse')\n\tcall s:HL('ShowMarksHLu', 'blue', g:gruvbox_sign_column, 'inverse')\n\tcall s:HL('ShowMarksHLo', 'blue', g:gruvbox_sign_column, 'inverse')\n\tcall s:HL('ShowMarksHLm', 'blue', g:gruvbox_sign_column, 'inverse')\nendif\n\n\" }}}\n\" CtrlP: {{{\n\ncall s:HL('CtrlPMatch', 'yellow')\ncall s:HL('CtrlPNoEntries', 'red')\ncall s:HL('CtrlPPrtBase', 'dark2')\ncall s:HL('CtrlPPrtCursor', 'blue')\ncall s:HL('CtrlPLinePre', 'dark2')\n\ncall s:HL('CtrlPMode1', 'blue', 'dark2', 'bold')\ncall s:HL('CtrlPMode2', 'dark0', 'blue', 'bold')\ncall s:HL('CtrlPStats', 'light4', 'dark2', 'bold')\n\n\" }}}\n\" Startify: {{{\n\ncall s:HL('StartifyBracket', 'light3')\ncall s:HL('StartifyFile', 'light0')\ncall s:HL('StartifyNumber', 'blue')\ncall s:HL('StartifyPath', 'medium')\ncall s:HL('StartifySlash', 'medium')\ncall s:HL('StartifySection', 'yellow')\ncall s:HL('StartifySpecial', 'dark2')\ncall s:HL('StartifyHeader', 'orange')\ncall s:HL('StartifyFooter', 'dark2')\n\n\" }}}\n\" Vimshell: {{{\n\nlet g:vimshell_escape_colors = map(split(\n\t\t  \\ 'dark4 red green yellow blue purple aqua light4 ' .\n\t\t  \\ 'dark0 red green orange blue purple aqua light0'\n\t\t  \\ ), '\"#\" . s:gb[v:val][0]')\n\n\" }}}\n\n\" Filetype specific -----------------------------------------------------------\n\" Diff: {{{\n\ncall s:HL('diffAdded', 'green')\ncall s:HL('diffRemoved', 'red')\ncall s:HL('diffChanged', 'aqua')\n\ncall s:HL('diffFile', 'orange')\ncall s:HL('diffNewFile', 'yellow')\n\ncall s:HL('diffLine', 'blue')\n\n\" }}}\n\" Html: {{{\n\ncall s:HL('htmlTag', 'blue')\ncall s:HL('htmlEndTag', 'blue')\n\ncall s:HL('htmlTagName', 'aqua', 'none', 'bold')\ncall s:HL('htmlArg', 'aqua')\n\ncall s:HL('htmlScriptTag', 'purple')\ncall s:HL('htmlTagN', 'light1')\ncall s:HL('htmlSpecialTagName', 'aqua', 'none', 'bold')\n\ncall s:HL('htmlLink', 'light4', 'none', 'underline')\n\ncall s:HL('htmlSpecialChar', 'orange')\n\ncall s:HL('htmlBold', 'fg', 'bg', 'bold')\ncall s:HL('htmlBoldUnderline', 'fg', 'bg', 'bold,underline')\ncall s:HL('htmlBoldItalic', 'fg', 'bg', 'bold,italic')\ncall s:HL('htmlBoldUnderlineItalic', 'fg', 'bg', 'bold,underline,italic')\n\ncall s:HL('htmlUnderline', 'fg', 'bg', 'underline')\ncall s:HL('htmlUnderlineItalic', 'fg', 'bg', 'underline,italic')\ncall s:HL('htmlItalic', 'fg', 'bg', 'italic')\n\n\" }}}\n\" Xml: {{{\n\ncall s:HL('xmlTag', 'blue')\ncall s:HL('xmlEndTag', 'blue')\ncall s:HL('xmlTagName', 'blue')\ncall s:HL('xmlEqual', 'blue')\ncall s:HL('docbkKeyword', 'aqua', 'none', 'bold')\n\ncall s:HL('xmlDocTypeDecl', 'medium')\ncall s:HL('xmlDocTypeKeyword', 'purple')\ncall s:HL('xmlCdataStart', 'medium')\ncall s:HL('xmlCdataCdata', 'purple')\ncall s:HL('dtdFunction', 'medium')\ncall s:HL('dtdTagName', 'purple')\n\ncall s:HL('xmlAttrib', 'aqua')\ncall s:HL('xmlProcessingDelim', 'medium')\ncall s:HL('dtdParamEntityPunct', 'medium')\ncall s:HL('dtdParamEntityDPunct', 'medium')\ncall s:HL('xmlAttribPunct', 'medium')\n\ncall s:HL('xmlEntity', 'orange')\ncall s:HL('xmlEntityPunct', 'orange')\n\" }}}\n\" Vim: {{{\n\nif g:gruvbox_italicize_comments == 0\n\tcall s:HL('vimCommentTitle', 'light4_256', 'none', 'bold')\nelse\n\tcall s:HL('vimCommentTitle', 'light4_256', 'none', 'bold,italic')\nendif\ncall s:HL('vimNotation', 'orange')\ncall s:HL('vimBracket', 'orange')\ncall s:HL('vimMapModKey', 'orange')\ncall s:HL('vimFuncSID', 'light3')\ncall s:HL('vimSetSep', 'light3')\ncall s:HL('vimSep', 'light3')\ncall s:HL('vimContinue', 'light3')\n\n\" }}}\n\" Clojure: {{{\n\ncall s:HL('clojureKeyword', 'blue')\ncall s:HL('clojureCond', 'orange')\ncall s:HL('clojureSpecial', 'orange')\ncall s:HL('clojureDefine', 'orange')\n\ncall s:HL('clojureFunc', 'yellow')\ncall s:HL('clojureRepeat', 'yellow')\ncall s:HL('clojureCharacter', 'aqua')\ncall s:HL('clojureStringEscape', 'aqua')\ncall s:HL('clojureException', 'red')\n\ncall s:HL('clojureRegexp', 'aqua')\ncall s:HL('clojureRegexpEscape', 'aqua')\ncall s:HL('clojureRegexpCharClass', 'light3', 'none', 'bold')\ncall s:HL('clojureRegexpMod', 'light3', 'none', 'bold')\ncall s:HL('clojureRegexpQuantifier', 'light3', 'none', 'bold')\n\ncall s:HL('clojureParen', 'light3')\ncall s:HL('clojureAnonArg', 'yellow')\ncall s:HL('clojureVariable', 'blue')\ncall s:HL('clojureMacro', 'orange')\n\ncall s:HL('clojureMeta', 'yellow')\ncall s:HL('clojureDeref', 'yellow')\ncall s:HL('clojureQuote', 'yellow')\ncall s:HL('clojureUnquote', 'yellow')\n\n\" }}}\n\" C: {{{\n\ncall s:HL('cOperator', 'purple')\ncall s:HL('cStructure', 'orange')\n\n\" }}}\n\" Python: {{{\n\ncall s:HL('pythonBuiltin', 'orange')\ncall s:HL('pythonBuiltinObj', 'orange')\ncall s:HL('pythonBuiltinFunc', 'orange')\ncall s:HL('pythonFunction', 'aqua')\ncall s:HL('pythonDecorator', 'red')\ncall s:HL('pythonInclude', 'blue')\ncall s:HL('pythonImport', 'blue')\ncall s:HL('pythonRun', 'blue')\ncall s:HL('pythonCoding', 'blue')\ncall s:HL('pythonOperator', 'red')\ncall s:HL('pythonExceptions', 'purple')\ncall s:HL('pythonBoolean', 'purple')\ncall s:HL('pythonDot', 'light3')\n\n\" }}}\n\" CSS: {{{\n\ncall s:HL('cssBraces', 'blue')\ncall s:HL('cssFunctionName', 'yellow')\ncall s:HL('cssIdentifier', 'orange')\ncall s:HL('cssClassName', 'green')\ncall s:HL('cssColor', 'blue')\ncall s:HL('cssSelectorOp', 'blue')\ncall s:HL('cssSelectorOp2', 'blue')\ncall s:HL('cssImportant', 'green')\ncall s:HL('cssVendor', 'light1')\n\ncall s:HL('cssTextProp', 'aqua')\ncall s:HL('cssAnimationProp', 'aqua')\ncall s:HL('cssUIProp', 'yellow')\ncall s:HL('cssTransformProp', 'aqua')\ncall s:HL('cssTransitionProp', 'aqua')\ncall s:HL('cssPrintProp', 'aqua')\ncall s:HL('cssPositioningProp', 'yellow')\ncall s:HL('cssBoxProp', 'aqua')\ncall s:HL('cssFontDescriptorProp', 'aqua')\ncall s:HL('cssFlexibleBoxProp', 'aqua')\ncall s:HL('cssBorderOutlineProp', 'aqua')\ncall s:HL('cssBackgroundProp', 'aqua')\ncall s:HL('cssMarginProp', 'aqua')\ncall s:HL('cssListProp', 'aqua')\ncall s:HL('cssTableProp', 'aqua')\ncall s:HL('cssFontProp', 'aqua')\ncall s:HL('cssPaddingProp', 'aqua')\ncall s:HL('cssDimensionProp', 'aqua')\ncall s:HL('cssRenderProp', 'aqua')\ncall s:HL('cssColorProp', 'aqua')\ncall s:HL('cssGeneratedContentProp', 'aqua')\n\n\" }}}\n\" JavaScript: {{{\n\ncall s:HL('javaScriptBraces', 'orange')\ncall s:HL('javaScriptFunction', 'aqua')\ncall s:HL('javaScriptIdentifier', 'red')\ncall s:HL('javaScriptMember', 'blue')\ncall s:HL('javaScriptNumber', 'purple')\ncall s:HL('javaScriptNull', 'purple')\ncall s:HL('javaScriptParens', 'light3')\n\n\" }}}\n\" CoffeeScript: {{{\n\ncall s:HL('coffeeExtendedOp', 'light3')\ncall s:HL('coffeeSpecialOp', 'light3')\ncall s:HL('coffeeCurly', 'orange')\ncall s:HL('coffeeParen', 'light3')\ncall s:HL('coffeeBracket', 'orange')\n\n\" }}}\n\" Ruby: {{{\n\ncall s:HL('rubyStringDelimiter', 'green')\ncall s:HL('rubyInterpolationDelimiter', 'aqua')\n\n\" }}}\n\" ObjectiveC: {{{\n\ncall s:HL('objcTypeModifier', 'red')\ncall s:HL('objcDirective', 'blue')\n\n\" }}}\n\" Go: {{{\n\ncall s:HL('goDirective', 'aqua')\ncall s:HL('goConstants', 'purple')\ncall s:HL('goDeclaration', 'red')\ncall s:HL('goDeclType', 'blue')\ncall s:HL('goBuiltins', 'orange')\n\n\" }}}\n\" Lua: {{{\n\ncall s:HL('luaIn', 'red')\ncall s:HL('luaFunction', 'aqua')\ncall s:HL('luaTable', 'orange')\n\n\" }}}\n\" MoonScript: {{{\n\ncall s:HL('moonSpecialOp', 'light3')\ncall s:HL('moonExtendedOp', 'light3')\ncall s:HL('moonFunction', 'light3')\ncall s:HL('moonObject', 'yellow')\n\n\" }}}\n\" Java: {{{\n\ncall s:HL('javaAnnotation', 'blue')\ncall s:HL('javaDocTags', 'aqua')\nhi! link javaCommentTitle vimCommentTitle\ncall s:HL('javaParen', 'light3')\ncall s:HL('javaParen1', 'light3')\ncall s:HL('javaParen2', 'light3')\ncall s:HL('javaParen3', 'light3')\ncall s:HL('javaParen4', 'light3')\ncall s:HL('javaParen5', 'light3')\ncall s:HL('javaOperator', 'orange')\n\ncall s:HL('javaVarArg', 'green')\n\n\" }}}\n\n\" Functions -------------------------------------------------------------------\n\" Search Highlighting Cursor {{{\n\nfunction! GruvboxHlsShowCursor()\n\tcall s:HL('Cursor', 'dark0', g:gruvbox_hls_cursor)\n\tcall s:HL('vCursor', 'dark0', g:gruvbox_hls_cursor)\n\tcall s:HL('iCursor', 'dark0', g:gruvbox_hls_cursor)\n\tcall s:HL('lCursor', 'dark0', g:gruvbox_hls_cursor)\nendfunction\n\nfunction! GruvboxHlsHideCursor()\n\tcall s:HL('Cursor', 'none', 'none', 'inverse')\n\tcall s:HL('vCursor', 'none', 'none', 'inverse')\n\tcall s:HL('iCursor', 'none', 'none', 'inverse')\n\tcall s:HL('lCursor', 'none', 'none', 'inverse')\nendfunction\n\n\" }}}\n\n\" vim: set sw=3 ts=3 sts=3 noet tw=80 ft=vim fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/gruvbox/gruvbox_256palette.sh",
    "content": "#!/bin/sh\n\nif [ \"${TERM%%-*}\" = \"screen\" ]; then\n\tif [ -n \"$TMUX\" ]; then\n\t\tprintf \"\\033Ptmux;\\033\\033]4;236;rgb:32/30/2f\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;234;rgb:1d/20/21\\007\\033\\\\\"\n\n\t\tprintf \"\\033Ptmux;\\033\\033]4;235;rgb:28/28/28\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;237;rgb:3c/38/36\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;239;rgb:50/49/45\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;241;rgb:66/5c/54\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;243;rgb:7c/6f/64\\007\\033\\\\\"\n\n\t\tprintf \"\\033Ptmux;\\033\\033]4;244;rgb:92/83/74\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;245;rgb:92/83/74\\007\\033\\\\\"\n\n\t\tprintf \"\\033Ptmux;\\033\\033]4;228;rgb:f4/e8/ba\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;230;rgb:ff/ff/c8\\007\\033\\\\\"\n\n\t\tprintf \"\\033Ptmux;\\033\\033]4;229;rgb:fd/f4/c1\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;223;rgb:eb/db/b2\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;250;rgb:d5/c4/a1\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;248;rgb:bd/ae/93\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;246;rgb:a8/99/84\\007\\033\\\\\"\n\n\t\tprintf \"\\033Ptmux;\\033\\033]4;167;rgb:fb/49/34\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;142;rgb:b8/bb/26\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;214;rgb:fa/bd/2f\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;109;rgb:83/a5/98\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;175;rgb:d3/86/9b\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;108;rgb:8e/c0/7c\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;208;rgb:fe/80/19\\007\\033\\\\\"\n\n\t\tprintf \"\\033Ptmux;\\033\\033]4;88;rgb:9d/00/06\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;100;rgb:79/74/0e\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;136;rgb:b5/76/14\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;24;rgb:07/66/78\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;96;rgb:8f/3f/71\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;66;rgb:42/7b/58\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;130;rgb:af/3a/03\\007\\033\\\\\"\n\telse\n\t\tprintf \"\\033P\\033]4;236;rgb:32/30/2f\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;234;rgb:1d/20/21\\007\\033\\\\\"\n\n\t\tprintf \"\\033P\\033]4;235;rgb:28/28/28\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;237;rgb:3c/38/36\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;239;rgb:50/49/45\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;241;rgb:66/5c/54\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;243;rgb:7c/6f/64\\007\\033\\\\\"\n\n\t\tprintf \"\\033P\\033]4;244;rgb:92/83/74\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;245;rgb:92/83/74\\007\\033\\\\\"\n\n\t\tprintf \"\\033P\\033]4;228;rgb:f4/e8/ba\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;230;rgb:ff/ff/c8\\007\\033\\\\\"\n\n\t\tprintf \"\\033P\\033]4;229;rgb:fd/f4/c1\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;223;rgb:eb/db/b2\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;250;rgb:d5/c4/a1\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;248;rgb:bd/ae/93\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;246;rgb:a8/99/84\\007\\033\\\\\"\n\n\t\tprintf \"\\033P\\033]4;167;rgb:fb/49/34\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;142;rgb:b8/bb/26\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;214;rgb:fa/bd/2f\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;109;rgb:83/a5/98\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;175;rgb:d3/86/9b\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;108;rgb:8e/c0/7c\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;208;rgb:fe/80/19\\007\\033\\\\\"\n\n\t\tprintf \"\\033P\\033]4;88;rgb:9d/00/06\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;100;rgb:79/74/0e\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;136;rgb:b5/76/14\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;24;rgb:07/66/78\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;96;rgb:8f/3f/71\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;66;rgb:42/7b/58\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;130;rgb:af/3a/03\\007\\033\\\\\"\n\tfi\nelse\n\tprintf \"\\033]4;236;rgb:32/30/2f\\033\\\\\"\n\tprintf \"\\033]4;234;rgb:1d/20/21\\033\\\\\"\n\n\tprintf \"\\033]4;235;rgb:28/28/28\\033\\\\\"\n\tprintf \"\\033]4;237;rgb:3c/38/36\\033\\\\\"\n\tprintf \"\\033]4;239;rgb:50/49/45\\033\\\\\"\n\tprintf \"\\033]4;241;rgb:66/5c/54\\033\\\\\"\n\tprintf \"\\033]4;243;rgb:7c/6f/64\\033\\\\\"\n\n\tprintf \"\\033]4;244;rgb:92/83/74\\033\\\\\"\n\tprintf \"\\033]4;245;rgb:92/83/74\\033\\\\\"\n\n\tprintf \"\\033]4;228;rgb:f4/e8/ba\\033\\\\\"\n\tprintf \"\\033]4;230;rgb:ff/ff/c8\\033\\\\\"\n\n\tprintf \"\\033]4;229;rgb:fd/f4/c1\\033\\\\\"\n\tprintf \"\\033]4;223;rgb:eb/db/b2\\033\\\\\"\n\tprintf \"\\033]4;250;rgb:d5/c4/a1\\033\\\\\"\n\tprintf \"\\033]4;248;rgb:bd/ae/93\\033\\\\\"\n\tprintf \"\\033]4;246;rgb:a8/99/84\\033\\\\\"\n\n\tprintf \"\\033]4;167;rgb:fb/49/34\\033\\\\\"\n\tprintf \"\\033]4;142;rgb:b8/bb/26\\033\\\\\"\n\tprintf \"\\033]4;214;rgb:fa/bd/2f\\033\\\\\"\n\tprintf \"\\033]4;109;rgb:83/a5/98\\033\\\\\"\n\tprintf \"\\033]4;175;rgb:d3/86/9b\\033\\\\\"\n\tprintf \"\\033]4;108;rgb:8e/c0/7c\\033\\\\\"\n\tprintf \"\\033]4;208;rgb:fe/80/19\\033\\\\\"\n\n\tprintf \"\\033]4;88;rgb:9d/00/06\\033\\\\\"\n\tprintf \"\\033]4;100;rgb:79/74/0e\\033\\\\\"\n\tprintf \"\\033]4;136;rgb:b5/76/14\\033\\\\\"\n\tprintf \"\\033]4;24;rgb:07/66/78\\033\\\\\"\n\tprintf \"\\033]4;96;rgb:8f/3f/71\\033\\\\\"\n\tprintf \"\\033]4;66;rgb:42/7b/58\\033\\\\\"\n\tprintf \"\\033]4;130;rgb:af/3a/03\\033\\\\\"\nfi\n"
  },
  {
    "path": ".vim/bundle/gruvbox/gruvbox_256palette_osx.sh",
    "content": "#!/bin/sh\n\nif [ \"${TERM%%-*}\" = \"screen\" ]; then\n\tif [ -n \"$TMUX\" ]; then\n\t\tprintf \"\\033Ptmux;\\033\\033]4;236;rgb:26/24/23\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;234;rgb:16/18/19\\007\\033\\\\\"\n\n\t\tprintf \"\\033Ptmux;\\033\\033]4;235;rgb:1e/1e/1e\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;237;rgb:2e/2a/29\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;239;rgb:3f/39/35\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;241;rgb:53/4a/42\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;243;rgb:68/5c/51\\007\\033\\\\\"\n\n\t\tprintf \"\\033Ptmux;\\033\\033]4;244;rgb:7f/70/61\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;245;rgb:7f/70/61\\007\\033\\\\\"\n\n\t\tprintf \"\\033Ptmux;\\033\\033]4;228;rgb:f1/e4/ac\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;230;rgb:ff/ff/bc\\007\\033\\\\\"\n\n\t\tprintf \"\\033Ptmux;\\033\\033]4;229;rgb:fc/f3/b4\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;223;rgb:e6/d4/a3\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;250;rgb:cb/b8/90\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;248;rgb:af/9f/81\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;246;rgb:97/87/71\\007\\033\\\\\"\n\n\t\tprintf \"\\033Ptmux;\\033\\033]4;167;rgb:f7/30/28\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;142;rgb:aa/b0/1e\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;214;rgb:f7/b1/25\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;109;rgb:71/95/86\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;175;rgb:c7/70/89\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;108;rgb:7d/b6/69\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;208;rgb:fb/6a/16\\007\\033\\\\\"\n\n\t\tprintf \"\\033Ptmux;\\033\\033]4;88;rgb:89/00/09\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;100;rgb:66/62/0d\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;136;rgb:a5/63/11\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;24;rgb:0e/53/65\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;96;rgb:7b/2b/5e\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;66;rgb:35/6a/46\\007\\033\\\\\"\n\t\tprintf \"\\033Ptmux;\\033\\033]4;130;rgb:9d/28/07\\007\\033\\\\\"\n\telse\n\t\tprintf \"\\033P\\033]4;236;rgb:26/24/23\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;234;rgb:16/18/19\\007\\033\\\\\"\n\n\t\tprintf \"\\033P\\033]4;235;rgb:1e/1e/1e\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;237;rgb:2e/2a/29\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;239;rgb:3f/39/35\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;241;rgb:53/4a/42\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;243;rgb:68/5c/51\\007\\033\\\\\"\n\n\t\tprintf \"\\033P\\033]4;244;rgb:7f/70/61\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;245;rgb:7f/70/61\\007\\033\\\\\"\n\n\t\tprintf \"\\033P\\033]4;228;rgb:f1/e4/ac\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;230;rgb:ff/ff/bc\\007\\033\\\\\"\n\n\t\tprintf \"\\033P\\033]4;229;rgb:fc/f3/b4\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;223;rgb:e6/d4/a3\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;250;rgb:cb/b8/90\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;248;rgb:af/9f/81\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;246;rgb:97/87/71\\007\\033\\\\\"\n\n\t\tprintf \"\\033P\\033]4;167;rgb:f7/30/28\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;142;rgb:aa/b0/1e\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;214;rgb:f7/b1/25\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;109;rgb:71/95/86\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;175;rgb:c7/70/89\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;108;rgb:7d/b6/69\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;208;rgb:fb/6a/16\\007\\033\\\\\"\n\n\t\tprintf \"\\033P\\033]4;88;rgb:89/00/09\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;100;rgb:66/62/0d\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;136;rgb:a5/63/11\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;24;rgb:0e/53/65\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;96;rgb:7b/2b/5e\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;66;rgb:35/6a/46\\007\\033\\\\\"\n\t\tprintf \"\\033P\\033]4;130;rgb:9d/28/07\\007\\033\\\\\"\n\tfi\nelse\n\tprintf \"\\033]4;236;rgb:26/24/23\\033\\\\\"\n\tprintf \"\\033]4;234;rgb:16/18/19\\033\\\\\"\n\n\tprintf \"\\033]4;235;rgb:1e/1e/1e\\033\\\\\"\n\tprintf \"\\033]4;237;rgb:2e/2a/29\\033\\\\\"\n\tprintf \"\\033]4;239;rgb:3f/39/35\\033\\\\\"\n\tprintf \"\\033]4;241;rgb:53/4a/42\\033\\\\\"\n\tprintf \"\\033]4;243;rgb:68/5c/51\\033\\\\\"\n\n\tprintf \"\\033]4;244;rgb:7f/70/61\\033\\\\\"\n\tprintf \"\\033]4;245;rgb:7f/70/61\\033\\\\\"\n\n\tprintf \"\\033]4;228;rgb:f1/e4/ac\\033\\\\\"\n\tprintf \"\\033]4;230;rgb:ff/ff/bc\\033\\\\\"\n\n\tprintf \"\\033]4;229;rgb:fc/f3/b4\\033\\\\\"\n\tprintf \"\\033]4;223;rgb:e6/d4/a3\\033\\\\\"\n\tprintf \"\\033]4;250;rgb:cb/b8/90\\033\\\\\"\n\tprintf \"\\033]4;248;rgb:af/9f/81\\033\\\\\"\n\tprintf \"\\033]4;246;rgb:97/87/71\\033\\\\\"\n\n\tprintf \"\\033]4;167;rgb:f7/30/28\\033\\\\\"\n\tprintf \"\\033]4;142;rgb:aa/b0/1e\\033\\\\\"\n\tprintf \"\\033]4;214;rgb:f7/b1/25\\033\\\\\"\n\tprintf \"\\033]4;109;rgb:71/95/86\\033\\\\\"\n\tprintf \"\\033]4;175;rgb:c7/70/89\\033\\\\\"\n\tprintf \"\\033]4;108;rgb:7d/b6/69\\033\\\\\"\n\tprintf \"\\033]4;208;rgb:fb/6a/16\\033\\\\\"\n\n\tprintf \"\\033]4;88;rgb:89/00/09\\033\\\\\"\n\tprintf \"\\033]4;100;rgb:66/62/0d\\033\\\\\"\n\tprintf \"\\033]4;136;rgb:a5/63/11\\033\\\\\"\n\tprintf \"\\033]4;24;rgb:0e/53/65\\033\\\\\"\n\tprintf \"\\033]4;96;rgb:7b/2b/5e\\033\\\\\"\n\tprintf \"\\033]4;66;rgb:35/6a/46\\033\\\\\"\n\tprintf \"\\033]4;130;rgb:9d/28/07\\033\\\\\"\nfi\n"
  },
  {
    "path": ".vim/bundle/html5.vim/CHANGES.markdown",
    "content": "# html5.vim\n\n## Change Log\n\n### Version 0.27\n\n- Added inline SVG\n\n### Version 0.26\n\n- Support multi-value attributes (Most of them are WAI-ARIA attributes)\n- Some old complete function bug fix\n\n### Version 0.25\n\n- WAI-ARIA support bug fix\n- WAI-ARIA complete supports all doctypes now\n\n### Version 0.2\n\n- attributes now must match from beginning\n- fix some attr(\\w*on\\w*) will use jscomplete for their value\n- add vim-makefile\n\n### Version 0.1\n\n- First Version\n- Add html5 dictionary file and doctype support\n"
  },
  {
    "path": ".vim/bundle/html5.vim/Makefile",
    "content": "# vim:filetype=make:foldmethod=marker:fdl=0:\n#\n# Makefile: install/uninstall/link vim plugin files.\n# Author: Cornelius <cornelius.howl@gmail.com>\n# Date:   一  3/15 22:49:26 2010\n# Version:  1.0\n#\n# PLEASE DO NOT EDIT THIS FILE. THIS FILE IS AUTO-GENERATED FROM Makefile.tpl\n# LICENSE {{{\n# Copyright (c) 2010 <Cornelius (c9s)>\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n# }}}\n# VIM RECORD FORMAT: {{{\n# {\n#           version => 0.2,    # record spec version\n#           generated_by => 'Vimana-' . $Vimana::VERSION,\n#           install_type => 'auto',    # auto , make , rake ... etc\n#           package => $self->package_name,\n#           files => \\@e,\n# }\n# }}}\n\n# INTERNAL VARIABLES {{{\n\nRECORD_FILE=.record\nPWD=`pwd`\nREADME_FILES=`ls -1 | grep -i readme`\nWGET_OPT=-c -nv\nCURL_OPT=\nRECORD_SCRIPT=.mkrecord\nTAR=tar czvf\n\nGIT_SOURCES=\n\n# INTERNAL FUNCTIONS {{{\nrecord_file = \\\n\t\tPTYPE=`cat $(1) | perl -nle 'print $$1 if /^\"\\s*script\\s*type:\\s*(\\S*)$$/i'` ;\\\n\t\techo $(VIMRUNTIME)/$$PTYPE/$(1) >> $(2)\n\n# }}}\n\n# PUBLIC FUNCTIONS {{{\n\nGIT_SOURCES=\nDEPEND_DIR=/tmp/vim-deps\n\n# Usage:\n#\n# \t\t$(call install_git_sources)\n#\n\ninstall_git_source = \\\n\t\tPWD=$(PWD) ; \\\n\t\tmkdir -p $(DEPEND_DIR) ; \\\n\t\tcd $(DEPEND_DIR) ; \\\n\t\tfor git_uri in $(GIT_SOURCES) ; do \\\n\t\t\tOUTDIR=$$(echo $$git_uri | perl -pe 's{^.*/}{}') ;\\\n\t\t\techo $$OUTDIR ; \\\n\t\t\tif [[ -e $$OUTDIR ]] ; then \\\n\t\t\t\tcd $$OUTDIR ; \\\n\t\t\t\tgit pull origin master && \\\n\t\t\t\tmake install && cd .. ; \\\n\t\t\telse \\\n\t\t\t\tgit clone $$git_uri $$OUTDIR && \\\n\t\t\t\tcd $$OUTDIR && \\\n\t\t\t\tmake install && cd .. ; \\\n\t\t\tfi; \\\n\t\tdone ;\n\n\n\n\n# install file by inspecting content\ninstall_file = \\\n\t\tPTYPE=`cat $(1) | perl -nle 'print $$1 if /^\"\\s*script\\s*type:\\s*(\\S*)$$/i'` ;\\\n\t\tcp -v $(1) $(VIMRUNTIME)/$$PTYPE/$(1)\n\nlink_file = \\\n\t\tPTYPE=`cat $(1) | perl -nle 'print $$1 if /^\"\\s*script\\s*type:\\s*(\\S*)$$/i'` ;\\\n\t\tcp -v $(1) $(VIMRUNTIME)/$$PTYPE/$(1)\n\nunlink_file = \\\n\t\tPTYPE=`cat $(1) | perl -nle 'print $$1 if /^\"\\s*script\\s*type:\\s*(\\S*)$$/i'` ;\\\n\t\trm -fv $(VIMRUNTIME)/$$PTYPE/$(1)\n\n# fetch script from an url\nfetch_url = \\\n\t\t@if [[ -e $(2) ]] ; then \t\t\t\t\\\n\t\t\texit\t\t\t\t\t\t\t\t\\\n\t\t; fi\t \t\t\t\t\t\t\t    \\\n\t\t; echo \" => $(2)\"\t\t\t\t\t\t\\\n\t\t; if [[ ! -z `which curl` ]] ; then   \\\n\t\t\tcurl $(CURL_OPT) $(1) -o $(2) ;\t\t\t\t\t\\\n\t\t; elif [[ ! -z `which wget` ]] ; then \t\\\n\t\t\twget $(WGET_OPT) $(1) -O $(2)  \t\t\t\t    \\\n\t\t; fi  \t\t\t\t\t\t\t\t\t\\\n\t\t; echo $(2) >> .bundlefiles\n\n\ninstall_source = \\\n\t\tfor git_uri in $(GIT_SOURCES) ; do \\\n\t\t\tOUTDIR=$$(echo $$git_uri | perl -pe 's{^.*/}{}') ;\\\n\t\t\techo $$OUTDIR ; \\\n\t\tdone\n\n# fetch script from github\nfetch_github = \\\n\t\t@if [[ -e $(5) ]] ; then \t\t\t\t\\\n\t\t\texit\t\t\t\t\t\t\t\t\\\n\t\t; fi\t \t\t\t\t\t\t\t    \\\n\t\t; echo \" => $(5)\"\t\t\t\t\t\t\\\n\t\t; if [[ ! -z `which curl` ]] ; then                        \t    \\\n\t\t\tcurl $(CURL_OPT) http://github.com/$(1)/$(2)/raw/$(3)/$(4) -o $(5)      \\\n\t\t; elif [[ ! -z `which wget` ]] ; then                               \\\n\t\t\twget $(WGET_OPT) http://github.com/$(1)/$(2)/raw/$(3)/$(4) -O $(5)  \\\n\t\t; fi\t\t\t\t\t\t\t\t\t\\\n\t\t; echo $(5) >> .bundlefiles\n\n# fetch script from local file\nfetch_local = @cp -v $(1) $(2) \\\n\t\t; @echo $(2) >> .bundlefiles\n\n# 1: NAME , 2: URI\ndep_from_git = \\\n\t\tD=/tmp/$(1)-$$RANDOM ; git clone $(2) $$D ; cd $$D ; make install ; \n\ndep_from_svn = \\\n\t\tD=/tmp/$(1)-$$RANDOM ; svn checkout $(2) $$D ; cd $$D ; make install ;\n\n# }}}\n# }}}\n# ======= DEFAULT CONFIG ======= {{{\n\n# Default plugin name\nNAME=`basename \\`pwd\\``\nVERSION=0.1\n\n# Files to add to tarball:\nDIRS=`ls -1F | grep / | sed -e 's/\\///'`\n\n# Runtime path to install:\nVIMRUNTIME=~/.vim\n\n# Other Files to be added:\nFILES=`ls -1 | grep '.vim$$'`\nMKFILES=Makefile `ls -1 | grep '.mk$$'`\n\n# ======== USER CONFIG ======= {{{\n#   please write config in config.mk\n#   this will override default config\n#\n# Custom Name:\n#\n# \tNAME=[plugin name]\n#\n# Custom dir list:\n#\n# \tDIRS=autoload after doc syntax plugin \n#\n# Files to add to tarball:\n#\n# \tFILES=\n# \n# Bundle dependent scripts:\n#\n# \tbundle-deps:\n# \t  $(call fetch_github,[account id],[project],[branch],[source path],[target path])\n# \t  $(call fetch_url,[file url],[target path])\n# \t  $(call fetch_local,[from],[to])\n\nSHELL=bash\n\nCONFIG_FILE=config.mk\n-include ~/.vimauthor.mk\n-include $(CONFIG_FILE)\n\n# }}}\n# }}}\n# ======= SECTIONS ======= {{{\n-include ext.mk\n\nall: install-deps install\n\ninstall-deps:\n\t# check required binaries\n\t[[ -n $$(which git) ]]\n\t[[ -n $$(which bash) ]]\n\t[[ -n $$(which vim) ]]\n\t[[ -n $$(which wget) || -n $$(which curl) ]]\n\t$(call install_git_sources)\n\ncheck-require:\n\t@if [[ -n `which wget` || -n `which curl` || -n `which fetch` ]]; then echo \"wget|curl|fetch: OK\" ; else echo \"wget|curl|fetch: NOT OK\" ; fi\n\t@if [[ -n `which vim` ]] ; then echo \"vim: OK\" ; else echo \"vim: NOT OK\" ; fi\n\nconfig:\n\t@rm -f $(CONFIG_FILE)\n\t@echo \"NAME=\"                                                                                      >> $(CONFIG_FILE)\n\t@echo \"VERSION=\"                                                                                           >> $(CONFIG_FILE)\n\t@echo \"#DIRS=\"\n\t@echo \"#FILES=\"\n\t@echo \"\"                                                                                           >> $(CONFIG_FILE)\n\t@echo \"bundle-deps:\"                                                                               >> $(CONFIG_FILE)\n\t@echo \"\\t\\t\\$$(call fetch_github,ID,REPOSITORY,BRANCH,PATH,TARGET_PATH)\" >> $(CONFIG_FILE)\n\t@echo \"\\t\\t\\$$(call fetch_url,FILE_URL,TARGET_PATH)\"                                           >> $(CONFIG_FILE)\n\n\ninit-author:\n\t@echo \"AUTHOR=\" > ~/.vimauthor.mk\n\nbundle-deps:\n\nbundle: bundle-deps\n\ndist: bundle mkfilelist\n\t@$(TAR) $(NAME)-$(VERSION).tar.gz --exclude '*.svn' --exclude '.git' $(DIRS) $(README_FILES) $(FILES) $(MKFILES)\n\t@echo \"$(NAME)-$(VERSION).tar.gz is ready.\"\n\ninit-runtime:\n\t@mkdir -vp $(VIMRUNTIME)\n\t@mkdir -vp $(VIMRUNTIME)/record\n\t@if [[ -n \"$(DIRS)\" ]] ; then find $(DIRS) -type d | while read dir ;  do \\\n\t\t\tmkdir -vp $(VIMRUNTIME)/$$dir ; done ; fi\n\nrelease:\n\tif [[ -n `which vimup` ]] ; then \\\n\tfi\n\npure-install:\n\t@echo \"Using Shell:\" $(SHELL) \n\t@echo \"Installing\"\n\t@if [[ -n \"$(DIRS)\" ]] ; then find $(DIRS) -type f | while read file ; do \\\n\t\t\tcp -v $$file $(VIMRUNTIME)/$$file ; done ; fi\n\t@echo \"$(FILES)\" | while read vimfile ; do \\\n\t\tif [[ -n $$vimfile ]] ; then \\\n\t\t\t$(call install_file,$$vimfile) ; fi ; done\n\ninstall: init-runtime bundle pure-install record\n\n\nuninstall-files:\n\t@echo \"Uninstalling\"\n\t@if [[ -n \"$(DIRS)\" ]] ; then find $(DIRS) -type f | while read file ; do \\\n\t\t\trm -fv $(VIMRUNTIME)/$$file ; done ; fi\n\t@echo \"$(FILES)\" | while read vimfile ; do \\\n\t\tif [[ -n $$vimfile ]] ; then \\\n\t\t\t$(call unlink_file,$$vimfile) ; fi ; done\n\nuninstall: uninstall-files rmrecord\n\nlink: init-runtime\n\t@echo \"Linking\"\n\t@if [[ -n \"$(DIRS)\" ]]; then find $(DIRS) -type f | while read file ; do \\\n\t\t\tln -sfv $(PWD)/$$file $(VIMRUNTIME)/$$file ; done ; fi\n\t@echo \"$(FILES)\" | while read vimfile ; do \\\n\t\tif [[ -n $$vimfile ]] ; then \\\n\t\t\t$(call link_file,$$vimfile) ; fi ; done\n\nmkfilelist:\n\t@echo $(NAME) > $(RECORD_FILE)\n\t@echo $(VERSION) >> $(RECORD_FILE)\n\t@if [[ -n \"$(DIRS)\" ]] ; then find $(DIRS) -type f | while read file ; do \\\n\t\t\techo $(VIMRUNTIME)/$$file >> $(RECORD_FILE) ; done ; fi\n\t@echo \"$(FILES)\" | while read vimfile ; do \\\n\t\tif [[ -n $$vimfile ]] ; then \\\n\t\t\t$(call record_file,$$vimfile,$(RECORD_FILE)) ; fi ; done\n\nvimball-edit:\n\tfind $(DIRS) -type f > .tmp_list\n\tvim .tmp_list\n\tvim .tmp_list -c \":%MkVimball $(NAME)-$(VERSION) .\" -c \"q\"\n\t@rm -vf .tmp_list\n\t@echo \"$(NAME)-$(VERSION).vba is ready.\"\n\nvimball:\n\tfind $(DIRS) -type f > .tmp_list\n\tvim .tmp_list -c \":%MkVimball $(NAME)-$(VERSION) .\" -c \"q\"\n\t@rm -vf .tmp_list\n\t@echo \"$(NAME)-$(VERSION).vba is ready.\"\n\nmkrecordscript:\n\t\t@echo \"\"  >  $(RECORD_SCRIPT)\n\t\t@echo \"fun! s:mkmd5(file)\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"  if executable('md5')\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"    return system('cat ' . a:file . ' | md5')\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"  else\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"    return \\\"\\\"\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"  endif\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"endf\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"let files = readfile('.record')\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"let package_name = remove(files,0)\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"let script_version      = remove(files,0)\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"let record = { 'version' : 0.3 , 'generated_by': 'Vim-Makefile' , 'script_version': script_version , 'install_type' : 'makefile' , 'package' : package_name , 'files': [  ] }\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"for file in files \"  >> $(RECORD_SCRIPT)\n\t\t@echo \"  let md5 = s:mkmd5(file)\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"  cal add( record.files , {  'checksum': md5 , 'file': file  } )\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"endfor\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"redir => output\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"silent echon record\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"redir END\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"let content = join(split(output,\\\"\\\\\\\\n\\\"),'')\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"let record_file = expand('~/.vim/record/' . package_name )\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"cal writefile( [content] , record_file )\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"cal delete('.record')\"  >> $(RECORD_SCRIPT)\n\t\t@echo \"echo \\\"Done\\\"\"  >> $(RECORD_SCRIPT)\n\n\nrecord: mkfilelist mkrecordscript\n\tvim --noplugin -V10install.log -c \"so $(RECORD_SCRIPT)\" -c \"q\"\n\t@echo \"Vim script record making log: install.log\"\n#\t@rm -vf $(RECORD_FILE)\n\nrmrecord:\n\t@echo \"Removing Record\"\n\t@rm -vf $(VIMRUNTIME)/record/$(NAME)\n\nclean: clean-bundle-deps\n\t@rm -vf $(RECORD_FILE)\n\t@rm -vf $(RECORD_SCRIPT)\n\t@rm -vf install.log\n\t@rm -vf *.tar.gz\n\nclean-bundle-deps:\n\t@echo \"Removing Bundled scripts...\"\n\t@if [[ -e .bundlefiles ]] ; then \\\n\t\trm -fv `echo \\`cat .bundlefiles\\``; \\\n\tfi\n\t@rm -fv .bundlefiles\n\nupdate:\n\t@echo \"Updating Makefile...\"\n\t@URL=http://github.com/c9s/vim-makefile/raw/master/Makefile ; \\\n\tif [[ -n `which curl` ]]; then \\\n\t\tcurl $$URL -o Makefile ; \\\n\tif [[ -n `which wget` ]]; then \\\n\t\twget -c $$URL ; \\\n\telif [[ -n `which fetch` ]]; then \\\n\t\tfetch $$URL ; \\\n\tfi\n\nversion:\n\t@echo version - $(MAKEFILE_VERSION)\n\n# }}}\n"
  },
  {
    "path": ".vim/bundle/html5.vim/README.md",
    "content": "# html5.vim\n\nHTML5 + inline SVG omnicomplete funtion, indent and syntax for Vim.\nBased on the default htmlcomplete.vim.\n\n## Feature\n\n- Support all new elements and attribute.\n- Support all SVG elements\n- Support [microdata][microdata].\n- Support [RDFa][RDFa].\n- Support [WAI-ARIA][aria].\n\n## Install\n\nUse [Vundle][] or [pathogen.vim][] is recommended.\n\n[Vundle]:https://github.com/gmarik/vundle\n[pathogen.vim]:https://github.com/tpope/vim-pathogen\n\n## Configure\n\nDisable event-handler attributes support:\n\n    let g:html5_event_handler_attributes_complete = 0\n\nDisable RDFa attributes support:\n\n    let g:html5_rdfa_attributes_complete = 0\n\nDisable microdata attributes support:\n\n    let g:html5_microdata_attributes_complete = 0\n\nDisable WAI-ARIA attribute support:\n\n    let g:html5_aria_attributes_complete = 0\n\n## Change Log\n\n### Version 0.27\n\n- Support inline SVG\n\n## License\n\nCopyright (c) 2010-2013 Wei-Ko Kao, 2012 HT de Beer\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n## References\n \n1. [HTML5 Spec][1]\n2. [HTML5 Markup][2]\n3. [Custom Data Attributes][3]\n4. [microdata][4]\n5. [RDFa 1.0 Rec][5]\n6. [RDFa 1.1 Core WD][6]\n7. [WAI-ARIA][7]\n8. [IANA Language Sub Tags][8]\n9. [IANA Charset][9]\n10. [SVG Spec][10]\n\n[html5.vim]:http://www.vim.org/scripts/script.php?script_id=3236\n\n[microdata]:http://dev.w3.org/html5/md/\n[RDFa]:http://www.w3.org/TR/rdfa-syntax/\n[aria]:http://www.w3.org/TR/wai-aria/\n\n[1]:http://dev.w3.org/html5/spec/\n[2]:http://dev.w3.org/html5/markup/\n[3]:http://dev.w3.org/html5/spec/Overview.html#custom-data-attribute\n[4]:http://dev.w3.org/html5/md/\n[5]:http://www.w3.org/TR/rdfa-syntax/#a_xhtmlrdfa_dtd\n[6]:http://www.w3.org/TR/rdfa-core/\n[7]:http://www.w3.org/TR/wai-aria/\n[8]:http://www.iana.org/assignments/language-subtag-registry\n[9]:http://www.iana.org/assignments/character-sets \n[10]:http://www.w3.org/TR/SVG/\n"
  },
  {
    "path": ".vim/bundle/html5.vim/autoload/htmlcomplete.vim",
    "content": "\" Vim completion script\n\" Language:\tHTML and XHTML\n\" Maintainer:\tMikolaj Machowski ( mikmach AT wp DOT pl )\n\" Last Change:\t2006 Oct 19\n\" Modified:     othree <othree@gmail.com>\n\" Changes:      Add HTML5, WAI-ARIA support\n\" Last Change:\t2010 Sep 25\n\nif !exists('g:aria_attributes_complete')\n    let g:aria_attributes_complete = 1\nendif\n\nfunction! htmlcomplete#CompleteTags(findstart, base)\n  if a:findstart\n    \" locate the start of the word\n    let line = getline('.')\n    let start = col('.') - 1\n\tlet curline = line('.')\n\tlet compl_begin = col('.') - 2\n    while start >= 0 && line[start - 1] =~ '\\(\\k\\|[!:.-]\\)'\n\t\tlet start -= 1\n    endwhile\n\t\" Handling of entities {{{\n\tif start >= 0 && line[start - 1] =~ '&'\n\t\tlet b:entitiescompl = 1\n\t\tlet b:compl_context = ''\n\t\treturn start\n\tendif\n\t\" }}}\n\t\" Handling of <style> tag {{{\n\tlet stylestart = searchpair('<style\\>', '', '<\\/style\\>', \"bnW\")\n\tlet styleend   = searchpair('<style\\>', '', '<\\/style\\>', \"nW\")\n\tif stylestart != 0 && styleend != 0\n\t\tif stylestart <= curline && styleend >= curline\n\t\t\tlet start = col('.') - 1\n\t\t\tlet b:csscompl = 1\n\t\t\twhile start >= 0 && line[start - 1] =~ '\\(\\k\\|-\\)'\n\t\t\t\tlet start -= 1\n\t\t\tendwhile\n\t\tendif\n\tendif\n\t\" }}}\n\t\" Handling of <script> tag {{{\n\tlet scriptstart = searchpair('<script\\>', '', '<\\/script\\>', \"bnW\")\n\tlet scriptend   = searchpair('<script\\>', '', '<\\/script\\>', \"nW\")\n\tif scriptstart != 0 && scriptend != 0\n\t\tif scriptstart <= curline && scriptend >= curline\n\t\t\tlet start = col('.') - 1\n\t\t\tlet b:jscompl = 1\n\t\t\tlet b:jsrange = [scriptstart, scriptend]\n\t\t\twhile start >= 0 && line[start - 1] =~ '\\k'\n\t\t\t\tlet start -= 1\n\t\t\tendwhile\n\t\t\t\" We are inside of <script> tag. But we should also get contents\n\t\t\t\" of all linked external files and (secondary, less probably) other <script> tags\n\t\t\t\" This logic could possible be done in separate function - may be\n\t\t\t\" reused in events scripting (also with option could be reused for\n\t\t\t\" CSS\n\t\t\tlet b:js_extfiles = []\n\t\t\tlet l = line('.')\n\t\t\tlet c = col('.')\n\t\t\tcall cursor(1,1)\n\t\t\twhile search('<\\@<=script\\>', 'W') && line('.') <= l\n\t\t\t\tif synIDattr(synID(line('.'),col('.')-1,0),\"name\") !~? 'comment'\n\t\t\t\t\tlet sname = matchstr(getline('.'), '<script[^>]*src\\s*=\\s*\\([''\"]\\)\\zs.\\{-}\\ze\\1')\n\t\t\t\t\tif filereadable(sname)\n\t\t\t\t\t\tlet b:js_extfiles += readfile(sname)\n\t\t\t\t\tendif\n\t\t\t\tendif\n\t\t\tendwhile\n\t\t\tcall cursor(1,1)\n\t\t\tlet js_scripttags = []\n\t\t\twhile search('<script\\>', 'W') && line('.') < l\n\t\t\t\tif matchstr(getline('.'), '<script[^>]*src') == ''\n\t\t\t\t\tlet js_scripttag = getline(line('.'), search('</script>', 'W'))\n\t\t\t\t\tlet js_scripttags += js_scripttag\n\t\t\t\tendif\n\t\t\tendwhile\n\t\t\tlet b:js_extfiles += js_scripttags\n\t\t\tcall cursor(l,c)\n\t\t\tunlet! l c\n\t\tendif\n\tendif\n\t\" }}}\n\tif !exists(\"b:csscompl\") && !exists(\"b:jscompl\")\n\t\tlet b:compl_context = getline('.')[0:(compl_begin)]\n\t\tif b:compl_context !~ '<[^>]*$'\n\t\t\t\" Look like we may have broken tag. Check previous lines.\n\t\t\tlet i = 1\n\t\t\twhile 1\n\t\t\t\tlet context_line = getline(curline-i)\n\t\t\t\tif context_line =~ '<[^>]*$'\n\t\t\t\t\t\" Yep, this is this line\n\t\t\t\t\tlet context_lines = getline(curline-i, curline-1) + [b:compl_context]\n\t\t\t\t\tlet b:compl_context = join(context_lines, ' ')\n\t\t\t\t\tbreak\n\t\t\t\telseif context_line =~ '>[^<]*$' || i == curline\n\t\t\t\t\t\" We are in normal tag line, no need for completion at all\n\t\t\t\t\t\" OR reached first line without tag at all\n\t\t\t\t\tlet b:compl_context = ''\n\t\t\t\t\tbreak\n\t\t\t\tendif\n\t\t\t\tlet i += 1\n\t\t\tendwhile\n\t\t\t\" Make sure we don't have counter\n\t\t\tunlet! i\n\t\tendif\n\t\tlet b:compl_context = matchstr(b:compl_context, '.*\\zs<.*')\n\n\t\t\" Return proper start for on-events. Without that beginning of\n\t\t\" completion will be badly reported\n\t\tif b:compl_context =~? 'on[a-z]*\\s*=\\s*\\(''[^'']*\\|\"[^\"]*\\)$'\n\t\t\tlet start = col('.') - 1\n\t\t\twhile start >= 0 && line[start - 1] =~ '\\k'\n\t\t\t\tlet start -= 1\n\t\t\tendwhile\n\t\tendif\n\t\t\" If b:compl_context begins with <? we are inside of PHP code. It\n\t\t\" wasn't closed so PHP completion passed it to HTML\n\t\tif &filetype =~? 'php' && b:compl_context =~ '^<?'\n\t\t\tlet b:phpcompl = 1\n\t\t\tlet start = col('.') - 1\n\t\t\twhile start >= 0 && line[start - 1] =~ '[a-zA-Z_0-9\\x7f-\\xff$]'\n\t\t\t\tlet start -= 1\n\t\t\tendwhile\n\t\tendif\n\telse\n\t\tlet b:compl_context = getline('.')[0:compl_begin]\n\tendif\n    return start\n  else\n\t\" Initialize base return lists\n    let res = []\n    let res2 = []\n\t\" a:base is very short - we need context\n\tlet context = b:compl_context\n\t\" Check if we should do CSS completion inside of <style> tag\n\t\" or JS completion inside of <script> tag or PHP completion in case of <?\n\t\" tag AND &ft==php\n\tif exists(\"b:csscompl\")\n\t\tunlet! b:csscompl\n\t\tlet context = b:compl_context\n\t\tunlet! b:compl_context\n\t\treturn csscomplete#CompleteCSS(0, context)\n\telseif exists(\"b:jscompl\")\n\t\tunlet! b:jscompl\n\t\treturn javascriptcomplete#CompleteJS(0, a:base)\n\telseif exists(\"b:phpcompl\")\n\t\tunlet! b:phpcompl\n\t\tlet context = b:compl_context\n\t\treturn phpcomplete#CompletePHP(0, a:base)\n\telse\n\t\tif len(b:compl_context) == 0 && !exists(\"b:entitiescompl\")\n\t\t\treturn []\n\t\tendif\n\t\tlet context = matchstr(b:compl_context, '.\\zs.*')\n\tendif\n\tunlet! b:compl_context\n\t\" Entities completion {{{\n\tif exists(\"b:entitiescompl\")\n\t\tunlet! b:entitiescompl\n\n\t\tif !exists(\"b:html_doctype\")\n\t\t\tcall htmlcomplete#CheckDoctype()\n\t\tendif\n\t\tif !exists(\"b:html_omni\")\n\t\t\t\"runtime! autoload/xml/xhtml10s.vim\n\t\t\tcall htmlcomplete#LoadData()\n\t\tendif\n        if g:aria_attributes_complete == 1 && !exists(\"b:aria_omni\")\n            call htmlcomplete#LoadAria()\n        endif\n\n\t    let entities =  b:html_omni['vimxmlentities']\n\n\t\tif len(a:base) == 1\n\t\t\tfor m in entities\n\t\t\t\tif m =~ '^'.a:base\n\t\t\t\t\tcall add(res, m.';')\n\t\t\t\tendif\n\t\t\tendfor\n\t\t\treturn res\n\t\telse\n\t\t\tfor m in entities\n\t\t\t\tif m =~? '^'.a:base\n\t\t\t\t\tcall add(res, m.';')\n\t\t\t\telseif m =~? a:base\n\t\t\t\t\tcall add(res2, m.';')\n\t\t\t\tendif\n\t\t\tendfor\n\n\t\t\treturn res + res2\n\t\tendif\n\n\n\tendif\n\t\" }}}\n\tif context =~ '>'\n\t\t\" Generally if context contains > it means we are outside of tag and\n\t\t\" should abandon action - with one exception: <style> span { bo\n\t\tif context =~ 'style[^>]\\{-}>[^<]\\{-}$'\n\t\t\treturn csscomplete#CompleteCSS(0, context)\n\t\telseif context =~ 'script[^>]\\{-}>[^<]\\{-}$'\n\t\t\tlet b:jsrange = [line('.'), search('<\\/script\\>', 'nW')]\n\t\t\treturn javascriptcomplete#CompleteJS(0, context)\n\t\telse\n\t\t\treturn []\n\t\tendif\n\tendif\n\n\t\" If context contains > it means we are already outside of tag and we\n\t\" should abandon action\n\t\" If context contains white space it is attribute.\n\t\" It can be also value of attribute.\n\t\" We have to get first word to offer proper completions\n\tif context == ''\n\t\tlet tag = ''\n\telse\n\t\tlet tag = split(context)[0]\n\t\t\" Detect if tag is uppercase to return in proper case,\n\t\t\" we need to make it lowercase for processing\n\t\tif tag =~ '^\\u*$'\n\t\t\tlet uppercase_tag = 1\n\t\t\tlet tag = tolower(tag)\n\t\telse\n\t\t\tlet uppercase_tag = 0\n\t\tendif\n\tendif\n\t\" Get last word, it should be attr name\n\tlet attr = matchstr(context, '\\S\\+=\"[^\"]*$')\n    if attr == ''\n        let attr = matchstr(context, '.*\\s\\zs.*')\n    endif\n\t\" Possible situations where any prediction would be difficult:\n\t\" 1. Events attributes\n\tif context =~ '\\s'\n\t\t\" Sort out style, class, and on* cases\n\t\tif context =~? \"\\\\s\\\\(on[a-z]+\\\\|id\\\\|style\\\\|class\\\\)\\\\s*=\\\\s*[\\\"']\"\n\t\t\t\" Id, class completion {{{\n\t\t\tif context =~? \"\\\\(id\\\\|class\\\\)\\\\s*=\\\\s*[\\\"'][a-zA-Z0-9_ -]*$\"\n\t\t\t\tif context =~? \"class\\\\s*=\\\\s*[\\\"'][a-zA-Z0-9_ -]*$\"\n\t\t\t\t\tlet search_for = \"class\"\n\t\t\t\telseif context =~? \"id\\\\s*=\\\\s*[\\\"'][a-zA-Z0-9_ -]*$\"\n\t\t\t\t\tlet search_for = \"id\"\n\t\t\t\tendif\n\t\t\t\t\" Handle class name completion\n\t\t\t\t\" 1. Find lines of <link stylesheet>\n\t\t\t\t\" 1a. Check file for @import\n\t\t\t\t\" 2. Extract filename(s?) of stylesheet,\n\t\t\t\tcall cursor(1,1)\n\t\t\t\tlet head = getline(search('<head\\>'), search('<\\/head>'))\n\t\t\t\tlet headjoined = join(copy(head), ' ')\n\t\t\t\tif headjoined =~ '<style'\n\t\t\t\t\t\" Remove possibly confusing CSS operators\n\t\t\t\t\tlet stylehead = substitute(headjoined, '+>\\*[,', ' ', 'g')\n\t\t\t\t\tif search_for == 'class'\n\t\t\t\t\t\tlet styleheadlines = split(stylehead)\n\t\t\t\t\t\tlet headclasslines = filter(copy(styleheadlines), \"v:val =~ '\\\\([a-zA-Z0-9:]\\\\+\\\\)\\\\?\\\\.[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\telse\n\t\t\t\t\t\tlet stylesheet = split(headjoined, '[{}]')\n\t\t\t\t\t\t\" Get all lines which fit id syntax\n\t\t\t\t\t\tlet classlines = filter(copy(stylesheet), \"v:val =~ '#[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\t\t\" Filter out possible color definitions\n\t\t\t\t\t\tcall filter(classlines, \"v:val !~ ':\\\\s*#[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\t\t\" Filter out complex border definitions\n\t\t\t\t\t\tcall filter(classlines, \"v:val !~ '\\\\(none\\\\|hidden\\\\|dotted\\\\|dashed\\\\|solid\\\\|double\\\\|groove\\\\|ridge\\\\|inset\\\\|outset\\\\)\\\\s*#[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\t\tlet templines = join(classlines, ' ')\n\t\t\t\t\t\tlet headclasslines = split(templines)\n\t\t\t\t\t\tcall filter(headclasslines, \"v:val =~ '#[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\tendif\n\t\t\t\t\tlet internal = 1\n\t\t\t\telse\n\t\t\t\t\tlet internal = 0\n\t\t\t\tendif\n\t\t\t\tlet styletable = []\n\t\t\t\tlet secimportfiles = []\n\t\t\t\tlet filestable = filter(copy(head), \"v:val =~ '\\\\(@import\\\\|link.*stylesheet\\\\)'\")\n\t\t\t\tfor line in filestable\n\t\t\t\t\tif line =~ \"@import\"\n\t\t\t\t\t\tlet styletable += [matchstr(line, \"import\\\\s\\\\+\\\\(url(\\\\)\\\\?[\\\"']\\\\?\\\\zs\\\\f\\\\+\\\\ze\")]\n\t\t\t\t\telseif line =~ \"<link\"\n\t\t\t\t\t\tlet styletable += [matchstr(line, \"href\\\\s*=\\\\s*[\\\"']\\\\zs\\\\f\\\\+\\\\ze\")]\n\t\t\t\t\tendif\n\t\t\t\tendfor\n\t\t\t\tfor file in styletable\n\t\t\t\t\tif filereadable(file)\n\t\t\t\t\t\tlet stylesheet = readfile(file)\n\t\t\t\t\t\tlet secimport = filter(copy(stylesheet), \"v:val =~ '@import'\")\n\t\t\t\t\t\tif len(secimport) > 0\n\t\t\t\t\t\t\tfor line in secimport\n\t\t\t\t\t\t\t\tlet secfile = matchstr(line, \"import\\\\s\\\\+\\\\(url(\\\\)\\\\?[\\\"']\\\\?\\\\zs\\\\f\\\\+\\\\ze\")\n\t\t\t\t\t\t\t\tlet secfile = fnamemodify(file, \":p:h\").'/'.secfile\n\t\t\t\t\t\t\t\tlet secimportfiles += [secfile]\n\t\t\t\t\t\t\tendfor\n\t\t\t\t\t\tendif\n\t\t\t\t\tendif\n\t\t\t\tendfor\n\t\t\t\tlet cssfiles = styletable + secimportfiles\n\t\t\t\tlet classes = []\n\t\t\t\tfor file in cssfiles\n\t\t\t\t\tif filereadable(file)\n\t\t\t\t\t\tlet stylesheet = readfile(file)\n\t\t\t\t\t\tlet stylefile = join(stylesheet, ' ')\n\t\t\t\t\t\tlet stylefile = substitute(stylefile, '+>\\*[,', ' ', 'g')\n\t\t\t\t\t\tif search_for == 'class'\n\t\t\t\t\t\t\tlet stylesheet = split(stylefile)\n\t\t\t\t\t\t\tlet classlines = filter(copy(stylesheet), \"v:val =~ '\\\\([a-zA-Z0-9:]\\\\+\\\\)\\\\?\\\\.[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tlet stylesheet = split(stylefile, '[{}]')\n\t\t\t\t\t\t\t\" Get all lines which fit id syntax\n\t\t\t\t\t\t\tlet classlines = filter(copy(stylesheet), \"v:val =~ '#[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\t\t\t\" Filter out possible color definitions\n\t\t\t\t\t\t\tcall filter(classlines, \"v:val !~ ':\\\\s*#[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\t\t\t\" Filter out complex border definitions\n\t\t\t\t\t\t\tcall filter(classlines, \"v:val !~ '\\\\(none\\\\|hidden\\\\|dotted\\\\|dashed\\\\|solid\\\\|double\\\\|groove\\\\|ridge\\\\|inset\\\\|outset\\\\)\\\\s*#[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\t\t\tlet templines = join(classlines, ' ')\n\t\t\t\t\t\t\tlet stylelines = split(templines)\n\t\t\t\t\t\t\tlet classlines = filter(stylelines, \"v:val =~ '#[a-zA-Z0-9_-]\\\\+'\")\n\n\t\t\t\t\t\tendif\n                        \" We gathered classes definitions from all external files\n                        let classes += classlines\n\t\t\t\t\tendif\n\t\t\t\tendfor\n\t\t\t\tif internal == 1\n\t\t\t\t\tlet classes += headclasslines\n\t\t\t\tendif\n\n\t\t\t\tif search_for == 'class'\n\t\t\t\t\tlet elements = {}\n\t\t\t\t\tfor element in classes\n\t\t\t\t\t\tif element =~ '^\\.'\n\t\t\t\t\t\t\tlet class = matchstr(element, '^\\.\\zs[a-zA-Z][a-zA-Z0-9_-]*\\ze')\n\t\t\t\t\t\t\tlet class = substitute(class, ':.*', '', '')\n\t\t\t\t\t\t\tif has_key(elements, 'common')\n\t\t\t\t\t\t\t\tlet elements['common'] .= ' '.class\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tlet elements['common'] = class\n\t\t\t\t\t\t\tendif\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tlet class = matchstr(element, '[a-zA-Z1-6]*\\.\\zs[a-zA-Z][a-zA-Z0-9_-]*\\ze')\n\t\t\t\t\t\t\tlet tagname = tolower(matchstr(element, '[a-zA-Z1-6]*\\ze.'))\n\t\t\t\t\t\t\tif tagname != ''\n\t\t\t\t\t\t\t\tif has_key(elements, tagname)\n\t\t\t\t\t\t\t\t\tlet elements[tagname] .= ' '.class\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tlet elements[tagname] = class\n\t\t\t\t\t\t\t\tendif\n\t\t\t\t\t\t\tendif\n\t\t\t\t\t\tendif\n\t\t\t\t\tendfor\n\n\t\t\t\t\tif has_key(elements, tag) && has_key(elements, 'common')\n\t\t\t\t\t\tlet values = split(elements[tag].\" \".elements['common'])\n\t\t\t\t\telseif has_key(elements, tag) && !has_key(elements, 'common')\n\t\t\t\t\t\tlet values = split(elements[tag])\n\t\t\t\t\telseif !has_key(elements, tag) && has_key(elements, 'common')\n\t\t\t\t\t\tlet values = split(elements['common'])\n\t\t\t\t\telse\n\t\t\t\t\t\treturn []\n\t\t\t\t\tendif\n\n\t\t\t\telseif search_for == 'id'\n\t\t\t\t\t\" Find used IDs\n\t\t\t\t\t\" 1. Catch whole file\n\t\t\t\t\tlet filelines = getline(1, line('$'))\n\t\t\t\t\t\" 2. Find lines with possible id\n\t\t\t\t\tlet used_id_lines = filter(filelines, 'v:val =~ \"id\\\\s*=\\\\s*[\\\"''][a-zA-Z0-9_-]\\\\+\"')\n\t\t\t\t\t\" 3a. Join all filtered lines\n\t\t\t\t\tlet id_string = join(used_id_lines, ' ')\n\t\t\t\t\t\" 3b. And split them to be sure each id is in separate item\n\t\t\t\t\tlet id_list = split(id_string, 'id\\s*=\\s*')\n\t\t\t\t\t\" 4. Extract id values\n\t\t\t\t\tlet used_id = map(id_list, 'matchstr(v:val, \"[\\\"'']\\\\zs[a-zA-Z0-9_-]\\\\+\\\\ze\")')\n\t\t\t\t\tlet joined_used_id = ','.join(used_id, ',').','\n\n\t\t\t\t\tlet allvalues = map(classes, 'matchstr(v:val, \".*#\\\\zs[a-zA-Z0-9_-]\\\\+\")')\n\n\t\t\t\t\tlet values = []\n\n\t\t\t\t\tfor element in classes\n\t\t\t\t\t\tif joined_used_id !~ ','.element.','\n\t\t\t\t\t\t\tlet values += [element]\n\t\t\t\t\t\tendif\n\n\t\t\t\t\tendfor\n\n\t\t\t\tendif\n\n\t\t\t\t\" We need special version of sbase\n\t\t\t\tlet classbase = matchstr(context, \".*[\\\"']\")\n\t\t\t\tlet classquote = matchstr(classbase, '.$')\n\n\t\t\t\tlet entered_class = matchstr(attr, \".*=\\\\s*[\\\"']\\\\zs.*\")\n\n\t\t\t\tfor m in sort(values)\n\t\t\t\t\tif m =~? '^'.entered_class\n\t\t\t\t\t\tcall add(res, m . classquote)\n\t\t\t\t\telseif m =~? entered_class\n\t\t\t\t\t\tcall add(res2, m . classquote)\n\t\t\t\t\tendif\n\t\t\t\tendfor\n\n\t\t\t\treturn res + res2\n\n\t\t\telseif context =~? \"style\\\\s*=\\\\s*[\\\"'][^\\\"']*$\"\n\t\t\t\treturn csscomplete#CompleteCSS(0, context)\n\n\t\t\tendif\n\t\t\t\" }}}\n\t\t\t\" Complete on-events {{{\n\t\t\tif context =~? 'on[a-z]*\\s*=\\s*\\(''[^'']*\\|\"[^\"]*\\)$'\n\t\t\t\t\" We have to:\n\t\t\t\t\" 1. Find external files\n\t\t\t\tlet b:js_extfiles = []\n\t\t\t\tlet l = line('.')\n\t\t\t\tlet c = col('.')\n\t\t\t\tcall cursor(1,1)\n\t\t\t\twhile search('<\\@<=script\\>', 'W') && line('.') <= l\n\t\t\t\t\tif synIDattr(synID(line('.'),col('.')-1,0),\"name\") !~? 'comment'\n\t\t\t\t\t\tlet sname = matchstr(getline('.'), '<script[^>]*src\\s*=\\s*\\([''\"]\\)\\zs.\\{-}\\ze\\1')\n\t\t\t\t\t\tif filereadable(sname)\n\t\t\t\t\t\t\tlet b:js_extfiles += readfile(sname)\n\t\t\t\t\t\tendif\n\t\t\t\t\tendif\n\t\t\t\tendwhile\n\t\t\t\t\" 2. Find at least one <script> tag\n\t\t\t\tcall cursor(1,1)\n\t\t\t\tlet js_scripttags = []\n\t\t\t\twhile search('<script\\>', 'W') && line('.') < l\n\t\t\t\t\tif matchstr(getline('.'), '<script[^>]*src') == ''\n\t\t\t\t\t\tlet js_scripttag = getline(line('.'), search('</script>', 'W'))\n\t\t\t\t\t\tlet js_scripttags += js_scripttag\n\t\t\t\t\tendif\n\t\t\t\tendwhile\n\t\t\t\tlet b:js_extfiles += js_scripttags\n\n\t\t\t\t\" 3. Proper call for javascriptcomplete#CompleteJS\n\t\t\t\tcall cursor(l,c)\n\t\t\t\tlet js_context = matchstr(a:base, '\\k\\+$')\n\t\t\t\tlet js_shortcontext = substitute(a:base, js_context.'$', '', '')\n\t\t\t\tlet b:compl_context = context\n\t\t\t\tlet b:jsrange = [l, l]\n\t\t\t\tunlet! l c\n\t\t\t\treturn javascriptcomplete#CompleteJS(0, js_context)\n\n\t\t\tendif\n\n\t\t\t\" }}}\n\t\t\tlet stripbase = matchstr(context, \".*\\\\(on[a-zA-Z]*\\\\|style\\\\|class\\\\)\\\\s*=\\\\s*[\\\"']\\\\zs.*\")\n\t\t\t\" Now we have context stripped from all chars up to style/class.\n\t\t\t\" It may fail with some strange style value combinations.\n\t\t\tif stripbase !~ \"[\\\"']\"\n\t\t\t\treturn []\n\t\t\tendif\n\t\tendif\n\t\t\" Value of attribute completion {{{\n\t\t\" If attr contains =\\s*[\\\"'] we catched value of attribute\n\t\tif attr =~ \"=\\s*[\\\"']\" || attr =~ \"=\\s*$\"\n\t\t\t\" Let do attribute specific completion\n\t\t\tlet attrname = matchstr(attr, '.*\\ze\\s*=')\n\t\t\tlet entered_value = matchstr(attr, \".*=\\\\s*[\\\"']\\\\?\\\\zs.*\")\n\t\t\tlet values = []\n\t\t\t\" Load data {{{\n\t\t\tif !exists(\"b:html_doctype\")\n\t\t\t\tcall htmlcomplete#CheckDoctype()\n\t\t\tendif\n\t\t\tif !exists(\"b:html_omni\")\n\t\t\t\t\"runtime! autoload/xml/xhtml10s.vim\n\t\t\t\tcall htmlcomplete#LoadData()\n\t\t\tendif\n            if g:aria_attributes_complete == 1 && !exists(\"b:aria_omni\")\n                call htmlcomplete#LoadAria()\n            endif\n\t\t\t\" }}}\n\t\t\tif attrname == 'href'\n\t\t\t\t\" Now we are looking for local anchors defined by name or id\n\t\t\t\tif entered_value =~ '^#'\n\t\t\t\t\tlet file = join(getline(1, line('$')), ' ')\n\t\t\t\t\t\" Split it be sure there will be one id/name element in\n\t\t\t\t\t\" item, it will be also first word [a-zA-Z0-9_-] in element\n\t\t\t\t\tlet oneelement = split(file, \"\\\\(meta \\\\)\\\\@<!\\\\(name\\\\|id\\\\)\\\\s*=\\\\s*[\\\"']\")\n\t\t\t\t\tfor i in oneelement\n\t\t\t\t\t\tlet values += ['#'.matchstr(i, \"^[a-zA-Z][a-zA-Z0-9%_-]*\")]\n\t\t\t\t\tendfor\n\t\t\t\tendif\n\t\t\telse\n\t\t\t\tif has_key(b:html_omni, tag) && has_key(b:html_omni[tag][1], attrname)\n\t\t\t\t\tlet values = b:html_omni[tag][1][attrname]\n                elseif attrname =~ '^aria-' && exists(\"b:aria_omni\") && has_key(b:aria_omni['aria_attributes'], attrname)\n\t\t\t\t\tlet values = b:aria_omni['aria_attributes'][attrname]\n\t\t\t\telse\n\t\t\t\t\treturn []\n\t\t\t\tendif\n\t\t\tendif\n\n\t\t\tif len(values) == 0\n\t\t\t\treturn []\n            endif\n\n\t\t\t\" We need special version of sbase\n\t\t\tlet attrbase = matchstr(context, \".*[\\\"']\")\n\t\t\tlet attrquote = matchstr(attrbase, '.$')\n\t\t\tif attrquote !~ \"['\\\"]\"\n\t\t\t\tlet attrquoteopen = '\"'\n                let attrquote = '\"'\n\t\t\telse\n\t\t\t\tlet attrquoteopen = ''\n            endif\n            \" Multi value attributes don't need ending quote\n            let info = ''\n            if has_key(b:html_omni['vimxmlattrinfo'], attrname)\n                let info = b:html_omni['vimxmlattrinfo'][attrname][0]\n            elseif exists(\"b:aria_omni\") && has_key(b:aria_omni['vimariaattrinfo'], attrname)\n                let info = b:aria_omni['vimariaattrinfo'][attrname][0]\n            endif\n            if info =~ \"^\\\\*\"\n                let attrquote = ''\n            endif\n\n            if len(entered_value) > 0\n                if entered_value =~ \"\\\\s$\"\n                    let entered_value = ''\n                else\n                    let entered_value = split(entered_value)[-1]\n                endif\n            endif\n\t\t\tfor m in values\n\t\t\t\t\" This if is needed to not offer all completions as-is\n\t\t\t\t\" alphabetically but sort them. Those beginning with entered\n\t\t\t\t\" part will be as first choices\n\t\t\t\tif m =~ '^'.entered_value\n\t\t\t\t\tcall add(res, attrquoteopen . m . attrquote)\n\t\t\t\telseif m =~ entered_value\n\t\t\t\t\tcall add(res2, attrquoteopen . m . attrquote)\n\t\t\t\tendif\n\t\t\tendfor\n\n\t\t\treturn res + res2\n\n\t\tendif\n\t\t\" }}}\n\t\t\" Attribute completion {{{\n\t\t\" Shorten context to not include last word\n\t\tlet sbase = matchstr(context, '.*\\ze\\s.*')\n\n\t\t\" Load data {{{\n\t\tif !exists(\"b:html_doctype\")\n\t\t\tcall htmlcomplete#CheckDoctype()\n\t\tendif\n\t\tif !exists(\"b:html_omni\")\n\t\t\tcall htmlcomplete#LoadData()\n\t\tendif\n        if g:aria_attributes_complete == 1 && !exists(\"b:aria_omni\")\n            call htmlcomplete#LoadAria()\n        endif\n\t\t\" }}}\n\n\t\tif has_key(b:html_omni, tag)\n\t\t\tlet attrs = keys(b:html_omni[tag][1])\n\t\telse\n\t\t\treturn []\n        endif\n        if exists(\"b:aria_omni\")\n            let roles = []\n            if has_key(b:aria_omni['default_role'], tag)\n                let roles = [b:aria_omni['default_role'][tag]]\n            endif\n            if context =~ 'role='\n                let start = matchend(context, \"role=['\\\"]\")\n                let end   = matchend(context, \"[a-z ]\\\\+['\\\"]\", start)\n                if start != -1 && end != -1\n                    let roles = split(strpart(context, start, end-start-1), \" \")\n                endif\n            endif\n            for i in range(len(roles))\n                let role = roles[i]\n                if has_key(b:aria_omni['role_attributes'], role)\n                    let attrs = extend(attrs, b:aria_omni['role_attributes'][role])\n                endif\n            endfor\n        endif\n\n\t\tfor m in sort(attrs)\n\t\t\tif m =~ '^'.attr\n\t\t\t\tcall add(res, m)\n\t\t\telseif m =~ attr\n\t\t\t\tcall add(res2, m)\n\t\t\tendif\n\t\tendfor\n\t\t\"let menu = res + res2\n\t\tlet menu = res\n\t\tif has_key(b:html_omni, 'vimxmlattrinfo') || (exists(\"b:aria_omni\") && has_key(b:aria_omni, 'vimariaattrinfo'))\n\t\t\tlet final_menu = []\n\t\t\tfor i in range(len(menu))\n\t\t\t\tlet item = menu[i]\n\t\t\t\tif has_key(b:html_omni['vimxmlattrinfo'], item)\n\t\t\t\t\tlet m_menu = b:html_omni['vimxmlattrinfo'][item][0]\n\t\t\t\t\tlet m_info = b:html_omni['vimxmlattrinfo'][item][1]\n                elseif exists(\"b:aria_omni\") && has_key(b:aria_omni['vimariaattrinfo'], item)\n\t\t\t\t\tlet m_menu = b:aria_omni['vimariaattrinfo'][item][0]\n\t\t\t\t\tlet m_info = b:aria_omni['vimariaattrinfo'][item][1]\n                else\n\t\t\t\t\tlet m_menu = ''\n\t\t\t\t\tlet m_info = ''\n                endif\n                if item =~ '^aria-' && exists(\"b:aria_omni\")\n                    if len(b:aria_omni['aria_attributes'][item]) > 0 && b:aria_omni['aria_attributes'][item][0] =~ '^\\(BOOL\\|'.item.'\\)$'\n                        let item = item\n                        let m_menu = 'Bool'\n                    else\n                        let item .= '=\"'\n                    endif\n                else\n                    if len(b:html_omni[tag][1][item]) > 0 && b:html_omni[tag][1][item][0] =~ '^\\(BOOL\\|'.item.'\\)$'\n                        let item = item\n                        let m_menu = 'Bool'\n                    else\n                        let item .= '=\"'\n                    endif\n                endif\n\t\t\t\tlet final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]\n\t\t\tendfor\n\t\telse\n\t\t\tlet final_menu = []\n\t\t\tfor i in range(len(menu))\n\t\t\t\tlet item = menu[i]\n\t\t\t\tif len(b:html_omni[tag][1][item]) > 0 && b:html_omni[tag][1][item][0] =~ '^\\(BOOL\\|'.item.'\\)$'\n\t\t\t\t\tlet item = item\n\t\t\t\telse\n\t\t\t\t\tlet item .= '=\"'\n\t\t\t\tendif\n\t\t\t\tlet final_menu += [item]\n\t\t\tendfor\n\t\t\treturn final_menu\n\n\t\tendif\n\t\treturn final_menu\n\n\tendif\n\t\" }}}\n\t\" Close tag {{{\n\tlet b:unaryTagsStack = \"area base br col command embed hr img input keygen link meta param source track wbr\"\n\tif context =~ '^\\/'\n\t\tif context =~ '^\\/.'\n\t\t\treturn []\n\t\telse\n\t\t\tlet opentag = xmlcomplete#GetLastOpenTag(\"b:unaryTagsStack\")\n\t\t\treturn [opentag.\">\"]\n\t\tendif\n\tendif\n\t\" }}}\n\t\" Load data {{{\n\tif !exists(\"b:html_doctype\")\n\t\tcall htmlcomplete#CheckDoctype()\n\tendif\n\tif !exists(\"b:html_omni\")\n\t\t\"runtime! autoload/xml/xhtml10s.vim\n\t\tcall htmlcomplete#LoadData()\n\tendif\n    if g:aria_attributes_complete == 1 && !exists(\"b:aria_omni\")\n        call htmlcomplete#LoadAria()\n    endif\n\t\" }}}\n\t\" Tag completion {{{\n\t\" Deal with tag completion.\n\tlet opentag = tolower(xmlcomplete#GetLastOpenTag(\"b:unaryTagsStack\"))\n\t\" MM: TODO: GLOT works always the same but with some weird situation it\n\t\" behaves as intended in HTML but screws in PHP\n\tif opentag == '' || &filetype == 'php' && !has_key(b:html_omni, opentag)\n\t\t\" Hack for sometimes failing GetLastOpenTag.\n\t\t\" As far as I tested fail isn't GLOT fault but problem\n\t\t\" of invalid document - not properly closed tags and other mish-mash.\n\t\t\" Also when document is empty. Return list of *all* tags.\n\t    let tags = keys(b:html_omni)\n\t\tcall filter(tags, 'v:val !~ \"^vimxml\"')\n\telse\n\t\tif has_key(b:html_omni, opentag)\n\t\t\tlet tags = b:html_omni[opentag][0]\n\t\telse\n\t\t\treturn []\n\t\tendif\n\tendif\n\t\" }}}\n\n\tif exists(\"uppercase_tag\") && uppercase_tag == 1\n\t\tlet context = tolower(context)\n\tendif\n\t\" Handle XML keywords: DOCTYPE\n\tif opentag == ''\n\t\tlet tags = [\n\t\t\t\t\\ '!DOCTYPE html>',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Frameset//EN\" \"http://www.w3.org/TR/REC-html40/frameset.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" \"http://www.w3.org/TR/html4/frameset.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/1999/xhtml\">'\n\t\t\t\t\\ ] + sort(tags)\n\tendif\n\n\t\"for m in sort(tags)\n\tfor m in tags\n\t\tif m =~ '^'.context\n\t\t\tcall add(res, m)\n\t\telseif m =~ context\n\t\t\tcall add(res2, m)\n\t\tendif\n\tendfor\n\tlet menu = res + res2\n\tif has_key(b:html_omni, 'vimxmltaginfo')\n\t\tlet final_menu = []\n\t\tfor i in range(len(menu))\n\t\t\tlet item = menu[i]\n\t\t\tif has_key(b:html_omni['vimxmltaginfo'], item)\n\t\t\t\tlet m_menu = b:html_omni['vimxmltaginfo'][item][0]\n\t\t\t\tlet m_info = b:html_omni['vimxmltaginfo'][item][1]\n\t\t\telse\n\t\t\t\tlet m_menu = ''\n\t\t\t\tlet m_info = ''\n\t\t\tendif\n\t\t\tif &filetype == 'html' && exists(\"uppercase_tag\") && uppercase_tag == 1 && item !~ 'DOCTYPE'\n\t\t\t\tlet item = toupper(item)\n\t\t\tendif\n\t\t\tif item =~ 'DOCTYPE'\n                if item =~ 'DTD'\n                    let abbr = 'DOCTYPE '.matchstr(item, 'DTD \\zsX\\?HTML .\\{-}\\ze\\/\\/')\n                else\n                    let abbr = 'DOCTYPE HTML 5'\n                endif\n\t\t\telse\n\t\t\t\tlet abbr = item\n\t\t\tendif\n\t\t\tlet final_menu += [{'abbr':abbr, 'word':item, 'menu':m_menu, 'info':m_info}]\n\t\tendfor\n\telse\n\t\tlet final_menu = menu\n\tendif\n\treturn final_menu\n\n\t\" }}}\n  endif\nendfunction\n\nfunction! htmlcomplete#LoadAria() \" {{{\n    runtime! autoload/xml/aria.vim\n    if exists(\"g:xmldata_aria\")\n        \\ && has_key(g:xmldata_aria, 'default_role') \n        \\ && has_key(g:xmldata_aria, 'role_attributes') \n        \\ && has_key(g:xmldata_aria, 'vimariaattrinfo')\n        \\ && has_key(g:xmldata_aria, 'aria_attributes')\n        let b:aria_omni = g:xmldata_aria\n    else\n        let g:aria_attributes_complete = 0\n    endif\nendfunction\n\" }}}\nfunction! htmlcomplete#LoadData() \" {{{\n\tif !exists(\"b:html_omni_flavor\")\n\t\tif &filetype == 'html'\n\t\t\tlet b:html_omni_flavor = 'html401t'\n\t\telse\n\t\t\tlet b:html_omni_flavor = 'xhtml10s'\n\t\tendif\n\tendif\n\t\" With that if we still have bloated memory but create new buffer\n\t\" variables only by linking to existing g:variable, not sourcing whole\n\t\" file.\n\tif exists('g:xmldata_'.b:html_omni_flavor)\n\t\texe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor\n\telse\n\t\texe 'runtime! autoload/xml/'.b:html_omni_flavor.'.vim'\n\t\texe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor\n\tendif\nendfunction\n\" }}}\nfunction! htmlcomplete#CheckDoctype() \" {{{\n\tif exists('b:html_omni_flavor')\n\t\tlet old_flavor = b:html_omni_flavor\n\telse\n\t\tlet old_flavor = ''\n\tendif\n\tlet i = 1\n\twhile i < 10 && i < line(\"$\")\n\t\tlet line = getline(i)\n\t\tif line =~ '<!DOCTYPE.*\\<DTD HTML 3\\.2'\n\t\t\tlet b:html_omni_flavor = 'html32'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD HTML 4\\.0 Transitional'\n\t\t\tlet b:html_omni_flavor = 'html40t'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD HTML 4\\.0 Frameset'\n\t\t\tlet b:html_omni_flavor = 'html40f'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD HTML 4\\.0'\n\t\t\tlet b:html_omni_flavor = 'html40s'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD HTML 4\\.01 Transitional'\n\t\t\tlet b:html_omni_flavor = 'html401t'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD HTML 4\\.01 Frameset'\n\t\t\tlet b:html_omni_flavor = 'html401f'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD HTML 4\\.01'\n\t\t\tlet b:html_omni_flavor = 'html401s'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD XHTML 1\\.0 Transitional'\n\t\t\tlet b:html_omni_flavor = 'xhtml10t'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD XHTML 1\\.0 Frameset'\n\t\t\tlet b:html_omni_flavor = 'xhtml10f'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD XHTML 1\\.0 Strict'\n\t\t\tlet b:html_omni_flavor = 'xhtml10s'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD XHTML 1\\.1'\n\t\t\tlet b:html_omni_flavor = 'xhtml11'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE html'\n\t\t\tlet b:html_omni_flavor = 'html5'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\tendif\n\t\tlet i += 1\n\tendwhile\n\tif !exists(\"b:html_doctype\")\n\t\treturn\n\telse\n\t\t\" Tie g:xmldata with b:html_omni this way we need to sourca data file only\n\t\t\" once, not every time per buffer.\n\t\tif old_flavor == b:html_omni_flavor\n\t\t\treturn\n\t\telse\n\t\t\tif exists('g:xmldata_'.b:html_omni_flavor)\n\t\t\t\texe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor\n\t\t\telse\n\t\t\t\texe 'runtime! autoload/xml/'.b:html_omni_flavor.'.vim'\n\t\t\t\texe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor\n\t\t\tendif\n\t\t\treturn\n\t\tendif\n\tendif\nendfunction\n\" }}}\n\" vim:set foldmethod=marker:\n"
  },
  {
    "path": ".vim/bundle/html5.vim/autoload/xml/aria.vim",
    "content": "\" Vim completion for WAI-ARIA data file\n\" Language:       HTML + WAI-ARIA\n\" Maintainer:     othree <othree@gmail.com>\n\" Last Change:    2010 Sep 09\n\n\" WAI_ARIA: {{{\n\" Ref: http://www.w3.org/TR/wai-aria/\n\" Version: Draft 15 December 2009\n\nlet abstract_role = {}\nlet role_attributes = {}\nlet default_role = {}\n\n\" Ref: http://www.w3.org/TR/wai-aria/roles\n\" Version: Draft 15 December 2009\nlet widget_role = ['alert', 'alertdialog', 'button', 'checkbox', 'combobox', 'dialog', 'gridcell', 'link', 'log', 'marquee', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'progressbar', 'radio', 'radiogroup', 'scrollbar', 'slider', 'spinbutton', 'status', 'tab', 'tabpanel', 'textbox', 'timer', 'tooltip', 'treeitem', 'combobox', 'grid', 'listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid']\nlet document_structure = ['article', 'columnheader', 'definition', 'directory', 'document', 'group', 'heading', 'img', 'list', 'listitem', 'math', 'note', 'presentation', 'region', 'row', 'rowheader', 'separator']\nlet landmark_role = ['application', 'banner', 'complementary', 'contentinfo', 'form', 'main', 'navigation', 'search']\nlet role = extend(widget_role, document_structure)\nlet role = extend(role, landmark_role)\n\n\" http://www.w3.org/TR/wai-aria/states_and_properties#state_prop_taxonomy\n\"let global_states_and_properties = {'aria-atomic': ['true', 'false'], 'aria-busy': ['true', 'false'], 'aria-controls': [], 'aria-describedby': [], 'aria-disabled': ['true', 'false'], 'aria-dropeffect': ['copy', 'move', 'link', 'execute', 'popup', 'none'], 'aria-flowto': [], 'aria-grabbed': ['true', 'false', 'undefined'], 'aria-haspopup': ['true', 'false'], 'aria-hidden': ['true', 'false'], 'aria-invalid': ['grammar', 'spelling', 'true', 'false'], 'aria-label': [], 'aria-labelledby': [], 'aria-live': ['off', 'polite', 'assertive'], 'aria-owns': [], 'aria-relevant': ['additions', 'removals', 'text', 'all']}\nlet widget_attributes = {'aria-autocomplete': ['inline', 'list', 'both', 'none'], 'aria-checked': ['true', 'false', 'mixed', 'undefined'], 'aria-disabled': ['true', 'false'], 'aria-expanded': ['true', 'false', 'undefined'], 'aria-haspopup': ['true', 'false'], 'aria-hidden': ['true', 'false'], 'aria-invalid': ['grammar', 'spelling', 'true', 'false'], 'aria-label': [], 'aria-level': [], 'aria-multiline': ['true', 'false'], 'aria-multiselectable': ['true', 'false'], 'aria-orientation': ['horizontal', 'vertical'], 'aria-pressed': ['true', 'false', 'mixed', 'undefined'], 'aria-readonly': ['true', 'false'], 'aria-required': ['true', 'false'], 'aria-selected': ['true', 'false', 'undefined'], 'aria-sort': ['ascending', 'descending', 'none', 'other'], 'aria-valuemax': [], 'aria-valuemin': [], 'aria-valuenow': [], 'aria-valuetext': []}\nlet live_region_attributes = {'aria-atomic': ['true', 'false'], 'aria-busy': ['true', 'false'], 'aria-live': ['off', 'polite', 'assertive'], 'aria-relevant': ['additions', 'removals', 'text', 'all', 'additions text']}\nlet drag_and_drop_attributes = {'aria-dropeffect': ['copy', 'move', 'link', 'execute', 'popup', 'none'], 'aria-grabbed': ['true', 'false', 'undefined']}\nlet relationship_attributes = {'aria-activedescendant': [], 'aria-controls': [], 'aria-describedby': [], 'aria-flowto': [], 'aria-labelledby': [], 'aria-owns': [], 'aria-posinset': [], 'aria-setsize': []}\nlet aria_attributes = widget_attributes\nlet aria_attributes = extend(aria_attributes, live_region_attributes)\nlet aria_attributes = extend(aria_attributes, drag_and_drop_attributes)\nlet aria_attributes = extend(aria_attributes, relationship_attributes)\n\n\" Abstract Roles\nlet abstract_role['roletype'] = ['aria-atomic', 'aria-busy', 'aria-controls', 'aria-describedby', 'aria-disabled', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant']\nlet role_attributes['default'] = abstract_role['roletype']\nlet abstract_role['structure'] = abstract_role['roletype']\nlet abstract_role['widget'] = abstract_role['roletype']\nlet abstract_role['window'] = abstract_role['roletype'] + ['aria-expanded']\nlet abstract_role['composite'] = abstract_role['widget'] + ['aria-activedescendant']\nlet abstract_role['input'] = abstract_role['widget']\nlet abstract_role['section'] = abstract_role['structure'] + ['aria-expanded']\nlet abstract_role['sectionhead'] = abstract_role['structure'] + ['aria-expanded']\n\nlet role_attributes['group'] = abstract_role['section']\nlet abstract_role['select'] = abstract_role['composite'] + role_attributes['group'] + abstract_role['input']\n\nlet abstract_role['range'] = abstract_role['input'] + ['aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext']\n\nlet role_attributes['region'] = abstract_role['section']\nlet abstract_role['landmark'] = role_attributes['region']\n\n\" Widget Roles\nlet role_attributes['list'] = role_attributes['region'] \nlet role_attributes['listitem'] = abstract_role['section']\n\nlet role_attributes['dialog'] = abstract_role['window']\nlet role_attributes['menuitem'] = abstract_role['input'] \nlet role_attributes['checkbox'] = abstract_role['input'] + ['aria-checked'] \nlet role_attributes['menuitemcheckbox'] = role_attributes['menuitem'] + role_attributes['checkbox']\nlet role_attributes['option'] = abstract_role['input'] + ['aria-checked', 'aria-posinset', 'aria-selected', 'aria-setsize']\nlet role_attributes['radio'] = role_attributes['checkbox'] + role_attributes['option']\n\nlet role_attributes['directory'] = role_attributes['list'] \n\nlet role_attributes['alert'] = role_attributes['region']\nlet role_attributes['alertdialog'] = role_attributes['alert'] + role_attributes['dialog']\nlet role_attributes['button'] = role_attributes['region'] + role_attributes['menuitemcheckbox']\nlet role_attributes['combobox'] = abstract_role['select'] + ['aria-expanded', 'aria-required'] \nlet role_attributes['gridcell'] = abstract_role['section'] + abstract_role['widget']\nlet role_attributes['link'] = abstract_role['widget'] \nlet role_attributes['log'] = role_attributes['region'] \nlet role_attributes['marquee'] = role_attributes['region'] \nlet role_attributes['menuitemradio'] = role_attributes['menuitemcheckbox'] + role_attributes['radio']\nlet role_attributes['progressbar'] = abstract_role['widget'] + ['aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext']\nlet role_attributes['radiogroup'] = abstract_role['select'] + ['aria-required']\nlet role_attributes['scrollbar'] = abstract_role['range'] + ['aria-controls', 'aria-orientation', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow']\nlet role_attributes['slider'] = abstract_role['range'] + ['aria-valuemax', 'aria-valuemin', 'aria-valuenow']\nlet role_attributes['spinbutton'] = abstract_role['composite'] + abstract_role['range'] + ['aria-required'] \nlet role_attributes['status'] = abstract_role['composite'] + role_attributes['region']\nlet role_attributes['tab'] = abstract_role['sectionhead'] + abstract_role['widget'] + ['aria-selected']\nlet role_attributes['tabpanel'] = role_attributes['region']\nlet role_attributes['textbox'] = abstract_role['input'] + ['aria-autocomplete', 'aria-multiline', 'aria-readonly', 'aria-required']\nlet role_attributes['timer'] = role_attributes['status'] \nlet role_attributes['tooltip'] = abstract_role['section'] \nlet role_attributes['treeitem'] = role_attributes['listitem'] + role_attributes['option']\n\nlet role_attributes['grid'] = abstract_role['composite'] + role_attributes['region'] + ['aria-level', 'aria-multiselectable', 'aria-readonly']\nlet role_attributes['listbox'] = role_attributes['list'] + abstract_role['select'] + ['aria-multiselectable', 'aria-required']\nlet role_attributes['menu'] =  role_attributes['list'] + abstract_role['select'] \nlet role_attributes['menubar'] = role_attributes['menu'] \nlet role_attributes['tablist'] = abstract_role['composite'] + role_attributes['directory']\nlet role_attributes['toolbar'] = role_attributes['group'] \nlet role_attributes['tree'] = abstract_role['select'] + ['aria-multiselectable', 'aria-required']\nlet role_attributes['treegrid'] = role_attributes['grid'] + role_attributes['tree']\n\n\" Document Structure\nlet role_attributes['document'] = abstract_role['structure'] + ['aria-expanded'] \n\nlet role_attributes['article'] = role_attributes['document'] + role_attributes['region'] \nlet role_attributes['columnheader'] = role_attributes['gridcell'] + abstract_role['sectionhead'] + ['aria-sort']\nlet role_attributes['definition'] = abstract_role['section'] \nlet role_attributes['heading'] = abstract_role['sectionhead'] + ['aria-level'] \nlet role_attributes['img'] = abstract_role['section'] \nlet role_attributes['math'] = abstract_role['section'] \nlet role_attributes['note'] = abstract_role['section'] \nlet role_attributes['presentation'] = abstract_role['structure']\nlet role_attributes['row'] = role_attributes['group'] + ['aria-level', 'aria-selected']\nlet role_attributes['rowheader'] = role_attributes['gridcell'] + abstract_role['sectionhead']\nlet role_attributes['separator'] = abstract_role['structure'] + ['aria-expanded'] \n\n\" Landmark Roles\nlet role_attributes['application'] = abstract_role['landmark'] \nlet role_attributes['banner'] = abstract_role['landmark'] \nlet role_attributes['complementary'] = abstract_role['landmark'] \nlet role_attributes['contentinfo'] = abstract_role['landmark'] \nlet role_attributes['form'] = abstract_role['landmark'] \nlet role_attributes['main'] = abstract_role['landmark'] \nlet role_attributes['navigation'] = abstract_role['landmark'] \nlet role_attributes['search'] = abstract_role['landmark']\n\n\" http://www.w3.org/TR/wai-aria/states_and_properties#state_prop_def\nlet aria_attributes_value = {\n    \\ 'aria-autocomplete': ['ID', ''],\n    \\ 'aria-checked': ['Token', ''],\n    \\ 'aria-disabled': ['true/false', ''],\n    \\ 'aria-expanded': ['Token', ''],\n    \\ 'aria-haspopup': ['true/false', ''],\n    \\ 'aria-hidden': ['true/false', ''],\n    \\ 'aria-invalid': ['Token', ''],\n    \\ 'aria-label': ['String', ''],\n    \\ 'aria-level': ['Int', ''],\n    \\ 'aria-multiline': ['true/false', ''],\n    \\ 'aria-multiselectable': ['true/false', ''],\n    \\ 'aria-orientation': ['Token', ''],\n    \\ 'aria-pressed': ['Token', ''],\n    \\ 'aria-readonly': ['true/false', ''],\n    \\ 'aria-required': ['true/false', ''],\n    \\ 'aria-selected': ['Token', ''],\n    \\ 'aria-sort': ['Token', ''],\n    \\ 'aria-valuemax': ['Number', ''],\n    \\ 'aria-valuemin': ['Number', ''],\n    \\ 'aria-valuenow': ['Number', ''],\n    \\ 'aria-valuetext': ['String', ''],\n    \\ 'aria-atomic': ['true/false', ''],\n    \\ 'aria-busy': ['true/false', ''],\n    \\ 'aria-live': ['Token', ''],\n    \\ 'aria-relevant': ['*Token', ''],\n    \\ 'aria-dropeffect': ['*Token', ''],\n    \\ 'aria-grabbed': ['Token', ''],\n    \\ 'aria-activedescendant': ['ID', ''],\n    \\ 'aria-controls': ['*ID', ''],\n    \\ 'aria-describedby': ['*ID', ''],\n    \\ 'aria-flowto': ['*ID', ''],\n    \\ 'aria-labelledby': ['*ID', ''],\n    \\ 'aria-owns': ['*ID', ''],\n    \\ 'aria-posinset': ['Int', ''],\n    \\ 'aria-setsize': ['Int', '']\n\\ }\n\n\" http://dev.w3.org/html5/spec/content-models.html#annotations-for-assistive-technology-products-aria\nlet default_role = {\n    \\ 'a': 'link',\n    \\ 'area': 'link',\n    \\ 'body': 'document',\n    \\ 'button': 'button',\n    \\ 'datalist': 'listbox',\n    \\ 'h1': 'heading',\n    \\ 'h2': 'heading',\n    \\ 'h3': 'heading',\n    \\ 'h4': 'heading',\n    \\ 'h5': 'heading',\n    \\ 'h6': 'heading',\n    \\ 'hgroup': 'heading',\n    \\ 'hr': 'separator',\n    \\ 'img[alt=]': 'presentation',\n    \\ 'input[type=button]': 'button',\n    \\ 'input[type=email]': 'textbox',\n    \\ 'input[type=image]': 'button',\n    \\ 'input[type=number]': 'spinbutton',\n    \\ 'input[type=password]': 'textbox',\n    \\ 'input[type=range]': 'slider',\n    \\ 'input[type=reset]': 'button',\n    \\ 'input[type=search]': 'textbox',\n    \\ 'input[type=submit]': 'button',\n    \\ 'input[type=tel]': 'textbox',\n    \\ 'input[type=text]': 'textbox',\n    \\ 'input[list]': 'combobox',\n    \\ 'input[type=url]': 'textbox',\n    \\ 'input': 'textbox',\n    \\ 'keygen': 'default',\n    \\ 'label': 'default',\n    \\ 'menu[type=list]': 'menu',\n    \\ 'menu[type=toolbar]': 'toolbar',\n    \\ 'menu': 'default',\n    \\ 'link': 'link',\n    \\ 'nav': 'navigation',\n    \\ 'optgroup': 'default',\n    \\ 'option': 'option',\n    \\ 'progress': 'progressbar',\n    \\ 'select': 'listbox',\n    \\ 'summary': 'heading',\n    \\ 'tbody': 'rowgroup',\n    \\ 'td': 'gridcell',\n    \\ 'textarea': 'textbox',\n    \\ 'tfoot': 'rowgroup',\n    \\ 'th[scope=col]': 'columnheader',\n    \\ 'th[scope=row]': 'rowheader',\n    \\ 'tr': 'row',\n    \\ 'address': 'default',\n    \\ 'article': 'article',\n    \\ 'aside': 'note',\n    \\ 'footer': 'default',\n    \\ 'header': 'default',\n    \\ 'details': 'group',\n    \\ 'img': 'img',\n    \\ 'input[type=checkbox]': 'checkbox',\n    \\ 'input[type=radio]': 'radio',\n    \\ 'li': 'listitem',\n    \\ 'ol': 'list',\n    \\ 'output': 'status',\n    \\ 'section': 'region',\n    \\ 'table': 'grid',\n    \\ 'ul': 'list',\n\\ }\n\" }}}\n\nlet g:xmldata_aria = {\n    \\ 'aria_attributes': aria_attributes,\n    \\ 'role_attributes': role_attributes,\n    \\ 'default_role': default_role,\n    \\ 'vimariaattrinfo': aria_attributes_value\n\\ }\n"
  },
  {
    "path": ".vim/bundle/html5.vim/autoload/xml/html5.vim",
    "content": "\" Vim completion for HTML5 data file\n\" Language:       HTML5\n\" Maintainer:     othree <othree@gmail.com>\n\" Last Change:    2011 Apr 9\n\n\n\" Lang Tag: {{{\n\" Ref: http://www.iana.org/assignments/language-subtag-registry\n\" Version: 2010/09/07\n\" Description: only get two-letter language tag\nlet lang_tag = [\n    \\ 'aa', 'ab', 'ae', 'af', 'ak', 'am', 'an', 'ar', 'as', 'av', 'ay', 'az', 'ba', 'be', 'bg', 'bh', 'bi', 'bm',\n    \\ 'bn', 'bo', 'br', 'bs', 'ca', 'ce', 'ch', 'co', 'cr', 'cs', 'cu', 'cv', 'cy', 'da', 'de', 'dv', 'dz', 'ee',\n    \\ 'el', 'en', 'eo', 'es', 'et', 'eu', 'fa', 'ff', 'fi', 'fj', 'fo', 'fr', 'fy', 'ga', 'gd', 'gl', 'gn', 'gu',\n    \\ 'gv', 'ha', 'he', 'hi', 'ho', 'hr', 'ht', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'in', 'io',\n    \\ 'is', 'it', 'iu', 'iw', 'ja', 'ji', 'jv', 'jw', 'ka', 'kg', 'ki', 'kj', 'kk', 'kl', 'km', 'kn', 'ko', 'kr',\n    \\ 'ks', 'ku', 'kv', 'kw', 'ky', 'la', 'lb', 'lg', 'li', 'ln', 'lo', 'lt', 'lu', 'lv', 'mg', 'mh', 'mi', 'mk',\n    \\ 'ml', 'mn', 'mo', 'mr', 'ms', 'mt', 'my', 'na', 'nb', 'nd', 'ne', 'ng', 'nl', 'nn', 'no', 'nr', 'nv', 'ny',\n    \\ 'oc', 'oj', 'om', 'or', 'os', 'pa', 'pi', 'pl', 'ps', 'pt', 'qu', 'rm', 'rn', 'ro', 'ru', 'rw', 'sa', 'sc',\n    \\ 'sd', 'se', 'sg', 'sh', 'si', 'sk', 'sl', 'sm', 'sn', 'so', 'sq', 'sr', 'ss', 'st', 'su', 'sv', 'sw', 'ta',\n    \\ 'te', 'tg', 'th', 'ti', 'tk', 'tl', 'tn', 'to', 'tr', 'ts', 'tt', 'tw', 'ty', 'ug', 'uk', 'ur', 'uz', 've',\n    \\ 'vi', 'vo', 'wa', 'wo', 'xh', 'yi', 'yo', 'za', 'zh', 'zu', 'zh-CN', 'zh-TW']\n\" }}}\n\n\" Charset: {{{\n\" Ref: http://www.iana.org/assignments/character-sets \n\" Version: 2010/09/07\nlet charset = [\n    \\ 'ANSI_X3.4-1968', 'ISO_8859-1:1987', 'ISO_8859-2:1987', 'ISO_8859-3:1988', 'ISO_8859-4:1988', 'ISO_8859-5:1988', \n    \\ 'ISO_8859-6:1987', 'ISO_8859-7:1987', 'ISO_8859-8:1988', 'ISO_8859-9:1989', 'ISO-8859-10', 'ISO_6937-2-add', 'JIS_X0201', \n    \\ 'JIS_Encoding', 'Shift_JIS', 'Extended_UNIX_Code_Packed_Format_for_Japanese', 'Extended_UNIX_Code_Fixed_Width_for_Japanese',\n    \\ 'BS_4730', 'SEN_850200_C', 'IT', 'ES', 'DIN_66003', 'NS_4551-1', 'NF_Z_62-010', 'ISO-10646-UTF-1', 'ISO_646.basic:1983', \n    \\ 'INVARIANT', 'ISO_646.irv:1983', 'NATS-SEFI', 'NATS-SEFI-ADD', 'NATS-DANO', 'NATS-DANO-ADD', 'SEN_850200_B', 'KS_C_5601-1987',\n    \\ 'ISO-2022-KR', 'EUC-KR', 'ISO-2022-JP', 'ISO-2022-JP-2', 'JIS_C6220-1969-jp', 'JIS_C6220-1969-ro', 'PT', 'greek7-old', \n    \\ 'latin-greek', 'NF_Z_62-010_(1973)', 'Latin-greek-1', 'ISO_5427', 'JIS_C6226-1978', 'BS_viewdata', 'INIS', 'INIS-8', \n    \\ 'INIS-cyrillic', 'ISO_5427:1981', 'ISO_5428:1980', 'GB_1988-80', 'GB_2312-80', 'NS_4551-2', 'videotex-suppl', 'PT2', \n    \\ 'ES2', 'MSZ_7795.3', 'JIS_C6226-1983', 'greek7', 'ASMO_449', 'iso-ir-90', 'JIS_C6229-1984-a', 'JIS_C6229-1984-b', \n    \\ 'JIS_C6229-1984-b-add', 'JIS_C6229-1984-hand', 'JIS_C6229-1984-hand-add', 'JIS_C6229-1984-kana', 'ISO_2033-1983', \n    \\ 'ANSI_X3.110-1983', 'T.61-7bit', 'T.61-8bit', 'ECMA-cyrillic', 'CSA_Z243.4-1985-1', 'CSA_Z243.4-1985-2', 'CSA_Z243.4-1985-gr', \n    \\ 'ISO_8859-6-E', 'ISO_8859-6-I', 'T.101-G2', 'ISO_8859-8-E', 'ISO_8859-8-I', 'CSN_369103', 'JUS_I.B1.002', 'IEC_P27-1', \n    \\ 'JUS_I.B1.003-serb', 'JUS_I.B1.003-mac', 'greek-ccitt', 'NC_NC00-10:81', 'ISO_6937-2-25', 'GOST_19768-74', 'ISO_8859-supp', \n    \\ 'ISO_10367-box', 'latin-lap', 'JIS_X0212-1990', 'DS_2089', 'us-dk', 'dk-us', 'KSC5636', 'UNICODE-1-1-UTF-7', 'ISO-2022-CN', \n    \\ 'ISO-2022-CN-EXT', 'UTF-8', 'ISO-8859-13', 'ISO-8859-14', 'ISO-8859-15', 'ISO-8859-16', 'GBK', 'GB18030', 'OSD_EBCDIC_DF04_15', \n    \\ 'OSD_EBCDIC_DF03_IRV', 'OSD_EBCDIC_DF04_1', 'ISO-11548-1', 'KZ-1048', 'ISO-10646-UCS-2', 'ISO-10646-UCS-4', 'ISO-10646-UCS-Basic',\n    \\ 'ISO-10646-Unicode-Latin1', 'ISO-10646-J-1', 'ISO-Unicode-IBM-1261', 'ISO-Unicode-IBM-1268', 'ISO-Unicode-IBM-1276', \n    \\ 'ISO-Unicode-IBM-1264', 'ISO-Unicode-IBM-1265', 'UNICODE-1-1', 'SCSU', 'UTF-7', 'UTF-16BE', 'UTF-16LE', 'UTF-16', 'CESU-8', \n    \\ 'UTF-32', 'UTF-32BE', 'UTF-32LE', 'BOCU-1', 'ISO-8859-1-Windows-3.0-Latin-1', 'ISO-8859-1-Windows-3.1-Latin-1', \n    \\ 'ISO-8859-2-Windows-Latin-2', 'ISO-8859-9-Windows-Latin-5', 'hp-roman8', 'Adobe-Standard-Encoding', 'Ventura-US', \n    \\ 'Ventura-International', 'DEC-MCS', 'IBM850', 'PC8-Danish-Norwegian', 'IBM862', 'PC8-Turkish', 'IBM-Symbols', 'IBM-Thai', \n    \\ 'HP-Legal', 'HP-Pi-font', 'HP-Math8', 'Adobe-Symbol-Encoding', 'HP-DeskTop', 'Ventura-Math', 'Microsoft-Publishing', \n    \\ 'Windows-31J', 'GB2312', 'Big5', 'macintosh', 'IBM037', 'IBM038', 'IBM273', 'IBM274', 'IBM275', 'IBM277', 'IBM278', \n    \\ 'IBM280', 'IBM281', 'IBM284', 'IBM285', 'IBM290', 'IBM297', 'IBM420', 'IBM423', 'IBM424', 'IBM437', 'IBM500', 'IBM851', \n    \\ 'IBM852', 'IBM855', 'IBM857', 'IBM860', 'IBM861', 'IBM863', 'IBM864', 'IBM865', 'IBM868', 'IBM869', 'IBM870', 'IBM871', \n    \\ 'IBM880', 'IBM891', 'IBM903', 'IBM904', 'IBM905', 'IBM918', 'IBM1026', 'EBCDIC-AT-DE', 'EBCDIC-AT-DE-A', 'EBCDIC-CA-FR', \n    \\ 'EBCDIC-DK-NO', 'EBCDIC-DK-NO-A', 'EBCDIC-FI-SE', 'EBCDIC-FI-SE-A', 'EBCDIC-FR', 'EBCDIC-IT', 'EBCDIC-PT', 'EBCDIC-ES', \n    \\ 'EBCDIC-ES-A', 'EBCDIC-ES-S', 'EBCDIC-UK', 'EBCDIC-US', 'UNKNOWN-8BIT', 'MNEMONIC', 'MNEM', 'VISCII', 'VIQR', 'KOI8-R', \n    \\ 'HZ-GB-2312', 'IBM866', 'IBM775', 'KOI8-U', 'IBM00858', 'IBM00924', 'IBM01140', 'IBM01141', 'IBM01142', 'IBM01143', \n    \\ 'IBM01144', 'IBM01145', 'IBM01146', 'IBM01147', 'IBM01148', 'IBM01149', 'Big5-HKSCS', 'IBM1047', 'PTCP154', 'Amiga-1251', \n    \\ 'KOI7-switched', 'BRF', 'TSCII', 'windows-1250', 'windows-1251', 'windows-1252', 'windows-1253', 'windows-1254', 'windows-1255', \n    \\ 'windows-1256', 'windows-1257', 'windows-1258', 'TIS-620', ]\n\" }}}\n\n\" Attributes_and_Settings: {{{\nlet core_attributes = {'accesskey': [], 'class': [], 'contenteditable': ['true', 'false', ''], 'contextmenu': [], 'dir': ['ltr', 'rtl'], 'draggable': ['true', 'false'], 'hidden': ['hidden', ''], 'id': [], 'is': [], 'lang': lang_tag, 'spellcheck': ['true', 'false', ''], 'style': [], 'tabindex': [], 'title': []}\nlet xml_attributes = {'xml:lang': lang_tag, 'xml:space': ['preserve'], 'xml:base': [], 'xmlns': ['http://www.w3.org/1999/xhtml', 'http://www.w3.org/1998/Math/MathML', 'http://www.w3.org/2000/svg', 'http://www.w3.org/1999/xlink']}\n\nlet body_attributes = {}\nlet global_attributes = extend(core_attributes, xml_attributes)\nif !exists('g:html5_event_handler_attributes_complete')\n    let g:html5_event_handler_attributes_complete = 1\nendif\n\n\" http://dev.w3.org/html5/spec/Overview.html#attributes-1\nlet attributes_value = {\n    \\ 'accept': ['MIME', ''],\n    \\ 'accept-charset': ['Charset', ''],\n    \\ 'accesskey': ['Character', ''],\n    \\ 'action': ['URL', ''],\n    \\ 'alt': ['Text', ''],\n    \\ 'async': ['Bool', ''],\n    \\ 'autocomplete': ['on/off', ''],\n    \\ 'autofocus': ['Bool', ''],\n    \\ 'autoplay': ['Bool', ''],\n    \\ 'border': ['1', ''],\n    \\ 'challenge': ['Text', ''],\n    \\ 'charset': ['Charset', ''],\n    \\ 'checked': ['Bool', ''],\n    \\ 'cite': ['URL', ''],\n    \\ 'class': ['*Token', ''],\n    \\ 'cols': ['Int', ''],\n    \\ 'colspan': ['Int', ''],\n    \\ 'content': ['Text', ''],\n    \\ 'contenteditable': ['true/false', ''],\n    \\ 'contextmenu': ['ID', ''],\n    \\ 'controls': ['Bool', ''],\n    \\ 'coords': ['*Int', ''],\n    \\ 'data': ['URL', ''],\n    \\ 'datetime': ['Datetime', ''],\n    \\ 'defer': ['Bool', ''],\n    \\ 'dir': ['ltr/rtl', ''],\n    \\ 'disabled': ['Bool', ''],\n    \\ 'draggable': ['true/false', ''],\n    \\ 'enctype': ['Token', ''],\n    \\ 'extends': ['Text', ''],\n    \\ 'for': ['ID', ''],\n    \\ 'form': ['ID', ''],\n    \\ 'formaction': ['URL', ''],\n    \\ 'formenctype': ['Token', ''],\n    \\ 'formmethod': ['HTTP Method', ''],\n    \\ 'formnovalidate': ['Bool', ''],\n    \\ 'formtarget': ['Name', ''],\n    \\ 'headers': ['*ID', ''],\n    \\ 'height': ['Int', ''],\n    \\ 'hidden': ['Bool', ''],\n    \\ 'high': ['Number', ''],\n    \\ 'href': ['URL', ''],\n    \\ 'hreflang': ['Lang Tag', ''],\n    \\ 'http-equiv': ['Text', ''],\n    \\ 'icon': ['URL', ''],\n    \\ 'id': ['Text', ''],\n    \\ 'ismap': ['Bool', ''],\n    \\ 'keytype': ['Text', ''],\n    \\ 'label': ['Text', ''],\n    \\ 'lang': ['Lang Tag', ''],\n    \\ 'list': ['ID', ''],\n    \\ 'loop': ['Bool', ''],\n    \\ 'low': ['Number', ''],\n    \\ 'manifest': ['URL', ''],\n    \\ 'max': ['Number', ''],\n    \\ 'maxlength': ['Int', ''],\n    \\ 'media': ['Text', ''],\n    \\ 'method': ['HTTP Method', ''],\n    \\ 'min': ['Number', ''],\n    \\ 'multiple': ['Bool', ''],\n    \\ 'name': ['Text', ''],\n    \\ 'novalidate': ['Bool', ''],\n    \\ 'open': ['Bool', ''],\n    \\ 'optimum': ['Number', ''],\n    \\ 'pattern': ['Pattern', ''],\n    \\ 'placeholder': ['Text', ''],\n    \\ 'poster': ['URL', ''],\n    \\ 'preload': ['Token', ''],\n    \\ 'pubdate': ['Bool', ''],\n    \\ 'radiogroup': ['Text', ''],\n    \\ 'readonly': ['Bool', ''],\n    \\ 'rel': ['*Token', ''],\n    \\ 'required': ['Bool', ''],\n    \\ 'reversed': ['Bool', ''],\n    \\ 'rows': ['Int', ''],\n    \\ 'rowspan': ['Int', ''],\n    \\ 'sandbox': ['*Token', ''],\n    \\ 'spellcheck': ['true/false', ''],\n    \\ 'scope': ['Token', ''],\n    \\ 'scoped': ['Bool', ''],\n    \\ 'seamless': ['Bool', ''],\n    \\ 'select': ['Text', ''],\n    \\ 'selected': ['Bool', ''],\n    \\ 'shape': ['Token', ''],\n    \\ 'size': ['Int', ''],\n    \\ 'sizes': ['*Token', ''],\n    \\ 'span': ['Int', ''],\n    \\ 'src': ['Int', ''],\n    \\ 'srcdoc': ['Document', ''],\n    \\ 'start': ['Int', ''],\n    \\ 'step': ['Int', ''],\n    \\ 'style': ['Style', ''],\n    \\ 'summary': ['Text', ''],\n    \\ 'tabindex': ['Int', ''],\n    \\ 'target': ['Name', ''],\n    \\ 'title': ['Text', ''],\n    \\ 'type': ['Token', ''],\n    \\ 'usemap': ['Name', ''],\n    \\ 'value': ['Text', ''],\n    \\ 'width': ['Int', ''],\n    \\ 'wrap': ['soft/hard', ''],\n    \\ 'xml:lang': ['Lang tag', ''],\n    \\ 'xml:base': ['*URI', ''],\n    \\ 'xml:space': ['preserve', ''],\n    \\ 'xmlns': ['URI', ''],\n    \\ 'version': ['HTML+RDFa 1.1', ''],\n    \\ 'role': ['*Token', '']\n\\ }\n\nif g:html5_event_handler_attributes_complete == 1\n    let event_handler_attributes = {'onabort': [], 'onblur': [], 'oncanplay': [], 'oncanplaythrough': [], 'onchange': [], 'onclick': [], 'oncontextmenu': [], 'ondblclick': [], 'ondrag': [], 'ondragend': [], 'ondragenter': [], 'ondragleave': [], 'ondragover': [], 'ondragstart': [], 'ondrop': [], 'ondurationchange': [], 'onemptied': [], 'onended': [], 'onerror': [], 'onfocus': [], 'onformchange': [], 'onforminput': [], 'oninput': [], 'oninvalid': [], 'onkeydown': [], 'onkeypress': [], 'onkeyup': [], 'onload': [], 'onloadeddata': [], 'onloadedmetadata': [], 'onloadstart': [], 'onmousedown': [], 'onmousemove': [], 'onmouseout': [], 'onmouseover': [], 'onmouseup': [], 'onmousewheel': [], 'onpause': [], 'onplay': [], 'onplaying': [], 'onprogress': [], 'onratechange': [], 'onreadystatechange': [], 'onscroll': [], 'onseeked': [], 'onseeking': [], 'onselect': [], 'onshow': [], 'onstalled': [], 'onsubmit': [], 'onsuspend': [], 'ontimeupdate': [], 'onvolumechange': [], 'onwaiting': []}\n    let global_attributes = extend(global_attributes, event_handler_attributes)\n    \n    let body_attributes = {'onafterprint': [], 'onbeforeprint': [], 'onbeforeunload': [], 'onblur': [], 'onerror': [], 'onfocus': [], 'onhashchange': [], 'onload': [], 'onmessage': [], 'onoffline': [], 'ononline': [], 'onpopstate': [], 'onredo': [], 'onresize': [], 'onstorage': [], 'onundo': [], 'onunload': []}\n\n    let event_attributes_value = {\n        \\ 'onabort': ['Script', ''],\n        \\ 'onafterprint': ['Script', ''],\n        \\ 'onbeforeprint': ['Script', ''],\n        \\ 'onbeforeunload': ['Script', ''],\n        \\ 'onblur': ['Script', ''],\n        \\ 'oncanplay': ['Script', ''],\n        \\ 'oncanplaythrough': ['Script', ''],\n        \\ 'onchange': ['Script', ''],\n        \\ 'onclick': ['Script', ''],\n        \\ 'oncontextmenu': ['Script', ''],\n        \\ 'ondblclick': ['Script', ''],\n        \\ 'ondrag': ['Script', ''],\n        \\ 'ondragend': ['Script', ''],\n        \\ 'ondragenter': ['Script', ''],\n        \\ 'ondragleave': ['Script', ''],\n        \\ 'ondragover': ['Script', ''],\n        \\ 'ondragstart': ['Script', ''],\n        \\ 'ondrop': ['Script', ''],\n        \\ 'ondurationchange': ['Script', ''],\n        \\ 'onemptied': ['Script', ''],\n        \\ 'onended': ['Script', ''],\n        \\ 'onerror': ['Script', ''],\n        \\ 'onfocus': ['Script', ''],\n        \\ 'onformchange': ['Script', ''],\n        \\ 'onforminput': ['Script', ''],\n        \\ 'onhashchange': ['Script', ''],\n        \\ 'oninput': ['Script', ''],\n        \\ 'oninvalid': ['Script', ''],\n        \\ 'onkeydown': ['Script', ''],\n        \\ 'onkeypress': ['Script', ''],\n        \\ 'onkeyup': ['Script', ''],\n        \\ 'onload': ['Script', ''],\n        \\ 'onloadeddata': ['Script', ''],\n        \\ 'onloadedmetadata': ['Script', ''],\n        \\ 'onloadstart': ['Script', ''],\n        \\ 'onmessage': ['Script', ''],\n        \\ 'onmousedown': ['Script', ''],\n        \\ 'onmousemove': ['Script', ''],\n        \\ 'onmouseout': ['Script', ''],\n        \\ 'onmouseover': ['Script', ''],\n        \\ 'onmouseup': ['Script', ''],\n        \\ 'onmousewheel': ['Script', ''],\n        \\ 'onoffline': ['Script', ''],\n        \\ 'ononline': ['Script', ''],\n        \\ 'onpagehide': ['Script', ''],\n        \\ 'onpageshow': ['Script', ''],\n        \\ 'onpause': ['Script', ''],\n        \\ 'onplay': ['Script', ''],\n        \\ 'onplaying': ['Script', ''],\n        \\ 'onpopstate': ['Script', ''],\n        \\ 'onprogress': ['Script', ''],\n        \\ 'onratechange': ['Script', ''],\n        \\ 'onreadystatechange': ['Script', ''],\n        \\ 'onredo': ['Script', ''],\n        \\ 'onresize': ['Script', ''],\n        \\ 'onscroll': ['Script', ''],\n        \\ 'onseeked': ['Script', ''],\n        \\ 'onseeking': ['Script', ''],\n        \\ 'onselect': ['Script', ''],\n        \\ 'onshow': ['Script', ''],\n        \\ 'onstalled': ['Script', ''],\n        \\ 'onstorage': ['Script', ''],\n        \\ 'onsubmit': ['Script', ''],\n        \\ 'onsuspend': ['Script', ''],\n        \\ 'ontimeupdate': ['Script', ''],\n        \\ 'onundo': ['Script', ''],\n        \\ 'onunload': ['Script', ''],\n        \\ 'onvolumechange': ['Script', ''],\n        \\ 'onwaiting': ['Script', '']\n    \\ }\n\n    let attributes_value = extend(attributes_value, event_attributes_value)\nendif\nif !exists('g:html5_rdfa_attributes_complete')\n    let g:html5_rdfa_attributes_complete = 1\nendif\nif g:html5_rdfa_attributes_complete == 1\n    \" http://www.w3.org/TR/rdfa-syntax/#s_metaAttributes\n    \" http://www.w3.org/TR/rdfa-core/#s_syntax\n    let relrev = ['chapter', 'contents', 'copyright', 'first', 'glossary', 'help', 'icon', 'index', 'last', 'license', 'meta', 'next', 'p3pv1', 'prev', 'role', 'section', 'stylesheet', 'subsection', 'start', 'top', 'up']\n    let rdfa_attributes = {'about': [], 'content': [], 'datatype': [], 'prefix': [], 'profile': [], 'property': [], 'resource': [], 'rel': relrev, 'rev': relrev, 'typeof': [], 'vocab': []}\n    let global_attributes = extend(global_attributes, rdfa_attributes)\n\n    let rdfa_attributes_value = {\n        \\ 'about': ['SafeCURIEorCURIEorURI', ''],\n        \\ 'content': ['CDATA String', ''],\n        \\ 'datatype': ['CURIE', ''],\n        \\ 'prefix': ['*Prefix', ''],\n        \\ 'profile': ['String', ''],\n        \\ 'property': ['*TERMorCURIEorAbsURIs', ''],\n        \\ 'resource': ['URIorSafeCURIE', ''],\n        \\ 'rel': ['*TERMorCURIEorAbsURIs', ''],\n        \\ 'rev': ['*TERMorCURIEorAbsURIs', ''],\n        \\ 'typeof': ['*TERMorCURIEorAbsURIs', ''],\n        \\ 'vocab': ['URI', '']\n    \\ }\n    let attributes_value = extend(attributes_value, rdfa_attributes_value)\nendif\nif !exists('g:html5_microdata_attributes_complete')\n    let g:html5_microdata_attributes_complete = 1\nendif\nif g:html5_microdata_attributes_complete == 1\n    let microdata_attributes = {'itemid': [], 'itemscope': ['itemscope', ''], 'itemtype': [], 'itemprop': [], 'itemref': []}\n    let global_attributes = extend(global_attributes, microdata_attributes)\n\n    let microdata_attributes_value = {\n        \\ 'itemid': ['URI', ''],\n        \\ 'itemscope': ['Bool', ''],\n        \\ 'itemtype': ['URI', ''],\n        \\ 'itemprop': ['String', ''],\n        \\ 'itemref': ['*ID', '']\n    \\ }\n    let attributes_value = extend(attributes_value, microdata_attributes_value)\nendif\n\" }}}\n\n\" WAI_ARIA: {{{\n\" Ref: http://www.w3.org/TR/wai-aria/\n\" Version: Draft 15 December 2009\nif !exists('g:html5_aria_attributes_complete')\n    let g:html5_aria_attributes_complete = 1\nendif\nif g:html5_aria_attributes_complete == 1\n    \" Ref: http://www.w3.org/TR/wai-aria/roles\n    \" Version: Draft 15 December 2009\n    let widget_role = ['alert', 'alertdialog', 'button', 'checkbox', 'combobox', 'dialog', 'gridcell', 'link', 'log', 'marquee', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'progressbar', 'radio', 'radiogroup', 'scrollbar', 'slider', 'spinbutton', 'status', 'tab', 'tabpanel', 'textbox', 'timer', 'tooltip', 'treeitem', 'combobox', 'grid', 'listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid']\n    let document_structure = ['article', 'columnheader', 'definition', 'directory', 'document', 'group', 'heading', 'img', 'list', 'listitem', 'math', 'note', 'presentation', 'region', 'row', 'rowheader', 'separator']\n    let landmark_role = ['application', 'banner', 'complementary', 'contentinfo', 'form', 'main', 'navigation', 'search']\n    let role = extend(widget_role, document_structure)\n    let role = extend(role, landmark_role)\n    let global_attributes = extend(global_attributes, {'role': role})\nendif\n\" }}}\n\n\" Ref: http://dev.w3.org/html5/markup/\n\" Version: Draft 05 April 2011\nlet phrasing_elements = ['a', 'em', 'strong', 'small', 'mark', 'abbr', 'dfn', 'i', 'b', 'u', 'code', 'var', 'samp', 'kbd', 'sup', 'sub', 'q', 'cite', 'span', 'bdo', 'bdi', 'br', 'wbr', 'ins', 'del', 'img', 'embed', 'object', 'iframe', 'map', 'area', 'script', 'noscript', 'ruby', 'video', 'audio', 'input', 'textarea', 'select', 'button', 'label', 'output', 'datalist', 'keygen', 'progress', 'command', 'canvas', 'time', 'meter', 'data', 'content', 'shadow']\n\nlet metadata_elements = ['link', 'style', 'meta', 'script', 'noscript', 'command']\n\nlet flow_elements = phrasing_elements + ['p', 'hr', 'pre', 'ul', 'ol', 'dl', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hgroup', 'address', 'blockquote', 'ins', 'del', 'element', 'object', 'main', 'map', 'noscript', 'section', 'nav', 'article', 'aside', 'header', 'footer', 'video', 'audio', 'figure', 'table', 'template', 'form', 'fieldset', 'menu', 'canvas', 'details']\n\n\" http://dev.w3.org/html5/spec/Overview.html#linkTypes\nlet linktypes = ['alternate', 'author', 'bookmark', 'external', 'help', 'icon', 'license', 'next', 'nofollow', 'noreferrer', 'pingback', 'prefetch', 'prev', 'search', 'stylesheet', 'sidebar', 'tag']\n\" http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html\nlet linkreltypes = linktypes + ['canonical', 'import']\n\n\" a and button are special elements for interactive, some element can't be its descendent\nlet abutton_dec = 'details\\\\|embed\\\\|iframe\\\\|keygen\\\\|label\\\\|menu\\\\|select\\\\|textarea'\n\n\n\nlet g:xmldata_html5 = {\n\\ 'vimxmlentities': ['AElig', 'Aacute', 'Acirc', 'Agrave', 'Alpha', 'Aring', 'Atilde', 'Auml', 'Beta', 'Ccedil', 'Chi', 'Dagger', 'Delta', 'ETH', 'Eacute', 'Ecirc', 'Egrave', 'Epsilon', 'Eta', 'Euml', 'Gamma', 'Iacute', 'Icirc', 'Igrave', 'Iota', 'Iuml', 'Kappa', 'Lambda', 'Mu', 'Ntilde', 'Nu', 'OElig', 'Oacute', 'Ocirc', 'Ograve', 'Omega', 'Omicron', 'Oslash', 'Otilde', 'Ouml', 'Phi', 'Pi', 'Prime', 'Psi', 'Rho', 'Scaron', 'Sigma', 'THORN', 'Tau', 'Theta', 'Uacute', 'Ucirc', 'Ugrave', 'Upsilon', 'Uuml', 'Xi', 'Yacute', 'Yuml', 'Zeta', 'aacute', 'acirc', 'acute', 'aelig', 'agrave', 'alefsym', 'alpha', 'amp', 'and', 'ang', 'apos', 'aring', 'asymp', 'atilde', 'auml', 'bdquo', 'beta', 'brvbar', 'bull', 'cap', 'ccedil', 'cedil', 'cent', 'chi', 'circ', 'clubs', 'cong', 'copy', 'crarr', 'cup', 'curren', 'dArr', 'dagger', 'darr', 'deg', 'delta', 'diams', 'divide', 'eacute', 'ecirc', 'egrave', 'empty', 'emsp', 'ensp', 'epsilon', 'equiv', 'eta', 'eth', 'euml', 'euro', 'exist', 'fnof', 'forall', 'frac12', 'frac14', 'frac34', 'frasl', 'gamma', 'ge', 'gt', 'hArr', 'harr', 'hearts', 'hellip', 'iacute', 'icirc', 'iexcl', 'igrave', 'image', 'infin', 'int', 'iota', 'iquest', 'isin', 'iuml', 'kappa', 'lArr', 'lambda', 'lang', 'laquo', 'larr', 'lceil', 'ldquo', 'le', 'lfloor', 'lowast', 'loz', 'lrm', 'lsaquo', 'lsquo', 'lt', 'macr', 'mdash', 'micro', 'middot', 'minus', 'mu', 'nabla', 'nbsp', 'ndash', 'ne', 'ni', 'not', 'notin', 'nsub', 'ntilde', 'nu', 'oacute', 'ocirc', 'oelig', 'ograve', 'oline', 'omega', 'omicron', 'oplus', 'or', 'ordf', 'ordm', 'oslash', 'otilde', 'otimes', 'ouml', 'para', 'part', 'permil', 'perp', 'phi', 'pi', 'piv', 'plusmn', 'pound', 'prime', 'prod', 'prop', 'psi', 'quot', 'rArr', 'radic', 'rang', 'raquo', 'rarr', 'rceil', 'rdquo', 'real', 'reg', 'rfloor', 'rho', 'rlm', 'rsaquo', 'rsquo', 'sbquo', 'scaron', 'sdot', 'sect', 'shy', 'sigma', 'sigmaf', 'sim', 'spades', 'sub', 'sube', 'sum', 'sup', 'sup1', 'sup2', 'sup3', 'supe', 'szlig', 'tau', 'there4', 'theta', 'thetasym', 'thinsp', 'thorn', 'tilde', 'times', 'trade', 'uArr', 'uacute', 'uarr', 'ucirc', 'ugrave', 'uml', 'upsih', 'upsilon', 'uuml', 'weierp', 'xi', 'yacute', 'yen', 'yuml', 'zeta', 'zwj', 'zwnj'],\n\\ 'vimxmlroot': ['html'],\n\\ 'a': [\n    \\ filter(copy(flow_elements), \"!(v:val =~ '\". abutton_dec .\"')\"),\n    \\ extend(copy(global_attributes), {'name': [], 'href': [], 'target': [], 'rel': linktypes, 'hreflang': lang_tag, 'media': [], 'type': []}) \n\\ ],\n\\ 'abbr': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'address': [\n    \\ filter(copy(flow_elements), \"!(v:val =~ 'address\\\\|nav\\\\|article\\\\|header\\\\|footer\\\\|section\\\\|aside\\\\|h1\\\\|h2\\\\|h3\\\\|h4\\\\|h5\\\\|h6')\"),\n    \\ global_attributes\n\\ ],\n\\ 'area': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'alt': [], 'href': [], 'target': [], 'rel': linktypes, 'media': [], 'hreflang': lang_tag, 'type': [], 'shape': ['rect', 'circle', 'poly', 'default'], 'coords': []})\n\\ ],\n\\ 'article': [\n    \\ flow_elements + ['style'],\n    \\ global_attributes\n\\ ],\n\\ 'aside': [\n    \\ flow_elements + ['style'],\n    \\ global_attributes\n\\ ],\n\\ 'audio': [\n    \\ flow_elements + ['source', 'track'],\n    \\ extend(copy(global_attributes), {'autoplay': ['autoplay', ''], 'preload': ['none', 'metadata', 'auto', ''], 'controls': ['controls', ''], 'loop': ['loop', ''], 'src': []})\n\\ ],\n\\ 'b': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'base': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'href': [], 'target': []})\n\\ ],\n\\ 'bdo': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'bdi': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'blockquote': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), {'cite': []})\n\\ ],\n\\ 'body': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), body_attributes)\n\\ ],\n\\ 'br': [\n    \\ [],\n    \\ global_attributes\n\\ ],\n\\ 'button': [\n    \\ filter(copy(phrasing_elements), \"!(v:val =~ '\". abutton_dec .\"')\"),\n    \\ extend(copy(global_attributes), {'type': ['submit', 'reset', 'button'], 'name': [], 'disabled': ['disabled', ''], 'form': [], 'value': [], 'formaction': [], 'autofocus': ['autofocus', ''], 'formenctype': ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'], 'formmethod': ['get', 'post', 'put', 'delete'], 'formtarget': [], 'formnovalidate': ['formnovalidate', '']})\n\\ ],\n\\ 'canvas': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), {'height': [], 'width': []})\n\\ ],\n\\ 'caption': [\n    \\ filter(copy(flow_elements), \"!(v:val =~ 'table')\"),\n    \\ global_attributes\n\\ ],\n\\ 'cite': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'code': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'col': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'span': []})\n\\ ],\n\\ 'colgroup': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'span': []})\n\\ ],\n\\ 'content': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'select': []})\n\\ ],\n\\ 'command': [\n    \\ ['col'],\n    \\ extend(copy(global_attributes), {'type': ['command', 'radio', 'checkbox'], 'radiogroup': [], 'checked': ['checked', ''], 'label': [], 'icon': [], 'disabled': ['disabled', '']})\n\\ ],\n\\ 'datalist': [\n    \\ phrasing_elements + ['option'],\n    \\ global_attributes\n\\ ],\n\\ 'dd': [\n    \\ flow_elements,\n    \\ global_attributes\n\\ ],\n\\ 'del': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), {'cite': [], 'datetime': []})\n\\ ],\n\\ 'details': [\n    \\ flow_elements + ['summary'],\n    \\ extend(copy(global_attributes), {'open': ['open', '']})\n\\ ],\n\\ 'dfn': [\n    \\ filter(copy(phrasing_elements), \"!(v:val =~ 'dfn')\"),\n    \\ global_attributes\n\\ ],\n\\ 'div': [\n    \\ flow_elements + ['style'],\n    \\ global_attributes\n\\ ],\n\\ 'dl': [\n    \\ ['dt', 'dd'],\n    \\ global_attributes\n\\ ],\n\\ 'dt': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'em': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'embed': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'src': [], 'type': [], 'height': [], 'width': []})\n\\ ],\n\\ 'fieldset': [\n    \\ flow_elements + ['legend'],\n    \\ extend(copy(global_attributes), {'name': [], 'disabled': ['disabled', ''], 'form': []})\n\\ ],\n\\ 'figcaption': [\n    \\ flow_elements,\n    \\ global_attributes\n\\ ],\n\\ 'figure': [\n    \\ flow_elements + ['figcaption'],\n    \\ global_attributes\n\\ ],\n\\ 'footer': [\n    \\ filter(copy(flow_elements), \"!(v:val =~ 'address\\\\|header\\\\|footer')\"),\n    \\ global_attributes\n\\ ],\n\\ 'form': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), {'name': [], 'action': [], 'enctype': ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'], 'method': ['get', 'post', 'put', 'delete'], 'target': [], 'novalidate': ['novalidate', ''], 'accept-charset': charset, 'autocomplete': ['on', 'off']})\n\\ ],\n\\ 'h1': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'h2': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'h3': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'h4': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'h5': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'h6': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'head': [\n    \\ metadata_elements + ['title', 'base'],\n    \\ global_attributes\n\\ ],\n\\ 'header': [\n    \\ filter(copy(flow_elements), \"!(v:val =~ 'address\\\\|header\\\\|footer')\"),\n    \\ global_attributes\n\\ ],\n\\ 'hgroup': [\n    \\ ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'],\n    \\ global_attributes\n\\ ],\n\\ 'hr': [\n    \\ [],\n    \\ global_attributes\n\\ ],\n\\ 'html': [\n    \\ ['head', 'body'],\n    \\ extend(copy(global_attributes), {'manifest': [], 'version': ['HTML+RDFa 1.1']})\n\\ ],\n\\ 'i': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'iframe': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'src': [], 'name': [], 'width': [], 'height': [], 'sandbox': ['allow-same-origin', 'allow-forms', 'allow-scripts'], 'seamless': ['seamless', '']})\n\\ ],\n\\ 'img': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'src': [], 'alt': [], 'height': [], 'width': [], 'usemap': [], 'ismap': ['ismap', '']})\n\\ ],\n\\ 'input': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'type': ['text', 'password', 'checkbox', 'radio', 'button', 'submit', 'reset', 'file', 'hidden', 'image', 'datetime', 'datetime-local', 'date', 'month', 'time', 'week', 'number', 'range', 'email', 'url', 'search', 'tel', 'coloe'], 'name': [], 'disabled': ['disabled', ''], 'form': [], 'maxlength': [], 'readonly': ['readonly', ''], 'size': [], 'value': [], 'autocomplete': ['on', 'off'], 'autofocus': ['autofocus', ''], 'list': [], 'pattern': [], 'required': ['required', ''], 'placeholder': [], 'checked': ['checked'], 'accept': [], 'multiple': ['multiple', ''], 'alt': [], 'src': [], 'height': [], 'width': [], 'min': [], 'max': [], 'step': [], 'formenctype': ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'], 'formmethod': ['get', 'post', 'put', 'delete'], 'formtarget': [], 'formnovalidate': ['formnovalidate', '']})\n\\ ],\n\\ 'ins': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), {'cite': [], 'datetime': []})\n\\ ],\n\\ 'kbd': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'keygen': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'challenge': [], 'keytype': ['rsa'], 'autofocus': ['autofocus', ''], 'name': [], 'disabled': ['disabled', ''], 'form': []})\n\\ ],\n\\ 'label': [\n    \\ filter(copy(phrasing_elements), \"!(v:val =~ 'label')\"),\n    \\ extend(copy(global_attributes), {'for': [], 'form': []})\n\\ ],\n\\ 'legend': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'li': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), {'value': []})\n\\ ],\n\\ 'link': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'href': [], 'rel': linkreltypes, 'hreflang': lang_tag, 'media': [], 'type': [], 'sizes': ['any']})\n\\ ],\n\\ 'main': [\n    \\ flow_elements + ['style'],\n    \\ global_attributes\n\\ ],\n\\ 'map': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), {'name': []})\n\\ ],\n\\ 'mark': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'menu': [\n    \\ flow_elements + ['li'],\n    \\ extend(copy(global_attributes), {'type': ['toolbar', 'context'], 'label': []})\n\\ ],\n\\ 'meta': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'name': [], 'http-equiv': ['refresh', 'default-style', 'content-type'], 'content': [], 'charset': charset})\n\\ ],\n\\ 'meter': [\n    \\ phrasing_elements,\n    \\ extend(copy(global_attributes), {'value': [], 'min': [], 'low': [], 'high': [], 'max': [], 'optimum': []})\n\\ ],\n\\ 'nav': [\n    \\ flow_elements,\n    \\ global_attributes\n\\ ],\n\\ 'noscript': [\n    \\ flow_elements + ['link', 'meta', 'style'],\n    \\ global_attributes\n\\ ],\n\\ 'object': [\n    \\ flow_elements + ['param'],\n    \\ extend(copy(global_attributes), {'data': [], 'type': [], 'height': [], 'width': [], 'usemap': [], 'name': [], 'form': []})\n\\ ],\n\\ 'ol': [\n    \\ ['li'],\n    \\ extend(copy(global_attributes), {'start': [], 'reversed': ['reversed', '']})\n\\ ],\n\\ 'optgroup': [\n    \\ ['option'],\n    \\ extend(copy(global_attributes), {'label': [], 'disabled': ['disabled', '']})\n\\ ],\n\\ 'option': [\n    \\ [''],\n    \\ extend(copy(global_attributes), {'disabled': ['disabled', ''], 'selected': ['selected', ''], 'label': [], 'value': []})\n\\ ],\n\\ 'output': [\n    \\ phrasing_elements,\n    \\ extend(copy(global_attributes), {'name': [], 'form': [], 'for': []})\n\\ ],\n\\ 'p': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'param': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'name': [], 'value': []})\n\\ ],\n\\ 'pre': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'progress': [\n    \\ filter(copy(phrasing_elements), \"!(v:val =~ 'progress')\"),\n    \\ extend(copy(global_attributes), {'value': [], 'max': []})\n\\ ],\n\\ 'q': [\n    \\ phrasing_elements,\n    \\ extend(copy(global_attributes), {'cite': []})\n\\ ],\n\\ 'rp': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'rt': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'ruby': [\n    \\ phrasing_elements + ['rp', 'rt'],\n    \\ global_attributes\n\\ ],\n\\ 'samp': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'script': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'src': [], 'defer': ['defer', ''], 'async': ['async', ''], 'type': [], 'charset': charset})\n\\ ],\n\\ 'section': [\n    \\ flow_elements + ['style'],\n    \\ global_attributes\n\\ ],\n\\ 'select': [\n    \\ ['optgroup', 'option'],\n    \\ extend(copy(global_attributes), {'name': [], 'disabled': ['disabled', ''], 'form': [], 'size': [], 'multiple': ['multiple', '']})\n\\ ],\n\\ 'shadow': [\n    \\ [],\n    \\ global_attributes\n\\ ],\n\\ 'small': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'source': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'src': [], 'type': [], 'media': []})\n\\ ],\n\\ 'span': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'strong': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'style': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'type': [], 'media': [], 'scoped': ['scoped', '']})\n\\ ],\n\\ 'sub': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'summary': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'sup': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'table': [\n    \\ ['caption', 'col', 'colgroup', 'thead', 'tfoot', 'tbody', 'tr'],\n    \\ extend(copy(global_attributes), {'border': []})\n\\ ],\n\\ 'tbody': [\n    \\ ['tr'],\n    \\ global_attributes\n\\ ],\n\\ 'td': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), {'colspan': [], 'rowspan': [], 'headers': []})\n\\ ],\n\\ 'template': [\n    \\ flow_elements + ['style'],\n    \\ global_attributes\n\\ ],\n\\ 'textarea': [\n    \\ [''],\n    \\ extend(copy(global_attributes), {'name': [], 'disabled': ['disabled', ''], 'form': [], 'readonly': ['readonly', ''], 'maxlength': [], 'autofocus': ['autofocus', ''], 'required': ['required', ''], 'placeholder': [], 'rows': [], 'wrap': ['hard', 'soft'], 'cols': []})\n\\ ],\n\\ 'tfoot': [\n    \\ ['tr'],\n    \\ global_attributes\n\\ ],\n\\ 'th': [\n    \\ phrasing_elements,\n    \\ extend(copy(global_attributes), {'scope': ['row', 'col', 'rowgroup', 'colgroup'], 'colspan': [], 'rowspan': [], 'headers': []})\n\\ ],\n\\ 'thead': [\n    \\ ['tr'],\n    \\ global_attributes\n\\ ],\n\\ 'time': [\n    \\ phrasing_elements,\n    \\ extend(copy(global_attributes), {'datetime': [], 'pubdate': ['pubdate', '']})\n\\ ],\n\\ 'data': [\n    \\ phrasing_elements,\n    \\ extend(copy(global_attributes), {'value': []})\n\\ ],\n\\ 'title': [\n    \\ [''],\n    \\ global_attributes\n\\ ],\n\\ 'tr': [\n    \\ ['th', 'td'],\n    \\ global_attributes\n\\ ],\n\\ 'track': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'kind': ['subtitles', 'captions', 'descriptions', 'chapters', 'metadata'], 'src': [], 'charset': charset, 'srclang': lang_tag, 'label': []})\n\\ ],\n\\ 'u': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'ul': [\n    \\ ['li'],\n    \\ global_attributes\n\\ ],\n\\ 'var': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'video': [\n    \\ flow_elements + ['source', 'track'],\n    \\ extend(copy(global_attributes), {'autoplay': ['autoplay', ''], 'preload': ['none', 'metadata', 'auto', ''], 'controls': ['controls', ''], 'loop': ['loop', ''], 'poster': [], 'height': [], 'width': [], 'src': []})\n\\ ],\n\\ 'wbr': [\n    \\ [],\n    \\ global_attributes\n\\ ],\n\\ 'vimxmlattrinfo' : attributes_value,\n\\ 'vimxmltaginfo': {\n    \\ 'area': ['/>', ''],\n    \\ 'base': ['/>', ''],\n    \\ 'br': ['/>', ''],\n    \\ 'col': ['/>', ''],\n    \\ 'command': ['/>', ''],\n    \\ 'embed': ['/>', ''],\n    \\ 'hr': ['/>', ''],\n    \\ 'img': ['/>', ''],\n    \\ 'input': ['/>', ''],\n    \\ 'keygen': ['/>', ''],\n    \\ 'link': ['/>', ''],\n    \\ 'meta': ['/>', ''],\n    \\ 'param': ['/>', ''],\n    \\ 'source': ['/>', ''],\n    \\ 'track': ['/>', ''],\n    \\ 'wbr': ['/>', ''],\n\\ },\n\\ }\n"
  },
  {
    "path": ".vim/bundle/html5.vim/config.mk",
    "content": "VERSION=0.26\n\n"
  },
  {
    "path": ".vim/bundle/html5.vim/indent/html.vim",
    "content": "\" Description:      HTML5 and inline SVG indenter\n\" Changed By: HT de Beer <H.T.de.Beer@gmail.com>\n\" Last Change: 20121013\n\"   Added the SVG elements to the list of indenting element. SVG elements\n\"   taken from http://www.w3.org/TR/SVG/eltindex.html\n\"   \n\" Description:        html5 (and html4) indenter\n\" Changed By:        Brian Gershon <brian.five@gmail.com>\n\" Last Change:        30 Jan 2011\n\" \n\"   1. Started with vim72 html indent file authored by Johannes Zellner (below)\n\"   2. Added html5 list as described here:\n\"      http://stackoverflow.com/questions/3232518/how-to-update-vim-to-color-code-new-html-elements\n\"   3. Added this to a fork of https://github.com/othree/html5.vim\n\"      which already provides nice html5 syntax highlighting.\n\"\n\" Description:        html indenter\n\" Author:        Johannes Zellner <johannes@zellner.org>\n\" Last Change:        Mo, 05 Jun 2006 22:32:41 CEST\n\"                 Restoring 'cpo' and 'ic' added by Bram 2006 May 5\n\" Globals:\n\" let g:html_indent_tags = 'html\\|p\\|time'\n\" let g:html_exclude_tags = ['html', 'style', 'script', 'body']\n\n\n\" Only load this indent file when no other was loaded.\nif exists(\"b:did_indent\")\n    finish\nendif\nruntime! indent/javascript.vim\nlet s:jsindent = &indentexpr\nunlet b:did_indent\nruntime! indent/css.vim\nlet s:cssindent = &indentexpr\nlet b:did_indent = 1\n\n\" [-- local settings (must come before aborting the script) --]\nsetlocal indentexpr=HtmlIndentGet(v:lnum)\nsetlocal indentkeys=o,O,*<Return>,<>>,{,}\n\n\nlet s:tags = []\n\n\" [-- <ELEMENT ? - - ...> --]\ncall add(s:tags, 'a')\ncall add(s:tags, 'abbr')\ncall add(s:tags, 'acronym')\ncall add(s:tags, 'address')\ncall add(s:tags, 'b')\ncall add(s:tags, 'bdo')\ncall add(s:tags, 'big')\ncall add(s:tags, 'blockquote')\ncall add(s:tags, 'button')\ncall add(s:tags, 'caption')\ncall add(s:tags, 'center')\ncall add(s:tags, 'cite')\ncall add(s:tags, 'code')\ncall add(s:tags, 'colgroup')\ncall add(s:tags, 'del')\ncall add(s:tags, 'dfn')\ncall add(s:tags, 'dir')\ncall add(s:tags, 'div')\ncall add(s:tags, 'dl')\ncall add(s:tags, 'em')\ncall add(s:tags, 'fieldset')\ncall add(s:tags, 'font')\ncall add(s:tags, 'form')\ncall add(s:tags, 'frameset')\ncall add(s:tags, 'h1')\ncall add(s:tags, 'h2')\ncall add(s:tags, 'h3')\ncall add(s:tags, 'h4')\ncall add(s:tags, 'h5')\ncall add(s:tags, 'h6')\ncall add(s:tags, 'i')\ncall add(s:tags, 'iframe')\ncall add(s:tags, 'ins')\ncall add(s:tags, 'kbd')\ncall add(s:tags, 'label')\ncall add(s:tags, 'legend')\ncall add(s:tags, 'li')\ncall add(s:tags, 'map')\ncall add(s:tags, 'menu')\ncall add(s:tags, 'noframes')\ncall add(s:tags, 'noscript')\ncall add(s:tags, 'object')\ncall add(s:tags, 'ol')\ncall add(s:tags, 'optgroup')\ncall add(s:tags, 'p')\n\" call add(s:tags, 'pre')\ncall add(s:tags, 'q')\ncall add(s:tags, 's')\ncall add(s:tags, 'samp')\ncall add(s:tags, 'script')\ncall add(s:tags, 'select')\ncall add(s:tags, 'small')\ncall add(s:tags, 'span')\ncall add(s:tags, 'strong')\ncall add(s:tags, 'style')\ncall add(s:tags, 'sub')\ncall add(s:tags, 'sup')\ncall add(s:tags, 'table')\ncall add(s:tags, 'textarea')\ncall add(s:tags, 'title')\ncall add(s:tags, 'tt')\ncall add(s:tags, 'u')\ncall add(s:tags, 'ul')\ncall add(s:tags, 'var')\n\n\" New HTML 5 elements\ncall add(s:tags, 'article')\ncall add(s:tags, 'aside')\ncall add(s:tags, 'audio')\ncall add(s:tags, 'canvas')\ncall add(s:tags, 'datalist')\ncall add(s:tags, 'details')\ncall add(s:tags, 'figcaption')\ncall add(s:tags, 'figure')\ncall add(s:tags, 'footer')\ncall add(s:tags, 'header')\ncall add(s:tags, 'hgroup')\ncall add(s:tags, 'main')\ncall add(s:tags, 'mark')\ncall add(s:tags, 'meter')\ncall add(s:tags, 'nav')\ncall add(s:tags, 'output')\ncall add(s:tags, 'progress')\ncall add(s:tags, 'rp')\ncall add(s:tags, 'rt')\ncall add(s:tags, 'ruby')\ncall add(s:tags, 'section')\ncall add(s:tags, 'summary')\ncall add(s:tags, 'time')\ncall add(s:tags, 'video')\ncall add(s:tags, 'bdi')\ncall add(s:tags, 'data')\n\n\" Web Component\ncall add(s:tags, 'template')\n\n\" Common inline used SVG elements\ncall add(s:tags, 'clipPath')\ncall add(s:tags, 'defs')\ncall add(s:tags, 'desc')\ncall add(s:tags, 'filter')\ncall add(s:tags, 'foreignObject')\ncall add(s:tags, 'g')\ncall add(s:tags, 'linearGradient')\ncall add(s:tags, 'marker')\ncall add(s:tags, 'mask')\ncall add(s:tags, 'pattern')\ncall add(s:tags, 'radialGradient')\ncall add(s:tags, 'svg')\ncall add(s:tags, 'switch')\ncall add(s:tags, 'symbol')\ncall add(s:tags, 'text')\ncall add(s:tags, 'textPath')\ncall add(s:tags, 'tref')\ncall add(s:tags, 'tspan')\n\ncall add(s:tags, 'html')\ncall add(s:tags, 'head')\ncall add(s:tags, 'body')\n\ncall add(s:tags, 'thead')\ncall add(s:tags, 'tbody')\ncall add(s:tags, 'tfoot')\ncall add(s:tags, 'tr')\ncall add(s:tags, 'th')\ncall add(s:tags, 'td')\n\n\n\nlet s:omittable = [ \n  \\  ['address', 'article', 'aside', 'blockquote', 'dir', 'div', 'dl', 'fieldset', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hr', 'menu', 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'],\n  \\  ['dt', 'dd'],\n  \\  ['li'],\n  \\  ['thead', 'tbody', 'tfoot'],\n  \\  ['th', 'td'],\n  \\]\n\nif exists('g:html_exclude_tags')\n    for tag in g:html_exclude_tags\n        call remove(s:tags, index(s:tags, tag))\n    endfor\nendif\nlet s:html_indent_tags = join(s:tags, '\\|')\nif exists('g:html_indent_tags')\n    let s:html_indent_tags = s:html_indent_tags.'\\|'.g:html_indent_tags\nendif\n\nlet s:cpo_save = &cpo\nset cpo-=C\n\n\" [-- count indent-increasing tags of line a:lnum --]\nfun! <SID>HtmlIndentOpen(lnum, pattern)\n    let s = substitute('x'.getline(a:lnum),\n    \\ '.\\{-}\\(\\(<\\)\\('.a:pattern.'\\)\\>\\)', \"\\1\", 'g')\n    let s = substitute(s, \"[^\\1].*$\", '', '')\n    return strlen(s)\nendfun\n\n\" [-- count indent-decreasing tags of line a:lnum --]\nfun! <SID>HtmlIndentClose(lnum, pattern)\n    let s = substitute('x'.getline(a:lnum),\n    \\ '.\\{-}\\(\\(<\\)/\\('.a:pattern.'\\)\\>>\\)', \"\\1\", 'g')\n    let s = substitute(s, \"[^\\1].*$\", '', '')\n    return strlen(s)\nendfun\n\n\" [-- count indent-increasing '{' of (java|css) line a:lnum --]\nfun! <SID>HtmlIndentOpenAlt(lnum)\n    return strlen(substitute(getline(a:lnum), '[^{]\\+', '', 'g'))\nendfun\n\n\" [-- count indent-decreasing '}' of (java|css) line a:lnum --]\nfun! <SID>HtmlIndentCloseAlt(lnum)\n    return strlen(substitute(getline(a:lnum), '[^}]\\+', '', 'g'))\nendfun\n\n\" [-- return the sum of indents respecting the syntax of a:lnum --]\nfun! <SID>HtmlIndentSum(lnum, style)\n    if a:style == match(getline(a:lnum), '^\\s*</')\n        if a:style == match(getline(a:lnum), '^\\s*</\\<\\('.s:html_indent_tags.'\\)\\>')\n            let open = <SID>HtmlIndentOpen(a:lnum, s:html_indent_tags)\n            let close = <SID>HtmlIndentClose(a:lnum, s:html_indent_tags)\n            if 0 != open || 0 != close\n                return open - close\n            endif\n        endif\n    endif\n\n    if '' != &syntax &&\n        \\ synIDattr(synID(a:lnum, 1, 1), 'name') =~ '\\(css\\|java\\).*' &&\n        \\ synIDattr(synID(a:lnum, strlen(getline(a:lnum)), 1), 'name')\n        \\ =~ '\\(css\\|java\\).*'\n        if a:style == match(getline(a:lnum), '^\\s*}')\n            return <SID>HtmlIndentOpenAlt(a:lnum) - <SID>HtmlIndentCloseAlt(a:lnum)\n        endif\n    endif\n    return 0\nendfun\n\nfun! HtmlIndentGet(lnum)\n    \" Find a non-empty line above the current line.\n    let lnum = prevnonblank(a:lnum - 1)\n\n    \" Hit the start of the file, use zero indent.\n    if lnum == 0\n        return 0\n    endif\n\n    let restore_ic = &ic\n    setlocal ic \" ignore case\n\n    \" [-- special handling for <pre>: no indenting --]\n    if getline(a:lnum) =~ '\\c</pre>'\n                \\ || 0 < searchpair('\\c<pre>', '', '\\c</pre>', 'nWb')\n                \\ || 0 < searchpair('\\c<pre>', '', '\\c</pre>', 'nW')\n        \" we're in a line with </pre> or inside <pre> ... </pre>\n        if restore_ic == 0\n          setlocal noic\n        endif\n        return -1\n    endif\n\n    \" [-- special handling for <javascript>: use cindent --]\n    let js = '<script'\n    let jse = '</script>'\n\n    \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n    \" by Tye Zdrojewski <zdro@yahoo.com>, 05 Jun 2006\n    \" ZDR: This needs to be an AND (we are 'after the start of the pair' AND\n    \"      we are 'before the end of the pair').  Otherwise, indentation\n    \"      before the start of the script block will be affected; the end of\n    \"      the pair will still match if we are before the beginning of the\n    \"      pair.\n    \"\n    if   0 < searchpair(js, '', jse, 'nWb')\n    \\ && 0 < searchpair(js, '', jse, 'nW')\n        \" we're inside javascript\n        if getline(searchpair(js, '', '</script>', 'nWb')) !~ '<script [^>]*type=[\"'']\\?text\\/\\(html\\|template\\)'\n        \\ && getline(lnum) !~ js && getline(a:lnum) !~ jse\n            if restore_ic == 0\n              setlocal noic\n            endif\n            if s:jsindent == ''\n              return cindent(a:lnum)\n            else\n              execute 'let ind = ' . s:jsindent\n              return ind\n            endif\n        endif\n        if getline(a:lnum) =~ jse\n          return indent(searchpair(js, '', jse, 'nWb'))\n        endif\n    endif\n\n    let css = '<style'\n    let csse = '</style>'\n    if   0 < searchpair(css, '', csse, 'nWb')\n    \\ && 0 < searchpair(css, '', csse, 'nW')\n        \" we're inside style\n        if getline(lnum) !~ css && getline(a:lnum) !~ csse\n            if restore_ic == 0\n              setlocal noic\n            endif\n            if s:cssindent == ''\n              return cindent(a:lnum)\n            else\n              execute 'let ind = ' . s:cssindent\n              return ind\n            endif\n        endif\n        if getline(a:lnum) =~ csse\n          return indent(searchpair(css, '', csse, 'nWb'))\n        endif\n    endif\n\n    if getline(lnum) =~ '\\c</pre>'\n        \" line before the current line a:lnum contains\n        \" a closing </pre>. --> search for line before\n        \" starting <pre> to restore the indent.\n        let preline = prevnonblank(search('\\c<pre>', 'bW') - 1)\n        if preline > 0\n            if restore_ic == 0\n              setlocal noic\n            endif\n\n            if 0 == match(getline(a:lnum), '^\\s*</')\n                return indent(preline) - (1*&sw)\n            else\n                return indent(preline)\n            endif\n        endif\n    endif\n\n    let ind = <SID>HtmlIndentSum(lnum, -1)\n    let ind = ind + <SID>HtmlIndentSum(a:lnum, 0)\n\n    \" Fix for conditional comment\n    if getline(a:lnum) =~ '\\c<!--.*<\\(html\\|body\\).*-->'\n        let ind = ind - 1\n    endif\n\n    let lind = indent(lnum)\n\n    \" for tags in s:omittable\n      \" let tags_exp = '<\\(' . join(tags, '\\|') . '\\)>'\n      \" let close_tags_exp = '</\\(' . join(tags, '\\|') . '\\)>'\n      \" if getline(a:lnum) =~ tags_exp\n        \" let block_start = search('^'.repeat(' ', lind + (&sw * ind - 1)).'\\S'  , 'bnW')\n        \" let prev_tag = search(tags_exp, 'bW', block_start)\n        \" let prev_closetag = search(close_tags_exp, 'W', a:lnum)\n        \" if prev_tag && !prev_closetag\n          \" let ind = ind - 1\n        \" endif\n      \" endif\n\n      \" if getline(a:lnum) =~ '</\\w\\+>'\n        \" let block_start = search('^'.repeat(' ', lind + (&sw * ind - 1)).'\\S'  , 'bnW')\n        \" let prev_tag = search(tags_exp, 'bW', block_start)\n        \" let prev_closetag = search(close_tags_exp, 'W', a:lnum)\n        \" if prev_tag && !prev_closetag\n          \" let ind = ind - 1\n        \" endif\n      \" endif\n    \" endfor\n\n    if restore_ic == 0\n        setlocal noic\n    endif\n\n    return lind + (&sw * ind)\nendfun\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" [-- EOF <runtime>/indent/html.vim --]\n"
  },
  {
    "path": ".vim/bundle/html5.vim/syntax/html/aria.vim",
    "content": "\" Vim syntax file\n\" Language:\t    WAI-ARIA\n\" Maintainer:\tothree <othree@gmail.com>\n\" URL:\t\t    http://github.com/othree/html5-syntax.vim\n\" Last Change:  2010-09-25\n\" License:      MIT\n\" Changes:      update to Draft 16 September 2010\n\nsetlocal iskeyword+=-\n\n\" WAI-ARIA States and Properties\n\" http://www.w3.org/TR/wai-aria/states_and_properties\nsyn keyword  htmlArg contained role\n\n\" Global States and Properties\nsyn keyword  htmlArg contained aria-atomic aria-busy aria-controls aria-describedby\nsyn keyword  htmlArg contained aria-disabled aria-dropeffect aria-flowto aria-grabbed\nsyn keyword  htmlArg contained aria-haspopup aria-hidden aria-invalid aria-label\nsyn keyword  htmlArg contained aria-labelledby aria-live aria-owns aria-relevant\n\n\" Widget Attributes\nsyn keyword  htmlArg contained aria-autocomplete aria-checked aria-disabled aria-expanded\nsyn keyword  htmlArg contained aria-haspopup aria-hidden aria-invalid aria-label\nsyn keyword  htmlArg contained aria-level aria-multiline aria-multiselectable aria-orientation\nsyn keyword  htmlArg contained aria-pressed aria-readonly aria-required aria-selected\nsyn keyword  htmlArg contained aria-sort aria-valuemax aria-valuemin aria-valuenow aria-valuetext\n\n\" Live Region Attributes\nsyn keyword  htmlArg contained aria-atomic aria-busy aria-live aria-relevant\n\n\" Drag-and-Drop attributes\nsyn keyword  htmlArg contained aria-dropeffect aria-grabbed\n\n\" Relationship Attributes\nsyn keyword  htmlArg contained aria-activedescendant aria-controls aria-describedby aria-flowto\nsyn keyword  htmlArg contained aria-labelledby aria-owns aria-posinset aria-setsize\n\n"
  },
  {
    "path": ".vim/bundle/html5.vim/syntax/html/rdfa.vim",
    "content": "\" Vim syntax file\n\" Language:     RDFa\n\" Maintainer:   othree <othree@gmail.com>\n\" URL:          http://github.com/othree/html5-syntax.vim\n\" Last Change:  2012-06-08\n\" License:      MIT\n\" Changes:      update to Rec 07 June 2012\n\n\" RDFa\n\" http://www.w3.org/TR/rdfa-syntax/#s_syntax\nsyn keyword htmlArg contained about content datatype href inlist prefix property rel resource rev src typeof vocab\n"
  },
  {
    "path": ".vim/bundle/html5.vim/syntax/html.vim",
    "content": "\" Vim syntax file\n\" Language:\tHTML (version 5)\n\" Maintainer:\tRodrigo Machado <rcmachado@gmail.com>\n\" URL:\t\thttp://rm.blog.br/vim/syntax/html.vim\n\" Last Change:  2009 Aug 19\n\" License:      Public domain\n\"               (but let me know if you like :) )\n\"\n\" Note: This file just adds the new tags from HTML 5\n\"       and don't replace default html.vim syntax file\n\"\n\" Modified:     othree <othree@gmail.com>\n\" Changes:      update to Draft 13 January 2011\n\"               add complete new attributes\n\"               add microdata Attributes\n\"               add bdi element\n\" Modified:     htdebeer <H.T.de.Beer@gmail.com>\n\" Changes:      add common SVG elements and attributes for inline SVG\n\n\" HTML 5 tags\nsyn keyword htmlTagName contained article aside audio canvas command\nsyn keyword htmlTagName contained datalist details dialog embed figcaption figure footer\nsyn keyword htmlTagName contained header hgroup keygen main mark meter menu nav output\nsyn keyword htmlTagName contained progress ruby rt rp section source summary time track video data\nsyn keyword htmlTagName contained template content shadow\nsyn keyword htmlTagName contained wbr bdi\n\n\" SVG tags\n\" http://www.w3.org/TR/SVG/\n\" as found in http://www.w3.org/TR/SVG/eltindex.html\nsyn keyword htmlTagName contained svg \nsyn keyword htmlTagName contained altGlyph altGlyphDef altGlyphItem \nsyn keyword htmlTagName contained animate animateColor animateMotion animateTransform \nsyn keyword htmlTagName contained circle ellipse rect line polyline polygon image path\nsyn keyword htmlTagName contained clipPath color-profile cursor \nsyn keyword htmlTagName contained defs desc g symbol view use switch foreignObject\nsyn keyword htmlTagName contained filter feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix feDiffuseLighting feDisplacementMap feDistantLight feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feImage feMerge feMergeNode feMorphology feOffset fePointLight feSpecularLighting feSpotLight feTile feTurbulence \nsyn keyword htmlTagName contained font font-face font-face-format font-face-name font-face-src font-face-uri \nsyn keyword htmlTagName contained glyph glyphRef hkern \nsyn keyword htmlTagName contained linearGradient marker mask pattern radialGradient set stop\nsyn keyword htmlTagName contained missing-glyph mpath \nsyn keyword htmlTagName contained text textPath tref tspan vkern\n\n\" Custom Element\nsyn match htmlTagName contained \"\\<[a-z_]\\+\\(\\-[a-z_]\\+\\)\\+\\>\"\n\n\" HTML 5 arguments\n\" Core Attributes\nsyn keyword htmlArg contained accesskey class contenteditable contextmenu dir \nsyn keyword htmlArg contained draggable hidden id is lang spellcheck style tabindex title translate\n\" Event-handler Attributes\nsyn keyword htmlArg contained onabort onblur oncanplay oncanplaythrough onchange\nsyn keyword htmlArg contained onclick oncontextmenu ondblclick ondrag ondragend ondragenter ondragleave ondragover \nsyn keyword htmlArg contained ondragstart ondrop ondurationchange onemptied onended onerror onfocus onformchange \nsyn keyword htmlArg contained onforminput oninput oninvalid onkeydown onkeypress onkeyup onload onloadeddata \nsyn keyword htmlArg contained onloadedmetadata onloadstart onmousedown onmousemove onmouseout onmouseover onmouseup\nsyn keyword htmlArg contained onmousewheel onpause onplay onplaying onprogress onratechange onreadystatechange \nsyn keyword htmlArg contained onscroll onseeked onseeking onselect onshow onstalled onsubmit onsuspend ontimeupdate \nsyn keyword htmlArg contained onvolumechange onwaiting\n\" XML Attributes\nsyn keyword htmlArg contained xml:lang xml:space xml:base xmlns\n\" new features\n\" <body>\nsyn keyword htmlArg contained onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload \nsyn keyword htmlArg contained onmessage onoffline ononline onpopstate onredo onresize onstorage onundo onunload\n\" <video>, <audio>, <source>, <track>\nsyn keyword htmlArg contained autoplay preload controls loop poster media kind charset srclang track\n\" <form>, <input>, <button>\nsyn keyword htmlArg contained form autocomplete autofocus list min max step\nsyn keyword htmlArg contained formaction autofocus formenctype formmethod formtarget formnovalidate\nsyn keyword htmlArg contained required placeholder\n\" <command>, <details>, <time>\nsyn keyword htmlArg contained label icon open datetime pubdate\n\" <script>\nsyn keyword htmlArg contained async\n\" <content>\nsyn keyword htmlArg contained select\n\n\" Custom Data Attributes\n\" http://dev.w3.org/html5/spec/elements.html#embedding-custom-non-visible-data\nsyn match   htmlArg \"\\<\\(data\\(\\-[a-z]\\+\\)\\+\\)\\=\\>\" contained\n\n\" Microdata\n\" http://dev.w3.org/html5/md/\nsyn keyword htmlArg contained itemid itemscope itemtype itemprop itemref\n\n\" SVG\n\" http://www.w3.org/TR/SVG/\n\" Some common attributes from http://www.w3.org/TR/SVG/attindex.html\nsyn keyword htmlArg contained accent-height accumulate additive alphabetic amplitude arabic-form ascent attributeName attributeType azimuth \nsyn keyword htmlArg contained baseFrequency baseProfile bbox begin bias by \nsyn keyword htmlArg contained calcMode cap-height class clipPathUnits contentScriptType contentStyleType cx cy \nsyn keyword htmlArg contained d descent diffuseConstant divisor dur dx dy \nsyn keyword htmlArg contained edgeMode elevation end exponent externalResourcesRequired \nsyn keyword htmlArg contained fill filterRes filterUnits font-family font-size font-stretch font-style font-variant font-weight format format from fx fy \nsyn keyword htmlArg contained g1 g2 glyph-name glyphRef gradientTransform gradientUnits \nsyn keyword htmlArg contained hanging height horiz-adv-x horiz-origin-y \nsyn keyword htmlArg contained id ideographic in in2 intercept \nsyn keyword htmlArg contained k k1 k2 k3 k4 kernelMatrix kernelUnitLength keyPoints keySplines keyTimes \nsyn keyword htmlArg contained lang lengthAdjust limitingConeAngle local \nsyn keyword htmlArg contained markerHeight markerUnits markerWidth maskContentUnits maskUnits mathematical max media method min mode name \nsyn keyword htmlArg contained numOctaves \nsyn keyword htmlArg contained offset offset onabort onactivate onbegin onclick onend onerror onfocusin onfocusout onload onload onmousedown onmousemove onmouseout onmouseover onmouseup onrepeat onresize onscroll onunload onzoom operator order orient orientation origin overline-position overline-thickness \nsyn keyword htmlArg contained panose-1 path pathLength patternContentUnits patternTransform patternUnits points pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits \nsyn keyword htmlArg contained r radius refX refY rendering-intent repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate rx ry \nsyn keyword htmlArg contained scale seed slope spacing specularConstant specularExponent spreadMethod startOffset stdDeviation stemh stemv stitchTiles strikethrough-position strikethrough-thickness string surfaceScale systemLanguage \nsyn keyword htmlArg contained tableValues target targetX targetY textLength title to transform type u\nsyn keyword htmlArg contained 1 u2 underline-position underline-thickness unicode unicode-range units-per-em \nsyn keyword htmlArg contained v-alphabetic v-hanging v-ideographic v-mathematical values version vert-adv-y vert-origin-x vert-origin-y viewBox viewTarget \nsyn keyword htmlArg contained width widths \nsyn keyword htmlArg contained x x-height x1 x2 xChannelSelector xlink:actuate xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:show xlink:title xlink:type xml:base xml:lang xml:space \nsyn keyword htmlArg contained y y1 y2 yChannelSelector \nsyn keyword htmlArg contained z zoomAndPan \nsyn keyword htmlArg contained alignment-baseline baseline-shift clip-path clip-rule clip color-interpolation-filters color-interpolation color-profile color-rendering color cursor direction display dominant-baseline enable-background fill-opacity fill-rule fill filter flood-color flood-opacity font-family font-size-adjust font-size font-stretch font-style font-variant font-weight glyph-orientation-horizontal glyph-orientation-vertical image-rendering kerning letter-spacing lighting-color marker-end marker-mid marker-start mask opacity overflow pointer-events shape-rendering stop-color stop-opacity stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width stroke text-anchor text-decoration text-rendering unicode-bidi visibility word-spacing writing-mode\n"
  },
  {
    "path": ".vim/bundle/html5.vim/syntax/javascript/html5.vim",
    "content": "\" Vim syntax file\n\" Language:\t    HTML5 New Stuff\n\" Maintainer:\tothree <othree@gmail.com>\n\" URL:\t\t    http://github.com/othree/html5-syntax.vim\n\" Last Change:  2011-05-27\n\" License:      MIT\n\" Changes:      \n\nsyn keyword javascriptHtmlEvents onabort onblur oncanplay oncanplaythrough onchange \nsyn keyword javascriptHtmlEvents onclick oncontextmenu ondblclick ondrag ondragend ondragenter ondragleave ondragover \nsyn keyword javascriptHtmlEvents ondragstart ondrop ondurationchange onemptied onended onerror onfocus onformchange \nsyn keyword javascriptHtmlEvents onforminput oninput oninvalid onkeydown onkeypress onkeyup onload onloadeddata \nsyn keyword javascriptHtmlEvents onloadedmetadata onloadstart onmousedown onmousemove onmouseout onmouseover onmouseup\nsyn keyword javascriptHtmlEvents onmousewheel onpause onplay onplaying onprogress onratechange onreadystatechange \nsyn keyword javascriptHtmlEvents onscroll onseeked onseeking onselect onshow onstalled onsubmit onsuspend ontimeupdate \nsyn keyword javascriptHtmlEvents onvolumechange onwaiting\n\n\" <body>\nsyn keyword javascriptHtmlEvents onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload \nsyn keyword javascriptHtmlEvents onmessage onoffline ononline onpopstate onredo onresize onstorage onundo onunload\n\n\" Media Controller\nsyn keyword javascriptDomElemAttrs buffered seekable duration currentTime paused\nsyn keyword javascriptDomElemAttrs played defaultPlaybackRate playbackRate volume muted\nsyn keyword javascriptDomElemAttrs mediaGroup\nsyn keyword javascriptDomElemFuncs load play pause \n\nsyn keyword javascriptHtmlEvents oncanplay oncanplaythrough ondurationchange onemptied \nsyn keyword javascriptHtmlEvents onloadeddata onloadedmetadata onloadstart onpause onplay onplaying onratechange \nsyn keyword javascriptHtmlEvents ontimeupdate onvolumechange onwaiting\n\n\" <audio>/<video>\nsyn keyword javascriptDomElemAttrs error src currentSrc networkState preload buffered readyState seeking \nsyn keyword javascriptDomElemAttrs currentTime initialTime duration startOffsetTime paused defaultPlaybackRate playbackRate played\nsyn keyword javascriptDomElemAttrs seekable ended autoplay loop controls volume muted defaltMuted audioTracks videoTracks textTracks\nsyn keyword javascriptDomElemFuncs load addTextTrack\n\n\" <video>\n\" syn keyword javascriptDomElemAttrs width height\nsyn keyword javascriptDomElemAttrs videoWidth videoHeight poster\n\n\" drag and drop\nsyn keyword javascriptDomElemAttrs onDragStart onDragEnd onDragEnter onDragLeave onDragOver onDrag onDrop draggable dropzone\n"
  },
  {
    "path": ".vim/bundle/nerdtree/README.markdown",
    "content": "The NERD Tree\n=============\n\nIntro\n-----\n\nThe NERD tree allows you to explore your filesystem and to open files and\ndirectories. It presents the filesystem to you in the form of a tree which you\nmanipulate with the keyboard and/or mouse. It also allows you to perform\nsimple filesystem operations.\n\nThe following features and functionality are provided by the NERD tree:\n\n  * Files and directories are displayed in a hierarchical tree structure\n  * Different highlighting is provided for the following types of nodes:\n    * files\n    * directories\n    * sym-links\n    * windows .lnk files\n    * read-only files\n    * executable files\n  * Many (customisable) mappings are provided to manipulate the tree:\n    * Mappings to open/close/explore directory nodes\n    * Mappings to open files in new/existing windows/tabs\n    * Mappings to change the current root of the tree\n    * Mappings to navigate around the tree\n    * ...\n  * Directories and files can be bookmarked.\n  * Most NERD tree navigation can also be done with the mouse\n  * Filtering of tree content (can be toggled at runtime)\n    * custom file filters to prevent e.g. vim backup files being displayed\n    * optional displaying of hidden files (. files)\n    * files can be \"turned off\" so that only directories are displayed\n  * The position and size of the NERD tree window can be customised\n  * The order in which the nodes in the tree are listed can be customised.\n  * A model of your filesystem is created/maintained as you explore it. This\n    has several advantages:\n    * All filesystem information is cached and is only re-read on demand\n    * If you revisit a part of the tree that you left earlier in your\n      session, the directory nodes will be opened/closed as you left them\n  * The script remembers the cursor position and window position in the NERD\n    tree so you can toggle it off (or just close the tree window) and then\n    reopen it (with NERDTreeToggle) the NERD tree window will appear exactly\n    as you left it\n  * You can have a separate NERD tree for each tab, share trees across tabs,\n    or a mix of both.\n  * By default the script overrides the default file browser (netrw), so if\n    you :edit a directory a (slightly modified) NERD tree will appear in the\n    current window\n  * A programmable menu system is provided (simulates right clicking on a node)\n    * one default menu plugin is provided to perform basic filesystem\n      operations (create/delete/move/copy files/directories)\n  * There's an API for adding your own keymappings\n\nInstallation\n------------\n\n[pathogen.vim](https://github.com/tpope/vim-pathogen) is the recommended way to install nerdtree.\n\n    cd ~/.vim/bundle\n    git clone https://github.com/scrooloose/nerdtree.git\n\nThen reload vim, run `:helptags`, and check out `:help NERD_tree.txt`.\n\n\nFaq\n---\n\n__Q. Can I have the nerdtree on every tab automatically?__\n\nA. Nope. If this is something you want then chances are you aren't using tabs\n   and buffers as they were intended to be used. Read this\n   http://stackoverflow.com/questions/102384/using-vims-tabs-like-buffers\n\n   If you are interested in this behaviour then consider [vim-nerdtree-tabs](https://github.com/jistr/vim-nerdtree-tabs)\n\n__Q. How can I open a NERDTree automatically when vim starts up?__\n\nA. Stick this in your vimrc: `autocmd vimenter * NERDTree`\n\n__Q. How can I open a NERDTree automatically when vim starts up if no files were specified?__\n\nA. Stick this in your vimrc `autocmd vimenter * if !argc() | NERDTree | endif`\n\n__Q. How can I map a specific key or shortcut to open NERDTree?__\n\nA. Stick this in your vimrc to open NERDTree with `Ctrl+n` (you can set whatever key you want): `map <C-n> :NERDTreeToggle<CR>`\n\n__Q. How can I close vim if the only window left open is a NERDTree?__\n\nA. Stick this in your vimrc:\n\n   `autocmd bufenter * if (winnr(\"$\") == 1 && exists(\"b:NERDTreeType\") && b:NERDTreeType == \"primary\") | q | endif`\n\n\nChangelog\n---------\n\n4.2.0 (2011-12-28)\n\n * Add NERDTreeDirArrows option to make the UI use pretty arrow chars instead of the old +~| chars to define the tree structure (sickill)\n * shift the syntax highlighting out into its own syntax file (gnap) * add some mac specific options to the filesystem menu - for macvim only (andersonfreitas)\n * Add NERDTreeMinimalUI option to remove some non functional parts of the nerdtree ui (camthompson)\n * tweak the behaviour of :NERDTreeFind - see :help :NERDTreeFind for the new behaviour (benjamingeiger)\n * if no name is given to :Bookmark, make it default to the name of the target file/dir (minyoung)\n * use 'file' completion when doing copying, create, and move operations (EvanDotPro)\n * lots of misc bug fixes (paddyoloughlin, sdewald, camthompson, Vitaly Bogdanov, AndrewRadev, mathias, scottstvnsn, kml, wycats, me RAWR!)\n\n"
  },
  {
    "path": ".vim/bundle/nerdtree/autoload/nerdtree.vim",
    "content": "if exists(\"g:loaded_nerdtree_autoload\")\n    finish\nendif\nlet g:loaded_nerdtree_autoload = 1\n\nfunction! nerdtree#version()\n    return '4.2.0'\nendfunction\n\n\" SECTION: General Functions {{{1\n\"============================================================\n\"FUNCTION: nerdtree#bufInWindows(bnum){{{2\n\"[[STOLEN FROM VTREEEXPLORER.VIM]]\n\"Determine the number of windows open to this buffer number.\n\"Care of Yegappan Lakshman.  Thanks!\n\"\n\"Args:\n\"bnum: the subject buffers buffer number\nfunction! nerdtree#bufInWindows(bnum)\n    let cnt = 0\n    let winnum = 1\n    while 1\n        let bufnum = winbufnr(winnum)\n        if bufnum < 0\n            break\n        endif\n        if bufnum ==# a:bnum\n            let cnt = cnt + 1\n        endif\n        let winnum = winnum + 1\n    endwhile\n\n    return cnt\nendfunction\n\n\"FUNCTION: nerdtree#checkForBrowse(dir) {{{2\n\"inits a secondary nerd tree in the current buffer if appropriate\nfunction! nerdtree#checkForBrowse(dir)\n    if a:dir != '' && isdirectory(a:dir)\n        call g:NERDTreeCreator.CreateSecondary(a:dir)\n    endif\nendfunction\n\n\" FUNCTION: nerdtree#completeBookmarks(A,L,P) {{{2\n\" completion function for the bookmark commands\nfunction! nerdtree#completeBookmarks(A,L,P)\n    return filter(g:NERDTreeBookmark.BookmarkNames(), 'v:val =~# \"^' . a:A . '\"')\nendfunction\n\n\"FUNCTION: nerdtree#compareBookmarks(dir) {{{2\nfunction! nerdtree#compareBookmarks(first, second)\n    return a:first.compareTo(a:second)\nendfunction\n\n\"FUNCTION: nerdtree#compareNodes(dir) {{{2\nfunction! nerdtree#compareNodes(n1, n2)\n    return a:n1.path.compareTo(a:n2.path)\nendfunction\n\n\" FUNCTION: nerdtree#createDefaultBindings() {{{2\nfunction! nerdtree#createDefaultBindings()\n    let s = '<SNR>' . s:SID() . '_'\n\n    call NERDTreeAddKeyMap({ 'key': '<MiddleRelease>', 'scope': \"all\", 'callback': s.\"handleMiddleMouse\" })\n    call NERDTreeAddKeyMap({ 'key': '<LeftRelease>', 'scope': \"all\", 'callback': s.\"handleLeftClick\" })\n    call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': \"DirNode\", 'callback': s.\"activateDirNode\" })\n    call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': \"FileNode\", 'callback': s.\"activateFileNode\" })\n    call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': \"Bookmark\", 'callback': s.\"activateBookmark\" })\n    call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': \"all\", 'callback': s.\"activateAll\" })\n\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapActivateNode, 'scope': \"DirNode\", 'callback': s.\"activateDirNode\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapActivateNode, 'scope': \"FileNode\", 'callback': s.\"activateFileNode\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapActivateNode, 'scope': \"Bookmark\", 'callback': s.\"activateBookmark\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapActivateNode, 'scope': \"all\", 'callback': s.\"activateAll\" })\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenSplit, 'scope': \"Node\", 'callback': s.\"openHSplit\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenVSplit, 'scope': \"Node\", 'callback': s.\"openVSplit\" })\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenSplit, 'scope': \"Bookmark\", 'callback': s.\"openHSplit\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenVSplit, 'scope': \"Bookmark\", 'callback': s.\"openVSplit\" })\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreview, 'scope': \"Node\", 'callback': s.\"previewNodeCurrent\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreviewVSplit, 'scope': \"Node\", 'callback': s.\"previewNodeVSplit\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreviewSplit, 'scope': \"Node\", 'callback': s.\"previewNodeHSplit\" })\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreview, 'scope': \"Bookmark\", 'callback': s.\"previewNodeCurrent\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreviewVSplit, 'scope': \"Bookmark\", 'callback': s.\"previewNodeVSplit\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapPreviewSplit, 'scope': \"Bookmark\", 'callback': s.\"previewNodeHSplit\" })\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenRecursively, 'scope': \"DirNode\", 'callback': s.\"openNodeRecursively\" })\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapUpdir, 'scope': \"all\", 'callback': s.\"upDirCurrentRootClosed\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapUpdirKeepOpen, 'scope': \"all\", 'callback': s.\"upDirCurrentRootOpen\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapChangeRoot, 'scope': \"Node\", 'callback': s.\"chRoot\" })\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapChdir, 'scope': \"Node\", 'callback': s.\"chCwd\" })\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapQuit, 'scope': \"all\", 'callback': s.\"closeTreeWindow\" })\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapCWD, 'scope': \"all\", 'callback': \"nerdtree#chRootCwd\" })\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapRefreshRoot, 'scope': \"all\", 'callback': s.\"refreshRoot\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapRefresh, 'scope': \"Node\", 'callback': s.\"refreshCurrent\" })\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapHelp, 'scope': \"all\", 'callback': s.\"displayHelp\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapToggleZoom, 'scope': \"all\", 'callback': s.\"toggleZoom\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapToggleHidden, 'scope': \"all\", 'callback': s.\"toggleShowHidden\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapToggleFilters, 'scope': \"all\", 'callback': s.\"toggleIgnoreFilter\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapToggleFiles, 'scope': \"all\", 'callback': s.\"toggleShowFiles\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapToggleBookmarks, 'scope': \"all\", 'callback': s.\"toggleShowBookmarks\" })\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapCloseDir, 'scope': \"Node\", 'callback': s.\"closeCurrentDir\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapCloseChildren, 'scope': \"DirNode\", 'callback': s.\"closeChildren\" })\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapMenu, 'scope': \"Node\", 'callback': s.\"showMenu\" })\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapJumpParent, 'scope': \"Node\", 'callback': s.\"jumpToParent\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapJumpFirstChild, 'scope': \"Node\", 'callback': s.\"jumpToFirstChild\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapJumpLastChild, 'scope': \"Node\", 'callback': s.\"jumpToLastChild\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapJumpRoot, 'scope': \"all\", 'callback': s.\"jumpToRoot\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapJumpNextSibling, 'scope': \"Node\", 'callback': s.\"jumpToNextSibling\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapJumpPrevSibling, 'scope': \"Node\", 'callback': s.\"jumpToPrevSibling\" })\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenInTab, 'scope': \"Node\", 'callback': s.\"openInNewTab\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenInTabSilent, 'scope': \"Node\", 'callback': s.\"openInNewTabSilent\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenInTab, 'scope': \"Bookmark\", 'callback': s.\"openInNewTab\" })\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenInTabSilent, 'scope': \"Bookmark\", 'callback': s.\"openInNewTabSilent\" })\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapOpenExpl, 'scope': \"DirNode\", 'callback': s.\"openExplorer\" })\n\n    call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapDeleteBookmark, 'scope': \"Bookmark\", 'callback': s.\"deleteBookmark\" })\nendfunction\n\n\" FUNCTION: nerdtree#deprecated(func, [msg]) {{{2\n\" Issue a deprecation warning for a:func. If a second arg is given, use this\n\" as the deprecation message\nfunction! nerdtree#deprecated(func, ...)\n    let msg = a:0 ? a:func . ' ' . a:1 : a:func . ' is deprecated'\n\n    if !exists('s:deprecationWarnings')\n        let s:deprecationWarnings = {}\n    endif\n    if !has_key(s:deprecationWarnings, a:func)\n        let s:deprecationWarnings[a:func] = 1\n        echomsg msg\n    endif\nendfunction\n\n\"FUNCTION: nerdtree#escChars(dir) {{{2\nfunction! nerdtree#escChars()\n    if nerdtree#runningWindows()\n        return \" `\\|\\\"#%&,?()\\*^<>\"\n    endif\n\n    return \" \\\\`\\|\\\"#%&,?()\\*^<>[]\"\nendfunction\n\n\" FUNCTION: nerdtree#exec(cmd) {{{2\n\" same as :exec cmd  but eventignore=all is set for the duration\nfunction! nerdtree#exec(cmd)\n    let old_ei = &ei\n    set ei=all\n    exec a:cmd\n    let &ei = old_ei\nendfunction\n\n\" FUNCTION: nerdtree#findAndRevealPath() {{{2\nfunction! nerdtree#findAndRevealPath()\n    try\n        let p = g:NERDTreePath.New(expand(\"%:p\"))\n    catch /^NERDTree.InvalidArgumentsError/\n        call nerdtree#echo(\"no file for the current buffer\")\n        return\n    endtry\n\n    if p.isUnixHiddenPath()\n        let showhidden=g:NERDTreeShowHidden\n        let g:NERDTreeShowHidden = 1\n    endif\n\n    if !nerdtree#treeExistsForTab()\n        try\n            let cwd = g:NERDTreePath.New(getcwd())\n        catch /^NERDTree.InvalidArgumentsError/\n            call nerdtree#echo(\"current directory does not exist.\")\n            let cwd = p.getParent()\n        endtry\n\n        if p.isUnder(cwd)\n            call g:NERDTreeCreator.CreatePrimary(cwd.str())\n        else\n            call g:NERDTreeCreator.CreatePrimary(p.getParent().str())\n        endif\n    else\n        if !p.isUnder(g:NERDTreeFileNode.GetRootForTab().path)\n            if !nerdtree#isTreeOpen()\n                call g:NERDTreeCreator.TogglePrimary('')\n            else\n                call nerdtree#putCursorInTreeWin()\n            endif\n            let b:NERDTreeShowHidden = g:NERDTreeShowHidden\n            call nerdtree#chRoot(g:NERDTreeDirNode.New(p.getParent()))\n        else\n            if !nerdtree#isTreeOpen()\n                call g:NERDTreeCreator.TogglePrimary(\"\")\n            endif\n        endif\n    endif\n    call nerdtree#putCursorInTreeWin()\n    call b:NERDTreeRoot.reveal(p)\n\n    if p.isUnixHiddenFile()\n        let g:NERDTreeShowHidden = showhidden\n    endif\nendfunction\n\n\" FUNCTION: nerdtree#has_opt(options, name) {{{2\nfunction! nerdtree#has_opt(options, name)\n    return has_key(a:options, a:name) && a:options[a:name] == 1\nendfunction\n\n\" FUNCTION: nerdtree#invokeKeyMap(key) {{{2\n\"this is needed since I cant figure out how to invoke dict functions from a\n\"key map\nfunction! nerdtree#invokeKeyMap(key)\n    call g:NERDTreeKeyMap.Invoke(a:key)\nendfunction\n\n\" FUNCTION: nerdtree#loadClassFiles() {{{2\nfunction! nerdtree#loadClassFiles()\n    runtime lib/nerdtree/path.vim\n    runtime lib/nerdtree/menu_controller.vim\n    runtime lib/nerdtree/menu_item.vim\n    runtime lib/nerdtree/key_map.vim\n    runtime lib/nerdtree/bookmark.vim\n    runtime lib/nerdtree/tree_file_node.vim\n    runtime lib/nerdtree/tree_dir_node.vim\n    runtime lib/nerdtree/opener.vim\n    runtime lib/nerdtree/creator.vim\nendfunction\n\n\" FUNCTION: nerdtree#postSourceActions() {{{2\nfunction! nerdtree#postSourceActions()\n    call g:NERDTreeBookmark.CacheBookmarks(0)\n    call nerdtree#createDefaultBindings()\n\n    \"load all nerdtree plugins\n    runtime! nerdtree_plugin/**/*.vim\nendfunction\n\n\"FUNCTION: nerdtree#runningWindows(dir) {{{2\nfunction! nerdtree#runningWindows()\n    return has(\"win16\") || has(\"win32\") || has(\"win64\")\nendfunction\n\n\" Function: s:SID()   {{{2\nfunction s:SID()\n    if !exists(\"s:sid\")\n        let s:sid = matchstr(expand('<sfile>'), '<SNR>\\zs\\d\\+\\ze_SID$')\n    endif\n    return s:sid\nendfun\n\n\" FUNCTION: nerdtree#tabpagevar(tabnr, var) {{{2\nfunction! nerdtree#tabpagevar(tabnr, var)\n    let currentTab = tabpagenr()\n    let old_ei = &ei\n    set ei=all\n\n    exec \"tabnext \" . a:tabnr\n    let v = -1\n    if exists('t:' . a:var)\n        exec 'let v = t:' . a:var\n    endif\n    exec \"tabnext \" . currentTab\n\n    let &ei = old_ei\n\n    return v\nendfunction\n\n\" Function: nerdtree#treeExistsForBuffer()   {{{2\n\" Returns 1 if a nerd tree root exists in the current buffer\nfunction! nerdtree#treeExistsForBuf()\n    return exists(\"b:NERDTreeRoot\")\nendfunction\n\n\" Function: nerdtree#treeExistsForTab()   {{{2\n\" Returns 1 if a nerd tree root exists in the current tab\nfunction! nerdtree#treeExistsForTab()\n    return exists(\"t:NERDTreeBufName\")\nendfunction\n\n\"FUNCTION: nerdtree#treeMarkupReg(dir) {{{2\nfunction! nerdtree#treeMarkupReg()\n    if g:NERDTreeDirArrows\n        return '^\\([▾▸] \\| \\+[▾▸] \\| \\+\\)'\n    endif\n\n    return '^[ `|]*[\\-+~]'\nendfunction\n\n\"FUNCTION: nerdtree#treeUpDirLine(dir) {{{2\nfunction! nerdtree#treeUpDirLine()\n    return '.. (up a dir)'\nendfunction\n\n\"FUNCTION: nerdtree#treeWid(dir) {{{2\nfunction! nerdtree#treeWid()\n    return 2\nendfunction\n\n\"FUNCTION: nerdtree#upDir(keepState) {{{2\n\"moves the tree up a level\n\"\n\"Args:\n\"keepState: 1 if the current root should be left open when the tree is\n\"re-rendered\nfunction! nerdtree#upDir(keepState)\n    let cwd = b:NERDTreeRoot.path.str({'format': 'UI'})\n    if cwd ==# \"/\" || cwd =~# '^[^/]..$'\n        call nerdtree#echo(\"already at top dir\")\n    else\n        if !a:keepState\n            call b:NERDTreeRoot.close()\n        endif\n\n        let oldRoot = b:NERDTreeRoot\n\n        if empty(b:NERDTreeRoot.parent)\n            let path = b:NERDTreeRoot.path.getParent()\n            let newRoot = g:NERDTreeDirNode.New(path)\n            call newRoot.open()\n            call newRoot.transplantChild(b:NERDTreeRoot)\n            let b:NERDTreeRoot = newRoot\n        else\n            let b:NERDTreeRoot = b:NERDTreeRoot.parent\n        endif\n\n        if g:NERDTreeChDirMode ==# 2\n            call b:NERDTreeRoot.path.changeToDir()\n        endif\n\n        call nerdtree#renderView()\n        call oldRoot.putCursorHere(0, 0)\n    endif\nendfunction\n\n\" Function: nerdtree#unique(list)   {{{2\n\" returns a:list without duplicates\nfunction! nerdtree#unique(list)\n  let uniqlist = []\n  for elem in a:list\n    if index(uniqlist, elem) ==# -1\n      let uniqlist += [elem]\n    endif\n  endfor\n  return uniqlist\nendfunction\n\n\" SECTION: View Functions {{{1\n\"============================================================\n\"\n\"FUNCTION: nerdtree#centerView() {{{2\n\"centers the nerd tree window around the cursor (provided the nerd tree\n\"options permit)\nfunction! nerdtree#centerView()\n    if g:NERDTreeAutoCenter\n        let current_line = winline()\n        let lines_to_top = current_line\n        let lines_to_bottom = winheight(nerdtree#getTreeWinNum()) - current_line\n        if lines_to_top < g:NERDTreeAutoCenterThreshold || lines_to_bottom < g:NERDTreeAutoCenterThreshold\n            normal! zz\n        endif\n    endif\nendfunction\n\n\" FUNCTION: nerdtree#chRoot(node) {{{2\n\" changes the current root to the selected one\nfunction! nerdtree#chRoot(node)\n    call s:chRoot(a:node)\nendfunction\n\"FUNCTION: nerdtree#closeTree() {{{2\n\"Closes the primary NERD tree window for this tab\nfunction! nerdtree#closeTree()\n    if !nerdtree#isTreeOpen()\n        throw \"NERDTree.NoTreeFoundError: no NERDTree is open\"\n    endif\n\n    if winnr(\"$\") != 1\n        if winnr() == nerdtree#getTreeWinNum()\n            call nerdtree#exec(\"wincmd p\")\n            let bufnr = bufnr(\"\")\n            call nerdtree#exec(\"wincmd p\")\n        else\n            let bufnr = bufnr(\"\")\n        endif\n\n        call nerdtree#exec(nerdtree#getTreeWinNum() . \" wincmd w\")\n        close\n        call nerdtree#exec(bufwinnr(bufnr) . \" wincmd w\")\n    else\n        close\n    endif\nendfunction\n\n\"FUNCTION: nerdtree#closeTreeIfOpen() {{{2\n\"Closes the NERD tree window if it is open\nfunction! nerdtree#closeTreeIfOpen()\n   if nerdtree#isTreeOpen()\n      call nerdtree#closeTree()\n   endif\nendfunction\n\n\"FUNCTION: nerdtree#closeTreeIfQuitOnOpen() {{{2\n\"Closes the NERD tree window if the close on open option is set\nfunction! nerdtree#closeTreeIfQuitOnOpen()\n    if g:NERDTreeQuitOnOpen && nerdtree#isTreeOpen()\n        call nerdtree#closeTree()\n    endif\nendfunction\n\n\"FUNCTION: nerdtree#dumpHelp  {{{2\n\"prints out the quick help\nfunction! nerdtree#dumpHelp()\n    let old_h = @h\n    if b:treeShowHelp ==# 1\n        let @h=   \"\\\" NERD tree (\" . nerdtree#version() . \") quickhelp~\\n\"\n        let @h=@h.\"\\\" ============================\\n\"\n        let @h=@h.\"\\\" File node mappings~\\n\"\n        let @h=@h.\"\\\" \". (g:NERDTreeMouseMode ==# 3 ? \"single\" : \"double\") .\"-click,\\n\"\n        let @h=@h.\"\\\" <CR>,\\n\"\n        if b:NERDTreeType ==# \"primary\"\n            let @h=@h.\"\\\" \". g:NERDTreeMapActivateNode .\": open in prev window\\n\"\n        else\n            let @h=@h.\"\\\" \". g:NERDTreeMapActivateNode .\": open in current window\\n\"\n        endif\n        if b:NERDTreeType ==# \"primary\"\n            let @h=@h.\"\\\" \". g:NERDTreeMapPreview .\": preview\\n\"\n        endif\n        let @h=@h.\"\\\" \". g:NERDTreeMapOpenInTab.\": open in new tab\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapOpenInTabSilent .\": open in new tab silently\\n\"\n        let @h=@h.\"\\\" middle-click,\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapOpenSplit .\": open split\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapPreviewSplit .\": preview split\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapOpenVSplit .\": open vsplit\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapPreviewVSplit .\": preview vsplit\\n\"\n\n        let @h=@h.\"\\\"\\n\\\" ----------------------------\\n\"\n        let @h=@h.\"\\\" Directory node mappings~\\n\"\n        let @h=@h.\"\\\" \". (g:NERDTreeMouseMode ==# 1 ? \"double\" : \"single\") .\"-click,\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapActivateNode .\": open & close node\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapOpenRecursively .\": recursively open node\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapCloseDir .\": close parent of node\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapCloseChildren .\": close all child nodes of\\n\"\n        let @h=@h.\"\\\"    current node recursively\\n\"\n        let @h=@h.\"\\\" middle-click,\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapOpenExpl.\": explore selected dir\\n\"\n\n        let @h=@h.\"\\\"\\n\\\" ----------------------------\\n\"\n        let @h=@h.\"\\\" Bookmark table mappings~\\n\"\n        let @h=@h.\"\\\" double-click,\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapActivateNode .\": open bookmark\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapOpenInTab.\": open in new tab\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapOpenInTabSilent .\": open in new tab silently\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapDeleteBookmark .\": delete bookmark\\n\"\n\n        let @h=@h.\"\\\"\\n\\\" ----------------------------\\n\"\n        let @h=@h.\"\\\" Tree navigation mappings~\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapJumpRoot .\": go to root\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapJumpParent .\": go to parent\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapJumpFirstChild  .\": go to first child\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapJumpLastChild   .\": go to last child\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapJumpNextSibling .\": go to next sibling\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapJumpPrevSibling .\": go to prev sibling\\n\"\n\n        let @h=@h.\"\\\"\\n\\\" ----------------------------\\n\"\n        let @h=@h.\"\\\" Filesystem mappings~\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapChangeRoot .\": change tree root to the\\n\"\n        let @h=@h.\"\\\"    selected dir\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapUpdir .\": move tree root up a dir\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapUpdirKeepOpen .\": move tree root up a dir\\n\"\n        let @h=@h.\"\\\"    but leave old root open\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapRefresh .\": refresh cursor dir\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapRefreshRoot .\": refresh current root\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapMenu .\": Show menu\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapChdir .\":change the CWD to the\\n\"\n        let @h=@h.\"\\\"    selected dir\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapCWD .\":change tree root to CWD\\n\"\n\n        let @h=@h.\"\\\"\\n\\\" ----------------------------\\n\"\n        let @h=@h.\"\\\" Tree filtering mappings~\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapToggleHidden .\": hidden files (\" . (b:NERDTreeShowHidden ? \"on\" : \"off\") . \")\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapToggleFilters .\": file filters (\" . (b:NERDTreeIgnoreEnabled ? \"on\" : \"off\") . \")\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapToggleFiles .\": files (\" . (b:NERDTreeShowFiles ? \"on\" : \"off\") . \")\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapToggleBookmarks .\": bookmarks (\" . (b:NERDTreeShowBookmarks ? \"on\" : \"off\") . \")\\n\"\n\n        \"add quickhelp entries for each custom key map\n        let @h=@h.\"\\\"\\n\\\" ----------------------------\\n\"\n        let @h=@h.\"\\\" Custom mappings~\\n\"\n        for i in g:NERDTreeKeyMap.All()\n            if !empty(i.quickhelpText)\n                let @h=@h.\"\\\" \". i.key .\": \". i.quickhelpText .\"\\n\"\n            endif\n        endfor\n\n        let @h=@h.\"\\\"\\n\\\" ----------------------------\\n\"\n        let @h=@h.\"\\\" Other mappings~\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapQuit .\": Close the NERDTree window\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapToggleZoom .\": Zoom (maximize-minimize)\\n\"\n        let @h=@h.\"\\\"    the NERDTree window\\n\"\n        let @h=@h.\"\\\" \". g:NERDTreeMapHelp .\": toggle help\\n\"\n        let @h=@h.\"\\\"\\n\\\" ----------------------------\\n\"\n        let @h=@h.\"\\\" Bookmark commands~\\n\"\n        let @h=@h.\"\\\" :Bookmark <name>\\n\"\n        let @h=@h.\"\\\" :BookmarkToRoot <name>\\n\"\n        let @h=@h.\"\\\" :RevealBookmark <name>\\n\"\n        let @h=@h.\"\\\" :OpenBookmark <name>\\n\"\n        let @h=@h.\"\\\" :ClearBookmarks [<names>]\\n\"\n        let @h=@h.\"\\\" :ClearAllBookmarks\\n\"\n        silent! put h\n    elseif g:NERDTreeMinimalUI == 0\n        let @h=\"\\\" Press \". g:NERDTreeMapHelp .\" for help\\n\"\n        silent! put h\n    endif\n\n    let @h = old_h\nendfunction\n\n\"FUNCTION: nerdtree#echo  {{{2\n\"A wrapper for :echo. Appends 'NERDTree:' on the front of all messages\n\"\n\"Args:\n\"msg: the message to echo\nfunction! nerdtree#echo(msg)\n    redraw\n    echomsg \"NERDTree: \" . a:msg\nendfunction\n\n\"FUNCTION: nerdtree#echoError {{{2\n\"Wrapper for nerdtree#echo, sets the message type to errormsg for this message\n\"Args:\n\"msg: the message to echo\nfunction! nerdtree#echoError(msg)\n    echohl errormsg\n    call nerdtree#echo(a:msg)\n    echohl normal\nendfunction\n\n\"FUNCTION: nerdtree#echoWarning {{{2\n\"Wrapper for nerdtree#echo, sets the message type to warningmsg for this message\n\"Args:\n\"msg: the message to echo\nfunction! nerdtree#echoWarning(msg)\n    echohl warningmsg\n    call nerdtree#echo(a:msg)\n    echohl normal\nendfunction\n\n\"FUNCTION: nerdtree#firstUsableWindow(){{{2\n\"find the window number of the first normal window\nfunction! nerdtree#firstUsableWindow()\n    let i = 1\n    while i <= winnr(\"$\")\n        let bnum = winbufnr(i)\n        if bnum != -1 && getbufvar(bnum, '&buftype') ==# ''\n                    \\ && !getwinvar(i, '&previewwindow')\n                    \\ && (!getbufvar(bnum, '&modified') || &hidden)\n            return i\n        endif\n\n        let i += 1\n    endwhile\n    return -1\nendfunction\n\n\"FUNCTION: nerdtree#getPath(ln) {{{2\n\"Gets the full path to the node that is rendered on the given line number\n\"\n\"Args:\n\"ln: the line number to get the path for\n\"\n\"Return:\n\"A path if a node was selected, {} if nothing is selected.\n\"If the 'up a dir' line was selected then the path to the parent of the\n\"current root is returned\nfunction! nerdtree#getPath(ln)\n    let line = getline(a:ln)\n\n    let rootLine = g:NERDTreeFileNode.GetRootLineNum()\n\n    \"check to see if we have the root node\n    if a:ln == rootLine\n        return b:NERDTreeRoot.path\n    endif\n\n    if !g:NERDTreeDirArrows\n        \" in case called from outside the tree\n        if line !~# '^ *[|`▸▾ ]' || line =~# '^$'\n            return {}\n        endif\n    endif\n\n    if line ==# nerdtree#treeUpDirLine()\n        return b:NERDTreeRoot.path.getParent()\n    endif\n\n    let indent = nerdtree#indentLevelFor(line)\n\n    \"remove the tree parts and the leading space\n    let curFile = nerdtree#stripMarkupFromLine(line, 0)\n\n    let wasdir = 0\n    if curFile =~# '/$'\n        let wasdir = 1\n        let curFile = substitute(curFile, '/\\?$', '/', \"\")\n    endif\n\n    let dir = \"\"\n    let lnum = a:ln\n    while lnum > 0\n        let lnum = lnum - 1\n        let curLine = getline(lnum)\n        let curLineStripped = nerdtree#stripMarkupFromLine(curLine, 1)\n\n        \"have we reached the top of the tree?\n        if lnum == rootLine\n            let dir = b:NERDTreeRoot.path.str({'format': 'UI'}) . dir\n            break\n        endif\n        if curLineStripped =~# '/$'\n            let lpindent = nerdtree#indentLevelFor(curLine)\n            if lpindent < indent\n                let indent = indent - 1\n\n                let dir = substitute (curLineStripped,'^\\\\', \"\", \"\") . dir\n                continue\n            endif\n        endif\n    endwhile\n    let curFile = b:NERDTreeRoot.path.drive . dir . curFile\n    let toReturn = g:NERDTreePath.New(curFile)\n    return toReturn\nendfunction\n\n\"FUNCTION: nerdtree#getTreeWinNum() {{{2\n\"gets the nerd tree window number for this tab\nfunction! nerdtree#getTreeWinNum()\n    if exists(\"t:NERDTreeBufName\")\n        return bufwinnr(t:NERDTreeBufName)\n    else\n        return -1\n    endif\nendfunction\n\n\"FUNCTION: nerdtree#indentLevelFor(line) {{{2\nfunction! nerdtree#indentLevelFor(line)\n    let level = match(a:line, '[^ \\-+~▸▾`|]') / nerdtree#treeWid()\n    \" check if line includes arrows\n    if match(a:line, '[▸▾]') > -1\n        \" decrement level as arrow uses 3 ascii chars\n        let level = level - 1\n    endif\n    return level\nendfunction\n\n\"FUNCTION: nerdtree#isTreeOpen() {{{2\nfunction! nerdtree#isTreeOpen()\n    return nerdtree#getTreeWinNum() != -1\nendfunction\n\n\"FUNCTION: nerdtree#isWindowUsable(winnumber) {{{2\n\"Returns 0 if opening a file from the tree in the given window requires it to\n\"be split, 1 otherwise\n\"\n\"Args:\n\"winnumber: the number of the window in question\nfunction! nerdtree#isWindowUsable(winnumber)\n    \"gotta split if theres only one window (i.e. the NERD tree)\n    if winnr(\"$\") ==# 1\n        return 0\n    endif\n\n    let oldwinnr = winnr()\n    call nerdtree#exec(a:winnumber . \"wincmd p\")\n    let specialWindow = getbufvar(\"%\", '&buftype') != '' || getwinvar('%', '&previewwindow')\n    let modified = &modified\n    call nerdtree#exec(oldwinnr . \"wincmd p\")\n\n    \"if its a special window e.g. quickfix or another explorer plugin then we\n    \"have to split\n    if specialWindow\n        return 0\n    endif\n\n    if &hidden\n        return 1\n    endif\n\n    return !modified || nerdtree#bufInWindows(winbufnr(a:winnumber)) >= 2\nendfunction\n\n\" FUNCTION: nerdtree#jumpToChild(direction) {{{2\n\" Args:\n\" direction: 0 if going to first child, 1 if going to last\nfunction! nerdtree#jumpToChild(currentNode, direction)\n    if a:currentNode.isRoot()\n        return nerdtree#echo(\"cannot jump to \" . (a:direction ? \"last\" : \"first\") .  \" child\")\n    end\n    let dirNode = a:currentNode.parent\n    let childNodes = dirNode.getVisibleChildren()\n\n    let targetNode = childNodes[0]\n    if a:direction\n        let targetNode = childNodes[len(childNodes) - 1]\n    endif\n\n    if targetNode.equals(a:currentNode)\n        let siblingDir = a:currentNode.parent.findOpenDirSiblingWithVisibleChildren(a:direction)\n        if siblingDir != {}\n            let indx = a:direction ? siblingDir.getVisibleChildCount()-1 : 0\n            let targetNode = siblingDir.getChildByIndex(indx, 1)\n        endif\n    endif\n\n    call targetNode.putCursorHere(1, 0)\n\n    call nerdtree#centerView()\nendfunction\n\n\" FUNCTION: nerdtree#jumpToSibling(currentNode, forward) {{{2\n\" moves the cursor to the sibling of the current node in the given direction\n\"\n\" Args:\n\" forward: 1 if the cursor should move to the next sibling, 0 if it should\n\" move back to the previous sibling\nfunction! nerdtree#jumpToSibling(currentNode, forward)\n    let sibling = a:currentNode.findSibling(a:forward)\n\n    if !empty(sibling)\n        call sibling.putCursorHere(1, 0)\n        call nerdtree#centerView()\n    endif\nendfunction\n\n\"FUNCTION: nerdtree#promptToDelBuffer(bufnum, msg){{{2\n\"prints out the given msg and, if the user responds by pushing 'y' then the\n\"buffer with the given bufnum is deleted\n\"\n\"Args:\n\"bufnum: the buffer that may be deleted\n\"msg: a message that will be echoed to the user asking them if they wish to\n\"     del the buffer\nfunction! nerdtree#promptToDelBuffer(bufnum, msg)\n    echo a:msg\n    if nr2char(getchar()) ==# 'y'\n        exec \"silent bdelete! \" . a:bufnum\n    endif\nendfunction\n\n\"FUNCTION: nerdtree#putCursorOnBookmarkTable(){{{2\n\"Places the cursor at the top of the bookmarks table\nfunction! nerdtree#putCursorOnBookmarkTable()\n    if !b:NERDTreeShowBookmarks\n        throw \"NERDTree.IllegalOperationError: cant find bookmark table, bookmarks arent active\"\n    endif\n\n    if g:NERDTreeMinimalUI\n        return cursor(1, 2)\n    endif\n\n    let rootNodeLine = g:NERDTreeFileNode.GetRootLineNum()\n\n    let line = 1\n    while getline(line) !~# '^>-\\+Bookmarks-\\+$'\n        let line = line + 1\n        if line >= rootNodeLine\n            throw \"NERDTree.BookmarkTableNotFoundError: didnt find the bookmarks table\"\n        endif\n    endwhile\n    call cursor(line, 2)\nendfunction\n\n\"FUNCTION: nerdtree#putCursorInTreeWin(){{{2\n\"Places the cursor in the nerd tree window\nfunction! nerdtree#putCursorInTreeWin()\n    if !nerdtree#isTreeOpen()\n        throw \"NERDTree.InvalidOperationError: cant put cursor in NERD tree window, no window exists\"\n    endif\n\n    call nerdtree#exec(nerdtree#getTreeWinNum() . \"wincmd w\")\nendfunction\n\n\"FUNCTION: nerdtree#renderBookmarks {{{2\nfunction! nerdtree#renderBookmarks()\n\n    if g:NERDTreeMinimalUI == 0\n        call setline(line(\".\")+1, \">----------Bookmarks----------\")\n        call cursor(line(\".\")+1, col(\".\"))\n    endif\n\n    for i in g:NERDTreeBookmark.Bookmarks()\n        call setline(line(\".\")+1, i.str())\n        call cursor(line(\".\")+1, col(\".\"))\n    endfor\n\n    call setline(line(\".\")+1, '')\n    call cursor(line(\".\")+1, col(\".\"))\nendfunction\n\n\"FUNCTION: nerdtree#renderView {{{2\n\"The entry function for rendering the tree\nfunction! nerdtree#renderView()\n    setlocal modifiable\n\n    \"remember the top line of the buffer and the current line so we can\n    \"restore the view exactly how it was\n    let curLine = line(\".\")\n    let curCol = col(\".\")\n    let topLine = line(\"w0\")\n\n    \"delete all lines in the buffer (being careful not to clobber a register)\n    silent 1,$delete _\n\n    call nerdtree#dumpHelp()\n\n    \"delete the blank line before the help and add one after it\n    if g:NERDTreeMinimalUI == 0\n        call setline(line(\".\")+1, \"\")\n        call cursor(line(\".\")+1, col(\".\"))\n    endif\n\n    if b:NERDTreeShowBookmarks\n        call nerdtree#renderBookmarks()\n    endif\n\n    \"add the 'up a dir' line\n    if !g:NERDTreeMinimalUI\n        call setline(line(\".\")+1, nerdtree#treeUpDirLine())\n        call cursor(line(\".\")+1, col(\".\"))\n    endif\n\n    \"draw the header line\n    let header = b:NERDTreeRoot.path.str({'format': 'UI', 'truncateTo': winwidth(0)})\n    call setline(line(\".\")+1, header)\n    call cursor(line(\".\")+1, col(\".\"))\n\n    \"draw the tree\n    let old_o = @o\n    let @o = b:NERDTreeRoot.renderToString()\n    silent put o\n    let @o = old_o\n\n    \"delete the blank line at the top of the buffer\n    silent 1,1delete _\n\n    \"restore the view\n    let old_scrolloff=&scrolloff\n    let &scrolloff=0\n    call cursor(topLine, 1)\n    normal! zt\n    call cursor(curLine, curCol)\n    let &scrolloff = old_scrolloff\n\n    setlocal nomodifiable\nendfunction\n\n\"FUNCTION: nerdtree#renderViewSavingPosition {{{2\n\"Renders the tree and ensures the cursor stays on the current node or the\n\"current nodes parent if it is no longer available upon re-rendering\nfunction! nerdtree#renderViewSavingPosition()\n    let currentNode = g:NERDTreeFileNode.GetSelected()\n\n    \"go up the tree till we find a node that will be visible or till we run\n    \"out of nodes\n    while currentNode != {} && !currentNode.isVisible() && !currentNode.isRoot()\n        let currentNode = currentNode.parent\n    endwhile\n\n    call nerdtree#renderView()\n\n    if currentNode != {}\n        call currentNode.putCursorHere(0, 0)\n    endif\nendfunction\n\"\n\"FUNCTION: nerdtree#restoreScreenState() {{{2\n\"\n\"Sets the screen state back to what it was when nerdtree#saveScreenState was last\n\"called.\n\"\n\"Assumes the cursor is in the NERDTree window\nfunction! nerdtree#restoreScreenState()\n    if !exists(\"b:NERDTreeOldTopLine\") || !exists(\"b:NERDTreeOldPos\") || !exists(\"b:NERDTreeOldWindowSize\")\n        return\n    endif\n    exec(\"silent vertical resize \".b:NERDTreeOldWindowSize)\n\n    let old_scrolloff=&scrolloff\n    let &scrolloff=0\n    call cursor(b:NERDTreeOldTopLine, 0)\n    normal! zt\n    call setpos(\".\", b:NERDTreeOldPos)\n    let &scrolloff=old_scrolloff\nendfunction\n\n\"FUNCTION: nerdtree#saveScreenState() {{{2\n\"Saves the current cursor position in the current buffer and the window\n\"scroll position\nfunction! nerdtree#saveScreenState()\n    let win = winnr()\n    try\n        call nerdtree#putCursorInTreeWin()\n        let b:NERDTreeOldPos = getpos(\".\")\n        let b:NERDTreeOldTopLine = line(\"w0\")\n        let b:NERDTreeOldWindowSize = winwidth(\"\")\n        call nerdtree#exec(win . \"wincmd w\")\n    catch /^NERDTree.InvalidOperationError/\n    endtry\nendfunction\n\n\"FUNCTION: nerdtree#stripMarkupFromLine(line, removeLeadingSpaces){{{2\n\"returns the given line with all the tree parts stripped off\n\"\n\"Args:\n\"line: the subject line\n\"removeLeadingSpaces: 1 if leading spaces are to be removed (leading spaces =\n\"any spaces before the actual text of the node)\nfunction! nerdtree#stripMarkupFromLine(line, removeLeadingSpaces)\n    let line = a:line\n    \"remove the tree parts and the leading space\n    let line = substitute (line, nerdtree#treeMarkupReg(),\"\",\"\")\n\n    \"strip off any read only flag\n    let line = substitute (line, ' \\[RO\\]', \"\",\"\")\n\n    \"strip off any bookmark flags\n    let line = substitute (line, ' {[^}]*}', \"\",\"\")\n\n    \"strip off any executable flags\n    let line = substitute (line, '*\\ze\\($\\| \\)', \"\",\"\")\n\n    let wasdir = 0\n    if line =~# '/$'\n        let wasdir = 1\n    endif\n    let line = substitute (line,' -> .*',\"\",\"\") \" remove link to\n    if wasdir ==# 1\n        let line = substitute (line, '/\\?$', '/', \"\")\n    endif\n\n    if a:removeLeadingSpaces\n        let line = substitute (line, '^ *', '', '')\n    endif\n\n    return line\nendfunction\n\n\"SECTION: Interface bindings {{{1\n\"============================================================\n\n\"FUNCTION: s:activateAll() {{{2\n\"handle the user activating the updir line\nfunction! s:activateAll()\n    if getline(\".\") ==# nerdtree#treeUpDirLine()\n        return nerdtree#upDir(0)\n    endif\nendfunction\n\"FUNCTION: s:activateDirNode() {{{2\n\"handle the user activating a tree node\nfunction! s:activateDirNode(node)\n    call a:node.activate({'reuse': 1})\nendfunction\n\n\"FUNCTION: s:activateFileNode() {{{2\n\"handle the user activating a tree node\nfunction! s:activateFileNode(node)\n    call a:node.activate({'reuse': 1, 'where': 'p'})\nendfunction\n\n\"FUNCTION: s:activateBookmark() {{{2\n\"handle the user activating a bookmark\nfunction! s:activateBookmark(bm)\n    call a:bm.activate(!a:bm.path.isDirectory ? {'where': 'p'} : {})\nendfunction\n\n\" FUNCTION: nerdtree#bookmarkNode(name) {{{2\n\" Associate the current node with the given name\nfunction! nerdtree#bookmarkNode(...)\n    let currentNode = g:NERDTreeFileNode.GetSelected()\n    if currentNode != {}\n        let name = a:1\n        if empty(name)\n            let name = currentNode.path.getLastPathComponent(0)\n        endif\n        try\n            call currentNode.bookmark(name)\n            call nerdtree#renderView()\n        catch /^NERDTree.IllegalBookmarkNameError/\n            call nerdtree#echo(\"bookmark names must not contain spaces\")\n        endtry\n    else\n        call nerdtree#echo(\"select a node first\")\n    endif\nendfunction\n\n\" FUNCTION: s:chCwd(node) {{{2\nfunction! s:chCwd(node)\n    try\n        call a:node.path.changeToDir()\n    catch /^NERDTree.PathChangeError/\n        call nerdtree#echoWarning(\"could not change cwd\")\n    endtry\nendfunction\n\n\" FUNCTION: s:chRoot(node) {{{2\n\" changes the current root to the selected one\nfunction! s:chRoot(node)\n    call a:node.makeRoot()\n    call nerdtree#renderView()\n    call b:NERDTreeRoot.putCursorHere(0, 0)\nendfunction\n\n\" FUNCTION: s:chRootCwd() {{{2\n\" changes the current root to CWD\nfunction! nerdtree#chRootCwd()\n    try\n        let cwd = g:NERDTreePath.New(getcwd())\n    catch /^NERDTree.InvalidArgumentsError/\n        call nerdtree#echo(\"current directory does not exist.\")\n        return\n    endtry\n    if cwd.str() == g:NERDTreeFileNode.GetRootForTab().path.str()\n       return\n    endif\n    call nerdtree#chRoot(g:NERDTreeDirNode.New(cwd))\nendfunction\n\n\" FUNCTION: nerdtree#clearBookmarks(bookmarks) {{{2\nfunction! nerdtree#clearBookmarks(bookmarks)\n    if a:bookmarks ==# ''\n        let currentNode = g:NERDTreeFileNode.GetSelected()\n        if currentNode != {}\n            call currentNode.clearBookmarks()\n        endif\n    else\n        for name in split(a:bookmarks, ' ')\n            let bookmark = g:NERDTreeBookmark.BookmarkFor(name)\n            call bookmark.delete()\n        endfor\n    endif\n    call nerdtree#renderView()\nendfunction\n\n\" FUNCTION: s:closeChildren(node) {{{2\n\" closes all childnodes of the current node\nfunction! s:closeChildren(node)\n    call a:node.closeChildren()\n    call nerdtree#renderView()\n    call a:node.putCursorHere(0, 0)\nendfunction\n\n\" FUNCTION: s:closeCurrentDir(node) {{{2\n\" closes the parent dir of the current node\nfunction! s:closeCurrentDir(node)\n    let parent = a:node.parent\n    if parent ==# {} || parent.isRoot()\n        call nerdtree#echo(\"cannot close tree root\")\n    else\n        call a:node.parent.close()\n        call nerdtree#renderView()\n        call a:node.parent.putCursorHere(0, 0)\n    endif\nendfunction\n\n\" FUNCTION: s:closeTreeWindow() {{{2\n\" close the tree window\nfunction! s:closeTreeWindow()\n    if b:NERDTreeType ==# \"secondary\" && b:NERDTreePreviousBuf != -1\n        exec \"buffer \" . b:NERDTreePreviousBuf\n    else\n        if winnr(\"$\") > 1\n            call nerdtree#closeTree()\n        else\n            call nerdtree#echo(\"Cannot close last window\")\n        endif\n    endif\nendfunction\n\n\" FUNCTION: s:deleteBookmark(bm) {{{2\n\" if the cursor is on a bookmark, prompt to delete\nfunction! s:deleteBookmark(bm)\n    echo  \"Are you sure you wish to delete the bookmark:\\n\\\"\" . a:bm.name . \"\\\" (yN):\"\n\n    if  nr2char(getchar()) ==# 'y'\n        try\n            call a:bm.delete()\n            call nerdtree#renderView()\n            redraw\n        catch /^NERDTree/\n            call nerdtree#echoWarning(\"Could not remove bookmark\")\n        endtry\n    else\n        call nerdtree#echo(\"delete aborted\" )\n    endif\n\nendfunction\n\n\" FUNCTION: s:displayHelp() {{{2\n\" toggles the help display\nfunction! s:displayHelp()\n    let b:treeShowHelp = b:treeShowHelp ? 0 : 1\n    call nerdtree#renderView()\n    call nerdtree#centerView()\nendfunction\n\n\"FUNCTION: s:handleLeftClick() {{{2\n\"Checks if the click should open the current node\nfunction! s:handleLeftClick()\n    let currentNode = g:NERDTreeFileNode.GetSelected()\n    if currentNode != {}\n\n        \"the dir arrows are multibyte chars, and vim's string functions only\n        \"deal with single bytes - so split the line up with the hack below and\n        \"take the line substring manually\n        let line = split(getline(line(\".\")), '\\zs')\n        let startToCur = \"\"\n        for i in range(0,len(line)-1)\n            let startToCur .= line[i]\n        endfor\n\n        if currentNode.path.isDirectory\n            if startToCur =~# nerdtree#treeMarkupReg() && startToCur =~# '[+~▾▸] \\?$'\n                call currentNode.activate()\n                return\n            endif\n        endif\n\n        if (g:NERDTreeMouseMode ==# 2 && currentNode.path.isDirectory) || g:NERDTreeMouseMode ==# 3\n            let char = strpart(startToCur, strlen(startToCur)-1, 1)\n            if char !~# nerdtree#treeMarkupReg()\n                if currentNode.path.isDirectory\n                    call currentNode.activate()\n                else\n                    call currentNode.activate({'reuse': 1, 'where': 'p'})\n                endif\n                return\n            endif\n        endif\n    endif\nendfunction\n\n\" FUNCTION: s:handleMiddleMouse() {{{2\nfunction! s:handleMiddleMouse()\n    let curNode = g:NERDTreeFileNode.GetSelected()\n    if curNode ==# {}\n        call nerdtree#echo(\"Put the cursor on a node first\" )\n        return\n    endif\n\n    if curNode.path.isDirectory\n        call nerdtree#openExplorer(curNode)\n    else\n        call curNode.open({'where': 'h'})\n    endif\nendfunction\n\n\" FUNCTION: s:jumpToFirstChild() {{{2\n\" wrapper for the jump to child method\nfunction! s:jumpToFirstChild(node)\n    call nerdtree#jumpToChild(a:node, 0)\nendfunction\n\n\" FUNCTION: s:jumpToLastChild() {{{2\n\" wrapper for the jump to child method\nfunction! s:jumpToLastChild(node)\n    call nerdtree#jumpToChild(a:node, 1)\nendfunction\n\n\" FUNCTION: s:jumpToParent(node) {{{2\n\" moves the cursor to the parent of the current node\nfunction! s:jumpToParent(node)\n    if !empty(a:node.parent)\n        call a:node.parent.putCursorHere(1, 0)\n        call nerdtree#centerView()\n    else\n        call nerdtree#echo(\"cannot jump to parent\")\n    endif\nendfunction\n\n\" FUNCTION: s:jumpToRoot() {{{2\n\" moves the cursor to the root node\nfunction! s:jumpToRoot()\n    call b:NERDTreeRoot.putCursorHere(1, 0)\n    call nerdtree#centerView()\nendfunction\n\n\" FUNCTION: s:jumpToNextSibling(node) {{{2\nfunction! s:jumpToNextSibling(node)\n    call nerdtree#jumpToSibling(a:node, 1)\nendfunction\n\n\" FUNCTION: s:jumpToPrevSibling(node) {{{2\nfunction! s:jumpToPrevSibling(node)\n    call nerdtree#jumpToSibling(a:node, 0)\nendfunction\n\n\" FUNCTION: nerdtree#openBookmark(name) {{{2\n\" put the cursor on the given bookmark and, if its a file, open it\nfunction! nerdtree#openBookmark(name)\n    try\n        let targetNode = g:NERDTreeBookmark.GetNodeForName(a:name, 0)\n        call targetNode.putCursorHere(0, 1)\n        redraw!\n    catch /^NERDTree.BookmarkedNodeNotFoundError/\n        call nerdtree#echo(\"note - target node is not cached\")\n        let bookmark = g:NERDTreeBookmark.BookmarkFor(a:name)\n        let targetNode = g:NERDTreeFileNode.New(bookmark.path)\n    endtry\n    if targetNode.path.isDirectory\n        call targetNode.openExplorer()\n    else\n        call targetNode.open({'where': 'p'})\n    endif\nendfunction\n\n\" FUNCTION: s:openHSplit(target) {{{2\nfunction! s:openHSplit(target)\n    call a:target.activate({'where': 'h'})\nendfunction\n\n\" FUNCTION: s:openVSplit(target) {{{2\nfunction! s:openVSplit(target)\n    call a:target.activate({'where': 'v'})\nendfunction\n\n\" FUNCTION: s:openExplorer(node) {{{2\nfunction! s:openExplorer(node)\n    call a:node.openExplorer()\nendfunction\n\n\" FUNCTION: s:openInNewTab(target) {{{2\nfunction! s:openInNewTab(target)\n    call a:target.activate({'where': 't'})\nendfunction\n\n\" FUNCTION: s:openInNewTabSilent(target) {{{2\nfunction! s:openInNewTabSilent(target)\n    call a:target.activate({'where': 't', 'stay': 1})\nendfunction\n\n\" FUNCTION: s:openNodeRecursively(node) {{{2\nfunction! s:openNodeRecursively(node)\n    call nerdtree#echo(\"Recursively opening node. Please wait...\")\n    call a:node.openRecursively()\n    call nerdtree#renderView()\n    redraw\n    call nerdtree#echo(\"Recursively opening node. Please wait... DONE\")\nendfunction\n\n\"FUNCTION: s:previewNodeCurrent(node) {{{2\nfunction! s:previewNodeCurrent(node)\n    call a:node.open({'stay': 1, 'where': 'p', 'keepopen': 1})\nendfunction\n\n\"FUNCTION: s:previewNodeHSplit(node) {{{2\nfunction! s:previewNodeHSplit(node)\n    call a:node.open({'stay': 1, 'where': 'h', 'keepopen': 1})\nendfunction\n\n\"FUNCTION: s:previewNodeVSplit(node) {{{2\nfunction! s:previewNodeVSplit(node)\n    call a:node.open({'stay': 1, 'where': 'v', 'keepopen': 1})\nendfunction\n\n\" FUNCTION: nerdtree#revealBookmark(name) {{{2\n\" put the cursor on the node associate with the given name\nfunction! nerdtree#revealBookmark(name)\n    try\n        let targetNode = g:NERDTreeBookmark.GetNodeForName(a:name, 0)\n        call targetNode.putCursorHere(0, 1)\n    catch /^NERDTree.BookmarkNotFoundError/\n        call nerdtree#echo(\"Bookmark isnt cached under the current root\")\n    endtry\nendfunction\n\n\" FUNCTION: s:refreshRoot() {{{2\n\" Reloads the current root. All nodes below this will be lost and the root dir\n\" will be reloaded.\nfunction! s:refreshRoot()\n    call nerdtree#echo(\"Refreshing the root node. This could take a while...\")\n    call b:NERDTreeRoot.refresh()\n    call nerdtree#renderView()\n    redraw\n    call nerdtree#echo(\"Refreshing the root node. This could take a while... DONE\")\nendfunction\n\n\" FUNCTION: s:refreshCurrent(node) {{{2\n\" refreshes the root for the current node\nfunction! s:refreshCurrent(node)\n    let node = a:node\n    if !node.path.isDirectory\n        let node = node.parent\n    endif\n\n    call nerdtree#echo(\"Refreshing node. This could take a while...\")\n    call node.refresh()\n    call nerdtree#renderView()\n    redraw\n    call nerdtree#echo(\"Refreshing node. This could take a while... DONE\")\nendfunction\n\n\" FUNCTION: s:showMenu(node) {{{2\nfunction! s:showMenu(node)\n    let mc = g:NERDTreeMenuController.New(g:NERDTreeMenuItem.AllEnabled())\n    call mc.showMenu()\nendfunction\n\n\" FUNCTION: s:toggleIgnoreFilter() {{{2\n\" toggles the use of the NERDTreeIgnore option\nfunction! s:toggleIgnoreFilter()\n    let b:NERDTreeIgnoreEnabled = !b:NERDTreeIgnoreEnabled\n    call nerdtree#renderViewSavingPosition()\n    call nerdtree#centerView()\nendfunction\n\n\" FUNCTION: s:toggleShowBookmarks() {{{2\n\" toggles the display of bookmarks\nfunction! s:toggleShowBookmarks()\n    let b:NERDTreeShowBookmarks = !b:NERDTreeShowBookmarks\n    if b:NERDTreeShowBookmarks\n        call nerdtree#renderView()\n        call nerdtree#putCursorOnBookmarkTable()\n    else\n        call nerdtree#renderViewSavingPosition()\n    endif\n    call nerdtree#centerView()\nendfunction\n\n\" FUNCTION: s:toggleShowFiles() {{{2\n\" toggles the display of hidden files\nfunction! s:toggleShowFiles()\n    let b:NERDTreeShowFiles = !b:NERDTreeShowFiles\n    call nerdtree#renderViewSavingPosition()\n    call nerdtree#centerView()\nendfunction\n\n\" FUNCTION: s:toggleShowHidden() {{{2\n\" toggles the display of hidden files\nfunction! s:toggleShowHidden()\n    let b:NERDTreeShowHidden = !b:NERDTreeShowHidden\n    call nerdtree#renderViewSavingPosition()\n    call nerdtree#centerView()\nendfunction\n\n\" FUNCTION: s:toggleZoom() {{{2\n\" zoom (maximize/minimize) the NERDTree window\nfunction! s:toggleZoom()\n    if exists(\"b:NERDTreeZoomed\") && b:NERDTreeZoomed\n        let size = exists(\"b:NERDTreeOldWindowSize\") ? b:NERDTreeOldWindowSize : g:NERDTreeWinSize\n        exec \"silent vertical resize \". size\n        let b:NERDTreeZoomed = 0\n    else\n        exec \"vertical resize\"\n        let b:NERDTreeZoomed = 1\n    endif\nendfunction\n\n\" FUNCTION: s:upDirCurrentRootOpen() {{{2\nfunction! s:upDirCurrentRootOpen()\n    call nerdtree#upDir(1)\nendfunction\n\n\" FUNCTION: s:upDirCurrentRootClosed() {{{2\nfunction! s:upDirCurrentRootClosed()\n    call nerdtree#upDir(0)\nendfunction\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/nerdtree/doc/NERD_tree.txt",
    "content": "*NERD_tree.txt*   A tree explorer plugin that owns your momma!\n\n\n\n    omg its ... ~\n\n    ________  ________   _   ____________  ____     __________  ____________~\n   /_  __/ / / / ____/  / | / / ____/ __ \\/ __ \\   /_  __/ __ \\/ ____/ ____/~\n    / / / /_/ / __/    /  |/ / __/ / /_/ / / / /    / / / /_/ / __/ / __/   ~\n   / / / __  / /___   / /|  / /___/ _, _/ /_/ /    / / / _, _/ /___/ /___   ~\n  /_/ /_/ /_/_____/  /_/ |_/_____/_/ |_/_____/    /_/ /_/ |_/_____/_____/   ~\n\n\n                              Reference Manual~\n\n\n\n\n==============================================================================\nCONTENTS                                                   *NERDTree-contents*\n\n    1.Intro...................................|NERDTree|\n    2.Functionality provided..................|NERDTreeFunctionality|\n        2.1.Global commands...................|NERDTreeGlobalCommands|\n        2.2.Bookmarks.........................|NERDTreeBookmarks|\n            2.2.1.The bookmark table..........|NERDTreeBookmarkTable|\n            2.2.2.Bookmark commands...........|NERDTreeBookmarkCommands|\n            2.2.3.Invalid bookmarks...........|NERDTreeInvalidBookmarks|\n        2.3.NERD tree mappings................|NERDTreeMappings|\n        2.4.The NERD tree menu................|NERDTreeMenu|\n    3.Options.................................|NERDTreeOptions|\n        3.1.Option summary....................|NERDTreeOptionSummary|\n        3.2.Option details....................|NERDTreeOptionDetails|\n    4.The NERD tree API.......................|NERDTreeAPI|\n        4.1.Key map API.......................|NERDTreeKeymapAPI|\n        4.2.Menu API..........................|NERDTreeMenuAPI|\n    5.About...................................|NERDTreeAbout|\n    6.Changelog...............................|NERDTreeChangelog|\n    7.Credits.................................|NERDTreeCredits|\n    8.License.................................|NERDTreeLicense|\n\n==============================================================================\n1. Intro                                                            *NERDTree*\n\nWhat is this \"NERD tree\"??\n\nThe NERD tree allows you to explore your filesystem and to open files and\ndirectories. It presents the filesystem to you in the form of a tree which you\nmanipulate with the keyboard and/or mouse. It also allows you to perform\nsimple filesystem operations.\n\nThe following features and functionality are provided by the NERD tree:\n    * Files and directories are displayed in a hierarchical tree structure\n    * Different highlighting is provided for the following types of nodes:\n        * files\n        * directories\n        * sym-links\n        * windows .lnk files\n        * read-only files\n        * executable files\n    * Many (customisable) mappings are provided to manipulate the tree:\n        * Mappings to open/close/explore directory nodes\n        * Mappings to open files in new/existing windows/tabs\n        * Mappings to change the current root of the tree\n        * Mappings to navigate around the tree\n        * ...\n    * Directories and files can be bookmarked.\n    * Most NERD tree navigation can also be done with the mouse\n    * Filtering of tree content (can be toggled at runtime)\n        * custom file filters to prevent e.g. vim backup files being displayed\n        * optional displaying of hidden files (. files)\n        * files can be \"turned off\" so that only directories are displayed\n    * The position and size of the NERD tree window can be customised\n    * The order in which the nodes in the tree are listed can be customised.\n    * A model of your filesystem is created/maintained as you explore it. This\n      has several advantages:\n        * All filesystem information is cached and is only re-read on demand\n        * If you revisit a part of the tree that you left earlier in your\n          session, the directory nodes will be opened/closed as you left them\n    * The script remembers the cursor position and window position in the NERD\n      tree so you can toggle it off (or just close the tree window) and then\n      reopen it (with NERDTreeToggle) the NERD tree window will appear exactly\n      as you left it\n    * You can have a separate NERD tree for each tab, share trees across tabs,\n      or a mix of both.\n    * By default the script overrides the default file browser (netrw), so if\n      you :edit a directory a (slightly modified) NERD tree will appear in the\n      current window\n    * A programmable menu system is provided (simulates right clicking on a\n      node)\n        * one default menu plugin is provided to perform basic filesystem\n          operations (create/delete/move/copy files/directories)\n    * There's an API for adding your own keymappings\n\n\n==============================================================================\n2. Functionality provided                              *NERDTreeFunctionality*\n\n------------------------------------------------------------------------------\n2.1. Global Commands                                  *NERDTreeGlobalCommands*\n\n:NERDTree [<start-directory> | <bookmark>]                         *:NERDTree*\n    Opens a fresh NERD tree. The root of the tree depends on the argument\n    given. There are 3 cases: If no argument is given, the current directory\n    will be used.  If a directory is given, that will be used. If a bookmark\n    name is given, the corresponding directory will be used.  For example: >\n        :NERDTree /home/marty/vim7/src\n        :NERDTree foo   (foo is the name of a bookmark)\n<\n:NERDTreeFromBookmark <bookmark>                       *:NERDTreeFromBookmark*\n    Opens a fresh NERD tree with the root initialized to the dir for\n    <bookmark>.  This only reason to use this command over :NERDTree is for\n    the completion (which is for bookmarks rather than directories).\n\n:NERDTreeToggle [<start-directory> | <bookmark>]             *:NERDTreeToggle*\n    If a NERD tree already exists for this tab, it is reopened and rendered\n    again.  If no NERD tree exists for this tab then this command acts the\n    same as the |:NERDTree| command.\n\n:NERDTreeMirror                                              *:NERDTreeMirror*\n    Shares an existing NERD tree, from another tab, in the current tab.\n    Changes made to one tree are reflected in both as they are actually the\n    same buffer.\n\n    If only one other NERD tree exists, that tree is automatically mirrored. If\n    more than one exists, the script will ask which tree to mirror.\n\n:NERDTreeClose                                                *:NERDTreeClose*\n    Close the NERD tree in this tab.\n\n:NERDTreeFind                                                  *:NERDTreeFind*\n    Find the current file in the tree.\n\n    If not tree exists and the current file is under vim's CWD, then init a\n    tree at the CWD and reveal the file. Otherwise init a tree in the current\n    file's directory.\n\n    In any case, the current file is revealed and the cursor is placed on it.\n\n:NERDTreeCWD                                                    *:NERDTreeCWD*\n    Change tree root to current directory. If no NERD tree exists for this\n    tab, a new tree will be opened.\n\n------------------------------------------------------------------------------\n2.2. Bookmarks                                             *NERDTreeBookmarks*\n\nBookmarks in the NERD tree are a way to tag files or directories of interest.\nFor example, you could use bookmarks to tag all of your project directories.\n\n------------------------------------------------------------------------------\n2.2.1. The Bookmark Table                              *NERDTreeBookmarkTable*\n\nIf the bookmark table is active (see |NERDTree-B| and\n|'NERDTreeShowBookmarks'|), it will be rendered above the tree. You can double\nclick bookmarks or use the |NERDTree-o| mapping to activate them. See also,\n|NERDTree-t| and |NERDTree-T|\n\n------------------------------------------------------------------------------\n2.2.2. Bookmark commands                            *NERDTreeBookmarkCommands*\n\nNote that the following commands are only available in the NERD tree buffer.\n\n:Bookmark <name>\n    Bookmark the current node as <name>. If there is already a <name>\n    bookmark, it is overwritten. <name> must not contain spaces.\n    If <name> is not provided, it defaults to the file or directory name.\n    For directories, a trailing slash is present.\n\n:BookmarkToRoot <bookmark>\n    Make the directory corresponding to <bookmark> the new root. If a treenode\n    corresponding to <bookmark> is already cached somewhere in the tree then\n    the current tree will be used, otherwise a fresh tree will be opened.\n    Note that if <bookmark> points to a file then its parent will be used\n    instead.\n\n:RevealBookmark <bookmark>\n    If the node is cached under the current root then it will be revealed\n    (i.e. directory nodes above it will be opened) and the cursor will be\n    placed on it.\n\n:OpenBookmark <bookmark>\n    <bookmark> must point to a file. The file is opened as though |NERDTree-o|\n    was applied. If the node is cached under the current root then it will be\n    revealed and the cursor will be placed on it.\n\n:ClearBookmarks [<bookmarks>]\n    Remove all the given bookmarks. If no bookmarks are given then remove all\n    bookmarks on the current node.\n\n:ClearAllBookmarks\n    Remove all bookmarks.\n\n:ReadBookmarks\n    Re-read the bookmarks in the |'NERDTreeBookmarksFile'|.\n\nSee also |:NERDTree| and |:NERDTreeFromBookmark|.\n\n------------------------------------------------------------------------------\n2.2.3. Invalid Bookmarks                            *NERDTreeInvalidBookmarks*\n\nIf invalid bookmarks are detected, the script will issue an error message and\nthe invalid bookmarks will become unavailable for use.\n\nThese bookmarks will still be stored in the bookmarks file (see\n|'NERDTreeBookmarksFile'|), down the bottom. There will always be a blank line\nafter the valid bookmarks but before the invalid ones.\n\nEach line in the bookmarks file represents one bookmark. The proper format is:\n<bookmark name><space><full path to the bookmark location>\n\nAfter you have corrected any invalid bookmarks, either restart vim, or go\n:ReadBookmarks from the NERD tree window.\n\n------------------------------------------------------------------------------\n2.3. NERD tree Mappings                                     *NERDTreeMappings*\n\nDefault  Description~                                             help-tag~\nKey~\n\no.......Open files, directories and bookmarks....................|NERDTree-o|\ngo......Open selected file, but leave cursor in the NERDTree.....|NERDTree-go|\nt.......Open selected node/bookmark in a new tab.................|NERDTree-t|\nT.......Same as 't' but keep the focus on the current tab........|NERDTree-T|\ni.......Open selected file in a split window.....................|NERDTree-i|\ngi......Same as i, but leave the cursor on the NERDTree..........|NERDTree-gi|\ns.......Open selected file in a new vsplit.......................|NERDTree-s|\ngs......Same as s, but leave the cursor on the NERDTree..........|NERDTree-gs|\nO.......Recursively open the selected directory..................|NERDTree-O|\nx.......Close the current nodes parent...........................|NERDTree-x|\nX.......Recursively close all children of the current node.......|NERDTree-X|\ne.......Edit the current dir.....................................|NERDTree-e|\n\n<CR>...............same as |NERDTree-o|.\ndouble-click.......same as the |NERDTree-o| map.\nmiddle-click.......same as |NERDTree-i| for files, same as\n                   |NERDTree-e| for dirs.\n\nD.......Delete the current bookmark .............................|NERDTree-D|\n\nP.......Jump to the root node....................................|NERDTree-P|\np.......Jump to current nodes parent.............................|NERDTree-p|\nK.......Jump up inside directories at the current tree depth.....|NERDTree-K|\nJ.......Jump down inside directories at the current tree depth...|NERDTree-J|\n<C-J>...Jump down to the next sibling of the current directory...|NERDTree-C-J|\n<C-K>...Jump up to the previous sibling of the current directory.|NERDTree-C-K|\n\nC.......Change the tree root to the selected dir.................|NERDTree-C|\nu.......Move the tree root up one directory......................|NERDTree-u|\nU.......Same as 'u' except the old root node is left open........|NERDTree-U|\nr.......Recursively refresh the current directory................|NERDTree-r|\nR.......Recursively refresh the current root.....................|NERDTree-R|\nm.......Display the NERD tree menu...............................|NERDTree-m|\ncd......Change the CWD to the dir of the selected node...........|NERDTree-cd|\nCD......Change tree root to the CWD..............................|NERDTree-CD|\n\nI.......Toggle whether hidden files displayed....................|NERDTree-I|\nf.......Toggle whether the file filters are used.................|NERDTree-f|\nF.......Toggle whether files are displayed.......................|NERDTree-F|\nB.......Toggle whether the bookmark table is displayed...........|NERDTree-B|\n\nq.......Close the NERDTree window................................|NERDTree-q|\nA.......Zoom (maximize/minimize) the NERDTree window.............|NERDTree-A|\n?.......Toggle the display of the quick help.....................|NERDTree-?|\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-o*\nDefault key: o\nMap option: NERDTreeMapActivateNode\nApplies to: files and directories.\n\nIf a file node is selected, it is opened in the previous window.\n\nIf a directory is selected it is opened or closed depending on its current\nstate.\n\nIf a bookmark that links to a directory is selected then that directory\nbecomes the new root.\n\nIf a bookmark that links to a file is selected then that file is opened in the\nprevious window.\n\n------------------------------------------------------------------------------\n                                                                 *NERDTree-go*\nDefault key: go\nMap option: None\nApplies to: files.\n\nIf a file node is selected, it is opened in the previous window, but the\ncursor does not move.\n\nThe key combo for this mapping is always \"g\" + NERDTreeMapActivateNode (see\n|NERDTree-o|).\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-t*\nDefault key: t\nMap option: NERDTreeMapOpenInTab\nApplies to: files and directories.\n\nOpens the selected file in a new tab. If a directory is selected, a fresh\nNERD Tree for that directory is opened in a new tab.\n\nIf a bookmark which points to a directory is selected, open a NERD tree for\nthat directory in a new tab. If the bookmark points to a file, open that file\nin a new tab.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-T*\nDefault key: T\nMap option: NERDTreeMapOpenInTabSilent\nApplies to: files and directories.\n\nThe same as |NERDTree-t| except that the focus is kept in the current tab.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-i*\nDefault key: i\nMap option: NERDTreeMapOpenSplit\nApplies to: files.\n\nOpens the selected file in a new split window and puts the cursor in the new\nwindow.\n\n------------------------------------------------------------------------------\n                                                                 *NERDTree-gi*\nDefault key: gi\nMap option: None\nApplies to: files.\n\nThe same as |NERDTree-i| except that the cursor is not moved.\n\nThe key combo for this mapping is always \"g\" + NERDTreeMapOpenSplit (see\n|NERDTree-i|).\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-s*\nDefault key: s\nMap option: NERDTreeMapOpenVSplit\nApplies to: files.\n\nOpens the selected file in a new vertically split window and puts the cursor in\nthe new window.\n\n------------------------------------------------------------------------------\n                                                                 *NERDTree-gs*\nDefault key: gs\nMap option: None\nApplies to: files.\n\nThe same as |NERDTree-s| except that the cursor is not moved.\n\nThe key combo for this mapping is always \"g\" + NERDTreeMapOpenVSplit (see\n|NERDTree-s|).\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-O*\nDefault key: O\nMap option: NERDTreeMapOpenRecursively\nApplies to: directories.\n\nRecursively opens the selelected directory.\n\nAll files and directories are cached, but if a directory would not be\ndisplayed due to file filters (see |'NERDTreeIgnore'| |NERDTree-f|) or the\nhidden file filter (see |'NERDTreeShowHidden'|) then its contents are not\ncached. This is handy, especially if you have .svn directories.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-x*\nDefault key: x\nMap option: NERDTreeMapCloseDir\nApplies to: files and directories.\n\nCloses the parent of the selected node.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-X*\nDefault key: X\nMap option: NERDTreeMapCloseChildren\nApplies to: directories.\n\nRecursively closes all children of the selected directory.\n\nTip: To quickly \"reset\" the tree, use |NERDTree-P| with this mapping.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-e*\nDefault key: e\nMap option: NERDTreeMapOpenExpl\nApplies to: files and directories.\n\n|:edit|s the selected directory, or the selected file's directory. This could\nresult in a NERD tree or a netrw being opened, depending on\n|'NERDTreeHijackNetrw'|.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-D*\nDefault key: D\nMap option: NERDTreeMapDeleteBookmark\nApplies to: lines in the bookmarks table\n\nDeletes the currently selected bookmark.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-P*\nDefault key: P\nMap option: NERDTreeMapJumpRoot\nApplies to: no restrictions.\n\nJump to the tree root.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-p*\nDefault key: p\nMap option: NERDTreeMapJumpParent\nApplies to: files and directories.\n\nJump to the parent node of the selected node.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-K*\nDefault key: K\nMap option: NERDTreeMapJumpFirstChild\nApplies to: files and directories.\n\nJump to the first child of the current nodes parent.\n\nIf the cursor is already on the first node then do the following:\n    * loop back thru the siblings of the current nodes parent until we find an\n      open dir with children\n    * go to the first child of that node\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-J*\nDefault key: J\nMap option: NERDTreeMapJumpLastChild\nApplies to: files and directories.\n\nJump to the last child of the current nodes parent.\n\nIf the cursor is already on the last node then do the following:\n    * loop forward thru the siblings of the current nodes parent until we find\n      an open dir with children\n    * go to the last child of that node\n\n------------------------------------------------------------------------------\n                                                                *NERDTree-C-J*\nDefault key: <C-J>\nMap option: NERDTreeMapJumpNextSibling\nApplies to: files and directories.\n\nJump to the next sibling of the selected node.\n\n------------------------------------------------------------------------------\n                                                                *NERDTree-C-K*\nDefault key: <C-K>\nMap option: NERDTreeMapJumpPrevSibling\nApplies to: files and directories.\n\nJump to the previous sibling of the selected node.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-C*\nDefault key: C\nMap option: NERDTreeMapChdir\nApplies to: directories.\n\nMake the selected directory node the new tree root. If a file is selected, its\nparent is used.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-u*\nDefault key: u\nMap option: NERDTreeMapUpdir\nApplies to: no restrictions.\n\nMove the tree root up a dir (like doing a \"cd ..\").\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-U*\nDefault key: U\nMap option: NERDTreeMapUpdirKeepOpen\nApplies to: no restrictions.\n\nLike |NERDTree-u| except that the old tree root is kept open.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-r*\nDefault key: r\nMap option: NERDTreeMapRefresh\nApplies to: files and directories.\n\nIf a dir is selected, recursively refresh that dir, i.e. scan the filesystem\nfor changes and represent them in the tree.\n\nIf a file node is selected then the above is done on it's parent.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-R*\nDefault key: R\nMap option: NERDTreeMapRefreshRoot\nApplies to: no restrictions.\n\nRecursively refresh the tree root.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-m*\nDefault key: m\nMap option: NERDTreeMapMenu\nApplies to: files and directories.\n\nDisplay the NERD tree menu. See |NERDTreeMenu| for details.\n\n------------------------------------------------------------------------------\n                                                                 *NERDTree-cd*\nDefault key: cd\nMap option: NERDTreeMapChdir\nApplies to: files and directories.\n\nChange vims current working directory to that of the selected node.\n\n------------------------------------------------------------------------------\n                                                                 *NERDTree-CD*\nDefault key: CD\nMap option: NERDTreeMapCWD\nApplies to: no restrictions.\n\nChange tree root to vims current working directory.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-I*\nDefault key: I\nMap option: NERDTreeMapToggleHidden\nApplies to: no restrictions.\n\nToggles whether hidden files (i.e. \"dot files\") are displayed.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-f*\nDefault key: f\nMap option: NERDTreeMapToggleFilters\nApplies to: no restrictions.\n\nToggles whether file filters are used. See |'NERDTreeIgnore'| for details.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-F*\nDefault key: F\nMap option: NERDTreeMapToggleFiles\nApplies to: no restrictions.\n\nToggles whether file nodes are displayed.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-B*\nDefault key: B\nMap option: NERDTreeMapToggleBookmarks\nApplies to: no restrictions.\n\nToggles whether the bookmarks table is displayed.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-q*\nDefault key: q\nMap option: NERDTreeMapQuit\nApplies to: no restrictions.\n\nCloses the NERDtree window.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-A*\nDefault key: A\nMap option: NERDTreeMapToggleZoom\nApplies to: no restrictions.\n\nMaximize (zoom) and minimize the NERDtree window.\n\n------------------------------------------------------------------------------\n                                                                  *NERDTree-?*\nDefault key: ?\nMap option: NERDTreeMapHelp\nApplies to: no restrictions.\n\nToggles whether the quickhelp is displayed.\n\n------------------------------------------------------------------------------\n2.3. The NERD tree menu                                         *NERDTreeMenu*\n\nThe NERD tree has a menu that can be programmed via the an API (see\n|NERDTreeMenuAPI|). The idea is to simulate the \"right click\" menus that most\nfile explorers have.\n\nThe script comes with two default menu plugins: exec_menuitem.vim and\nfs_menu.vim. fs_menu.vim adds some basic filesystem operations to the menu for\ncreating/deleting/moving/copying files and dirs. exec_menuitem.vim provides a\nmenu item to execute executable files.\n\nRelated tags: |NERDTree-m| |NERDTreeApi|\n\n==============================================================================\n3. Customisation                                             *NERDTreeOptions*\n\n\n------------------------------------------------------------------------------\n3.1. Customisation summary                             *NERDTreeOptionSummary*\n\nThe script provides the following options that can customise the behaviour the\nNERD tree. These options should be set in your vimrc.\n\n|'loaded_nerd_tree'|            Turns off the script.\n\n|'NERDChristmasTree'|           Tells the NERD tree to make itself colourful\n                                and pretty.\n\n|'NERDTreeAutoCenter'|          Controls whether the NERD tree window centers\n                                when the cursor moves within a specified\n                                distance to the top/bottom of the window.\n|'NERDTreeAutoCenterThreshold'| Controls the sensitivity of autocentering.\n\n|'NERDTreeCaseSensitiveSort'|   Tells the NERD tree whether to be case\n                                sensitive or not when sorting nodes.\n\n|'NERDTreeChDirMode'|           Tells the NERD tree if/when it should change\n                                vim's current working directory.\n\n|'NERDTreeHighlightCursorline'| Tell the NERD tree whether to highlight the\n                                current cursor line.\n\n|'NERDTreeHijackNetrw'|         Tell the NERD tree whether to replace the netrw\n                                autocommands for exploring local directories.\n\n|'NERDTreeIgnore'|              Tells the NERD tree which files to ignore.\n\n|'NERDTreeBookmarksFile'|       Where the bookmarks are stored.\n\n|'NERDTreeMouseMode'|           Tells the NERD tree how to handle mouse\n                                clicks.\n\n|'NERDTreeQuitOnOpen'|          Closes the tree window after opening a file.\n\n|'NERDTreeShowBookmarks'|       Tells the NERD tree whether to display the\n                                bookmarks table on startup.\n\n|'NERDTreeShowFiles'|           Tells the NERD tree whether to display files\n                                in the tree on startup.\n\n|'NERDTreeShowHidden'|          Tells the NERD tree whether to display hidden\n                                files on startup.\n\n|'NERDTreeShowLineNumbers'|     Tells the NERD tree whether to display line\n                                numbers in the tree window.\n\n|'NERDTreeSortOrder'|           Tell the NERD tree how to sort the nodes in\n                                the tree.\n\n|'NERDTreeStatusline'|          Set a statusline for NERD tree windows.\n\n|'NERDTreeWinPos'|              Tells the script where to put the NERD tree\n                                window.\n\n|'NERDTreeWinSize'|             Sets the window size when the NERD tree is\n                                opened.\n\n|'NERDTreeMinimalUI'|           Disables display of the 'Bookmarks' label and \n                                'Press ? for help' text.\n\n|'NERDTreeDirArrows'|           Tells the NERD tree to use arrows instead of\n                                + ~ chars when displaying directories.\n\n|'NERDTreeCasadeOpenSingleChildDir'|\n                                Casade open while selected directory has only\n                                one child that also is a directory.\n\n|'NERDTreeAutoDeleteBuffer'|    Tells the NERD tree to automatically remove \n                                a buffer when a file is being deleted or renamed\n                                via a context menu command.\n\n------------------------------------------------------------------------------\n3.2. Customisation details                             *NERDTreeOptionDetails*\n\nTo enable any of the below options you should put the given line in your\n~/.vimrc\n\n                                                          *'loaded_nerd_tree'*\nIf this plugin is making you feel homicidal, it may be a good idea to turn it\noff with this line in your vimrc: >\n    let loaded_nerd_tree=1\n<\n------------------------------------------------------------------------------\n                                                         *'NERDChristmasTree'*\nValues: 0 or 1.\nDefault: 1.\n\nIf this option is set to 1 then some extra syntax highlighting elements are\nadded to the nerd tree to make it more colourful.\n\nSet it to 0 for a more vanilla looking tree.\n\n------------------------------------------------------------------------------\n                                                        *'NERDTreeAutoCenter'*\nValues: 0 or 1.\nDefault: 1\n\nIf set to 1, the NERD tree window will center around the cursor if it moves to\nwithin |'NERDTreeAutoCenterThreshold'| lines of the top/bottom of the window.\n\nThis is ONLY done in response to tree navigation mappings,\ni.e. |NERDTree-J| |NERDTree-K| |NERDTree-C-J| |NERDTree-C-K| |NERDTree-p|\n|NERDTree-P|\n\nThe centering is done with a |zz| operation.\n\n------------------------------------------------------------------------------\n                                               *'NERDTreeAutoCenterThreshold'*\nValues: Any natural number.\nDefault: 3\n\nThis option controls the \"sensitivity\" of the NERD tree auto centering. See\n|'NERDTreeAutoCenter'| for details.\n\n------------------------------------------------------------------------------\n                                                 *'NERDTreeCaseSensitiveSort'*\nValues: 0 or 1.\nDefault: 0.\n\nBy default the NERD tree does not sort nodes case sensitively, i.e. nodes\ncould appear like this: >\n    bar.c\n    Baz.c\n    blarg.c\n    boner.c\n    Foo.c\n<\nBut, if you set this option to 1 then the case of the nodes will be taken into\naccount. The above nodes would then be sorted like this: >\n    Baz.c\n    Foo.c\n    bar.c\n    blarg.c\n    boner.c\n<\n------------------------------------------------------------------------------\n                                                         *'NERDTreeChDirMode'*\n\nValues: 0, 1 or 2.\nDefault: 0.\n\nUse this option to tell the script when (if at all) to change the current\nworking directory (CWD) for vim.\n\nIf it is set to 0 then the CWD is never changed by the NERD tree.\n\nIf set to 1 then the CWD is changed when the NERD tree is first loaded to the\ndirectory it is initialized in. For example, if you start the NERD tree with >\n    :NERDTree /home/marty/foobar\n<\nthen the CWD will be changed to /home/marty/foobar and will not be changed\nagain unless you init another NERD tree with a similar command.\n\nIf the option is set to 2 then it behaves the same as if set to 1 except that\nthe CWD is changed whenever the tree root is changed. For example, if the CWD\nis /home/marty/foobar and you make the node for /home/marty/foobar/baz the new\nroot then the CWD will become /home/marty/foobar/baz.\n\n------------------------------------------------------------------------------\n                                               *'NERDTreeHighlightCursorline'*\nValues: 0 or 1.\nDefault: 1.\n\nIf set to 1, the current cursor line in the NERD tree buffer will be\nhighlighted. This is done using the |'cursorline'| option.\n\n------------------------------------------------------------------------------\n                                                       *'NERDTreeHijackNetrw'*\nValues: 0 or 1.\nDefault: 1.\n\nIf set to 1, doing a >\n    :edit <some directory>\n<\nwill open up a \"secondary\" NERD tree instead of a netrw in the target window.\n\nSecondary NERD trees behaves slightly different from a regular trees in the\nfollowing respects:\n    1. 'o' will open the selected file in the same window as the tree,\n       replacing it.\n    2. you can have as many secondary tree as you want in the same tab.\n\n------------------------------------------------------------------------------\n                                                            *'NERDTreeIgnore'*\nValues: a list of regular expressions.\nDefault: ['\\~$'].\n\nThis option is used to specify which files the NERD tree should ignore.  It\nmust be a list of regular expressions. When the NERD tree is rendered, any\nfiles/dirs that match any of the regex's in 'NERDTreeIgnore' wont be\ndisplayed.\n\nFor example if you put the following line in your vimrc: >\n    let NERDTreeIgnore=['\\.vim$', '\\~$']\n<\nthen all files ending in .vim or ~ will be ignored.\n\nThere are 2 magic flags that can be appended to the end of each regular\nexpression to specify that the regex should match only files or only dirs.\nThese flags are \"[[dir]]\" and \"[[file]]\". Example: >\n    let NERDTreeIgnore=['.d$[[dir]]', '.o$[[file]]']\n<\nThis will cause all dirs ending in \".d\" to be ignored and all files ending in\n\".o\" to be ignored.\n\nNote: to tell the NERD tree not to ignore any files you must use the following\nline: >\n    let NERDTreeIgnore=[]\n<\n\nThe file filters can be turned on and off dynamically with the |NERDTree-f|\nmapping.\n\n------------------------------------------------------------------------------\n                                                     *'NERDTreeBookmarksFile'*\nValues: a path\nDefault: $HOME/.NERDTreeBookmarks\n\nThis is where bookmarks are saved. See |NERDTreeBookmarkCommands|.\n\n------------------------------------------------------------------------------\n                                                       *'NERDTreeMouseMode'*\nValues: 1, 2 or 3.\nDefault: 1.\n\nIf set to 1 then a double click on a node is required to open it.\nIf set to 2 then a single click will open directory nodes, while a double\nclick will still be required for file nodes.\nIf set to 3 then a single click will open any node.\n\nNote: a double click anywhere on a line that a tree node is on will\nactivate it, but all single-click activations must be done on name of the node\nitself. For example, if you have the following node: >\n    | | |-application.rb\n<\nthen (to single click activate it) you must click somewhere in\n'application.rb'.\n\n------------------------------------------------------------------------------\n                                                        *'NERDTreeQuitOnOpen'*\n\nValues: 0 or 1.\nDefault: 0\n\nIf set to 1, the NERD tree window will close after opening a file with the\n|NERDTree-o|, |NERDTree-i|, |NERDTree-t| and |NERDTree-T| mappings.\n\n------------------------------------------------------------------------------\n                                                     *'NERDTreeShowBookmarks'*\nValues: 0 or 1.\nDefault: 0.\n\nIf this option is set to 1 then the bookmarks table will be displayed.\n\nThis option can be toggled dynamically, per tree, with the |NERDTree-B|\nmapping.\n\n------------------------------------------------------------------------------\n                                                         *'NERDTreeShowFiles'*\nValues: 0 or 1.\nDefault: 1.\n\nIf this option is set to 1 then files are displayed in the NERD tree. If it is\nset to 0 then only directories are displayed.\n\nThis option can be toggled dynamically, per tree, with the |NERDTree-F|\nmapping and is useful for drastically shrinking the tree when you are\nnavigating to a different part of the tree.\n\n------------------------------------------------------------------------------\n                                                        *'NERDTreeShowHidden'*\nValues: 0 or 1.\nDefault: 0.\n\nThis option tells vim whether to display hidden files by default. This option\ncan be dynamically toggled, per tree, with the |NERDTree-I| mapping.  Use one\nof the follow lines to set this option: >\n    let NERDTreeShowHidden=0\n    let NERDTreeShowHidden=1\n<\n\n------------------------------------------------------------------------------\n                                                   *'NERDTreeShowLineNumbers'*\nValues: 0 or 1.\nDefault: 0.\n\nThis option tells vim whether to display line numbers for the NERD tree\nwindow.  Use one of the follow lines to set this option: >\n    let NERDTreeShowLineNumbers=0\n    let NERDTreeShowLineNumbers=1\n<\n\n------------------------------------------------------------------------------\n                                                         *'NERDTreeSortOrder'*\nValues: a list of regular expressions.\nDefault: ['\\/$', '*', '\\.swp$',  '\\.bak$', '\\~$']\n\nThis option is set to a list of regular expressions which are used to\nspecify the order of nodes under their parent.\n\nFor example, if the option is set to: >\n    ['\\.vim$', '\\.c$', '\\.h$', '*', 'foobar']\n<\nthen all .vim files will be placed at the top, followed by all .c files then\nall .h files. All files containing the string 'foobar' will be placed at the\nend.  The star is a special flag: it tells the script that every node that\ndoesnt match any of the other regexps should be placed here.\n\nIf no star is present in 'NERDTreeSortOrder' then one is automatically\nappended to the array.\n\nThe regex '\\/$' should be used to match directory nodes.\n\nAfter this sorting is done, the files in each group are sorted alphabetically.\n\nOther examples: >\n    (1) ['*', '\\/$']\n    (2) []\n    (3) ['\\/$', '\\.rb$', '\\.php$', '*', '\\.swp$',  '\\.bak$', '\\~$']\n<\n1. Directories will appear last, everything else will appear above.\n2. Everything will simply appear in alphabetical order.\n3. Dirs will appear first, then ruby and php. Swap files, bak files and vim\n   backup files will appear last with everything else preceding them.\n\n------------------------------------------------------------------------------\n                                                        *'NERDTreeStatusline'*\nValues: Any valid statusline setting.\nDefault: %{b:NERDTreeRoot.path.strForOS(0)}\n\nTells the script what to use as the |'statusline'| setting for NERD tree\nwindows.\n\nNote that the statusline is set using |:let-&| not |:set| so escaping spaces\nisn't necessary.\n\nSetting this option to -1 will will deactivate it so that your global\nstatusline setting is used instead.\n\n------------------------------------------------------------------------------\n                                                            *'NERDTreeWinPos'*\nValues: \"left\" or \"right\"\nDefault: \"left\".\n\nThis option is used to determine where NERD tree window is placed on the\nscreen.\n\nThis option makes it possible to use two different explorer plugins\nsimultaneously. For example, you could have the taglist plugin on the left of\nthe window and the NERD tree on the right.\n\n------------------------------------------------------------------------------\n                                                           *'NERDTreeWinSize'*\nValues: a positive integer.\nDefault: 31.\n\nThis option is used to change the size of the NERD tree when it is loaded.\n\n------------------------------------------------------------------------------\n                                                         *'NERDTreeMinimalUI'*\nValues: 0 or 1\nDefault: 0\n\nThis options disables the 'Bookmarks' label 'Press ? for help' text. Use one\nof the following lines to set this option: >\n    let NERDTreeMinimalUI=0\n    let NERDTreeMinimalUI=1\n<\n\n------------------------------------------------------------------------------\n                                                           *'NERDTreeDirArrows'*\nValues: 0 or 1\nDefault: 0.\n\nThis option is used to change the default look of directory nodes displayed in\nthe tree. When set to 0 it shows old-school bars (|), + and ~ chars. If set to\n1 it shows right and down arrows.  Use one of the follow lines to set this\noption: >\n    let NERDTreeDirArrows=0\n    let NERDTreeDirArrows=1\n<\n\n------------------------------------------------------------------------------\n                                          *'NERDTreeCasadeOpenSingleChildDir'*\nValues: 0 or 1\nDefault: 1.\n\nWhen opening dir nodes, this option tells NERDTree to recursively open dirs\nthat have only one child which is also a dir. NERDTree will stop when it finds\na dir that contains anything but another single dir. This option may be useful\nfor Java projects.  Use one of the follow lines to set this option: >\n    let NERDTreeCasadeOpenSingleChildDir=0\n    let NERDTreeCasadeOpenSingleChildDir=1\n<\n\n------------------------------------------------------------------------------\n                                          *'NERDTreeAutoDeleteBuffer'*\nValues: 0 or 1\nDefault: 0.\n\nWhen using a context menu to delete or rename a file you may also want to delete\nthe buffer which is no more valid. If the option is not set you will see a\nconfirmation if you really want to delete an old buffer. If you always press 'y'\nthen it worths to set this option to 1. Use one of the follow lines to set this\noption: >\n    let NERDTreeAutoDeleteBuffer=0\n    let NERDTreeAutoDeleteBuffer=1\n<\n\n==============================================================================\n4. The NERD tree API                                             *NERDTreeAPI*\n\nThe NERD tree script allows you to add custom key mappings and menu items via\na set of API calls. Any scripts that use this API should be placed in\n~/.vim/nerdtree_plugin/ (*nix) or ~/vimfiles/nerdtree_plugin (windows).\n\nThe script exposes some prototype objects that can be used to manipulate the\ntree and/or get information from it: >\n    g:NERDTreePath\n    g:NERDTreeDirNode\n    g:NERDTreeFileNode\n    g:NERDTreeBookmark\n<\nSee the code/comments in NERD_tree.vim to find how to use these objects. The\nfollowing code conventions are used:\n    * class members start with a capital letter\n    * instance members start with a lower case letter\n    * private members start with an underscore\n\nSee this blog post for more details:\n http://got-ravings.blogspot.com/2008/09/vim-pr0n-prototype-based-objects.html\n\n------------------------------------------------------------------------------\n4.1. Key map API                                           *NERDTreeKeymapAPI*\n\nNERDTreeAddKeyMap({options})                             *NERDTreeAddKeyMap()*\n    Adds a new keymapping for all NERD tree buffers.\n    {options} must be a dictionary, and must contain the following keys:\n    \"key\" - the trigger key for the new mapping\n    \"callback\" - the function the new mapping will be bound to\n    \"quickhelpText\" - the text that will appear in the quickhelp (see\n    |NERDTree-?|)\n\n    Additionally, a \"scope\" argument may be supplied. This constrains the\n    mapping so that it is only activated if the cursor is on a certain object.\n    That object is then passed into the handling method. Possible values are:\n        \"FileNode\" - a file node\n        \"DirNode\" - a directory node\n        \"Node\" - a file or directory node\n        \"Bookmark\" - A bookmark\n        \"all\" - the keymap is not constrained to any scope (default). When\n        thei is used, the handling function is not passed any arguments.\n\n\n    Example: >\n        call NERDTreeAddKeyMap({\n               \\ 'key': 'foo',\n               \\ 'callback': 'NERDTreeCDHandler',\n               \\ 'quickhelpText': 'echo full path of current node' })\n               \\ 'scope': 'DirNode'\n\n        function! NERDTreeCDHandler(dirnode)\n            call a:dirnode.changeToDir()\n        endfunction\n<\n    This code should sit in a file like ~/.vim/nerdtree_plugin/mymapping.vim.\n    It adds a (redundant) mapping on 'foo' which changes vim's CWD to that of\n    the current dir node. Note this mapping will only fire when the cursor is\n    on a directory node.\n\n------------------------------------------------------------------------------\n4.2. Menu API                                                *NERDTreeMenuAPI*\n\nNERDTreeAddSubmenu({options})                           *NERDTreeAddSubmenu()*\n    Creates and returns a new submenu.\n\n    {options} must be a dictionary and must contain the following keys:\n    \"text\" - the text of the submenu that the user will see\n    \"shortcut\" - a shortcut key for the submenu (need not be unique)\n\n    The following keys are optional:\n    \"isActiveCallback\" - a function that will be called to determine whether\n    this submenu item will be displayed or not. The callback function must return\n    0 or 1.\n    \"parent\" - the parent submenu of the new submenu (returned from a previous\n    invocation of NERDTreeAddSubmenu()). If this key is left out then the new\n    submenu will sit under the top level menu.\n\n    See below for an example.\n\nNERDTreeAddMenuItem({options})                         *NERDTreeAddMenuItem()*\n    Adds a new menu item to the NERD tree menu (see |NERDTreeMenu|).\n\n    {options} must be a dictionary and must contain the\n    following keys:\n    \"text\" - the text of the menu item which the user will see\n    \"shortcut\" - a shortcut key for the menu item (need not be unique)\n    \"callback\" - the function that will be called when the user activates the\n    menu item.\n\n    The following keys are optional:\n    \"isActiveCallback\" - a function that will be called to determine whether\n    this menu item will be displayed or not. The callback function must return\n    0 or 1.\n    \"parent\" - if the menu item belongs under a submenu then this key must be\n    specified. This value for this key will be the object that\n    was returned when the submenu was created with |NERDTreeAddSubmenu()|.\n\n    See below for an example.\n\nNERDTreeAddMenuSeparator([{options}])             *NERDTreeAddMenuSeparator()*\n    Adds a menu separator (a row of dashes).\n\n    {options} is an optional dictionary that may contain the following keys:\n    \"isActiveCallback\" - see description in |NERDTreeAddMenuItem()|.\n\nBelow is an example of the menu API in action. >\n    call NERDTreeAddMenuSeparator()\n\n    call NERDTreeAddMenuItem({\n                \\ 'text': 'a (t)op level menu item',\n                \\ 'shortcut': 't',\n                \\ 'callback': 'SomeFunction' })\n\n    let submenu = NERDTreeAddSubmenu({\n                \\ 'text': 'a (s)ub menu',\n                \\ 'shortcut': 's' })\n\n    call NERDTreeAddMenuItem({\n                \\ 'text': '(n)ested item 1',\n                \\ 'shortcut': 'n',\n                \\ 'callback': 'SomeFunction',\n                \\ 'parent': submenu })\n\n    call NERDTreeAddMenuItem({\n                \\ 'text': '(n)ested item 2',\n                \\ 'shortcut': 'n',\n                \\ 'callback': 'SomeFunction',\n                \\ 'parent': submenu })\n<\nThis will create the following menu: >\n  --------------------\n  a (t)op level menu item\n  a (s)ub menu\n<\nWhere selecting \"a (s)ub menu\" will lead to a second menu: >\n  (n)ested item 1\n  (n)ested item 2\n<\nWhen any of the 3 concrete menu items are selected the function \"SomeFunction\"\nwill be called.\n\n------------------------------------------------------------------------------\nNERDTreeRender()                                            *NERDTreeRender()*\n    Re-renders the NERD tree buffer. Useful if you change the state of the\n    tree and you want to it to be reflected in the UI.\n\n==============================================================================\n5. About                                                       *NERDTreeAbout*\n\nThe author of the NERD tree is a terrible terrible monster called Martyzilla\nwho gobbles up small children with milk and sugar for breakfast.\n\nHe can be reached at martin.grenfell at gmail dot com. He would love to hear\nfrom you, so feel free to send him suggestions and/or comments about this\nplugin.  Don't be shy --- the worst he can do is slaughter you and stuff you in\nthe fridge for later ;)\n\nThe latest stable versions can be found at\n    http://www.vim.org/scripts/script.php?script_id=1658\n\nThe latest dev versions are on github\n    http://github.com/scrooloose/nerdtree\n\n\n==============================================================================\n6. Changelog                                               *NERDTreeChangelog*\n\nNext\n    - add 'scope' argument to the key map API\n    - add NERDTreeCustomIgnoreFilter hook - needs doc\n    - add magic [[dir]] and [[file]] flags to NERDTreeIgnore\n\n4.2.0\n    - Add NERDTreeDirArrows option to make the UI use pretty arrow chars\n      instead of the old +~| chars to define the tree structure (sickill)\n    - shift the syntax highlighting out into its own syntax file (gnap)\n    - add some mac specific options to the filesystem menu - for macvim\n      only (andersonfreitas)\n    - Add NERDTreeMinimalUI option to remove some non functional parts of the\n      nerdtree ui (camthompson)\n    - tweak the behaviour of :NERDTreeFind - see :help :NERDTreeFind for the\n      new behaviour (benjamingeiger)\n    - if no name is given to :Bookmark, make it default to the name of the\n      target file/dir (minyoung)\n    - use 'file' completion when doing copying, create, and move\n      operations (EvanDotPro)\n    - lots of misc bug fixes (paddyoloughlin, sdewald, camthompson, Vitaly\n      Bogdanov, AndrewRadev, mathias, scottstvnsn, kml, wycats, me RAWR!)\n\n4.1.0\n    features:\n    - NERDTreeFind to reveal the node for the current buffer in the tree,\n      see |NERDTreeFind|. This effectively merges the FindInNERDTree plugin (by\n      Doug McInnes) into the script.\n    - make NERDTreeQuitOnOpen apply to the t/T keymaps too. Thanks to Stefan\n      Ritter and Rémi Prévost.\n    - truncate the root node if wider than the tree window. Thanks to Victor\n      Gonzalez.\n\n    bugfixes:\n    - really fix window state restoring\n    - fix some win32 path escaping issues. Thanks to Stephan Baumeister, Ricky,\n      jfilip1024, and Chris Chambers\n\n4.0.0\n    - add a new programmable menu system (see :help NERDTreeMenu).\n    - add new APIs to add menus/menu-items to the menu system as well as\n      custom key mappings to the NERD tree buffer (see :help NERDTreeAPI).\n    - removed the old API functions\n    - added a mapping to maximize/restore the size of nerd tree window, thanks\n      to Guillaume Duranceau for the patch. See :help NERDTree-A for details.\n\n    - fix a bug where secondary nerd trees (netrw hijacked trees) and\n      NERDTreeQuitOnOpen didnt play nicely, thanks to Curtis Harvey.\n    - fix a bug where the script ignored directories whose name ended in a dot,\n      thanks to Aggelos Orfanakos for the patch.\n    - fix a bug when using the x mapping on the tree root, thanks to Bryan\n      Venteicher for the patch.\n    - fix a bug where the cursor position/window size of the nerd tree buffer\n      wasnt being stored on closing the window, thanks to Richard Hart.\n    - fix a bug where NERDTreeMirror would mirror the wrong tree\n\n3.1.1\n    - fix a bug where a non-listed no-name buffer was getting created every\n      time the tree windows was created, thanks to Derek Wyatt and owen1\n    - make <CR> behave the same as the 'o' mapping\n    - some helptag fixes in the doc, thanks strull\n    - fix a bug when using :set nohidden and opening a file where the previous\n      buf was modified. Thanks iElectric\n    - other minor fixes\n\n3.1.0\n    New features:\n    - add mappings to open files in a vsplit, see :help NERDTree-s and :help\n      NERDTree-gs\n    - make the statusline for the nerd tree window default to something\n      hopefully more useful. See :help 'NERDTreeStatusline'\n    Bugfixes:\n    - make the hijack netrw functionality work when vim is started with \"vim\n      <some dir>\" (thanks to Alf Mikula for the patch).\n    - fix a bug where the CWD wasnt being changed for some operations even when\n      NERDTreeChDirMode==2 (thanks to Lucas S. Buchala)\n    - add -bar to all the nerd tree :commands so they can chain with other\n      :commands (thanks to tpope)\n    - fix bugs when ignorecase was set (thanks to nach)\n    - fix a bug with the relative path code (thanks to nach)\n    - fix a bug where doing a :cd would cause :NERDTreeToggle to fail (thanks nach)\n\n\n3.0.1\n    Bugfixes:\n    - fix bugs with :NERDTreeToggle and :NERDTreeMirror when 'hidden\n      was not set\n    - fix a bug where :NERDTree <path> would fail if <path> was relative and\n      didnt start with a ./ or ../  Thanks to James Kanze.\n    - make the q mapping work with secondary (:e <dir>  style) trees,\n      thanks to jamessan\n    - fix a bunch of small bugs with secondary trees\n\n    More insane refactoring.\n\n3.0.0\n    - hijack netrw so that doing an :edit <directory>  will put a NERD tree in\n      the window rather than a netrw browser. See :help 'NERDTreeHijackNetrw'\n    - allow sharing of trees across tabs, see :help :NERDTreeMirror\n    - remove \"top\" and \"bottom\" as valid settings for NERDTreeWinPos\n    - change the '<tab>' mapping to 'i'\n    - change the 'H' mapping to 'I'\n    - lots of refactoring\n\n==============================================================================\n7. Credits                                                   *NERDTreeCredits*\n\nThanks to the following people for testing, bug reports, ideas etc. Without\nyou I probably would have got bored of the hacking the NERD tree and\njust downloaded pr0n instead.\n\n    Tim Carey-Smith (halorgium)\n    Vigil\n    Nick Brettell\n    Thomas Scott Urban\n    Terrance Cohen\n    Yegappan Lakshmanan\n    Jason Mills\n    Michael Geddes (frogonwheels)\n    Yu Jun\n    Michael Madsen\n    AOYAMA Shotaro\n    Zhang Weiwu\n    Niels Aan de Brugh\n    Olivier Yiptong\n    Zhang Shuhan\n    Cory Echols\n    Piotr Czachur\n    Yuan Jiang\n    Matan Nassau\n    Maxim Kim\n    Charlton Wang\n    Matt Wozniski (godlygeek)\n    knekk\n    Sean Chou\n    Ryan Penn\n    Simon Peter Nicholls\n    Michael Foobar\n    Tomasz Chomiuk\n    Denis Pokataev\n    Tim Pope (tpope)\n    James Kanze\n    James Vega (jamessan)\n    Frederic Chanal (nach)\n    Alf Mikula\n    Lucas S. Buchala\n    Curtis Harvey\n    Guillaume Duranceau\n    Richard Hart (hates)\n    Doug McInnes\n    Stefan Ritter\n    Rémi Prévost\n    Victor Gonzalez\n    Stephan Baumeister\n    Ricky\n    jfilip1024\n    Chris Chambers\n    Vitaly Bogdanov\n    Patrick O'Loughlin (paddyoloughlin)\n    Cam Thompson (camthompson)\n    Marcin Kulik (sickill)\n    Steve DeWald (sdewald)\n    Ivan Necas (iNecas)\n    George Ang (gnap)\n    Evan Coury (EvanDotPro)\n    Andrew Radev (AndrewRadev)\n    Matt Gauger (mathias)\n    Scott Stevenson (scottstvnsn)\n    Anderson Freitas (andersonfreitas)\n    Kamil K. Lemański (kml)\n    Yehuda Katz (wycats)\n    Min-Young Wu (minyoung)\n    Benjamin Geiger (benjamingeiger)\n\n==============================================================================\n8. License                                                   *NERDTreeLicense*\n\nThe NERD tree is released under the wtfpl.\nSee http://sam.zoy.org/wtfpl/COPYING.\n"
  },
  {
    "path": ".vim/bundle/nerdtree/lib/nerdtree/bookmark.vim",
    "content": "\"CLASS: Bookmark\n\"============================================================\nlet s:Bookmark = {}\nlet g:NERDTreeBookmark = s:Bookmark\n\n\" FUNCTION: Bookmark.activate() {{{1\nfunction! s:Bookmark.activate(...)\n    call self.open(a:0 ? a:1 : {})\nendfunction\n\n\" FUNCTION: Bookmark.AddBookmark(name, path) {{{1\n\" Class method to add a new bookmark to the list, if a previous bookmark exists\n\" with the same name, just update the path for that bookmark\nfunction! s:Bookmark.AddBookmark(name, path)\n    for i in s:Bookmark.Bookmarks()\n        if i.name ==# a:name\n            let i.path = a:path\n            return\n        endif\n    endfor\n    call add(s:Bookmark.Bookmarks(), s:Bookmark.New(a:name, a:path))\n    call s:Bookmark.Sort()\nendfunction\n\n\" FUNCTION: Bookmark.Bookmarks()   {{{1\n\" Class method to get all bookmarks. Lazily initializes the bookmarks global\n\" variable\nfunction! s:Bookmark.Bookmarks()\n    if !exists(\"g:NERDTreeBookmarks\")\n        let g:NERDTreeBookmarks = []\n    endif\n    return g:NERDTreeBookmarks\nendfunction\n\n\" FUNCTION: Bookmark.BookmarkExistsFor(name)   {{{1\n\" class method that returns 1 if a bookmark with the given name is found, 0\n\" otherwise\nfunction! s:Bookmark.BookmarkExistsFor(name)\n    try\n        call s:Bookmark.BookmarkFor(a:name)\n        return 1\n    catch /^NERDTree.BookmarkNotFoundError/\n        return 0\n    endtry\nendfunction\n\n\" FUNCTION: Bookmark.BookmarkFor(name)   {{{1\n\" Class method to get the bookmark that has the given name. {} is return if no\n\" bookmark is found\nfunction! s:Bookmark.BookmarkFor(name)\n    for i in s:Bookmark.Bookmarks()\n        if i.name ==# a:name\n            return i\n        endif\n    endfor\n    throw \"NERDTree.BookmarkNotFoundError: no bookmark found for name: \\\"\". a:name  .'\"'\nendfunction\n\n\" FUNCTION: Bookmark.BookmarkNames()   {{{1\n\" Class method to return an array of all bookmark names\nfunction! s:Bookmark.BookmarkNames()\n    let names = []\n    for i in s:Bookmark.Bookmarks()\n        call add(names, i.name)\n    endfor\n    return names\nendfunction\n\n\" FUNCTION: Bookmark.CacheBookmarks(silent) {{{1\n\" Class method to read all bookmarks from the bookmarks file initialize\n\" bookmark objects for each one.\n\"\n\" Args:\n\" silent - dont echo an error msg if invalid bookmarks are found\nfunction! s:Bookmark.CacheBookmarks(silent)\n    if filereadable(g:NERDTreeBookmarksFile)\n        let g:NERDTreeBookmarks = []\n        let g:NERDTreeInvalidBookmarks = []\n        let bookmarkStrings = readfile(g:NERDTreeBookmarksFile)\n        let invalidBookmarksFound = 0\n        for i in bookmarkStrings\n\n            \"ignore blank lines\n            if i != ''\n\n                let name = substitute(i, '^\\(.\\{-}\\) .*$', '\\1', '')\n                let path = substitute(i, '^.\\{-} \\(.*\\)$', '\\1', '')\n\n                try\n                    let bookmark = s:Bookmark.New(name, g:NERDTreePath.New(path))\n                    call add(g:NERDTreeBookmarks, bookmark)\n                catch /^NERDTree.InvalidArgumentsError/\n                    call add(g:NERDTreeInvalidBookmarks, i)\n                    let invalidBookmarksFound += 1\n                endtry\n            endif\n        endfor\n        if invalidBookmarksFound\n            call s:Bookmark.Write()\n            if !a:silent\n                call nerdtree#echo(invalidBookmarksFound . \" invalid bookmarks were read. See :help NERDTreeInvalidBookmarks for info.\")\n            endif\n        endif\n        call s:Bookmark.Sort()\n    endif\nendfunction\n\n\" FUNCTION: Bookmark.compareTo(otherbookmark) {{{1\n\" Compare these two bookmarks for sorting purposes\nfunction! s:Bookmark.compareTo(otherbookmark)\n    return a:otherbookmark.name < self.name\nendfunction\n\" FUNCTION: Bookmark.ClearAll() {{{1\n\" Class method to delete all bookmarks.\nfunction! s:Bookmark.ClearAll()\n    for i in s:Bookmark.Bookmarks()\n        call i.delete()\n    endfor\n    call s:Bookmark.Write()\nendfunction\n\n\" FUNCTION: Bookmark.delete() {{{1\n\" Delete this bookmark. If the node for this bookmark is under the current\n\" root, then recache bookmarks for its Path object\nfunction! s:Bookmark.delete()\n    let node = {}\n    try\n        let node = self.getNode(1)\n    catch /^NERDTree.BookmarkedNodeNotFoundError/\n    endtry\n    call remove(s:Bookmark.Bookmarks(), index(s:Bookmark.Bookmarks(), self))\n    if !empty(node)\n        call node.path.cacheDisplayString()\n    endif\n    call s:Bookmark.Write()\nendfunction\n\n\" FUNCTION: Bookmark.getNode(searchFromAbsoluteRoot) {{{1\n\" Gets the treenode for this bookmark\n\"\n\" Args:\n\" searchFromAbsoluteRoot: specifies whether we should search from the current\n\" tree root, or the highest cached node\nfunction! s:Bookmark.getNode(searchFromAbsoluteRoot)\n    let searchRoot = a:searchFromAbsoluteRoot ? g:NERDTreeDirNode.AbsoluteTreeRoot() : b:NERDTreeRoot\n    let targetNode = searchRoot.findNode(self.path)\n    if empty(targetNode)\n        throw \"NERDTree.BookmarkedNodeNotFoundError: no node was found for bookmark: \" . self.name\n    endif\n    return targetNode\nendfunction\n\n\" FUNCTION: Bookmark.GetNodeForName(name, searchFromAbsoluteRoot) {{{1\n\" Class method that finds the bookmark with the given name and returns the\n\" treenode for it.\nfunction! s:Bookmark.GetNodeForName(name, searchFromAbsoluteRoot)\n    let bookmark = s:Bookmark.BookmarkFor(a:name)\n    return bookmark.getNode(a:searchFromAbsoluteRoot)\nendfunction\n\n\" FUNCTION: Bookmark.GetSelected() {{{1\n\" returns the Bookmark the cursor is over, or {}\nfunction! s:Bookmark.GetSelected()\n    let line = getline(\".\")\n    let name = substitute(line, '^>\\(.\\{-}\\) .\\+$', '\\1', '')\n    if name != line\n        try\n            return s:Bookmark.BookmarkFor(name)\n        catch /^NERDTree.BookmarkNotFoundError/\n            return {}\n        endtry\n    endif\n    return {}\nendfunction\n\n\" FUNCTION: Bookmark.InvalidBookmarks()   {{{1\n\" Class method to get all invalid bookmark strings read from the bookmarks\n\" file\nfunction! s:Bookmark.InvalidBookmarks()\n    if !exists(\"g:NERDTreeInvalidBookmarks\")\n        let g:NERDTreeInvalidBookmarks = []\n    endif\n    return g:NERDTreeInvalidBookmarks\nendfunction\n\n\" FUNCTION: Bookmark.mustExist() {{{1\nfunction! s:Bookmark.mustExist()\n    if !self.path.exists()\n        call s:Bookmark.CacheBookmarks(1)\n        throw \"NERDTree.BookmarkPointsToInvalidLocationError: the bookmark \\\"\".\n            \\ self.name .\"\\\" points to a non existing location: \\\"\". self.path.str()\n    endif\nendfunction\n\n\" FUNCTION: Bookmark.New(name, path) {{{1\n\" Create a new bookmark object with the given name and path object\nfunction! s:Bookmark.New(name, path)\n    if a:name =~# ' '\n        throw \"NERDTree.IllegalBookmarkNameError: illegal name:\" . a:name\n    endif\n\n    let newBookmark = copy(self)\n    let newBookmark.name = a:name\n    let newBookmark.path = a:path\n    return newBookmark\nendfunction\n\n\" FUNCTION: Bookmark.open([options]) {{{1\n\"Args:\n\"A dictionary containing the following keys (all optional):\n\"  'where': Specifies whether the node should be opened in new split/tab or in\n\"           the previous window. Can be either 'v' (vertical split), 'h'\n\"           (horizontal split), 't' (new tab) or 'p' (previous window).\n\"  'reuse': if a window is displaying the file then jump the cursor there\n\"  'keepopen': dont close the tree window\n\"  'stay': open the file, but keep the cursor in the tree win\n\"\nfunction! s:Bookmark.open(...)\n    let opts = a:0 ? a:1 : {}\n\n    if self.path.isDirectory && !has_key(opts, 'where')\n        call self.toRoot()\n    else\n        let opener = g:NERDTreeOpener.New(self.path, opts)\n        call opener.open(self)\n    endif\nendfunction\n\n\" FUNCTION: Bookmark.openInNewTab(options) {{{1\n\" Create a new bookmark object with the given name and path object\nfunction! s:Bookmark.openInNewTab(options)\n    call nerdtree#deprecated('Bookmark.openInNewTab', 'is deprecated, use open() instead')\n    call self.open(a:options)\nendfunction\n\n\" FUNCTION: Bookmark.setPath(path)   {{{1\n\" makes this bookmark point to the given path\nfunction! s:Bookmark.setPath(path)\n    let self.path = a:path\nendfunction\n\n\" FUNCTION: Bookmark.Sort()   {{{1\n\" Class method that sorts all bookmarks\nfunction! s:Bookmark.Sort()\n    let CompareFunc = function(\"nerdtree#compareBookmarks\")\n    call sort(s:Bookmark.Bookmarks(), CompareFunc)\nendfunction\n\n\" FUNCTION: Bookmark.str()   {{{1\n\" Get the string that should be rendered in the view for this bookmark\nfunction! s:Bookmark.str()\n    let pathStrMaxLen = winwidth(nerdtree#getTreeWinNum()) - 4 - len(self.name)\n    if &nu\n        let pathStrMaxLen = pathStrMaxLen - &numberwidth\n    endif\n\n    let pathStr = self.path.str({'format': 'UI'})\n    if len(pathStr) > pathStrMaxLen\n        let pathStr = '<' . strpart(pathStr, len(pathStr) - pathStrMaxLen)\n    endif\n    return '>' . self.name . ' ' . pathStr\nendfunction\n\n\" FUNCTION: Bookmark.toRoot() {{{1\n\" Make the node for this bookmark the new tree root\nfunction! s:Bookmark.toRoot()\n    if self.validate()\n        try\n            let targetNode = self.getNode(1)\n        catch /^NERDTree.BookmarkedNodeNotFoundError/\n            let targetNode = g:NERDTreeFileNode.New(s:Bookmark.BookmarkFor(self.name).path)\n        endtry\n        call targetNode.makeRoot()\n        call nerdtree#renderView()\n        call targetNode.putCursorHere(0, 0)\n    endif\nendfunction\n\n\" FUNCTION: Bookmark.ToRoot(name) {{{1\n\" Make the node for this bookmark the new tree root\nfunction! s:Bookmark.ToRoot(name)\n    let bookmark = s:Bookmark.BookmarkFor(a:name)\n    call bookmark.toRoot()\nendfunction\n\n\" FUNCTION: Bookmark.validate() {{{1\nfunction! s:Bookmark.validate()\n    if self.path.exists()\n        return 1\n    else\n        call s:Bookmark.CacheBookmarks(1)\n        call nerdtree#renderView()\n        call nerdtree#echo(self.name . \"now points to an invalid location. See :help NERDTreeInvalidBookmarks for info.\")\n        return 0\n    endif\nendfunction\n\n\" FUNCTION: Bookmark.Write()   {{{1\n\" Class method to write all bookmarks to the bookmarks file\nfunction! s:Bookmark.Write()\n    let bookmarkStrings = []\n    for i in s:Bookmark.Bookmarks()\n        call add(bookmarkStrings, i.name . ' ' . i.path.str())\n    endfor\n\n    \"add a blank line before the invalid ones\n    call add(bookmarkStrings, \"\")\n\n    for j in s:Bookmark.InvalidBookmarks()\n        call add(bookmarkStrings, j)\n    endfor\n    call writefile(bookmarkStrings, g:NERDTreeBookmarksFile)\nendfunction\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/nerdtree/lib/nerdtree/creator.vim",
    "content": "\"CLASS: Creator\n\"Creates primary/secondary/mirror nerdtree windows. Sets up all the window and\n\"buffer options and key mappings etc.\n\"============================================================\nlet s:Creator = {}\nlet g:NERDTreeCreator = s:Creator\n\n\"FUNCTION: s:Creator._bindMappings() {{{1\nfunction! s:Creator._bindMappings()\n    \"make <cr> do the same as the default 'o' mapping\n    exec \"nnoremap <silent> <buffer> <cr> :call nerdtree#invokeKeyMap('\". g:NERDTreeMapActivateNode .\"')<cr>\"\n\n    call g:NERDTreeKeyMap.BindAll()\n\n    command! -buffer -nargs=? Bookmark :call nerdtree#bookmarkNode('<args>')\n    command! -buffer -complete=customlist,nerdtree#completeBookmarks -nargs=1 RevealBookmark :call nerdtree#revealBookmark('<args>')\n    command! -buffer -complete=customlist,nerdtree#completeBookmarks -nargs=1 OpenBookmark :call nerdtree#openBookmark('<args>')\n    command! -buffer -complete=customlist,nerdtree#completeBookmarks -nargs=* ClearBookmarks call nerdtree#clearBookmarks('<args>')\n    command! -buffer -complete=customlist,nerdtree#completeBookmarks -nargs=+ BookmarkToRoot call g:NERDTreeBookmark.ToRoot('<args>')\n    command! -buffer -nargs=0 ClearAllBookmarks call g:NERDTreeBookmark.ClearAll() <bar> call nerdtree#renderView()\n    command! -buffer -nargs=0 ReadBookmarks call g:NERDTreeBookmark.CacheBookmarks(0) <bar> call nerdtree#renderView()\n    command! -buffer -nargs=0 WriteBookmarks call g:NERDTreeBookmark.Write()\nendfunction\n\n\"FUNCTION: s:Creator._broadcastInitEvent() {{{1\nfunction! s:Creator._broadcastInitEvent()\n    silent doautocmd User NERDTreeInit\nendfunction\n\n\" FUNCTION: s:Creator.BufNamePrefix() {{{2\nfunction! s:Creator.BufNamePrefix()\n    return 'NERD_tree_'\nendfunction\n\n\"FUNCTION: s:Creator.CreatePrimary(a:name) {{{1\nfunction! s:Creator.CreatePrimary(name)\n    let creator = s:Creator.New()\n    call creator.createPrimary(a:name)\nendfunction\n\n\"FUNCTION: s:Creator.createPrimary(a:name) {{{1\n\"name: the name of a bookmark or a directory\nfunction! s:Creator.createPrimary(name)\n    let path = self._pathForString(a:name)\n\n    \"if instructed to, then change the vim CWD to the dir the NERDTree is\n    \"inited in\n    if g:NERDTreeChDirMode != 0\n        call path.changeToDir()\n    endif\n\n    if nerdtree#treeExistsForTab()\n        if nerdtree#isTreeOpen()\n            call nerdtree#closeTree()\n        endif\n        unlet t:NERDTreeBufName\n    endif\n\n    let newRoot = g:NERDTreeDirNode.New(path)\n    call newRoot.open()\n\n    call self._createTreeWin()\n    let b:treeShowHelp = 0\n    let b:NERDTreeIgnoreEnabled = 1\n    let b:NERDTreeShowFiles = g:NERDTreeShowFiles\n    let b:NERDTreeShowHidden = g:NERDTreeShowHidden\n    let b:NERDTreeShowBookmarks = g:NERDTreeShowBookmarks\n    let b:NERDTreeRoot = newRoot\n    let b:NERDTreeType = \"primary\"\n\n    call nerdtree#renderView()\n    call b:NERDTreeRoot.putCursorHere(0, 0)\n\n    call self._broadcastInitEvent()\nendfunction\n\n\"FUNCTION: s:Creator.CreateSecondary(dir) {{{1\nfunction! s:Creator.CreateSecondary(dir)\n    let creator = s:Creator.New()\n    call creator.createSecondary(a:dir)\nendfunction\n\n\"FUNCTION: s:Creator.createSecondary(dir) {{{1\nfunction! s:Creator.createSecondary(dir)\n    try\n        let path = g:NERDTreePath.New(a:dir)\n    catch /^NERDTree.InvalidArgumentsError/\n        call nerdtree#echo(\"Invalid directory name:\" . a:name)\n        return\n    endtry\n\n    \"we want the directory buffer to disappear when we do the :edit below\n    setlocal bufhidden=wipe\n\n    let previousBuf = expand(\"#\")\n\n    \"we need a unique name for each secondary tree buffer to ensure they are\n    \"all independent\n    exec \"silent edit \" . self._nextBufferName()\n\n    let b:NERDTreePreviousBuf = bufnr(previousBuf)\n\n    let b:NERDTreeRoot = g:NERDTreeDirNode.New(path)\n    call b:NERDTreeRoot.open()\n\n    call self._setCommonBufOptions()\n    let b:NERDTreeType = \"secondary\"\n\n    call nerdtree#renderView()\n\n    call self._broadcastInitEvent()\nendfunction\n\n\" FUNCTION: s:Creator.CreateMirror() {{{1\nfunction! s:Creator.CreateMirror()\n    let creator = s:Creator.New()\n    call creator.createMirror()\nendfunction\n\n\" FUNCTION: s:Creator.createMirror() {{{1\nfunction! s:Creator.createMirror()\n    \"get the names off all the nerd tree buffers\n    let treeBufNames = []\n    for i in range(1, tabpagenr(\"$\"))\n        let nextName = nerdtree#tabpagevar(i, 'NERDTreeBufName')\n        if nextName != -1 && (!exists(\"t:NERDTreeBufName\") || nextName != t:NERDTreeBufName)\n            call add(treeBufNames, nextName)\n        endif\n    endfor\n    let treeBufNames = nerdtree#unique(treeBufNames)\n\n    \"map the option names (that the user will be prompted with) to the nerd\n    \"tree buffer names\n    let options = {}\n    let i = 0\n    while i < len(treeBufNames)\n        let bufName = treeBufNames[i]\n        let treeRoot = getbufvar(bufName, \"NERDTreeRoot\")\n        let options[i+1 . '. ' . treeRoot.path.str() . '  (buf name: ' . bufName . ')'] = bufName\n        let i = i + 1\n    endwhile\n\n    \"work out which tree to mirror, if there is more than 1 then ask the user\n    let bufferName = ''\n    if len(keys(options)) > 1\n        let choices = [\"Choose a tree to mirror\"]\n        let choices = extend(choices, sort(keys(options)))\n        let choice = inputlist(choices)\n        if choice < 1 || choice > len(options) || choice ==# ''\n            return\n        endif\n\n        let bufferName = options[sort(keys(options))[choice-1]]\n    elseif len(keys(options)) ==# 1\n        let bufferName = values(options)[0]\n    else\n        call nerdtree#echo(\"No trees to mirror\")\n        return\n    endif\n\n    if nerdtree#treeExistsForTab() && nerdtree#isTreeOpen()\n        call nerdtree#closeTree()\n    endif\n\n    let t:NERDTreeBufName = bufferName\n    call self._createTreeWin()\n    exec 'buffer ' .  bufferName\n    if !&hidden\n        call nerdtree#renderView()\n    endif\nendfunction\n\n\"FUNCTION: s:Creator._createTreeWin() {{{1\n\"Inits the NERD tree window. ie. opens it, sizes it, sets all the local\n\"options etc\nfunction! s:Creator._createTreeWin()\n    \"create the nerd tree window\n    let splitLocation = g:NERDTreeWinPos ==# \"left\" ? \"topleft \" : \"botright \"\n    let splitSize = g:NERDTreeWinSize\n\n    if !exists('t:NERDTreeBufName')\n        let t:NERDTreeBufName = self._nextBufferName()\n        silent! exec splitLocation . 'vertical ' . splitSize . ' new'\n        silent! exec \"edit \" . t:NERDTreeBufName\n    else\n        silent! exec splitLocation . 'vertical ' . splitSize . ' split'\n        silent! exec \"buffer \" . t:NERDTreeBufName\n    endif\n\n    setlocal winfixwidth\n    call self._setCommonBufOptions()\nendfunction\n\n\"FUNCTION: s:Creator.New() {{{1\nfunction! s:Creator.New()\n    let newCreator = copy(self)\n    return newCreator\nendfunction\n\n\" FUNCTION: s:Creator._nextBufferName() {{{2\n\" returns the buffer name for the next nerd tree\nfunction! s:Creator._nextBufferName()\n    let name = s:Creator.BufNamePrefix() . self._nextBufferNumber()\n    return name\nendfunction\n\n\" FUNCTION: s:Creator._nextBufferNumber() {{{2\n\" the number to add to the nerd tree buffer name to make the buf name unique\nfunction! s:Creator._nextBufferNumber()\n    if !exists(\"s:Creator._NextBufNum\")\n        let s:Creator._NextBufNum = 1\n    else\n        let s:Creator._NextBufNum += 1\n    endif\n\n    return s:Creator._NextBufNum\nendfunction\n\n\"FUNCTION: s:Creator._pathForString(str) {{{1\n\"find a bookmark or adirectory for the given string\nfunction! s:Creator._pathForString(str)\n    let path = {}\n    if g:NERDTreeBookmark.BookmarkExistsFor(a:str)\n        let path = g:NERDTreeBookmark.BookmarkFor(a:str).path\n    else\n        let dir = a:str ==# '' ? getcwd() : a:str\n\n        \"hack to get an absolute path if a relative path is given\n        if dir =~# '^\\.'\n            let dir = getcwd() . g:NERDTreePath.Slash() . dir\n        endif\n        let dir = g:NERDTreePath.Resolve(dir)\n\n        try\n            let path = g:NERDTreePath.New(dir)\n        catch /^NERDTree.InvalidArgumentsError/\n            call nerdtree#echo(\"No bookmark or directory found for: \" . a:str)\n            return\n        endtry\n    endif\n    if !path.isDirectory\n        let path = path.getParent()\n    endif\n\n    return path\nendfunction\n\n\"FUNCTION: s:Creator._setCommonBufOptions() {{{1\nfunction! s:Creator._setCommonBufOptions()\n    \"throwaway buffer options\n    setlocal noswapfile\n    setlocal buftype=nofile\n    setlocal bufhidden=hide\n    setlocal nowrap\n    setlocal foldcolumn=0\n    setlocal foldmethod=manual\n    setlocal nofoldenable\n    setlocal nobuflisted\n    setlocal nospell\n    if g:NERDTreeShowLineNumbers\n        setlocal nu\n    else\n        setlocal nonu\n        if v:version >= 703\n            setlocal nornu\n        endif\n    endif\n\n    iabc <buffer>\n\n    if g:NERDTreeHighlightCursorline\n        setlocal cursorline\n    endif\n\n    call self._setupStatusline()\n\n    let b:treeShowHelp = 0\n    let b:NERDTreeIgnoreEnabled = 1\n    let b:NERDTreeShowFiles = g:NERDTreeShowFiles\n    let b:NERDTreeShowHidden = g:NERDTreeShowHidden\n    let b:NERDTreeShowBookmarks = g:NERDTreeShowBookmarks\n    setfiletype nerdtree\n    call self._bindMappings()\nendfunction\n\n\"FUNCTION: s:Creator._setupStatusline() {{{1\nfunction! s:Creator._setupStatusline()\n    if g:NERDTreeStatusline != -1\n        let &l:statusline = g:NERDTreeStatusline\n    endif\nendfunction\n\n\"FUNCTION: s:Creator.TogglePrimary(dir) {{{1\nfunction! s:Creator.TogglePrimary(dir)\n    let creator = s:Creator.New()\n    call creator.togglePrimary(a:dir)\nendfunction\n\n\"FUNCTION: s:Creator.togglePrimary(dir) {{{1\n\"Toggles the NERD tree. I.e the NERD tree is open, it is closed, if it is\n\"closed it is restored or initialized (if it doesnt exist)\n\"\n\"Args:\n\"dir: the full path for the root node (is only used if the NERD tree is being\n\"initialized.\nfunction! s:Creator.togglePrimary(dir)\n    if nerdtree#treeExistsForTab()\n        if !nerdtree#isTreeOpen()\n            call self._createTreeWin()\n            if !&hidden\n                call nerdtree#renderView()\n            endif\n            call nerdtree#restoreScreenState()\n        else\n            call nerdtree#closeTree()\n        endif\n    else\n        call self.createPrimary(a:dir)\n    endif\nendfunction\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/nerdtree/lib/nerdtree/key_map.vim",
    "content": "\"CLASS: KeyMap\n\"============================================================\nlet s:KeyMap = {}\nlet g:NERDTreeKeyMap = s:KeyMap\n\n\"FUNCTION: KeyMap.All() {{{1\nfunction! s:KeyMap.All()\n    if !exists(\"s:keyMaps\")\n        let s:keyMaps = []\n    endif\n    return s:keyMaps\nendfunction\n\n\"FUNCTION: KeyMap.FindFor(key, scope) {{{1\nfunction! s:KeyMap.FindFor(key, scope)\n    for i in s:KeyMap.All()\n         if i.key ==# a:key && i.scope ==# a:scope\n            return i\n        endif\n    endfor\n    return {}\nendfunction\n\n\"FUNCTION: KeyMap.BindAll() {{{1\nfunction! s:KeyMap.BindAll()\n    for i in s:KeyMap.All()\n        call i.bind()\n    endfor\nendfunction\n\n\"FUNCTION: KeyMap.bind() {{{1\nfunction! s:KeyMap.bind()\n    \" If the key sequence we're trying to map contains any '<>' notation, we\n    \" must replace each of the '<' characters with '<lt>' to ensure the string\n    \" is not translated into its corresponding keycode during the later part\n    \" of the map command below\n    \" :he <>\n    let specialNotationRegex = '\\m<\\([[:alnum:]_-]\\+>\\)'\n    if self.key =~# specialNotationRegex\n        let keymapInvokeString = substitute(self.key, specialNotationRegex, '<lt>\\1', 'g')\n    else\n        let keymapInvokeString = self.key\n    endif\n\n    let premap = self.key == \"<LeftRelease>\" ? \" <LeftRelease>\" : \" \"\n\n    exec 'nnoremap <buffer> <silent> '. self.key . premap . ':call nerdtree#invokeKeyMap(\"'. keymapInvokeString .'\")<cr>'\nendfunction\n\n\"FUNCTION: KeyMap.Remove(key, scope) {{{1\nfunction! s:KeyMap.Remove(key, scope)\n    let maps = s:KeyMap.All()\n    for i in range(len(maps))\n         if maps[i].key ==# a:key && maps[i].scope ==# a:scope\n            return remove(maps, i)\n        endif\n    endfor\nendfunction\n\n\"FUNCTION: KeyMap.invoke() {{{1\n\"Call the KeyMaps callback function\nfunction! s:KeyMap.invoke(...)\n    let Callback = function(self.callback)\n    if a:0\n        call Callback(a:1)\n    else\n        call Callback()\n    endif\nendfunction\n\n\"FUNCTION: KeyMap.Invoke() {{{1\n\"Find a keymapping for a:key and the current scope invoke it.\n\"\n\"Scope is determined as follows:\n\"   * if the cursor is on a dir node then \"DirNode\"\n\"   * if the cursor is on a file node then \"FileNode\"\n\"   * if the cursor is on a bookmark then \"Bookmark\"\n\"\n\"If a keymap has the scope of \"all\" then it will be called if no other keymap\n\"is found for a:key and the scope.\nfunction! s:KeyMap.Invoke(key)\n    let node = g:NERDTreeFileNode.GetSelected()\n    if !empty(node)\n\n        \"try file node\n        if !node.path.isDirectory\n            let km = s:KeyMap.FindFor(a:key, \"FileNode\")\n            if !empty(km)\n                return km.invoke(node)\n            endif\n        endif\n\n        \"try dir node\n        if node.path.isDirectory\n            let km = s:KeyMap.FindFor(a:key, \"DirNode\")\n            if !empty(km)\n                return km.invoke(node)\n            endif\n        endif\n\n        \"try generic node\n        let km = s:KeyMap.FindFor(a:key, \"Node\")\n        if !empty(km)\n            return km.invoke(node)\n        endif\n\n    endif\n\n    \"try bookmark\n    let bm = g:NERDTreeBookmark.GetSelected()\n    if !empty(bm)\n        let km = s:KeyMap.FindFor(a:key, \"Bookmark\")\n        if !empty(km)\n            return km.invoke(bm)\n        endif\n    endif\n\n    \"try all\n    let km = s:KeyMap.FindFor(a:key, \"all\")\n    if !empty(km)\n        return km.invoke()\n    endif\nendfunction\n\n\"FUNCTION: KeyMap.Create(options) {{{1\nfunction! s:KeyMap.Create(options)\n    let newKeyMap = copy(self)\n    let opts = extend({'scope': 'all', 'quickhelpText': ''}, copy(a:options))\n    let newKeyMap.key = opts['key']\n    let newKeyMap.quickhelpText = opts['quickhelpText']\n    let newKeyMap.callback = opts['callback']\n    let newKeyMap.scope = opts['scope']\n\n    call s:KeyMap.Add(newKeyMap)\nendfunction\n\n\"FUNCTION: KeyMap.Add(keymap) {{{1\nfunction! s:KeyMap.Add(keymap)\n    call s:KeyMap.Remove(a:keymap.key, a:keymap.scope)\n    call add(s:KeyMap.All(), a:keymap)\nendfunction\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/nerdtree/lib/nerdtree/menu_controller.vim",
    "content": "\"CLASS: MenuController\n\"============================================================\nlet s:MenuController = {}\nlet g:NERDTreeMenuController = s:MenuController\n\n\"FUNCTION: MenuController.New(menuItems) {{{1\n\"create a new menu controller that operates on the given menu items\nfunction! s:MenuController.New(menuItems)\n    let newMenuController =  copy(self)\n    if a:menuItems[0].isSeparator()\n        let newMenuController.menuItems = a:menuItems[1:-1]\n    else\n        let newMenuController.menuItems = a:menuItems\n    endif\n    return newMenuController\nendfunction\n\n\"FUNCTION: MenuController.showMenu() {{{1\n\"start the main loop of the menu and get the user to choose/execute a menu\n\"item\nfunction! s:MenuController.showMenu()\n    call self._saveOptions()\n\n    try\n        let self.selection = 0\n\n        let done = 0\n        while !done\n            redraw!\n            call self._echoPrompt()\n            let key = nr2char(getchar())\n            let done = self._handleKeypress(key)\n        endwhile\n    finally\n        call self._restoreOptions()\n    endtry\n\n    if self.selection != -1\n        let m = self._current()\n        call m.execute()\n    endif\nendfunction\n\n\"FUNCTION: MenuController._echoPrompt() {{{1\nfunction! s:MenuController._echoPrompt()\n    echo \"NERDTree Menu. Use j/k/enter and the shortcuts indicated\"\n    echo \"==========================================================\"\n\n    for i in range(0, len(self.menuItems)-1)\n        if self.selection == i\n            echo \"> \" . self.menuItems[i].text\n        else\n            echo \"  \" . self.menuItems[i].text\n        endif\n    endfor\nendfunction\n\n\"FUNCTION: MenuController._current(key) {{{1\n\"get the MenuItem that is currently selected\nfunction! s:MenuController._current()\n    return self.menuItems[self.selection]\nendfunction\n\n\"FUNCTION: MenuController._handleKeypress(key) {{{1\n\"change the selection (if appropriate) and return 1 if the user has made\n\"their choice, 0 otherwise\nfunction! s:MenuController._handleKeypress(key)\n    if a:key == 'j'\n        call self._cursorDown()\n    elseif a:key == 'k'\n        call self._cursorUp()\n    elseif a:key == nr2char(27) \"escape\n        let self.selection = -1\n        return 1\n    elseif a:key == \"\\r\" || a:key == \"\\n\" \"enter and ctrl-j\n        return 1\n    else\n        let index = self._nextIndexFor(a:key)\n        if index != -1\n            let self.selection = index\n            if len(self._allIndexesFor(a:key)) == 1\n                return 1\n            endif\n        endif\n    endif\n\n    return 0\nendfunction\n\n\"FUNCTION: MenuController._allIndexesFor(shortcut) {{{1\n\"get indexes to all menu items with the given shortcut\nfunction! s:MenuController._allIndexesFor(shortcut)\n    let toReturn = []\n\n    for i in range(0, len(self.menuItems)-1)\n        if self.menuItems[i].shortcut == a:shortcut\n            call add(toReturn, i)\n        endif\n    endfor\n\n    return toReturn\nendfunction\n\n\"FUNCTION: MenuController._nextIndexFor(shortcut) {{{1\n\"get the index to the next menu item with the given shortcut, starts from the\n\"current cursor location and wraps around to the top again if need be\nfunction! s:MenuController._nextIndexFor(shortcut)\n    for i in range(self.selection+1, len(self.menuItems)-1)\n        if self.menuItems[i].shortcut == a:shortcut\n            return i\n        endif\n    endfor\n\n    for i in range(0, self.selection)\n        if self.menuItems[i].shortcut == a:shortcut\n            return i\n        endif\n    endfor\n\n    return -1\nendfunction\n\n\"FUNCTION: MenuController._setCmdheight() {{{1\n\"sets &cmdheight to whatever is needed to display the menu\nfunction! s:MenuController._setCmdheight()\n    let &cmdheight = len(self.menuItems) + 3\nendfunction\n\n\"FUNCTION: MenuController._saveOptions() {{{1\n\"set any vim options that are required to make the menu work (saving their old\n\"values)\nfunction! s:MenuController._saveOptions()\n    let self._oldLazyredraw = &lazyredraw\n    let self._oldCmdheight = &cmdheight\n    set nolazyredraw\n    call self._setCmdheight()\nendfunction\n\n\"FUNCTION: MenuController._restoreOptions() {{{1\n\"restore the options we saved in _saveOptions()\nfunction! s:MenuController._restoreOptions()\n    let &cmdheight = self._oldCmdheight\n    let &lazyredraw = self._oldLazyredraw\nendfunction\n\n\"FUNCTION: MenuController._cursorDown() {{{1\n\"move the cursor to the next menu item, skipping separators\nfunction! s:MenuController._cursorDown()\n    let done = 0\n    while !done\n        if self.selection < len(self.menuItems)-1\n            let self.selection += 1\n        else\n            let self.selection = 0\n        endif\n\n        if !self._current().isSeparator()\n            let done = 1\n        endif\n    endwhile\nendfunction\n\n\"FUNCTION: MenuController._cursorUp() {{{1\n\"move the cursor to the previous menu item, skipping separators\nfunction! s:MenuController._cursorUp()\n    let done = 0\n    while !done\n        if self.selection > 0\n            let self.selection -= 1\n        else\n            let self.selection = len(self.menuItems)-1\n        endif\n\n        if !self._current().isSeparator()\n            let done = 1\n        endif\n    endwhile\nendfunction\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/nerdtree/lib/nerdtree/menu_item.vim",
    "content": "\"CLASS: MenuItem\n\"============================================================\nlet s:MenuItem = {}\nlet g:NERDTreeMenuItem = s:MenuItem\n\n\"FUNCTION: MenuItem.All() {{{1\n\"get all top level menu items\nfunction! s:MenuItem.All()\n    if !exists(\"s:menuItems\")\n        let s:menuItems = []\n    endif\n    return s:menuItems\nendfunction\n\n\"FUNCTION: MenuItem.AllEnabled() {{{1\n\"get all top level menu items that are currently enabled\nfunction! s:MenuItem.AllEnabled()\n    let toReturn = []\n    for i in s:MenuItem.All()\n        if i.enabled()\n            call add(toReturn, i)\n        endif\n    endfor\n    return toReturn\nendfunction\n\n\"FUNCTION: MenuItem.Create(options) {{{1\n\"make a new menu item and add it to the global list\nfunction! s:MenuItem.Create(options)\n    let newMenuItem = copy(self)\n\n    let newMenuItem.text = a:options['text']\n    let newMenuItem.shortcut = a:options['shortcut']\n    let newMenuItem.children = []\n\n    let newMenuItem.isActiveCallback = -1\n    if has_key(a:options, 'isActiveCallback')\n        let newMenuItem.isActiveCallback = a:options['isActiveCallback']\n    endif\n\n    let newMenuItem.callback = -1\n    if has_key(a:options, 'callback')\n        let newMenuItem.callback = a:options['callback']\n    endif\n\n    if has_key(a:options, 'parent')\n        call add(a:options['parent'].children, newMenuItem)\n    else\n        call add(s:MenuItem.All(), newMenuItem)\n    endif\n\n    return newMenuItem\nendfunction\n\n\"FUNCTION: MenuItem.CreateSeparator(options) {{{1\n\"make a new separator menu item and add it to the global list\nfunction! s:MenuItem.CreateSeparator(options)\n    let standard_options = { 'text': '--------------------',\n                \\ 'shortcut': -1,\n                \\ 'callback': -1 }\n    let options = extend(a:options, standard_options, \"force\")\n\n    return s:MenuItem.Create(options)\nendfunction\n\n\"FUNCTION: MenuItem.CreateSubmenu(options) {{{1\n\"make a new submenu and add it to global list\nfunction! s:MenuItem.CreateSubmenu(options)\n    let standard_options = { 'callback': -1 }\n    let options = extend(a:options, standard_options, \"force\")\n\n    return s:MenuItem.Create(options)\nendfunction\n\n\"FUNCTION: MenuItem.enabled() {{{1\n\"return 1 if this menu item should be displayed\n\"\n\"delegates off to the isActiveCallback, and defaults to 1 if no callback was\n\"specified\nfunction! s:MenuItem.enabled()\n    if self.isActiveCallback != -1\n        return {self.isActiveCallback}()\n    endif\n    return 1\nendfunction\n\n\"FUNCTION: MenuItem.execute() {{{1\n\"perform the action behind this menu item, if this menuitem has children then\n\"display a new menu for them, otherwise deletegate off to the menuitem's\n\"callback\nfunction! s:MenuItem.execute()\n    if len(self.children)\n        let mc = s:MenuController.New(self.children)\n        call mc.showMenu()\n    else\n        if self.callback != -1\n            call {self.callback}()\n        endif\n    endif\nendfunction\n\n\"FUNCTION: MenuItem.isSeparator() {{{1\n\"return 1 if this menuitem is a separator\nfunction! s:MenuItem.isSeparator()\n    return self.callback == -1 && self.children == []\nendfunction\n\n\"FUNCTION: MenuItem.isSubmenu() {{{1\n\"return 1 if this menuitem is a submenu\nfunction! s:MenuItem.isSubmenu()\n    return self.callback == -1 && !empty(self.children)\nendfunction\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/nerdtree/lib/nerdtree/opener.vim",
    "content": "\"CLASS: Opener\n\"============================================================\nlet s:Opener = {}\nlet g:NERDTreeOpener = s:Opener\n\n\"FUNCTION: Opener._checkToCloseTree(newtab) {{{1\n\"Check the class options and global options (i.e. NERDTreeQuitOnOpen) to see\n\"if the tree should be closed now.\n\"\n\"Args:\n\"a:newtab - boolean. If set, only close the tree now if we are opening the\n\"target in a new tab. This is needed because we have to close tree before we\n\"leave the tab\nfunction! s:Opener._checkToCloseTree(newtab)\n    if self._keepopen\n        return\n    endif\n\n    if (a:newtab && self._where == 't') || !a:newtab\n        call nerdtree#closeTreeIfQuitOnOpen()\n    endif\nendfunction\n\n\"FUNCTION: Opener._gotoTargetWin() {{{1\nfunction! s:Opener._gotoTargetWin()\n    if b:NERDTreeType ==# \"secondary\"\n        if self._where == 'v'\n            vsplit\n        elseif self._where == 'h'\n            split\n        elseif self._where == 't'\n            tabnew\n        endif\n    else\n        call self._checkToCloseTree(1)\n\n        if self._where == 'v'\n            call self._newVSplit()\n        elseif self._where == 'h'\n            call self._newSplit()\n        elseif self._where == 't'\n            tabnew\n        elseif self._where == 'p'\n            call self._previousWindow()\n        endif\n\n        call self._checkToCloseTree(0)\n    endif\nendfunction\n\n\"FUNCTION: Opener.New(path, opts) {{{1\n\"Args:\n\"\n\"a:path: The path object that is to be opened.\n\"\n\"a:opts:\n\"\n\"A dictionary containing the following keys (all optional):\n\"  'where': Specifies whether the node should be opened in new split/tab or in\n\"           the previous window. Can be either 'v' or 'h' or 't' (for open in\n\"           new tab)\n\"  'reuse': if a window is displaying the file then jump the cursor there\n\"  'keepopen': dont close the tree window\n\"  'stay': open the file, but keep the cursor in the tree win\nfunction! s:Opener.New(path, opts)\n    let newObj = copy(self)\n\n    let newObj._path = a:path\n    let newObj._stay = nerdtree#has_opt(a:opts, 'stay')\n    let newObj._reuse = nerdtree#has_opt(a:opts, 'reuse')\n    let newObj._keepopen = nerdtree#has_opt(a:opts, 'keepopen')\n    let newObj._where = has_key(a:opts, 'where') ? a:opts['where'] : ''\n    let newObj._treetype = b:NERDTreeType\n    call newObj._saveCursorPos()\n\n    return newObj\nendfunction\n\n\"FUNCTION: Opener._newSplit() {{{1\nfunction! s:Opener._newSplit()\n    \" Save the user's settings for splitbelow and splitright\n    let savesplitbelow=&splitbelow\n    let savesplitright=&splitright\n\n    \" 'there' will be set to a command to move from the split window\n    \" back to the explorer window\n    \"\n    \" 'back' will be set to a command to move from the explorer window\n    \" back to the newly split window\n    \"\n    \" 'right' and 'below' will be set to the settings needed for\n    \" splitbelow and splitright IF the explorer is the only window.\n    \"\n    let there= g:NERDTreeWinPos ==# \"left\" ? \"wincmd h\" : \"wincmd l\"\n    let back = g:NERDTreeWinPos ==# \"left\" ? \"wincmd l\" : \"wincmd h\"\n    let right= g:NERDTreeWinPos ==# \"left\"\n    let below=0\n\n    \" Attempt to go to adjacent window\n    call nerdtree#exec(back)\n\n    let onlyOneWin = (winnr(\"$\") ==# 1)\n\n    \" If no adjacent window, set splitright and splitbelow appropriately\n    if onlyOneWin\n        let &splitright=right\n        let &splitbelow=below\n    else\n        \" found adjacent window - invert split direction\n        let &splitright=!right\n        let &splitbelow=!below\n    endif\n\n    let splitMode = onlyOneWin ? \"vertical\" : \"\"\n\n    \" Open the new window\n    try\n        exec(splitMode.\" sp \")\n    catch /^Vim\\%((\\a\\+)\\)\\=:E37/\n        call nerdtree#putCursorInTreeWin()\n        throw \"NERDTree.FileAlreadyOpenAndModifiedError: \". self._path.str() .\" is already open and modified.\"\n    catch /^Vim\\%((\\a\\+)\\)\\=:/\n        \"do nothing\n    endtry\n\n    \"resize the tree window if no other window was open before\n    if onlyOneWin\n        let size = exists(\"b:NERDTreeOldWindowSize\") ? b:NERDTreeOldWindowSize : g:NERDTreeWinSize\n        call nerdtree#exec(there)\n        exec(\"silent \". splitMode .\" resize \". size)\n        call nerdtree#exec('wincmd p')\n    endif\n\n    \" Restore splitmode settings\n    let &splitbelow=savesplitbelow\n    let &splitright=savesplitright\nendfunction\n\n\"FUNCTION: Opener._newVSplit() {{{1\nfunction! s:Opener._newVSplit()\n    let winwidth = winwidth(\".\")\n    if winnr(\"$\")==#1\n        let winwidth = g:NERDTreeWinSize\n    endif\n\n    call nerdtree#exec(\"wincmd p\")\n    vnew\n\n    \"resize the nerd tree back to the original size\n    call nerdtree#putCursorInTreeWin()\n    exec(\"silent vertical resize \". winwidth)\n    call nerdtree#exec('wincmd p')\nendfunction\n\n\"FUNCTION: Opener.open(target) {{{1\nfunction! s:Opener.open(target)\n    if self._path.isDirectory\n        call self._openDirectory(a:target)\n    else\n        call self._openFile()\n    endif\nendfunction\n\n\"FUNCTION: Opener._openFile() {{{1\nfunction! s:Opener._openFile()\n    if self._reuse && self._reuseWindow()\n        return\n    endif\n\n    call self._gotoTargetWin()\n\n    if self._treetype ==# \"secondary\"\n        call self._path.edit()\n    else\n        call self._path.edit()\n\n\n        if self._stay\n            call self._restoreCursorPos()\n        endif\n    endif\nendfunction\n\n\"FUNCTION: Opener._openDirectory(node) {{{1\nfunction! s:Opener._openDirectory(node)\n    if self._treetype ==# \"secondary\"\n        call self._gotoTargetWin()\n        call g:NERDTreeCreator.CreateSecondary(a:node.path.str())\n    else\n        call self._gotoTargetWin()\n        if empty(self._where)\n            call a:node.makeRoot()\n            call nerdtree#renderView()\n            call a:node.putCursorHere(0, 0)\n        elseif self._where == 't'\n            call g:NERDTreeCreator.CreatePrimary(a:node.path.str())\n        else\n            call g:NERDTreeCreator.CreateSecondary(a:node.path.str())\n        endif\n    endif\n\n    if self._stay\n        call self._restoreCursorPos()\n    endif\nendfunction\n\n\"FUNCTION: Opener._previousWindow() {{{1\nfunction! s:Opener._previousWindow()\n    if !nerdtree#isWindowUsable(winnr(\"#\")) && nerdtree#firstUsableWindow() ==# -1\n        call self._newSplit()\n    else\n        try\n            if !nerdtree#isWindowUsable(winnr(\"#\"))\n                call nerdtree#exec(nerdtree#firstUsableWindow() . \"wincmd w\")\n            else\n                call nerdtree#exec('wincmd p')\n            endif\n        catch /^Vim\\%((\\a\\+)\\)\\=:E37/\n            call nerdtree#putCursorInTreeWin()\n            throw \"NERDTree.FileAlreadyOpenAndModifiedError: \". self._path.str() .\" is already open and modified.\"\n        catch /^Vim\\%((\\a\\+)\\)\\=:/\n            echo v:exception\n        endtry\n    endif\nendfunction\n\n\"FUNCTION: Opener._restoreCursorPos(){{{1\nfunction! s:Opener._restoreCursorPos()\n    call nerdtree#exec('normal ' . self._tabnr . 'gt')\n    call nerdtree#exec(bufwinnr(self._bufnr) . 'wincmd w')\nendfunction\n\n\"FUNCTION: Opener._reuseWindow(){{{1\n\"put the cursor in the first window we find for this file\n\"\n\"return 1 if we were successful\nfunction! s:Opener._reuseWindow()\n    \"check the current tab for the window\n    let winnr = bufwinnr('^' . self._path.str() . '$')\n    if winnr != -1\n        call nerdtree#exec(winnr . \"wincmd w\")\n        call self._checkToCloseTree(0)\n        return 1\n    else\n        \"check other tabs\n        let tabnr = self._path.tabnr()\n        if tabnr\n            call self._checkToCloseTree(1)\n            call nerdtree#exec('normal! ' . tabnr . 'gt')\n            let winnr = bufwinnr('^' . self._path.str() . '$')\n            call nerdtree#exec(winnr . \"wincmd w\")\n            return 1\n        endif\n    endif\n    return 0\nendfunction\n\n\"FUNCTION: Opener._saveCursorPos(){{{1\nfunction! s:Opener._saveCursorPos()\n    let self._bufnr = bufnr(\"\")\n    let self._tabnr = tabpagenr()\nendfunction\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/nerdtree/lib/nerdtree/path.vim",
    "content": "\"we need to use this number many times for sorting... so we calculate it only\n\"once here\nlet s:NERDTreeSortStarIndex = index(g:NERDTreeSortOrder, '*')\n\n\"CLASS: Path\n\"============================================================\nlet s:Path = {}\nlet g:NERDTreePath = s:Path\n\n\"FUNCTION: Path.AbsolutePathFor(str) {{{1\nfunction! s:Path.AbsolutePathFor(str)\n    let prependCWD = 0\n    if nerdtree#runningWindows()\n        let prependCWD = a:str !~# '^.:\\(\\\\\\|\\/\\)' && a:str !~# '^\\(\\\\\\\\\\|\\/\\/\\)'\n    else\n        let prependCWD = a:str !~# '^/'\n    endif\n\n    let toReturn = a:str\n    if prependCWD\n        let toReturn = getcwd() . s:Path.Slash() . a:str\n    endif\n\n    return toReturn\nendfunction\n\n\"FUNCTION: Path.bookmarkNames() {{{1\nfunction! s:Path.bookmarkNames()\n    if !exists(\"self._bookmarkNames\")\n        call self.cacheDisplayString()\n    endif\n    return self._bookmarkNames\nendfunction\n\n\"FUNCTION: Path.cacheDisplayString() {{{1\nfunction! s:Path.cacheDisplayString()\n    let self.cachedDisplayString = self.getLastPathComponent(1)\n\n    if self.isExecutable\n        let self.cachedDisplayString = self.cachedDisplayString . '*'\n    endif\n\n    let self._bookmarkNames = []\n    for i in g:NERDTreeBookmark.Bookmarks()\n        if i.path.equals(self)\n            call add(self._bookmarkNames, i.name)\n        endif\n    endfor\n    if !empty(self._bookmarkNames)\n        let self.cachedDisplayString .= ' {' . join(self._bookmarkNames) . '}'\n    endif\n\n    if self.isSymLink\n        let self.cachedDisplayString .=  ' -> ' . self.symLinkDest\n    endif\n\n    if self.isReadOnly\n        let self.cachedDisplayString .=  ' [RO]'\n    endif\nendfunction\n\n\"FUNCTION: Path.changeToDir() {{{1\nfunction! s:Path.changeToDir()\n    let dir = self.str({'format': 'Cd'})\n    if self.isDirectory ==# 0\n        let dir = self.getParent().str({'format': 'Cd'})\n    endif\n\n    try\n        execute \"cd \" . dir\n        call nerdtree#echo(\"CWD is now: \" . getcwd())\n    catch\n        throw \"NERDTree.PathChangeError: cannot change CWD to \" . dir\n    endtry\nendfunction\n\n\"FUNCTION: Path.compareTo() {{{1\n\"\n\"Compares this Path to the given path and returns 0 if they are equal, -1 if\n\"this Path is \"less than\" the given path, or 1 if it is \"greater\".\n\"\n\"Args:\n\"path: the path object to compare this to\n\"\n\"Return:\n\"1, -1 or 0\nfunction! s:Path.compareTo(path)\n    let thisPath = self.getLastPathComponent(1)\n    let thatPath = a:path.getLastPathComponent(1)\n\n    \"if the paths are the same then clearly we return 0\n    if thisPath ==# thatPath\n        return 0\n    endif\n\n    let thisSS = self.getSortOrderIndex()\n    let thatSS = a:path.getSortOrderIndex()\n\n    \"compare the sort sequences, if they are different then the return\n    \"value is easy\n    if thisSS < thatSS\n        return -1\n    elseif thisSS > thatSS\n        return 1\n    else\n        \"if the sort sequences are the same then compare the paths\n        \"alphabetically\n        let pathCompare = g:NERDTreeCaseSensitiveSort ? thisPath <# thatPath : thisPath <? thatPath\n        if pathCompare\n            return -1\n        else\n            return 1\n        endif\n    endif\nendfunction\n\n\"FUNCTION: Path.Create(fullpath) {{{1\n\"\n\"Factory method.\n\"\n\"Creates a path object with the given path. The path is also created on the\n\"filesystem. If the path already exists, a NERDTree.Path.Exists exception is\n\"thrown. If any other errors occur, a NERDTree.Path exception is thrown.\n\"\n\"Args:\n\"fullpath: the full filesystem path to the file/dir to create\nfunction! s:Path.Create(fullpath)\n    \"bail if the a:fullpath already exists\n    if isdirectory(a:fullpath) || filereadable(a:fullpath)\n        throw \"NERDTree.CreatePathError: Directory Exists: '\" . a:fullpath . \"'\"\n    endif\n\n    try\n\n        \"if it ends with a slash, assume its a dir create it\n        if a:fullpath =~# '\\(\\\\\\|\\/\\)$'\n            \"whack the trailing slash off the end if it exists\n            let fullpath = substitute(a:fullpath, '\\(\\\\\\|\\/\\)$', '', '')\n\n            call mkdir(fullpath, 'p')\n\n        \"assume its a file and create\n        else\n            call writefile([], a:fullpath)\n        endif\n    catch\n        throw \"NERDTree.CreatePathError: Could not create path: '\" . a:fullpath . \"'\"\n    endtry\n\n    return s:Path.New(a:fullpath)\nendfunction\n\n\"FUNCTION: Path.copy(dest) {{{1\n\"\n\"Copies the file/dir represented by this Path to the given location\n\"\n\"Args:\n\"dest: the location to copy this dir/file to\nfunction! s:Path.copy(dest)\n    if !s:Path.CopyingSupported()\n        throw \"NERDTree.CopyingNotSupportedError: Copying is not supported on this OS\"\n    endif\n\n    let dest = s:Path.WinToUnixPath(a:dest)\n\n    let cmd = g:NERDTreeCopyCmd . \" \" . escape(self.str(), nerdtree#escChars()) . \" \" . escape(dest, nerdtree#escChars())\n    let success = system(cmd)\n    if success != 0\n        throw \"NERDTree.CopyError: Could not copy ''\". self.str() .\"'' to: '\" . a:dest . \"'\"\n    endif\nendfunction\n\n\"FUNCTION: Path.CopyingSupported() {{{1\n\"\n\"returns 1 if copying is supported for this OS\nfunction! s:Path.CopyingSupported()\n    return exists('g:NERDTreeCopyCmd')\nendfunction\n\n\"FUNCTION: Path.copyingWillOverwrite(dest) {{{1\n\"\n\"returns 1 if copy this path to the given location will cause files to\n\"overwritten\n\"\n\"Args:\n\"dest: the location this path will be copied to\nfunction! s:Path.copyingWillOverwrite(dest)\n    if filereadable(a:dest)\n        return 1\n    endif\n\n    if isdirectory(a:dest)\n        let path = s:Path.JoinPathStrings(a:dest, self.getLastPathComponent(0))\n        if filereadable(path)\n            return 1\n        endif\n    endif\nendfunction\n\n\"FUNCTION: Path.delete() {{{1\n\"\n\"Deletes the file represented by this path.\n\"Deletion of directories is not supported\n\"\n\"Throws NERDTree.Path.Deletion exceptions\nfunction! s:Path.delete()\n    if self.isDirectory\n\n        let cmd = g:NERDTreeRemoveDirCmd . self.str({'escape': 1})\n        let success = system(cmd)\n\n        if v:shell_error != 0\n            throw \"NERDTree.PathDeletionError: Could not delete directory: '\" . self.str() . \"'\"\n        endif\n    else\n        let success = delete(self.str())\n        if success != 0\n            throw \"NERDTree.PathDeletionError: Could not delete file: '\" . self.str() . \"'\"\n        endif\n    endif\n\n    \"delete all bookmarks for this path\n    for i in self.bookmarkNames()\n        let bookmark = g:NERDTreeBookmark.BookmarkFor(i)\n        call bookmark.delete()\n    endfor\nendfunction\n\n\"FUNCTION: Path.displayString() {{{1\n\"\n\"Returns a string that specifies how the path should be represented as a\n\"string\nfunction! s:Path.displayString()\n    if self.cachedDisplayString ==# \"\"\n        call self.cacheDisplayString()\n    endif\n\n    return self.cachedDisplayString\nendfunction\n\n\"FUNCTION: Path.edit() {{{1\nfunction! s:Path.edit()\n    exec \"edit \" . self.str({'format': 'Edit'})\nendfunction\n\n\"FUNCTION: Path.extractDriveLetter(fullpath) {{{1\n\"\n\"If running windows, cache the drive letter for this path\nfunction! s:Path.extractDriveLetter(fullpath)\n    if nerdtree#runningWindows()\n        if a:fullpath =~ '^\\(\\\\\\\\\\|\\/\\/\\)'\n            \"For network shares, the 'drive' consists of the first two parts of the path, i.e. \\\\boxname\\share\n            let self.drive = substitute(a:fullpath, '^\\(\\(\\\\\\\\\\|\\/\\/\\)[^\\\\\\/]*\\(\\\\\\|\\/\\)[^\\\\\\/]*\\).*', '\\1', '')\n            let self.drive = substitute(self.drive, '/', '\\', \"g\")\n        else\n            let self.drive = substitute(a:fullpath, '\\(^[a-zA-Z]:\\).*', '\\1', '')\n        endif\n    else\n        let self.drive = ''\n    endif\n\nendfunction\n\n\"FUNCTION: Path.exists() {{{1\n\"return 1 if this path points to a location that is readable or is a directory\nfunction! s:Path.exists()\n    let p = self.str()\n    return filereadable(p) || isdirectory(p)\nendfunction\n\n\"FUNCTION: Path.getDir() {{{1\n\"\n\"Returns this path if it is a directory, else this paths parent.\n\"\n\"Return:\n\"a Path object\nfunction! s:Path.getDir()\n    if self.isDirectory\n        return self\n    else\n        return self.getParent()\n    endif\nendfunction\n\n\"FUNCTION: Path.getParent() {{{1\n\"\n\"Returns a new path object for this paths parent\n\"\n\"Return:\n\"a new Path object\nfunction! s:Path.getParent()\n    if nerdtree#runningWindows()\n        let path = self.drive . '\\' . join(self.pathSegments[0:-2], '\\')\n    else\n        let path = '/'. join(self.pathSegments[0:-2], '/')\n    endif\n\n    return s:Path.New(path)\nendfunction\n\n\"FUNCTION: Path.getLastPathComponent(dirSlash) {{{1\n\"\n\"Gets the last part of this path.\n\"\n\"Args:\n\"dirSlash: if 1 then a trailing slash will be added to the returned value for\n\"directory nodes.\nfunction! s:Path.getLastPathComponent(dirSlash)\n    if empty(self.pathSegments)\n        return ''\n    endif\n    let toReturn = self.pathSegments[-1]\n    if a:dirSlash && self.isDirectory\n        let toReturn = toReturn . '/'\n    endif\n    return toReturn\nendfunction\n\n\"FUNCTION: Path.getSortOrderIndex() {{{1\n\"returns the index of the pattern in g:NERDTreeSortOrder that this path matches\nfunction! s:Path.getSortOrderIndex()\n    let i = 0\n    while i < len(g:NERDTreeSortOrder)\n        if  self.getLastPathComponent(1) =~# g:NERDTreeSortOrder[i]\n            return i\n        endif\n        let i = i + 1\n    endwhile\n    return s:NERDTreeSortStarIndex\nendfunction\n\n\"FUNCTION: Path.isUnixHiddenFile() {{{1\n\"check for unix hidden files\nfunction! s:Path.isUnixHiddenFile()\n    return self.getLastPathComponent(0) =~# '^\\.'\nendfunction\n\n\"FUNCTION: Path.isUnixHiddenPath() {{{1\n\"check for unix path with hidden components\nfunction! s:Path.isUnixHiddenPath()\n    if self.getLastPathComponent(0) =~# '^\\.'\n        return 1\n    else\n        for segment in self.pathSegments\n            if segment =~# '^\\.'\n                return 1\n            endif\n        endfor\n        return 0\n    endif\nendfunction\n\n\"FUNCTION: Path.ignore() {{{1\n\"returns true if this path should be ignored\nfunction! s:Path.ignore()\n    \"filter out the user specified paths to ignore\n    if b:NERDTreeIgnoreEnabled\n        for i in g:NERDTreeIgnore\n            if self._ignorePatternMatches(i)\n                return 1\n            endif\n        endfor\n    endif\n\n    \"dont show hidden files unless instructed to\n    if b:NERDTreeShowHidden ==# 0 && self.isUnixHiddenFile()\n        return 1\n    endif\n\n    if b:NERDTreeShowFiles ==# 0 && self.isDirectory ==# 0\n        return 1\n    endif\n\n    if exists(\"*NERDTreeCustomIgnoreFilter\") && NERDTreeCustomIgnoreFilter(self)\n        return 1\n    endif\n\n    return 0\nendfunction\n\n\"FUNCTION: Path._ignorePatternMatches(pattern) {{{1\n\"returns true if this path matches the given ignore pattern\nfunction! s:Path._ignorePatternMatches(pattern)\n    let pat = a:pattern\n    if strpart(pat,len(pat)-7) == '[[dir]]'\n        if !self.isDirectory\n            return 0\n        endif\n        let pat = strpart(pat,0, len(pat)-7)\n    elseif strpart(pat,len(pat)-8) == '[[file]]'\n        if self.isDirectory\n            return 0\n        endif\n        let pat = strpart(pat,0, len(pat)-8)\n    endif\n\n    return self.getLastPathComponent(0) =~# pat\nendfunction\n\n\"FUNCTION: Path.isUnder(path) {{{1\n\"return 1 if this path is somewhere under the given path in the filesystem.\n\"\n\"a:path should be a dir\nfunction! s:Path.isUnder(path)\n    if a:path.isDirectory == 0\n        return 0\n    endif\n\n    let this = self.str()\n    let that = a:path.str()\n    return stridx(this, that . s:Path.Slash()) == 0\nendfunction\n\n\"FUNCTION: Path.JoinPathStrings(...) {{{1\nfunction! s:Path.JoinPathStrings(...)\n    let components = []\n    for i in a:000\n        let components = extend(components, split(i, '/'))\n    endfor\n    return '/' . join(components, '/')\nendfunction\n\n\"FUNCTION: Path.equals() {{{1\n\"\n\"Determines whether 2 path objects are \"equal\".\n\"They are equal if the paths they represent are the same\n\"\n\"Args:\n\"path: the other path obj to compare this with\nfunction! s:Path.equals(path)\n    return self.str() ==# a:path.str()\nendfunction\n\n\"FUNCTION: Path.New() {{{1\n\"The Constructor for the Path object\nfunction! s:Path.New(path)\n    let newPath = copy(self)\n\n    call newPath.readInfoFromDisk(s:Path.AbsolutePathFor(a:path))\n\n    let newPath.cachedDisplayString = \"\"\n\n    return newPath\nendfunction\n\n\"FUNCTION: Path.Slash() {{{1\n\"return the slash to use for the current OS\nfunction! s:Path.Slash()\n    return nerdtree#runningWindows() ? '\\' : '/'\nendfunction\n\n\"FUNCTION: Path.Resolve() {{{1\n\"Invoke the vim resolve() function and return the result\n\"This is necessary because in some versions of vim resolve() removes trailing\n\"slashes while in other versions it doesn't.  This always removes the trailing\n\"slash\nfunction! s:Path.Resolve(path)\n    let tmp = resolve(a:path)\n    return tmp =~# '.\\+/$' ? substitute(tmp, '/$', '', '') : tmp\nendfunction\n\n\"FUNCTION: Path.readInfoFromDisk(fullpath) {{{1\n\"\n\"\n\"Throws NERDTree.Path.InvalidArguments exception.\nfunction! s:Path.readInfoFromDisk(fullpath)\n    call self.extractDriveLetter(a:fullpath)\n\n    let fullpath = s:Path.WinToUnixPath(a:fullpath)\n\n    if getftype(fullpath) ==# \"fifo\"\n        throw \"NERDTree.InvalidFiletypeError: Cant handle FIFO files: \" . a:fullpath\n    endif\n\n    let self.pathSegments = split(fullpath, '/')\n\n    let self.isReadOnly = 0\n    if isdirectory(a:fullpath)\n        let self.isDirectory = 1\n    elseif filereadable(a:fullpath)\n        let self.isDirectory = 0\n        let self.isReadOnly = filewritable(a:fullpath) ==# 0\n    else\n        throw \"NERDTree.InvalidArgumentsError: Invalid path = \" . a:fullpath\n    endif\n\n    let self.isExecutable = 0\n    if !self.isDirectory\n        let self.isExecutable = getfperm(a:fullpath) =~# 'x'\n    endif\n\n    \"grab the last part of the path (minus the trailing slash)\n    let lastPathComponent = self.getLastPathComponent(0)\n\n    \"get the path to the new node with the parent dir fully resolved\n    let hardPath = s:Path.Resolve(self.strTrunk()) . '/' . lastPathComponent\n\n    \"if  the last part of the path is a symlink then flag it as such\n    let self.isSymLink = (s:Path.Resolve(hardPath) != hardPath)\n    if self.isSymLink\n        let self.symLinkDest = s:Path.Resolve(fullpath)\n\n        \"if the link is a dir then slap a / on the end of its dest\n        if isdirectory(self.symLinkDest)\n\n            \"we always wanna treat MS windows shortcuts as files for\n            \"simplicity\n            if hardPath !~# '\\.lnk$'\n\n                let self.symLinkDest = self.symLinkDest . '/'\n            endif\n        endif\n    endif\nendfunction\n\n\"FUNCTION: Path.refresh() {{{1\nfunction! s:Path.refresh()\n    call self.readInfoFromDisk(self.str())\n    call self.cacheDisplayString()\nendfunction\n\n\"FUNCTION: Path.rename() {{{1\n\"\n\"Renames this node on the filesystem\nfunction! s:Path.rename(newPath)\n    if a:newPath ==# ''\n        throw \"NERDTree.InvalidArgumentsError: Invalid newPath for renaming = \". a:newPath\n    endif\n\n    let success =  rename(self.str(), a:newPath)\n    if success != 0\n        throw \"NERDTree.PathRenameError: Could not rename: '\" . self.str() . \"'\" . 'to:' . a:newPath\n    endif\n    call self.readInfoFromDisk(a:newPath)\n\n    for i in self.bookmarkNames()\n        let b = g:NERDTreeBookmark.BookmarkFor(i)\n        call b.setPath(copy(self))\n    endfor\n    call g:NERDTreeBookmark.Write()\nendfunction\n\n\"FUNCTION: Path.str() {{{1\n\"\n\"Returns a string representation of this Path\n\"\n\"Takes an optional dictionary param to specify how the output should be\n\"formatted.\n\"\n\"The dict may have the following keys:\n\"  'format'\n\"  'escape'\n\"  'truncateTo'\n\"\n\"The 'format' key may have a value of:\n\"  'Cd' - a string to be used with the :cd command\n\"  'Edit' - a string to be used with :e :sp :new :tabedit etc\n\"  'UI' - a string used in the NERD tree UI\n\"\n\"The 'escape' key, if specified will cause the output to be escaped with\n\"shellescape()\n\"\n\"The 'truncateTo' key causes the resulting string to be truncated to the value\n\"'truncateTo' maps to. A '<' char will be prepended.\nfunction! s:Path.str(...)\n    let options = a:0 ? a:1 : {}\n    let toReturn = \"\"\n\n    if has_key(options, 'format')\n        let format = options['format']\n        if has_key(self, '_strFor' . format)\n            exec 'let toReturn = self._strFor' . format . '()'\n        else\n            raise 'NERDTree.UnknownFormatError: unknown format \"'. format .'\"'\n        endif\n    else\n        let toReturn = self._str()\n    endif\n\n    if nerdtree#has_opt(options, 'escape')\n        let toReturn = shellescape(toReturn)\n    endif\n\n    if has_key(options, 'truncateTo')\n        let limit = options['truncateTo']\n        if len(toReturn) > limit\n            let toReturn = \"<\" . strpart(toReturn, len(toReturn) - limit + 1)\n        endif\n    endif\n\n    return toReturn\nendfunction\n\n\"FUNCTION: Path._strForUI() {{{1\nfunction! s:Path._strForUI()\n    let toReturn = '/' . join(self.pathSegments, '/')\n    if self.isDirectory && toReturn != '/'\n        let toReturn  = toReturn . '/'\n    endif\n    return toReturn\nendfunction\n\n\"FUNCTION: Path._strForCd() {{{1\n\"\n\" returns a string that can be used with :cd\nfunction! s:Path._strForCd()\n    return escape(self.str(), nerdtree#escChars())\nendfunction\n\n\"FUNCTION: Path._strForEdit() {{{1\n\"\n\"Return: the string for this path that is suitable to be used with the :edit\n\"command\nfunction! s:Path._strForEdit()\n    let p = escape(self.str({'format': 'UI'}), nerdtree#escChars())\n    let cwd = getcwd() . s:Path.Slash()\n\n    \"return a relative path if we can\n    let isRelative = 0\n    if nerdtree#runningWindows()\n        let isRelative = stridx(tolower(p), tolower(cwd)) == 0\n    else\n        let isRelative = stridx(p, cwd) == 0\n    endif\n\n    if isRelative\n        let p = strpart(p, strlen(cwd))\n\n        \"handle the edge case where the file begins with a + (vim interprets\n        \"the +foo in `:e +foo` as an option to :edit)\n        if p[0] == \"+\"\n            let p = '\\' . p\n        endif\n    endif\n\n    if p ==# ''\n        let p = '.'\n    endif\n\n    return p\nendfunction\n\n\"FUNCTION: Path._strForGlob() {{{1\nfunction! s:Path._strForGlob()\n    let lead = s:Path.Slash()\n\n    \"if we are running windows then slap a drive letter on the front\n    if nerdtree#runningWindows()\n        let lead = self.drive . '\\'\n    endif\n\n    let toReturn = lead . join(self.pathSegments, s:Path.Slash())\n\n    if !nerdtree#runningWindows()\n        let toReturn = escape(toReturn, nerdtree#escChars())\n    endif\n    return toReturn\nendfunction\n\n\"FUNCTION: Path._str() {{{1\n\"\n\"Gets the string path for this path object that is appropriate for the OS.\n\"EG, in windows c:\\foo\\bar\n\"    in *nix  /foo/bar\nfunction! s:Path._str()\n    let lead = s:Path.Slash()\n\n    \"if we are running windows then slap a drive letter on the front\n    if nerdtree#runningWindows()\n        let lead = self.drive . '\\'\n    endif\n\n    return lead . join(self.pathSegments, s:Path.Slash())\nendfunction\n\n\"FUNCTION: Path.strTrunk() {{{1\n\"Gets the path without the last segment on the end.\nfunction! s:Path.strTrunk()\n    return self.drive . '/' . join(self.pathSegments[0:-2], '/')\nendfunction\n\n\" FUNCTION: Path.tabnr() {{{1\n\" return the number of the first tab that is displaying this file\n\"\n\" return 0 if no tab was found\nfunction! s:Path.tabnr()\n    let str = self.str()\n    for t in range(tabpagenr('$'))\n        for b in tabpagebuflist(t+1)\n            if str == expand('#' . b . ':p')\n                return t+1\n            endif\n        endfor\n    endfor\n    return 0\nendfunction\n\n\"FUNCTION: Path.WinToUnixPath(pathstr){{{1\n\"Takes in a windows path and returns the unix equiv\n\"\n\"A class level method\n\"\n\"Args:\n\"pathstr: the windows path to convert\nfunction! s:Path.WinToUnixPath(pathstr)\n    if !nerdtree#runningWindows()\n        return a:pathstr\n    endif\n\n    let toReturn = a:pathstr\n\n    \"remove the x:\\ of the front\n    let toReturn = substitute(toReturn, '^.*:\\(\\\\\\|/\\)\\?', '/', \"\")\n\n    \"remove the \\\\ network share from the front\n    let toReturn = substitute(toReturn, '^\\(\\\\\\\\\\|\\/\\/\\)[^\\\\\\/]*\\(\\\\\\|\\/\\)[^\\\\\\/]*\\(\\\\\\|\\/\\)\\?', '/', \"\")\n\n    \"convert all \\ chars to /\n    let toReturn = substitute(toReturn, '\\', '/', \"g\")\n\n    return toReturn\nendfunction\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/nerdtree/lib/nerdtree/tree_dir_node.vim",
    "content": "\"CLASS: TreeDirNode\n\"A subclass of NERDTreeFileNode.\n\"\n\"The 'composite' part of the file/dir composite.\n\"============================================================\nlet s:TreeDirNode = copy(g:NERDTreeFileNode)\nlet g:NERDTreeDirNode = s:TreeDirNode\n\n\"FUNCTION: TreeDirNode.AbsoluteTreeRoot(){{{1\n\"class method that returns the highest cached ancestor of the current root\nfunction! s:TreeDirNode.AbsoluteTreeRoot()\n    let currentNode = b:NERDTreeRoot\n    while currentNode.parent != {}\n        let currentNode = currentNode.parent\n    endwhile\n    return currentNode\nendfunction\n\n\"FUNCTION: TreeDirNode.activate([options]) {{{1\nunlet s:TreeDirNode.activate\nfunction! s:TreeDirNode.activate(...)\n    let opts = a:0 ? a:1 : {}\n    call self.toggleOpen(opts)\n    call nerdtree#renderView()\n    call self.putCursorHere(0, 0)\nendfunction\n\n\"FUNCTION: TreeDirNode.addChild(treenode, inOrder) {{{1\n\"Adds the given treenode to the list of children for this node\n\"\n\"Args:\n\"-treenode: the node to add\n\"-inOrder: 1 if the new node should be inserted in sorted order\nfunction! s:TreeDirNode.addChild(treenode, inOrder)\n    call add(self.children, a:treenode)\n    let a:treenode.parent = self\n\n    if a:inOrder\n        call self.sortChildren()\n    endif\nendfunction\n\n\"FUNCTION: TreeDirNode.close() {{{1\n\"Closes this directory\nfunction! s:TreeDirNode.close()\n    let self.isOpen = 0\nendfunction\n\n\"FUNCTION: TreeDirNode.closeChildren() {{{1\n\"Closes all the child dir nodes of this node\nfunction! s:TreeDirNode.closeChildren()\n    for i in self.children\n        if i.path.isDirectory\n            call i.close()\n            call i.closeChildren()\n        endif\n    endfor\nendfunction\n\n\"FUNCTION: TreeDirNode.createChild(path, inOrder) {{{1\n\"Instantiates a new child node for this node with the given path. The new\n\"nodes parent is set to this node.\n\"\n\"Args:\n\"path: a Path object that this node will represent/contain\n\"inOrder: 1 if the new node should be inserted in sorted order\n\"\n\"Returns:\n\"the newly created node\nfunction! s:TreeDirNode.createChild(path, inOrder)\n    let newTreeNode = g:NERDTreeFileNode.New(a:path)\n    call self.addChild(newTreeNode, a:inOrder)\n    return newTreeNode\nendfunction\n\n\"FUNCTION: TreeDirNode.findNode(path) {{{1\n\"Will find one of the children (recursively) that has the given path\n\"\n\"Args:\n\"path: a path object\nunlet s:TreeDirNode.findNode\nfunction! s:TreeDirNode.findNode(path)\n    if a:path.equals(self.path)\n        return self\n    endif\n    if stridx(a:path.str(), self.path.str(), 0) ==# -1\n        return {}\n    endif\n\n    if self.path.isDirectory\n        for i in self.children\n            let retVal = i.findNode(a:path)\n            if retVal != {}\n                return retVal\n            endif\n        endfor\n    endif\n    return {}\nendfunction\n\n\"FUNCTION: TreeDirNode.getChildCount() {{{1\n\"Returns the number of children this node has\nfunction! s:TreeDirNode.getChildCount()\n    return len(self.children)\nendfunction\n\n\"FUNCTION: TreeDirNode.getChild(path) {{{1\n\"Returns child node of this node that has the given path or {} if no such node\n\"exists.\n\"\n\"This function doesnt not recurse into child dir nodes\n\"\n\"Args:\n\"path: a path object\nfunction! s:TreeDirNode.getChild(path)\n    if stridx(a:path.str(), self.path.str(), 0) ==# -1\n        return {}\n    endif\n\n    let index = self.getChildIndex(a:path)\n    if index ==# -1\n        return {}\n    else\n        return self.children[index]\n    endif\n\nendfunction\n\n\"FUNCTION: TreeDirNode.getChildByIndex(indx, visible) {{{1\n\"returns the child at the given index\n\"Args:\n\"indx: the index to get the child from\n\"visible: 1 if only the visible children array should be used, 0 if all the\n\"children should be searched.\nfunction! s:TreeDirNode.getChildByIndex(indx, visible)\n    let array_to_search = a:visible? self.getVisibleChildren() : self.children\n    if a:indx > len(array_to_search)\n        throw \"NERDTree.InvalidArgumentsError: Index is out of bounds.\"\n    endif\n    return array_to_search[a:indx]\nendfunction\n\n\"FUNCTION: TreeDirNode.getChildIndex(path) {{{1\n\"Returns the index of the child node of this node that has the given path or\n\"-1 if no such node exists.\n\"\n\"This function doesnt not recurse into child dir nodes\n\"\n\"Args:\n\"path: a path object\nfunction! s:TreeDirNode.getChildIndex(path)\n    if stridx(a:path.str(), self.path.str(), 0) ==# -1\n        return -1\n    endif\n\n    \"do a binary search for the child\n    let a = 0\n    let z = self.getChildCount()\n    while a < z\n        let mid = (a+z)/2\n        let diff = a:path.compareTo(self.children[mid].path)\n\n        if diff ==# -1\n            let z = mid\n        elseif diff ==# 1\n            let a = mid+1\n        else\n            return mid\n        endif\n    endwhile\n    return -1\nendfunction\n\n\"FUNCTION: TreeDirNode.GetSelected() {{{1\n\"Returns the current node if it is a dir node, or else returns the current\n\"nodes parent\nunlet s:TreeDirNode.GetSelected\nfunction! s:TreeDirNode.GetSelected()\n    let currentDir = g:NERDTreeFileNode.GetSelected()\n    if currentDir != {} && !currentDir.isRoot()\n        if currentDir.path.isDirectory ==# 0\n            let currentDir = currentDir.parent\n        endif\n    endif\n    return currentDir\nendfunction\n\n\"FUNCTION: TreeDirNode.getVisibleChildCount() {{{1\n\"Returns the number of visible children this node has\nfunction! s:TreeDirNode.getVisibleChildCount()\n    return len(self.getVisibleChildren())\nendfunction\n\n\"FUNCTION: TreeDirNode.getVisibleChildren() {{{1\n\"Returns a list of children to display for this node, in the correct order\n\"\n\"Return:\n\"an array of treenodes\nfunction! s:TreeDirNode.getVisibleChildren()\n    let toReturn = []\n    for i in self.children\n        if i.path.ignore() ==# 0\n            call add(toReturn, i)\n        endif\n    endfor\n    return toReturn\nendfunction\n\n\"FUNCTION: TreeDirNode.hasVisibleChildren() {{{1\n\"returns 1 if this node has any childre, 0 otherwise..\nfunction! s:TreeDirNode.hasVisibleChildren()\n    return self.getVisibleChildCount() != 0\nendfunction\n\n\"FUNCTION: TreeDirNode._initChildren() {{{1\n\"Removes all childen from this node and re-reads them\n\"\n\"Args:\n\"silent: 1 if the function should not echo any \"please wait\" messages for\n\"large directories\n\"\n\"Return: the number of child nodes read\nfunction! s:TreeDirNode._initChildren(silent)\n    \"remove all the current child nodes\n    let self.children = []\n\n    \"get an array of all the files in the nodes dir\n    let dir = self.path\n    let globDir = dir.str({'format': 'Glob'})\n\n    if version >= 703\n        let filesStr = globpath(globDir, '*', 1) . \"\\n\" . globpath(globDir, '.*', 1)\n    else\n        let filesStr = globpath(globDir, '*') . \"\\n\" . globpath(globDir, '.*')\n    endif\n\n    let files = split(filesStr, \"\\n\")\n\n    if !a:silent && len(files) > g:NERDTreeNotificationThreshold\n        call nerdtree#echo(\"Please wait, caching a large dir ...\")\n    endif\n\n    let invalidFilesFound = 0\n    for i in files\n\n        \"filter out the .. and . directories\n        \"Note: we must match .. AND ../ cos sometimes the globpath returns\n        \"../ for path with strange chars (eg $)\n        if i !~# '\\/\\.\\.\\/\\?$' && i !~# '\\/\\.\\/\\?$'\n\n            \"put the next file in a new node and attach it\n            try\n                let path = g:NERDTreePath.New(i)\n                call self.createChild(path, 0)\n            catch /^NERDTree.\\(InvalidArguments\\|InvalidFiletype\\)Error/\n                let invalidFilesFound += 1\n            endtry\n        endif\n    endfor\n\n    call self.sortChildren()\n\n    if !a:silent && len(files) > g:NERDTreeNotificationThreshold\n        call nerdtree#echo(\"Please wait, caching a large dir ... DONE (\". self.getChildCount() .\" nodes cached).\")\n    endif\n\n    if invalidFilesFound\n        call nerdtree#echoWarning(invalidFilesFound . \" file(s) could not be loaded into the NERD tree\")\n    endif\n    return self.getChildCount()\nendfunction\n\n\"FUNCTION: TreeDirNode.New(path) {{{1\n\"Returns a new TreeNode object with the given path and parent\n\"\n\"Args:\n\"path: a path object representing the full filesystem path to the file/dir that the node represents\nunlet s:TreeDirNode.New\nfunction! s:TreeDirNode.New(path)\n    if a:path.isDirectory != 1\n        throw \"NERDTree.InvalidArgumentsError: A TreeDirNode object must be instantiated with a directory Path object.\"\n    endif\n\n    let newTreeNode = copy(self)\n    let newTreeNode.path = a:path\n\n    let newTreeNode.isOpen = 0\n    let newTreeNode.children = []\n\n    let newTreeNode.parent = {}\n\n    return newTreeNode\nendfunction\n\n\"FUNCTION: TreeDirNode.open([opts]) {{{1\n\"Open the dir in the current tree or in a new tree elsewhere.\n\"\n\"If opening in the current tree, return the number of cached nodes.\nunlet s:TreeDirNode.open\nfunction! s:TreeDirNode.open(...)\n    let opts = a:0 ? a:1 : {}\n\n    if has_key(opts, 'where') && !empty(opts['where'])\n        let opener = g:NERDTreeOpener.New(self.path, opts)\n        call opener.open(self)\n    else\n        let self.isOpen = 1\n        if self.children ==# []\n            return self._initChildren(0)\n        else\n            return 0\n        endif\n    endif\nendfunction\n\n\"FUNCTION: TreeDirNode.openAlong([opts]) {{{1\n\"recursive open the dir if it has only one directory child.\n\"\n\"return the level of opened directories.\nfunction! s:TreeDirNode.openAlong(...)\n    let opts = a:0 ? a:1 : {}\n    let level = 0\n\n    let node = self\n    while node.path.isDirectory\n        call node.open(opts)\n        let level += 1\n        if node.getVisibleChildCount() == 1\n            let node = node.getChildByIndex(0, 1)\n        else\n            break\n        endif\n    endwhile\n    return level\nendfunction\n\n\" FUNCTION: TreeDirNode.openExplorer() {{{1\n\" opens an explorer window for this node in the previous window (could be a\n\" nerd tree or a netrw)\nfunction! s:TreeDirNode.openExplorer()\n    call self.open({'where': 'p'})\nendfunction\n\n\"FUNCTION: TreeDirNode.openInNewTab(options) {{{1\nunlet s:TreeDirNode.openInNewTab\nfunction! s:TreeDirNode.openInNewTab(options)\n    call nerdtree#deprecated('TreeDirNode.openInNewTab', 'is deprecated, use open() instead')\n    call self.open({'where': 't'})\nendfunction\n\n\"FUNCTION: TreeDirNode._openInNewTab() {{{1\nfunction! s:TreeDirNode._openInNewTab()\n    tabnew\n    call g:NERDTreeCreator.CreatePrimary(self.path.str())\nendfunction\n\n\"FUNCTION: TreeDirNode.openRecursively() {{{1\n\"Opens this treenode and all of its children whose paths arent 'ignored'\n\"because of the file filters.\n\"\n\"This method is actually a wrapper for the OpenRecursively2 method which does\n\"the work.\nfunction! s:TreeDirNode.openRecursively()\n    call self._openRecursively2(1)\nendfunction\n\n\"FUNCTION: TreeDirNode._openRecursively2() {{{1\n\"Opens this all children of this treenode recursively if either:\n\"   *they arent filtered by file filters\n\"   *a:forceOpen is 1\n\"\n\"Args:\n\"forceOpen: 1 if this node should be opened regardless of file filters\nfunction! s:TreeDirNode._openRecursively2(forceOpen)\n    if self.path.ignore() ==# 0 || a:forceOpen\n        let self.isOpen = 1\n        if self.children ==# []\n            call self._initChildren(1)\n        endif\n\n        for i in self.children\n            if i.path.isDirectory ==# 1\n                call i._openRecursively2(0)\n            endif\n        endfor\n    endif\nendfunction\n\n\"FUNCTION: TreeDirNode.refresh() {{{1\nunlet s:TreeDirNode.refresh\nfunction! s:TreeDirNode.refresh()\n    call self.path.refresh()\n\n    \"if this node was ever opened, refresh its children\n    if self.isOpen || !empty(self.children)\n        \"go thru all the files/dirs under this node\n        let newChildNodes = []\n        let invalidFilesFound = 0\n        let dir = self.path\n        let globDir = dir.str({'format': 'Glob'})\n        let filesStr = globpath(globDir, '*') . \"\\n\" . globpath(globDir, '.*')\n        let files = split(filesStr, \"\\n\")\n        for i in files\n            \"filter out the .. and . directories\n            \"Note: we must match .. AND ../ cos sometimes the globpath returns\n            \"../ for path with strange chars (eg $)\n            if i !~# '\\/\\.\\.\\/\\?$' && i !~# '\\/\\.\\/\\?$'\n\n                try\n                    \"create a new path and see if it exists in this nodes children\n                    let path = g:NERDTreePath.New(i)\n                    let newNode = self.getChild(path)\n                    if newNode != {}\n                        call newNode.refresh()\n                        call add(newChildNodes, newNode)\n\n                    \"the node doesnt exist so create it\n                    else\n                        let newNode = g:NERDTreeFileNode.New(path)\n                        let newNode.parent = self\n                        call add(newChildNodes, newNode)\n                    endif\n\n\n                catch /^NERDTree.\\(InvalidArguments\\|InvalidFiletype\\)Error/\n                    let invalidFilesFound = 1\n                endtry\n            endif\n        endfor\n\n        \"swap this nodes children out for the children we just read/refreshed\n        let self.children = newChildNodes\n        call self.sortChildren()\n\n        if invalidFilesFound\n            call nerdtree#echoWarning(\"some files could not be loaded into the NERD tree\")\n        endif\n    endif\nendfunction\n\n\"FUNCTION: TreeDirNode.reveal(path) {{{1\n\"reveal the given path, i.e. cache and open all treenodes needed to display it\n\"in the UI\nfunction! s:TreeDirNode.reveal(path)\n    if !a:path.isUnder(self.path)\n        throw \"NERDTree.InvalidArgumentsError: \" . a:path.str() . \" should be under \" . self.path.str()\n    endif\n\n    call self.open()\n\n    if self.path.equals(a:path.getParent())\n        let n = self.findNode(a:path)\n        call nerdtree#renderView()\n        call n.putCursorHere(1,0)\n        return\n    endif\n\n    let p = a:path\n    while !p.getParent().equals(self.path)\n        let p = p.getParent()\n    endwhile\n\n    let n = self.findNode(p)\n    call n.reveal(a:path)\nendfunction\n\n\"FUNCTION: TreeDirNode.removeChild(treenode) {{{1\n\"\n\"Removes the given treenode from this nodes set of children\n\"\n\"Args:\n\"treenode: the node to remove\n\"\n\"Throws a NERDTree.ChildNotFoundError if the given treenode is not found\nfunction! s:TreeDirNode.removeChild(treenode)\n    for i in range(0, self.getChildCount()-1)\n        if self.children[i].equals(a:treenode)\n            call remove(self.children, i)\n            return\n        endif\n    endfor\n\n    throw \"NERDTree.ChildNotFoundError: child node was not found\"\nendfunction\n\n\"FUNCTION: TreeDirNode.sortChildren() {{{1\n\"\n\"Sorts the children of this node according to alphabetical order and the\n\"directory priority.\n\"\nfunction! s:TreeDirNode.sortChildren()\n    let CompareFunc = function(\"nerdtree#compareNodes\")\n    call sort(self.children, CompareFunc)\nendfunction\n\n\"FUNCTION: TreeDirNode.toggleOpen([options]) {{{1\n\"Opens this directory if it is closed and vice versa\nfunction! s:TreeDirNode.toggleOpen(...)\n    let opts = a:0 ? a:1 : {}\n    if self.isOpen ==# 1\n        call self.close()\n    else\n        if g:NERDTreeCasadeOpenSingleChildDir == 0\n            call self.open(opts)\n        else\n            call self.openAlong(opts)\n        endif\n    endif\nendfunction\n\n\"FUNCTION: TreeDirNode.transplantChild(newNode) {{{1\n\"Replaces the child of this with the given node (where the child node's full\n\"path matches a:newNode's fullpath). The search for the matching node is\n\"non-recursive\n\"\n\"Arg:\n\"newNode: the node to graft into the tree\nfunction! s:TreeDirNode.transplantChild(newNode)\n    for i in range(0, self.getChildCount()-1)\n        if self.children[i].equals(a:newNode)\n            let self.children[i] = a:newNode\n            let a:newNode.parent = self\n            break\n        endif\n    endfor\nendfunction\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/nerdtree/lib/nerdtree/tree_file_node.vim",
    "content": "\"CLASS: TreeFileNode\n\"This class is the parent of the TreeDirNode class and is the\n\"'Component' part of the composite design pattern between the treenode\n\"classes.\n\"============================================================\nlet s:TreeFileNode = {}\nlet g:NERDTreeFileNode = s:TreeFileNode\n\n\"FUNCTION: TreeFileNode.activate(...) {{{1\nfunction! s:TreeFileNode.activate(...)\n    call self.open(a:0 ? a:1 : {})\nendfunction\n\n\"FUNCTION: TreeFileNode.bookmark(name) {{{1\n\"bookmark this node with a:name\nfunction! s:TreeFileNode.bookmark(name)\n\n    \"if a bookmark exists with the same name and the node is cached then save\n    \"it so we can update its display string\n    let oldMarkedNode = {}\n    try\n        let oldMarkedNode = g:NERDTreeBookmark.GetNodeForName(a:name, 1)\n    catch /^NERDTree.BookmarkNotFoundError/\n    catch /^NERDTree.BookmarkedNodeNotFoundError/\n    endtry\n\n    call g:NERDTreeBookmark.AddBookmark(a:name, self.path)\n    call self.path.cacheDisplayString()\n    call g:NERDTreeBookmark.Write()\n\n    if !empty(oldMarkedNode)\n        call oldMarkedNode.path.cacheDisplayString()\n    endif\nendfunction\n\n\"FUNCTION: TreeFileNode.cacheParent() {{{1\n\"initializes self.parent if it isnt already\nfunction! s:TreeFileNode.cacheParent()\n    if empty(self.parent)\n        let parentPath = self.path.getParent()\n        if parentPath.equals(self.path)\n            throw \"NERDTree.CannotCacheParentError: already at root\"\n        endif\n        let self.parent = s:TreeFileNode.New(parentPath)\n    endif\nendfunction\n\n\"FUNCTION: TreeFileNode.clearBookmarks() {{{1\nfunction! s:TreeFileNode.clearBookmarks()\n    for i in g:NERDTreeBookmark.Bookmarks()\n        if i.path.equals(self.path)\n            call i.delete()\n        end\n    endfor\n    call self.path.cacheDisplayString()\nendfunction\n\n\"FUNCTION: TreeFileNode.copy(dest) {{{1\nfunction! s:TreeFileNode.copy(dest)\n    call self.path.copy(a:dest)\n    let newPath = g:NERDTreePath.New(a:dest)\n    let parent = b:NERDTreeRoot.findNode(newPath.getParent())\n    if !empty(parent)\n        call parent.refresh()\n        return parent.findNode(newPath)\n    else\n        return {}\n    endif\nendfunction\n\n\"FUNCTION: TreeFileNode.delete {{{1\n\"Removes this node from the tree and calls the Delete method for its path obj\nfunction! s:TreeFileNode.delete()\n    call self.path.delete()\n    call self.parent.removeChild(self)\nendfunction\n\n\"FUNCTION: TreeFileNode.displayString() {{{1\n\"\n\"Returns a string that specifies how the node should be represented as a\n\"string\n\"\n\"Return:\n\"a string that can be used in the view to represent this node\nfunction! s:TreeFileNode.displayString()\n    return self.path.displayString()\nendfunction\n\n\"FUNCTION: TreeFileNode.equals(treenode) {{{1\n\"\n\"Compares this treenode to the input treenode and returns 1 if they are the\n\"same node.\n\"\n\"Use this method instead of ==  because sometimes when the treenodes contain\n\"many children, vim seg faults when doing ==\n\"\n\"Args:\n\"treenode: the other treenode to compare to\nfunction! s:TreeFileNode.equals(treenode)\n    return self.path.str() ==# a:treenode.path.str()\nendfunction\n\n\"FUNCTION: TreeFileNode.findNode(path) {{{1\n\"Returns self if this node.path.Equals the given path.\n\"Returns {} if not equal.\n\"\n\"Args:\n\"path: the path object to compare against\nfunction! s:TreeFileNode.findNode(path)\n    if a:path.equals(self.path)\n        return self\n    endif\n    return {}\nendfunction\n\n\"FUNCTION: TreeFileNode.findOpenDirSiblingWithVisibleChildren(direction) {{{1\n\"\n\"Finds the next sibling for this node in the indicated direction. This sibling\n\"must be a directory and may/may not have children as specified.\n\"\n\"Args:\n\"direction: 0 if you want to find the previous sibling, 1 for the next sibling\n\"\n\"Return:\n\"a treenode object or {} if no appropriate sibling could be found\nfunction! s:TreeFileNode.findOpenDirSiblingWithVisibleChildren(direction)\n    \"if we have no parent then we can have no siblings\n    if self.parent != {}\n        let nextSibling = self.findSibling(a:direction)\n\n        while nextSibling != {}\n            if nextSibling.path.isDirectory && nextSibling.hasVisibleChildren() && nextSibling.isOpen\n                return nextSibling\n            endif\n            let nextSibling = nextSibling.findSibling(a:direction)\n        endwhile\n    endif\n\n    return {}\nendfunction\n\n\"FUNCTION: TreeFileNode.findSibling(direction) {{{1\n\"\n\"Finds the next sibling for this node in the indicated direction\n\"\n\"Args:\n\"direction: 0 if you want to find the previous sibling, 1 for the next sibling\n\"\n\"Return:\n\"a treenode object or {} if no sibling could be found\nfunction! s:TreeFileNode.findSibling(direction)\n    \"if we have no parent then we can have no siblings\n    if self.parent != {}\n\n        \"get the index of this node in its parents children\n        let siblingIndx = self.parent.getChildIndex(self.path)\n\n        if siblingIndx != -1\n            \"move a long to the next potential sibling node\n            let siblingIndx = a:direction ==# 1 ? siblingIndx+1 : siblingIndx-1\n\n            \"keep moving along to the next sibling till we find one that is valid\n            let numSiblings = self.parent.getChildCount()\n            while siblingIndx >= 0 && siblingIndx < numSiblings\n\n                \"if the next node is not an ignored node (i.e. wont show up in the\n                \"view) then return it\n                if self.parent.children[siblingIndx].path.ignore() ==# 0\n                    return self.parent.children[siblingIndx]\n                endif\n\n                \"go to next node\n                let siblingIndx = a:direction ==# 1 ? siblingIndx+1 : siblingIndx-1\n            endwhile\n        endif\n    endif\n\n    return {}\nendfunction\n\n\"FUNCTION: TreeFileNode.getLineNum(){{{1\n\"returns the line number this node is rendered on, or -1 if it isnt rendered\nfunction! s:TreeFileNode.getLineNum()\n    \"if the node is the root then return the root line no.\n    if self.isRoot()\n        return s:TreeFileNode.GetRootLineNum()\n    endif\n\n    let totalLines = line(\"$\")\n\n    \"the path components we have matched so far\n    let pathcomponents = [substitute(b:NERDTreeRoot.path.str({'format': 'UI'}), '/ *$', '', '')]\n    \"the index of the component we are searching for\n    let curPathComponent = 1\n\n    let fullpath = self.path.str({'format': 'UI'})\n\n\n    let lnum = s:TreeFileNode.GetRootLineNum()\n    while lnum > 0\n        let lnum = lnum + 1\n        \"have we reached the bottom of the tree?\n        if lnum ==# totalLines+1\n            return -1\n        endif\n\n        let curLine = getline(lnum)\n\n        let indent = nerdtree#indentLevelFor(curLine)\n        if indent ==# curPathComponent\n            let curLine = nerdtree#stripMarkupFromLine(curLine, 1)\n\n            let curPath =  join(pathcomponents, '/') . '/' . curLine\n            if stridx(fullpath, curPath, 0) ==# 0\n                if fullpath ==# curPath || strpart(fullpath, len(curPath)-1,1) ==# '/'\n                    let curLine = substitute(curLine, '/ *$', '', '')\n                    call add(pathcomponents, curLine)\n                    let curPathComponent = curPathComponent + 1\n\n                    if fullpath ==# curPath\n                        return lnum\n                    endif\n                endif\n            endif\n        endif\n    endwhile\n    return -1\nendfunction\n\n\"FUNCTION: TreeFileNode.GetRootForTab(){{{1\n\"get the root node for this tab\nfunction! s:TreeFileNode.GetRootForTab()\n    if nerdtree#treeExistsForTab()\n        return getbufvar(t:NERDTreeBufName, 'NERDTreeRoot')\n    end\n    return {}\nendfunction\n\n\"FUNCTION: TreeFileNode.GetRootLineNum(){{{1\n\"gets the line number of the root node\nfunction! s:TreeFileNode.GetRootLineNum()\n    let rootLine = 1\n    while getline(rootLine) !~# '^\\(/\\|<\\)'\n        let rootLine = rootLine + 1\n    endwhile\n    return rootLine\nendfunction\n\n\"FUNCTION: TreeFileNode.GetSelected() {{{1\n\"gets the treenode that the cursor is currently over\nfunction! s:TreeFileNode.GetSelected()\n    try\n        let path = nerdtree#getPath(line(\".\"))\n        if path ==# {}\n            return {}\n        endif\n        return b:NERDTreeRoot.findNode(path)\n    catch /^NERDTree/\n        return {}\n    endtry\nendfunction\n\n\"FUNCTION: TreeFileNode.isVisible() {{{1\n\"returns 1 if this node should be visible according to the tree filters and\n\"hidden file filters (and their on/off status)\nfunction! s:TreeFileNode.isVisible()\n    return !self.path.ignore()\nendfunction\n\n\"FUNCTION: TreeFileNode.isRoot() {{{1\n\"returns 1 if this node is b:NERDTreeRoot\nfunction! s:TreeFileNode.isRoot()\n    if !nerdtree#treeExistsForBuf()\n        throw \"NERDTree.NoTreeError: No tree exists for the current buffer\"\n    endif\n\n    return self.equals(b:NERDTreeRoot)\nendfunction\n\n\"FUNCTION: TreeFileNode.makeRoot() {{{1\n\"Make this node the root of the tree\nfunction! s:TreeFileNode.makeRoot()\n    if self.path.isDirectory\n        let b:NERDTreeRoot = self\n    else\n        call self.cacheParent()\n        let b:NERDTreeRoot = self.parent\n    endif\n\n    call b:NERDTreeRoot.open()\n\n    \"change dir to the dir of the new root if instructed to\n    if g:NERDTreeChDirMode ==# 2\n        exec \"cd \" . b:NERDTreeRoot.path.str({'format': 'Edit'})\n    endif\n\n    silent doautocmd User NERDTreeNewRoot\nendfunction\n\n\"FUNCTION: TreeFileNode.New(path) {{{1\n\"Returns a new TreeNode object with the given path and parent\n\"\n\"Args:\n\"path: a path object representing the full filesystem path to the file/dir that the node represents\nfunction! s:TreeFileNode.New(path)\n    if a:path.isDirectory\n        return g:NERDTreeDirNode.New(a:path)\n    else\n        let newTreeNode = copy(self)\n        let newTreeNode.path = a:path\n        let newTreeNode.parent = {}\n        return newTreeNode\n    endif\nendfunction\n\n\"FUNCTION: TreeFileNode.open() {{{1\nfunction! s:TreeFileNode.open(...)\n    let opts = a:0 ? a:1 : {}\n    let opener = g:NERDTreeOpener.New(self.path, opts)\n    call opener.open(self)\nendfunction\n\n\"FUNCTION: TreeFileNode.openSplit() {{{1\n\"Open this node in a new window\nfunction! s:TreeFileNode.openSplit()\n    call nerdtree#deprecated('TreeFileNode.openSplit', 'is deprecated, use .open() instead.')\n    call self.open({'where': 'h'})\nendfunction\n\n\"FUNCTION: TreeFileNode.openVSplit() {{{1\n\"Open this node in a new vertical window\nfunction! s:TreeFileNode.openVSplit()\n    call nerdtree#deprecated('TreeFileNode.openVSplit', 'is deprecated, use .open() instead.')\n    call self.open({'where': 'v'})\nendfunction\n\n\"FUNCTION: TreeFileNode.openInNewTab(options) {{{1\nfunction! s:TreeFileNode.openInNewTab(options)\n    echomsg 'TreeFileNode.openInNewTab is deprecated'\n    call self.open(extend({'where': 't'}, a:options))\nendfunction\n\n\"FUNCTION: TreeFileNode.putCursorHere(isJump, recurseUpward){{{1\n\"Places the cursor on the line number this node is rendered on\n\"\n\"Args:\n\"isJump: 1 if this cursor movement should be counted as a jump by vim\n\"recurseUpward: try to put the cursor on the parent if the this node isnt\n\"visible\nfunction! s:TreeFileNode.putCursorHere(isJump, recurseUpward)\n    let ln = self.getLineNum()\n    if ln != -1\n        if a:isJump\n            mark '\n        endif\n        call cursor(ln, col(\".\"))\n    else\n        if a:recurseUpward\n            let node = self\n            while node != {} && node.getLineNum() ==# -1\n                let node = node.parent\n                call node.open()\n            endwhile\n            call nerdtree#renderView()\n            call node.putCursorHere(a:isJump, 0)\n        endif\n    endif\nendfunction\n\n\"FUNCTION: TreeFileNode.refresh() {{{1\nfunction! s:TreeFileNode.refresh()\n    call self.path.refresh()\nendfunction\n\n\"FUNCTION: TreeFileNode.rename() {{{1\n\"Calls the rename method for this nodes path obj\nfunction! s:TreeFileNode.rename(newName)\n    let newName = substitute(a:newName, '\\(\\\\\\|\\/\\)$', '', '')\n    call self.path.rename(newName)\n    call self.parent.removeChild(self)\n\n    let parentPath = self.path.getParent()\n    let newParent = b:NERDTreeRoot.findNode(parentPath)\n\n    if newParent != {}\n        call newParent.createChild(self.path, 1)\n        call newParent.refresh()\n    endif\nendfunction\n\n\"FUNCTION: TreeFileNode.renderToString {{{1\n\"returns a string representation for this tree to be rendered in the view\nfunction! s:TreeFileNode.renderToString()\n    return self._renderToString(0, 0, [], self.getChildCount() ==# 1)\nendfunction\n\n\"Args:\n\"depth: the current depth in the tree for this call\n\"drawText: 1 if we should actually draw the line for this node (if 0 then the\n\"child nodes are rendered only)\n\"vertMap: a binary array that indicates whether a vertical bar should be draw\n\"for each depth in the tree\n\"isLastChild:true if this curNode is the last child of its parent\nfunction! s:TreeFileNode._renderToString(depth, drawText, vertMap, isLastChild)\n    let output = \"\"\n    if a:drawText ==# 1\n\n        let treeParts = ''\n\n        \"get all the leading spaces and vertical tree parts for this line\n        if a:depth > 1\n            for j in a:vertMap[0:-2]\n                if g:NERDTreeDirArrows\n                    let treeParts = treeParts . '  '\n                else\n                    if j ==# 1\n                        let treeParts = treeParts . '| '\n                    else\n                        let treeParts = treeParts . '  '\n                    endif\n                endif\n            endfor\n        endif\n\n        \"get the last vertical tree part for this line which will be different\n        \"if this node is the last child of its parent\n        if !g:NERDTreeDirArrows\n            if a:isLastChild\n                let treeParts = treeParts . '`'\n            else\n                let treeParts = treeParts . '|'\n            endif\n        endif\n\n        \"smack the appropriate dir/file symbol on the line before the file/dir\n        \"name itself\n        if self.path.isDirectory\n            if self.isOpen\n                if g:NERDTreeDirArrows\n                    let treeParts = treeParts . '▾ '\n                else\n                    let treeParts = treeParts . '~'\n                endif\n            else\n                if g:NERDTreeDirArrows\n                    let treeParts = treeParts . '▸ '\n                else\n                    let treeParts = treeParts . '+'\n                endif\n            endif\n        else\n            if g:NERDTreeDirArrows\n                let treeParts = treeParts . '  '\n            else\n                let treeParts = treeParts . '-'\n            endif\n        endif\n        let line = treeParts . self.displayString()\n\n        let output = output . line . \"\\n\"\n    endif\n\n    \"if the node is an open dir, draw its children\n    if self.path.isDirectory ==# 1 && self.isOpen ==# 1\n\n        let childNodesToDraw = self.getVisibleChildren()\n        if len(childNodesToDraw) > 0\n\n            \"draw all the nodes children except the last\n            let lastIndx = len(childNodesToDraw)-1\n            if lastIndx > 0\n                for i in childNodesToDraw[0:lastIndx-1]\n                    let output = output . i._renderToString(a:depth + 1, 1, add(copy(a:vertMap), 1), 0)\n                endfor\n            endif\n\n            \"draw the last child, indicating that it IS the last\n            let output = output . childNodesToDraw[lastIndx]._renderToString(a:depth + 1, 1, add(copy(a:vertMap), 0), 1)\n        endif\n    endif\n\n    return output\nendfunction\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/nerdtree/nerdtree_plugin/exec_menuitem.vim",
    "content": "\" ============================================================================\n\" File:        exec_menuitem.vim\n\" Description: plugin for NERD Tree that provides an execute file menu item\n\" Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\" Last Change: 22 July, 2009\n\" License:     This program is free software. It comes without any warranty,\n\"              to the extent permitted by applicable law. You can redistribute\n\"              it and/or modify it under the terms of the Do What The Fuck You\n\"              Want To Public License, Version 2, as published by Sam Hocevar.\n\"              See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\" ============================================================================\nif exists(\"g:loaded_nerdtree_exec_menuitem\")\n    finish\nendif\nlet g:loaded_nerdtree_exec_menuitem = 1\n\ncall NERDTreeAddMenuItem({\n            \\ 'text': '(!)Execute file',\n            \\ 'shortcut': '!',\n            \\ 'callback': 'NERDTreeExecFile',\n            \\ 'isActiveCallback': 'NERDTreeExecFileActive' })\n\nfunction! NERDTreeExecFileActive()\n    let node = g:NERDTreeFileNode.GetSelected()\n    return !node.path.isDirectory && node.path.isExecutable\nendfunction\n\nfunction! NERDTreeExecFile()\n    let treenode = g:NERDTreeFileNode.GetSelected()\n    echo \"==========================================================\\n\"\n    echo \"Complete the command to execute (add arguments etc):\\n\"\n    let cmd = treenode.path.str({'escape': 1})\n    let cmd = input(':!', cmd . ' ')\n\n    if cmd != ''\n        exec ':!' . cmd\n    else\n        echo \"Aborted\"\n    endif\nendfunction\n"
  },
  {
    "path": ".vim/bundle/nerdtree/nerdtree_plugin/fs_menu.vim",
    "content": "\" ============================================================================\n\" File:        fs_menu.vim\n\" Description: plugin for the NERD Tree that provides a file system menu\n\" Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\" Last Change: 17 July, 2009\n\" License:     This program is free software. It comes without any warranty,\n\"              to the extent permitted by applicable law. You can redistribute\n\"              it and/or modify it under the terms of the Do What The Fuck You\n\"              Want To Public License, Version 2, as published by Sam Hocevar.\n\"              See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\" ============================================================================\nif exists(\"g:loaded_nerdtree_fs_menu\")\n    finish\nendif\nlet g:loaded_nerdtree_fs_menu = 1\n\n\"Automatically delete the buffer after deleting or renaming a file\nif !exists(\"g:NERDTreeAutoDeleteBuffer\")\n    let g:NERDTreeAutoDeleteBuffer = 0\nendif\n\ncall NERDTreeAddMenuItem({'text': '(a)dd a childnode', 'shortcut': 'a', 'callback': 'NERDTreeAddNode'})\ncall NERDTreeAddMenuItem({'text': '(m)ove the current node', 'shortcut': 'm', 'callback': 'NERDTreeMoveNode'})\ncall NERDTreeAddMenuItem({'text': '(d)elete the current node', 'shortcut': 'd', 'callback': 'NERDTreeDeleteNode'})\n\nif has(\"gui_mac\") || has(\"gui_macvim\") \n    call NERDTreeAddMenuItem({'text': '(r)eveal in Finder the current node', 'shortcut': 'r', 'callback': 'NERDTreeRevealInFinder'})\n    call NERDTreeAddMenuItem({'text': '(o)pen the current node with system editor', 'shortcut': 'o', 'callback': 'NERDTreeExecuteFile'})\n    call NERDTreeAddMenuItem({'text': '(q)uicklook the current node', 'shortcut': 'q', 'callback': 'NERDTreeQuickLook'})\nendif\n\nif g:NERDTreePath.CopyingSupported()\n    call NERDTreeAddMenuItem({'text': '(c)opy the current node', 'shortcut': 'c', 'callback': 'NERDTreeCopyNode'})\nendif\n\n\"FUNCTION: s:echo(msg){{{1\nfunction! s:echo(msg)\n    redraw\n    echomsg \"NERDTree: \" . a:msg\nendfunction\n\n\"FUNCTION: s:echoWarning(msg){{{1\nfunction! s:echoWarning(msg)\n    echohl warningmsg\n    call s:echo(a:msg)\n    echohl normal\nendfunction\n\n\"FUNCTION: s:promptToDelBuffer(bufnum, msg){{{1\n\"prints out the given msg and, if the user responds by pushing 'y' then the\n\"buffer with the given bufnum is deleted\n\"\n\"Args:\n\"bufnum: the buffer that may be deleted\n\"msg: a message that will be echoed to the user asking them if they wish to\n\"     del the buffer\nfunction! s:promptToDelBuffer(bufnum, msg)\n    echo a:msg\n    if g:NERDTreeAutoDeleteBuffer || nr2char(getchar()) ==# 'y'\n        \" 1. ensure that all windows which display the just deleted filename\n        \" now display an empty buffer (so a layout is preserved).\n        \" Is not it better to close single tabs with this file only ?\n        let s:originalTabNumber = tabpagenr()\n        let s:originalWindowNumber = winnr()\n        exec \"tabdo windo if winbufnr(0) == \" . a:bufnum . \" | exec ':enew! ' | endif\"\n        exec \"tabnext \" . s:originalTabNumber\n        exec s:originalWindowNumber . \"wincmd w\"\n        \" 3. We don't need a previous buffer anymore\n        exec \"bwipeout! \" . a:bufnum\n    endif\nendfunction\n\n\"FUNCTION: s:promptToRenameBuffer(bufnum, msg){{{1\n\"prints out the given msg and, if the user responds by pushing 'y' then the\n\"buffer with the given bufnum is replaced with a new one\n\"\n\"Args:\n\"bufnum: the buffer that may be deleted\n\"msg: a message that will be echoed to the user asking them if they wish to\n\"     del the buffer\nfunction! s:promptToRenameBuffer(bufnum, msg, newFileName)\n    echo a:msg\n    if g:NERDTreeAutoDeleteBuffer || nr2char(getchar()) ==# 'y'\n        \" 1. ensure that a new buffer is loaded\n        exec \"badd \" . a:newFileName\n        \" 2. ensure that all windows which display the just deleted filename\n        \" display a buffer for a new filename. \n        let s:originalTabNumber = tabpagenr()\n        let s:originalWindowNumber = winnr()\n        exec \"tabdo windo if winbufnr(0) == \" . a:bufnum . \" | exec ':e! \" . a:newFileName . \"' | endif\"\n        exec \"tabnext \" . s:originalTabNumber\n        exec s:originalWindowNumber . \"wincmd w\"\n        \" 3. We don't need a previous buffer anymore\n        exec \"bwipeout! \" . a:bufnum\n    endif\nendfunction\n\"FUNCTION: NERDTreeAddNode(){{{1\nfunction! NERDTreeAddNode()\n    let curDirNode = g:NERDTreeDirNode.GetSelected()\n\n    let newNodeName = input(\"Add a childnode\\n\".\n                          \\ \"==========================================================\\n\".\n                          \\ \"Enter the dir/file name to be created. Dirs end with a '/'\\n\" .\n                          \\ \"\", curDirNode.path.str() . g:NERDTreePath.Slash(), \"file\")\n\n    if newNodeName ==# ''\n        call s:echo(\"Node Creation Aborted.\")\n        return\n    endif\n\n    try\n        let newPath = g:NERDTreePath.Create(newNodeName)\n        let parentNode = b:NERDTreeRoot.findNode(newPath.getParent())\n\n        let newTreeNode = g:NERDTreeFileNode.New(newPath)\n        if parentNode.isOpen || !empty(parentNode.children)\n            call parentNode.addChild(newTreeNode, 1)\n            call NERDTreeRender()\n            call newTreeNode.putCursorHere(1, 0)\n        endif\n    catch /^NERDTree/\n        call s:echoWarning(\"Node Not Created.\")\n    endtry\nendfunction\n\n\"FUNCTION: NERDTreeMoveNode(){{{1\nfunction! NERDTreeMoveNode()\n    let curNode = g:NERDTreeFileNode.GetSelected()\n    let newNodePath = input(\"Rename the current node\\n\" .\n                          \\ \"==========================================================\\n\" .\n                          \\ \"Enter the new path for the node:                          \\n\" .\n                          \\ \"\", curNode.path.str(), \"file\")\n\n    if newNodePath ==# ''\n        call s:echo(\"Node Renaming Aborted.\")\n        return\n    endif\n\n    try\n        let bufnum = bufnr(curNode.path.str())\n\n        call curNode.rename(newNodePath)\n        call NERDTreeRender()\n\n        \"if the node is open in a buffer, ask the user if they want to\n        \"close that buffer\n        if bufnum != -1\n            let prompt = \"\\nNode renamed.\\n\\nThe old file is open in buffer \". bufnum . (bufwinnr(bufnum) ==# -1 ? \" (hidden)\" : \"\") .\". Replace this buffer with a new file? (yN)\"\n            call s:promptToRenameBuffer(bufnum,  prompt, newNodePath)\n        endif\n\n        call curNode.putCursorHere(1, 0)\n\n        redraw\n    catch /^NERDTree/\n        call s:echoWarning(\"Node Not Renamed.\")\n    endtry\nendfunction\n\n\" FUNCTION: NERDTreeDeleteNode() {{{1\nfunction! NERDTreeDeleteNode()\n    let currentNode = g:NERDTreeFileNode.GetSelected()\n    let confirmed = 0\n\n    if currentNode.path.isDirectory\n        let choice =input(\"Delete the current node\\n\" .\n                         \\ \"==========================================================\\n\" .\n                         \\ \"STOP! To delete this entire directory, type 'yes'\\n\" .\n                         \\ \"\" . currentNode.path.str() . \": \")\n        let confirmed = choice ==# 'yes'\n    else\n        echo \"Delete the current node\\n\" .\n           \\ \"==========================================================\\n\".\n           \\ \"Are you sure you wish to delete the node:\\n\" .\n           \\ \"\" . currentNode.path.str() . \" (yN):\"\n        let choice = nr2char(getchar())\n        let confirmed = choice ==# 'y'\n    endif\n\n\n    if confirmed\n        try\n            call currentNode.delete()\n            call NERDTreeRender()\n\n            \"if the node is open in a buffer, ask the user if they want to\n            \"close that buffer\n            let bufnum = bufnr(currentNode.path.str())\n            if buflisted(bufnum)\n                let prompt = \"\\nNode deleted.\\n\\nThe file is open in buffer \". bufnum . (bufwinnr(bufnum) ==# -1 ? \" (hidden)\" : \"\") .\". Delete this buffer? (yN)\"\n                call s:promptToDelBuffer(bufnum, prompt)\n            endif\n\n            redraw\n        catch /^NERDTree/\n            call s:echoWarning(\"Could not remove node\")\n        endtry\n    else\n        call s:echo(\"delete aborted\")\n    endif\n\nendfunction\n\n\" FUNCTION: NERDTreeCopyNode() {{{1\nfunction! NERDTreeCopyNode()\n    let currentNode = g:NERDTreeFileNode.GetSelected()\n    let newNodePath = input(\"Copy the current node\\n\" .\n                          \\ \"==========================================================\\n\" .\n                          \\ \"Enter the new path to copy the node to:                   \\n\" .\n                          \\ \"\", currentNode.path.str(), \"file\")\n\n    if newNodePath != \"\"\n        \"strip trailing slash\n        let newNodePath = substitute(newNodePath, '\\/$', '', '')\n\n        let confirmed = 1\n        if currentNode.path.copyingWillOverwrite(newNodePath)\n            call s:echo(\"Warning: copying may overwrite files! Continue? (yN)\")\n            let choice = nr2char(getchar())\n            let confirmed = choice ==# 'y'\n        endif\n\n        if confirmed\n            try\n                let newNode = currentNode.copy(newNodePath)\n                if !empty(newNode)\n                    call NERDTreeRender()\n                    call newNode.putCursorHere(0, 0)\n                endif\n            catch /^NERDTree/\n                call s:echoWarning(\"Could not copy node\")\n            endtry\n        endif\n    else\n        call s:echo(\"Copy aborted.\")\n    endif\n    redraw\nendfunction\n\nfunction! NERDTreeQuickLook()\n    let treenode = g:NERDTreeFileNode.GetSelected()\n    if treenode != {}\n        call system(\"qlmanage -p 2>/dev/null '\" . treenode.path.str() . \"'\")\n    endif\nendfunction\n\nfunction! NERDTreeRevealInFinder()\n    let treenode = g:NERDTreeFileNode.GetSelected()\n    if treenode != {}\n        let x = system(\"open -R '\" . treenode.path.str() . \"'\")\n    endif\nendfunction\n\nfunction! NERDTreeExecuteFile()\n    let treenode = g:NERDTreeFileNode.GetSelected()\n    if treenode != {}\n        let x = system(\"open '\" . treenode.path.str() . \"'\")\n    endif\nendfunction\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/nerdtree/plugin/NERD_tree.vim",
    "content": "\" ============================================================================\n\" File:        NERD_tree.vim\n\" Description: vim global plugin that provides a nice tree explorer\n\" Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\" Last Change: 28 December, 2011\n\" License:     This program is free software. It comes without any warranty,\n\"              to the extent permitted by applicable law. You can redistribute\n\"              it and/or modify it under the terms of the Do What The Fuck You\n\"              Want To Public License, Version 2, as published by Sam Hocevar.\n\"              See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\" ============================================================================\n\"\n\" SECTION: Script init stuff {{{1\n\"============================================================\nif exists(\"loaded_nerd_tree\")\n    finish\nendif\nif v:version < 700\n    echoerr \"NERDTree: this plugin requires vim >= 7. DOWNLOAD IT! You'll thank me later!\"\n    finish\nendif\nlet loaded_nerd_tree = 1\n\n\"for line continuation - i.e dont want C in &cpo\nlet s:old_cpo = &cpo\nset cpo&vim\n\n\"Function: s:initVariable() function {{{2\n\"This function is used to initialise a given variable to a given value. The\n\"variable is only initialised if it does not exist prior\n\"\n\"Args:\n\"var: the name of the var to be initialised\n\"value: the value to initialise var to\n\"\n\"Returns:\n\"1 if the var is set, 0 otherwise\nfunction! s:initVariable(var, value)\n    if !exists(a:var)\n        exec 'let ' . a:var . ' = ' . \"'\" . substitute(a:value, \"'\", \"''\", \"g\") . \"'\"\n        return 1\n    endif\n    return 0\nendfunction\n\n\"SECTION: Init variable calls and other random constants {{{2\ncall s:initVariable(\"g:NERDChristmasTree\", 1)\ncall s:initVariable(\"g:NERDTreeAutoCenter\", 1)\ncall s:initVariable(\"g:NERDTreeAutoCenterThreshold\", 3)\ncall s:initVariable(\"g:NERDTreeCaseSensitiveSort\", 0)\ncall s:initVariable(\"g:NERDTreeChDirMode\", 0)\ncall s:initVariable(\"g:NERDTreeMinimalUI\", 0)\nif !exists(\"g:NERDTreeIgnore\")\n    let g:NERDTreeIgnore = ['\\~$']\nendif\ncall s:initVariable(\"g:NERDTreeBookmarksFile\", expand('$HOME') . '/.NERDTreeBookmarks')\ncall s:initVariable(\"g:NERDTreeHighlightCursorline\", 1)\ncall s:initVariable(\"g:NERDTreeHijackNetrw\", 1)\ncall s:initVariable(\"g:NERDTreeMouseMode\", 1)\ncall s:initVariable(\"g:NERDTreeNotificationThreshold\", 100)\ncall s:initVariable(\"g:NERDTreeQuitOnOpen\", 0)\ncall s:initVariable(\"g:NERDTreeShowBookmarks\", 0)\ncall s:initVariable(\"g:NERDTreeShowFiles\", 1)\ncall s:initVariable(\"g:NERDTreeShowHidden\", 0)\ncall s:initVariable(\"g:NERDTreeShowLineNumbers\", 0)\ncall s:initVariable(\"g:NERDTreeSortDirs\", 1)\ncall s:initVariable(\"g:NERDTreeDirArrows\", !nerdtree#runningWindows())\ncall s:initVariable(\"g:NERDTreeCasadeOpenSingleChildDir\", 1)\n\nif !exists(\"g:NERDTreeSortOrder\")\n    let g:NERDTreeSortOrder = ['\\/$', '*', '\\.swp$',  '\\.bak$', '\\~$']\nelse\n    \"if there isnt a * in the sort sequence then add one\n    if count(g:NERDTreeSortOrder, '*') < 1\n        call add(g:NERDTreeSortOrder, '*')\n    endif\nendif\n\nif !exists('g:NERDTreeStatusline')\n\n    \"the exists() crap here is a hack to stop vim spazzing out when\n    \"loading a session that was created with an open nerd tree. It spazzes\n    \"because it doesnt store b:NERDTreeRoot (its a b: var, and its a hash)\n    let g:NERDTreeStatusline = \"%{exists('b:NERDTreeRoot')?b:NERDTreeRoot.path.str():''}\"\n\nendif\ncall s:initVariable(\"g:NERDTreeWinPos\", \"left\")\ncall s:initVariable(\"g:NERDTreeWinSize\", 31)\n\n\"init the shell commands that will be used to copy nodes, and remove dir trees\n\"\n\"Note: the space after the command is important\nif nerdtree#runningWindows()\n    call s:initVariable(\"g:NERDTreeRemoveDirCmd\", 'rmdir /s /q ')\nelse\n    call s:initVariable(\"g:NERDTreeRemoveDirCmd\", 'rm -rf ')\n    call s:initVariable(\"g:NERDTreeCopyCmd\", 'cp -r ')\nendif\n\n\n\"SECTION: Init variable calls for key mappings {{{2\ncall s:initVariable(\"g:NERDTreeMapActivateNode\", \"o\")\ncall s:initVariable(\"g:NERDTreeMapChangeRoot\", \"C\")\ncall s:initVariable(\"g:NERDTreeMapChdir\", \"cd\")\ncall s:initVariable(\"g:NERDTreeMapCloseChildren\", \"X\")\ncall s:initVariable(\"g:NERDTreeMapCloseDir\", \"x\")\ncall s:initVariable(\"g:NERDTreeMapDeleteBookmark\", \"D\")\ncall s:initVariable(\"g:NERDTreeMapMenu\", \"m\")\ncall s:initVariable(\"g:NERDTreeMapHelp\", \"?\")\ncall s:initVariable(\"g:NERDTreeMapJumpFirstChild\", \"K\")\ncall s:initVariable(\"g:NERDTreeMapJumpLastChild\", \"J\")\ncall s:initVariable(\"g:NERDTreeMapJumpNextSibling\", \"<C-j>\")\ncall s:initVariable(\"g:NERDTreeMapJumpParent\", \"p\")\ncall s:initVariable(\"g:NERDTreeMapJumpPrevSibling\", \"<C-k>\")\ncall s:initVariable(\"g:NERDTreeMapJumpRoot\", \"P\")\ncall s:initVariable(\"g:NERDTreeMapOpenExpl\", \"e\")\ncall s:initVariable(\"g:NERDTreeMapOpenInTab\", \"t\")\ncall s:initVariable(\"g:NERDTreeMapOpenInTabSilent\", \"T\")\ncall s:initVariable(\"g:NERDTreeMapOpenRecursively\", \"O\")\ncall s:initVariable(\"g:NERDTreeMapOpenSplit\", \"i\")\ncall s:initVariable(\"g:NERDTreeMapOpenVSplit\", \"s\")\ncall s:initVariable(\"g:NERDTreeMapPreview\", \"g\" . NERDTreeMapActivateNode)\ncall s:initVariable(\"g:NERDTreeMapPreviewSplit\", \"g\" . NERDTreeMapOpenSplit)\ncall s:initVariable(\"g:NERDTreeMapPreviewVSplit\", \"g\" . NERDTreeMapOpenVSplit)\ncall s:initVariable(\"g:NERDTreeMapQuit\", \"q\")\ncall s:initVariable(\"g:NERDTreeMapRefresh\", \"r\")\ncall s:initVariable(\"g:NERDTreeMapRefreshRoot\", \"R\")\ncall s:initVariable(\"g:NERDTreeMapToggleBookmarks\", \"B\")\ncall s:initVariable(\"g:NERDTreeMapToggleFiles\", \"F\")\ncall s:initVariable(\"g:NERDTreeMapToggleFilters\", \"f\")\ncall s:initVariable(\"g:NERDTreeMapToggleHidden\", \"I\")\ncall s:initVariable(\"g:NERDTreeMapToggleZoom\", \"A\")\ncall s:initVariable(\"g:NERDTreeMapUpdir\", \"u\")\ncall s:initVariable(\"g:NERDTreeMapUpdirKeepOpen\", \"U\")\ncall s:initVariable(\"g:NERDTreeMapCWD\", \"CD\")\n\n\"SECTION: Load class files{{{2\ncall nerdtree#loadClassFiles()\n\n\" SECTION: Commands {{{1\n\"============================================================\n\"init the command that users start the nerd tree with\ncommand! -n=? -complete=dir -bar NERDTree :call g:NERDTreeCreator.CreatePrimary('<args>')\ncommand! -n=? -complete=dir -bar NERDTreeToggle :call g:NERDTreeCreator.TogglePrimary('<args>')\ncommand! -n=0 -bar NERDTreeClose :call nerdtree#closeTreeIfOpen()\ncommand! -n=1 -complete=customlist,nerdtree#completeBookmarks -bar NERDTreeFromBookmark call g:NERDTreeCreator.CreatePrimary('<args>')\ncommand! -n=0 -bar NERDTreeMirror call g:NERDTreeCreator.CreateMirror()\ncommand! -n=0 -bar NERDTreeFind call nerdtree#findAndRevealPath()\ncommand! -n=0 -bar NERDTreeFocus call NERDTreeFocus()\ncommand! -n=0 -bar NERDTreeCWD call NERDTreeCWD()\n\" SECTION: Auto commands {{{1\n\"============================================================\naugroup NERDTree\n    \"Save the cursor position whenever we close the nerd tree\n    exec \"autocmd BufWinLeave \". g:NERDTreeCreator.BufNamePrefix() .\"* call nerdtree#saveScreenState()\"\n\n    \"disallow insert mode in the NERDTree\n    exec \"autocmd BufEnter \". g:NERDTreeCreator.BufNamePrefix() .\"* stopinsert\"\naugroup END\n\nif g:NERDTreeHijackNetrw\n    augroup NERDTreeHijackNetrw\n        autocmd VimEnter * silent! autocmd! FileExplorer\n        au BufEnter,VimEnter * call nerdtree#checkForBrowse(expand(\"<amatch>\"))\n    augroup END\nendif\n\n\" SECTION: Public API {{{1\n\"============================================================\nfunction! NERDTreeAddMenuItem(options)\n    call g:NERDTreeMenuItem.Create(a:options)\nendfunction\n\nfunction! NERDTreeAddMenuSeparator(...)\n    let opts = a:0 ? a:1 : {}\n    call g:NERDTreeMenuItem.CreateSeparator(opts)\nendfunction\n\nfunction! NERDTreeAddSubmenu(options)\n    return g:NERDTreeMenuItem.Create(a:options)\nendfunction\n\nfunction! NERDTreeAddKeyMap(options)\n    call g:NERDTreeKeyMap.Create(a:options)\nendfunction\n\nfunction! NERDTreeRender()\n    call nerdtree#renderView()\nendfunction\n\nfunction! NERDTreeFocus()\n    if nerdtree#isTreeOpen()\n        call nerdtree#putCursorInTreeWin()\n    else\n        call g:NERDTreeCreator.TogglePrimary(\"\")\n    endif\nendfunction\n\nfunction! NERDTreeCWD()\n    call NERDTreeFocus()\n    call nerdtree#chRootCwd()\nendfunction\n\" SECTION: Post Source Actions {{{1\ncall nerdtree#postSourceActions()\n\n\"reset &cpo back to users setting\nlet &cpo = s:old_cpo\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/nerdtree/syntax/nerdtree.vim",
    "content": "let s:tree_up_dir_line = '.. (up a dir)'\n\"NERDTreeFlags are syntax items that should be invisible, but give clues as to\n\"how things should be highlighted\nsyn match NERDTreeFlag #\\~#\nsyn match NERDTreeFlag #\\[RO\\]#\n\n\"highlighting for the .. (up dir) line at the top of the tree\nexecute \"syn match NERDTreeUp #\\\\V\". s:tree_up_dir_line .\"#\"\n\n\"highlighting for the ~/+ symbols for the directory nodes\nsyn match NERDTreeClosable #\\~\\<#\nsyn match NERDTreeClosable #\\~\\.#\nsyn match NERDTreeOpenable #+\\<#\nsyn match NERDTreeOpenable #+\\.#he=e-1\n\n\"highlighting for the tree structural parts\nsyn match NERDTreePart #|#\nsyn match NERDTreePart #`#\nsyn match NERDTreePartFile #[|`]-#hs=s+1 contains=NERDTreePart\n\n\"quickhelp syntax elements\nsyn match NERDTreeHelpKey #\" \\{1,2\\}[^ ]*:#hs=s+2,he=e-1\nsyn match NERDTreeHelpKey #\" \\{1,2\\}[^ ]*,#hs=s+2,he=e-1\nsyn match NERDTreeHelpTitle #\" .*\\~#hs=s+2,he=e-1 contains=NERDTreeFlag\nsyn match NERDTreeToggleOn #\".*(on)#hs=e-2,he=e-1 contains=NERDTreeHelpKey\nsyn match NERDTreeToggleOff #\".*(off)#hs=e-3,he=e-1 contains=NERDTreeHelpKey\nsyn match NERDTreeHelpCommand #\" :.\\{-}\\>#hs=s+3\nsyn match NERDTreeHelp  #^\".*# contains=NERDTreeHelpKey,NERDTreeHelpTitle,NERDTreeFlag,NERDTreeToggleOff,NERDTreeToggleOn,NERDTreeHelpCommand\n\n\"highlighting for readonly files\nsyn match NERDTreeRO #.*\\[RO\\]#hs=s+2 contains=NERDTreeFlag,NERDTreeBookmark,NERDTreePart,NERDTreePartFile\n\n\"highlighting for sym links\nsyn match NERDTreeLink #[^-| `].* -> # contains=NERDTreeBookmark,NERDTreeOpenable,NERDTreeClosable,NERDTreeDirSlash\n\n\"highlighing for directory nodes and file nodes\nsyn match NERDTreeDirSlash #/#\nsyn match NERDTreeDir #[^-| `].*/# contains=NERDTreeLink,NERDTreeDirSlash,NERDTreeOpenable,NERDTreeClosable\nsyn match NERDTreeExecFile  #[|` ].*\\*\\($\\| \\)# contains=NERDTreeLink,NERDTreePart,NERDTreeRO,NERDTreePartFile,NERDTreeBookmark\nsyn match NERDTreeFile  #|-.*# contains=NERDTreeLink,NERDTreePart,NERDTreeRO,NERDTreePartFile,NERDTreeBookmark,NERDTreeExecFile\nsyn match NERDTreeFile  #`-.*# contains=NERDTreeLink,NERDTreePart,NERDTreeRO,NERDTreePartFile,NERDTreeBookmark,NERDTreeExecFile\nsyn match NERDTreeCWD #^[</].*$#\n\n\"highlighting for bookmarks\nsyn match NERDTreeBookmark # {.*}#hs=s+1\n\n\"highlighting for the bookmarks table\nsyn match NERDTreeBookmarksLeader #^>#\nsyn match NERDTreeBookmarksHeader #^>-\\+Bookmarks-\\+$# contains=NERDTreeBookmarksLeader\nsyn match NERDTreeBookmarkName #^>.\\{-} #he=e-1 contains=NERDTreeBookmarksLeader\nsyn match NERDTreeBookmark #^>.*$# contains=NERDTreeBookmarksLeader,NERDTreeBookmarkName,NERDTreeBookmarksHeader\n\nif exists(\"g:NERDChristmasTree\") && g:NERDChristmasTree\n    hi def link NERDTreePart Special\n    hi def link NERDTreePartFile Type\n    hi def link NERDTreeFile Normal\n    hi def link NERDTreeExecFile Title\n    hi def link NERDTreeDirSlash Identifier\n    hi def link NERDTreeClosable Type\nelse\n    hi def link NERDTreePart Normal\n    hi def link NERDTreePartFile Normal\n    hi def link NERDTreeFile Normal\n    hi def link NERDTreeClosable Title\nendif\n\nhi def link NERDTreeBookmarksHeader statement\nhi def link NERDTreeBookmarksLeader ignore\nhi def link NERDTreeBookmarkName Identifier\nhi def link NERDTreeBookmark normal\n\nhi def link NERDTreeHelp String\nhi def link NERDTreeHelpKey Identifier\nhi def link NERDTreeHelpCommand Identifier\nhi def link NERDTreeHelpTitle Macro\nhi def link NERDTreeToggleOn Question\nhi def link NERDTreeToggleOff WarningMsg\n\nhi def link NERDTreeDir Directory\nhi def link NERDTreeUp Directory\nhi def link NERDTreeCWD Statement\nhi def link NERDTreeLink Macro\nhi def link NERDTreeOpenable Title\nhi def link NERDTreeFlag ignore\nhi def link NERDTreeRO WarningMsg\nhi def link NERDTreeBookmark Statement\n\nhi def link NERDTreeCurrentNode Search\n"
  },
  {
    "path": ".vim/bundle/paredit.vim/README",
    "content": "This is a mirror of http://www.vim.org/scripts/script.php?script_id=3998\n\nParedit performs structured editing of Lisp S-expressions in Vim. Paredit.vim is similar to paredit.el for Emacs. Paredit Mode tries to maintain the balanced state of matched characters (parenthesis marks, square and curly braces, double quotes). Matched characters are inserted and removed in pairs, also when working with a block of text (well, mostly). Paredit also implements many paredit.el s-expression handling functions, like Split/Join/Wrap/Splice/Raise. Slurpage and Barfage known from Emacs is also possible but in a different fashion: you don't move the list element in or out of the list, rather you move the opening or closing parenthesis over the element or sub-list.\n\nParedit.vim is also part of the Slimv plugin (http://www.vim.org/scripts/script.php?script_id=2531). Slimv is a SWANK client for Vim, similarly to SLIME for Emacs. Paredit.vim is extracted from Slimv for users who want to use a different SWANK client or don't need a SWANK client at all. In case you need structured editing together with the SWANK functionality then please install Slimv instead, you don't need to additionally install Paredit.\n\nFor more information see the included documentation.\n"
  },
  {
    "path": ".vim/bundle/paredit.vim/doc/paredit.txt",
    "content": "*paredit.txt*                   Paredit              Last Change: 29 Dec 2013\n\nParedit Mode for Vim                                  *paredit* *slimv-paredit*\n                               Version 0.9.12\n\nThe paredit.vim plugin performs structured editing of s-expressions used in\nthe Lisp, Clojure, Scheme programming languages. It may come as part of Slimv\nbut it is also distributed separately as a standalone plugin.\n\n|paredit-mode|               Paredit mode\n|paredit-keys|               Paredit keybindings\n|paredit-options|            Paredit options\n\n===============================================================================\nPAREDIT MODE                                                     *paredit-mode*\n\nParedit mode is a special editing mode that keeps all matched characters\n(parentheses, square and curly braces, double quotes) balanced, i.e. all opening\ncharacters have a matching closing character. Most text entering and erasing\ncommands try to maintain the balanced state, so no single matched character is\nadded or deleted, they are entered or removed in pairs.\nThe function takes care of strings and comments, so no parenthesis and square\nbracket balancing is performed inside a string or comment.\nPlease note that [] and {} pairs are not balanced for Lisp filetypes, only\nfor Clojure and Scheme.\n\nThe idea is taken from the paredit mode of Emacs, but not all paredit.el\nediting functions are implemented or behave exactly the same way as they do\nin Emacs.\n\nWhen you enter a '(' then a matching ')' is automatically inserted.\nIf needed, spaces before and/or after the '()' pair are added.\n\nWhen you press ')' in insert mode then there's no need to insert a closing\nparenthesis mark (it is already there), so the cursor is simply advanced past\nthe next closing parenthesis (then the next outer closing parenthesis, etc.).\nThe result of this is however that when entering text with paredit mode\nyou can use the same keystrokes as without paredit mode and you get the same\nresult. Of course you can choose to not enter the closing parenthesis (as\nrequired without paredit mode), because it is already there.\n\nWhen you are trying to delete a ')' alone then it is not possible, the cursor\nis simply moved inside the list, where all regular characters can be deleted.\nWhen the list is finally empty: '()', then the deletion of the opening '('\nmakes both parentheses erased at once, so the balanced state is maintained.\n\nAll the above holds for [...] and \"...\" character pairs.\n\nWhen you are deleting multiple characters at once, e.g. deleting a whole line,\nor deleting till the end of the line, etc, then the deletion logic of a single\ncharacter is iterated. This means that the whole line or the characters till\nthe end of the line, etc are not necessarily deleted all. Depending on the\nnumber of open/close parentheses, square or curly braces, double quotes some\nof them might be kept in order to maintain the balanced state.\nFor example if you press D in Normal mode to delete till the end of line\nbetween the a and b parameters of the following Clojure function definition:\n\n(defn myfunc [a b c] (+ a b c))\n               ^--- press D here\n\nthen the closing ] as well as the last closing ) will not be deleted, because\nin the list you have an ( and a [ to be matched, so the result will be:\n\n(defn myfunc [a])\n\nIf you are deleting multiple lines, then the above process is performed for\nall lines involved. If a line was not completely cleared, then it is joined\nwith the next line and the process continues.\n\n\nOf course not all Vim commands are compatible with the paredit mode (e.g.\nyou can yank and paste unbalanced code snippet, or comment out an asymmetrical\npart of the code), and there is also the possibility to edit the source code\nwith paredit mode switched off or with another editor to make it unbalanced.\nWhen paredit mode detects that the underlying code is not balanced, then the\nparedit functionality is suspended until the top level form balance is fixed.\nAs soon as all parens are matched, the paredit mode is automatically resumed.\nParedit needs \"syntax on\" to identify the syntax elements of the underlying\ncode, so if syntax is switched off, then paredit will not be suspended inside\ncomments or strings.\n\n\nSlurpage and Barfage known from Emacs is also possible but in a different\nfashion: you don't move the symbols but move the opening or closing parenthesis\nover the symbol or a sub-list. This way you can move any symbol or sub-list\ninto or out of the current list. It is not possible to move the parenthesis\nover its pair, so for example if you move the opening parenthesis to the right,\nthen it will stop at the matched closing parenthesis.\n\n\nParedit mode is set by default for .lisp, .cl, .clj, cljs, .scm and .rkt files,\nbut it is possible to switch it off by putting the following statement in the\n.vimrc file:\n\n    let g:paredit_mode = 0\n\nYou can enable paredit mode for other file types as well. Here is how to set\nit for Arc files in your .vimrc (assuming you have a filetype 'arc' defined):\n\n    au FileType arc call PareditInitBuffer()\n\nParedit is part of Slimv, but it is also distributed separately as a standalone\nplugin. If you indend to use the SWANK client and/or Slimv's indentation and\nsyntax functions, then please install the Slimv plugin. Otherwise you may want\nto install the Paredit plugin thus omitting other unnecessary files.\n\n\n===============================================================================\nPAREDIT KEYBINDINGS                                              *paredit-keys*\n\nHere follows a list of paredit keybindings:\n\n\nInsert Mode:\n\n    (              Inserts '()' and moves the cursor inside. Also adds leading\n                   or trailing spaces when needed.\n                   Inserts '(' when inside comment or string.\n\n    )              Moves the cursor to the next closing parenthesis mark of\n                   the current list. When pressed again then moves to the next\n                   outer closing parenthesis, etc, until the closing of the\n                   top level form is reached.\n                   Inserts ')' when inside comment or string.\n                   If |g:paredit_electric_return| is on then it also re-gathers\n                   electric returns when appropriate.\n\n    [              Inserts '[]' and moves the cursor inside. Also adds leading\n                   or trailing spaces when needed.\n                   Inserts '[' when inside comment or string.\n\n    ]              Moves the cursor to the next closing square bracket of the\n                   current list. When pressed again then moves to the next\n                   outer closing square bracket, etc, until the closing of the\n                   top level form is reached.\n                   Inserts ']' when inside comment or string.\n                   If |g:paredit_electric_return| is on then it also re-gathers\n                   electric returns when appropriate.\n\n    {              Inserts '{}' and moves the cursor inside. Also adds leading\n                   or trailing spaces when needed.\n                   Inserts '{' when inside comment or string.\n\n    }              Moves the cursor to the next closing curly brace of the\n                   current list. When pressed again then moves to the next\n                   outer closing curly brace, etc, until the closing of the\n                   top level form is reached.\n                   Inserts '}' when inside comment or string.\n                   If |g:paredit_electric_return| is on then it also re-gathers\n                   electric returns when appropriate.\n\n    \"              When outside of string, inserts '\"\"' and moves the cursor\n                   inside. When inside string then moves to the closing '\"'.                   \n                   Inserts '\"' when inside comment. Also insert '\"' when inside\n                   string and preceded by a '\\'.\n\n    <BS>           When about to delete a (, ), [, ], or \" and there are other\n                   characters inside, then just skip it to the left. When\n                   about to delete the opening part of the matched character\n                   with nothing inside, then the whole empty list is removed.\n\n    <Del>          When about to delete a (, ), [, ], or \" and there are other\n                   characters inside, then just skip it to the right. When\n                   about to delete the closing part of the matched character\n                   with nothing inside, then the whole empty list is removed.\n\n    <Enter>        If |g:paredit_electric_return| is on then insert an\n                   \"electric return\", i.e. create an empty line by inserting\n                   two newline characters.\n                   \n\nNormal Mode:\n\n    (              Finds opening '(' of the current list. Can be pressed\n                   repeatedly until the opening of the top level form reached.\n\n    )              Finds closing ')' of the current list. Can be pressed\n                   repeatedly until the closing of the top level form reached.\n\n    [[             Go to the start of current/previous defun.\n\n    ]]             Go to the start of next defun.\n\n    <Leader><      If standing on a delimiter (parenthesis or square bracket)\n                   then moves it to the left by slurping or barfing the\n                   s-expression to the left, depending on the direction of the\n                   delimiter:\n                   Pressing '<' when standing on a ')' makes the s-expression\n                   to the left of the ')' going out of the current list.\n                   Pressing '<' when standing on a '(' makes the s-expression\n                   to the left of the '(' coming into the current list.\n                   For example pressing <Leader>< at position marked with |:\n                       (aaa bbb|)        --->    (aaa|) bbb\n                       aaa |(bbb)        --->    |(aaa bbb)\n\n    <Leader>>      If standing on a delimiter (parenthesis or square bracket)\n                   then moves it to the right by slurping or barfing the\n                   s-expression to the right, depending on the direction of the\n                   delimiter:\n                   Pressing '>' when standing on a '(' makes the s-expression\n                   to the right of the '(' going out of the current list.\n                   Pressing '>' when standing on a ')' makes the s-expression\n                   to the right of the ')' coming into the current list.\n                   For example pressing <Leader>< at position marked with |:\n                       (aaa|) bbb        --->    (aaa bbb|)\n                       |(aaa bbb)        --->    aaa |(bbb)\n\n    <Leader>J      Join two subsequent lists or strings. The first one must end\n                   before the cursor, the second one must start after the\n                   cursor position.\n                   For example pressing <Leader>J at position marked with |:\n                       (aaa)| (bbb)      --->    (aaa |bbb)\n                       \"aaa\"| \"bbb\"      --->    \"aaa |bbb\"\n\n    <Leader>O      Split (\"Open\") current list or string at the cursor position.\n                   Opposite of Join. Key O is selected because for the original\n                   Vim mapping J and O are also kind of opposites.\n                   For example pressing <Leader>O at position marked with |:\n                       (aaa |bbb)        --->    (aaa) |(bbb)\n                       \"aaa|bbb\"         --->    \"aaa\" |\"bbb\"\n\n    <Leader>W      Wrap the current symbol in a pair of parentheses. The cursor\n    <Leader>w(     is then positioned on the opening parenthesis, as wrapping\n                   is usually done because one wants to call a function with\n                   the symbol as parameter, so by pressing \"a\" one can enter\n                   the function name right after the newly inserted \"(\".\n                   For example pressing <Leader>W at position marked with |:\n                       (aaa b|bb ccc)    --->    (aaa |(bbb) ccc)\n\n    <Leader>w[     Wrap the current symbol in a pair of square brackets,\n                   similarly to <Leader>W.\n                   For example pressing <Leader>w[ at position marked with |:\n                       (aaa b|bb ccc)    --->    (aaa |[bbb] ccc)\n\n    <Leader>w{     Wrap the current symbol in a pair of curly braces,\n                   similarly to <Leader>W.\n                   For example pressing <Leader>w{ at position marked with |:\n                       (aaa b|bb ccc)    --->    (aaa |{bbb} ccc)\n\n    <Leader>w\"     Wrap the current symbol in a pair of double quotes,\n                   similarly to <Leader>W.\n                   For example pressing <Leader>w\" at position marked with |:\n                       (aaa b|bb ccc)    --->    (aaa \"bbb|\" ccc)\n\n    <Leader>S      Splice the current list into the containing list, i.e.\n                   remove the opening and closing parens. Opposite of wrap.\n                   For example pressing <Leader>S at position marked with |:\n                       (aaa (b|bb ccc) ddd)  --->    (aaa |bbb ccc ddd)\n\n    <Leader><Up>   Splice the current list into the containing list by deleting\n                   everything backward from the cursor position up to the\n                   opening paren.\n                   For example pressing <Leader><Up> at position marked with |:\n                       (aaa (bbb |ccc) ddd)  --->    (aaa |ccc ddd)\n\n    <Leader><Down> Splice the current list into the containing list by deleting\n                   everything forward from the cursor position up to the\n                   closing paren.\n                   For example pressing <Leader><Down> at position marked with |:\n                       (aaa (bbb| ccc) ddd)  --->    (aaa |bbb ddd)\n\n    <Leader>I      Raise the current symbol, i.e. replace the current list with\n                   the current symbol by deleting everything else (except the\n                   symbol) in the list, including the eclosing pair of parens.\n                   For example pressing <Leader>I at position marked with |:\n                       (aaa (b|bb ccc) ddd)  --->    (aaa |bbb ddd)\n\n    x  or  <Del>   When about to delete a (, ), [, ], or \" and there are other\n                   characters inside, then just skip it to the right. When\n                   about to delete the closing part of the matched character\n                   with nothing inside, then the whole empty list is removed.\n                   When preceded by a <count> value then delete this many\n                   characters.\n\n    X              When about to delete a (, ), [, ], or \" and there are other\n                   characters inside, then just skip it to the left. When\n                   about to delete the opening part of the matched character\n                   with nothing inside, then the whole empty list is removed.\n\n    D              Keep deleting characters towards the end of line,\n                   maintaining the balanced state, i.e. keep the number of\n                   opening and closing parens the same.\n\n    C              Same as 'D' but go to insert mode at the end.\n\n    s              Same as 'x' but go to insert mode at the end.\n\n    dd             Delete whole line by keeping the balanced state, i.e.\n                   keep the number of opening and closing parens the same.\n                   When preceded by a <count> value then delete this many\n                   lines.\n\n    cc             Same as 'dd' but go to insert mode at the end.\n\n    d{motion}      Delete text till {motion}. Keeps text balanced, so if the\n                   surrounded text contains unpaired matched characters then\n                   they are not removed.\n\n    c{motion}      Delete text till {motion} and start insert mode. Keeps text\n                   balanced just like d{motion}.\n\n    p              Put the text after the cursor with all unbalanced matched\n                   characters removed.\n\n    P              Put the text before the cursor with all unbalanced matched\n                   characters removed.\n\n\nVisual Mode:\n\n    (              Finds opening '(' of the current list and selects the whole\n                   list. Can be pressed repeatedly until the top level form\n                   selected.\n\n    )              Finds closing ')' of the current list and selects the whole\n                   list. Can be pressed repeatedly until the top level form\n                   selected.\n\n    d              Delete the current visual selection. Keeps text balanced,\n    x              so the the selection contains unpaired matched characters\n    <Del>          then they are not removed.\n\n    c              Delete the current visual selection and start insert mode.\n                   Keeps text balanced just like the 'd' command.\n\n    <Leader>W      Wrap the current visual selection in a pair of parentheses.\n    <Leader>w(     The visual selection is kept.\n\n    <Leader>w[     Wrap the current visual selection in a pair of square\n                   brackets. The visual selection is kept.\n\n    <Leader>w{     Wrap the current visual selection in a pair of curly braces.\n                   The visual selection is kept.\n\n    <Leader>w\"     Wrap the current visual selection in a pair of double\n                   quotes. The visual selection is kept.\n\n\nPlease note that if variable |g:paredit_shortmaps| is nonzero then the\nfollowing normal mode mappings don't get a <Leader> prefix, they are mapped\nto existing (but infrequently used) Vim functions and instead the original Vim\nfunctions are mapped with the <Leader> prefix:\n\n                   <, >, J, O, W, S\n\n\nVim has many built-in mappings for manipulating s-expressions. Here follows a\nlist of useful commands, these are not defined by paredit.vim, they are\navailable even when paredit mode is switched off.\n\n    %              Find the matching pair of the parenthesis the cursor is\n                   standing on.\n\n    d%             Delete till the matching parenthesis. Normally it is used\n                   when the cursor is standing on a parenthesis (works with\n                   square or curly braces as well). If not standing on a\n                   parenthesis then deletes left till the first opening paren,\n                   so this command may also be used to delete an s-expression\n                   that is right before the cursor.\n\n    daw            Delete a word. Can be used to delete a list element, the\n                   cursor may be placed anywhere in the element.\n\n    da(            Delete the innermost s-expression. The cursor may be placed\n                   anywhere inside the s-expression.\n\n    di(            Same as da( but does not delete the enclosing parens.\n\n\n===============================================================================\nPAREDIT OPTIONS                                               *paredit-options*\n\n|g:paredit_disable_clojure|  If defined, paredit is disabled for clojure files.\n\n|g:paredit_disable_lisp|     If defined, paredit is disabled for lisp files.\n\n|g:paredit_disable_scheme|   If defined, paredit is disabled for scheme files.\n\n|g:paredit_electric_return|  If nonzero, electric return feature is enabled.\n\n|g:paredit_smartjump|        If nonzero, '(' and ')' also target square brackets\n                             and curly braces when editing Clojure or Scheme.\n\n|g:paredit_leader|           Custom <Leader> setting for Paredit.\n\n|g:paredit_matchlines|       Number of lines to look backward and forward\n                             when checking if the current form is balanced.\n\n|g:paredit_mode|             If nonzero, paredit mode is switched on.\n\n|g:paredit_shortmaps|        If nonzero, paredit is remapping some one-letter\n                             Vim commands that are not frequently used.\n\n\n                                                    *g:paredit_disable_clojure*\n                                                       *g:paredit_disable_lisp*\n                                                     *g:paredit_disable_scheme*\nIf defined then paredit is disabled for the given file type. Useful to use\na different plugin for a specific file type, but keep using paredit for the\nothers.\n\n                                                    *g:paredit_electric_return*\nIf nonzero then \"electric return\" feature is enabled. This means that when an\n<Enter> is pressed before a closing paren in insert mode, paredit will actually\ninsert two newlines creating an empty line. The extra newline is consumed at\npressing the next closing paren. This feature allows linewise editing of the\nsubform entered in the next (empty) line.\nIn other words <Enter> \"opens\" parenthetical expressions while editing, ')'\n\"closes\" them.\nPlease note that electric return is disabled for the REPL buffer if Slimv\noption |g:slimv_repl_simple_eval| is nonzero. In this case <Enter> is used\nto send the command line to the swank server for evaluation.\n\nPlease find a video demonstration of the electric return feature here:\nhttp://img8.imageshack.us/img8/9479/openparen.gif\n\n                                                          *g:paredit_smartjump*\nIf nonzero, this option changes the behavior of '(' and ')' in normal and visual\nmodes when editing Clojure or Scheme. Rather than jumping to nearest open or close\nparenthesis, instead the cursor will jump to the nearest '(', '[', or '{' if\nyou press '(', and it will jump to the nearest ')', ']', or '}' if you press\n')'. This option makes it much easier to navigate nested Clojure data\nstructures. It does nothing if the filetype is not clojure or Scheme.\n\n                                                             *g:paredit_leader*\nThis option allows a custom <Leader> setting for the Paredit keybindings.\nBy default it has the same value as |mapleader|. If neither g:paredit_leader\nnor mapleader are defined then the default <Leader> is \",\" in Paredit.\nExample:\n    let g:paredit_leader = '\\'\nIf this is set in the .vimrc then Wrap will be mapped to \\W instead of ,W.\n\nThere is a separate |g:slimv_leader| option for the general Slimv keybindings.\n\n                                                         *g:paredit_matchlines*\nNumber of lines to look backward and forward when checking if the current\ntop level form is balanced in paredit mode. Default is 100.\n\n                                                               *g:paredit_mode*\nIf nonzero then paredit mode is switched on, i.e. the plugin tries to keep the\nbalanced state of parens. This is the default behaviour.\n\n                                                          *g:paredit_shortmaps*\nIf nonzero, paredit is remapping some one-letter normal mode Vim commands that\nare not frequently used. These are <, >, J, O, W, S. The original function of\nthese maps then can be reached via <Leader> (which is the \",\" character\nby default in Paredit).\nOtherwise these paredit functions can be reached via <Leader> maintaining the\noriginal functions of these keys.\n\n\n===============================================================================\nvim:tw=80:et:wrap:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/paredit.vim/plugin/paredit.vim",
    "content": "\" paredit.vim:\n\"               Paredit mode for Slimv\n\" Version:      0.9.12\n\" Last Change:  20 Nov 2013\n\" Maintainer:   Tamas Kovacs <kovisoft at gmail dot com>\n\" License:      This file is placed in the public domain.\n\"               No warranty, express or implied.\n\"               *** ***   Use At-Your-Own-Risk!   *** ***\n\"\n\" =====================================================================\n\"\n\"  Load Once:\nif &cp || exists( 'g:paredit_loaded' )\n    finish\nendif\n\nlet g:paredit_loaded = 1\n\n\" Needed to load filetype and indent plugins\nfiletype plugin on\nfiletype indent on\n\n\" =====================================================================\n\"  Global variable definitions\n\" =====================================================================\n\n\" Paredit mode selector\nif !exists( 'g:paredit_mode' )\n    let g:paredit_mode = 1\nendif\n\n\" Match delimiter this number of lines before and after cursor position\nif !exists( 'g:paredit_matchlines' )\n    let g:paredit_matchlines = 100\nendif\n\n\" Use short keymaps, i.e. J instead of <Leader>J\nif !exists( 'g:paredit_shortmaps' )\n    let g:paredit_shortmaps = 0\nendif\n\n\" Use smart jumping to the nearest paren, curly brace, or square bracket in\n\" clojure\nif !exists( 'g:paredit_smartjump' )\n    let g:paredit_smartjump = 0\nendif\n\n\" Custom <Leader> for the Paredit plugin\nif !exists( 'g:paredit_leader' )\n    if exists( 'mapleader' )\n        let g:paredit_leader = mapleader\n    else\n        let g:paredit_leader = ','\n    endif\nendif\n\n\" Use 'Electric Return', i.e. add double newlines if enter pressed before a closing paren\nif !exists( 'g:paredit_electric_return' )\n    let g:paredit_electric_return = 1\nendif\n\n\" =====================================================================\n\"  Other variable definitions\n\" =====================================================================\n\n\" Skip matches inside string or comment or after '\\'\nlet s:skip_sc = '(synIDattr(synID(line(\".\"), col(\".\"), 0), \"name\") =~ \"[Ss]tring\\\\|[Cc]omment\\\\|[Ss]pecial\\\\|clojureRegexp\\\\|clojurePattern\" || getline(line(\".\"))[col(\".\")-2] == \"\\\\\")'\n\n\" Valid macro prefix characters\nlet s:any_macro_prefix   = \"'\" . '\\|`\\|#\\|@\\|\\~\\|,\\|\\^'\n\n\" Repeat count for some remapped edit functions (like 'd')\nlet s:repeat             = 0\n\nlet s:yank_pos           = []\n\n\" =====================================================================\n\"  General utility functions\n\" =====================================================================\n\" Buffer specific initialization\nfunction! PareditInitBuffer()\n    let b:paredit_init = 1\n    \" in case they are accidentally removed\n    \" Also define regular expressions to identify special characters used by paredit\n    if &ft =~ '.*\\(clojure\\|scheme\\|racket\\).*'\n        let b:any_matched_char   = '(\\|)\\|\\[\\|\\]\\|{\\|}\\|\\\"'\n        let b:any_matched_pair   = '()\\|\\[\\]\\|{}\\|\\\"\\\"'\n        let b:any_opening_char   = '(\\|\\[\\|{'\n        let b:any_closing_char   = ')\\|\\]\\|}'\n        let b:any_openclose_char = '(\\|)\\|\\[\\|\\]\\|{\\|}'\n        let b:any_wsopen_char    = '\\s\\|(\\|\\[\\|{'\n        let b:any_wsclose_char   = '\\s\\|)\\|\\]\\|}'\n    else\n        let b:any_matched_char   = '(\\|)\\|\\\"'\n        let b:any_matched_pair   = '()\\|\\\"\\\"'\n        let b:any_opening_char   = '('\n        let b:any_closing_char   = ')'\n        let b:any_openclose_char = '(\\|)'\n        let b:any_wsopen_char    = '\\s\\|('\n        let b:any_wsclose_char   = '\\s\\|)'\n    endif\n\n    if g:paredit_mode\n        \" Paredit mode is on: add buffer specific keybindings\n        inoremap <buffer> <expr>   (            PareditInsertOpening('(',')')\n        inoremap <buffer> <silent> )            <C-R>=(pumvisible() ? \"\\<lt>C-Y>\" : \"\")<CR><C-O>:let save_ve=&ve<CR><C-O>:set ve=all<CR><C-O>:<C-U>call PareditInsertClosing('(',')')<CR><C-O>:let &ve=save_ve<CR>\n        inoremap <buffer> <expr>   \"            PareditInsertQuotes()\n        inoremap <buffer> <expr>   <BS>         PareditBackspace(0)\n        inoremap <buffer> <expr>   <Del>        PareditDel()\n        if &ft =~ '.*\\(clojure\\|scheme\\|racket\\).*' && g:paredit_smartjump\n            nnoremap <buffer> <silent> (            :<C-U>call PareditSmartJumpOpening(0)<CR>\n            nnoremap <buffer> <silent> )            :<C-U>call PareditSmartJumpClosing(0)<CR>\n            vnoremap <buffer> <silent> (            <Esc>:<C-U>call PareditSmartJumpOpening(1)<CR>\n            vnoremap <buffer> <silent> )            <Esc>:<C-U>call PareditSmartJumpClosing(1)<CR>\n        else\n            nnoremap <buffer> <silent> (            :<C-U>call PareditFindOpening('(',')',0)<CR>\n            nnoremap <buffer> <silent> )            :<C-U>call PareditFindClosing('(',')',0)<CR>\n            vnoremap <buffer> <silent> (            <Esc>:<C-U>call PareditFindOpening('(',')',1)<CR>\n            vnoremap <buffer> <silent> )            <Esc>:<C-U>call PareditFindClosing('(',')',1)<CR>\n        endif\n        nnoremap <buffer> <silent> [[           :<C-U>call PareditFindDefunBck()<CR>\n        nnoremap <buffer> <silent> ]]           :<C-U>call PareditFindDefunFwd()<CR>\n\n        call RepeatableNNoRemap('x', ':<C-U>call PareditEraseFwd()')\n        nnoremap <buffer> <silent> <Del>        :<C-U>call PareditEraseFwd()<CR>\n        call RepeatableNNoRemap('X', ':<C-U>call PareditEraseBck()')\n        nnoremap <buffer> <silent> s            :<C-U>call PareditEraseFwd()<CR>i\n        call RepeatableNNoRemap('D', 'v$:<C-U>call PareditDelete(visualmode(),1)')\n        nnoremap <buffer> <silent> C            v$:<C-U>call PareditChange(visualmode(),1)<CR>\n        nnoremap <buffer> <silent> d            :<C-U>call PareditSetDelete(v:count)<CR>g@\n        vnoremap <buffer> <silent> d            :<C-U>call PareditDelete(visualmode(),1)<CR>\n        vnoremap <buffer> <silent> x            :<C-U>call PareditDelete(visualmode(),1)<CR>\n        vnoremap <buffer> <silent> <Del>        :<C-U>call PareditDelete(visualmode(),1)<CR>\n        nnoremap <buffer> <silent> c            :set opfunc=PareditChange<CR>g@\n        vnoremap <buffer> <silent> c            :<C-U>call PareditChange(visualmode(),1)<CR>\n        call RepeatableNNoRemap('dd', ':<C-U>call PareditDeleteLines()')\n        nnoremap <buffer> <silent> cc           :<C-U>call PareditChangeLines()<CR>\n        nnoremap <buffer> <silent> cw           :<C-U>call PareditChangeSpec('cw',1)<CR>\n        nnoremap <buffer> <silent> cW           :set opfunc=PareditChange<CR>g@E\n        nnoremap <buffer> <silent> cb           :<C-U>call PareditChangeSpec('cb',0)<CR>\n        nnoremap <buffer> <silent> ciw          :<C-U>call PareditChangeSpec('ciw',1)<CR>\n        nnoremap <buffer> <silent> caw          :<C-U>call PareditChangeSpec('caw',1)<CR>\n        call RepeatableNNoRemap('p', ':<C-U>call PareditPut(\"p\")')\n        call RepeatableNNoRemap('P', ':<C-U>call PareditPut(\"P\")')\n        call RepeatableNNoRemap(g:paredit_leader . 'w(', ':<C-U>call PareditWrap(\"(\",\")\")')\n        execute 'vnoremap <buffer> <silent> ' . g:paredit_leader.'w(  :<C-U>call PareditWrapSelection(\"(\",\")\")<CR>'\n        call RepeatableNNoRemap(g:paredit_leader . 'w\"', ':<C-U>call PareditWrap('.\"'\".'\"'.\"','\".'\"'.\"')\")\n        execute 'vnoremap <buffer> <silent> ' . g:paredit_leader.'w\"  :<C-U>call PareditWrapSelection('.\"'\".'\"'.\"','\".'\"'.\"')<CR>\"\n        \" Spliec s-expression killing backward/forward\n        execute 'nmap     <buffer> <silent> ' . g:paredit_leader.'<Up>    d[(,S'\n        execute 'nmap     <buffer> <silent> ' . g:paredit_leader.'<Down>  d])%,S'\n        call RepeatableNNoRemap(g:paredit_leader . 'I', ':<C-U>call PareditRaise()')\n        if &ft =~ '.*\\(clojure\\|scheme\\|racket\\).*'\n            inoremap <buffer> <expr>   [            PareditInsertOpening('[',']')\n            inoremap <buffer> <silent> ]            <C-R>=(pumvisible() ? \"\\<lt>C-Y>\" : \"\")<CR><C-O>:let save_ve=&ve<CR><C-O>:set ve=all<CR><C-O>:<C-U>call PareditInsertClosing('[',']')<CR><C-O>:let &ve=save_ve<CR>\n            inoremap <buffer> <expr>   {            PareditInsertOpening('{','}')\n            inoremap <buffer> <silent> }            <C-R>=(pumvisible() ? \"\\<lt>C-Y>\" : \"\")<CR><C-O>:let save_ve=&ve<CR><C-O>:set ve=all<CR><C-O>:<C-U>call PareditInsertClosing('{','}')<CR><C-O>:let &ve=save_ve<CR>\n            call RepeatableNNoRemap(g:paredit_leader . 'w[', ':<C-U>call PareditWrap(\"[\",\"]\")')\n            execute 'vnoremap <buffer> <silent> ' . g:paredit_leader.'w[  :<C-U>call PareditWrapSelection(\"[\",\"]\")<CR>'\n            call RepeatableNNoRemap(g:paredit_leader . 'w{', ':<C-U>call PareditWrap(\"{\",\"}\")')\n            execute 'vnoremap <buffer> <silent> ' . g:paredit_leader.'w{  :<C-U>call PareditWrapSelection(\"{\",\"}\")<CR>'\n        endif\n\n        if g:paredit_shortmaps\n            \" Shorter keymaps: old functionality of KEY is remapped to <Leader>KEY\n            call RepeatableNNoRemap('<', ':<C-U>call PareditMoveLeft()') \n            call RepeatableNNoRemap('>', ':<C-U>call PareditMoveRight()') \n            call RepeatableNNoRemap('O', ':<C-U>call PareditSplit()') \n            call RepeatableNNoRemap('J', ':<C-U>call PareditJoin()') \n            call RepeatableNNoRemap('W', ':<C-U>call PareditWrap(\"(\",\")\")') \n            vnoremap <buffer> <silent> W            :<C-U>call PareditWrapSelection('(',')')<CR>\n            call RepeatableNNoRemap('S', ':<C-U>call PareditSplice()') \n            execute 'nnoremap <buffer> <silent> ' . g:paredit_leader.'<  :<C-U>normal! <<CR>'\n            execute 'nnoremap <buffer> <silent> ' . g:paredit_leader.'>  :<C-U>normal! ><CR>'\n            execute 'nnoremap <buffer> <silent> ' . g:paredit_leader.'O  :<C-U>normal! O<CR>'\n            execute 'nnoremap <buffer> <silent> ' . g:paredit_leader.'J  :<C-U>normal! J<CR>'\n            execute 'nnoremap <buffer> <silent> ' . g:paredit_leader.'W  :<C-U>normal! W<CR>'\n            execute 'vnoremap <buffer> <silent> ' . g:paredit_leader.'W  :<C-U>normal! W<CR>'\n            execute 'nnoremap <buffer> <silent> ' . g:paredit_leader.'S  :<C-U>normal! S<CR>'\n        else\n            \" Longer keymaps with <Leader> prefix\n            nnoremap <buffer> <silent> S            V:<C-U>call PareditChange(visualmode(),1)<CR>\n            call RepeatableNNoRemap(g:paredit_leader . '<', ':<C-U>call PareditMoveLeft()') \n            call RepeatableNNoRemap(g:paredit_leader . '>', ':<C-U>call PareditMoveRight()') \n            call RepeatableNNoRemap(g:paredit_leader . 'O', ':<C-U>call PareditSplit()') \n            call RepeatableNNoRemap(g:paredit_leader . 'J', ':<C-U>call PareditJoin()') \n            call RepeatableNNoRemap(g:paredit_leader . 'W', ':<C-U>call PareditWrap(\"(\",\")\")') \n            execute 'vnoremap <buffer> <silent> ' . g:paredit_leader.'W  :<C-U>call PareditWrapSelection(\"(\",\")\")<CR>'\n            call RepeatableNNoRemap(g:paredit_leader . 'S', ':<C-U>call PareditSplice()') \n        endif\n\n        if g:paredit_electric_return && mapcheck( \"<CR>\", \"i\" ) == \"\"\n            \" Do not override any possible mapping for <Enter>\n            inoremap <buffer> <expr>   <CR>         PareditEnter()\n        endif\n    else\n        \" Paredit mode is off: remove keybindings\n        silent! iunmap <buffer> (\n        silent! iunmap <buffer> )\n        silent! iunmap <buffer> \"\n        silent! iunmap <buffer> <BS>\n        silent! iunmap <buffer> <Del>\n        silent! unmap  <buffer> (\n        silent! unmap  <buffer> )\n        silent! unmap  <buffer> [[\n        silent! unmap  <buffer> ]]\n        silent! unmap  <buffer> x\n        silent! unmap  <buffer> <Del>\n        silent! unmap  <buffer> X\n        silent! unmap  <buffer> s\n        silent! unmap  <buffer> D\n        silent! unmap  <buffer> C\n        silent! unmap  <buffer> d\n        silent! unmap  <buffer> c\n        silent! unmap  <buffer> dd\n        silent! unmap  <buffer> cc\n        silent! unmap  <buffer> cw\n        silent! unmap  <buffer> cW\n        silent! unmap  <buffer> cb\n        silent! unmap  <buffer> ciw\n        silent! unmap  <buffer> caw\n        if &ft =~ '.*\\(clojure\\|scheme\\|racket\\).*'\n            silent! iunmap <buffer> [\n            silent! iunmap <buffer> ]\n            silent! iunmap <buffer> {\n            silent! iunmap <buffer> }\n        endif\n        if mapcheck( \"<CR>\", \"i\" ) == \"PareditEnter()\"\n            \" Remove only if we have added this mapping\n            silent! iunmap <buffer> <CR>\n        endif\n    endif\nendfunction\n\n\" Run the command normally but append a call to repeat#set afterwards\nfunction! RepeatableMap(map_type, keys, command)\n  let escaped_keys = substitute(a:keys, '[\"<]', '\\\\\\0', \"g\")\n  execute a:map_type . ' <silent> <buffer> ' .\n        \\ a:keys . ' ' . a:command .\n        \\ '\\|silent! call repeat#set(\"' . escaped_keys . '\")<CR>'\nendfunction\n\nfunction! RepeatableNMap(keys, command)\n  call RepeatableMap('nmap', a:keys, a:command)\nendfunction\n\nfunction! RepeatableNNoRemap(keys, command)\n  call RepeatableMap('nnoremap', a:keys, a:command)\nendfunction\n\n\" Include all prefix and special characters in 'iskeyword'\nfunction! s:SetKeyword()\n    let old_value = &iskeyword\n    if &ft =~ '.*\\(clojure\\|scheme\\|racket\\).*'\n        setlocal iskeyword+=+,-,*,/,%,<,=,>,:,$,?,!,@-@,94,~,#,\\|,&\n    else\n        setlocal iskeyword+=+,-,*,/,%,<,=,>,:,$,?,!,@-@,94,~,#,\\|,&,.,{,},[,]\n    endif\n    return old_value\nendfunction\n\n\" General Paredit operator function\nfunction! PareditOpfunc( func, type, visualmode )\n    let sel_save = &selection\n    let ve_save = &virtualedit\n    set virtualedit=all\n    let regname = v:register\n    let save_0 = getreg( '0' )\n\n    if a:visualmode  \" Invoked from Visual mode, use '< and '> marks.\n        silent exe \"normal! `<\" . a:type . \"`>\"\n    elseif a:type == 'line'\n        let &selection = \"inclusive\"\n        silent exe \"normal! '[V']\"\n    elseif a:type == 'block'\n        let &selection = \"inclusive\"\n        silent exe \"normal! `[\\<C-V>`]\"\n    else\n        let &selection = \"inclusive\"\n        silent exe \"normal! `[v`]\"\n    endif\n\n    if !g:paredit_mode || (a:visualmode && (a:type == 'block' || a:type == \"\\<C-V>\"))\n        \" Block mode is too difficult to handle at the moment\n        silent exe \"normal! d\"\n        let putreg = getreg( '\"' )\n    else\n        silent exe \"normal! y\"\n        let putreg = getreg( '\"' )\n        if a:func == 'd'\n            \" Register \"0 is corrupted by the above 'y' command\n            call setreg( '0', save_0 ) \n        elseif a:visualmode && &selection == \"inclusive\" && len(getline(\"'>\")) < col(\"'>\") && len(putreg) > 0\n            \" Remove extra space added at the end of line when selection=inclusive, all, or onemore\n            let putreg = putreg[:-2]\n        endif\n\n        \" Find and keep unbalanced matched characters in the region\n        let instring = s:InsideString( line(\"'<\"), col(\"'<\") )\n        if col(\"'>\") > 1 && !s:InsideString( line(\"'<\"), col(\"'<\") - 1 )\n            \" We are at the beginning of the string\n            let instring = 0\n        endif\n        let matched = s:GetMatchedChars( putreg, instring, s:InsideComment( line(\"'<\"), col(\"'<\") ) )\n        let matched = s:Unbalanced( matched )\n        let matched = substitute( matched, '\\s', '', 'g' )\n\n        if matched == ''\n            if a:func == 'c' && (a:type == 'v' || a:type == 'V' || a:type == 'char')\n                silent exe \"normal! gvc\"\n            else\n                silent exe \"normal! gvd\"\n            endif\n        else\n            silent exe \"normal! gvc\" . matched\n            silent exe \"normal! l\"\n            let offs = len(matched)\n            if matched[0] =~ b:any_closing_char\n                let offs = offs + 1\n            endif\n            if a:func == 'd'\n                let offs = offs - 1\n            elseif instring && matched == '\"'\n                \" Keep cursor inside the double quotes\n                let offs = offs + 1\n            endif\n            if offs > 0\n                silent exe \"normal! \" . string(offs) . \"h\"\n            endif\n        endif\n    endif\n\n    let &selection = sel_save\n    let &virtualedit = ve_save\n    if a:func == 'd' && regname == '\"'\n        \" Do not currupt the '\"' register and hence the \"0 register\n        call setreg( '1', putreg ) \n    else\n        call setreg( regname, putreg ) \n    endif\nendfunction\n\n\" Set delete mode also saving repeat count\nfunction! PareditSetDelete( count )\n    let s:repeat = a:count\n    set opfunc=PareditDelete\nendfunction\n\n\" General delete operator handling\nfunction! PareditDelete( type, ... )\n    call PareditOpfunc( 'd', a:type, a:0 )\n    if s:repeat > 1\n        call feedkeys( (s:repeat-1) . \".\" )\n    endif\n    let s:repeat = 0\nendfunction\n\n\" General change operator handling\nfunction! PareditChange( type, ... )\n    let startcol = col('.')\n    let ve_save = &virtualedit\n    set virtualedit=all\n    call PareditOpfunc( 'c', a:type, a:0 )\n    if len(getline('.')) == 0\n        let v:lnum = line('.')\n        let expr = &indentexpr\n        if expr == ''\n            \" No special 'indentexpr', call default lisp indent\n            let expr = 'lispindent(v:lnum)'\n        endif\n        execute \"call setline( v:lnum, repeat( ' ', \" . expr . \" ) )\"\n        normal! $l\n    elseif startcol > 1\n        normal! l\n    endif\n    startinsert\n    let &virtualedit = ve_save\nendfunction\n\n\" Delete v:count number of lines\nfunction! PareditDeleteLines()\n    if v:count > 1\n        silent exe \"normal! V\" . (v:count-1) . \"j\\<Esc>\"\n    else\n        silent exe \"normal! V\\<Esc>\"\n    endif\n    call PareditDelete(visualmode(),1)\nendfunction\n\n\" Change v:count number of lines\nfunction! PareditChangeLines()\n    if v:count > 1\n        silent exe \"normal! V\" . (v:count-1) . \"j\\<Esc>\"\n    else\n        silent exe \"normal! V\\<Esc>\"\n    endif\n    call PareditChange(visualmode(),1)\nendfunction\n\n\" Handle special change command, e.g. cw\n\" Check if we may revert to its original Vim function\n\" This way '.' can be used to repeat the command\nfunction! PareditChangeSpec( cmd, dir )\n    let line = getline( '.' )\n    if a:dir == 0\n        \" Changing backwards\n        let c =  col( '.' ) - 2\n        while c >= 0 && line[c] =~ b:any_matched_char\n            \" Shouldn't delete a matched character, just move left\n            call feedkeys( 'h', 'n')\n            let c = c - 1\n        endwhile\n        if c < 0 && line[0] =~ b:any_matched_char\n            \" Can't help, still on matched character, insert instead\n            call feedkeys( 'i', 'n')\n            return\n        endif\n    else\n        \" Changing forward\n        let c =  col( '.' ) - 1\n        while c < len(line) && line[c] =~ b:any_matched_char\n            \" Shouldn't delete a matched character, just move right\n            call feedkeys( 'l', 'n')\n            let c = c + 1\n        endwhile\n        if c == len(line)\n            \" Can't help, still on matched character, append instead\n            call feedkeys( 'a', 'n')\n            return\n        endif\n    endif\n    \n    \" Safe to use Vim's built-in change function\n    call feedkeys( a:cmd, 'n')\nendfunction\n\n\" Paste text from put register in a balanced way\nfunction! PareditPut( cmd )\n    let regname = v:register\n    let reg_save = getreg( regname )\n    let putreg = reg_save\n\n    \" Find unpaired matched characters by eliminating paired ones\n    let matched = s:GetMatchedChars( putreg, s:InsideString(), s:InsideComment() )\n    let matched = s:Unbalanced( matched )\n\n    if matched !~ '\\S\\+'\n        \" Register contents is balanced, perform default put function\n        silent exe \"normal! \" . (v:count>1 ? v:count : '') . (regname=='\"' ? '' : '\"'.regname) . a:cmd\n        return\n    endif\n\n    \" Replace all unpaired matched characters with a space in order to keep balance\n    let i = 0\n    while i < len( putreg )\n        if matched[i] !~ '\\s'\n            let putreg = strpart( putreg, 0, i ) . ' ' . strpart( putreg, i+1 )\n        endif\n        let i = i + 1\n    endwhile\n\n    \" Store balanced text in put register and call the appropriate put command\n    call setreg( regname, putreg ) \n    silent exe \"normal! \" . (v:count>1 ? v:count : '') . (regname=='\"' ? '' : '\"'.regname) . a:cmd\n    call setreg( regname, reg_save ) \nendfunction\n\n\" Toggle paredit mode\nfunction! PareditToggle()\n    \" Don't disable paredit if it was not initialized yet for the current buffer\n    if exists( 'b:paredit_init') || g:paredit_mode == 0\n        let g:paredit_mode = 1 - g:paredit_mode\n    endif\n    echo g:paredit_mode ? 'Paredit mode on' : 'Paredit mode off'\n    call PareditInitBuffer()\nendfunction\n\n\" Does the current syntax item match the given regular expression?\nfunction! s:SynIDMatch( regexp, line, col, match_eol )\n    let col  = a:col\n    if a:match_eol && col > len( getline( a:line ) )\n        let col = col - 1\n    endif\n    return synIDattr( synID( a:line, col, 0), 'name' ) =~ a:regexp\nendfunction\n\n\" Is the current cursor position inside a comment?\nfunction! s:InsideComment( ... )\n    let l = a:0 ? a:1 : line('.')\n    let c = a:0 ? a:2 : col('.')\n    if &syntax == ''\n        \" No help from syntax engine,\n        \" remove strings and search for ';' up to the cursor position\n        let line = strpart( getline(l), 0, c - 1 )\n        let line = substitute( line, '\\\\\"', '', 'g' )\n        let line = substitute( line, '\"[^\"]*\"', '', 'g' )\n        return match( line, ';' ) >= 0\n    endif\n    if s:SynIDMatch( 'clojureComment', l, c, 1 )\n        if strpart( getline(l), c-1, 2 ) == '#_' || strpart( getline(l), c-2, 2 ) == '#_'\n            \" This is a commented out clojure form of type #_(...), treat it as regular form\n            return 0\n        endif\n    endif\n    return s:SynIDMatch( '[Cc]omment', l, c, 1 )\nendfunction\n\n\" Is the current cursor position inside a string?\nfunction! s:InsideString( ... )\n    let l = a:0 ? a:1 : line('.')\n    let c = a:0 ? a:2 : col('.')\n    if &syntax == ''\n        \" No help from syntax engine,\n        \" count quote characters up to the cursor position\n        let line = strpart( getline(l), 0, c - 1 )\n        let line = substitute( line, '\\\\\"', '', 'g' )\n        let quotes = substitute( line, '[^\"]', '', 'g' )\n        return len(quotes) % 2\n    endif\n    \" VimClojure and vim-clojure-static define special syntax for regexps\n    return s:SynIDMatch( '[Ss]tring\\|clojureRegexp\\|clojurePattern', l, c, 0 )\nendfunction\n\n\" Is this a Slimv or VimClojure REPL buffer?\nfunction! s:IsReplBuffer()\n    if exists( 'g:slimv_repl_name' )\n        return bufname( \"%\" ) == g:slimv_repl_name\n    elseif exists( 'b:vimclojure_repl' )\n        return 1\n    else\n        return 0\n    endif\nendfunction\n\n\" Get Slimv or VimClojure REPL buffer last command prompt position\n\" Return [0, 0] if this is not the REPL buffer\nfunction! s:GetReplPromptPos()\n    if !s:IsReplBuffer()\n        return [0, 0]\n    endif\n    if exists( 'b:vimclojure_repl')\n        let cur_pos = getpos( '.' )\n        call cursor( line( '$' ), 1)\n        call cursor( line( '.' ), col( '$') )\n        call search( b:vimclojure_namespace . '=>', 'bcW' )\n        let target_pos = getpos( '.' )[1:2]\n        call setpos( '.', cur_pos )\n        return target_pos\n    else\n        return [ b:repl_prompt_line, b:repl_prompt_col ]\n    endif\nendfunction\n\n\" Is the current top level form balanced, i.e all opening delimiters\n\" have a matching closing delimiter\nfunction! s:IsBalanced()\n    let l = line( '.' )\n    let c =  col( '.' )\n    let line = getline( '.' )\n    if c > len(line)\n        let c = len(line)\n    endif\n    let matchb = max( [l-g:paredit_matchlines, 1] )\n    let matchf = min( [l+g:paredit_matchlines, line('$')] )\n    let [prompt, cp] = s:GetReplPromptPos()\n    if s:IsReplBuffer() && l >= prompt && matchb < prompt\n        \" Do not go before the last command prompt in the REPL buffer\n        let matchb = prompt\n    endif\n    let p1 = searchpair( '(', '', ')', 'brnmW', s:skip_sc, matchb )\n    let p2 = searchpair( '(', '', ')',  'rnmW', s:skip_sc, matchf )\n    if !(p1 == p2) && !(p1 == p2 - 1 && line[c-1] == '(') && !(p1 == p2 + 1 && line[c-1] == ')')\n        \" Number of opening and closing parens differ\n        return 0\n    endif\n\n    if &ft =~ '.*\\(clojure\\|scheme\\|racket\\).*'\n        let b1 = searchpair( '\\[', '', '\\]', 'brnmW', s:skip_sc, matchb )\n        let b2 = searchpair( '\\[', '', '\\]',  'rnmW', s:skip_sc, matchf )\n        if !(b1 == b2) && !(b1 == b2 - 1 && line[c-1] == '[') && !(b1 == b2 + 1 && line[c-1] == ']')\n            \" Number of opening and closing brackets differ\n            return 0\n        endif\n        let b1 = searchpair( '{', '', '}', 'brnmW', s:skip_sc, matchb )\n        let b2 = searchpair( '{', '', '}',  'rnmW', s:skip_sc, matchf )\n        if !(b1 == b2) && !(b1 == b2 - 1 && line[c-1] == '{') && !(b1 == b2 + 1 && line[c-1] == '}')\n            \" Number of opening and closing curly braces differ\n            return 0\n        endif\n    endif\n    return 1\nendfunction\n\n\" Filter out all non-matched characters from the region\nfunction! s:GetMatchedChars( lines, start_in_string, start_in_comment )\n    let inside_string  = a:start_in_string\n    let inside_comment = a:start_in_comment\n    let matched = repeat( ' ', len( a:lines ) )\n    let i = 0\n    while i < len( a:lines )\n        if inside_string\n            \" We are inside a string, skip parens, wait for closing '\"'\n            \" but skip escaped \\\" characters\n            if a:lines[i] == '\"' && a:lines[i-1] != '\\'\n                let matched = strpart( matched, 0, i ) . a:lines[i] . strpart( matched, i+1 )\n                let inside_string = 0\n            endif\n        elseif inside_comment\n            \" We are inside a comment, skip parens, wait for end of line\n            if a:lines[i] == \"\\n\"\n                let inside_comment = 0\n            endif\n        elseif i > 0 && a:lines[i-1] == '\\' && (i < 2 || a:lines[i-2] != '\\')\n            \" This is an escaped character, ignore it\n        else\n            \" We are outside of strings and comments, now we shall count parens\n            if a:lines[i] == '\"'\n                let matched = strpart( matched, 0, i ) . a:lines[i] . strpart( matched, i+1 )\n                let inside_string = 1\n            endif\n            if a:lines[i] == ';'\n                let inside_comment = 1\n            endif\n            if a:lines[i] =~ b:any_openclose_char\n                let matched = strpart( matched, 0, i ) . a:lines[i] . strpart( matched, i+1 )\n            endif\n        endif\n        let i = i + 1\n    endwhile\n    return matched\nendfunction\n\n\" Find unpaired matched characters by eliminating paired ones\nfunction! s:Unbalanced( matched )\n    let matched = a:matched\n    let tmp = matched\n    while 1\n        let matched = tmp\n        let tmp = substitute( tmp, '(\\(\\s*\\))',   ' \\1 ', 'g')\n        if &ft =~ '.*\\(clojure\\|scheme\\|racket\\).*'\n            let tmp = substitute( tmp, '\\[\\(\\s*\\)\\]', ' \\1 ', 'g')\n            let tmp = substitute( tmp, '{\\(\\s*\\)}',   ' \\1 ', 'g')\n        endif\n        let tmp = substitute( tmp, '\"\\(\\s*\\)\"',   ' \\1 ', 'g')\n        if tmp == matched\n            \" All paired chars eliminated\n            let tmp = substitute( tmp, ')\\(\\s*\\)(',   ' \\1 ', 'g')\n            if &ft =~ '.*\\(clojure\\|scheme\\|racket\\).*'\n                let tmp = substitute( tmp, '\\]\\(\\s*\\)\\[', ' \\1 ', 'g')\n                let tmp = substitute( tmp, '}\\(\\s*\\){',   ' \\1 ', 'g')\n            endif\n            if tmp == matched\n                \" Also no more inverse pairs can be eliminated\n                break\n            endif\n        endif\n    endwhile\n    return matched\nendfunction\n\n\" Find opening matched character\nfunction! PareditFindOpening( open, close, select )\n    let open  = escape( a:open , '[]' )\n    let close = escape( a:close, '[]' )\n    call searchpair( open, '', close, 'bW', s:skip_sc )\n    if a:select\n        call searchpair( open, '', close, 'W', s:skip_sc )\n        let save_ve = &ve\n        set ve=all \n        normal! lvh\n        let &ve = save_ve\n        call searchpair( open, '', close, 'bW', s:skip_sc )\n        if &selection == 'inclusive'\n            \" Trim last character from the selection, it will be included anyway\n            normal! oho\n        endif\n    endif\nendfunction\n\n\" Find closing matched character\nfunction! PareditFindClosing( open, close, select )\n    let open  = escape( a:open , '[]' )\n    let close = escape( a:close, '[]' )\n    if a:select\n        let line = getline( '.' )\n        if line[col('.')-1] != a:open\n            normal! h\n        endif\n        call searchpair( open, '', close, 'W', s:skip_sc )\n        call searchpair( open, '', close, 'bW', s:skip_sc )\n        normal! v\n        call searchpair( open, '', close, 'W', s:skip_sc )\n        if &selection != 'inclusive'\n            normal! l\n        endif\n    else\n        call searchpair( open, '', close, 'W', s:skip_sc )\n    endif\nendfunction\n\n\" Returns the nearest opening character to the cursor\n\" Used for smart jumping in Clojure\nfunction! PareditSmartJumpOpening( select )\n    let [paren_line, paren_col] = searchpairpos('(', '', ')', 'bWn', s:skip_sc)\n    let [bracket_line, bracket_col] = searchpairpos('\\[', '', '\\]', 'bWn', s:skip_sc)\n    let [brace_line, brace_col] = searchpairpos('{', '', '}', 'bWn', s:skip_sc)\n    let paren_score = paren_line * 10000 + paren_col\n    let bracket_score = bracket_line * 10000 + bracket_col\n    let brace_score = brace_line * 10000 + brace_col\n    if (brace_score > paren_score || paren_score == 0) && (brace_score > bracket_score || bracket_score == 0) && brace_score != 0\n\tcall PareditFindOpening('{','}', a:select)\n    elseif (bracket_score > paren_score || paren_score == 0) && bracket_score != 0\n\tcall PareditFindOpening('[',']', a:select)\n    else\n\tcall PareditFindOpening('(',')', a:select)\n    endif\nendfunction\n\n\" Returns the nearest opening character to the cursor\n\" Used for smart jumping in Clojure\nfunction! PareditSmartJumpClosing( select )\n    let [paren_line, paren_col] = searchpairpos('(', '', ')', 'Wn', s:skip_sc)\n    let [bracket_line, bracket_col] = searchpairpos('\\[', '', '\\]', 'Wn', s:skip_sc)\n    let [brace_line, brace_col] = searchpairpos('{', '', '}', 'Wn', s:skip_sc)\n    let paren_score = paren_line * 10000 + paren_col\n    let bracket_score = bracket_line * 10000 + bracket_col\n    let brace_score = brace_line * 10000 + brace_col\n    if (brace_score < paren_score || paren_score == 0) && (brace_score < bracket_score || bracket_score == 0) && brace_score != 0\n\tcall PareditFindClosing('{','}', a:select)\n    elseif (bracket_score < paren_score || paren_score == 0) && bracket_score != 0\n\tcall PareditFindClosing('[',']', a:select)\n    else\n\tcall PareditFindClosing('(',')', a:select)\n    endif\nendfunction\n\n\" Find defun start backwards\nfunction! PareditFindDefunBck()\n    let l = line( '.' )\n    let matchb = max( [l-g:paredit_matchlines, 1] )\n    let oldpos = getpos( '.' ) \n    let newpos = searchpairpos( '(', '', ')', 'brW', s:skip_sc, matchb )\n    if newpos[0] == 0\n        \" Already standing on a defun, find the end of the previous one\n        let newpos = searchpos( ')', 'bW' )\n        while newpos[0] != 0 && (s:InsideComment() || s:InsideString())\n            let newpos = searchpos( ')', 'W' )\n        endwhile\n        if newpos[0] == 0\n            \" No ')' found, don't move cursor\n            call setpos( '.', oldpos )\n        else\n            \" Find opening paren\n            let pairpos = searchpairpos( '(', '', ')', 'brW', s:skip_sc, matchb )\n            if pairpos[0] == 0\n                \" ')' has no matching pair\n                call setpos( '.', oldpos )\n            endif\n        endif\n    endif\nendfunction\n\n\" Find defun start forward\nfunction! PareditFindDefunFwd()\n    let l = line( '.' )\n    let matchf = min( [l+g:paredit_matchlines, line('$')] )\n    let oldpos = getpos( '.' ) \n    call searchpair( '(', '', ')', 'brW', s:skip_sc, matchf )\n    normal! %\n    let newpos = searchpos( '(', 'W' )\n    while newpos[0] != 0 && (s:InsideComment() || s:InsideString())\n        let newpos = searchpos( '(', 'W' )\n    endwhile\n    if newpos[0] == 0\n        \" No '(' found, don't move cursor\n        call setpos( '.', oldpos )\n    endif\nendfunction\n\n\" Insert opening type of a paired character, like ( or [.\nfunction! PareditInsertOpening( open, close )\n    if !g:paredit_mode || s:InsideComment() || s:InsideString() || !s:IsBalanced()\n        return a:open\n    endif\n    let line = getline( '.' )\n    let pos = col( '.' ) - 1\n    if pos > 0 && line[pos-1] == '\\' && (pos < 2 || line[pos-2] != '\\')\n        \" About to enter a \\( or \\[\n        return a:open\n    elseif line[pos] !~ b:any_wsclose_char && pos < len( line )\n        \" Add a space after if needed\n        let retval = a:open . a:close . \" \\<Left>\\<Left>\"\n    else\n        let retval = a:open . a:close . \"\\<Left>\"\n    endif\n    if pos > 0 && line[pos-1] !~ b:any_wsopen_char && line[pos-1] !~ s:any_macro_prefix\n        \" Add a space before if needed\n        let retval = \" \" . retval\n    endif\n    return retval\nendfunction\n\n\" Re-gather electric returns up\nfunction! s:ReGatherUp()\n    if g:paredit_electric_return && getline('.') =~ '^\\s*)'\n        \" Re-gather electric returns in the current line for ')'\n        normal! k\n        while getline( line('.') ) =~ '^\\s*$'\n            \" Delete all empty lines\n            normal! ddk\n        endwhile\n        normal! Jl\n    elseif g:paredit_electric_return && getline('.') =~ '^\\s*\\(\\]\\|}\\)' && &ft =~ '.*\\(clojure\\|scheme\\|racket\\).*' \n        \" Re-gather electric returns in the current line for ']' and '}'\n        normal! k\n        while getline( line('.') ) =~ '^\\s*$'\n            \" Delete all empty lines\n            normal! ddk\n        endwhile\n        call setline( line('.'), substitute( line, '\\s*$', '', 'g' ) )\n        normal! Jxl\n    endif\n    \" Already have the desired character, move right\n    normal! l\nendfunction\n\n\" Insert closing type of a paired character, like ) or ].\nfunction! PareditInsertClosing( open, close )\n    let line = getline( '.' )\n    let pos = col( '.' ) - 1\n    if !g:paredit_mode || s:InsideComment() || s:InsideString() || !s:IsBalanced()\n        call setline( line('.'), line[0 : pos-1] . a:close . line[pos : -1] )\n        normal! l\n        return\n    endif\n    if pos > 0 && line[pos-1] == '\\' && (pos < 2 || line[pos-2] != '\\')\n        \" About to enter a \\) or \\]\n        call setline( line('.'), line[0 : pos-1] . a:close . line[pos : -1] )\n        normal! l\n        return\n    elseif line[pos] == a:close\n        call s:ReGatherUp()\n        return\n    endif\n    let open  = escape( a:open , '[]' )\n    let close = escape( a:close, '[]' )\n    let newpos = searchpairpos( open, '', close, 'nW', s:skip_sc )\n    if g:paredit_electric_return && newpos[0] > line('.')\n        \" Closing paren is in a line below, check if there are electric returns to re-gather\n        while getline('.') =~ '^\\s*$'\n            \" Delete all empty lines above the cursor\n            normal! ddk\n        endwhile\n        let oldpos = getpos( '.' ) \n        normal! j\n        while getline('.') =~ '^\\s*$'\n            \" Delete all empty lines below the cursor\n            normal! dd\n        endwhile\n        let nextline = substitute( getline('.'), '\\s', '', 'g' )\n        call setpos( '.', oldpos )\n        if len(nextline) > 0 && nextline[0] == ')'\n            \" Re-gather electric returns in the line of the closing ')'\n            call setline( line('.'), substitute( getline('.'), '\\s*$', '', 'g' ) )\n            normal! Jl\n            return\n        endif\n        if len(nextline) > 0 && nextline[0] =~ '\\]\\|}' && &ft =~ '.*\\(clojure\\|scheme\\|racket\\).*' \n            \" Re-gather electric returns in the line of the closing ']' or '}'\n            call setline( line('.'), substitute( line, '\\s*$', '', 'g' ) )\n            normal! Jxl\n            return\n        endif\n    elseif g:paredit_electric_return && line =~ '^\\s*)'\n        \" Re-gather electric returns in the current line\n        call s:ReGatherUp()\n        return\n    endif\n    if searchpair( open, '', close, 'W', s:skip_sc ) > 0\n        normal! l\n    endif\n    \"TODO: indent after going to closing character\nendfunction\n\n\" Insert an (opening or closing) double quote\nfunction! PareditInsertQuotes()\n    if !g:paredit_mode || s:InsideComment()\n        return '\"'\n    endif\n    let line = getline( '.' )\n    let pos = col( '.' ) - 1\n    if pos > 0 && line[pos-1] == '\\' && (pos < 2 || line[pos-2] != '\\')\n        \" About to enter a \\\"\n        return '\"'\n    elseif s:InsideString()\n        \"TODO: skip comments in search(...)\n        if line[pos] == '\"'\n            \" Standing on a \", just move to the right\n            return \"\\<Right>\"\n        elseif search('[^\\\\]\"\\|^\"', 'nW') == 0\n            \" We don't have any closing \", insert one\n            return '\"'\n        else\n            \" Move to the closing \"\n            return \"\\<C-O>:call search('\" . '[^\\\\]\"\\|^\"' . \"','eW')\\<CR>\\<Right>\"\n        endif\n    else\n        \" Outside of string: insert a pair of \"\"\n        return '\"\"' . \"\\<Left>\"\n    endif\nendfunction\n\n\" Handle <Enter> keypress, insert electric return if applicable\nfunction! PareditEnter()\n    if pumvisible()\n        \" Pressing <CR> in a pop up selects entry.\n        return \"\\<C-Y>\"\n    else\n        let line = getline( '.' )\n        let pos = col( '.' ) - 1\n        if g:paredit_electric_return && pos > 0 && line[pos] =~ b:any_closing_char && !s:InsideString() && s:IsBalanced()\n            \" Electric Return\n            return \"\\<CR>\\<CR>\\<Up>\"\n        else\n            \" Regular Return\n            return \"\\<CR>\"\n        endif\n    endif\nendfunction\n\n\" Handle <BS> keypress\nfunction! PareditBackspace( repl_mode )\n    let [lp, cp] = s:GetReplPromptPos()\n    if a:repl_mode && line( \".\" ) == lp && col( \".\" ) <= cp\n        \" No BS allowed before the previous EOF mark in the REPL\n        \" i.e. don't delete Lisp prompt\n        return \"\"\n    endif\n\n    if !g:paredit_mode || s:InsideComment()\n        return \"\\<BS>\"\n    endif\n\n    let line = getline( '.' )\n    let pos = col( '.' ) - 1\n\n    if pos == 0\n        \" We are at the beginning of the line\n        return \"\\<BS>\"\n    elseif s:InsideString() && line[pos-1] =~ b:any_openclose_char\n        \" Deleting a paren inside a string\n        return \"\\<BS>\"\n    elseif pos > 1 && line[pos-1] =~ b:any_matched_char && line[pos-2] == '\\' && (pos < 3 || line[pos-3] != '\\')\n        \" Deleting an escaped matched character\n        return \"\\<BS>\\<BS>\"\n    elseif line[pos-1] !~ b:any_matched_char\n        \" Deleting a non-special character\n        return \"\\<BS>\"\n    elseif line[pos-1] != '\"' && !s:IsBalanced()\n        \" Current top-form is unbalanced, can't retain paredit mode\n        return \"\\<BS>\"\n    endif\n\n    if line[pos-1:pos] =~ b:any_matched_pair\n        \" Deleting an empty character-pair\n        return \"\\<Right>\\<BS>\\<BS>\"\n    else\n        \" Character-pair is not empty, don't delete just move inside\n        return \"\\<Left>\"\n    endif\nendfunction\n\n\" Handle <Del> keypress\nfunction! PareditDel()\n    if !g:paredit_mode || s:InsideComment()\n        return \"\\<Del>\"\n    endif\n\n    let line = getline( '.' )\n    let pos = col( '.' ) - 1\n\n    if pos == len(line)\n        \" We are at the end of the line\n        return \"\\<Del>\"\n    elseif line[pos] == '\\' && line[pos+1] =~ b:any_matched_char && (pos < 1 || line[pos-1] != '\\')\n        \" Deleting an escaped matched character\n        return \"\\<Del>\\<Del>\"\n    elseif line[pos] !~ b:any_matched_char\n        \" Erasing a non-special character\n        return \"\\<Del>\"\n    elseif line[pos] != '\"' && !s:IsBalanced()\n        \" Current top-form is unbalanced, can't retain paredit mode\n        return \"\\<Del>\"\n    elseif pos == 0\n        return \"\\<Right>\"\n    endif\n\n    if line[pos-1:pos] =~ b:any_matched_pair\n        \" Erasing an empty character-pair\n        return \"\\<Left>\\<Del>\\<Del>\"\n    else\n        \" Character-pair is not empty, don't erase just move inside\n        return \"\\<Right>\"\n    endif\nendfunction\n\n\" Initialize yank position list\nfunction! s:InitYankPos()\n    call setreg( &clipboard == 'unnamed' ? '*' : '\"', '' ) \n    let s:yank_pos = []\nendfunction\n\n\" Add position to the yank list\nfunction! s:AddYankPos( pos )\n    let s:yank_pos = [a:pos] + s:yank_pos\nendfunction\n\n\" Remove the head of yank position list and return it\nfunction! s:RemoveYankPos()\n    if len(s:yank_pos) > 0\n        let pos = s:yank_pos[0]\n        let s:yank_pos = s:yank_pos[1:]\n        return pos\n    else\n        return 0\n    endif\nendfunction\n\n\" Forward erasing a character in normal mode, do not check if current form balanced\nfunction! s:EraseFwd( count, startcol )\n    let line = getline( '.' )\n    let pos = col( '.' ) - 1\n    let reg = getreg( &clipboard == 'unnamed' ? '*' : '\"' )\n    let ve_save = &virtualedit\n    set virtualedit=all\n    let c = a:count\n    while c > 0\n        if line[pos] == '\\' && line[pos+1] =~ b:any_matched_char && (pos < 1 || line[pos-1] != '\\')\n            \" Erasing an escaped matched character\n            let reg = reg . line[pos : pos+1]\n            let line = strpart( line, 0, pos ) . strpart( line, pos+2 )\n        elseif s:InsideComment() && line[pos] == ';' && a:startcol >= 0\n            \" Erasing the whole comment, only when erasing a block of characters\n            let reg = reg . strpart( line, pos )\n            let line = strpart( line, 0, pos )\n        elseif s:InsideComment() || ( s:InsideString() && line[pos] != '\"' )\n            \" Erasing any character inside string or comment\n            let reg = reg . line[pos]\n            let line = strpart( line, 0, pos ) . strpart( line, pos+1 )\n        elseif pos > 0 && line[pos-1:pos] =~ b:any_matched_pair\n            if pos > a:startcol\n                \" Erasing an empty character-pair\n                let p2 = s:RemoveYankPos()\n                let reg = strpart( reg, 0, p2 ) . line[pos-1] . strpart( reg, p2 )\n                let reg = reg . line[pos]\n                let line = strpart( line, 0, pos-1 ) . strpart( line, pos+1 )\n                let pos = pos - 1\n                normal! h\n            else\n                \" Can't erase character-pair: it would move the cursor before startcol\n                let pos = pos + 1\n                normal! l\n            endif\n        elseif line[pos] =~ b:any_matched_char\n            \" Character-pair is not empty, don't erase just move inside\n            call s:AddYankPos( len(reg) )\n            let pos = pos + 1\n            normal! l\n        elseif pos < len(line) && pos >= a:startcol\n            \" Erasing a non-special character\n            let reg = reg . line[pos]\n            let line = strpart( line, 0, pos ) . strpart( line, pos+1 )\n        endif\n        let c = c - 1\n    endwhile\n    let &virtualedit = ve_save\n    call setline( '.', line )\n    call setreg( &clipboard == 'unnamed' ? '*' : '\"', reg ) \nendfunction\n\n\" Backward erasing a character in normal mode, do not check if current form balanced\nfunction! s:EraseBck( count )\n    let line = getline( '.' )\n    let pos = col( '.' ) - 1\n    let reg = getreg( &clipboard == 'unnamed' ? '*' : '\"' )\n    let c = a:count\n    while c > 0 && pos > 0\n        if pos > 1 && line[pos-2] == '\\' && line[pos-1] =~ b:any_matched_char && (pos < 3 || line[pos-3] != '\\')\n            \" Erasing an escaped matched character\n            let reg = reg . line[pos-2 : pos-1]\n            let line = strpart( line, 0, pos-2 ) . strpart( line, pos )\n            normal! h\n            let pos = pos - 1\n        elseif s:InsideComment() || ( s:InsideString() && line[pos-1] != '\"' )\n            let reg = reg . line[pos-1]\n            let line = strpart( line, 0, pos-1 ) . strpart( line, pos )\n        elseif line[pos-1:pos] =~ b:any_matched_pair\n            \" Erasing an empty character-pair\n            let p2 = s:RemoveYankPos()\n            let reg = strpart( reg, 0, p2 ) . line[pos-1] . strpart( reg, p2 )\n            let reg = reg . line[pos]\n            let line = strpart( line, 0, pos-1 ) . strpart( line, pos+1 )\n        elseif line[pos-1] =~ b:any_matched_char\n            \" Character-pair is not empty, don't erase\n            call s:AddYankPos( len(reg) )\n        else\n            \" Erasing a non-special character\n            let reg = reg . line[pos-1]\n            let line = strpart( line, 0, pos-1 ) . strpart( line, pos )\n        endif\n        normal! h\n        let pos = pos - 1\n        let c = c - 1\n    endwhile\n    call setline( '.', line )\n    call setreg( &clipboard == 'unnamed' ? '*' : '\"', reg ) \nendfunction\n\n\" Forward erasing a character in normal mode\nfunction! PareditEraseFwd()\n    if !g:paredit_mode || !s:IsBalanced()\n        if v:count > 0\n            silent execute 'normal! ' . v:count . 'x'\n        else\n            normal! x\n        endif\n        return\n    endif\n\n    call s:InitYankPos()\n    call s:EraseFwd( v:count1, -1 )\nendfunction\n\n\" Backward erasing a character in normal mode\nfunction! PareditEraseBck()\n    if !g:paredit_mode || !s:IsBalanced()\n        if v:count > 0\n            silent execute 'normal! ' . v:count . 'X'\n        else\n            normal! X\n        endif\n        return\n    endif\n\n    call s:InitYankPos()\n    call s:EraseBck( v:count1 )\nendfunction\n\n\" Find beginning of previous element (atom or sub-expression) in a form\n\" skip_whitespc: skip whitespaces before the previous element\nfunction! s:PrevElement( skip_whitespc )\n    let [l0, c0] = [line( '.' ), col( '.' )]\n    let symbol_pos = [0, 0]\n    let symbol_end = [0, 0]\n\n    \" Move to the beginning of the prefix if any\n    let line = getline( '.' )\n    let c = col('.') - 1\n    if c > 0 && line[c-1] =~ s:any_macro_prefix\n        normal! h\n    endif\n\n    let moved = 0\n    while 1\n        \" Go to previous character\n        if !moved\n            let [l1, c1] = [line( '.' ), col( '.' )]\n            let save_ww = &whichwrap\n            set whichwrap=\n            normal! h\n            let &whichwrap = save_ww\n        endif\n        let moved = 0\n        let [l, c] = [line( '.' ), col( '.' )]\n\n        if [l, c] == [l1, c1]\n            \" Beginning of line reached\n            if symbol_pos != [0, 0]\n                let symbol_end = [l, c]\n                if !a:skip_whitespc && !s:InsideString()\n                    \" Newline before previous symbol\n                    call setpos( '.', [0, l0, c0, 0] )\n                    return [l, c]\n                endif\n            endif\n            normal! k$\n            let [l, c] = [line( '.' ), col( '.' )]\n            if [l, c] == [l1, c1]\n                \" Beginning of file reached: stop\n                call setpos( '.', [0, l0, c0, 0] )\n                return [0, 0]\n            endif\n            let moved = 1\n        elseif s:InsideComment()\n            \" Skip comments\n        else\n            let line = getline( '.' )\n            if s:InsideString()\n                let symbol_pos = [l, c]\n            elseif symbol_pos == [0, 0]\n                if line[c-1] =~ b:any_closing_char\n                    \" Skip to the beginning of this sub-expression\n                    let symbol_pos = [l, c]\n                    normal! %\n                    let line2 = getline( '.' )\n                    let c2 = col('.') - 1\n                    if c2 > 0 && line2[c2-1] =~ s:any_macro_prefix\n                        normal! h\n                    endif\n                elseif line[c-1] =~ b:any_opening_char\n                    \" Opening delimiter found: stop\n                    call setpos( '.', [0, l0, c0, 0] )\n                    return [0, 0]\n                elseif line[c-1] =~ '\\S'\n                    \" Previous symbol starting\n                    let symbol_pos = [l, c]\n                endif\n            else\n                if line[c-1] =~ b:any_opening_char || (a:skip_whitespc && line[c-1] =~ '\\S' && symbol_end != [0, 0])\n                    \" Previous symbol beginning reached, opening delimiter or second previous symbol starting\n                    call setpos( '.', [0, l0, c0, 0] )\n                    return [l, c+1]\n                elseif line[c-1] =~ '\\s' || symbol_pos[0] != l\n                    \" Whitespace before previous symbol\n                    let symbol_end = [l, c]\n                    if !a:skip_whitespc\n                        call setpos( '.', [0, l0, c0, 0] )\n                        return [l, c+1]\n                    endif\n                endif\n            endif\n        endif\n    endwhile\nendfunction\n\n\" Find end of next element (atom or sub-expression) in a form\n\" skip_whitespc: skip whitespaces after the next element\nfunction! s:NextElement( skip_whitespc )\n    let [l0, c0] = [line( '.' ), col( '.' )]\n    let symbol_pos = [0, 0]\n    let symbol_end = [0, 0]\n\n    while 1\n        \" Go to next character\n        let [l1, c1] = [line( '.' ), col( '.' )]\n        let save_ww = &whichwrap\n        set whichwrap=\n        normal! l\n        let &whichwrap = save_ww\n        let [l, c] = [line( '.' ), col( '.' )]\n\n        \" Skip comments\n        while [l, c] == [l1, c1] || s:InsideComment()\n            if symbol_pos != [0, 0]\n                let symbol_end = [l, c]\n                if !a:skip_whitespc && !s:InsideString()\n                    \" Next symbol ended with comment\n                    call setpos( '.', [0, l0, c0, 0] )\n                    return [l, c + ([l, c] == [l1, c1])]\n                endif\n            endif\n            normal! 0j0\n            let [l, c] = [line( '.' ), col( '.' )]\n            if [l, c] == [l1, c1]\n                \" End of file reached: stop\n                call setpos( '.', [0, l0, c0, 0] )\n                return [0, 0]\n            endif\n        endwhile\n\n        let line = getline( '.' )\n        if s:InsideString()\n            let symbol_pos = [l, c]\n        elseif symbol_pos == [0, 0]\n            if line[c-1] =~ s:any_macro_prefix && line[c] =~ b:any_opening_char\n                \" Skip to the end of this prefixed sub-expression\n                let symbol_pos = [l, c]\n                normal! l%\n            elseif line[c-1] =~ b:any_opening_char\n                \" Skip to the end of this sub-expression\n                let symbol_pos = [l, c]\n                normal! %\n            elseif line[c-1] =~ b:any_closing_char\n                \" Closing delimiter found: stop\n                call setpos( '.', [0, l0, c0, 0] )\n                return [0, 0]\n            elseif line[c-1] =~ '\\S'\n                \" Next symbol starting\n                let symbol_pos = [l, c]\n            endif\n        else\n            if line[c-1] =~ b:any_closing_char || (a:skip_whitespc && line[c-1] =~ '\\S' && symbol_end != [0, 0])\n                \" Next symbol ended, closing delimiter or second next symbol starting\n                call setpos( '.', [0, l0, c0, 0] )\n                return [l, c]\n            elseif line[c-1] =~ '\\s' || symbol_pos[0] != l\n                \" Next symbol ending with whitespace\n                let symbol_end = [l, c]\n                if !a:skip_whitespc\n                    call setpos( '.', [0, l0, c0, 0] )\n                    return [l, c]\n                endif\n            endif\n        endif\n    endwhile\nendfunction\n\n\" Move character from [l0, c0] to [l1, c1]\n\" Set position to [l1, c1]\nfunction! s:MoveChar( l0, c0, l1, c1 )\n    let line = getline( a:l0 )\n    let c = line[a:c0-1]\n    if a:l1 == a:l0\n        \" Move character inside line\n        if a:c1 > a:c0\n            let line = strpart( line, 0, a:c0-1 ) . strpart( line, a:c0, a:c1-a:c0-1 ) . c . strpart( line, a:c1-1 )\n            call setline( a:l0, line )\n            call setpos( '.', [0, a:l1, a:c1-1, 0] ) \n        else\n            let line = strpart( line, 0, a:c1-1 ) . c . strpart( line, a:c1-1, a:c0-a:c1 ) . strpart( line, a:c0 )\n            call setline( a:l0, line )\n            call setpos( '.', [0, a:l1, a:c1, 0] ) \n        endif\n    else\n        \" Move character to another line\n        let line = strpart( line, 0, a:c0-1 ) . strpart( line, a:c0 )\n        call setline( a:l0, line )\n        let line1 = getline( a:l1 )\n        if a:c1 > 1\n            let line1 = strpart( line1, 0, a:c1-1 ) . c . strpart( line1, a:c1-1 )\n            call setline( a:l1, line1 )\n            call setpos( '.', [0, a:l1, a:c1, 0] )\n        else\n            let line1 = c . line1\n            call setline( a:l1, line1 )\n            call setpos( '.', [0, a:l1, 1, 0] ) \n        endif\n    endif\nendfunction\n\n\" Find a paren nearby to move\nfunction! s:FindParenNearby()\n    let line = getline( '.' )\n    let c0 =  col( '.' )\n    if line[c0-1] !~ b:any_openclose_char\n        \" OK, we are not standing on a paren to move, but check if there is one nearby\n        if (c0 < 2 || line[c0-2] !~ b:any_openclose_char) && line[c0] =~ b:any_openclose_char\n            normal! l\n        elseif c0 > 1 && line[c0-2] =~ b:any_openclose_char && line[c0] !~ b:any_openclose_char\n            normal! h\n        endif\n    endif\n\n    \" Skip macro prefix character    \n    let c0 =  col( '.' )\n    if line[c0-1] =~ s:any_macro_prefix && line[c0] =~ b:any_opening_char\n        normal! l\n    endif\n\n    \" If still not standing on a paren then find the next closing one\n    if line[c0-1] !~ b:any_openclose_char\n        call search(b:any_closing_char, 'W')\n    endif\nendfunction\n\n\" Move delimiter one atom or s-expression to the left\nfunction! PareditMoveLeft()\n    call s:FindParenNearby()\n\n    let line = getline( '.' )\n    let l0 = line( '.' )\n    let c0 =  col( '.' )\n\n    if line[c0-1] =~ b:any_opening_char\n        let closing = 0\n    elseif line[c0-1] =~ b:any_closing_char\n        let closing = 1\n    else\n        \" Can move only delimiters\n        return\n    endif\n\n    let [lp, cp] = s:GetReplPromptPos()\n    let [l1, c1] = s:PrevElement( closing )\n    if [l1, c1] == [0, 0]\n        \" No previous element found\n        return\n    elseif [lp, cp] != [0, 0] && l0 >= lp && (l1 < lp || (l1 == lp && c1 < cp))\n        \" Do not go before the last command prompt in the REPL buffer\n        return\n    endif\n    if !closing && c0 > 0 && line[c0-2] =~ s:any_macro_prefix\n        call s:MoveChar( l0, c0-1, l1, c1 )\n        call s:MoveChar( l0, c0 - (l0 != l1), l1, c1+1 )\n        let len = 2\n    else\n        call s:MoveChar( l0, c0, l1, c1 )\n        let len = 1\n    endif\n    let line = getline( '.' )\n    let c =  col( '.' ) - 1\n    if closing && c+1 < len(line) && line[c+1] !~ b:any_wsclose_char\n        \" Insert a space after if needed\n        execute \"normal! a \"\n        normal! h\n    endif\n    let line = getline( '.' )\n    let c =  col( '.' ) - 1\n    if !closing && c > 0 && line[c-len] !~ b:any_wsopen_char\n        \" Insert a space before if needed\n        if len > 1\n            execute \"normal! hi \"\n            normal! ll\n        else\n            execute \"normal! i \"\n            normal! l\n        endif\n    endif\nendfunction\n\n\" Move delimiter one atom or s-expression to the right\nfunction! PareditMoveRight()\n    call s:FindParenNearby()\n\n    \"TODO: move ')' in '() xxx' leaves space\n    let line = getline( '.' )\n    let l0 = line( '.' )\n    let c0 =  col( '.' )\n\n    if line[c0-1] =~ b:any_opening_char\n        let opening = 1\n    elseif line[c0-1] =~ b:any_closing_char\n        let opening = 0\n    else\n        \" Can move only delimiters\n        return\n    endif\n\n    let [lp, cp] = s:GetReplPromptPos()\n    let [l1, c1] = s:NextElement( opening )\n    if [l1, c1] == [0, 0]\n        \" No next element found\n        return\n    elseif [lp, cp] != [0, 0] && l0 < lp && l1 >= lp\n        \" Do not go after the last command prompt in the REPL buffer\n        return\n    endif\n    if opening && c0 > 1 && line[c0-2] =~ s:any_macro_prefix\n        call s:MoveChar( l0, c0-1, l1, c1 )\n        call s:MoveChar( l0, c0-1, l1, c1 + (l0 != l1) )\n        let len = 2\n    else\n        call s:MoveChar( l0, c0, l1, c1 )\n        let len = 1\n    endif\n    let line = getline( '.' )\n    let c =  col( '.' ) - 1\n    if opening && c > 0 && line[c-len] !~ b:any_wsopen_char\n        \" Insert a space before if needed\n        if len > 1\n            execute \"normal! hi \"\n            normal! ll\n        else\n            execute \"normal! i \"\n            normal! l\n        endif\n    endif\n    let line = getline( '.' )\n    let c =  col( '.' ) - 1\n    if !opening && c+1 < len(line) && line[c+1] !~ b:any_wsclose_char\n        \" Insert a space after if needed\n        execute \"normal! a \"\n        normal! h\n    endif\nendfunction\n\n\" Find closing of the innermost structure: (...) or [...] or {...}\n\" Return a list where first element is the closing character,\n\" second and third is its position (line, column)\nfunction! s:FindClosing()\n    let l = line( '.' )\n    let c = col( '.' )\n    let paren = ''\n    let l2 = 0\n    let c2 = 0\n\n    call PareditFindClosing( '(', ')', 0 )\n    let lp = line( '.' )\n    let cp = col( '.' )\n    if [lp, cp] != [l, c]\n        \" Do we have a closing ')'?\n        let paren = ')'\n        let l2 = lp\n        let c2 = cp\n    endif\n    call setpos( '.', [0, l, c, 0] )\n\n    if &ft =~ '.*\\(clojure\\|scheme\\|racket\\).*'\n        call PareditFindClosing( '[', ']', 0 )\n        let lp = line( '.' )\n        let cp = col( '.' )\n        if [lp, cp] != [l, c] && (lp < l2 || (lp == l2 && cp < c2))\n            \" Do we have a ']' closer?\n            let paren = ']'\n            let l2 = lp\n            let c2 = cp\n        endif\n        call setpos( '.', [0, l, c, 0] )\n\n        call PareditFindClosing( '{', '}', 0 )\n        let lp = line( '.' )\n        let cp = col( '.' )\n        if [lp, cp] != [l, c] && (lp < l2 || (lp == l2 && cp < c2))\n            \" Do we have a '}' even closer?\n            let paren = '}'\n            let l2 = lp\n            let c2 = cp\n        endif\n        call setpos( '.', [0, l, c, 0] )\n    endif\n\n    return [paren, l2, c2]\nendfunction\n\n\" Split list or string at the cursor position\n\" Current symbol will be split into the second part\nfunction! PareditSplit()\n    if !g:paredit_mode || s:InsideComment()\n        return\n    endif\n\n    if s:InsideString()\n        normal! i\" \"\n    else\n        \" Go back to the beginning of the current symbol\n        let c = col('.') - 1\n        if getline('.')[c] =~ '\\S'\n            if c == 0 || (c > 0 && getline('.')[c-1] =~ b:any_wsopen_char)\n                \" OK, we are standing on the first character of the symbol\n            else\n                normal! b\n            endif\n        endif\n\n        \" First find which kind of paren is the innermost\n        let [p, l, c] = s:FindClosing()\n        if p !~ b:any_closing_char\n            \" Not found any kind of parens\n            return\n        endif\n\n        \" Delete all whitespaces around cursor position\n        while getline('.')[col('.')-1] =~ '\\s'\n            normal! x\n        endwhile\n        while col('.') > 1 && getline('.')[col('.')-2] =~ '\\s'\n            normal! X\n        endwhile\n\n        if p == ')'\n            normal! i) (\n        elseif p == '}'\n            normal! i} {\n        else\n            normal! i] [\n        endif\n    endif\nendfunction\n\n\" Join two neighboring lists or strings\nfunction! PareditJoin()\n    if !g:paredit_mode || s:InsideComment() || s:InsideString()\n        return\n    endif\n\n    \"TODO: skip parens in comments\n    let [l0, c0] = searchpos(b:any_matched_char, 'nbW')\n    let [l1, c1] = searchpos(b:any_matched_char, 'ncW')\n    if [l0, c0] == [0, 0] || [l1, c1] == [0, 0]\n        return\n    endif\n    let line0 = getline( l0 )\n    let line1 = getline( l1 )\n    let p0 = line0[c0-1]\n    let p1 = line1[c1-1]\n    if (p0 == ')' && p1 == '(') || (p0 == ']' && p1 == '[') || (p0 == '}' && p1 == '{') || (p0 == '\"' && p1 == '\"')\n        if l0 == l1\n            \" First list ends on the same line where the second list begins\n            let line0 = strpart( line0, 0, c0-1 ) . ' ' . strpart( line0, c1 )\n            call setline( l0, line0 )\n        else\n            \" First list ends on a line different from where the second list begins\n            let line0 = strpart( line0, 0, c0-1 )\n            let line1 = strpart( line1, 0, c1-1 ) . strpart( line1, c1 )\n            call setline( l0, line0 )\n            call setline( l1, line1 )\n        endif\n    endif\nendfunction\n\n\" Wrap current visual block in parens of the given kind\nfunction! s:WrapSelection( open, close )\n    let l0 = line( \"'<\" )\n    let l1 = line( \"'>\" )\n    let c0 = col( \"'<\" )\n    let c1 = col( \"'>\" )\n    if &selection == 'inclusive'\n        let c1 = c1 + strlen(matchstr(getline(l1)[c1-1 :], '.'))\n    endif\n    if [l0, c0] == [0, 0] || [l1, c1] == [0, 0]\n        \" No selection\n        return\n    endif\n    if l0 > l1 || (l0 == l1 && c0 > c1)\n        \" Swap both ends of selection to make [l0, c0] < [l1, c1]\n        let [ltmp, ctmp] = [l0, c0]\n        let [l0, c0] = [l1, c1]\n        let [l1, c1] = [ltmp, ctmp]\n    endif\n    let save_ve = &ve\n    set ve=all \n    call setpos( '.', [0, l0, c0, 0] )\n    execute \"normal! i\" . a:open\n    call setpos( '.', [0, l1, c1 + (l0 == l1), 0] )\n    execute \"normal! i\" . a:close\n    let &ve = save_ve\nendfunction\n\n\" Wrap current visual block in parens of the given kind\n\" Keep visual mode\nfunction! PareditWrapSelection( open, close )\n    call s:WrapSelection( a:open, a:close )\nendfunction\n\n\" Wrap current symbol in parens of the given kind\n\" If standing on a paren then wrap the whole s-expression\n\" Stand on the opening paren (if not wrapping in \"\")\nfunction! PareditWrap( open, close )\n    let isk_save = s:SetKeyword()\n    let sel_save = &selection\n    let line = line('.')\n    let column = col('.')\n    let line_content = getline(line)\n    let current_char = line_content[column - 1]\n\n    if a:open != '\"' && current_char =~ b:any_openclose_char\n        execute \"normal! \" . \"v%\\<Esc>\"\n    else\n        let inside_comment = s:InsideComment(line, column)\n\n        if current_char == '\"' && !inside_comment\n            let escaped_quote = line_content[column - 2] == \"\\\\\"\n            if escaped_quote\n                execute \"normal! \" . \"vh\\<Esc>\"\n            else\n                let is_starting_quote = 1\n                if column == 1 && line > 1\n                    let endOfPreviousLine = col([line - 1, '$'])\n                    if s:InsideString(line - 1, endOfPreviousLine - 1)\n                        let previous_line_content = getline(line - 1)\n                        if previous_line_content[endOfPreviousLine - 2] != '\"'\n                            let is_starting_quote = 0\n                        elseif previous_line_content[endOfPreviousLine - 3] == \"\\\\\"\n                            let is_starting_quote = 0\n                        endif\n                    endif\n                elseif s:InsideString(line, column - 1)\n                    if line_content[column - 2] != '\"'\n                        let is_starting_quote = 0\n                    elseif line_content[column - 3] == \"\\\\\"\n                        let is_starting_quote = 0\n                    endif\n                endif\n                let &selection=\"inclusive\"\n                normal! v\n                if is_starting_quote\n                    call search( '\\\\\\@<!\"', 'W', s:skip_sc )\n                else\n                    call search( '\\\\\\@<!\"', 'bW', s:skip_sc )\n                endif\n                execute \"normal! \" . \"\\<Esc>\"\n            endif\n        else\n            execute \"normal! \" . \"viw\\<Esc>\"\n        endif\n    endif\n    call s:WrapSelection( a:open, a:close )\n    if a:open != '\"'\n        normal! %\n    else\n      call cursor(line, column + 1)\n    endif\n    let &selection = sel_save\n    let &iskeyword = isk_save\nendfunction\n\n\" Splice current list into the containing list\nfunction! PareditSplice()\n    if !g:paredit_mode\n        return\n    endif\n\n    \" First find which kind of paren is the innermost\n    let [p, l, c] = s:FindClosing()\n    if p !~ b:any_closing_char\n        \" Not found any kind of parens\n        return\n    endif\n\n    call setpos( '.', [0, l, c, 0] )\n    normal! %\n    let l = line( '.' )\n    let c = col( '.' )\n    normal! %x\n    call setpos( '.', [0, l, c, 0] )\n    normal! x\n    if c > 1 && getline('.')[c-2] =~ s:any_macro_prefix\n        normal! X\n    endif\nendfunction\n\n\" Raise: replace containing form with the current symbol or sub-form\nfunction! PareditRaise()\n    let isk_save = s:SetKeyword()\n    if getline('.')[col('.')-1] =~ b:any_openclose_char\n        \" Raise sub-form and re-indent\n        normal! y%d%dab\n        normal! \"0P=%\n    else\n        \" Raise symbol\n        normal! yiwdab\n        normal! \"0Pb\n    endif\n    let &iskeyword = isk_save\nendfunction\n\n\" =====================================================================\n\"  Autocommands\n\" =====================================================================\n\nif !exists(\"g:paredit_disable_lisp\")\n    au FileType lisp      call PareditInitBuffer()\nendif\n\nif !exists(\"g:paredit_disable_clojure\")\n    au FileType *clojure* call PareditInitBuffer()\nendif\n\nif !exists(\"g:paredit_disable_scheme\")\n    au FileType scheme    call PareditInitBuffer()\n    au FileType racket    call PareditInitBuffer()\nendif\n\n"
  },
  {
    "path": ".vim/bundle/rainbow_parentheses.vim/autoload/rainbow_parentheses.vim",
    "content": "\"==============================================================================\n\"  Description: Rainbow colors for parentheses, based on rainbow_parenthsis.vim\n\"               by Martin Krischik and others.\n\"               2011-10-12: Use less code.  Leave room for deeper levels.\n\"==============================================================================\n\nlet s:pairs = [\n\t\\ ['brown',       'RoyalBlue3'],\n\t\\ ['Darkblue',    'SeaGreen3'],\n\t\\ ['darkgray',    'DarkOrchid3'],\n\t\\ ['darkgreen',   'firebrick3'],\n\t\\ ['darkcyan',    'RoyalBlue3'],\n\t\\ ['darkred',     'SeaGreen3'],\n\t\\ ['darkmagenta', 'DarkOrchid3'],\n\t\\ ['brown',       'firebrick3'],\n\t\\ ['gray',        'RoyalBlue3'],\n\t\\ ['black',       'SeaGreen3'],\n\t\\ ['darkmagenta', 'DarkOrchid3'],\n\t\\ ['Darkblue',    'firebrick3'],\n\t\\ ['darkgreen',   'RoyalBlue3'],\n\t\\ ['darkcyan',    'SeaGreen3'],\n\t\\ ['darkred',     'DarkOrchid3'],\n\t\\ ['red',         'firebrick3'],\n\t\\ ]\nlet s:pairs = exists('g:rbpt_colorpairs') ? g:rbpt_colorpairs : s:pairs\nlet s:max = exists('g:rbpt_max') ? g:rbpt_max : max([len(s:pairs), 16])\nlet s:loadtgl = exists('g:rbpt_loadcmd_toggle') ? g:rbpt_loadcmd_toggle : 0\nlet s:types = [['(',')'],['\\[','\\]'],['{','}'],['<','>']]\n\nfunc! s:extend()\n\tif s:max > len(s:pairs)\n\t\tcal extend(s:pairs, s:pairs)\n\t\tcal s:extend()\n\telseif s:max < len(s:pairs)\n\t\tcal remove(s:pairs, s:max, -1)\n\tendif\nendfunc\ncal s:extend()\n\nfunc! rainbow_parentheses#activate()\n\tlet [id, s:active] = [1, 1]\n\tfor [ctermfg, guifg] in s:pairs\n\t\texe 'hi default level'.id.'c ctermfg='.ctermfg.' guifg='.guifg\n\t\tlet id += 1\n\tendfor\nendfunc\n\nfunc! rainbow_parentheses#clear()\n\tfor each in range(1, s:max)\n\t\texe 'hi clear level'.each.'c'\n\tendfor\n\tlet s:active = 0\nendfunc\n\nfunc! rainbow_parentheses#toggle()\n\tif !exists('s:active')\n\t\tcal rainbow_parentheses#load(0)\n\tendif\n\tlet afunc = exists('s:active') && s:active ? 'clear' : 'activate'\n\tcal call('rainbow_parentheses#'.afunc, [])\nendfunc\n\nfunc! rainbow_parentheses#toggleall()\n\tif !exists('s:active')\n\t\tcal rainbow_parentheses#load(0)\n\t\tcal rainbow_parentheses#load(1)\n\t\tcal rainbow_parentheses#load(2)\n\tendif\n\tif exists('s:active') && s:active\n\t\tcal rainbow_parentheses#clear()\n\telse\n\t\tcal rainbow_parentheses#activate()\n\tendif\nendfunc\n\nfunc! s:cluster()\n\tlet levels = join(map(range(1, s:max), '\"level\".v:val'), ',')\n\texe 'sy cluster rainbow_parentheses contains=@TOP'.levels.',NoInParens'\nendfunc\ncal s:cluster()\n\nfunc! rainbow_parentheses#load(...)\n\tlet [level, grp, type] = ['', '', s:types[a:1]]\n\tlet alllvls = map(range(1, s:max), '\"level\".v:val')\n\tif !exists('b:loaded')\n\t\tlet b:loaded = [0,0,0,0]\n\tendif\n\tlet b:loaded[a:1] = s:loadtgl && b:loaded[a:1] ? 0 : 1\n\tfor each in range(1, s:max)\n\t\tlet region = 'level'. each .(b:loaded[a:1] ? '' : 'none')\n\t\tlet grp = b:loaded[a:1] ? 'level'.each.'c' : 'Normal'\n\t\tlet cmd = 'sy region %s matchgroup=%s start=/%s/ end=/%s/ contains=TOP,%s,NoInParens'\n\t\texe printf(cmd, region, grp, type[0], type[1], join(alllvls, ','))\n\t\tcal remove(alllvls, 0)\n\tendfor\nendfunc\n\n\" vim:ts=2:sw=2:sts=2\n"
  },
  {
    "path": ".vim/bundle/rainbow_parentheses.vim/plugin/rainbow_parentheses.vim",
    "content": "\"==============================================================================\n\"  Description: Rainbow colors for parentheses, based on rainbow_parenthsis.vim\n\"               by Martin Krischik and others.\n\"==============================================================================\n\"  GetLatestVimScripts: 3772 1 :AutoInstall: rainbow_parentheses.zip\n\ncom! RainbowParenthesesToggle       cal rainbow_parentheses#toggle()\ncom! RainbowParenthesesToggleAll    cal rainbow_parentheses#toggleall()\ncom! RainbowParenthesesActivate     cal rainbow_parentheses#activate()\ncom! RainbowParenthesesLoadRound    cal rainbow_parentheses#load(0)\ncom! RainbowParenthesesLoadSquare   cal rainbow_parentheses#load(1)\ncom! RainbowParenthesesLoadBraces   cal rainbow_parentheses#load(2)\ncom! RainbowParenthesesLoadChevrons cal rainbow_parentheses#load(3)\n"
  },
  {
    "path": ".vim/bundle/rainbow_parentheses.vim/readme.md",
    "content": "# Better Rainbow Parentheses\n\n### Options:\n\n```vim\nlet g:rbpt_colorpairs = [\n    \\ ['brown',       'RoyalBlue3'],\n    \\ ['Darkblue',    'SeaGreen3'],\n    \\ ['darkgray',    'DarkOrchid3'],\n    \\ ['darkgreen',   'firebrick3'],\n    \\ ['darkcyan',    'RoyalBlue3'],\n    \\ ['darkred',     'SeaGreen3'],\n    \\ ['darkmagenta', 'DarkOrchid3'],\n    \\ ['brown',       'firebrick3'],\n    \\ ['gray',        'RoyalBlue3'],\n    \\ ['black',       'SeaGreen3'],\n    \\ ['darkmagenta', 'DarkOrchid3'],\n    \\ ['Darkblue',    'firebrick3'],\n    \\ ['darkgreen',   'RoyalBlue3'],\n    \\ ['darkcyan',    'SeaGreen3'],\n    \\ ['darkred',     'DarkOrchid3'],\n    \\ ['red',         'firebrick3'],\n    \\ ]\n```\n\n```vim\nlet g:rbpt_max = 16\n```\n\n```vim\nlet g:rbpt_loadcmd_toggle = 0\n```\n\n### Commands:\n\n```vim\n:RainbowParenthesesToggle       \" Toggle it on/off\n:RainbowParenthesesLoadRound    \" (), the default when toggling\n:RainbowParenthesesLoadSquare   \" []\n:RainbowParenthesesLoadBraces   \" {}\n:RainbowParenthesesLoadChevrons \" <>\n```\n\n### Always On:\n\n```vim\nau VimEnter * RainbowParenthesesToggle\nau Syntax * RainbowParenthesesLoadRound\nau Syntax * RainbowParenthesesLoadSquare\nau Syntax * RainbowParenthesesLoadBraces\n```\n"
  },
  {
    "path": ".vim/bundle/supertab/Makefile",
    "content": "SHELL=/bin/bash\n\nall: dist\n\ndist:\n\t@rm supertab.vmb 2> /dev/null || true\n\t@vim -c 'r! git ls-files doc plugin' \\\n\t\t-c '$$,$$d _' -c '%MkVimball supertab .' -c 'q!'\n\nclean:\n\t@rm -R build 2> /dev/null || true\n\ninstall: supertab.vmb\n\tvim $< -c 'so %' -c 'q'\n\nuninstall:\n\tvim -c 'RmVimball supertab.vmb' -c 'q'\n"
  },
  {
    "path": ".vim/bundle/supertab/README.rst",
    "content": ".. Copyright (c) 2012 - 2013, Eric Van Dewoestine\n   All rights reserved.\n\n   Redistribution and use of this software in source and binary forms, with\n   or without modification, are permitted provided that the following\n   conditions are met:\n\n   * Redistributions of source code must retain the above\n     copyright notice, this list of conditions and the\n     following disclaimer.\n\n   * Redistributions in binary form must reproduce the above\n     copyright notice, this list of conditions and the\n     following disclaimer in the documentation and/or other\n     materials provided with the distribution.\n\n   * Neither the name of Eric Van Dewoestine nor the names of its\n     contributors may be used to endorse or promote products derived from\n     this software without specific prior written permission of\n     Eric Van Dewoestine.\n\n   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n   IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\n   THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n   PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n.. _overview:\n\n==================\nOverview\n==================\n\nSupertab is a vim plugin which allows you to use <Tab> for all your insert\ncompletion needs (:help ins-completion).\n\nFeatures\n--------\n\n- Configurable to suit you needs:\n\n  - Default completion type to use.\n  - Prevent <Tab> from completing after/before defined patterns.\n  - Close vim's completion preview window when code completion is finished.\n  - When using other completion types, you can configure how long to 'remember'\n    the current completion type before returning to the default.\n  - Don't like using <Tab>? You can also configure a different pair of keys to\n    scroll forwards and backwards through completion results.\n\n- Optional improved 'longest' completion support (after typing some characters,\n  hitting <Tab> will highlight the next longest match).\n- Built in 'context' completion option which chooses the appropriate completion\n  type based on the text preceding the cursor.\n\n  - You can also plug in your own functions to determine which completion type\n    to use.\n\n- Support for simple completion chaining (falling back to a different\n  completion type, keyword completion for example, if omni or user completion\n  returns no results).\n\nFrequently Asked Questions\n--------------------------\n\n- **Why isn't supertab honoring my configured settings (attempts to complete at the\n  start of a line, always performs keyword completion instead of my configured\n  default, etc.)?**\n\n  Chances are that you have a very old version of `snipmate\n  <https://github.com/msanders/snipmate.vim>`_ installed, or something similar,\n  which will issue a `<c-n>` when no snippet is found. Supertab use to map to\n  `<c-n>`, so this behavior would act as a fallback to supertab, but current\n  versions of supertab no longer do so, resulting in snipmate bypassing supertab\n  entirely.\n\n  You can check if this is the case by running the following in vim to see what\n  is mapped to `<tab>`:\n\n    ::\n\n      :verbose imap <tab>\n\n  To resolve the issue you can either:\n\n  #. Install my `fork <https://github.com/ervandew/snipmate.vim>`_ or\n  #. Upgrade to a more recent snipmate fork, like `garbase/vim-snipmate\n     <https://github.com/garbas/vim-snipmate>`_\n\n  See `#74 <https://github.com/ervandew/supertab/issues/74>`_ for additional\n  details.\n\n- **Why does <tab> navigate the completion menu from bottom to top?**\n\n  First, if after reading the explaination below (or if you don't want to bother\n  reading it), you still want the default to scroll down the list then you can\n  use:\n\n    ::\n\n      let g:SuperTabDefaultCompletionType = \"<c-n>\"\n\n  or if your default completion type is currently `context` then you can use\n  this instead:\n\n    ::\n\n      let g:SuperTabContextDefaultCompletionType = \"<c-n>\"\n\n  Now on the the reasoning behind this. When using `<c-p>` or `<c-n>` to start\n  insert completion, both populate the completion popup with the same list of\n  words in the same order, the only difference is that `<c-p>` highlights the\n  nearest matching word located above the current cursor position, which is the\n  result at the bottom of the completion popup. Without supertab installed,\n  continuing to hit `<c-p>` will walk up the list to next nearest word above the\n  cursor.\n\n  I think Bram chose to display the results like this so that\n\n  #. the completion logic is the same for `<c-n>` and `<c-p>`, only the first\n     entry to highlight differs\n  #. so that the behavior of `<c-p>` mode is consistent, always moving up the\n     list and\n  #. when starting `<c-p>` mode you don't have to switch over to\n     using `<c-n>` to get the next nearest entry, just continue to hit `<c-p>`.\n\n  So, with supertab I wanted to preserve the same behavior. If `<c-p>` is your\n  default completion method (supertab defaults to this being the case), then\n  `<tab>` will start it and additional uses of `<tab>` will move up the list\n  instead of down so that you don't have to suddenly switch to using `<s-tab>`\n  to get the next nearest result.\n\n  Why is `<c-p>` the supertab default? The original supertab author found (and I\n  agree with his finding) that while coding, the keyword match you want is\n  typically the closer of the matches above the cursor, which `<c-p>` naturally\n  provides.\n"
  },
  {
    "path": ".vim/bundle/supertab/doc/supertab.txt",
    "content": "*supertab.txt*\n\nAuthor: Eric Van Dewoestine <ervandew@gmail.com>\n        Original concept and versions up to 0.32 written by\n        Gergely Kontra <kgergely@mcl.hu>\n\nThis plugin is licensed under the terms of the BSD License.  Please see\nsupertab.vim for the license in its entirety.\n\n==============================================================================\nSupertab                                    *supertab*\n\n1. Introduction                             |supertab-intro|\n2. Supertab Usage                           |supertab-usage|\n3. Supertab Options                         |supertab-options|\n    Default completion type                 |supertab-defaultcompletion|\n    Secondary default completion type       |supertab-contextdefault|\n    Completion contexts                     |supertab-completioncontexts|\n        Context text                        |supertab-contexttext|\n        Context Discover                    |supertab-contextdiscover|\n        Example                             |supertab-contextexample|\n    Completion Duration                     |supertab-duration|\n    Preventing Completion After/Before...   |supertab-preventcomplete|\n    Changing default mapping                |supertab-forwardbackward|\n    Inserting true tabs                     |supertab-mappingtabliteral|\n    Enhanced longest match support          |supertab-longestenhanced|\n    Preselecting the first entry            |supertab-longesthighlight|\n    Mapping <cr> to end completion          |supertab-crmapping|\n    Auto close the preview window           |supertab-closepreviewonpopupclose|\n    Completion Chaining                     |supertab-completionchaining|\n\n==============================================================================\n1. Introduction                             *supertab-intro*\n\nSupertab is a plugin which allows you to perform all your insert completion\n(|ins-completion|) using the tab key.\n\nSupertab requires Vim version 7.0 or above.\n\n==============================================================================\n2. Supertab usage                           *supertab-usage*\n\nUsing Supertab is as easy as hitting <Tab> or <S-Tab> (shift+tab) while in\ninsert mode, with at least one non whitespace character before the cursor, to\nstart the completion and then <Tab> or <S-Tab> again to cycle forwards or\nbackwards through the available completions.\n\nExample ('|' denotes the cursor location):\n\nbar\nbaz\nb|<Tab>    Hitting <Tab> here will start the completion, allowing you to\n           then cycle through the suggested words ('bar' and 'baz').\n\n==============================================================================\n3. Supertab Options                         *supertab-options*\n\nSupertab is configured via several global variables that you can set in your\n|vimrc| file according to your needs. Below is a comprehensive list of\nthe variables available.\n\n\nDefault Completion Type             *supertab-defaultcompletion*\n                                    *g:SuperTabDefaultCompletionType*\n\ng:SuperTabDefaultCompletionType (default value: \"<c-p>\")\n\nUsed to set the default completion type. There is no need to escape this\nvalue as that will be done for you when the type is set.\n\n  Example: setting the default completion to 'user' completion:\n\n>\n    let g:SuperTabDefaultCompletionType = \"<c-x><c-u>\"\n<\n\nNote: a special value of 'context' is supported which will result in\nsuper tab attempting to use the text preceding the cursor to decide which\ntype of completion to attempt. Currently supertab can recognize method calls\nor attribute references via '.', '::' or '->', and file path references\ncontaining '/'. If the language you are using doesn't use any of the member\nreference characters listed above, or you'd like to add aditional patterns,\nyou can write a custom conxtext function als decribed in the next section\n(Completion context).\n\n  Example: setting the default completion to supertab's 'context' completion:\n>\n    let g:SuperTabDefaultCompletionType = \"context\"\n<\n\n    /usr/l<tab>     # will use filename completion\n    myvar.t<tab>    # will use user completion if completefunc set,\n                    # or omni completion if omnifunc set.\n    myvar-><tab>    # same as above\n\nWhen using context completion, super tab will fall back to a secondary default\ncompletion type set by |g:SuperTabContextDefaultCompletionType|.\n\nNote: once the buffer has been initialized, changing the value of this setting\nwill not change the default complete type used. If you want to change the\ndefault completion type for the current buffer after it has been set, perhaps\nin an ftplugin, you'll need to call SuperTabSetDefaultCompletionType like so,\nsupplying the completion type you wish to switch to:\n\n>\n    call SuperTabSetDefaultCompletionType(\"<c-x><c-u>\")\n<\n\n\nSecondary default completion type   *supertab-contextdefault*\n                                    *g:SuperTabContextDefaultCompletionType*\n\ng:SuperTabContextDefaultCompletionType (default value: \"<c-p>\")\n\nSets the default completion type used when g:SuperTabDefaultCompletionType is\nset to 'context' and no completion type is returned by any of the configured\ncontexts.\n\n\nCompletion contexts                 *supertab-completioncontexts*\n                                    *g:SuperTabCompletionContexts*\n\ng:SuperTabCompletionContexts (default value: ['s:ContextText'])\n\nSets the list of contexts used for context completion. This value should\nbe a list of function names which provide the context implementation.\n\nWhen supertab starts context completion, each of these contexts will be\nconsulted, in the order they were supplied, to determine the completion type\nto use. If a context returns a completion type, that type will be used,\notherwise the next context in the list will be consulted. If after executing\nall the context functions, no completion type has been determined, then the\nvalue of |g:SuperTabContextDefaultCompletionType| will be used.\n\n  Note: supertab also supports the b:SuperTabCompletionContexts variable\n  allowing you to set the list of contexts separately for the current buffer,\n  like from an ftplugin for example.\n\nBuilt in completion contexts:\n\n  s:ContextText                     *supertab-contexttext*\n\n  The text context will examine the text near the cursor to decide which type\n  of completion to attempt. Currently the text context can recognize method\n  calls or attribute references via '.', '::' or '->', and file path\n  references containing '/'.\n\n      /usr/l<tab>  # will use filename completion\n      myvar.t<tab> # will use user completion if completefunc set, or\n                   # omni completion if omnifunc set.\n      myvar-><tab> # same as above\n\n  Supported configuration attributes:\n\n    g:SuperTabContextTextFileTypeExclusions\n    List of file types for which the text context will be skipped.\n\n    g:SuperTabContextTextOmniPrecedence\n    List of omni completion option names in the order of precedence that they\n    should be used if available. By default, user completion will be given\n    precedence over omni completion, but you can use this variable to give\n    omni completion higher precedence by placing it first in the list.\n\n  s:ContextDiscover                 *supertab-contextdiscover*\n\n  This context will use the 'g:SuperTabContextDiscoverDiscovery' variable to\n  determine the completion type to use. It will evaluate each value, in the\n  order they were defined, until a variable evaluates to a non-zero or\n  non-empty value, then the associated completion type is used.\n\n  Supported configuration properties:\n\n    g:SuperTabContextDiscoverDiscovery\n    List of variable:completionType mappings.\n\n  Example context configuration:    *supertab-contextexample*\n\n>\n    let g:SuperTabCompletionContexts = ['s:ContextText', 's:ContextDiscover']\n    let g:SuperTabContextTextOmniPrecedence = ['&omnifunc', '&completefunc']\n    let g:SuperTabContextDiscoverDiscovery =\n        \\ [\"&completefunc:<c-x><c-u>\", \"&omnifunc:<c-x><c-o>\"]\n<\n\n  In addition to the default completion contexts, you can plug in your own\n  implementation by creating a globally accessible function that returns\n  the completion type to use (eg. \"\\<c-x>\\<c-u>\").\n\n>\n    function MyTagContext()\n      if filereadable(expand('%:p:h') . '/tags')\n        return \"\\<c-x>\\<c-]>\"\n      endif\n      \" no return will result in the evaluation of the next\n      \" configured context\n    endfunction\n    let g:SuperTabCompletionContexts =\n        \\ ['MyTagContext', 's:ContextText', 's:ContextDiscover']\n<\n\n  Here is another example that could be used to add context support for\n  clojure, and perhaps other lisp variants:\n\n>\n    let b:SuperTabCompletionContexts =\n      \\ ['ClojureContext'] + g:SuperTabCompletionContexts\n\n    function! ClojureContext()\n      let curline = getline('.')\n      let cnum = col('.')\n      let synname = synIDattr(synID(line('.'), cnum - 1, 1), 'name')\n      if curline =~ '(\\S\\+\\%' . cnum . 'c' && synname !~ '\\(String\\|Comment\\)'\n        return \"\\<c-x>\\<c-o>\"\n      endif\n    endfunction\n<\n\n\nCompletion Duration                 *supertab-duration*\n                                    *g:SuperTabRetainCompletionDuration*\n\ng:SuperTabRetainCompletionDuration (default value: 'insert')\n\nDetermines if, and for how long, the current completion type is retained.\nThe possible values include:\n'completion' - The current completion type is only retained for the\n               current completion. Once you have chosen a completion\n               result or exited the completion mode, the default\n               completion type is restored.\n'insert'     - The current completion type is saved until you exit insert\n               mode (via ESC). Once you exit insert mode the default\n               completion type is restored. (supertab default)\n'session'    - The current completion type is saved for the duration of\n               your vim session or until you enter a different completion\n               mode.\n\n\nPreventing completion after...      *supertab-preventcomplete*\n                                    *g:SuperTabNoCompleteBefore*\n                                    *g:SuperTabNoCompleteAfter*\n\ng:SuperTabNoCompleteBefore (default value: [])\ng:SuperTabNoCompleteAfter (default value: ['^', '\\s'])\n\nThese two variables are used to control when supertab will attempt completion\nor instead fall back to inserting a literal <tab>. There are two possible ways\nto define these variables:\n\n  1) by specifying a list of patterns which are tested against the text before \n  and after the current cursor position that when matched, prevent completion. \n  So if you don't want supertab to start completion at the start of a line, \n  after a comma, or after a space, you can set g:SuperTabNoCompleteAfter \n  to ['^', ',', '\\s'].\n\n  2) by specifying a funcref to a global accessible function which expects\n  as parameter the text to be inspected (before or after) and, based on that (or \n  other factors), it returns 1 if completion must be prevented, 0 otherwise.\n\nNote: That a buffer local version of these variables\n(b:SuperTabNoCompleteBefore, b:SuperTabNoCompleteAfter) are also supported\nshould you wish to have different values depending on the file type for\ninstance.\n\nChanging the default mapping        *supertab-forwardbackward*\n                                    *g:SuperTabMappingForward*\n                                    *g:SuperTabMappingBackward*\n\ng:SuperTabMappingForward  (default value: '<tab>')\ng:SuperTabMappingBackward (default value: '<s-tab>')\n\nThese two variables allow you to set the keys used to kick off the current\ncompletion. By default this is <tab> and <s-tab>. To change to something\nlike <c-space> and <s-c-space>, you can add the following to your |vimrc|.\n\n>\n    let g:SuperTabMappingForward = '<c-space>'\n    let g:SuperTabMappingBackward = '<s-c-space>'\n>\n\nNote: if the above does not have the desired effect (which may happen in\nconsole version of vim), you can try the following mappings. Although the\nbackwards mapping still doesn't seem to work in the console for me, your\nmilage may vary.\n\n>\n    let g:SuperTabMappingForward = '<nul>'\n    let g:SuperTabMappingBackward = '<s-nul>'\n<\n\n\nInserting true tabs                 *supertab-mappingtabliteral*\n                                    *g:SuperTabMappingTabLiteral*\n\ng:SuperTabMappingTabLiteral (default value: '<c-tab>')\n\nSets the key mapping used to insert a literal tab where supertab would\notherwise attempt to kick off insert completion. The default is '<c-tab>'\n(ctrl-tab) which unfortunately might not work at the console. So if you are\nusing a console vim and want this functionality, you may have to change it to\nsomething that is supported. Alternatively, you can escape the <tab> with\n<c-v> (see |i_CTRL-V| for more infos).\n\n\nEnhanced longest match support      *supertab-longestenhanced*\n                                    *g:SuperTabLongestEnhanced*\n\ng:SuperTabLongestEnhanced (default value: 0)\n\nWhen enabled and 'longest' is in your |completeopt| setting, supertab will\nprovide an enhanced longest match support where typing one or more letters and\nhitting tab again while in a completion mode will complete the longest common\nmatch using the new text in the buffer.\n\nFor example, say you have a buffer with the following contents:\n  FooBarFoo\n  FooBar\n  Foo\n  FooBarBaz\nAnd you then type F<tab>. Vim's builtin longest support will complete the\nlongest common text 'Foo' and offer 'FooBarFoo', 'FooBar', 'Foo', and\n'FooBarBaz' as possible completions. With supertab's longest match\nenhancement disabled, typing B<tab> while still in the completion mode will\nend up completing 'FooBarBaz' or 'FooBarFoo' depending your settings, instead\nof the next longest common match of 'FooBar'. With supertab's enhanced\nlongest match feature enabled, the typing of B<tab> will result in the next\nlongest text being completed.\n\n\nPreselecting the first entry        *supertab-longesthighlight*\n                                    *g:SuperTabLongestHighlight*\n\ng:SuperTabLongestHighlight (default value: 0)\n\nSets whether or not to pre-highlight the first match when completeopt has the\npopup menu enabled and the 'longest' option as well. When enabled, <tab> will\nkick off completion and pre-select the first entry in the popup menu, allowing\nyou to simply hit <enter> to use it.\n\n\nMapping <cr> to end completion      *supertab-crmapping*\n                                    *g:SuperTabCrMapping*\n\ng:SuperTabCrMapping (default value: 1)\n\nWhen enabled, <cr> will cancel completion mode preserving the current text.\n\nCompatibility with other plugins:\n  - endwise:     compatible\n  - delimitMate: not compatible (disabled if the delimitMate <cr> mapping is\n    detected.)\n\nNote: if you have an insert expression mapping with a <cr> in it or an insert\nabbreviation containing a <cr>, then supertab will not create a <cr> mapping\nwhich could potentially cause problems with those.\n\n\nAuto close the preview window       *supertab-closepreviewonpopupclose*\n                                    *g:SuperTabClosePreviewOnPopupClose*\n\ng:SuperTabClosePreviewOnPopupClose (default value: 0)\n\nWhen enabled, supertab will attempt to close vim's completion preview window\nwhen the completion popup closes (completion is finished or canceled).\n\nCompletion Chaining                  *supertab-completionchaining*\n\nSuperTab provides the ability to chain one of the completion functions\n(|completefunc| or |omnifunc|) together with a one of the default vim\ncompletion key sequences (|ins-completion|), giving you the ability to attempt\ncompletion with the first, and upon no results, fall back to the second.\n\nTo utilize this feature you need to call the SuperTabChain function where\nthe first argument is the name of a vim compatible |complete-function| and the\nsecond is one of vim's insert completion (|ins-completion|) key bindings\n(<c-p>, <c-n>, <c-x><c-]>, etc). Calling this function will set the current\nbuffer's |completefunc| option to a supertab provided implementation which\nutilizes the supplied arguments to perform the completion. Since the\n|completefunc| option is being set, this feature must be used with\n|g:SuperTabDefaultCompletionType| set to either \"context\" or \"<c-x><c-u>\".\n\nHere is an example that can be added to your .vimrc which will setup the\nsupertab chaining for any filetype that has a provided |omnifunc| to first\ntry that, then fall back to supertab's default, <c-p>, completion:\n\n>\n  autocmd FileType *\n    \\ if &omnifunc != '' |\n    \\   call SuperTabChain(&omnifunc, \"<c-p>\") |\n    \\   call SuperTabSetDefaultCompletionType(\"<c-x><c-u>\") |\n    \\ endif\n<\n\nNotice that this autocmd set's the supertab default completion type to user\ncompletion. This is because the call to SuperTabChain will set your buffer's\n|'completefunc'| to a supertab defined function which handles the completion\nchaining. If that function is never called, by user completion being invoked\nvia supertab, then completion chaining will not execute. As noted above though,\ninstead of setting the default to user completion, you can alternatively set\nit supertab's 'context' completion type, in which case supertab's 'context'\ncompletion mechanism document above will execute first, and when that context\nlogic kicks off a user completion, based on the current context, then\nsupertab's completion chaining will then take over.\n\nHere is an example where 'context' is the global default and completion\nchaining is enabled for file types that have omni completion support:\n\n>\n  let g:SuperTabDefaultCompletionType = 'context'\n  autocmd FileType *\n    \\ if &omnifunc != '' |\n    \\   call SuperTabChain(&omnifunc, \"<c-p>\") |\n    \\ endif\n<\n\nThat configuration will result in a completion flow like so:\n\n  if text before the cursor looks like a file path:\n    use file completion\n  elif text before the cursor looks like an attempt to access a member\n  (method, field, etc):\n    use user completion\n      where user completion is currently set to supertab's\n      completion chaining, resulting in:\n        if omni completion has results:\n          use omni completion\n        else:\n          use keyword completion\n  else:\n    use keyword completion\n\nNote: Completion chaining only supports chaining 1 completion function (omni\nor user) with 1 regular completion keybinding. All other combinations of\ncompletions (2 or more completion functions, 2 or more key bindings, etc.) are\nnot supported due to limitations imposed by vim's code completion\nimplementation.\n\nNote: If the |completefunc| or |omnifunc| use vim's |complete_add()| instead\nof returning completion results as a list, then Supertab's completion chaining\nwon't work properly with it since Supertab uses the function result to\ndetermine if it should fallback to the next completion type.\n\nvim:tw=78:ts=8:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/supertab/plugin/supertab.vim",
    "content": "\" Author: Eric Van Dewoestine <ervandew@gmail.com>\n\"         Original concept and versions up to 0.32 written by\n\"         Gergely Kontra <kgergely@mcl.hu>\n\" Version: 2.0\n\" GetLatestVimScripts: 1643 1 :AutoInstall: supertab.vim\n\"\n\" Description: {{{\n\"   Use your tab key to do all your completion in insert mode!\n\"   You can cycle forward and backward with the <Tab> and <S-Tab> keys\n\"   Note: you must press <Tab> once to be able to cycle back\n\"\n\"   http://www.vim.org/scripts/script.php?script_id=1643\n\" }}}\n\"\n\" License: {{{\n\"   Copyright (c) 2002 - 2013\n\"   All rights reserved.\n\"\n\"   Redistribution and use of this software in source and binary forms, with\n\"   or without modification, are permitted provided that the following\n\"   conditions are met:\n\"\n\"   * Redistributions of source code must retain the above\n\"     copyright notice, this list of conditions and the\n\"     following disclaimer.\n\"\n\"   * Redistributions in binary form must reproduce the above\n\"     copyright notice, this list of conditions and the\n\"     following disclaimer in the documentation and/or other\n\"     materials provided with the distribution.\n\"\n\"   * Neither the name of Gergely Kontra or Eric Van Dewoestine nor the names\n\"   of its contributors may be used to endorse or promote products derived\n\"   from this software without specific prior written permission of Gergely\n\"   Kontra or Eric Van Dewoestine.\n\"\n\"   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n\"   IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\n\"   THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n\"   PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n\"   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n\"   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n\"   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n\"   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n\"   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n\"   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n\"   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\" }}}\n\"\n\" Testing Info: {{{\n\"   Running vim + supertab with the absolute bare minimum settings:\n\"     $ vim -u NONE -U NONE -c \"set nocp | runtime plugin/supertab.vim\"\n\" }}}\n\nif v:version < 700\n  finish\nendif\n\nif exists('complType') \" Integration with other completion functions.\n  finish\nendif\n\nif exists(\"loaded_supertab\")\n  finish\nendif\nlet loaded_supertab = 1\n\nlet s:save_cpo=&cpo\nset cpo&vim\n\n\" Global Variables {{{\n\n  if !exists(\"g:SuperTabDefaultCompletionType\")\n    let g:SuperTabDefaultCompletionType = \"<c-p>\"\n  endif\n\n  if !exists(\"g:SuperTabContextDefaultCompletionType\")\n    let g:SuperTabContextDefaultCompletionType = \"<c-p>\"\n  endif\n\n  if !exists(\"g:SuperTabCompletionContexts\")\n    let g:SuperTabCompletionContexts = ['s:ContextText']\n  endif\n\n  if !exists(\"g:SuperTabRetainCompletionDuration\")\n    let g:SuperTabRetainCompletionDuration = 'insert'\n  endif\n\n  if !exists(\"g:SuperTabNoCompleteBefore\")\n    \" retain backwards compatability\n    if exists(\"g:SuperTabMidWordCompletion\") && !g:SuperTabMidWordCompletion\n      let g:SuperTabNoCompleteBefore = ['\\k']\n    else\n      let g:SuperTabNoCompleteBefore = []\n    endif\n  endif\n\n  if !exists(\"g:SuperTabNoCompleteAfter\")\n    \" retain backwards compatability\n    if exists(\"g:SuperTabLeadingSpaceCompletion\") && g:SuperTabLeadingSpaceCompletion\n      let g:SuperTabNoCompleteAfter = []\n    else\n      let g:SuperTabNoCompleteAfter = ['^', '\\s']\n    endif\n  endif\n\n  if !exists(\"g:SuperTabMappingForward\")\n    let g:SuperTabMappingForward = '<tab>'\n  endif\n  if !exists(\"g:SuperTabMappingBackward\")\n    let g:SuperTabMappingBackward = '<s-tab>'\n  endif\n\n  if !exists(\"g:SuperTabMappingTabLiteral\")\n    let g:SuperTabMappingTabLiteral = '<c-tab>'\n  endif\n\n  if !exists(\"g:SuperTabLongestEnhanced\")\n    let g:SuperTabLongestEnhanced = 0\n  endif\n\n  if !exists(\"g:SuperTabLongestHighlight\")\n    let g:SuperTabLongestHighlight = 0\n  endif\n\n  if !exists(\"g:SuperTabCrMapping\")\n    let g:SuperTabCrMapping = 1\n  endif\n\n  if !exists(\"g:SuperTabClosePreviewOnPopupClose\")\n    let g:SuperTabClosePreviewOnPopupClose = 0\n  endif\n\n  if !exists(\"g:SuperTabUndoBreak\")\n    let g:SuperTabUndoBreak = 0\n  endif\n\n\" }}}\n\n\" Script Variables {{{\n\n  \" construct the help text.\n  let s:tabHelp =\n    \\ \"Hit <CR> or CTRL-] on the completion type you wish to switch to.\\n\" .\n    \\ \"Use :help ins-completion for more information.\\n\" .\n    \\ \"\\n\" .\n    \\ \"|<c-n>|      - Keywords in 'complete' searching down.\\n\" .\n    \\ \"|<c-p>|      - Keywords in 'complete' searching up (SuperTab default).\\n\" .\n    \\ \"|<c-x><c-l>| - Whole lines.\\n\" .\n    \\ \"|<c-x><c-n>| - Keywords in current file.\\n\" .\n    \\ \"|<c-x><c-k>| - Keywords in 'dictionary'.\\n\" .\n    \\ \"|<c-x><c-t>| - Keywords in 'thesaurus', thesaurus-style.\\n\" .\n    \\ \"|<c-x><c-i>| - Keywords in the current and included files.\\n\" .\n    \\ \"|<c-x><c-]>| - Tags.\\n\" .\n    \\ \"|<c-x><c-f>| - File names.\\n\" .\n    \\ \"|<c-x><c-d>| - Definitions or macros.\\n\" .\n    \\ \"|<c-x><c-v>| - Vim command-line.\\n\" .\n    \\ \"|<c-x><c-u>| - User defined completion.\\n\" .\n    \\ \"|<c-x><c-o>| - Omni completion.\\n\" .\n    \\ \"|<c-x>s|     - Spelling suggestions.\"\n\n  \" set the available completion types and modes.\n  let s:types =\n    \\ \"\\<c-e>\\<c-y>\\<c-l>\\<c-n>\\<c-k>\\<c-t>\\<c-i>\\<c-]>\" .\n    \\ \"\\<c-f>\\<c-d>\\<c-v>\\<c-n>\\<c-p>\\<c-u>\\<c-o>\\<c-n>\\<c-p>s\"\n  let s:modes = '/^E/^Y/^L/^N/^K/^T/^I/^]/^F/^D/^V/^P/^U/^O/s'\n  let s:types = s:types . \"np\"\n  let s:modes = s:modes . '/n/p'\n\n\" }}}\n\nfunction! SuperTabSetDefaultCompletionType(type) \" {{{\n  \" Globally available function that users can use to set the default\n  \" completion type for the current buffer, like in an ftplugin.\n\n  \" init hack for <c-x><c-v> workaround.\n  let b:complCommandLine = 0\n\n  let b:SuperTabDefaultCompletionType = a:type\n\n  \" set the current completion type to the default\n  call SuperTabSetCompletionType(b:SuperTabDefaultCompletionType)\nendfunction \" }}}\n\nfunction! SuperTabSetCompletionType(type) \" {{{\n  \" Globally available function that users can use to create mappings to quickly\n  \" switch completion modes.  Useful when a user wants to restore the default or\n  \" switch to another mode without having to kick off a completion of that type\n  \" or use SuperTabHelp.  Note, this function only changes the current\n  \" completion type, not the default, meaning that the default will still be\n  \" restored once the configured retension duration has been met (see\n  \" g:SuperTabRetainCompletionDuration).  To change the default for the current\n  \" buffer, use SuperTabDefaultCompletionType(type) instead.  Example mapping to\n  \" restore SuperTab default:\n  \"   nmap <F6> :call SetSuperTabCompletionType(\"<c-p>\")<cr>\n\n  call s:InitBuffer()\n  exec \"let b:complType = \\\"\" . escape(a:type, '<') . \"\\\"\"\nendfunction \" }}}\n\nfunction! SuperTabAlternateCompletion(type) \" {{{\n  \" Function which can be mapped to a key to kick off an alternate completion\n  \" other than the default.  For instance, if you have 'context' as the default\n  \" and want to map ctrl+space to issue keyword completion.\n  \" Note: due to the way vim expands ctrl characters in mappings, you cannot\n  \" create the alternate mapping like so:\n  \"    imap <c-space> <c-r>=SuperTabAlternateCompletion(\"<c-p>\")<cr>\n  \" instead, you have to use \\<lt> to prevent vim from expanding the key\n  \" when creating the mapping.\n  \"    gvim:\n  \"      imap <c-space> <c-r>=SuperTabAlternateCompletion(\"\\<lt>c-p>\")<cr>\n  \"    console:\n  \"      imap <nul> <c-r>=SuperTabAlternateCompletion(\"\\<lt>c-p>\")<cr>\n\n  call SuperTabSetCompletionType(a:type)\n  \" end any current completion before attempting to start the new one.\n  \" use feedkeys to prevent possible remapping of <c-e> from causing issues.\n  \"call feedkeys(\"\\<c-e>\", 'n')\n  \" ^ since we can't detect completion mode vs regular insert mode, we force\n  \" vim into keyword completion mode and end that mode to prevent the regular\n  \" insert behavior of <c-e> from occurring.\n  call feedkeys(\"\\<c-x>\\<c-p>\\<c-e>\", 'n')\n  call feedkeys(b:complType, 'n')\n  return ''\nendfunction \" }}}\n\nfunction! SuperTabLongestHighlight(dir) \" {{{\n  \" When longest highlight is enabled, this function is used to do the actual\n  \" selection of the completion popup entry.\n\n  if !pumvisible()\n    return ''\n  endif\n  return a:dir == -1 ? \"\\<up>\" : \"\\<down>\"\nendfunction \" }}}\n\nfunction! s:Init() \" {{{\n  \" Setup mechanism to restore original completion type upon leaving insert\n  \" mode if configured to do so\n  if g:SuperTabRetainCompletionDuration == 'insert'\n    augroup supertab_retain\n      autocmd!\n      autocmd InsertLeave * call s:SetDefaultCompletionType()\n    augroup END\n  endif\nendfunction \" }}}\n\nfunction! s:InitBuffer() \" {{{\n  if exists('b:SuperTabNoCompleteBefore')\n    return\n  endif\n\n  let b:complReset = 0\n  let b:complTypeManual = !exists('b:complTypeManual') ? '' : b:complTypeManual\n  let b:complTypeContext = ''\n\n  \" init hack for <c-x><c-v> workaround.\n  let b:complCommandLine = 0\n\n  if !exists('b:SuperTabNoCompleteBefore')\n    let b:SuperTabNoCompleteBefore = g:SuperTabNoCompleteBefore\n  endif\n  if !exists('b:SuperTabNoCompleteAfter')\n    let b:SuperTabNoCompleteAfter = g:SuperTabNoCompleteAfter\n  endif\n\n  if !exists('b:SuperTabDefaultCompletionType')\n    let b:SuperTabDefaultCompletionType = g:SuperTabDefaultCompletionType\n  endif\n\n  \" set the current completion type to the default\n  call SuperTabSetCompletionType(b:SuperTabDefaultCompletionType)\n\n  \" hack to programatically revert a change to snipmate that breaks supertab\n  \" but which the new maintainers don't care about:\n  \" http://github.com/garbas/vim-snipmate/issues/37\n  let snipmate = maparg('<tab>', 'i')\n  if snipmate =~ '<C-G>u' && g:SuperTabMappingForward =~? '<tab>'\n    let snipmate = substitute(snipmate, '<C-G>u', '', '')\n    iunmap <tab>\n    exec \"inoremap <silent> <tab> \" . snipmate\n  endif\nendfunction \" }}}\n\nfunction! s:ManualCompletionEnter() \" {{{\n  \" Handles manual entrance into completion mode.\n\n  if &smd\n    echo '' | echohl ModeMsg | echo '-- ^X++ mode (' . s:modes . ')' | echohl None\n  endif\n  let complType = nr2char(getchar())\n  if stridx(s:types, complType) != -1\n    if !exists('b:supertab_close_preview')\n      let b:supertab_close_preview = !s:IsPreviewOpen()\n    endif\n\n    if stridx(\"\\<c-e>\\<c-y>\", complType) != -1 \" no memory, just scroll...\n      return \"\\<c-x>\" . complType\n    elseif stridx('np', complType) != -1\n      let complType = nr2char(char2nr(complType) - 96)\n    else\n      let complType = \"\\<c-x>\" . complType\n    endif\n\n    let b:complTypeManual = complType\n\n    if index(['insert', 'session'], g:SuperTabRetainCompletionDuration) != -1\n      let b:complType = complType\n    endif\n\n    \" Hack to workaround bug when invoking command line completion via <c-r>=\n    if complType == \"\\<c-x>\\<c-v>\"\n      return s:CommandLineCompletion()\n    endif\n\n    \" optionally enable enhanced longest completion\n    if g:SuperTabLongestEnhanced && &completeopt =~ 'longest'\n      call s:EnableLongestEnhancement()\n    endif\n\n    if g:SuperTabLongestHighlight &&\n     \\ &completeopt =~ 'longest' &&\n     \\ &completeopt =~ 'menu' &&\n     \\ !pumvisible()\n      let dir = (complType == \"\\<c-x>\\<c-p>\") ? -1 : 1\n      call feedkeys(\"\\<c-r>=SuperTabLongestHighlight(\" . dir . \")\\<cr>\", 'n')\n    endif\n\n    return complType\n  endif\n\n  echohl \"Unknown mode\"\n  return complType\nendfunction \" }}}\n\nfunction! s:SetCompletionType() \" {{{\n  \" Sets the completion type based on what the user has chosen from the help\n  \" buffer.\n\n  let chosen = substitute(getline('.'), '.*|\\(.*\\)|.*', '\\1', '')\n  if chosen != getline('.')\n    let winnr = b:winnr\n    close\n    exec winnr . 'winc w'\n    call SuperTabSetCompletionType(chosen)\n  endif\nendfunction \" }}}\n\nfunction! s:SetDefaultCompletionType() \" {{{\n  if exists('b:SuperTabDefaultCompletionType') &&\n  \\ (!exists('b:complCommandLine') || !b:complCommandLine)\n    call SuperTabSetCompletionType(b:SuperTabDefaultCompletionType)\n  endif\nendfunction \" }}}\n\nfunction! SuperTab(command) \" {{{\n  \" Used to perform proper cycle navigation as the user requests the next or\n  \" previous entry in a completion list, and determines whether or not to simply\n  \" retain the normal usage of <tab> based on the cursor position.\n\n  if exists('b:SuperTabDisabled') && b:SuperTabDisabled\n    if exists('s:Tab')\n      return s:Tab()\n    endif\n    return (\n        \\ g:SuperTabMappingForward ==? '<tab>' ||\n        \\ g:SuperTabMappingBackward ==? '<tab>'\n      \\ ) ? \"\\<tab>\" : ''\n  endif\n\n  call s:InitBuffer()\n\n  if s:WillComplete()\n    if !exists('b:supertab_close_preview')\n      let b:supertab_close_preview = !s:IsPreviewOpen()\n    endif\n\n    \" optionally enable enhanced longest completion\n    if g:SuperTabLongestEnhanced && &completeopt =~ 'longest'\n      call s:EnableLongestEnhancement()\n    endif\n\n    if !pumvisible()\n      let b:complTypeManual = ''\n    endif\n\n    \" exception: if in <c-p> mode, then <c-n> should move up the list, and\n    \" <c-p> down the list.\n    if a:command == 'p' && !b:complReset &&\n      \\ (b:complType == \"\\<c-p>\" ||\n      \\   (b:complType == 'context' &&\n      \\    b:complTypeManual == '' &&\n      \\    b:complTypeContext == \"\\<c-p>\"))\n      return \"\\<c-n>\"\n\n    elseif a:command == 'p' && !b:complReset &&\n      \\ (b:complType == \"\\<c-n>\" ||\n      \\   (b:complType == 'context' &&\n      \\    b:complTypeManual == '' &&\n      \\    b:complTypeContext == \"\\<c-n>\"))\n      return \"\\<c-p>\"\n\n    \" already in completion mode and not resetting for longest enhancement, so\n    \" just scroll to next/previous\n    elseif pumvisible() && !b:complReset\n      let type = b:complType == 'context' ? b:complTypeContext : b:complType\n      if a:command == 'n'\n        return type == \"\\<c-p>\" || type == \"\\<c-x>\\<c-p>\" ? \"\\<c-p>\" : \"\\<c-n>\"\n      endif\n      return type == \"\\<c-p>\" || type == \"\\<c-x>\\<c-p>\" ? \"\\<c-n>\" : \"\\<c-p>\"\n    endif\n\n    \" handle 'context' completion.\n    if b:complType == 'context'\n      let complType = s:ContextCompletion()\n      if complType == ''\n        exec \"let complType = \\\"\" .\n          \\ escape(g:SuperTabContextDefaultCompletionType, '<') . \"\\\"\"\n      endif\n      let b:complTypeContext = complType\n\n    \" Hack to workaround bug when invoking command line completion via <c-r>=\n    elseif b:complType == \"\\<c-x>\\<c-v>\"\n      let complType = s:CommandLineCompletion()\n    else\n      let complType = b:complType\n    endif\n\n    \" switch <c-x><c-p> / <c-x><c-n> completion in <c-p> mode\n    if a:command == 'p'\n      if complType == \"\\<c-x>\\<c-p>\"\n        let complType = \"\\<c-x>\\<c-n>\"\n      elseif complType == \"\\<c-x>\\<c-n>\"\n        let complType = \"\\<c-x>\\<c-p>\"\n      endif\n    endif\n\n    \" highlight first result if longest enabled\n    if g:SuperTabLongestHighlight &&\n     \\ &completeopt =~ 'longest' &&\n     \\ &completeopt =~ 'menu' &&\n     \\ (!pumvisible() || b:complReset)\n      let dir = (complType == \"\\<c-p>\") ? -1 : 1\n      call feedkeys(\"\\<c-r>=SuperTabLongestHighlight(\" . dir . \")\\<cr>\", 'n')\n    endif\n\n    if b:complReset\n      let b:complReset = 0\n      \" not an accurate condition for everyone, but better than sending <c-e>\n      \" at the wrong time.\n      if pumvisible()\n        return \"\\<c-e>\" . complType\n      endif\n    endif\n\n    if g:SuperTabUndoBreak && !pumvisible()\n        return \"\\<c-g>u\" . complType\n    endif\n\n    return complType\n  endif\n\n  if exists('s:Tab')\n    return s:Tab()\n  endif\n  return (\n      \\ g:SuperTabMappingForward ==? '<tab>' ||\n      \\ g:SuperTabMappingBackward ==? '<tab>'\n    \\ ) ? \"\\<tab>\" : ''\nendfunction \" }}}\n\nfunction! s:SuperTabHelp() \" {{{\n  \" Opens a help window where the user can choose a completion type to enter.\n\n  let winnr = winnr()\n  if bufwinnr(\"SuperTabHelp\") == -1\n    botright split SuperTabHelp\n\n    setlocal noswapfile\n    setlocal buftype=nowrite\n    setlocal bufhidden=delete\n\n    silent put =s:tabHelp\n    call cursor(1, 1)\n    silent 1,delete _\n    call cursor(4, 1)\n    exec \"resize \" . line('$')\n\n    syntax match Special \"|.\\{-}|\"\n\n    setlocal readonly\n    setlocal nomodifiable\n\n    nmap <silent> <buffer> <cr> :call <SID>SetCompletionType()<cr>\n    nmap <silent> <buffer> <c-]> :call <SID>SetCompletionType()<cr>\n  else\n    exec bufwinnr(\"SuperTabHelp\") . \"winc w\"\n  endif\n  let b:winnr = winnr\nendfunction \" }}}\n\nfunction! s:WillComplete() \" {{{\n  \" Determines if completion should be kicked off at the current location.\n\n  if pumvisible()\n    return 1\n  endif\n\n  let line = getline('.')\n  let cnum = col('.')\n\n  \" honor SuperTabNoCompleteAfter\n  let pre = cnum >= 2 ? line[:cnum - 2] : ''\n  let complAfterType = type(b:SuperTabNoCompleteAfter)\n  if complAfterType == 3\n    \" the option was provided as a list of patterns\n    for pattern in b:SuperTabNoCompleteAfter\n      if pre =~ pattern . '$'\n        return 0\n      endif\n    endfor\n  elseif complAfterType == 2\n    \" the option was provided as a funcref\n    return !b:SuperTabNoCompleteAfter(pre)\n  endif\n\n  \" honor SuperTabNoCompleteBefore\n  \" Within a word, but user does not have mid word completion enabled.\n  let post = line[cnum - 1:]\n  let complBeforeType = type(b:SuperTabNoCompleteBefore)\n  if complBeforeType == 3\n    \" a list of patterns\n    for pattern in b:SuperTabNoCompleteBefore\n      if post =~ '^' . pattern\n        return 0\n      endif\n    endfor\n  elseif complBeforeType == 2\n    \" the option was provided as a funcref\n    return !b:SuperTabNoCompleteBefore(post)\n  endif\n\n  return 1\nendfunction \" }}}\n\nfunction! s:EnableLongestEnhancement() \" {{{\n  augroup supertab_reset\n    autocmd!\n    autocmd InsertLeave,CursorMovedI <buffer>\n      \\ call s:ReleaseKeyPresses() | autocmd! supertab_reset\n  augroup END\n  call s:CaptureKeyPresses()\nendfunction \" }}}\n\nfunction! s:CompletionReset(char) \" {{{\n  let b:complReset = 1\n  return a:char\nendfunction \" }}}\n\nfunction! s:CaptureKeyPresses() \" {{{\n  if !exists('b:capturing') || !b:capturing\n    let b:capturing = 1\n    let b:capturing_start = col('.')\n    \" save any previous mappings\n    \" TODO: capture additional info provided by vim 7.3.032 and up.\n    let b:captured = {\n        \\ '<bs>': maparg('<bs>', 'i'),\n        \\ '<c-h>': maparg('<c-h>', 'i'),\n      \\ }\n    \" TODO: use &keyword to get an accurate list of chars to map\n    for c in split('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_', '.\\zs')\n      exec 'imap <buffer> ' . c . ' <c-r>=<SID>CompletionReset(\"' . c . '\")<cr>'\n    endfor\n    imap <buffer> <bs> <c-r>=<SID>CompletionReset(\"\\<lt>bs>\")<cr>\n    imap <buffer> <c-h> <c-r>=<SID>CompletionReset(\"\\<lt>c-h>\")<cr>\n  endif\nendfunction \" }}}\n\nfunction! s:IsPreviewOpen() \" {{{\n  let wins = tabpagewinnr(tabpagenr(), '$')\n  let winnr = 1\n  while winnr <= wins\n    if getwinvar(winnr, '&previewwindow') == 1\n      return 1\n    endif\n    let winnr += 1\n  endwhile\n  return 0\nendfunction \" }}}\n\nfunction! s:ClosePreview() \" {{{\n  if exists('b:supertab_close_preview') && b:supertab_close_preview\n    let preview = 0\n    for bufnum in tabpagebuflist()\n      if getwinvar(bufwinnr(bufnum), '&previewwindow')\n        let preview = 1\n        break\n      endif\n    endfor\n    if preview\n      pclose\n      try\n        doautocmd <nomodeline> supertab_preview_closed User <supertab>\n      catch /E216/\n        \" ignore: no autocmds defined\n      endtry\n    endif\n  endif\n  silent! unlet b:supertab_close_preview\nendfunction \" }}}\n\nfunction! s:ReleaseKeyPresses() \" {{{\n  if exists('b:capturing') && b:capturing\n    let b:capturing = 0\n    for c in split('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_', '.\\zs')\n      exec 'iunmap <buffer> ' . c\n    endfor\n\n    iunmap <buffer> <bs>\n    iunmap <buffer> <c-h>\n\n    \" restore any previous mappings\n    for [key, rhs] in items(b:captured)\n      if rhs != ''\n        let args = substitute(rhs, '.*\\(\".\\{-}\"\\).*', '\\1', '')\n        if args != rhs\n          let args = substitute(args, '<', '<lt>', 'g')\n          let expr = substitute(rhs, '\\(.*\\)\".\\{-}\"\\(.*\\)', '\\1%s\\2', '')\n          let rhs = printf(expr, args)\n        endif\n        exec printf(\"imap <silent> %s %s\", key, rhs)\n      endif\n    endfor\n    unlet b:captured\n\n    if mode() == 'i' && &completeopt =~ 'menu' && b:capturing_start != col('.')\n      \" force full exit from completion mode (don't exit insert mode since\n      \" that will break repeating with '.')\n      call feedkeys(\"\\<space>\\<bs>\", 'n')\n    endif\n    unlet b:capturing_start\n  endif\nendfunction \" }}}\n\nfunction! s:CommandLineCompletion() \" {{{\n  \" Hack needed to account for apparent bug in vim command line mode completion\n  \" when invoked via <c-r>=\n\n  \" This hack will trigger InsertLeave which will then invoke\n  \" s:SetDefaultCompletionType.  To prevent default completion from being\n  \" restored prematurely, set an internal flag for s:SetDefaultCompletionType\n  \" to check for.\n  let b:complCommandLine = 1\n  return \"\\<c-\\>\\<c-o>:call feedkeys('\\<c-x>\\<c-v>\\<c-v>', 'n') | \" .\n    \\ \"let b:complCommandLine = 0\\<cr>\"\nendfunction \" }}}\n\nfunction! s:ContextCompletion() \" {{{\n  let contexts = exists('b:SuperTabCompletionContexts') ?\n    \\ b:SuperTabCompletionContexts : g:SuperTabCompletionContexts\n\n  for context in contexts\n    try\n      let Context = function(context)\n      let complType = Context()\n      unlet Context\n      if type(complType) == 1 && complType != ''\n        return complType\n      endif\n    catch /E700/\n      echohl Error\n      echom 'supertab: no context function \"' . context . '\" found.'\n      echohl None\n    endtry\n  endfor\n  return ''\nendfunction \" }}}\n\nfunction! s:ContextDiscover() \" {{{\n  let discovery = exists('g:SuperTabContextDiscoverDiscovery') ?\n    \\ g:SuperTabContextDiscoverDiscovery : []\n\n  \" loop through discovery list to find the default\n  if !empty(discovery)\n    for pair in discovery\n      let var = substitute(pair, '\\(.*\\):.*', '\\1', '')\n      let type = substitute(pair, '.*:\\(.*\\)', '\\1', '')\n      exec 'let value = ' . var\n      if value !~ '^\\s*$' && value != '0'\n        exec \"let complType = \\\"\" . escape(type, '<') . \"\\\"\"\n        return complType\n      endif\n    endfor\n  endif\nendfunction \" }}}\n\nfunction! s:ContextText() \" {{{\n  let exclusions = exists('g:SuperTabContextTextFileTypeExclusions') ?\n    \\ g:SuperTabContextTextFileTypeExclusions : []\n\n  if index(exclusions, &ft) == -1\n    let curline = getline('.')\n    let cnum = col('.')\n    let synname = synIDattr(synID(line('.'), cnum - 1, 1), 'name')\n    if curline =~ '.*/\\w*\\%' . cnum . 'c' ||\n      \\ ((has('win32') || has('win64')) && curline =~ '.*\\\\\\w*\\%' . cnum . 'c')\n      return \"\\<c-x>\\<c-f>\"\n\n    elseif curline =~ '.*\\(\\w\\|[\\])]\\)\\(\\.\\|>\\?::\\|->\\)\\w*\\%' . cnum . 'c' &&\n      \\ synname !~ '\\(String\\|Comment\\)'\n      let omniPrecedence = exists('g:SuperTabContextTextOmniPrecedence') ?\n        \\ g:SuperTabContextTextOmniPrecedence : ['&completefunc', '&omnifunc']\n\n      for omniFunc in omniPrecedence\n        if omniFunc !~ '^&'\n          let omniFunc = '&' . omniFunc\n        endif\n        if getbufvar(bufnr('%'), omniFunc) != ''\n          return omniFunc == '&omnifunc' ? \"\\<c-x>\\<c-o>\" : \"\\<c-x>\\<c-u>\"\n        endif\n      endfor\n    endif\n  endif\nendfunction \" }}}\n\nfunction! s:ExpandMap(map) \" {{{\n  let map = a:map\n  if map =~ '<Plug>'\n    let plug = substitute(map, '.\\{-}\\(<Plug>\\w\\+\\).*', '\\1', '')\n    let plug_map = maparg(plug, 'i')\n    let map = substitute(map, '.\\{-}\\(<Plug>\\w\\+\\).*', plug_map, '')\n  endif\n  return map\nendfunction \" }}}\n\nfunction! SuperTabChain(completefunc, completekeys) \" {{{\n  if a:completefunc != 'SuperTabCodeComplete'\n    let b:SuperTabChain = [a:completefunc, a:completekeys]\n    setlocal completefunc=SuperTabCodeComplete\n  endif\nendfunction \" }}}\n\nfunction! SuperTabCodeComplete(findstart, base) \" {{{\n  if !exists('b:SuperTabChain')\n    echoe 'No completion chain has been set.'\n    return -2\n  endif\n\n  if len(b:SuperTabChain) != 2\n    echoe 'Completion chain can only be used with 1 completion function ' .\n        \\ 'and 1 fallback completion key binding.'\n    return -2\n  endif\n\n  let Func = function(b:SuperTabChain[0])\n\n  if a:findstart\n    let start = Func(a:findstart, a:base)\n    if start >= 0\n      return start\n    endif\n\n    return col('.') - 1\n  endif\n\n  let results = Func(a:findstart, a:base)\n  if len(results)\n    return results\n  endif\n\n  exec 'let keys = \"' . escape(b:SuperTabChain[1], '<') . '\"'\n  call feedkeys(\"\\<c-e>\" . keys, 'nt')\n  return []\nendfunction \" }}}\n\n\" Autocmds {{{\n  if g:SuperTabClosePreviewOnPopupClose\n    augroup supertab_close_preview\n      autocmd!\n      autocmd InsertLeave,CursorMovedI * call s:ClosePreview()\n    augroup END\n  endif\n\" }}}\n\n\" Key Mappings {{{\n  \" map a regular tab to ctrl-tab (note: doesn't work in console vim)\n  exec 'inoremap ' . g:SuperTabMappingTabLiteral . ' <tab>'\n\n  imap <silent> <c-x> <c-r>=<SID>ManualCompletionEnter()<cr>\n\n  imap <script> <Plug>SuperTabForward <c-r>=SuperTab('n')<cr>\n  imap <script> <Plug>SuperTabBackward <c-r>=SuperTab('p')<cr>\n\n  \" support delegating to smart tabs plugin\n  if g:SuperTabMappingForward ==? '<tab>' || g:SuperTabMappingBackward ==? '<tab>'\n    let existing = maparg('<tab>', 'i')\n    if existing =~ '\\d\\+_InsertSmartTab()$'\n      let s:Tab = function(substitute(existing, '()$', '', ''))\n    endif\n  endif\n\n  exec 'imap ' . g:SuperTabMappingForward . ' <Plug>SuperTabForward'\n  exec 'imap ' . g:SuperTabMappingBackward . ' <Plug>SuperTabBackward'\n\n  if g:SuperTabCrMapping\n    let expr_map = 0\n    if v:version > 703 || (v:version == 703 && has('patch32'))\n      let map_dict = maparg('<cr>', 'i', 0, 1)\n      let expr_map = has_key(map_dict, 'expr') && map_dict.expr\n    else\n      let expr_map = maparg('<cr>', 'i') =~? '\\<cr>'\n    endif\n\n    redir => iabbrevs\n    silent iabbrev\n    redir END\n    let iabbrev_map = iabbrevs =~? '\\<cr>'\n\n    if expr_map\n      \" Not compatible w/ expr mappings. This is most likely a user mapping,\n      \" typically with the same functionality anyways.\n    elseif iabbrev_map\n      \" Not compatible w/ insert abbreviations containing <cr>\n    elseif maparg('<CR>', 'i') =~ '<Plug>delimitMateCR'\n      \" Not compatible w/ delimitMate since it doesn't play well with others\n      \" and will always return a <cr> which we don't want when selecting a\n      \" completion.\n    elseif maparg('<CR>','i') =~ '<CR>'\n      let map = maparg('<cr>', 'i')\n      let cr = (map =~? '\\(^\\|[^)]\\)<cr>')\n      let map = s:ExpandMap(map)\n      exec \"inoremap <script> <cr> <c-r>=<SID>SelectCompletion(\" . cr . \")<cr>\" . map\n    else\n      inoremap <silent> <cr> <c-r>=<SID>SelectCompletion(1)<cr>\n    endif\n    function! s:SelectCompletion(cr)\n      \" selecting a completion\n      if pumvisible()\n        \" ugly hack to let other <cr> mappings for other plugins cooperate\n        \" with supertab\n        let b:supertab_pumwasvisible = 1\n\n        \" close the preview window if configured to do so\n        if &completeopt =~ 'preview' && g:SuperTabClosePreviewOnPopupClose\n          if !exists('b:supertab_close_preview')\n            let b:supertab_close_preview = !s:IsPreviewOpen()\n          endif\n          call s:ClosePreview()\n        endif\n\n        return \"\\<c-y>\"\n      endif\n\n      \" only needed when chained with other mappings and one of them will\n      \" issue a <cr>.\n      if exists('b:supertab_pumwasvisible') && !a:cr\n        unlet b:supertab_pumwasvisible\n        return ''\n      endif\n\n      \" not so pleasant hack to keep <cr> working for abbreviations\n      let word = substitute(getline('.'), '^.*\\s\\+\\(.*\\%' . col('.') . 'c\\).*', '\\1', '')\n      let result = maparg(word, 'i', 1)\n      if result != ''\n        let bs = \"\"\n        let i = 0\n        while i < len(word)\n          let bs .= \"\\<bs>\"\n          let i += 1\n        endwhile\n        \" escape keys\n        let result = substitute(result, '\\(<[a-zA-Z][-a-zA-Z]*>\\)', '\\\\\\1', 'g')\n        \" ensure escaped keys are properly recognized\n        exec 'let result = \"' . escape(result, '\"') . '\"'\n        return bs . result . (a:cr ? \"\\<cr>\" : \"\")\n      endif\n\n      \" only return a cr if nothing else is mapped to it since we don't want\n      \" to duplicate a cr returned by another mapping.\n      return a:cr ? \"\\<cr>\" : \"\"\n    endfunction\n  endif\n\" }}}\n\n\" Command Mappings {{{\n  if !exists(\":SuperTabHelp\")\n    command SuperTabHelp :call <SID>SuperTabHelp()\n  endif\n\" }}}\n\ncall s:Init()\n\nfunction! TestSuperTabCodeComplete(findstart, base) \" {{{\n  \" Test supertab completion chaining w/ a minimal vim environment:\n  \" $ vim -u NONE -U NONE \\\n  \"   --cmd \"set nocp | sy on\" \\\n  \"   -c \"so ~/.vim/plugin/supertab.vim\" \\\n  \"   -c \"let g:SuperTabDefaultCompletionType = '<c-x><c-u>'\" \\\n  \"   -c \"set completefunc=TestSuperTabCodeComplete\" \\\n  \"   -c \"call SuperTabChain(&completefunc, '<c-p>')\"\n  if a:findstart\n    let line = getline('.')\n    let start = col('.') - 1\n    if line[start] =~ '\\.'\n      let start -= 1\n    endif\n    while start > 0 && line[start - 1] =~ '\\w'\n      let start -= 1\n    endwhile\n    return start\n  else\n    let completions = []\n    if getline('.') =~ 'TestC'\n      call add(completions, {\n          \\ 'word': 'test1(',\n          \\ 'kind': 'm',\n          \\ 'menu': 'test1(...)',\n        \\ })\n      call add(completions, {\n          \\ 'word': 'testing2(',\n          \\ 'kind': 'm',\n          \\ 'menu': 'testing2(...)',\n        \\ })\n    endif\n\n    return completions\n  endif\nendfunction \" }}}\n\nlet &cpo = s:save_cpo\n\n\" vim:ft=vim:fdm=marker\n"
  },
  {
    "path": ".vim/bundle/syntastic/CONTRIBUTING.md",
    "content": "# Bug reports / Github issues\n\nWhen reporting a bug make sure you search the existing github issues for the\nsame/similar issues. If you find one, feel free to add a `+1` comment with any\nadditional information that may help us solve the issue.\n\nWhen creating a new issue be sure to state the following:\n\n* Steps to reproduce the bug.\n* The version of vim you are using.\n* The version of syntastic you are using.\n\nFor syntax checker bugs also state the version of the checker executable that you are using.\n\n# Submitting a patch\n\n* Fork the repo on github\n* Make a [topic branch](https://github.com/dchelimsky/rspec/wiki/Topic-Branches#using-topic-branches-when-contributing-patches) and start hacking\n* Submit a pull request based off your topic branch\n\nSmall focused patches are preferred.\n\nLarge changes to the code should be discussed with the core team first. Create an issue and explain your plan and see what we say.\n\n# General style notes\n\nFollowing the coding conventions/styles used in the syntastic core:\n\n* Use 4 space indents.\n* Don't use abbreviated keywords - e.g. use `endfunction`, not `endfun` (there's always room for more fun!).\n* Don't use `l:` prefixes for variables unless actually required (i.e. almost never).\n* Code for maintainability. We would rather a function be a couple of lines longer and have (for example) some [explaining variables](http://www.refactoring.com/catalog/introduceExplainingVariable.html) to aid readability.\n\n# Syntax checker style notes\n\nThe preferred style for error format strings is one \"clause\" per line. E.g.\n(from the coffeelint checker):\n\n```viml\nlet errorformat = '%E%f:%l:%c: %trror: %m,' .\n            \\ 'Syntax%trror: In %f\\, %m on line %l,' .\n            \\ '%EError: In %f\\, Parse error on line %l: %m,' .\n            \\ '%EError: In %f\\, %m on line %l,' .\n            \\ '%W%f(%l): lint warning: %m,' .\n            \\ '%W%f(%l): warning: %m,' .\n            \\ '%E%f(%l): SyntaxError: %m,' .\n            \\ '%-Z%p^,' .\n            \\ '%-G%.%#'\n```\n"
  },
  {
    "path": ".vim/bundle/syntastic/LICENCE",
    "content": "           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n                   Version 2, December 2004\n\nCopyright (C) 2004 Sam Hocevar <sam@hocevar.net>\n\nEveryone is permitted to copy and distribute verbatim or modified\ncopies of this license document, and changing it is allowed as long\nas the name is changed.\n\n           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n 0. You just DO WHAT THE FUCK YOU WANT TO.\n"
  },
  {
    "path": ".vim/bundle/syntastic/README.markdown",
    "content": "                   ,\n                  / \\,,_  .'|\n               ,{{| /}}}}/_.'            _____________________________________________\n              }}}}` '{{'  '.            /                                             \\\n            {{{{{    _   ;, \\          /            Ladies and Gentlemen,              \\\n         ,}}}}}}    /o`\\  ` ;)        |                                                |\n        {{{{{{   /           (        |                 this is ...                    |\n        }}}}}}   |            \\       |                                                |\n       {{{{{{{{   \\            \\      |                                                |\n       }}}}}}}}}   '.__      _  |     |    _____             __             __  _      |\n       {{{{{{{{       /`._  (_\\ /     |   / ___/__  ______  / /_____ ______/ /_(_)____ |\n        }}}}}}'      |    //___/   --=:   \\__ \\/ / / / __ \\/ __/ __ `/ ___/ __/ / ___/ |\n    jgs `{{{{`       |     '--'       |  ___/ / /_/ / / / / /_/ /_/ (__  ) /_/ / /__   |\n         }}}`                         | /____/\\__, /_/ /_/\\__/\\__,_/____/\\__/_/\\___/   |\n                                      |      /____/                                    |\n                                      |                                               /\n                                       \\_____________________________________________/\n\n\n- - -\n1\\. [Introduction](#introduction)  \n2\\. [Installation](#installation)  \n3\\. [FAQ](#faq)  \n4\\. [Other resources](#otherresources)  \n- - -\n\n<a name=\"introduction\"></a>\n\n## 1\\. Introduction\n\nSyntastic is a syntax checking plugin for Vim that runs files through external\nsyntax checkers and displays any resulting errors to the user. This can be done\non demand, or automatically as files are saved. If syntax errors are detected,\nthe user is notified and is happy because they didn't have to compile their\ncode or execute their script to find them.\n\nAt the time of this writing, syntax checking plugins exist for ActionScript,\nAda, AppleScript, AsciiDoc, ASM, BEMHTML, Bourne shell, C, C++, C#, Chef,\nCoffeeScript, Coco, Coq, CSS, Cucumber, CUDA, D, Dart, DocBook, Dust, Elixir,\nErlang, eRuby, Fortran, Gentoo metadata, GLSL, Go, Haml, Haskell, Haxe,\nHandlebars, HSS, HTML, Java, JavaScript, JSON, JSX, LESS, Lex, Limbo, LISP,\nLLVM intermediate language, Lua, MATLAB, NASM, Objective-C, Objective-C++,\nOCaml, Perl, Perl POD, PHP, gettext Portable Object, Puppet, Python, Racket,\nreStructuredText, Ruby, Rust, SASS/SCSS, Scala, Slim, Tcl, TeX, Texinfo, Twig,\nTypeScript, Vala, Verilog, VHDL, VimL, xHtml, XML, XSLT, YACC, YAML, z80, Zope\npage templates, zsh.\n\nBelow is a screenshot showing the methods that Syntastic uses to display syntax\nerrors.  Note that, in practise, you will only have a subset of these methods\nenabled.\n\n![Screenshot 1][0]\n\n1. Errors are loaded into the location list for the corresponding window.\n2. When the cursor is on a line containing an error, the error message is echoed in the command window.\n3. Signs are placed beside lines with errors - note that warnings are displayed in a different color.\n4. There is a configurable statusline flag you can include in your statusline config.\n5. Hover the mouse over a line containing an error and the error message is displayed as a balloon.\n6. (not shown) Highlighting errors with syntax highlighting. Erroneous parts of lines can be highlighted.\n\n<a name=\"installation\"></a>\n\n## 2\\. Installation\n\nInstalling syntastic is easy but first you need to have the pathogen plugin installed.  If you already\nhave pathogen working then skip Step 1 and go to Step 2.\n\n<a name=\"step1\"></a>\n\n### 2.1\\. Step 1: Install pathogen.vim\n\nFirst I'll show you how to install tpope's [pathogen.vim][1] so that it's\neasy to install syntastic.  Do this in your Terminal so that you get the\npathogen.vim file and the directories it needs:\n\n    mkdir -p ~/.vim/autoload ~/.vim/bundle; \\\n    curl -so ~/.vim/autoload/pathogen.vim \\\n        https://raw.github.com/tpope/vim-pathogen/master/autoload/pathogen.vim\n\nNext you *need to add this* to your ~/.vimrc:\n\n        execute pathogen#infect()\n\n<a name=\"step2\"></a>\n\n### 2.2\\. Step 2: Install syntastic as a pathogen bundle\n\nYou now have pathogen installed and can put syntastic into ~/.vim/bundle like this:\n    \n\n    cd ~/.vim/bundle\n    git clone https://github.com/scrooloose/syntastic.git\n\nQuit vim and start it back up to reload it, then type:\n\n    :Helptags\n\nIf you get an error when you do this, then you probably didn't install pathogen right.  Go back to\nstep 1 and make sure you did the following:\n\n1. Created both the ~/.vim/autoload and ~/.vim/bundle directories.\n2. Added the \"call pathogen#infect()\" line to your ~/.vimrc file\n3. Did the git clone of syntastic inside ~/.vim/bundle\n4. Have permissions to access all of these directories.\n\n\n<a name=\"faq\"></a>\n\n## 3\\. FAQ\n\n__Q. I installed syntastic but it isn't reporting any errors...__\n\nA. The most likely reason is that none of the syntax checkers that it requires\nis installed. For example: python requires either `flake8`, `pyflakes`\nor `pylint` to be installed and in `$PATH`. To see which executables are\nsupported, just look in `syntax_checkers/<filetype>/*.vim`. Note that aliases\ndo not work; the actual executable must be available in your `$PATH`. Symbolic\nlinks are okay.  You can see syntastic's idea of available checkers by running\n`:SyntasticInfo`.\n\nAnother reason it could fail is that either the command line options or the\nerror output for a syntax checker may have changed. In this case, make sure you\nhave the latest version of the syntax checker installed. If it still fails then\ncreate an issue - or better yet, create a pull request.\n\n__Q. Recently some of my syntax checker options have stopped working...__\n\nA. The options are still there, they have just been renamed. Recently,\nalmost all syntax checkers were refactored to use the new `makeprgBuild()`\nfunction. This made a lot of the old explicit options redundant - as they are\nnow implied. The new implied options usually have slightly different names to\nthe old options.\n\ne.g. Previously there was `g:syntastic_phpcs_conf`, now you must use\n`g:syntastic_php_phpcs_args`. This completely overrides the arguments of\nthe checker, including any defaults, so you may need to look up the default\narguments of the checker and add these in.\n\nSee `:help syntastic-checker-options` for more information.\n\n__Q. I run a checker and the location list is not updated...__\n\nA. By default, the location list is changed only when you run the `:Errors`\ncommand, in order to minimise conflicts with other plugins.  If you want the\nlocation list to always be updated when you run the checkers, add this line to\nyour vimrc:\n```vim\nlet g:syntastic_always_populate_loc_list=1\n```\n\n__Q. How can I pass additional arguments to a checker?__\n\nA. Almost all syntax checkers use the `makeprgBuild()` function. Those checkers\nthat do can be configured using global variables. The general form of the\nglobal args variables are:\n```vim\nsyntastic_<filetype>_<subchecker>_args\n```\n\nSo, If you wanted to pass \"--my --args --here\" to the ruby mri checker you\nwould add this line to your vimrc:\n```vim\nlet g:syntastic_ruby_mri_args=\"--my --args --here\"\n```\n\nSee `:help syntastic-checker-options` for more information.\n\n__Q. Syntastic supports several checkers for my filetype - how do I tell it\nwhich one(s) to use?__\n\nA. Stick a line like this in your vimrc:\n```vim\nlet g:syntastic_<filetype>_checkers=['<checker-name>']\n```\n\nTo see the list of checkers for your filetype, look in\n`syntax_checkers/<filetype>/`.\n\ne.g. Python has the following checkers: `flake8`, `pyflakes`, `pylint` and a\nnative `python` checker.\n\nTo tell syntastic to use `pylint`, you would use this setting:\n```vim\nlet g:syntastic_python_checkers=['pylint']\n```\n\nSome filetypes, like PHP, have style checkers as well as syntax checkers. These\ncan be chained together like this:\n```vim\nlet g:syntastic_php_checkers=['php', 'phpcs', 'phpmd']\n```\n\nThis is telling syntastic to run the `php` checker first, and if no errors are\nfound, run `phpcs`, and then `phpmd`.\n\n__Q. How can I jump between the different errors without using the location\nlist at the bottom of the window?__\n\nA. Vim provides several built in commands for this. See `:help :lnext` and\n`:help :lprev`.\n\nIf you use these commands a lot then you may want to add shortcut mappings to\nyour vimrc, or install something like [unimpaired][2], which provides such\nmappings (among other things).\n\n__Q. A syntax checker is giving me unwanted/strange style tips?__\n\nA. Some filetypes (e.g. php) have style checkers as well as syntax\ncheckers. You can usually configure the options that are passed to the style\ncheckers, or just disable them. Take a look at the [wiki][3] to see what\noptions are available.\n\n__Q. The error window is closed automatically when I :quit the current buffer\nbut not when I :bdelete it?__\n\nA. There is no safe way to handle that situation automatically, but you can\nwork around it:\n\n```vim\nnnoremap <silent> <C-d> :lclose<CR>:bdelete<CR>\ncabbrev <silent> bd lclose\\|bdelete\n```\n\n\n<a name=\"otherresources\"></a>\n\n## 4\\. Other resources\n\nThe preferred place for posting suggestions, reporting bugs, and general\ndiscussions related to syntastic is the [issue tracker at GitHub][4].  There\nare also a [google group][5], and a [syntastic tag at StackOverflow][6].\n\nSyntastic aims to provide a common interface to syntax checkers for as many\nlanguages as possible.  For particular languages, there are, of course, other\nplugins that provide more functionality than syntastic.  You might want to take\na look at [jedi-vim][7], [python-mode][8], or [YouCompleteMe][9].\n\n[0]: https://github.com/scrooloose/syntastic/raw/master/_assets/screenshot_1.png\n[1]: https://github.com/tpope/vim-pathogen\n[2]: https://github.com/tpope/vim-unimpaired\n[3]: https://github.com/scrooloose/syntastic/wiki/Syntax-Checkers\n[4]: https://github.com/scrooloose/syntastic/issues\n[5]: https://groups.google.com/group/vim-syntastic\n[6]: http://stackoverflow.com/questions/tagged/syntastic\n[7]: https://github.com/davidhalter/jedi-vim\n[8]: https://github.com/klen/python-mode\n[9]: https://github.com/Valloric/YouCompleteMe\n"
  },
  {
    "path": ".vim/bundle/syntastic/autoload/syntastic/c.vim",
    "content": "if exists(\"g:loaded_syntastic_c_autoload\") || !exists(\"g:loaded_syntastic_plugin\")\n    finish\nendif\nlet g:loaded_syntastic_c_autoload = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\n\" Public functions {{{1\n\n\" convenience function to determine the 'null device' parameter\n\" based on the current operating system\nfunction! syntastic#c#NullOutput() \" {{{2\n    let known_os = has('unix') || has('mac') || syntastic#util#isRunningWindows()\n    return known_os ? '-o ' . syntastic#util#DevNull() : ''\nendfunction \" }}}2\n\n\" read additional compiler flags from the given configuration file\n\" the file format and its parsing mechanism is inspired by clang_complete\nfunction! syntastic#c#ReadConfig(file) \" {{{2\n    \" search in the current file's directory upwards\n    let config = findfile(a:file, '.;')\n    if config == '' || !filereadable(config)\n        return ''\n    endif\n\n    \" convert filename into absolute path\n    let filepath = fnamemodify(config, ':p:h')\n\n    \" try to read config file\n    try\n        let lines = readfile(config)\n    catch /\\m^Vim\\%((\\a\\+)\\)\\=:E48[45]/\n        return ''\n    endtry\n\n    \" filter out empty lines and comments\n    call filter(lines, 'v:val !~ ''\\v^(\\s*#|$)''')\n\n    \" remove leading and trailing spaces\n    call map(lines, 'substitute(v:val, ''\\m^\\s\\+'', \"\", \"\")')\n    call map(lines, 'substitute(v:val, ''\\m\\s\\+$'', \"\", \"\")')\n\n    let parameters = []\n    for line in lines\n        let matches = matchstr(line, '\\m\\C^\\s*-I\\s*\\zs.\\+')\n        if matches != ''\n            \" this one looks like an absolute path\n            if match(matches, '\\m^\\%(/\\|\\a:\\)') != -1\n                call add(parameters, '-I' . matches)\n            else\n                call add(parameters, '-I' . filepath . syntastic#util#Slash() . matches)\n            endif\n        else\n            call add(parameters, line)\n        endif\n    endfor\n\n    return join(map(parameters, 'syntastic#util#shescape(v:val)'))\nendfunction \" }}}2\n\n\" GetLocList() for C-like compilers\nfunction! syntastic#c#GetLocList(filetype, subchecker, options) \" {{{2\n    try\n        let flags = s:getCflags(a:filetype, a:subchecker, a:options)\n    catch /\\m\\C^Syntastic: skip checks$/\n        return []\n    endtry\n\n    let makeprg = syntastic#util#shexpand(g:syntastic_{a:filetype}_compiler) .\n        \\ ' ' . flags . ' ' . syntastic#util#shexpand('%')\n\n    let errorformat = s:getCheckerVar('g', a:filetype, a:subchecker, 'errorformat', a:options['errorformat'])\n\n    let postprocess = s:getCheckerVar('g', a:filetype, a:subchecker, 'remove_include_errors', 0) ?\n        \\ ['filterForeignErrors'] : []\n\n    \" process makeprg\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'postprocess': postprocess })\nendfunction \" }}}2\n\n\" }}}1\n\n\" Private functions {{{1\n\n\" initialize c/cpp syntax checker handlers\nfunction! s:init() \" {{{2\n    let s:handlers = []\n    let s:cflags = {}\n\n    call s:regHandler('\\m\\<cairo',       'syntastic#c#checkPKG', ['cairo', 'cairo'])\n    call s:regHandler('\\m\\<freetype',    'syntastic#c#checkPKG', ['freetype', 'freetype2', 'freetype'])\n    call s:regHandler('\\m\\<glade',       'syntastic#c#checkPKG', ['glade', 'libglade-2.0', 'libglade'])\n    call s:regHandler('\\m\\<glib',        'syntastic#c#checkPKG', ['glib', 'glib-2.0', 'glib'])\n    call s:regHandler('\\m\\<gtk',         'syntastic#c#checkPKG', ['gtk', 'gtk+-2.0', 'gtk+', 'glib-2.0', 'glib'])\n    call s:regHandler('\\m\\<libsoup',     'syntastic#c#checkPKG', ['libsoup', 'libsoup-2.4', 'libsoup-2.2'])\n    call s:regHandler('\\m\\<libxml',      'syntastic#c#checkPKG', ['libxml', 'libxml-2.0', 'libxml'])\n    call s:regHandler('\\m\\<pango',       'syntastic#c#checkPKG', ['pango', 'pango'])\n    call s:regHandler('\\m\\<SDL',         'syntastic#c#checkPKG', ['sdl', 'sdl'])\n    call s:regHandler('\\m\\<opengl',      'syntastic#c#checkPKG', ['opengl', 'gl'])\n    call s:regHandler('\\m\\<webkit',      'syntastic#c#checkPKG', ['webkit', 'webkit-1.0'])\n\n    call s:regHandler('\\m\\<php\\.h\\>',    'syntastic#c#checkPHP',    [])\n    call s:regHandler('\\m\\<Python\\.h\\>', 'syntastic#c#checkPython', [])\n    call s:regHandler('\\m\\<ruby',        'syntastic#c#checkRuby',   [])\nendfunction \" }}}2\n\n\" return a handler dictionary object\nfunction! s:regHandler(regex, function, args) \" {{{2\n    let handler = {}\n    let handler[\"regex\"] = a:regex\n    let handler[\"func\"] = function(a:function)\n    let handler[\"args\"] = a:args\n    call add(s:handlers, handler)\nendfunction \" }}}2\n\n\" resolve checker-related user variables\nfunction! s:getCheckerVar(scope, filetype, subchecker, name, default) \" {{{2\n    let prefix = a:scope . ':' . 'syntastic_'\n    if exists(prefix . a:filetype . '_' . a:subchecker . '_' . a:name)\n        return {a:scope}:syntastic_{a:filetype}_{a:subchecker}_{a:name}\n    elseif exists(prefix . a:filetype . '_' . a:name)\n        return {a:scope}:syntastic_{a:filetype}_{a:name}\n    else\n        return a:default\n    endif\nendfunction \" }}}2\n\n\" resolve user CFLAGS\nfunction! s:getCflags(ft, ck, opts) \" {{{2\n    \" determine whether to parse header files as well\n    if has_key(a:opts, 'header_names') && expand('%') =~? a:opts['header_names']\n        if s:getCheckerVar('g', a:ft, a:ck, 'check_header', 0)\n            let flags = get(a:opts, 'header_flags', '') . ' -c ' . syntastic#c#NullOutput()\n        else\n            \" checking headers when check_header is unset: bail out\n            throw 'Syntastic: skip checks'\n        endif\n    else\n        let flags = get(a:opts, 'main_flags', '')\n    endif\n\n    let flags .= ' ' . s:getCheckerVar('g', a:ft, a:ck, 'compiler_options', '') . ' ' . s:getIncludeDirs(a:ft)\n\n    \" check if the user manually set some cflags\n    let b_cflags = s:getCheckerVar('b', a:ft, a:ck, 'cflags', '')\n    if b_cflags == ''\n        \" check whether to search for include files at all\n        if !s:getCheckerVar('g', a:ft, a:ck, 'no_include_search', 0)\n            if a:ft ==# 'c' || a:ft ==# 'cpp'\n                \" refresh the include file search if desired\n                if s:getCheckerVar('g', a:ft, a:ck, 'auto_refresh_includes', 0)\n                    let flags .= ' ' . s:searchHeaders()\n                else\n                    \" search for header includes if not cached already\n                    if !exists('b:syntastic_' . a:ft . '_includes')\n                        let b:syntastic_{a:ft}_includes = s:searchHeaders()\n                    endif\n                    let flags .= ' ' . b:syntastic_{a:ft}_includes\n                endif\n            endif\n        endif\n    else\n        \" user-defined cflags\n        let flags .= ' ' . b_cflags\n    endif\n\n    \" add optional config file parameters\n    let config_file = s:getCheckerVar('g', a:ft, a:ck, 'config_file', '.syntastic_' . a:ft . '_config')\n    let flags .= ' ' . syntastic#c#ReadConfig(config_file)\n\n    return flags\nendfunction \" }}}2\n\n\" get the gcc include directory argument depending on the default\n\" includes and the optional user-defined 'g:syntastic_c_include_dirs'\nfunction! s:getIncludeDirs(filetype) \" {{{2\n    let include_dirs = []\n\n    if a:filetype =~# '\\v^%(c|cpp|d|objc|objcpp)$' &&\n                \\ (!exists('g:syntastic_'.a:filetype.'_no_default_include_dirs') ||\n                \\ !g:syntastic_{a:filetype}_no_default_include_dirs)\n        let include_dirs = copy(s:default_includes)\n    endif\n\n    if exists('g:syntastic_'.a:filetype.'_include_dirs')\n        call extend(include_dirs, g:syntastic_{a:filetype}_include_dirs)\n    endif\n\n    return join(map(syntastic#util#unique(include_dirs), 'syntastic#util#shescape(\"-I\" . v:val)'))\nendfunction \" }}}2\n\n\" search the first 100 lines for include statements that are\n\" given in the handlers dictionary\nfunction! s:searchHeaders() \" {{{2\n    let includes = ''\n    let files = []\n    let found = []\n    let lines = filter(getline(1, 100), 'v:val =~# ''\\m^\\s*#\\s*include''')\n\n    \" search current buffer\n    for line in lines\n        let file = matchstr(line, '\\m\"\\zs\\S\\+\\ze\"')\n        if file != ''\n            call add(files, file)\n            continue\n        endif\n\n        for handler in s:handlers\n            if line =~# handler[\"regex\"]\n                let includes .= call(handler[\"func\"], handler[\"args\"])\n                call add(found, handler[\"regex\"])\n                break\n            endif\n        endfor\n    endfor\n\n    \" search included headers\n    for hfile in files\n        if hfile != ''\n            let filename = expand('%:p:h') . syntastic#util#Slash() . hfile\n\n            try\n                let lines = readfile(filename, '', 100)\n            catch /\\m^Vim\\%((\\a\\+)\\)\\=:E484/\n                continue\n            endtry\n\n            call filter(lines, 'v:val =~# ''\\m^\\s*#\\s*include''')\n\n            for handler in s:handlers\n                if index(found, handler[\"regex\"]) != -1\n                    continue\n                endif\n\n                for line in lines\n                    if line =~# handler[\"regex\"]\n                        let includes .= call(handler[\"func\"], handler[\"args\"])\n                        call add(found, handler[\"regex\"])\n                        break\n                    endif\n                endfor\n            endfor\n        endif\n    endfor\n\n    return includes\nendfunction \" }}}2\n\n\" try to find library with 'pkg-config'\n\" search possible libraries from first to last given\n\" argument until one is found\nfunction! syntastic#c#checkPKG(name, ...) \" {{{2\n    if executable('pkg-config')\n        if !has_key(s:cflags, a:name)\n            for pkg in a:000\n                let pkg_flags = system('pkg-config --cflags ' . pkg)\n                \" since we cannot necessarily trust the pkg-config exit code\n                \" we have to check for an error output as well\n                if v:shell_error == 0 && pkg_flags !~? 'not found'\n                    let pkg_flags = ' ' . substitute(pkg_flags, \"\\n\", '', '')\n                    let s:cflags[a:name] = pkg_flags\n                    return pkg_flags\n                endif\n            endfor\n        else\n            return s:cflags[a:name]\n        endif\n    endif\n    return ''\nendfunction \" }}}2\n\n\" try to find PHP includes with 'php-config'\nfunction! syntastic#c#checkPHP() \" {{{2\n    if executable('php-config')\n        if !has_key(s:cflags, 'php')\n            let s:cflags['php'] = system('php-config --includes')\n            let s:cflags['php'] = ' ' . substitute(s:cflags['php'], \"\\n\", '', '')\n        endif\n        return s:cflags['php']\n    endif\n    return ''\nendfunction \" }}}2\n\n\" try to find the ruby headers with 'rbconfig'\nfunction! syntastic#c#checkRuby() \" {{{2\n    if executable('ruby')\n        if !has_key(s:cflags, 'ruby')\n            let s:cflags['ruby'] = system('ruby -r rbconfig -e ' .\n                \\ '''puts RbConfig::CONFIG[\"rubyhdrdir\"] || RbConfig::CONFIG[\"archdir\"]''')\n            let s:cflags['ruby'] = substitute(s:cflags['ruby'], \"\\n\", '', '')\n            let s:cflags['ruby'] = ' -I' . s:cflags['ruby']\n        endif\n        return s:cflags['ruby']\n    endif\n    return ''\nendfunction \" }}}2\n\n\" try to find the python headers with distutils\nfunction! syntastic#c#checkPython() \" {{{2\n    if executable('python')\n        if !has_key(s:cflags, 'python')\n            let s:cflags['python'] = system('python -c ''from distutils import ' .\n                \\ 'sysconfig; import sys; sys.stdout.write(sysconfig.get_python_inc())''')\n            let s:cflags['python'] = substitute(s:cflags['python'], \"\\n\", '', '')\n            let s:cflags['python'] = ' -I' . s:cflags['python']\n        endif\n        return s:cflags['python']\n    endif\n    return ''\nendfunction \" }}}2\n\n\" }}}1\n\n\" default include directories\nlet s:default_includes = [\n    \\ '.',\n    \\ '..',\n    \\ 'include',\n    \\ 'includes',\n    \\ '..' . syntastic#util#Slash() . 'include',\n    \\ '..' . syntastic#util#Slash() . 'includes' ]\n\ncall s:init()\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/syntastic/autoload/syntastic/log.vim",
    "content": "if exists(\"g:loaded_syntastic_log_autoload\") || !exists(\"g:loaded_syntastic_plugin\")\n    finish\nendif\nlet g:loaded_syntastic_log_autoload = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nlet s:deprecation_notices_issued = []\n\n\" Public functions {{{1\n\nfunction! syntastic#log#info(msg) \" {{{2\n    echomsg \"syntastic: info: \" . a:msg\nendfunction \" }}}2\n\nfunction! syntastic#log#warn(msg) \" {{{2\n    echohl WarningMsg\n    echomsg \"syntastic: warning: \" . a:msg\n    echohl None\nendfunction \" }}}2\n\nfunction! syntastic#log#error(msg) \" {{{2\n    execute \"normal \\<Esc>\"\n    echohl ErrorMsg\n    echomsg \"syntastic: error: \" . a:msg\n    echohl None\nendfunction \" }}}2\n\nfunction! syntastic#log#deprecationWarn(msg) \" {{{2\n    if index(s:deprecation_notices_issued, a:msg) >= 0\n        return\n    endif\n\n    call add(s:deprecation_notices_issued, a:msg)\n    call syntastic#log#warn(a:msg)\nendfunction \" }}}2\n\nfunction! syntastic#log#debug(level, msg, ...) \" {{{2\n    if !s:isDebugEnabled(a:level)\n        return\n    endif\n\n    let leader = s:logTimestamp()\n    call s:logRedirect(1)\n\n    if a:0 > 0\n        \" filter out dictionary functions\n        echomsg leader . a:msg . ' ' .\n            \\ strtrans(string(type(a:1) == type({}) || type(a:1) == type([]) ?\n            \\ filter(copy(a:1), 'type(v:val) != type(function(\"tr\"))') : a:1))\n    else\n        echomsg leader . a:msg\n    endif\n\n    call s:logRedirect(0)\nendfunction \" }}}2\n\nfunction! syntastic#log#debugShowOptions(level, names) \" {{{2\n    if !s:isDebugEnabled(a:level)\n        return\n    endif\n\n    let leader = s:logTimestamp()\n    call s:logRedirect(1)\n\n    let vlist = copy(type(a:names) == type(\"\") ? [a:names] : a:names)\n    if !empty(vlist)\n        call map(vlist, \"'&' . v:val . ' = ' . strtrans(string(eval('&' . v:val)))\")\n        echomsg leader . join(vlist, ', ')\n    endif\n    call s:logRedirect(0)\nendfunction \" }}}2\n\nfunction! syntastic#log#debugShowVariables(level, names) \" {{{2\n    if !s:isDebugEnabled(a:level)\n        return\n    endif\n\n    let leader = s:logTimestamp()\n    call s:logRedirect(1)\n\n    let vlist = type(a:names) == type(\"\") ? [a:names] : a:names\n    for name in vlist\n        let msg = s:formatVariable(name)\n        if msg != ''\n            echomsg leader . msg\n        endif\n    endfor\n\n    call s:logRedirect(0)\nendfunction \" }}}2\n\nfunction! syntastic#log#debugDump(level) \" {{{2\n    if !s:isDebugEnabled(a:level)\n        return\n    endif\n\n    call syntastic#log#debugShowVariables( a:level, sort(keys(g:syntastic_defaults)) )\nendfunction \" }}}2\n\n\" }}}1\n\n\" Private functions {{{1\n\nfunction! s:isDebugEnabled_smart(level) \" {{{2\n    return and(g:syntastic_debug, a:level)\nendfunction \" }}}2\n\nfunction! s:isDebugEnabled_dumb(level) \" {{{2\n    \" poor man's bit test for bit N, assuming a:level == 2**N\n    return (g:syntastic_debug / a:level) % 2\nendfunction \" }}}2\n\nlet s:isDebugEnabled = function(exists('*and') ? 's:isDebugEnabled_smart' : 's:isDebugEnabled_dumb')\n\nfunction! s:logRedirect(on) \" {{{2\n    if exists(\"g:syntastic_debug_file\")\n        if a:on\n            try\n                execute 'redir >> ' . fnameescape(expand(g:syntastic_debug_file))\n            catch /\\m^Vim\\%((\\a\\+)\\)\\=:/\n                silent! redir END\n                unlet g:syntastic_debug_file\n            endtry\n        else\n            silent! redir END\n        endif\n    endif\nendfunction \" }}}2\n\nfunction! s:logTimestamp_smart() \" {{{2\n    return 'syntastic: ' . split(reltimestr(reltime(g:syntastic_start)))[0] . ': '\nendfunction \" }}}2\n\nfunction! s:logTimestamp_dumb() \" {{{2\n    return 'syntastic: debug: '\nendfunction \" }}}2\n\nlet s:logTimestamp = function(has('reltime') ? 's:logTimestamp_smart' : 's:logTimestamp_dumb')\n\nfunction! s:formatVariable(name) \" {{{2\n    let vals = []\n    if exists('g:syntastic_' . a:name)\n        call add(vals, 'g:syntastic_' . a:name . ' = ' . strtrans(string(g:syntastic_{a:name})))\n    endif\n    if exists('b:syntastic_' . a:name)\n        call add(vals, 'b:syntastic_' . a:name . ' = ' . strtrans(string(b:syntastic_{a:name})))\n    endif\n\n    return join(vals, ', ')\nendfunction \" }}}2\n\n\" }}}1\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/syntastic/autoload/syntastic/postprocess.vim",
    "content": "if exists(\"g:loaded_syntastic_postprocess_autoload\") || !exists(\"g:loaded_syntastic_plugin\")\n    finish\nendif\nlet g:loaded_syntastic_postprocess_autoload = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\n\" Public functions {{{1\n\nfunction! s:compareErrorItems(a, b) \" {{{2\n    if a:a['bufnr'] != a:b['bufnr']\n        \" group by files\n        return a:a['bufnr'] - a:b['bufnr']\n    elseif a:a['lnum'] != a:b['lnum']\n        return a:a['lnum'] - a:b['lnum']\n    elseif a:a['type'] !=? a:b['type']\n        \" errors take precedence over warnings\n        return a:a['type'] ==? 'e' ? -1 : 1\n    else\n        return get(a:a, 'col', 0) - get(a:b, 'col', 0)\n    endif\nendfunction \" }}}2\n\n\" natural sort\nfunction! syntastic#postprocess#sort(errors) \" {{{2\n    return sort(copy(a:errors), 's:compareErrorItems')\nendfunction \" }}}2\n\n\" merge consecutive blanks\nfunction! syntastic#postprocess#compressWhitespace(errors) \" {{{2\n    for e in a:errors\n        let e['text'] = substitute(e['text'], \"\\001\", '', 'g')\n        let e['text'] = substitute(e['text'], '\\n', ' ', 'g')\n        let e['text'] = substitute(e['text'], '\\m\\s\\{2,}', ' ', 'g')\n    endfor\n\n    return a:errors\nendfunction \" }}}2\n\n\" remove spurious CR under Cygwin\nfunction! syntastic#postprocess#cygwinRemoveCR(errors) \" {{{2\n    if has('win32unix')\n        for e in a:errors\n            let e['text'] = substitute(e['text'], '\\r', '', 'g')\n        endfor\n    endif\n\n    return a:errors\nendfunction \" }}}2\n\n\" decode XML entities\nfunction! syntastic#postprocess#decodeXMLEntities(errors) \" {{{2\n    for e in a:errors\n        let e['text'] = syntastic#util#decodeXMLEntities(e['text'])\n    endfor\n\n    return a:errors\nendfunction \" }}}2\n\n\" filter out errors referencing other files\nfunction! syntastic#postprocess#filterForeignErrors(errors) \" {{{2\n    return filter(copy(a:errors), 'get(v:val, \"bufnr\") == ' . bufnr(''))\nendfunction \" }}}2\n\n\" }}}1\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/syntastic/autoload/syntastic/preprocess.vim",
    "content": "if exists(\"g:loaded_syntastic_preprocess_autoload\") || !exists(\"g:loaded_syntastic_plugin\")\n    finish\nendif\nlet g:loaded_syntastic_preprocess_autoload = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\n\" Public functions {{{1\n\nfunction! syntastic#preprocess#checkstyle(errors) \" {{{2\n    let out = []\n    let fname = expand('%')\n    for err in a:errors\n        if match(err, '\\m<error\\>') > -1\n            let line = str2nr(matchstr(err, '\\m\\<line=\"\\zs\\d\\+\\ze\"'))\n            if line == 0\n                continue\n            endif\n\n            let col = str2nr(matchstr(err, '\\m\\<column=\"\\zs\\d\\+\\ze\"'))\n\n            let type = matchstr(err, '\\m\\<severity=\"\\zs.\\ze')\n            if type !~? '^[EW]'\n                let type = 'E'\n            endif\n\n            let message = syntastic#util#decodeXMLEntities(matchstr(err, '\\m\\<message=\"\\zs[^\"]\\+\\ze\"'))\n\n            call add(out, join([fname, type, line, col, message], ':'))\n        elseif match(err, '\\m<file name=\"') > -1\n            let fname = syntastic#util#decodeXMLEntities(matchstr(err, '\\v\\<file name\\=\"\\zs[^\"]+\\ze\"'))\n        endif\n    endfor\n    return out\nendfunction \" }}}2\n\nfunction! syntastic#preprocess#cppcheck(errors) \" {{{2\n    return map(copy(a:errors), 'substitute(v:val, ''\\v^\\[[^]]+\\]\\zs( -\\> \\[[^]]+\\])+\\ze:'', \"\", \"\")')\nendfunction \" }}}2\n\nfunction! syntastic#preprocess#killEmpty(errors) \" {{{2\n    return filter(copy(a:errors), 'v:val != \"\"')\nendfunction \" }}}2\n\nfunction! syntastic#preprocess#perl(errors) \" {{{2\n    let out = []\n\n    for e in a:errors\n        let parts = matchlist(e, '\\v^(.*)\\sat\\s(.*)\\sline\\s(\\d+)(.*)$')\n        if !empty(parts)\n            call add(out, parts[2] . ':' . parts[3] . ':' . parts[1] . parts[4])\n        endif\n    endfor\n\n    return syntastic#util#unique(out)\nendfunction \" }}}2\n\nfunction! syntastic#preprocess#validator(errors) \" {{{2\n    let out = []\n    for e in a:errors\n        let parts = matchlist(e, '\\v^\"([^\"]+)\"(.+)')\n        if len(parts) >= 3\n            \" URL decode, except leave alone any \"+\"\n            let parts[1] = substitute(parts[1], '\\m%\\(\\x\\x\\)', '\\=nr2char(\"0x\".submatch(1))', 'g')\n            let parts[1] = substitute(parts[1], '\\m\\\\\"', '\"', 'g')\n            let parts[1] = substitute(parts[1], '\\m\\\\\\\\', '\\\\', 'g')\n            call add(out, '\"' . parts[1] . '\"' . parts[2])\n        endif\n    endfor\n    return out\nendfunction \" }}}2\n\n\" }}}1\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/syntastic/autoload/syntastic/util.vim",
    "content": "if exists('g:loaded_syntastic_util_autoload') || !exists(\"g:loaded_syntastic_plugin\")\n    finish\nendif\nlet g:loaded_syntastic_util_autoload = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\n\" Public functions {{{1\n\nfunction! syntastic#util#isRunningWindows() \" {{{2\n    return has('win16') || has('win32') || has('win64')\nendfunction \" }}}2\n\nfunction! syntastic#util#DevNull() \" {{{2\n    if syntastic#util#isRunningWindows()\n        return 'NUL'\n    endif\n    return '/dev/null'\nendfunction \" }}}2\n\n\" Get directory separator\nfunction! syntastic#util#Slash() abort \" {{{2\n    return (!exists(\"+shellslash\") || &shellslash) ? '/' : '\\'\nendfunction \" }}}2\n\n\"search the first 5 lines of the file for a magic number and return a map\n\"containing the args and the executable\n\"\n\"e.g.\n\"\n\"#!/usr/bin/perl -f -bar\n\"\n\"returns\n\"\n\"{'exe': '/usr/bin/perl', 'args': ['-f', '-bar']}\nfunction! syntastic#util#parseShebang() \" {{{2\n    for lnum in range(1,5)\n        let line = getline(lnum)\n\n        if line =~ '^#!'\n            let exe = matchstr(line, '\\m^#!\\s*\\zs[^ \\t]*')\n            let args = split(matchstr(line, '\\m^#!\\s*[^ \\t]*\\zs.*'))\n            return { 'exe': exe, 'args': args }\n        endif\n    endfor\n\n    return { 'exe': '', 'args': [] }\nendfunction \" }}}2\n\n\" Get the value of a variable.  Allow local variables to override global ones.\nfunction! syntastic#util#var(name, ...) \" {{{2\n    return\n        \\ exists('b:syntastic_' . a:name) ? b:syntastic_{a:name} :\n        \\ exists('g:syntastic_' . a:name) ? g:syntastic_{a:name} :\n        \\ a:0 > 0 ? a:1 : ''\nendfunction \" }}}2\n\n\" Parse a version string.  Return an array of version components.\nfunction! syntastic#util#parseVersion(version) \" {{{2\n    return split(matchstr( a:version, '\\v^\\D*\\zs\\d+(\\.\\d+)+\\ze' ), '\\m\\.')\nendfunction \" }}}2\n\n\" Run 'command' in a shell and parse output as a version string.\n\" Returns an array of version components.\nfunction! syntastic#util#getVersion(command) \" {{{2\n    return syntastic#util#parseVersion(system(a:command))\nendfunction \" }}}2\n\n\" Verify that the 'installed' version is at least the 'required' version.\n\"\n\" 'installed' and 'required' must be arrays. If they have different lengths,\n\" the \"missing\" elements will be assumed to be 0 for the purposes of checking.\n\"\n\" See http://semver.org for info about version numbers.\nfunction! syntastic#util#versionIsAtLeast(installed, required) \" {{{2\n    for idx in range(max([len(a:installed), len(a:required)]))\n        let installed_element = get(a:installed, idx, 0)\n        let required_element = get(a:required, idx, 0)\n        if installed_element != required_element\n            return installed_element > required_element\n        endif\n    endfor\n    \" Everything matched, so it is at least the required version.\n    return 1\nendfunction \" }}}2\n\n\" strwidth() was added in Vim 7.3; if it doesn't exist, we use strlen()\n\" and hope for the best :)\nlet s:width = function(exists('*strwidth') ? 'strwidth' : 'strlen')\n\n\"print as much of a:msg as possible without \"Press Enter\" prompt appearing\nfunction! syntastic#util#wideMsg(msg) \" {{{2\n    let old_ruler = &ruler\n    let old_showcmd = &showcmd\n\n    \"This is here because it is possible for some error messages to\n    \"begin with \\n which will cause a \"press enter\" prompt.\n    let msg = substitute(a:msg, \"\\n\", \"\", \"g\")\n\n    \"convert tabs to spaces so that the tabs count towards the window\n    \"width as the proper amount of characters\n    let chunks = split(msg, \"\\t\", 1)\n    let msg = join(map(chunks[:-2], 'v:val . repeat(\" \", &ts - s:width(v:val) % &ts)'), '') . chunks[-1]\n    let msg = strpart(msg, 0, &columns - 1)\n\n    set noruler noshowcmd\n    call syntastic#util#redraw(0)\n\n    echo msg\n\n    let &ruler = old_ruler\n    let &showcmd = old_showcmd\nendfunction \" }}}2\n\n\" Check whether a buffer is loaded, listed, and not hidden\nfunction! syntastic#util#bufIsActive(buffer) \" {{{2\n    \" convert to number, or hell breaks loose\n    let buf = str2nr(a:buffer)\n\n    if !bufloaded(buf) || !buflisted(buf)\n        return 0\n    endif\n\n    \" get rid of hidden buffers\n    for tab in range(1, tabpagenr('$'))\n        if index(tabpagebuflist(tab), buf) >= 0\n            return 1\n        endif\n    endfor\n\n    return 0\nendfunction \" }}}2\n\n\" start in directory a:where and walk up the parent folders until it\n\" finds a file matching a:what; return path to that file\nfunction! syntastic#util#findInParent(what, where) \" {{{2\n    let here = fnamemodify(a:where, ':p')\n\n    let root = syntastic#util#Slash()\n    if syntastic#util#isRunningWindows() && here[1] == ':'\n        \" The drive letter is an ever-green source of fun.  That's because\n        \" we don't care about running syntastic on Amiga these days. ;)\n        let root = fnamemodify(root, ':p')\n        let root = here[0] . root[1:]\n    endif\n\n    let old = ''\n    while here != ''\n        let p = split(globpath(here, a:what), '\\n')\n\n        if !empty(p)\n            return fnamemodify(p[0], ':p')\n        elseif here ==? root || here ==? old\n            break\n        endif\n\n        let old = here\n\n        \" we use ':h:h' rather than ':h' since ':p' adds a trailing '/'\n        \" if 'here' is a directory\n        let here = fnamemodify(here, ':p:h:h')\n    endwhile\n\n    return ''\nendfunction \" }}}2\n\n\" Returns unique elements in a list\nfunction! syntastic#util#unique(list) \" {{{2\n    let seen = {}\n    let uniques = []\n    for e in a:list\n        if !has_key(seen, e)\n            let seen[e] = 1\n            call add(uniques, e)\n        endif\n    endfor\n    return uniques\nendfunction \" }}}2\n\n\" A less noisy shellescape()\nfunction! syntastic#util#shescape(string) \" {{{2\n    return a:string =~ '\\m^[A-Za-z0-9_/.-]\\+$' ? a:string : shellescape(a:string)\nendfunction \" }}}2\n\n\" A less noisy shellescape(expand())\nfunction! syntastic#util#shexpand(string) \" {{{2\n    return syntastic#util#shescape(expand(a:string))\nendfunction \" }}}2\n\n\" decode XML entities\nfunction! syntastic#util#decodeXMLEntities(string) \" {{{2\n    let str = a:string\n    let str = substitute(str, '\\m&lt;', '<', 'g')\n    let str = substitute(str, '\\m&gt;', '>', 'g')\n    let str = substitute(str, '\\m&quot;', '\"', 'g')\n    let str = substitute(str, '\\m&apos;', \"'\", 'g')\n    let str = substitute(str, '\\m&amp;', '\\&', 'g')\n    return str\nendfunction \" }}}2\n\nfunction! syntastic#util#redraw(full) \" {{{2\n    if a:full\n        redraw!\n    else\n        redraw\n    endif\nendfunction \" }}}2\n\nfunction! syntastic#util#dictFilter(errors, filter) \" {{{2\n    let rules = s:translateFilter(a:filter)\n    \" call syntastic#log#debug(g:SyntasticDebugFilters, \"applying filter:\", rules)\n    try\n        call filter(a:errors, rules)\n    catch /\\m^Vim\\%((\\a\\+)\\)\\=:E/\n        let msg = matchstr(v:exception, '\\m^Vim\\%((\\a\\+)\\)\\=:\\zs.*')\n        call syntastic#log#error('quiet_messages: ' . msg)\n    endtry\nendfunction \" }}}2\n\n\" }}}1\n\n\" Private functions {{{1\n\nfunction! s:translateFilter(filters) \" {{{2\n    let conditions = []\n    for k in keys(a:filters)\n        if type(a:filters[k]) == type([])\n            call extend(conditions, map(copy(a:filters[k]), 's:translateElement(k, v:val)'))\n        else\n            call add(conditions, s:translateElement(k, a:filters[k]))\n        endif\n    endfor\n\n    if conditions == []\n        let conditions = [\"1\"]\n    endif\n    return len(conditions) == 1 ? conditions[0] : join(map(conditions, '\"(\" . v:val . \")\"'), ' && ')\nendfunction \" }}}2\n\nfunction! s:translateElement(key, term) \" {{{2\n    if a:key ==? 'level'\n        let ret = 'v:val[\"type\"] !=? ' . string(a:term[0])\n    elseif a:key ==? 'type'\n        let ret = a:term ==? 'style' ? 'get(v:val, \"subtype\", \"\") !=? \"style\"' : 'has_key(v:val, \"subtype\")'\n    elseif a:key ==? 'regex'\n        let ret = 'v:val[\"text\"] !~? ' . string(a:term)\n    elseif a:key ==? 'file'\n        let ret = 'bufname(str2nr(v:val[\"bufnr\"])) !~# ' . string(a:term)\n    else\n        call syntastic#log#warn('quiet_messages: ignoring invalid key ' . strtrans(string(a:key)))\n        let ret = \"1\"\n    endif\n    return ret\nendfunction \" }}}2\n\n\" }}}1\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/syntastic/doc/syntastic.txt",
    "content": "*syntastic.txt*   Syntax checking on the fly has never been so pimp.\n*syntastic*\n\n\n                    It's a bird! It's a plane! ZOMG It's ... ~\n\n                   _____             __             __  _      ~\n                  / ___/__  ______  / /_____ ______/ /_(_)____ ~\n                  \\__ \\/ / / / __ \\/ __/ __ `/ ___/ __/ / ___/ ~\n                 ___/ / /_/ / / / / /_/ /_/ (__  ) /_/ / /__   ~\n                /____/\\__, /_/ /_/\\__/\\__,_/____/\\__/_/\\___/   ~\n                     /____/                                    ~\n\n\n\n                              Reference Manual~\n\n\n==============================================================================\nCONTENTS                                                  *syntastic-contents*\n\n    1.Intro........................................|syntastic-intro|\n        1.1.Quick start............................|syntastic-quickstart|\n    2.Functionality provided.......................|syntastic-functionality|\n        2.1.The statusline flag....................|syntastic-statusline-flag|\n        2.2.Error signs............................|syntastic-error-signs|\n        2.3.Error window...........................|syntastic-error-window|\n        2.4.Error highlighting.....................|syntastic-highlighting|\n        2.5.Aggregating errors.....................|syntastic-aggregating-errors|\n        2.6.Filtering errors.......................|syntastic-filtering-errors|\n    3.Commands.....................................|syntastic-commands|\n    4.Global Options...............................|syntastic-global-options|\n    5.Checker Options..............................|syntastic-checker-options|\n        5.1.Choosing which checkers to use.........|syntastic-filetype-checkers|\n        5.2.Choosing the executable................|syntastic-config-exec|\n        5.3.Configuring specific checkers..........|syntastic-config-makeprg|\n    6.Notes........................................|syntastic-notes|\n        6.1.Handling of composite filetypes........|syntastic-composite|\n        6.2.Interaction with python-mode...........|syntastic-pymode|\n        6.3.Interaction with the fish shell........|syntastic-fish|\n        6.4.Using syntastic with the fizsh shell...|syntastic-fizsh|\n    7.About........................................|syntastic-about|\n    8.License......................................|syntastic-license|\n\n\n==============================================================================\n1. Intro                                                     *syntastic-intro*\n\nSyntastic is a syntax checking plugin that runs files through external syntax\ncheckers. This can be done on demand, or automatically as files are saved and\nopened.  If syntax errors are detected, the user is notified and is happy\nbecause they didn't have to compile their code or execute their script to find\nthem.\n\nSyntastic comes in two parts: the syntax checker plugins, and the core. The\nsyntax checker plugins are defined on a per-filetype basis where each one wraps\nup an external syntax checking program. The core script delegates off to these\nplugins and uses their output to provide the syntastic functionality.\n\nTake a look at the wiki for a list of supported filetypes and checkers:\n\n    https://github.com/scrooloose/syntastic/wiki/Syntax-Checkers\n\nNote: This doc only deals with using syntastic. To learn how to write syntax\nchecker integrations, see the guide on the github wiki:\n\n    https://github.com/scrooloose/syntastic/wiki/Syntax-Checker-Guide\n\n------------------------------------------------------------------------------\n1.1. Quick start                                        *syntastic-quickstart*\n\nSyntastic comes preconfigured with a default list of enabled checkers per\nfiletype. This list is kept reasonably short to prevent slowing down Vim or\ntrying to use conflicting checkers.\n\nYou can see the list checkers available for the current filetype with the\n|:SyntasticInfo| command.\n\nIf you want to override the configured list of checkers for a filetype then\nsee |syntastic-checker-options| for details. You can also change the arguments\npassed to a specific checker as well.\n\nUse |:SyntasticCheck| to manually check right now. Use |:SyntasticToggleMode|\nto switch between active (checking on writting the buffer) and passive (manual)\nchecking.\n\n==============================================================================\n2. Functionality provided                            *syntastic-functionality*\n\nSyntax checking can be done automatically or on demand (see\n|'syntastic_mode_map'| and |:SyntasticToggleMode| for configuring this).\n\nWhen syntax checking is done, the features below can be used to notify the\nuser of errors. See |syntastic-options| for how to configure and\nactivate/deactivate these features.\n\n    * A statusline flag\n    * Signs beside lines with errors\n    * The |location-list| can be populated with the errors for the associated\n      buffer\n    * Erroneous parts of lines can be highlighted (this functionality is only\n      provided by some syntax checkers)\n    * Balloons (if the |+balloon_eval| feature is compiled in) can be used to\n      display error messages for erroneous lines when hovering the mouse over\n      them\n    * Error messages from multiple checkers can be aggregated in a single list\n\n------------------------------------------------------------------------------\n2.1. The statusline flag                           *syntastic-statusline-flag*\n\nTo use the statusline flag, this must appear in your |'statusline'| setting >\n    %{SyntasticStatuslineFlag()}\n<\nSomething like this could be more useful: >\n    set statusline+=%#warningmsg#\n    set statusline+=%{SyntasticStatuslineFlag()}\n    set statusline+=%*\n<\nWhen syntax errors are detected a flag will be shown. The content of the flag\nis derived from the |syntastic_stl_format| option.\n\n------------------------------------------------------------------------------\n2.2. Error signs                                       *syntastic-error-signs*\n\nSyntastic uses the |:sign| commands to mark lines with errors and warnings in\nthe sign column. To enable this feature, use the |'syntastic_enable_signs'|\noption.\n\nSigns are colored using the Error and Todo syntax highlight groups by default.\nIf you wish to customize the colors for the signs, you can use the following\ngroups:\n    SyntasticErrorSign - For syntax errors, links to 'error' by default\n    SyntasticWarningSign - For syntax warnings, links to 'todo' by default\n    SyntasticStyleErrorSign - For style errors, links to 'SyntasticErrorSign'\n                              by default\n    SyntasticStyleWarningSign - For style warnings, links to\n                                'SyntasticWarningSign' by default\n\nExample: >\n    highlight SyntasticErrorSign guifg=white guibg=red\n<\nTo set up highlighting for the line where a sign resides, you can use the\nfollowing highlight groups:\n    SyntasticErrorLine\n    SyntasticWarningLine\n    SyntasticStyleErrorLine - Links to 'SyntasticErrorLine' by default\n    SyntasticStyleWarningLine - Links to 'SyntasticWarningLine' by default\n\nExample: >\n    highlight SyntasticErrorLine guibg=#2f0000\n<\n------------------------------------------------------------------------------\n2.3. The error window                         *:Errors* *syntastic-error-window*\n\nYou can use the :Errors command to display the errors for the current buffer\nin the |location-list|.\n\nNote that when you use :Errors, the current location list is overwritten with\nSyntastic's own location list.\n\n------------------------------------------------------------------------------\n2.4. Error highlighting                               *syntastic-highlighting*\n\nSome checkers provide enough information for syntastic to be able to highlight\nerrors. By default the SpellBad syntax highlight group is used to color errors,\nand the SpellCap group is used for warnings. If you wish to customize the\ncolors for highlighting you can use the following groups:\n    SyntasticError - Links to 'SpellBad' by default\n    SyntasticWarning - Links to 'SpellCap' by default\n\nExample: >\n    highlight SyntasticError guibg=#2f0000\n<\n------------------------------------------------------------------------------\n2.5. Aggregating errors                         *syntastic-aggregating-errors*\n\nBy default, namely if |'syntastic_aggregate_errors'| is unset, syntastic runs\nin turn the checkers corresponding to the filetype of the current file (see\n|syntastic-filetype-checkers|), and stops as soon as a checker reports any\nerrors. It then notifies you of the errors using the notification mechanisms\nabove. In this mode error lists are always produced by a single checker, and,\nif you open the error window, the name of the checker that generated the errors\nis shown on the statusline of the error window.\n\nIf |'syntastic_aggregate_errors'| is set, syntastic runs all checkers that\napply (still cf. |syntastic-filetype-checkers|), then aggregates errors found\nby all checkers in a single list, and notifies you. In this mode each error\nmessage is labeled with the name of the checker that generated it, but you can\ndisable these labels by unsetting '|syntastic_id_checkers|'.\n\n------------------------------------------------------------------------------\n2.6 Filtering errors                              *syntastic-filtering-errors*\n\nYou can selectively disable some of the errors found by checkers either\nusing |'syntastic_quiet_messages'|, or by specifying a list of patterns in\n|'syntastic_ignore_files'|.\n\nSee also: |'syntastic_<filetype>_<checker>_quiet_messages'|.\n\n==============================================================================\n3. Commands                                               *syntastic-commands*\n\n:Errors                                                     *:SyntasticErrors*\n\nWhen errors have been detected, use this command to pop up the |location-list|\nand display the error messages.\n\n:SyntasticToggleMode                                    *:SyntasticToggleMode*\n\nToggles syntastic between active and passive mode. See |'syntastic_mode_map'|\nfor more info.\n\n:SyntasticCheck                                              *:SyntasticCheck*\n\nManually cause a syntax check to be done.  By default the checkers in the\n|'g:syntastic_<filetype>_checkers'| or |'b:syntastic_checkers'| lists are run,\ncf. |syntastic-filetype-checkers|.  If |syntastic_aggregate_errors| is unset\n(which is the default), checking stops the first time a checker reports any\nerrors; if |syntastic_aggregate_errors| is set, all checkers that apply are run\nin turn, and all errors found are aggregated in a single list.\n\nThe command may be followed by a (space separated) list of checkers.  In this\ncase |'g:syntastic_<filetype>_checkers'| and |'b:syntastic_checkers'| are\nignored, and the checkers named by the command's arguments are run instead, in\nthe order specified.  The rules of |syntastic_aggregate_errors| still apply.\n\nExample: >\n    :SyntasticCheck flake8 pylint\n<\n:SyntasticInfo                                               *:SyntasticInfo*\n\nThe command takes an optional argument, and outputs information about the\ncheckers available for the filetype named by said argument, or for the current\nfiletype if no argument was provided.\n\n:SyntasticReset                                              *:SyntasticReset*\n\nResets the list of errors and turns off all error notifiers.\n\n:SyntasticSetLoclist                                    *:SyntasticSetLoclist*\n\nIf |'syntastic_always_populate_loc_list'| is not set, the |location-list| is\nnot filled in automatically with the list of errors detected by the checkers.\nThis is useful if you run syntastic along with other plugins that use location\nlists.  The |:SyntasticSetLoclist| command allows you to stick the errors into\nthe location list explicitly.\n\n==============================================================================\n4. Global Options                                   *syntastic-global-options*\n\n\n                                                   *'syntastic_check_on_open'*\nDefault: 0\nIf enabled, syntastic will do syntax checks when buffers are first loaded as\nwell as on saving >\n    let g:syntastic_check_on_open = 1\n<\n                                                     *'syntastic_check_on_wq'*\nDefault: 1\nNormally syntastic runs syntax checks whenever buffers are written to disk.\nIf you want to skip these checks when you issue |:wq|, |:x|, and |:ZZ|, set this\nvariable to 0. >\n    let g:syntastic_check_on_wq = 0\n<\n                                                *'syntastic_aggregate_errors'*\nDefault: 0\nWhen enabled, syntastic runs all checkers that apply to the current filetype,\nthen aggregates errors found by all checkers and displays them. When disabled,\nsyntastic runs each checker in turn, and stops to display the results the first\ntime a checker finds any errors. >\n    let g:syntastic_aggregate_errors = 1\n<\n                                                     *'syntastic_id_checkers'*\nDefault: 1\nWhen results from multiple checkers are aggregated in a single error list\n(that is either when |syntastic_aggregate_errors| is enabled, or when checking\na file with a composite filetype), it might not be immediately obvious which\nchecker has produced a given error message. This variable instructs syntastic\nto label error messages with the names of the checkers that created them. >\n    let g:syntastic_id_checkers = 0\n<\n                                              *'syntastic_echo_current_error'*\nDefault: 1\nIf enabled, syntastic will echo the error associated with the current line to\nthe command window. If multiple errors are found, the first will be used. >\n    let g:syntastic_echo_current_error = 1\n<\n                                                    *'syntastic_enable_signs'*\nDefault: 1\nUse this option to tell syntastic whether to use the |:sign| interface to mark\nsyntax errors: >\n    let g:syntastic_enable_signs = 1\n<\n                     *'syntastic_error_symbol'* *'syntastic_style_error_symbol'*\n                 *'syntastic_warning_symbol'* *'syntastic_style_warning_symbol'*\nUse this option to control what the syntastic |:sign| text contains. Several\nerror symbols can be customized:\n    syntastic_error_symbol - For syntax errors, defaults to '>>'\n    syntastic_style_error_symbol - For style errors, defaults to 'S>'\n    syntastic_warning_symbol - For syntax warnings, defaults to '>>'\n    syntastic_style_warning_symbol - For style warnings, defaults to 'S>'\n\nExample: >\n    let g:syntastic_error_symbol = '✗'\n    let g:syntastic_warning_symbol = '⚠'\n<\n                                                 *'syntastic_enable_balloons'*\nDefault: 1\nUse this option to tell syntastic whether to display error messages in balloons\nwhen the mouse is hovered over erroneous lines: >\n    let g:syntastic_enable_balloons = 1\n<\nNote that Vim must be compiled with |+balloon_eval|.\n\n                                             *'syntastic_enable_highlighting'*\nDefault: 1\nUse this option to tell syntastic whether to use syntax highlighting to mark\nerrors (where possible). Highlighting can be turned off with the following >\n    let g:syntastic_enable_highlighting = 0\n<\n                                        *'syntastic_always_populate_loc_list'*\nDefault: 0\nEnable this option to tell syntastic to always stick any detected errors into\nthe |location-list|: >\n    let g:syntastic_always_populate_loc_list = 1\n<\n                                                       *'syntastic_auto_jump'*\nDefault: 0\nEnable this option if you want the cursor to jump to the first detected issue\nwhen saving or opening a file.\n\nWhen set to 0 the cursor won't jump automatically. >\n    let g:syntastic_auto_jump = 0\n<\nWhen set to 1 the cursor will always jump to the first issue detected. >\n    let g:syntastic_auto_jump = 1\n<\nWhen set to 2 the cursor will jump to the first issue detected, but only if\nthis issue is an error. >\n    let g:syntastic_auto_jump = 2\n<\n                                                   *'syntastic_auto_loc_list'*\nDefault: 2\nUse this option to tell syntastic to automatically open and/or close the\n|location-list| (see |syntastic-error-window|).\n\nWhen set to 0 the error window will not be opened or closed automatically. >\n    let g:syntastic_auto_loc_list = 0\n<\nWhen set to 1 the error window will be automatically opened when errors are\ndetected, and closed when none are detected. >\n    let g:syntastic_auto_loc_list = 1\n<\nWhen set to 2 the error window will be automatically closed when no errors are\ndetected, but not opened automatically. >\n    let g:syntastic_auto_loc_list = 2\n<\n                                                 *'syntastic_loc_list_height'*\nDefault: 10\nUse this option to specify the height of the location lists that syntastic\nopens. >\n    let g:syntastic_loc_list_height = 5\n<\n                                                    *'syntastic_ignore_files'*\nDefault: []\nUse this option to specify files that syntastic should never check.  It's a\nlist of |regular-expression| patterns.  The full paths of files (see |::p|) are\nmatched against these patterns, and the matches are case sensitive. Use |\\c|\nto specify case insensitive patterns.  Example: >\n    let g:syntastic_ignore_files = ['\\m^/usr/include/', '\\m\\c\\.h$']\n<\n                                                    *'syntastic_filetype_map'*\nDefault: {}\nUse this option to map non-standard filetypes to standard ones.  Corresponding\ncheckers are mapped accordingly, which allows syntastic to check files with\nnon-standard filetypes: >\n    let g:syntastic_filetype_map = { 'latex': 'tex',\n                                   \\ 'gentoo-metadata': 'xml' }\n<\nComposite filetypes can also be mapped to simple types, which disables the\ndefault behaviour of running both checkers against the input file: >\n    let g:syntastic_filetype_map = { 'handlebars.html': 'handlebars' }\n<\n                                                        *'syntastic_mode_map'*\nDefault: { \"mode\": \"active\",\n           \"active_filetypes\": [],\n           \"passive_filetypes\": [] }\n\nUse this option to fine tune when automatic syntax checking is done (or not\ndone).\n\nThe option should be set to something like: >\n\n    let g:syntastic_mode_map = { 'mode': 'active',\n                               \\ 'active_filetypes': ['ruby', 'php'],\n                               \\ 'passive_filetypes': ['puppet'] }\n<\n\"mode\" can be mapped to one of two values - \"active\" or \"passive\". When set to\nactive, syntastic does automatic checking whenever a buffer is saved or\ninitially opened.  When set to \"passive\" syntastic only checks when the user\ncalls |:SyntasticCheck|.\n\nThe exceptions to these rules are defined with \"active_filetypes\" and\n\"passive_filetypes\". In passive mode, automatic checks are still done\nfor all filetypes in the \"active_filetypes\" array. In active mode,\nautomatic checks are not done for any filetypes in the\n\"passive_filetypes\" array.\n\nAt runtime, the |:SyntasticToggleMode| command can be used to switch between\nactive and passive mode.\n\nIf any of \"mode\", \"active_filetypes\", or \"passive_filetypes\" are not specified\nthen they will default to their default value as above.\n\n                                                  *'syntastic_quiet_messages'*\nDefault: {}\n\nUse this option to filter out some of the messages produced by checkers.  The\noption should be set to something like: >\n    let g:syntastic_quiet_messages = { \"level\": \"warnings\",\n                                     \\ \"type\":  \"style\",\n                                     \\ \"regex\": '\\m\\[C03\\d\\d\\]',\n                                     \\ \"file\":  ['\\m^/usr/include/', '\\m\\c\\.h$'] }\n<\nEach element turns off messages matching the patterns specified by the\ncorresponding value. Values are lists, but if a list consist of a single\nelement you can omit adding the brackets (e.g. you can write \"style\" instead\nof [\"style\"]). Elements with values [] or '' are ignored (this is useful for\noverriding filters, cf. |filter-overrides|).\n\n    \"level\" - takes one of two values, \"warnings\" or \"errors\"\n    \"type\"  - can be either \"syntax\" or \"style\"\n    \"regex\" - is matched against the messages' text as a case insensitive\n              |regular-expression|\n    \"file\"  - is matched against the filename the error refers to, as a case\n              sensitive |regular-expression|.\n\nIf |'syntastic_id_checkers'| is set, filters are applied before error messages\nare labeled with the names of the checkers that created them.\n\nThere are also checker-specific variants of this option, providing finer\ncontrol. They are named |'syntastic_<filetype>_<checker>_quiet_messages'|.\n\nFor a particular checker, if both a |'syntastic_quiet_messages'| filter and\na checker-specific filter are present, they are both applied (to the list of\nerrors produced by the said checker). In case of conflicting values for the\nsame keys, the values of the checker-specific filters take precedence.\n\n                                                            *filter-overrides*\nSince filter elements with values [] or '' are ignored, you can disable global\nfilters for particular checkers, by setting the values of the corresponding\nelements in |'syntastic_<filetype>_<checker>_quiet_messages'| to [] or ''. For\nexample, the following setting will silence all warnings, except for the\nones produced by 'pylint': >\n    let g:syntastic_quiet_messages = { \"level\": \"warnings\" }\n    let g:syntastic_python_pylint_quiet_messages = { \"level\" : [] }\n<\n                                                      *'syntastic_stl_format'*\nDefault: [Syntax: line:%F (%t)]\nUse this option to control what the syntastic statusline text contains. Several\nmagic flags are available to insert information:\n    %e - number of errors\n    %w - number of warnings\n    %t - total number of warnings and errors\n    %fe - line number of first error\n    %fw - line number of first warning\n    %F - line number of first warning or error\n\nSeveral additional flags are available to hide text under certain conditions:\n    %E{...} - hide the text in the brackets unless there are errors\n    %W{...} - hide the text in the brackets unless there are warnings\n    %B{...} - hide the text in the brackets unless there are both warnings AND\n              errors\nThese flags can't be nested.\n\nExample: >\n    let g:syntastic_stl_format = '[%E{Err: %fe #%e}%B{, }%W{Warn: %fw #%w}]'\n<\nIf this format is used and the current buffer has 5 errors and 1 warning\nstarting on lines 20 and 10 respectively then this would appear on the\nstatusline: >\n    [Err: 20 #5, Warn: 10 #1]\n<\nIf the buffer had 2 warnings, starting on line 5 then this would appear: >\n    [Warn: 5 #2]\n<\n                                                    *'syntastic_full_redraws'*\nDefault: 0 in GUI Vim and MacVim, 1 otherwise\nControls whether syntastic calls |:redraw| or |:redraw!| for screen redraws.\nChanging it can in principle make screen redraws smoother, but it can also\ncause screen to flicker, or cause ghost characters. Leaving it to the default\nshould be safe.\n\n                                                           *'syntastic_debug'*\nDefault: 0\nSet this to the sum of one or more of the following flags to enable\ndebugging:\n\n     1 - trace checker calls\n     2 - dump location lists\n     4 - trace notifiers\n     8 - trace autocommands\n    16 - dump options\n\nExample: >\n    let g:syntastic_debug = 1\n<\nSyntastic will then add debugging messages to Vim's |message-history|. You can\nexamine these messages with |:mes|.\n\n                                                      *'syntastic_debug_file'*\nDefault: unset\nWhen set, debugging messages are written to the file named by its value, in\naddition to being added to Vim's |message-history|: >\n    let g:syntastic_debug_file = '~/syntastic.log'\n<\n                                                 *'syntastic_extra_filetypes'*\nDefault: []\nList of filetypes handled by checkers external to syntastic.  If you have a Vim\nplugin that adds a checker for syntastic, and if the said checker deals with a\nfiletype that is unknown to syntastic, you might consider adding that filetype\nto this list: >\n    let g:syntastic_extra_filetypes = [ 'make', 'gitcommit' ]\n<\nThis will allow |:SyntasticInfo| to do proper tab completion for the new\nfiletypes.\n\n==============================================================================\n5. Checker Options                                 *syntastic-checker-options*\n\n------------------------------------------------------------------------------\n5.1 Choosing which checkers to use               *syntastic-filetype-checkers*\n\n                                           *'g:syntastic_<filetype>_checkers'*\nYou can tell syntastic which checkers to run for a given filetype by setting a\nvariable 'g:syntastic_<filetype>_checkers' to a list of checkers, e.g. >\n    let g:syntastic_php_checkers = ['php', 'phpcs', 'phpmd']\n<\n                                                      *'b:syntastic_checkers'*\nThere is also a per-buffer version of this setting, 'b:syntastic_checkers'.\nWhen set, it takes precedence over |'g:syntastic_<filetype>_checkers'|.  You can\nuse this in an autocmd to configure specific checkers for particular paths: >\n    autocmd FileType python if stridx(expand('%:p'), '/some/path/') == 0 |\n        \\ let b:syntastic_checkers = ['pylint'] | endif\n<\nIf neither |'g:syntastic_<filetype>_checkers'| nor |'b:syntastic_checkers'|\nis set, a default list of checker is used. Beware however that this list\ndeliberately kept minimal, for performance reasons.\n\nTake a look at the wiki to find out what checkers and filetypes are supported\nby syntastic:\n\n    https://github.com/scrooloose/syntastic/wiki/Syntax-Checkers\n\nUse |:SyntasticInfo| to see which checkers are available for a given filetype.\n\n------------------------------------------------------------------------------\n5.2 Choosing the executable                            *syntastic-config-exec*\n\n                                    *'syntastic_<filetype>_<subchecker>_exec'*\nThe executable used by a checker is normally defined automatically, when the\ncheckers is registered. You can however override it by setting the variable\n'g:syntastic_<filetype>_<subchecker>_exec': >\n    let g:syntastic_ruby_mri_exec = '~/bin/ruby2'\n<\n------------------------------------------------------------------------------\n5.3 Configuring specific checkers                   *syntastic-config-makeprg*\n\nMost checkers use the 'makeprgBuild()' function and provide many options by\ndefault - in fact you can customise every part of the command that gets called.\n\n                                *'syntastic_<filetype>_<subchecker>_<option>'*\nCheckers that use 'makeprgBuild()' construct a 'makeprg' like this: >\n    let makeprg = self.makeprgBuild({\n                \\ 'exe': self.getExec(),\n                \\ 'args': '-a -b -c',\n                \\ 'post_args': '--more --args',\n                \\ 'tail': '> /tmp/output' })\n<\nThe result is a 'makeprg' of the form: >\n    <exe> <args> <filename> <post_args> <tail>\n<\n                                     *'syntastic_<filetype>_<subchecker>_exe'*\nAll arguments above are optional, and can be overridden by setting global\nvariables 'g:syntastic_<filetype>_<checker-name>_<option-name>' - even\nparameters not specified in the call to makeprgBuild(). These variables also\nhave local versions 'b:syntastic_<filetype>_<checker-name>_<option-name>',\nwhich take precedence over the global ones in the corresponding buffers.\n\nThe 'exe' is normally the same as the 'exec' attribute described above, in\nwhich case it may be omitted. However, you can use it to add environment\nvariables or additional parameters, e.g. to tell the mri checker to use KANJI\nencoding you could do something like this: >\n    let g:syntastic_ruby_mri_exe = 'RUBYOPT=\"-Ke\" ruby'\n<\nTo override the args and the tail: >\n    let g:syntastic_ruby_mri_args = \"--my --args --here\"\n    let g:syntastic_ruby_mri_tail = \"> /tmp/my-output-file-biatch\"\n<\nThe general form of the override options is: >\n    syntastic_<filetype>_<subchecker>_<option-name>\n<\nFor checkers that do not use the 'makeprgBuild()' function you will have to\nlook at the source code of the checker in question. If there are specific\noptions that can be set, these are usually documented in the wiki:\n\n    https://github.com/scrooloose/syntastic/wiki/Syntax-Checkers\n\n                             *'syntastic_<filetype>_<checker>_quiet_messages'*\nIn the same vein, 'g:syntastic_<filetype>_<checker-name>_quiet_messages' can\nbe used to restrict message filters to messages produced by specific checkers.\nExample: >\n    let g:syntastic_python_pylama_quiet_messages = { \"type\":  \"style\",\n                                                   \\ \"regex\": '\\m\\[C03\\d\\d\\]' }\n<\nSee |syntastic_quiet_messages| for the syntax.\n\n==============================================================================\n6. Notes                                                     *syntastic-notes*\n\n------------------------------------------------------------------------------\n6.1. Handling of composite filetypes                     *syntastic-composite*\n\nSome Vim plugins use composite filetypes, such as 'django.python' or\n'handlebars.html'. Normally, syntastic deals with this situation by splitting\nthe filetype in its simple components, and calling all checkers that apply.\nIf this behaviour is not desirable, you can disable it by mapping the\ncomposite filetypes to a simple ones using |syntastic_filetype_map|, e.g.: >\n    let g:syntastic_filetype_map = { 'handlebars.html': 'handlebars' }\n<\n------------------------------------------------------------------------------\n6.2 Interaction with python-mode                            *syntastic-pymode*\n\nSyntastic can be used along with the 'python-mode' Vim plugin (see\nhttps://github.com/klen/python-mode). However, they both run syntax checks by\ndefault when you save buffers to disk, and this is probably not what you want.\nTo avoid both plugins opening error windows, you can either set passive mode\nfor python in syntastic (see |syntastic_mode_map|), or disable lint checks in\npython-mode, by setting |pymode_lint_write| to 0. E.g.: >\n    let g:pymode_lint_write = 0\n<\n------------------------------------------------------------------------------\n6.3 Interaction with the fish shell                           *syntastic-fish*\n\nAt the time of this writing the 'fish' shell (see http://fishshell.com/)\ndoesn't support the standard UNIX syntax for file redirections, and thus it\ncan't be used together with syntastic. You don't need to change your login\nshell to address this problem, but you do have to point Vim's 'shell' to a more\ntraditional shell, such as 'zsh', 'bash', 'ksh', or even the original Bourne\n'sh': >\n    set shell=bash\n<\n------------------------------------------------------------------------------\n6.4. Using syntastic with the fizsh shell                    *syntastic-fizsh*\n\nUsing syntastic with the 'fizsh' shell (see https://github.com/zsh-users/fizsh)\nis possible, but potentially problematic. In order to do it you'll need to set\n'shellredir' like this: >\n    set shellredir=>%s\\ 2>&1\n<\nPlease keep in mind however that Vim can't take advantage of any of the\ninteractive features of 'fizsh'. Using a more traditional shell such as 'zsh',\n'bash', 'ksh', or the original Bourne 'sh' might be a better choice: >\n    set shell=zsh\n<\n==============================================================================\n7. About                                                     *syntastic-about*\n\nThe core maintainers of syntastic are:\n    Martin Grenfell (github: scrooloose)\n    Gregor Uhlenheuer (github: kongo2002)\n    LCD 047 (github: lcd047)\n\nFind the latest version of syntastic at:\n\n    http://github.com/scrooloose/syntastic\n\n==============================================================================\n8. License                                                 *syntastic-license*\n\nSyntastic is released under the wtfpl.\nSee http://sam.zoy.org/wtfpl/COPYING.\n\n vim:tw=78:sw=4:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/syntastic/plugin/syntastic/autoloclist.vim",
    "content": "if exists(\"g:loaded_syntastic_notifier_autoloclist\") || !exists(\"g:loaded_syntastic_plugin\")\n    finish\nendif\nlet g:loaded_syntastic_notifier_autoloclist = 1\n\nlet g:SyntasticAutoloclistNotifier = {}\n\n\" Public methods {{{1\n\"\nfunction! g:SyntasticAutoloclistNotifier.New() \" {{{2\n    let newObj = copy(self)\n    return newObj\nendfunction \" }}}2\n\nfunction! g:SyntasticAutoloclistNotifier.refresh(loclist) \" {{{2\n    call syntastic#log#debug(g:SyntasticDebugNotifications, 'autoloclist: refresh')\n    call g:SyntasticAutoloclistNotifier.AutoToggle(a:loclist)\nendfunction \" }}}2\n\nfunction! g:SyntasticAutoloclistNotifier.AutoToggle(loclist) \" {{{2\n    call syntastic#log#debug(g:SyntasticDebugNotifications, 'autoloclist: toggle')\n    if !a:loclist.isEmpty()\n        if syntastic#util#var('auto_loc_list') == 1\n            call a:loclist.show()\n        endif\n    else\n        if syntastic#util#var('auto_loc_list') > 0\n\n            \"TODO: this will close the loc list window if one was opened by\n            \"something other than syntastic\n            lclose\n        endif\n    endif\nendfunction \" }}}2\n\n\" }}}1\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/syntastic/plugin/syntastic/balloons.vim",
    "content": "if exists(\"g:loaded_syntastic_notifier_balloons\") || !exists(\"g:loaded_syntastic_plugin\")\n    finish\nendif\nlet g:loaded_syntastic_notifier_balloons = 1\n\nif !has('balloon_eval')\n    let g:syntastic_enable_balloons = 0\nendif\n\nlet g:SyntasticBalloonsNotifier = {}\n\n\" Public methods {{{1\n\nfunction! g:SyntasticBalloonsNotifier.New() \" {{{2\n    let newObj = copy(self)\n    return newObj\nendfunction \" }}}2\n\nfunction! g:SyntasticBalloonsNotifier.enabled() \" {{{2\n    return has('balloon_eval') && syntastic#util#var('enable_balloons')\nendfunction \" }}}2\n\n\" Update the error balloons\nfunction! g:SyntasticBalloonsNotifier.refresh(loclist) \" {{{2\n    let b:syntastic_balloons = {}\n    if self.enabled() && !a:loclist.isEmpty()\n        call syntastic#log#debug(g:SyntasticDebugNotifications, 'balloons: refresh')\n        let buf = bufnr('')\n        let issues = filter(a:loclist.copyRaw(), 'v:val[\"bufnr\"] == buf')\n        if !empty(issues)\n            for i in issues\n                if has_key(b:syntastic_balloons, i['lnum'])\n                    let b:syntastic_balloons[i['lnum']] .= \"\\n\" . i['text']\n                else\n                    let b:syntastic_balloons[i['lnum']] = i['text']\n                endif\n            endfor\n            set beval bexpr=SyntasticBalloonsExprNotifier()\n        endif\n    endif\nendfunction \" }}}2\n\n\" Reset the error balloons\n\" @vimlint(EVL103, 1, a:loclist)\nfunction! g:SyntasticBalloonsNotifier.reset(loclist) \" {{{2\n    if has('balloon_eval')\n        call syntastic#log#debug(g:SyntasticDebugNotifications, 'balloons: reset')\n        set nobeval\n    endif\nendfunction \" }}}2\n\" @vimlint(EVL103, 0, a:loclist)\n\n\" }}}1\n\n\" Private functions {{{1\n\nfunction! SyntasticBalloonsExprNotifier() \" {{{2\n    if !exists('b:syntastic_balloons')\n        return ''\n    endif\n    return get(b:syntastic_balloons, v:beval_lnum, '')\nendfunction \" }}}2\n\n\" }}}1\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/syntastic/plugin/syntastic/checker.vim",
    "content": "if exists(\"g:loaded_syntastic_checker\") || !exists(\"g:loaded_syntastic_plugin\")\n    finish\nendif\nlet g:loaded_syntastic_checker = 1\n\nlet g:SyntasticChecker = {}\n\n\" Public methods {{{1\n\nfunction! g:SyntasticChecker.New(args) \" {{{2\n    let newObj = copy(self)\n\n    let newObj._filetype = a:args['filetype']\n    let newObj._name = a:args['name']\n    let newObj._exec = get(a:args, 'exec', newObj._name)\n\n    if has_key(a:args, 'redirect')\n        let [filetype, name] = split(a:args['redirect'], '/')\n        let prefix = 'SyntaxCheckers_' . filetype . '_' . name . '_'\n    else\n        let prefix = 'SyntaxCheckers_' . newObj._filetype . '_' . newObj._name . '_'\n    endif\n\n    let newObj._locListFunc = function(prefix . 'GetLocList')\n\n    if exists('*' . prefix . 'IsAvailable')\n        let newObj._isAvailableFunc = function(prefix . 'IsAvailable')\n    else\n        let newObj._isAvailableFunc = function('SyntasticCheckerIsAvailableDefault')\n    endif\n\n    if exists('*' . prefix . 'GetHighlightRegex')\n        let newObj._highlightRegexFunc = function(prefix . 'GetHighlightRegex')\n    endif\n\n    return newObj\nendfunction \" }}}2\n\nfunction! g:SyntasticChecker.getFiletype() \" {{{2\n    return self._filetype\nendfunction \" }}}2\n\nfunction! g:SyntasticChecker.getName() \" {{{2\n    return self._name\nendfunction \" }}}2\n\nfunction! g:SyntasticChecker.getExec() \" {{{2\n    if exists('g:syntastic_' . self._filetype . '_' . self._name . '_exec')\n        return expand(g:syntastic_{self._filetype}_{self._name}_exec)\n    endif\n\n    return self._exec\nendfunction \" }}}2\n\nfunction! g:SyntasticChecker.getExecEscaped() \" {{{2\n    return syntastic#util#shescape(self.getExec())\nendfunction \" }}}2\n\nfunction! g:SyntasticChecker.getLocListRaw() \" {{{2\n    let name = self._filetype . '/' . self._name\n    try\n        let list = self._locListFunc()\n        call syntastic#log#debug(g:SyntasticDebugTrace, 'getLocList: checker ' . name . ' returned ' . v:shell_error)\n    catch /\\m\\C^Syntastic: checker error$/\n        let list = []\n        call syntastic#log#error('checker ' . name . ' returned abnormal status ' . v:shell_error)\n    endtry\n    call self._populateHighlightRegexes(list)\n    call syntastic#log#debug(g:SyntasticDebugLoclist, name . ' raw:', list)\n    call self._quietMessages(list)\n    return list\nendfunction \" }}}2\n\nfunction! g:SyntasticChecker.getLocList() \" {{{2\n    return g:SyntasticLoclist.New(self.getLocListRaw())\nendfunction \" }}}2\n\nfunction! g:SyntasticChecker.makeprgBuild(opts) \" {{{2\n    let basename = self._filetype . '_' . self._name . '_'\n\n    let parts = []\n    call extend(parts, self._getOpt(a:opts, basename, 'exe', self.getExecEscaped()))\n    call extend(parts, self._getOpt(a:opts, basename, 'args', ''))\n    call extend(parts, self._getOpt(a:opts, basename, 'fname', syntastic#util#shexpand('%')))\n    call extend(parts, self._getOpt(a:opts, basename, 'post_args', ''))\n    call extend(parts, self._getOpt(a:opts, basename, 'tail', ''))\n\n    return join(parts)\nendfunction \" }}}2\n\nfunction! g:SyntasticChecker.isAvailable() \" {{{2\n    return self._isAvailableFunc()\nendfunction \" }}}2\n\n\" }}}1\n\n\" Private methods {{{1\n\nfunction! g:SyntasticChecker._quietMessages(errors) \" {{{2\n    \" wildcard quiet_messages\n    let quiet_filters = copy(syntastic#util#var('quiet_messages', {}))\n    if type(quiet_filters) != type({})\n        call syntastic#log#warn('ignoring invalid syntastic_quiet_messages')\n        unlet quiet_filters\n        let quiet_filters = {}\n    endif\n\n    \" per checker quiet_messages\n    let name = self._filetype . '_' . self._name\n    try\n        call extend( quiet_filters, copy(syntastic#util#var(name . '_quiet_messages', {})), 'force' )\n    catch /\\m^Vim\\%((\\a\\+)\\)\\=:E712/\n        call syntastic#log#warn('ignoring invalid syntastic_' . name . '_quiet_messages')\n    endtry\n\n    call syntastic#log#debug(g:SyntasticDebugLoclist, 'quiet_messages filter:', quiet_filters)\n\n    if !empty(quiet_filters)\n        call syntastic#util#dictFilter(a:errors, quiet_filters)\n        call syntastic#log#debug(g:SyntasticDebugLoclist, 'filtered by quiet_messages:', a:errors)\n    endif\nendfunction \" }}}2\n\nfunction! g:SyntasticChecker._populateHighlightRegexes(errors) \" {{{2\n    if has_key(self, '_highlightRegexFunc')\n        for e in a:errors\n            if e['valid']\n                let term = self._highlightRegexFunc(e)\n                if len(term) > 0\n                    let e['hl'] = term\n                endif\n            endif\n        endfor\n    endif\nendfunction \" }}}2\n\nfunction! g:SyntasticChecker._getOpt(opts, basename, name, default) \" {{{2\n    let user_val = syntastic#util#var(a:basename . a:name)\n    let ret = []\n    call extend( ret, self._shescape(get(a:opts, a:name . '_before', '')) )\n    call extend( ret, self._shescape(user_val != '' ? user_val : get(a:opts, a:name, a:default)) )\n    call extend( ret, self._shescape(get(a:opts, a:name . '_after', '')) )\n\n    return ret\nendfunction \" }}}2\n\nfunction! g:SyntasticChecker._shescape(opt) \" {{{2\n    if type(a:opt) == type('') && a:opt != ''\n        return [a:opt]\n    elseif type(a:opt) == type([])\n        return map(copy(a:opt), 'syntastic#util#shescape(v:val)')\n    endif\n\n    return []\nendfunction \" }}}2\n\n\" }}}1\n\n\" Non-method functions {{{1\n\nfunction! SyntasticCheckerIsAvailableDefault() dict \" {{{2\n    return executable(self.getExec())\nendfunction \" }}}2\n\n\" }}}1\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/syntastic/plugin/syntastic/cursor.vim",
    "content": "if exists(\"g:loaded_syntastic_notifier_cursor\") || !exists(\"g:loaded_syntastic_plugin\")\n    finish\nendif\nlet g:loaded_syntastic_notifier_cursor = 1\n\nlet g:SyntasticCursorNotifier = {}\n\n\" Public methods {{{1\n\nfunction! g:SyntasticCursorNotifier.New() \" {{{2\n    let newObj = copy(self)\n    return newObj\nendfunction \" }}}2\n\nfunction! g:SyntasticCursorNotifier.enabled() \" {{{2\n    return syntastic#util#var('echo_current_error')\nendfunction \" }}}2\n\nfunction! g:SyntasticCursorNotifier.refresh(loclist) \" {{{2\n    if self.enabled() && !a:loclist.isEmpty()\n        call syntastic#log#debug(g:SyntasticDebugNotifications, 'cursor: refresh')\n        let b:syntastic_messages = copy(a:loclist.messages(bufnr('')))\n        let b:oldLine = -1\n        autocmd! syntastic CursorMoved\n        autocmd syntastic CursorMoved * call g:SyntasticRefreshCursor()\n    endif\nendfunction \" }}}2\n\n\" @vimlint(EVL103, 1, a:loclist)\nfunction! g:SyntasticCursorNotifier.reset(loclist) \" {{{2\n    call syntastic#log#debug(g:SyntasticDebugNotifications, 'cursor: reset')\n    autocmd! syntastic CursorMoved\n    unlet! b:syntastic_messages\n    let b:oldLine = -1\nendfunction \" }}}2\n\" @vimlint(EVL103, 0, a:loclist)\n\n\" }}}1\n\n\" Private methods {{{1\n\n\" The following defensive nonsense is needed because of the nature of autocmd\nfunction! g:SyntasticRefreshCursor() \" {{{2\n    if !exists('b:syntastic_messages') || empty(b:syntastic_messages)\n        \" file not checked\n        return\n    endif\n\n    if !exists('b:oldLine')\n        let b:oldLine = -1\n    endif\n    let l = line('.')\n    if l == b:oldLine\n        return\n    endif\n    let b:oldLine = l\n\n    if has_key(b:syntastic_messages, l)\n        call syntastic#util#wideMsg(b:syntastic_messages[l])\n    else\n        echo\n    endif\nendfunction \" }}}2\n\n\" }}}1\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/syntastic/plugin/syntastic/highlighting.vim",
    "content": "if exists(\"g:loaded_syntastic_notifier_highlighting\") || !exists(\"g:loaded_syntastic_plugin\")\n    finish\nendif\nlet g:loaded_syntastic_notifier_highlighting = 1\n\n\" Highlighting requires getmatches introduced in 7.1.040\nlet s:has_highlighting = v:version > 701 || (v:version == 701 && has('patch040'))\n\nlet g:SyntasticHighlightingNotifier = {}\n\nlet s:setup_done = 0\n\n\" Public methods {{{1\n\nfunction! g:SyntasticHighlightingNotifier.New() \" {{{2\n    let newObj = copy(self)\n\n    if !s:setup_done\n        call self._setup()\n        let s:setup_done = 1\n    endif\n\n    return newObj\nendfunction \" }}}2\n\nfunction! g:SyntasticHighlightingNotifier.enabled() \" {{{2\n    return s:has_highlighting && syntastic#util#var('enable_highlighting')\nendfunction \" }}}2\n\n\" Sets error highlights in the cuirrent window\nfunction! g:SyntasticHighlightingNotifier.refresh(loclist) \" {{{2\n    if self.enabled()\n        call self.reset(a:loclist)\n        call syntastic#log#debug(g:SyntasticDebugNotifications, 'highlighting: refresh')\n        let buf = bufnr('')\n        let issues = filter(a:loclist.copyRaw(), 'v:val[\"bufnr\"] == buf')\n        for item in issues\n            let group = item['type'] ==? 'E' ? 'SyntasticError' : 'SyntasticWarning'\n\n            \" The function `Syntastic_{filetype}_{checker}_GetHighlightRegex` is\n            \" used to override default highlighting.\n            if has_key(item, 'hl')\n                call matchadd(group, '\\%' . item['lnum'] . 'l' . item['hl'])\n            elseif get(item, 'col', 0)\n                if get(item, 'vcol', 0)\n                    let lastcol = virtcol([item['lnum'], '$'])\n                    let coltype = 'v'\n                else\n                    let lastcol = col([item['lnum'], '$'])\n                    let coltype = 'c'\n                endif\n                let lcol = min([lastcol, item['col']])\n\n                call matchadd(group, '\\%' . item['lnum'] . 'l\\%' . lcol . coltype)\n            endif\n        endfor\n    endif\nendfunction \" }}}2\n\n\" Remove all error highlights from the window\n\" @vimlint(EVL103, 1, a:loclist)\nfunction! g:SyntasticHighlightingNotifier.reset(loclist) \" {{{2\n    if s:has_highlighting\n        call syntastic#log#debug(g:SyntasticDebugNotifications, 'highlighting: reset')\n        for match in getmatches()\n            if stridx(match['group'], 'Syntastic') == 0\n                call matchdelete(match['id'])\n            endif\n        endfor\n    endif\nendfunction \" }}}2\n\" @vimlint(EVL103, 0, a:loclist)\n\n\" }}}1\n\n\" Private methods {{{1\n\n\" One time setup: define our own highlighting\nfunction! g:SyntasticHighlightingNotifier._setup() \" {{{2\n    if s:has_highlighting\n        if !hlexists('SyntasticError')\n            highlight link SyntasticError SpellBad\n\n        endif\n        if !hlexists('SyntasticWarning')\n            highlight link SyntasticWarning SpellCap\n        endif\n    endif\nendfunction \" }}}2\n\n\" }}}1\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/syntastic/plugin/syntastic/loclist.vim",
    "content": "if exists(\"g:loaded_syntastic_loclist\") || !exists(\"g:loaded_syntastic_plugin\")\n    finish\nendif\nlet g:loaded_syntastic_loclist = 1\n\nlet g:SyntasticLoclist = {}\n\n\" Public methods {{{1\n\nfunction! g:SyntasticLoclist.New(rawLoclist) \" {{{2\n    let newObj = copy(self)\n\n    let llist = filter(copy(a:rawLoclist), 'v:val[\"valid\"] == 1')\n\n    for e in llist\n        if get(e, 'type', '') == ''\n            let e['type'] = 'E'\n        endif\n    endfor\n\n    let newObj._rawLoclist = llist\n    let newObj._name = ''\n\n    return newObj\nendfunction \" }}}2\n\nfunction! g:SyntasticLoclist.current() \" {{{2\n    if !exists(\"b:syntastic_loclist\")\n        let b:syntastic_loclist = g:SyntasticLoclist.New([])\n    endif\n    return b:syntastic_loclist\nendfunction \" }}}2\n\nfunction! g:SyntasticLoclist.extend(other) \" {{{2\n    let list = self.copyRaw()\n    call extend(list, a:other.copyRaw())\n    return g:SyntasticLoclist.New(list)\nendfunction \" }}}2\n\nfunction! g:SyntasticLoclist.isEmpty() \" {{{2\n    return empty(self._rawLoclist)\nendfunction \" }}}2\n\nfunction! g:SyntasticLoclist.copyRaw() \" {{{2\n    return copy(self._rawLoclist)\nendfunction \" }}}2\n\nfunction! g:SyntasticLoclist.getRaw() \" {{{2\n    return self._rawLoclist\nendfunction \" }}}2\n\nfunction! g:SyntasticLoclist.getStatuslineFlag() \" {{{2\n    if !exists(\"self._stl_format\")\n        let self._stl_format = ''\n    endif\n    if !exists(\"self._stl_flag\")\n        let self._stl_flag = ''\n    endif\n\n    if g:syntastic_stl_format !=# self._stl_format\n        let self._stl_format = g:syntastic_stl_format\n\n        if !empty(self._rawLoclist)\n            let errors = self.errors()\n            let warnings = self.warnings()\n\n            let num_errors = len(errors)\n            let num_warnings = len(warnings)\n            let num_issues = len(self._rawLoclist)\n\n            let output = self._stl_format\n\n            \"hide stuff wrapped in %E(...) unless there are errors\n            let output = substitute(output, '\\m\\C%E{\\([^}]*\\)}', num_errors ? '\\1' : '' , 'g')\n\n            \"hide stuff wrapped in %W(...) unless there are warnings\n            let output = substitute(output, '\\m\\C%W{\\([^}]*\\)}', num_warnings ? '\\1' : '' , 'g')\n\n            \"hide stuff wrapped in %B(...) unless there are both errors and warnings\n            let output = substitute(output, '\\m\\C%B{\\([^}]*\\)}', (num_warnings && num_errors) ? '\\1' : '' , 'g')\n\n            \"sub in the total errors/warnings/both\n            let output = substitute(output, '\\m\\C%w', num_warnings, 'g')\n            let output = substitute(output, '\\m\\C%e', num_errors, 'g')\n            let output = substitute(output, '\\m\\C%t', num_issues, 'g')\n\n            \"first error/warning line num\n            let output = substitute(output, '\\m\\C%F', num_issues ? self._rawLoclist[0]['lnum'] : '', 'g')\n\n            \"first error line num\n            let output = substitute(output, '\\m\\C%fe', num_errors ? errors[0]['lnum'] : '', 'g')\n\n            \"first warning line num\n            let output = substitute(output, '\\m\\C%fw', num_warnings ? warnings[0]['lnum'] : '', 'g')\n\n            let self._stl_flag = output\n        else\n            let self._stl_flag = ''\n        endif\n    endif\n\n    return self._stl_flag\nendfunction \" }}}2\n\nfunction! g:SyntasticLoclist.getFirstIssue() \" {{{2\n    return get(self._rawLoclist, 0, {})\nendfunction \" }}}2\n\nfunction! g:SyntasticLoclist.getName() \" {{{2\n    return len(self._name)\nendfunction \" }}}2\n\nfunction! g:SyntasticLoclist.setName(name) \" {{{2\n    let self._name = a:name\nendfunction \" }}}2\n\nfunction! g:SyntasticLoclist.decorate(filetype, name) \" {{{2\n    for e in self._rawLoclist\n        let e['text'] .= ' [' . a:filetype . '/' . a:name . ']'\n    endfor\nendfunction \" }}}2\n\nfunction! g:SyntasticLoclist.errors() \" {{{2\n    if !exists(\"self._cachedErrors\")\n        let self._cachedErrors = self.filter({'type': \"E\"})\n    endif\n    return self._cachedErrors\nendfunction \" }}}2\n\nfunction! g:SyntasticLoclist.warnings() \" {{{2\n    if !exists(\"self._cachedWarnings\")\n        let self._cachedWarnings = self.filter({'type': \"W\"})\n    endif\n    return self._cachedWarnings\nendfunction \" }}}2\n\n\" Legacy function.  Syntastic no longer calls it, but we keep it\n\" around because other plugins (f.i. powerline) depend on it.\nfunction! g:SyntasticLoclist.hasErrorsOrWarningsToDisplay() \" {{{2\n    return !self.isEmpty()\nendfunction \" }}}2\n\n\" cache used by EchoCurrentError()\nfunction! g:SyntasticLoclist.messages(buf) \" {{{2\n    if !exists(\"self._cachedMessages\")\n        let self._cachedMessages = {}\n        let errors = self.errors() + self.warnings()\n\n        for e in errors\n            let b = e['bufnr']\n            let l = e['lnum']\n\n            if !has_key(self._cachedMessages, b)\n                let self._cachedMessages[b] = {}\n            endif\n\n            if !has_key(self._cachedMessages[b], l)\n                let self._cachedMessages[b][l] = e['text']\n            endif\n        endfor\n    endif\n\n    return get(self._cachedMessages, a:buf, {})\nendfunction \" }}}2\n\n\"Filter the list and return new native loclist\n\"e.g.\n\"  .filter({'bufnr': 10, 'type': 'e'})\n\"\n\"would return all errors for buffer 10.\n\"\n\"Note that all comparisons are done with ==?\nfunction! g:SyntasticLoclist.filter(filters) \" {{{2\n    let conditions = values(map(copy(a:filters), 's:translate(v:key, v:val)'))\n    let filter = len(conditions) == 1 ?\n        \\ conditions[0] : join(map(conditions, '\"(\" . v:val . \")\"'), ' && ')\n    return filter(copy(self._rawLoclist), filter)\nendfunction \" }}}2\n\nfunction! g:SyntasticLoclist.setloclist() \" {{{2\n    if !exists('w:syntastic_loclist_set')\n        let w:syntastic_loclist_set = 0\n    endif\n    let replace = g:syntastic_reuse_loc_lists && w:syntastic_loclist_set\n    call syntastic#log#debug(g:SyntasticDebugNotifications, 'loclist: setloclist ' . (replace ? '(replace)' : '(new)'))\n    call setloclist(0, self.getRaw(), replace ? 'r' : ' ')\n    let w:syntastic_loclist_set = 1\nendfunction \" }}}2\n\n\"display the cached errors for this buf in the location list\nfunction! g:SyntasticLoclist.show() \" {{{2\n    call syntastic#log#debug(g:SyntasticDebugNotifications, 'loclist: show')\n    call self.setloclist()\n\n    if !self.isEmpty()\n        let num = winnr()\n        execute \"lopen \" . syntastic#util#var('loc_list_height')\n        if num != winnr()\n            wincmd p\n        endif\n\n        \" try to find the loclist window and set w:quickfix_title\n        let errors = getloclist(0)\n        for buf in tabpagebuflist()\n            if buflisted(buf) && bufloaded(buf) && getbufvar(buf, '&buftype') ==# 'quickfix'\n                let win = bufwinnr(buf)\n                let title = getwinvar(win, 'quickfix_title')\n\n                \" TODO: try to make sure we actually own this window; sadly,\n                \" errors == getloclist(0) is the only somewhat safe way to\n                \" achieve that\n                if strpart(title, 0, 16) ==# ':SyntasticCheck ' ||\n                            \\ ( (title == '' || title ==# ':setloclist()') && errors == getloclist(0) )\n                    call setwinvar(win, 'quickfix_title', ':SyntasticCheck ' . self._name)\n                endif\n            endif\n        endfor\n    endif\nendfunction \" }}}2\n\n\" }}}1\n\n\" Non-method functions {{{1\n\nfunction! g:SyntasticLoclistHide() \" {{{2\n    call syntastic#log#debug(g:SyntasticDebugNotifications, 'loclist: hide')\n    silent! lclose\nendfunction \" }}}2\n\n\" }}}1\n\n\" Private functions {{{1\n\nfunction! s:translate(key, val) \" {{{2\n    return 'get(v:val, ' . string(a:key) . ', \"\") ==? ' . string(a:val)\nendfunction \" }}}2\n\n\" }}}1\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/syntastic/plugin/syntastic/modemap.vim",
    "content": "if exists(\"g:loaded_syntastic_modemap\") || !exists(\"g:loaded_syntastic_plugin\")\n    finish\nendif\nlet g:loaded_syntastic_modemap = 1\n\nlet g:SyntasticModeMap = {}\n\n\" Public methods {{{1\n\nfunction! g:SyntasticModeMap.Instance() \" {{{2\n    if !exists('s:SyntasticModeMapInstance')\n        let s:SyntasticModeMapInstance = copy(self)\n        call s:SyntasticModeMapInstance.synch()\n    endif\n\n    return s:SyntasticModeMapInstance\nendfunction \" }}}2\n\nfunction! g:SyntasticModeMap.synch() \" {{{2\n    if exists('g:syntastic_mode_map')\n        let self._mode = get(g:syntastic_mode_map, 'mode', 'active')\n        let self._activeFiletypes = get(g:syntastic_mode_map, 'active_filetypes', [])\n        let self._passiveFiletypes = get(g:syntastic_mode_map, 'passive_filetypes', [])\n    else\n        let self._mode = 'active'\n        let self._activeFiletypes = []\n        let self._passiveFiletypes = []\n    endif\nendfunction \" }}}2\n\nfunction! g:SyntasticModeMap.allowsAutoChecking(filetype) \" {{{2\n    let fts = split(a:filetype, '\\m\\.')\n\n    if self.isPassive()\n        return self._isOneFiletypeActive(fts)\n    else\n        return self._noFiletypesArePassive(fts)\n    endif\nendfunction \" }}}2\n\nfunction! g:SyntasticModeMap.isPassive() \" {{{2\n    return self._mode ==# 'passive'\nendfunction \" }}}2\n\nfunction! g:SyntasticModeMap.toggleMode() \" {{{2\n    call self.synch()\n\n    if self._mode ==# 'active'\n        let self._mode = 'passive'\n    else\n        let self._mode = 'active'\n    endif\n\n    \"XXX Changing a global variable.  Tsk, tsk...\n    if !exists('g:syntastic_mode_map')\n        let g:syntastic_mode_map = {}\n    endif\n    let g:syntastic_mode_map['mode'] = self._mode\nendfunction \" }}}2\n\nfunction! g:SyntasticModeMap.echoMode() \" {{{2\n    echo \"Syntastic: \" . self._mode . \" mode enabled\"\nendfunction \" }}}2\n\n\" }}}1\n\n\" Private methods {{{1\n\nfunction! g:SyntasticModeMap._isOneFiletypeActive(filetypes) \" {{{2\n    return !empty(filter(copy(a:filetypes), 'index(self._activeFiletypes, v:val) != -1'))\nendfunction \" }}}2\n\nfunction! g:SyntasticModeMap._noFiletypesArePassive(filetypes) \" {{{2\n    return empty(filter(copy(a:filetypes), 'index(self._passiveFiletypes, v:val) != -1'))\nendfunction \" }}}2\n\n\" }}}1\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/syntastic/plugin/syntastic/notifiers.vim",
    "content": "if exists(\"g:loaded_syntastic_notifiers\") || !exists(\"g:loaded_syntastic_plugin\")\n    finish\nendif\nlet g:loaded_syntastic_notifiers = 1\n\nlet g:SyntasticNotifiers = {}\n\nlet s:notifier_types = ['signs', 'balloons', 'highlighting', 'cursor', 'autoloclist']\n\n\" Public methods {{{1\n\nfunction! g:SyntasticNotifiers.Instance() \" {{{2\n    if !exists('s:SyntasticNotifiersInstance')\n        let s:SyntasticNotifiersInstance = copy(self)\n        call s:SyntasticNotifiersInstance._initNotifiers()\n    endif\n\n    return s:SyntasticNotifiersInstance\nendfunction \" }}}2\n\nfunction! g:SyntasticNotifiers.refresh(loclist) \" {{{2\n    call syntastic#log#debug(g:SyntasticDebugNotifications, 'notifiers: refresh')\n    for type in self._enabled_types\n        let class = substitute(type, '\\m.*', 'Syntastic\\u&Notifier', '')\n        if !has_key(g:{class}, 'enabled') || self._notifier[type].enabled()\n            call self._notifier[type].refresh(a:loclist)\n        endif\n    endfor\nendfunction \" }}}2\n\nfunction! g:SyntasticNotifiers.reset(loclist) \" {{{2\n    call syntastic#log#debug(g:SyntasticDebugNotifications, 'notifiers: reset')\n    for type in self._enabled_types\n        let class = substitute(type, '\\m.*', 'Syntastic\\u&Notifier', '')\n\n        \" reset notifiers regardless if they are enabled or not, since\n        \" the user might have disabled them since the last refresh();\n        \" notifiers MUST be prepared to deal with reset() when disabled\n        if has_key(g:{class}, 'reset')\n            call self._notifier[type].reset(a:loclist)\n        endif\n    endfor\nendfunction \" }}}2\n\n\" }}}1\n\n\" Private methods {{{1\n\nfunction! g:SyntasticNotifiers._initNotifiers() \" {{{2\n    let self._notifier = {}\n    for type in s:notifier_types\n        let class = substitute(type, '\\m.*', 'Syntastic\\u&Notifier', '')\n        let self._notifier[type] = g:{class}.New()\n    endfor\n\n    let self._enabled_types = copy(s:notifier_types)\nendfunction \" }}}2\n\n\" }}}1\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/syntastic/plugin/syntastic/registry.vim",
    "content": "if exists(\"g:loaded_syntastic_registry\") || !exists(\"g:loaded_syntastic_plugin\")\n    finish\nendif\nlet g:loaded_syntastic_registry = 1\n\n\" Initialisation {{{1\n\nlet s:defaultCheckers = {\n        \\ 'actionscript':['mxmlc'],\n        \\ 'ada':         ['gcc'],\n        \\ 'applescript': ['osacompile'],\n        \\ 'asciidoc':    ['asciidoc'],\n        \\ 'asm':         ['gcc'],\n        \\ 'bemhtml':     ['bemhtmllint'],\n        \\ 'c':           ['gcc'],\n        \\ 'chef':        ['foodcritic'],\n        \\ 'co':          ['coco'],\n        \\ 'cobol':       ['cobc'],\n        \\ 'coffee':      ['coffee', 'coffeelint'],\n        \\ 'coq':         ['coqtop'],\n        \\ 'cpp':         ['gcc'],\n        \\ 'cs':          ['mcs'],\n        \\ 'css':         ['csslint', 'phpcs'],\n        \\ 'cucumber':    ['cucumber'],\n        \\ 'cuda':        ['nvcc'],\n        \\ 'd':           ['dmd'],\n        \\ 'dart':        ['dartanalyzer'],\n        \\ 'docbk':       ['xmllint'],\n        \\ 'dustjs':      ['swiffer'],\n        \\ 'elixir':      ['elixir'],\n        \\ 'erlang':      ['escript'],\n        \\ 'eruby':       ['ruby'],\n        \\ 'fortran':     ['gfortran'],\n        \\ 'glsl':        ['cgc'],\n        \\ 'go':          ['go'],\n        \\ 'haml':        ['haml'],\n        \\ 'handlebars':  ['handlebars'],\n        \\ 'haskell':     ['ghc_mod', 'hdevtools', 'hlint'],\n        \\ 'haxe':        ['haxe'],\n        \\ 'hss':         ['hss'],\n        \\ 'html':        ['tidy'],\n        \\ 'java':        ['javac'],\n        \\ 'javascript':  ['jshint', 'jslint'],\n        \\ 'json':        ['jsonlint', 'jsonval'],\n        \\ 'less':        ['lessc'],\n        \\ 'lex':         ['flex'],\n        \\ 'limbo':       ['limbo'],\n        \\ 'lisp':        ['clisp'],\n        \\ 'llvm':        ['llvm'],\n        \\ 'lua':         ['luac'],\n        \\ 'matlab':      ['mlint'],\n        \\ 'nasm':        ['nasm'],\n        \\ 'nroff':       ['mandoc'],\n        \\ 'objc':        ['gcc'],\n        \\ 'objcpp':      ['gcc'],\n        \\ 'ocaml':       ['camlp4o'],\n        \\ 'perl':        ['perl', 'perlcritic'],\n        \\ 'php':         ['php', 'phpcs', 'phpmd'],\n        \\ 'po':          ['msgfmt'],\n        \\ 'pod':         ['podchecker'],\n        \\ 'puppet':      ['puppet', 'puppetlint'],\n        \\ 'python':      ['python', 'flake8', 'pylint'],\n        \\ 'racket':      ['racket'],\n        \\ 'rst':         ['rst2pseudoxml'],\n        \\ 'ruby':        ['mri'],\n        \\ 'rust':        ['rustc'],\n        \\ 'sass':        ['sass'],\n        \\ 'scala':       ['fsc', 'scalac'],\n        \\ 'scss':        ['sass', 'scss_lint'],\n        \\ 'sh':          ['sh', 'shellcheck'],\n        \\ 'slim':        ['slimrb'],\n        \\ 'tcl':         ['nagelfar'],\n        \\ 'tex':         ['lacheck', 'chktex'],\n        \\ 'texinfo':     ['makeinfo'],\n        \\ 'text':        ['atdtool'],\n        \\ 'twig':        ['twiglint'],\n        \\ 'typescript':  ['tsc'],\n        \\ 'vala':        ['valac'],\n        \\ 'verilog':     ['verilator'],\n        \\ 'vhdl':        ['ghdl'],\n        \\ 'vim':         ['vimlint'],\n        \\ 'xhtml':       ['tidy'],\n        \\ 'xml':         ['xmllint'],\n        \\ 'xslt':        ['xmllint'],\n        \\ 'yacc':        ['bison'],\n        \\ 'yaml':        ['jsyaml'],\n        \\ 'z80':         ['z80syntaxchecker'],\n        \\ 'zpt':         ['zptlint'],\n        \\ 'zsh':         ['zsh', 'shellcheck']\n    \\ }\n\nlet s:defaultFiletypeMap = {\n        \\ 'gentoo-metadata': 'xml',\n        \\ 'lhaskell': 'haskell',\n        \\ 'litcoffee': 'coffee'\n    \\ }\n\nlet g:SyntasticRegistry = {}\n\n\" }}}1\n\n\" Public methods {{{1\n\n\" TODO: Handling of filetype aliases: all public methods take aliases as\n\" parameters, all private methods take normalized filetypes.  Public methods\n\" are thus supposed to normalize filetypes before calling private methods.\n\nfunction! g:SyntasticRegistry.Instance() \" {{{2\n    if !exists('s:SyntasticRegistryInstance')\n        let s:SyntasticRegistryInstance = copy(self)\n        let s:SyntasticRegistryInstance._checkerRaw = {}\n        let s:SyntasticRegistryInstance._checkerMap = {}\n    endif\n\n    return s:SyntasticRegistryInstance\nendfunction \" }}}2\n\nfunction! g:SyntasticRegistry.CreateAndRegisterChecker(args) \" {{{2\n    let checker = g:SyntasticChecker.New(a:args)\n    let registry = g:SyntasticRegistry.Instance()\n    call registry._registerChecker(checker)\nendfunction \" }}}2\n\nfunction! g:SyntasticRegistry.isCheckable(ftalias) \" {{{2\n    let ft = s:normaliseFiletype(a:ftalias)\n    call self._loadCheckers(ft)\n    return !empty(self._checkerMap[ft])\nendfunction \" }}}2\n\nfunction! g:SyntasticRegistry.getCheckersMap(ftalias) \" {{{2\n    let ft = s:normaliseFiletype(a:ftalias)\n    call self._loadCheckers(ft)\n    return self._checkerMap[ft]\nendfunction \" }}}2\n\nfunction! g:SyntasticRegistry.getCheckers(ftalias, list) \" {{{2\n    let checkers_map = self.getCheckersMap(a:ftalias)\n    if empty(checkers_map)\n        return []\n    endif\n\n    let ft = s:normaliseFiletype(a:ftalias)\n    call self._checkDeprecation(ft)\n\n    let ft_list =\n        \\ !empty(a:list) ? a:list :\n        \\ exists('b:syntastic_checkers') ? b:syntastic_checkers :\n        \\ exists('g:syntastic_' . ft . '_checkers') ? g:syntastic_{ft}_checkers :\n        \\ get(s:defaultCheckers, ft, [])\n\n    return !empty(ft_list) ?\n        \\ self._filterCheckersByName(checkers_map, ft_list) : [checkers_map[keys(checkers_map)[0]]]\nendfunction \" }}}2\n\nfunction! g:SyntasticRegistry.getKnownFiletypes() \" {{{2\n    let types = keys(s:defaultCheckers)\n\n    call extend(types, keys(s:defaultFiletypeMap))\n\n    if exists('g:syntastic_filetype_map')\n        call extend(types, keys(g:syntastic_filetype_map))\n    endif\n\n    if exists('g:syntastic_extra_filetypes') && type(g:syntastic_extra_filetypes) == type([])\n        call extend(types, g:syntastic_extra_filetypes)\n    endif\n\n    return syntastic#util#unique(types)\nendfunction \" }}}2\n\nfunction! g:SyntasticRegistry.echoInfoFor(ftalias_list) \" {{{2\n    echomsg \"Syntastic info for filetype: \" . join(a:ftalias_list, '.')\n\n    let ft_list = syntastic#util#unique(map( copy(a:ftalias_list), 's:normaliseFiletype(v:val)' ))\n    if len(ft_list) != 1\n        let available = []\n        let active = []\n\n        for ft in ft_list\n            call extend(available, map( keys(self.getCheckersMap(ft)), 'ft . \"/\" . v:val' ))\n            call extend(active, map( self.getCheckers(ft, []), 'ft . \"/\" . v:val.getName()' ))\n        endfor\n    else\n        let ft = ft_list[0]\n        let available = keys(self.getCheckersMap(ft))\n        let active = map(self.getCheckers(ft, []), 'v:val.getName()')\n    endif\n\n    echomsg \"Available checker(s): \" . join(sort(available))\n    echomsg \"Currently enabled checker(s): \" . join(active)\nendfunction \" }}}2\n\n\" }}}1\n\n\" Private methods {{{1\n\nfunction! g:SyntasticRegistry._registerChecker(checker) abort \" {{{2\n    let ft = a:checker.getFiletype()\n\n    if !has_key(self._checkerRaw, ft)\n        let self._checkerRaw[ft] = []\n        let self._checkerMap[ft] = {}\n    endif\n\n    call self._validateUniqueName(a:checker)\n\n    let name = a:checker.getName()\n    call add(self._checkerRaw[ft], name)\n\n    if a:checker.isAvailable()\n        let self._checkerMap[ft][name] = a:checker\n    endif\nendfunction \" }}}2\n\nfunction! g:SyntasticRegistry._filterCheckersByName(checkers_map, list) \" {{{2\n    return filter( map(copy(a:list), 'get(a:checkers_map, v:val, {})'), '!empty(v:val)' )\nendfunction \" }}}2\n\nfunction! g:SyntasticRegistry._loadCheckers(filetype) \" {{{2\n    if has_key(self._checkerRaw, a:filetype)\n        return\n    endif\n\n    execute \"runtime! syntax_checkers/\" . a:filetype . \"/*.vim\"\n\n    if !has_key(self._checkerRaw, a:filetype)\n        let self._checkerRaw[a:filetype] = []\n        let self._checkerMap[a:filetype] = {}\n    endif\nendfunction \" }}}2\n\nfunction! g:SyntasticRegistry._validateUniqueName(checker) abort \" {{{2\n    let ft = a:checker.getFiletype()\n    let name = a:checker.getName()\n    if index(self._checkerRaw[ft], name) > -1\n        throw 'Syntastic: Duplicate syntax checker name: ' . ft . '/' . name\n    endif\nendfunction \" }}}2\n\n\" Check for obsolete variable g:syntastic_<filetype>_checker\nfunction! g:SyntasticRegistry._checkDeprecation(filetype) \" {{{2\n    if exists('g:syntastic_' . a:filetype . '_checker') && !exists('g:syntastic_' . a:filetype . '_checkers')\n        let g:syntastic_{a:filetype}_checkers = [g:syntastic_{a:filetype}_checker]\n        call syntastic#log#deprecationWarn('variable g:syntastic_' . a:filetype . '_checker is deprecated')\n    endif\nendfunction \" }}}2\n\n\" }}}1\n\n\" Private functions {{{1\n\n\"resolve filetype aliases, and replace - with _ otherwise we cant name\n\"syntax checker functions legally for filetypes like \"gentoo-metadata\"\nfunction! s:normaliseFiletype(ftalias) \" {{{2\n    let ft = get(s:defaultFiletypeMap, a:ftalias, a:ftalias)\n    let ft = get(g:syntastic_filetype_map, ft, ft)\n    let ft = substitute(ft, '\\m-', '_', 'g')\n    return ft\nendfunction \" }}}2\n\n\" }}}1\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/syntastic/plugin/syntastic/signs.vim",
    "content": "if exists(\"g:loaded_syntastic_notifier_signs\") || !exists(\"g:loaded_syntastic_plugin\")\n    finish\nendif\nlet g:loaded_syntastic_notifier_signs = 1\n\n\" Initialisation {{{1\n\n\" start counting sign ids at 5000, start here to hopefully avoid conflicting\n\" with any other code that places signs (not sure if this precaution is\n\" actually needed)\nlet s:first_sign_id = 5000\nlet s:next_sign_id = s:first_sign_id\n\nlet g:SyntasticSignsNotifier = {}\n\nlet s:setup_done = 0\n\n\" }}}1\n\n\" Public methods {{{1\n\nfunction! g:SyntasticSignsNotifier.New() \" {{{2\n    let newObj = copy(self)\n\n    if !s:setup_done\n        call self._setup()\n        let s:setup_done = 1\n    endif\n\n    return newObj\nendfunction \" }}}2\n\nfunction! g:SyntasticSignsNotifier.enabled() \" {{{2\n    return has('signs') && syntastic#util#var('enable_signs')\nendfunction \" }}}2\n\nfunction! g:SyntasticSignsNotifier.refresh(loclist) \" {{{2\n    call syntastic#log#debug(g:SyntasticDebugNotifications, 'signs: refresh')\n    let old_signs = copy(self._bufSignIds())\n    if self.enabled()\n        call self._signErrors(a:loclist)\n    endif\n    call self._removeSigns(old_signs)\n    let s:first_sign_id = s:next_sign_id\nendfunction \" }}}2\n\n\" }}}1\n\n\" Private methods {{{1\n\n\" One time setup: define our own sign types and highlighting\nfunction! g:SyntasticSignsNotifier._setup() \" {{{2\n    if has('signs')\n        if !hlexists('SyntasticErrorSign')\n            highlight link SyntasticErrorSign error\n        endif\n        if !hlexists('SyntasticWarningSign')\n            highlight link SyntasticWarningSign todo\n        endif\n        if !hlexists('SyntasticStyleErrorSign')\n            highlight link SyntasticStyleErrorSign SyntasticErrorSign\n        endif\n        if !hlexists('SyntasticStyleWarningSign')\n            highlight link SyntasticStyleWarningSign SyntasticWarningSign\n        endif\n        if !hlexists('SyntasticStyleErrorLine')\n            highlight link SyntasticStyleErrorLine SyntasticErrorLine\n        endif\n        if !hlexists('SyntasticStyleWarningLine')\n            highlight link SyntasticStyleWarningLine SyntasticWarningLine\n        endif\n\n        \" define the signs used to display syntax and style errors/warns\n        exe 'sign define SyntasticError text=' . g:syntastic_error_symbol .\n            \\ ' texthl=SyntasticErrorSign linehl=SyntasticErrorLine'\n        exe 'sign define SyntasticWarning text=' . g:syntastic_warning_symbol .\n            \\ ' texthl=SyntasticWarningSign linehl=SyntasticWarningLine'\n        exe 'sign define SyntasticStyleError text=' . g:syntastic_style_error_symbol .\n            \\ ' texthl=SyntasticStyleErrorSign linehl=SyntasticStyleErrorLine'\n        exe 'sign define SyntasticStyleWarning text=' . g:syntastic_style_warning_symbol .\n            \\ ' texthl=SyntasticStyleWarningSign linehl=SyntasticStyleWarningLine'\n    endif\nendfunction \" }}}2\n\n\" Place signs by all syntax errors in the buffer\nfunction! g:SyntasticSignsNotifier._signErrors(loclist) \" {{{2\n    let loclist = a:loclist\n    if !loclist.isEmpty()\n\n        \" errors some first, so that they are not masked by warnings\n        let buf = bufnr('')\n        let issues = copy(loclist.errors())\n        call extend(issues, loclist.warnings())\n        call filter(issues, 'v:val[\"bufnr\"] == buf')\n        let seen = {}\n\n        for i in issues\n            if !has_key(seen, i['lnum'])\n                let seen[i['lnum']] = 1\n\n                let sign_severity = i['type'] ==? 'W' ? 'Warning' : 'Error'\n                let sign_subtype = get(i, 'subtype', '')\n                let sign_type = 'Syntastic' . sign_subtype . sign_severity\n\n                execute \"sign place \" . s:next_sign_id . \" line=\" . i['lnum'] . \" name=\" . sign_type . \" buffer=\" . i['bufnr']\n                call add(self._bufSignIds(), s:next_sign_id)\n                let s:next_sign_id += 1\n            endif\n        endfor\n    endif\nendfunction \" }}}2\n\n\" Remove the signs with the given ids from this buffer\nfunction! g:SyntasticSignsNotifier._removeSigns(ids) \" {{{2\n    if has('signs')\n        for i in a:ids\n            execute \"sign unplace \" . i\n            call remove(self._bufSignIds(), index(self._bufSignIds(), i))\n        endfor\n    endif\nendfunction \" }}}2\n\n\" Get all the ids of the SyntaxError signs in the buffer\nfunction! g:SyntasticSignsNotifier._bufSignIds() \" {{{2\n    if !exists(\"b:syntastic_sign_ids\")\n        let b:syntastic_sign_ids = []\n    endif\n    return b:syntastic_sign_ids\nendfunction \" }}}2\n\n\" }}}1\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/syntastic/plugin/syntastic.vim",
    "content": "\"============================================================================\n\"File:        syntastic.vim\n\"Description: Vim plugin for on the fly syntax checking.\n\"Version:     3.4.0-pre\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_plugin\")\n    finish\nendif\nlet g:loaded_syntastic_plugin = 1\n\nif has('reltime')\n    let g:syntastic_start = reltime()\nendif\n\n\" Sanity checks {{{1\n\nfor s:feature in ['autocmd', 'eval', 'modify_fname', 'quickfix', 'user_commands']\n    if !has(s:feature)\n        call syntastic#log#error(\"need Vim compiled with feature \" . s:feature)\n        finish\n    endif\nendfor\n\nlet s:running_windows = syntastic#util#isRunningWindows()\nif !s:running_windows && executable('uname')\n    try\n        let s:uname = system('uname')\n    catch /\\m^Vim\\%((\\a\\+)\\)\\=:E484/\n        call syntastic#log#error(\"your shell \" . &shell . \" doesn't use traditional UNIX syntax for redirections\")\n        finish\n    endtry\nendif\n\n\" }}}1\n\n\" Defaults {{{1\n\nlet g:syntastic_defaults = {\n        \\ 'aggregate_errors':         0,\n        \\ 'always_populate_loc_list': 0,\n        \\ 'auto_jump':                0,\n        \\ 'auto_loc_list':            2,\n        \\ 'bash_hack':                1,\n        \\ 'check_on_open':            0,\n        \\ 'check_on_wq':              1,\n        \\ 'debug':                    0,\n        \\ 'echo_current_error':       1,\n        \\ 'enable_balloons':          1,\n        \\ 'enable_highlighting':      1,\n        \\ 'enable_signs':             1,\n        \\ 'error_symbol':             '>>',\n        \\ 'filetype_map':             {},\n        \\ 'full_redraws':             !(has('gui_running') || has('gui_macvim')),\n        \\ 'id_checkers':              1,\n        \\ 'ignore_files':             [],\n        \\ 'loc_list_height':          10,\n        \\ 'quiet_messages':           {},\n        \\ 'reuse_loc_lists':          (v:version >= 704),\n        \\ 'stl_format':               '[Syntax: line:%F (%t)]',\n        \\ 'style_error_symbol':       'S>',\n        \\ 'style_warning_symbol':     'S>',\n        \\ 'warning_symbol':           '>>'\n    \\ }\n\nfor s:key in keys(g:syntastic_defaults)\n    if !exists('g:syntastic_' . s:key)\n        let g:syntastic_{s:key} = g:syntastic_defaults[s:key]\n    endif\nendfor\n\nif exists(\"g:syntastic_quiet_warnings\")\n    call syntastic#log#deprecationWarn(\"variable g:syntastic_quiet_warnings is deprecated, please use let g:syntastic_quiet_messages = {'level': 'warnings'} instead\")\n    if g:syntastic_quiet_warnings\n        let s:quiet_warnings = get(g:syntastic_quiet_messages, 'type', [])\n        if type(s:quiet_warnings) != type([])\n            let s:quiet_warnings = [s:quiet_warnings]\n        endif\n        call add(s:quiet_warnings, 'warnings')\n        let g:syntastic_quiet_messages['type'] = s:quiet_warnings\n    endif\nendif\n\n\" }}}1\n\n\" Debug {{{1\n\nlet s:debug_dump_options = [\n        \\ 'shell',\n        \\ 'shellcmdflag',\n        \\ 'shellpipe',\n        \\ 'shellquote',\n        \\ 'shellredir',\n        \\ 'shellslash',\n        \\ 'shelltemp',\n        \\ 'shellxquote'\n    \\ ]\nif v:version > 703 || (v:version == 703 && has('patch446'))\n    call add(s:debug_dump_options, 'shellxescape')\nendif\n\n\" debug constants\nlet g:SyntasticDebugTrace         = 1\nlet g:SyntasticDebugLoclist       = 2\nlet g:SyntasticDebugNotifications = 4\nlet g:SyntasticDebugAutocommands  = 8\nlet g:SyntasticDebugVariables     = 16\n\n\" }}}1\n\nruntime! plugin/syntastic/*.vim\n\nlet s:registry = g:SyntasticRegistry.Instance()\nlet s:notifiers = g:SyntasticNotifiers.Instance()\nlet s:modemap = g:SyntasticModeMap.Instance()\n\n\" Commands {{{1\n\n\" @vimlint(EVL103, 1, a:cursorPos)\n\" @vimlint(EVL103, 1, a:cmdLine)\n\" @vimlint(EVL103, 1, a:argLead)\nfunction! s:CompleteCheckerName(argLead, cmdLine, cursorPos) \" {{{2\n    let checker_names = []\n    for ft in s:resolveFiletypes()\n        call extend(checker_names, keys(s:registry.getCheckersMap(ft)))\n    endfor\n    return join(checker_names, \"\\n\")\nendfunction \" }}}2\n\" @vimlint(EVL103, 0, a:cursorPos)\n\" @vimlint(EVL103, 0, a:cmdLine)\n\" @vimlint(EVL103, 0, a:argLead)\n\n\n\" @vimlint(EVL103, 1, a:cursorPos)\n\" @vimlint(EVL103, 1, a:cmdLine)\n\" @vimlint(EVL103, 1, a:argLead)\nfunction! s:CompleteFiletypes(argLead, cmdLine, cursorPos) \" {{{2\n    return join(s:registry.getKnownFiletypes(), \"\\n\")\nendfunction \" }}}2\n\" @vimlint(EVL103, 0, a:cursorPos)\n\" @vimlint(EVL103, 0, a:cmdLine)\n\" @vimlint(EVL103, 0, a:argLead)\n\ncommand! SyntasticToggleMode call s:ToggleMode()\ncommand! -nargs=* -complete=custom,s:CompleteCheckerName SyntasticCheck\n            \\ call s:UpdateErrors(0, <f-args>) <bar>\n            \\ call syntastic#util#redraw(g:syntastic_full_redraws)\ncommand! Errors call s:ShowLocList()\ncommand! -nargs=? -complete=custom,s:CompleteFiletypes SyntasticInfo\n            \\ call s:modemap.echoMode() |\n            \\ call s:registry.echoInfoFor(s:resolveFiletypes(<f-args>))\ncommand! SyntasticReset\n            \\ call s:ClearCache() |\n            \\ call s:notifiers.refresh(g:SyntasticLoclist.New([]))\ncommand! SyntasticSetLoclist call g:SyntasticLoclist.current().setloclist()\n\n\" }}}1\n\n\" Autocommands and hooks {{{1\n\naugroup syntastic\n    autocmd BufReadPost * call s:BufReadPostHook()\n    autocmd BufWritePost * call s:BufWritePostHook()\n\n    autocmd BufWinEnter * call s:BufWinEnterHook()\n\n    \" TODO: the next autocmd should be \"autocmd BufWinLeave * if &buftype == '' | lclose | endif\"\n    \" but in recent versions of Vim lclose can no longer be called from BufWinLeave\n    autocmd BufEnter * call s:BufEnterHook()\naugroup END\n\nif v:version > 703 || (v:version == 703 && has('patch544'))\n    \" QuitPre was added in Vim 7.3.544\n    augroup syntastic\n        autocmd QuitPre * call s:QuitPreHook()\n    augroup END\nendif\n\nfunction! s:BufReadPostHook() \" {{{2\n    if g:syntastic_check_on_open\n        call syntastic#log#debug(g:SyntasticDebugAutocommands,\n            \\ 'autocmd: BufReadPost, buffer ' . bufnr(\"\") . ' = ' . string(bufname(str2nr(bufnr(\"\")))))\n        call s:UpdateErrors(1)\n    endif\nendfunction \" }}}2\n\nfunction! s:BufWritePostHook() \" {{{2\n    call syntastic#log#debug(g:SyntasticDebugAutocommands,\n        \\ 'autocmd: BufWritePost, buffer ' . bufnr(\"\") . ' = ' . string(bufname(str2nr(bufnr(\"\")))))\n    call s:UpdateErrors(1)\nendfunction \" }}}2\n\nfunction! s:BufWinEnterHook() \" {{{2\n    call syntastic#log#debug(g:SyntasticDebugAutocommands,\n        \\ 'autocmd: BufWinEnter, buffer ' . bufnr(\"\") . ' = ' . string(bufname(str2nr(bufnr(\"\")))) .\n        \\ ', &buftype = ' . string(&buftype))\n    if &buftype == ''\n        call s:notifiers.refresh(g:SyntasticLoclist.current())\n    endif\nendfunction \" }}}2\n\nfunction! s:BufEnterHook() \" {{{2\n    call syntastic#log#debug(g:SyntasticDebugAutocommands,\n        \\ 'autocmd: BufEnter, buffer ' . bufnr(\"\") . ' = ' . string(bufname(str2nr(bufnr(\"\")))) .\n        \\ ', &buftype = ' . string(&buftype))\n    \" TODO: at this point there is no b:syntastic_loclist\n    let loclist = filter(getloclist(0), 'v:val[\"valid\"] == 1')\n    let buffers = syntastic#util#unique(map( loclist, 'v:val[\"bufnr\"]' ))\n    if &buftype == 'quickfix' && !empty(loclist) && empty(filter( buffers, 'syntastic#util#bufIsActive(v:val)' ))\n        call g:SyntasticLoclistHide()\n    endif\nendfunction \" }}}2\n\nfunction! s:QuitPreHook() \" {{{2\n    call syntastic#log#debug(g:SyntasticDebugAutocommands,\n        \\ 'autocmd: QuitPre, buffer ' . bufnr(\"\") . ' = ' . string(bufname(str2nr(bufnr(\"\")))))\n    let b:syntastic_skip_checks = !g:syntastic_check_on_wq\n    call g:SyntasticLoclistHide()\nendfunction \" }}}2\n\n\" }}}1\n\n\" Main {{{1\n\n\"refresh and redraw all the error info for this buf when saving or reading\nfunction! s:UpdateErrors(auto_invoked, ...) \" {{{2\n    if s:skipFile()\n        return\n    endif\n\n    call s:modemap.synch()\n    let run_checks = !a:auto_invoked || s:modemap.allowsAutoChecking(&filetype)\n    if run_checks\n        call s:CacheErrors(a:000)\n    endif\n\n    let loclist = g:SyntasticLoclist.current()\n\n    \" populate loclist and jump {{{3\n    let do_jump = syntastic#util#var('auto_jump')\n    if do_jump == 2\n        let first = loclist.getFirstIssue()\n        let type = get(first, 'type', '')\n        let do_jump = type ==? 'E'\n    endif\n\n    let w:syntastic_loclist_set = 0\n    if syntastic#util#var('always_populate_loc_list') || do_jump\n        call syntastic#log#debug(g:SyntasticDebugNotifications, 'loclist: setloclist (new)')\n        call setloclist(0, loclist.getRaw())\n        let w:syntastic_loclist_set = 1\n        if run_checks && do_jump && !loclist.isEmpty()\n            call syntastic#log#debug(g:SyntasticDebugNotifications, 'loclist: jump')\n            silent! lrewind\n\n            \" XXX: Vim doesn't call autocmd commands in a predictible\n            \" order, which can lead to missing filetype when jumping\n            \" to a new file; the following is a workaround for the\n            \" resulting brain damage\n            if &filetype == ''\n                silent! filetype detect\n            endif\n        endif\n    endif\n    \" }}}3\n\n    call s:notifiers.refresh(loclist)\nendfunction \" }}}2\n\n\"clear the loc list for the buffer\nfunction! s:ClearCache() \" {{{2\n    call s:notifiers.reset(g:SyntasticLoclist.current())\n    unlet! b:syntastic_loclist\nendfunction \" }}}2\n\n\"detect and cache all syntax errors in this buffer\nfunction! s:CacheErrors(checker_names) \" {{{2\n    call s:ClearCache()\n    let newLoclist = g:SyntasticLoclist.New([])\n\n    if !s:skipFile()\n        \" debug logging {{{3\n        call syntastic#log#debugShowOptions(g:SyntasticDebugTrace, s:debug_dump_options)\n        call syntastic#log#debugDump(g:SyntasticDebugVariables)\n        call syntastic#log#debugShowVariables(g:SyntasticDebugTrace, 'aggregate_errors')\n        call syntastic#log#debug(g:SyntasticDebugTrace, 'getcwd() = ' . getcwd())\n        \" }}}3\n\n        let filetypes = s:resolveFiletypes()\n        let aggregate_errors = syntastic#util#var('aggregate_errors')\n        let decorate_errors = (aggregate_errors || len(filetypes) > 1) && syntastic#util#var('id_checkers')\n\n        let clist = []\n        for type in filetypes\n            call extend(clist, s:registry.getCheckers(type, a:checker_names))\n        endfor\n\n        let names = []\n        for checker in clist\n            let type = checker.getFiletype()\n            let name = checker.getName()\n            call syntastic#log#debug(g:SyntasticDebugTrace, 'CacheErrors: Invoking checker: ' . type . '/' . name)\n\n            let loclist = checker.getLocList()\n\n            if !loclist.isEmpty()\n                if decorate_errors\n                    call loclist.decorate(type, name)\n                endif\n                call add(names, [type, name])\n\n                let newLoclist = newLoclist.extend(loclist)\n\n                if !aggregate_errors\n                    break\n                endif\n            endif\n        endfor\n\n        \" set names {{{3\n        if !empty(names)\n            if len(syntastic#util#unique(map( copy(names), 'v:val[0]' ))) == 1\n                let type = names[0][0]\n                let name = join(map(names, 'v:val[1]'), ', ')\n                call newLoclist.setName( name . ' ('. type . ')' )\n            else\n                \" checkers from mixed types\n                call newLoclist.setName(join(map(names, 'v:val[0] . \"/\" . v:val[1]'), ', '))\n            endif\n        endif\n        \" }}}3\n\n        \" issue warning about no active checkers {{{3\n        if empty(clist)\n            if !empty(a:checker_names)\n                if len(a:checker_names) == 1\n                    call syntastic#log#warn('checker ' . a:checker_names[0] . ' is not available')\n                else\n                    call syntastic#log#warn('checkers ' . join(a:checker_names, ', ') . ' are not available')\n                endif\n            else\n                call syntastic#log#debug(g:SyntasticDebugTrace, 'CacheErrors: no checkers available for ' . &filetype)\n            endif\n        endif\n        \" }}}3\n\n        call syntastic#log#debug(g:SyntasticDebugLoclist, 'aggregated:', newLoclist)\n    endif\n\n    let b:syntastic_loclist = newLoclist\nendfunction \" }}}2\n\nfunction! s:ToggleMode() \" {{{2\n    call s:modemap.toggleMode()\n    call s:ClearCache()\n    call s:UpdateErrors(1)\n    call s:modemap.echoMode()\nendfunction \" }}}2\n\n\"display the cached errors for this buf in the location list\nfunction! s:ShowLocList() \" {{{2\n    call g:SyntasticLoclist.current().show()\nendfunction \" }}}2\n\n\"Emulates the :lmake command. Sets up the make environment according to the\n\"options given, runs make, resets the environment, returns the location list\n\"\n\"a:options can contain the following keys:\n\"    'makeprg'\n\"    'errorformat'\n\"\n\"The corresponding options are set for the duration of the function call. They\n\"are set with :let, so dont escape spaces.\n\"\n\"a:options may also contain:\n\"   'defaults' - a dict containing default values for the returned errors\n\"   'subtype' - all errors will be assigned the given subtype\n\"   'preprocess' - a function to be applied to the error file before parsing errors\n\"   'postprocess' - a list of functions to be applied to the error list\n\"   'cwd' - change directory to the given path before running the checker\n\"   'returns' - a list of valid exit codes for the checker\nfunction! SyntasticMake(options) \" {{{2\n    call syntastic#log#debug(g:SyntasticDebugTrace, 'SyntasticMake: called with options:', a:options)\n\n    \" save options and locale env variables {{{3\n    let old_shell = &shell\n    let old_shellredir = &shellredir\n    let old_local_errorformat = &l:errorformat\n    let old_errorformat = &errorformat\n    let old_cwd = getcwd()\n    let old_lc_messages = $LC_MESSAGES\n    let old_lc_all = $LC_ALL\n    \" }}}3\n\n    call s:bashHack()\n\n    if has_key(a:options, 'errorformat')\n        let &errorformat = a:options['errorformat']\n    endif\n\n    if has_key(a:options, 'cwd')\n        execute 'lcd ' . fnameescape(a:options['cwd'])\n    endif\n\n    let $LC_MESSAGES = 'C'\n    let $LC_ALL = ''\n    let err_lines = split(system(a:options['makeprg']), \"\\n\", 1)\n    let $LC_ALL = old_lc_all\n    let $LC_MESSAGES = old_lc_messages\n\n    call syntastic#log#debug(g:SyntasticDebugLoclist, 'checker output:', err_lines)\n\n    if has_key(a:options, 'preprocess')\n        let err_lines = call('syntastic#preprocess#' . a:options['preprocess'], [err_lines])\n        call syntastic#log#debug(g:SyntasticDebugLoclist, 'preprocess:', err_lines)\n    endif\n    lgetexpr err_lines\n\n    let errors = copy(getloclist(0))\n\n    if has_key(a:options, 'cwd')\n        execute 'lcd ' . fnameescape(old_cwd)\n    endif\n\n    silent! lolder\n\n    \" restore options {{{3\n    let &errorformat = old_errorformat\n    let &l:errorformat = old_local_errorformat\n    let &shellredir = old_shellredir\n    let &shell = old_shell\n    \" }}}3\n\n    if !s:running_windows && (s:uname() =~ \"FreeBSD\" || s:uname() =~ \"OpenBSD\")\n        call syntastic#util#redraw(g:syntastic_full_redraws)\n    endif\n\n    call syntastic#log#debug(g:SyntasticDebugLoclist, 'raw loclist:', errors)\n\n    if has_key(a:options, 'returns') && index(a:options['returns'], v:shell_error) == -1\n        throw 'Syntastic: checker error'\n    endif\n\n    if has_key(a:options, 'defaults')\n        call s:addToErrors(errors, a:options['defaults'])\n    endif\n\n    \" Add subtype info if present.\n    if has_key(a:options, 'subtype')\n        call s:addToErrors(errors, { 'subtype': a:options['subtype'] })\n    endif\n\n    if has_key(a:options, 'postprocess') && !empty(a:options['postprocess'])\n        for rule in a:options['postprocess']\n            let errors = call('syntastic#postprocess#' . rule, [errors])\n        endfor\n        call syntastic#log#debug(g:SyntasticDebugLoclist, 'postprocess:', errors)\n    endif\n\n    return errors\nendfunction \" }}}2\n\n\"return a string representing the state of buffer according to\n\"g:syntastic_stl_format\n\"\n\"return '' if no errors are cached for the buffer\nfunction! SyntasticStatuslineFlag() \" {{{2\n    return g:SyntasticLoclist.current().getStatuslineFlag()\nendfunction \" }}}2\n\n\" }}}1\n\n\" Utilities {{{1\n\nfunction! s:resolveFiletypes(...) \" {{{2\n    let type = a:0 ? a:1 : &filetype\n    return split( get(g:syntastic_filetype_map, type, type), '\\m\\.' )\nendfunction \" }}}2\n\nfunction! s:ignoreFile(filename) \" {{{2\n    let fname = fnamemodify(a:filename, ':p')\n    for pattern in g:syntastic_ignore_files\n        if fname =~# pattern\n            return 1\n        endif\n    endfor\n    return 0\nendfunction \" }}}2\n\n\" Skip running in special buffers\nfunction! s:skipFile() \" {{{2\n    let force_skip = exists('b:syntastic_skip_checks') ? b:syntastic_skip_checks : 0\n    let fname = expand('%')\n    return force_skip || (&buftype != '') || !filereadable(fname) || getwinvar(0, '&diff') || s:ignoreFile(fname)\nendfunction \" }}}2\n\n\" Take a list of errors and add default values to them from a:options\nfunction! s:addToErrors(errors, options) \" {{{2\n    for err in a:errors\n        for key in keys(a:options)\n            if !has_key(err, key) || empty(err[key])\n                let err[key] = a:options[key]\n            endif\n        endfor\n    endfor\n\n    return a:errors\nendfunction \" }}}2\n\n\" The script changes &shellredir and &shell to stop the screen flicking when\n\" shelling out to syntax checkers. Not all OSs support the hacks though.\nfunction! s:bashHack() \" {{{2\n    if !exists('s:bash')\n        if !s:running_windows && (s:uname() !~# \"FreeBSD\") && (s:uname() !~# \"OpenBSD\")\n            let s:bash =\n                \\ executable('/usr/local/bin/bash') ? '/usr/local/bin/bash' :\n                \\ executable('/bin/bash') ? '/bin/bash' : ''\n        else\n            let s:bash = ''\n        endif\n    endif\n\n    if g:syntastic_bash_hack && s:bash != ''\n        let &shell = s:bash\n        let &shellredir = '&>'\n    endif\nendfunction \" }}}2\n\nfunction! s:uname() \" {{{2\n    if !exists('s:uname')\n        let s:uname = system('uname')\n    endif\n    return s:uname\nendfunction \" }}}2\n\n\" }}}1\n\n\" vim: set sw=4 sts=4 et fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/actionscript/mxmlc.vim",
    "content": "\"============================================================================\n\"File:        mxmlc.vim\n\"Description: ActionScript syntax checker - using mxmlc\n\"Maintainer:  Andy Earnshaw <andyearnshaw@gmail.com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists('g:loaded_syntastic_actionscript_mxmlc_checker')\n    finish\nendif\nlet g:loaded_syntastic_actionscript_mxmlc_checker = 1\n\nif !exists('g:syntastic_actionscript_mxmlc_conf')\n    let g:syntastic_actionscript_mxmlc_conf = ''\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_actionscript_mxmlc_GetHighlightRegex(item)\n    let term = ''\n\n    if match(a:item['text'], '\\mvariable ''') > -1\n        let term = matchstr(a:item['text'], '\\m''\\zs[^'']\\+\\ze''')\n\n    elseif match(a:item['text'], 'expected a definition keyword') > -1\n        let term = matchstr(a:item['text'], '\\mnot \\zs[^.]\\+\\ze\\.')\n\n    elseif match(a:item['text'], '\\mundefined \\%(property\\|method\\)') > -1\n        let term = matchstr(a:item['text'], '\\mundefined \\%(property\\|method\\) \\zs[^. ]\\+\\ze')\n\n    elseif match(a:item['text'], 'could not be found') > -1\n        let term = matchstr(a:item['text'], '\\m \\zs\\S\\+\\ze could not be found')\n\n    elseif match(a:item['text'], 'Type was not found') > -1\n        let term = matchstr(a:item['text'], '\\m: \\zs[^.]\\+\\zs\\.')\n\n    endif\n\n    return term != '' ? '\\V\\<' . term . '\\>' : ''\nendfunction\n\nfunction! SyntaxCheckers_actionscript_mxmlc_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args_before': (g:syntastic_actionscript_mxmlc_conf != '' ?\n        \\   ' -load-config+=' . g:syntastic_actionscript_mxmlc_conf : ''),\n        \\ 'args_after': '-output=' . syntastic#util#DevNull() })\n\n    let errorformat =\n        \\ '%f(%l): col: %c %trror: %m,' .\n        \\ '%f(%l): col: %c %tarning: %m,' .\n        \\ '%f: %trror: %m,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'actionscript',\n    \\ 'name': 'mxmlc'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/ada/gcc.vim",
    "content": "\"============================================================================\n\"File:        ada.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Alfredo Di Napoli <alfredo.dinapoli@gmail.com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law.\n\"\n\"============================================================================\n\nif exists('g:loaded_syntastic_ada_gcc_checker')\n    finish\nendif\nlet g:loaded_syntastic_ada_gcc_checker = 1\n\nif !exists('g:syntastic_ada_compiler_options')\n    let g:syntastic_ada_compiler_options = ''\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_ada_gcc_IsAvailable() dict\n    if !exists('g:syntastic_ada_compiler')\n        let g:syntastic_ada_compiler = self.getExec()\n    endif\n    return executable(expand(g:syntastic_ada_compiler))\nendfunction\n\nfunction! SyntaxCheckers_ada_gcc_GetLocList() dict\n    return syntastic#c#GetLocList('ada', 'gcc', {\n        \\ 'errorformat':\n        \\     '%-G%f:%s:,' .\n        \\     '%f:%l:%c: %m,' .\n        \\     '%f:%l: %m',\n        \\ 'main_flags': '-c -x ada -fsyntax-only',\n        \\ 'header_flags': '-x ada',\n        \\ 'header_names': '\\.ads$' })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'ada',\n    \\ 'name': 'gcc' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/applescript/osacompile.vim",
    "content": "\"==============================================================================\n\"       FileName: applescript.vim\n\"           Desc: Syntax checking plugin for syntastic.vim\n\"         Author: Zhao Cai\n\"          Email: caizhaoff@gmail.com\n\"        Version: 0.2.1\n\"   Date Created: Thu 09 Sep 2011 10:30:09 AM EST\n\"  Last Modified: Fri 09 Dec 2011 01:10:24 PM EST\n\"\n\"        History: 0.1.0 - working, but it will run the script everytime to check\n\"                 syntax. Should use osacompile but strangely it does not give\n\"                 errors.\n\"\n\"                 0.2.0 - switch to osacompile, it gives less errors compared\n\"                 with osascript.\n\"\n\"                 0.2.1 - remove g:syntastic_applescript_tempfile. use\n\"                 tempname() instead.\n\"\n\"        License: This program is free software. It comes without any\n\"        warranty, to the extent permitted by applicable law. You can\n\"        redistribute it and/or modify it under the terms of the Do What The\n\"        Fuck You Want To Public License, Version 2, as published by Sam\n\"        Hocevar.  See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_applescript_osacompile_checker\")\n    finish\nendif\nlet g:loaded_syntastic_applescript_osacompile_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_applescript_osacompile_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '-o ' . tempname() . '.scpt' })\n    let errorformat = '%f:%l:%m'\n    return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'applescript',\n    \\ 'name': 'osacompile' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/asciidoc/asciidoc.vim",
    "content": "\"============================================================================\n\"File:        asciidoc.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_asciidoc_asciidoc_checker\")\n    finish\nendif\nlet g:loaded_syntastic_asciidoc_asciidoc_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_asciidoc_asciidoc_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': syntastic#c#NullOutput() })\n\n    let errorformat =\n        \\ '%Easciidoc: %tRROR: %f: line %l: %m,' .\n        \\ '%Easciidoc: %tRROR: %f: %m,' .\n        \\ '%Easciidoc: FAILED: %f: line %l: %m,' .\n        \\ '%Easciidoc: FAILED: %f: %m,' .\n        \\ '%Wasciidoc: %tARNING: %f: line %l: %m,' .\n        \\ '%Wasciidoc: %tARNING: %f: %m,' .\n        \\ '%Wasciidoc: DEPRECATED: %f: line %l: %m,' .\n        \\ '%Wasciidoc: DEPRECATED: %f: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'returns': [0, 1] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'asciidoc',\n    \\ 'name': 'asciidoc'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/asm/gcc.vim",
    "content": "\"============================================================================\n\"File:        gcc.vim\n\"Description: Syntax checking for at&t and intel assembly files with gcc\n\"Maintainer:  Josh Rahm <joshuarahm@gmail.com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists('g:loaded_syntastic_asm_gcc_checker')\n    finish\nendif\nlet g:loaded_syntastic_asm_gcc_checker = 1\n\nif !exists('g:syntastic_asm_compiler_options')\n    let g:syntastic_asm_compiler_options = ''\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_asm_gcc_IsAvailable() dict\n    if !exists('g:syntastic_asm_compiler')\n        let g:syntastic_asm_compiler = self.getExec()\n    endif\n    return executable(expand(g:syntastic_asm_compiler))\nendfunction\n\nfunction! SyntaxCheckers_asm_gcc_GetLocList() dict\n    return syntastic#c#GetLocList('asm', 'gcc', {\n        \\ 'errorformat':\n        \\     '%-G%f:%s:,' .\n        \\     '%f:%l:%c: %trror: %m,' .\n        \\     '%f:%l:%c: %tarning: %m,' .\n        \\     '%f:%l: %m',\n        \\ 'main_flags': '-x assembler -fsyntax-only -masm=' . s:GetDialect() })\nendfunction\n\nfunction! s:GetDialect()\n    return exists('g:syntastic_asm_dialect') ? g:syntastic_asm_dialect :\n        \\ expand('%:e') ==? 'asm' ? 'intel' : 'att'\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'asm',\n    \\ 'name': 'gcc' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/bemhtml/bemhtmllint.vim",
    "content": "\"============================================================================\n\"File:        bemhtmllint.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Sergej Tatarincev <s.tatarincev at yandex.ua>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\"\nif exists(\"g:loaded_syntastic_bemhtml_bemhtmllint_checker\")\n    finish\nendif\n\nlet g:loaded_syntastic_bemhtml_bemhtmllint_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction SyntaxCheckers_bemhtml_bemhtmllint_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n    let errorformat = '%f:%l:%c: %m'\n    return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'bemhtml',\n    \\ 'name': 'bemhtmllint',\n    \\ 'exec': 'bemhtml-lint' })\n\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/c/avrgcc.vim",
    "content": "\"============================================================================\n\"File:        avrgcc.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Karel <karelishere at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists('g:loaded_syntastic_c_avrgcc_checker')\n    finish\nendif\nlet g:loaded_syntastic_c_avrgcc_checker = 1\n\nif !exists('g:syntastic_avrgcc_config_file')\n    let g:syntastic_avrgcc_config_file = '.syntastic_avrgcc_config'\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_c_avrgcc_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args_before': syntastic#c#ReadConfig(g:syntastic_avrgcc_config_file),\n        \\ 'args_after': '-x c -fsyntax-only' })\n\n    let errorformat =\n        \\ '%-G%f:%s:,' .\n        \\ '%-G%f:%l: %#error: %#(Each undeclared identifier is reported only%.%#,' .\n        \\ '%-G%f:%l: %#error: %#for each function it appears%.%#,' .\n        \\ '%-GIn file included%.%#,' .\n        \\ '%-G %#from %f:%l\\,,' .\n        \\ '%f:%l:%c: %trror: %m,' .\n        \\ '%f:%l:%c: %tarning: %m,' .\n        \\ '%f:%l:%c: %m,' .\n        \\ '%f:%l: %trror: %m,' .\n        \\ '%f:%l: %tarning: %m,'.\n        \\ '%f:%l: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'postprocess': ['compressWhitespace'] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'c',\n    \\ 'name': 'avrgcc',\n    \\ 'exec': 'avr-gcc'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/c/checkpatch.vim",
    "content": "\"============================================================================\n\"File:        checkpatch.vim\n\"Description: Syntax checking plugin for syntastic.vim using checkpatch.pl\n\"Maintainer:  Daniel Walker <dwalker at fifo99 dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_c_checkpatch_checker\")\n    finish\nendif\nlet g:loaded_syntastic_c_checkpatch_checker = 1\n\n\" Bail if the user doesn't have `checkpatch.pl` or ./scripts/checkpatch.pl installed.\nif executable(\"checkpatch.pl\")\n    let g:syntastic_c_checker_checkpatch_location = 'checkpatch.pl'\nelseif executable(\"./scripts/checkpatch.pl\")\n    let g:syntastic_c_checker_checkpatch_location = './scripts/checkpatch.pl'\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_c_checkpatch_IsAvailable() dict\n    return exists(\"g:syntastic_c_checker_checkpatch_location\")\nendfunction\n\nfunction! SyntaxCheckers_c_checkpatch_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'exe': g:syntastic_c_checker_checkpatch_location,\n        \\ 'args_after': '--no-summary --no-tree --terse --file' })\n\n    let errorformat =\n        \\ '%f:%l: %tARNING: %m,' .\n        \\ '%f:%l: %tRROR: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'returns': [0, 1],\n        \\ 'subtype': 'Style' })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'c',\n    \\ 'name': 'checkpatch',\n    \\ 'exec': 'checkpatch.pl'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/c/cppcheck.vim",
    "content": "\"============================================================================\n\"File:        cppcheck.vim\n\"Description: Syntax checking plugin for syntastic.vim using cppcheck.pl\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\"\n\" The setting 'g:syntastic_cppcheck_config_file' allows you to define a file\n\" that contains additional compiler arguments like include directories or\n\" CFLAGS. The file is expected to contain one option per line. If none is\n\" given the filename defaults to '.syntastic_cppcheck_config':\n\"\n\"   let g:syntastic_cppcheck_config_file = '.config'\n\nif exists(\"g:loaded_syntastic_c_cppcheck_checker\")\n    finish\nendif\nlet g:loaded_syntastic_c_cppcheck_checker = 1\n\nif !exists('g:syntastic_cppcheck_config_file')\n    let g:syntastic_cppcheck_config_file = '.syntastic_cppcheck_config'\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_c_cppcheck_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args': syntastic#c#ReadConfig(g:syntastic_cppcheck_config_file),\n        \\ 'args_after': '-q --enable=style' })\n\n    let errorformat =\n        \\ '[%f:%l]: (%trror) %m,' .\n        \\ '[%f:%l]: (%tarning) %m,' .\n        \\ '[%f:%l]: (%ttyle) %m,' .\n        \\ '[%f:%l]: (%terformance) %m,' .\n        \\ '[%f:%l]: (%tortability) %m,' .\n        \\ '[%f:%l]: (%tnformation) %m,' .\n        \\ '[%f:%l]: (%tnconclusive) %m,' .\n        \\ '%-G%.%#'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'preprocess': 'cppcheck',\n        \\ 'returns': [0] })\n\n    for e in loclist\n        if e['type'] =~? '\\m^[SPI]'\n            let e['type'] = 'w'\n            let e['subtype'] = 'Style'\n        endif\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'c',\n    \\ 'name': 'cppcheck'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/c/gcc.vim",
    "content": "\"============================================================================\n\"File:        c.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Gregor Uhlenheuer <kongo2002 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists('g:loaded_syntastic_c_gcc_checker')\n    finish\nendif\nlet g:loaded_syntastic_c_gcc_checker = 1\n\nif !exists('g:syntastic_c_compiler_options')\n    let g:syntastic_c_compiler_options = '-std=gnu99'\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_c_gcc_IsAvailable() dict\n    if !exists('g:syntastic_c_compiler')\n        let g:syntastic_c_compiler = executable(self.getExec()) ? self.getExec() : 'clang'\n    endif\n    return executable(expand(g:syntastic_c_compiler))\nendfunction\n\nfunction! SyntaxCheckers_c_gcc_GetLocList() dict\n    return syntastic#c#GetLocList('c', 'gcc', {\n        \\ 'errorformat':\n        \\     '%-G%f:%s:,' .\n        \\     '%-G%f:%l: %#error: %#(Each undeclared identifier is reported only%.%#,' .\n        \\     '%-G%f:%l: %#error: %#for each function it appears%.%#,' .\n        \\     '%-GIn file included%.%#,' .\n        \\     '%-G %#from %f:%l\\,,' .\n        \\     '%f:%l:%c: %trror: %m,' .\n        \\     '%f:%l:%c: %tarning: %m,' .\n        \\     '%f:%l:%c: %m,' .\n        \\     '%f:%l: %trror: %m,' .\n        \\     '%f:%l: %tarning: %m,'.\n        \\     '%f:%l: %m',\n        \\ 'main_flags': '-x c -fsyntax-only',\n        \\ 'header_flags': '-x c',\n        \\ 'header_names': '\\m\\.h$' })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'c',\n    \\ 'name': 'gcc' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/c/make.vim",
    "content": "\"============================================================================\n\"File:        make.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Gregor Uhlenheuer <kongo2002 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists('g:loaded_syntastic_c_make_checker')\n    finish\nendif\nlet g:loaded_syntastic_c_make_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_c_make_GetLocList() dict\n    let makeprg = self.getExecEscaped() . ' -sk'\n\n    let errorformat =\n        \\ '%-G%f:%s:,' .\n        \\ '%-G%f:%l: %#error: %#(Each undeclared identifier is reported only%.%#,' .\n        \\ '%-G%f:%l: %#error: %#for each function it appears%.%#,' .\n        \\ '%-GIn file included%.%#,' .\n        \\ '%-G %#from %f:%l\\,,' .\n        \\ '%f:%l:%c: %trror: %m,' .\n        \\ '%f:%l:%c: %tarning: %m,' .\n        \\ '%f:%l:%c: %m,' .\n        \\ '%f:%l: %trror: %m,' .\n        \\ '%f:%l: %tarning: %m,'.\n        \\ '%f:%l: %m'\n\n    if exists('g:syntastic_c_errorformat')\n        let errorformat = g:syntastic_c_errorformat\n    endif\n\n    \" process makeprg\n    let errors = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\n\n    \" filter the processed errors if desired\n    if exists('g:syntastic_c_remove_include_errors') && g:syntastic_c_remove_include_errors != 0\n        return filter(errors, 'has_key(v:val, \"bufnr\") && v:val[\"bufnr\"] == ' . bufnr(''))\n    else\n        return errors\n    endif\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'c',\n    \\ 'name': 'make'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/c/oclint.vim",
    "content": "\"============================================================================\n\"File:        oclint.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  \"UnCO\" Lin <undercooled aT lavabit com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\"\n\" The setting 'g:syntastic_oclint_config_file' allows you to define a file\n\" that contains additional compiler arguments like include directories or\n\" CFLAGS. The file is expected to contain one option per line. If none is\n\" given the filename defaults to '.syntastic_oclint_config':\n\"\n\"   let g:syntastic_oclint_config_file = '.config'\n\nif exists(\"g:loaded_syntastic_c_oclint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_c_oclint_checker = 1\n\nif !exists('g:syntastic_oclint_config_file')\n    let g:syntastic_oclint_config_file = '.syntastic_oclint_config'\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_c_oclint_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args_after': '-text',\n        \\ 'post_args_before': '-- -c ' . syntastic#c#ReadConfig(g:syntastic_oclint_config_file) })\n\n    let errorformat =\n        \\ '%E%f:%l:%c: %m P1 ,' .\n        \\ '%E%f:%l:%c: %m P2 ,' .\n        \\ '%W%f:%l:%c: %m P3 ,' .\n        \\ '%E%f:%l:%c: fatal error: %m,' .\n        \\ '%E%f:%l:%c: error: %m,' .\n        \\ '%W%f:%l:%c: warning: %m,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'subtype': 'Style',\n        \\ 'postprocess': ['compressWhitespace', 'sort'],\n        \\ 'returns': [0, 3, 5] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'c',\n    \\ 'name': 'oclint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/c/sparse.vim",
    "content": "\"============================================================================\n\"File:        sparse.vim\n\"Description: Syntax checking plugin for syntastic.vim using sparse.pl\n\"Maintainer:  Daniel Walker <dwalker at fifo99 dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\"\n\" The setting 'g:syntastic_sparse_config_file' allows you to define a file\n\" that contains additional compiler arguments like include directories or\n\" CFLAGS. The file is expected to contain one option per line. If none is\n\" given the filename defaults to '.syntastic_sparse_config':\n\"\n\"   let g:syntastic_sparse_config_file = '.config'\n\nif exists(\"g:loaded_syntastic_c_sparse_checker\")\n    finish\nendif\nlet g:loaded_syntastic_c_sparse_checker = 1\n\nif !exists('g:syntastic_sparse_config_file')\n    let g:syntastic_sparse_config_file = '.syntastic_sparse_config'\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_c_sparse_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args': syntastic#c#ReadConfig(g:syntastic_sparse_config_file),\n        \\ 'args_after': '-ftabstop=' . &ts })\n\n    let errorformat = '%f:%l:%v: %trror: %m,%f:%l:%v: %tarning: %m,'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr(\"\")},\n        \\ 'returns': [0] })\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'c',\n    \\ 'name': 'sparse'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/c/splint.vim",
    "content": "\"============================================================================\n\"File:        splint.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\"\n\" The setting 'g:syntastic_splint_config_file' allows you to define a file\n\" that contains additional compiler arguments like include directories or\n\" CFLAGS. The file is expected to contain one option per line. If none is\n\" given the filename defaults to '.syntastic_splint_config':\n\"\n\"   let g:syntastic_splint_config_file = '.config'\n\nif exists(\"g:loaded_syntastic_c_splint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_c_splint_checker = 1\n\nif !exists('g:syntastic_splint_config_file')\n    let g:syntastic_splint_config_file = '.syntastic_splint_config'\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_c_splint_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args': syntastic#c#ReadConfig(g:syntastic_splint_config_file),\n        \\ 'args_after': '-showfunc -hints +quiet' })\n\n    let errorformat =\n        \\ '%-G%f:%l:%v: %[%#]%[%#]%[%#] Internal Bug %.%#,' .\n        \\ '%W%f:%l:%v: %m,' .\n        \\ '%W%f:%l: %m,' .\n        \\ '%-C %\\+In file included from %.%#,' .\n        \\ '%-C %\\+from %.%#,' .\n        \\ '%+C %.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'subtype': 'Style',\n        \\ 'postprocess': ['compressWhitespace'],\n        \\ 'defaults': {'type': 'W'} })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'c',\n    \\ 'name': 'splint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/chef/foodcritic.vim",
    "content": "\"============================================================================\n\"File:        foodcritic.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Doug Ireton <dougireton@gmail.com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_chef_foodcritic_checker\")\n    finish\nendif\nlet g:loaded_syntastic_chef_foodcritic_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_chef_foodcritic_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n\n    \" FC023: Prefer conditional attributes: ./recipes/config.rb:49\n    let errorformat = 'FC%n: %m: %f:%l'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n      \\ 'filetype': 'chef',\n      \\ 'name': 'foodcritic'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/co/coco.vim",
    "content": "\"============================================================================\n\"File:        co.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Andrew Kelley <superjoe30@gmail.com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_co_coco_checker\")\n    finish\nendif\nlet g:loaded_syntastic_co_coco_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_co_coco_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '-c -o /tmp' })\n\n    let errorformat =\n        \\ '%EFailed at: %f,' .\n        \\ '%ZSyntax%trror: %m on line %l,'.\n        \\ '%EFailed at: %f,'.\n        \\ '%Z%trror: Parse error on line %l: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'co',\n    \\ 'name': 'coco'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/cobol/cobc.vim",
    "content": "\"============================================================================\n\"File:        cobc.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\n\nif exists('g:loaded_syntastic_cobol_cobc_checker')\n    finish\nendif\nlet g:loaded_syntastic_cobol_cobc_checker = 1\n\nif !exists('g:syntastic_cobol_compiler_options')\n    let g:syntastic_cobol_compiler_options = ''\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_cobol_cobc_IsAvailable() dict\n    if !exists('g:syntastic_cobol_compiler')\n        let g:syntastic_cobol_compiler = self.getExec()\n    endif\n    return executable(expand(g:syntastic_cobol_compiler))\nendfunction\n\nfunction! SyntaxCheckers_cobol_cobc_GetLocList() dict\n    return syntastic#c#GetLocList('cobol', 'cobc', {\n        \\ 'errorformat': '%f:%l: %trror: %m',\n        \\ 'main_flags': '-fsyntax-only' })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'cobol',\n    \\ 'name': 'cobc' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/coffee/coffee.vim",
    "content": "\"============================================================================\n\"File:        coffee.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Lincoln Stoll <l@lds.li>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" Note: this script requires CoffeeScript version 1.6.2 or newer.\n\"\n\nif exists(\"g:loaded_syntastic_coffee_coffee_checker\")\n    finish\nendif\nlet g:loaded_syntastic_coffee_coffee_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_coffee_coffee_IsAvailable() dict\n    return executable(self.getExec()) &&\n        \\ syntastic#util#versionIsAtLeast(syntastic#util#getVersion(\n        \\       self.getExecEscaped() . ' --version 2>' . syntastic#util#DevNull()), [1,6,2])\nendfunction\n\nfunction! SyntaxCheckers_coffee_coffee_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '-cp' })\n\n    let errorformat =\n        \\ '%E%f:%l:%c: %trror: %m,' .\n        \\ 'Syntax%trror: In %f\\, %m on line %l,' .\n        \\ '%EError: In %f\\, Parse error on line %l: %m,' .\n        \\ '%EError: In %f\\, %m on line %l,' .\n        \\ '%W%f(%l): lint warning: %m,' .\n        \\ '%W%f(%l): warning: %m,' .\n        \\ '%E%f(%l): SyntaxError: %m,' .\n        \\ '%-Z%p^,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'coffee',\n    \\ 'name': 'coffee'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/coffee/coffeelint.vim",
    "content": "\"============================================================================\n\"File:        coffeelint.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Lincoln Stoll <l@lds.li>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_coffee_coffeelint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_coffee_coffeelint_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_coffee_coffeelint_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '--csv' })\n\n    let errorformat =\n        \\ '%f\\,%l\\,%\\d%#\\,%trror\\,%m,' .\n        \\ '%f\\,%l\\,%trror\\,%m,' .\n        \\ '%f\\,%l\\,%\\d%#\\,%tarn\\,%m,' .\n        \\ '%f\\,%l\\,%tarn\\,%m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'subtype': 'Style',\n        \\ 'returns': [0, 1] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'coffee',\n    \\ 'name': 'coffeelint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/coq/coqtop.vim",
    "content": "\"============================================================================\n\"File:        coqtop.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Matvey Aksenov <matvey.aksenov at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_coq_coqtop_checker\")\n    finish\nendif\nlet g:loaded_syntastic_coq_coqtop_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_coq_coqtop_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '-noglob -batch -load-vernac-source' })\n\n    let errorformat =\n        \\ '%AFile \\\"%f\\\"\\, line %l\\, characters %c\\-%.%#\\:,'.\n        \\ '%C%m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'coq',\n    \\ 'name': 'coqtop'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/cpp/cppcheck.vim",
    "content": "\"============================================================================\n\"File:        cppcheck.vim\n\"Description: Syntax checking plugin for syntastic.vim using cppcheck.pl\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\"\n\" The setting 'g:syntastic_cppcheck_config_file' allows you to define a file\n\" that contains additional compiler arguments like include directories or\n\" CFLAGS. The file is expected to contain one option per line. If none is\n\" given the filename defaults to '.syntastic_cppcheck_config':\n\"\n\"   let g:syntastic_cppcheck_config_file = '.config'\n\nif exists(\"g:loaded_syntastic_cpp_cppcheck_checker\")\n    finish\nendif\nlet g:loaded_syntastic_cpp_cppcheck_checker = 1\n\nruntime! syntax_checkers/c/*.vim\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'cpp',\n    \\ 'name': 'cppcheck',\n    \\ 'redirect': 'c/cppcheck'})\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/cpp/cpplint.vim",
    "content": "\"============================================================================\n\"File:        cpplint.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" For details about cpplint see:\n\"    https://code.google.com/p/google-styleguide/\n\"\n\" Checker options:\n\"\n\" - g:syntastic_cpp_cpplint_thres (integer; default: 5)\n\"   error threshold: policy violations with a severity above this\n\"   value are highlighted as errors, the others are warnings\n\"\n\" - g:syntastic_cpp_cpplint_args (string; default: '--verbose=3')\n\"   command line options to pass to cpplint\n\nif exists(\"g:loaded_syntastic_cpp_cpplint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_cpp_cpplint_checker = 1\n\nif !exists('g:syntastic_cpp_cpplint_thres')\n    let g:syntastic_cpp_cpplint_thres = 5\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_cpp_cpplint_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args': '--verbose=3' })\n\n    let errorformat = '%A%f:%l:  %m [%t],%-G%.%#'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'subtype': 'Style',\n        \\ 'returns': [0, 1] })\n\n    \" change error types according to the prescribed threshold\n    for e in loclist\n        let e['type'] = e['type'] < g:syntastic_cpp_cpplint_thres ? 'W' : 'E'\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'cpp',\n    \\ 'name': 'cpplint',\n    \\ 'exec': 'cpplint.py'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/cpp/gcc.vim",
    "content": "\"============================================================================\n\"File:        cpp.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Gregor Uhlenheuer <kongo2002 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists('g:loaded_syntastic_cpp_gcc_checker')\n    finish\nendif\nlet g:loaded_syntastic_cpp_gcc_checker = 1\n\nif !exists('g:syntastic_cpp_compiler_options')\n    let g:syntastic_cpp_compiler_options = ''\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_cpp_gcc_IsAvailable() dict\n    if !exists('g:syntastic_cpp_compiler')\n        let g:syntastic_cpp_compiler = executable(self.getExec()) ? self.getExec() : 'clang++'\n    endif\n    return executable(expand(g:syntastic_cpp_compiler))\nendfunction\n\nfunction! SyntaxCheckers_cpp_gcc_GetLocList() dict\n    return syntastic#c#GetLocList('cpp', 'gcc', {\n        \\ 'errorformat':\n        \\     '%-G%f:%s:,' .\n        \\     '%f:%l:%c: %trror: %m,' .\n        \\     '%f:%l:%c: %tarning: %m,' .\n        \\     '%f:%l:%c: %m,'.\n        \\     '%f:%l: %trror: %m,'.\n        \\     '%f:%l: %tarning: %m,'.\n        \\     '%f:%l: %m',\n        \\ 'main_flags': '-x c++ -fsyntax-only',\n        \\ 'header_flags': '-x c++',\n        \\ 'header_names': '\\m\\.\\(h\\|hpp\\|hh\\)$' })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'cpp',\n    \\ 'name': 'gcc',\n    \\ 'exec': 'g++' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/cpp/oclint.vim",
    "content": "\"============================================================================\n\"File:        oclint.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  \"UnCO\" Lin <undercooled aT lavabit com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\"\n\" The setting 'g:syntastic_oclint_config_file' allows you to define a file\n\" that contains additional compiler arguments like include directories or\n\" CFLAGS. The file is expected to contain one option per line. If none is\n\" given the filename defaults to '.syntastic_oclint_config':\n\"\n\"   let g:syntastic_oclint_config_file = '.config'\n\nif exists(\"g:loaded_syntastic_cpp_oclint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_cpp_oclint_checker = 1\n\nruntime! syntax_checkers/c/*.vim\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'cpp',\n    \\ 'name': 'oclint',\n    \\ 'redirect': 'c/oclint'})\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/cs/mcs.vim",
    "content": "\"============================================================================\n\"File:        cs.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Daniel Walker <dwalker@fifo99.com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_cs_mcs_checker\")\n    finish\nendif\nlet g:loaded_syntastic_cs_mcs_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_cs_mcs_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '--parse' })\n\n    let errorformat = '%f(%l\\,%c): %trror %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr(\"\")} })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'cs',\n    \\ 'name': 'mcs'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/css/csslint.vim",
    "content": "\"============================================================================\n\"File:        css.vim\n\"Description: Syntax checking plugin for syntastic.vim using `csslint` CLI tool (http://csslint.net).\n\"Maintainer:  Ory Band <oryband at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\"\n\" Specify additional options to csslint with this option. e.g. to disable\n\" warnings:\n\"\n\"   let g:syntastic_csslint_options = '--warnings=none'\n\nif exists('g:loaded_syntastic_css_csslint_checker')\n    finish\nendif\nlet g:loaded_syntastic_css_csslint_checker = 1\n\nif !exists('g:syntastic_csslint_options')\n    let g:syntastic_csslint_options = ''\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_css_csslint_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args': g:syntastic_csslint_options,\n        \\ 'args_after': '--format=compact' })\n\n    \" Print CSS Lint's error/warning messages from compact format. Ignores blank lines.\n    let errorformat =\n        \\ '%-G,' .\n        \\ '%-G%f: lint free!,' .\n        \\ '%f: line %l\\, col %c\\, %trror - %m,' .\n        \\ '%f: line %l\\, col %c\\, %tarning - %m,'.\n        \\ '%f: line %l\\, col %c\\, %m,'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr(\"\")} })\n\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'css',\n    \\ 'name': 'csslint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/css/phpcs.vim",
    "content": "\"============================================================================\n\"File:        phpcs.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" See here for details of phpcs\n\"    - phpcs (see http://pear.php.net/package/PHP_CodeSniffer)\n\"\n\nif exists(\"g:loaded_syntastic_css_phpcs_checker\")\n    finish\nendif\nlet g:loaded_syntastic_css_phpcs_checker = 1\n\nruntime! syntax_checkers/php/*.vim\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'css',\n    \\ 'name': 'phpcs',\n    \\ 'redirect': 'php/phpcs'})\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/css/prettycss.vim",
    "content": "\"============================================================================\n\"File:        prettycss.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" For details about PrettyCSS see:\n\"\n\"   - http://fidian.github.io/PrettyCSS/\n\"   - https://github.com/fidian/PrettyCSS\n\nif exists(\"g:loaded_syntastic_css_prettycss_checker\")\n    finish\nendif\nlet g:loaded_syntastic_css_prettycss_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_css_prettycss_GetHighlightRegex(item)\n    let term = matchstr(a:item[\"text\"], '\\m (\\zs[^)]\\+\\ze)$')\n    if term != ''\n        let term = '\\V' . term\n    endif\n    return term\nendfunction\n\nfunction! SyntaxCheckers_css_prettycss_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n\n    \" Print CSS Lint's error/warning messages from compact format. Ignores blank lines.\n    let errorformat =\n        \\ '%EError:  %m\\, line %l\\, char %c),' .\n        \\ '%WWarning:  %m\\, line %l\\, char %c),' .\n        \\ '%-G%.%#'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr(\"\")},\n        \\ 'postprocess': ['sort'] })\n\n    for e in loclist\n        let e[\"text\"] .= ')'\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'css',\n    \\ 'name': 'prettycss'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/cucumber/cucumber.vim",
    "content": "\"============================================================================\n\"File:        cucumber.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_cucumber_cucumber_checker\")\n    finish\nendif\nlet g:loaded_syntastic_cucumber_cucumber_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_cucumber_cucumber_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '--dry-run --quiet --strict --format pretty' })\n\n    let errorformat =\n        \\ '%f:%l:%c:%m,' .\n        \\ '%W      %.%# (%m),' .\n        \\ '%-Z%f:%l:%.%#,'.\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'cucumber',\n    \\ 'name': 'cucumber'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/cuda/nvcc.vim",
    "content": "\"============================================================================\n\"File:        cuda.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"\n\"Author:      Hannes Schulz <schulz at ais dot uni-bonn dot de>\n\"\n\"============================================================================\n\n\" in order to also check header files add this to your .vimrc:\n\" (this creates an empty .syntastic_dummy.cu file in your source directory)\n\"\n\"   let g:syntastic_cuda_check_header = 1\n\n\" By default, nvcc and thus syntastic, defaults to the most basic architecture.\n\" This can produce false errors if the developer intends to compile for newer\n\" hardware and use newer features, eg. double precision numbers. To pass a\n\" specific target arch to nvcc, e.g. add the following to your .vimrc:\n\"\n\"   let g:syntastic_cuda_arch = \"sm_20\"\n\nif exists(\"g:loaded_syntastic_cuda_nvcc_checker\")\n    finish\nendif\nlet g:loaded_syntastic_cuda_nvcc_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_cuda_nvcc_GetLocList() dict\n    if exists('g:syntastic_cuda_arch')\n        let arch_flag = '-arch=' . g:syntastic_cuda_arch\n    else\n        let arch_flag = ''\n    endif\n    let makeprg =\n        \\ self.getExecEscaped() . ' ' . arch_flag .\n        \\ ' --cuda -O0 -I . -Xcompiler -fsyntax-only ' .\n        \\ syntastic#util#shexpand('%') . ' ' . syntastic#c#NullOutput()\n\n    let errorformat =\n        \\ '%*[^\"]\"%f\"%*\\D%l: %m,'.\n        \\ '\"%f\"%*\\D%l: %m,'.\n        \\ '%-G%f:%l: (Each undeclared identifier is reported only once,'.\n        \\ '%-G%f:%l: for each function it appears in.),'.\n        \\ '%f:%l:%c:%m,'.\n        \\ '%f(%l):%m,'.\n        \\ '%f:%l:%m,'.\n        \\ '\"%f\"\\, line %l%*\\D%c%*[^ ] %m,'.\n        \\ '%D%*\\a[%*\\d]: Entering directory `%f'','.\n        \\ '%X%*\\a[%*\\d]: Leaving directory `%f'','.\n        \\ '%D%*\\a: Entering directory `%f'','.\n        \\ '%X%*\\a: Leaving directory `%f'','.\n        \\ '%DMaking %*\\a in %f,'.\n        \\ '%f|%l| %m'\n\n    if expand('%') =~? '\\m\\%(.h\\|.hpp\\|.cuh\\)$'\n        if exists('g:syntastic_cuda_check_header')\n            let makeprg =\n                \\ 'echo > .syntastic_dummy.cu ; ' .\n                \\ self.getExecEscaped() . ' ' . arch_flag .\n                \\ ' --cuda -O0 -I . .syntastic_dummy.cu -Xcompiler -fsyntax-only -include ' .\n                \\ syntastic#util#shexpand('%') . ' ' . syntastic#c#NullOutput()\n        else\n            return []\n        endif\n    endif\n\n    return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'cuda',\n    \\ 'name': 'nvcc'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/d/dmd.vim",
    "content": "\"============================================================================\n\"File:        d.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Alfredo Di Napoli <alfredo dot dinapoli at gmail dot com>\n\"License:     Based on the original work of Gregor Uhlenheuer and his\n\"             cpp.vim checker so credits are dued.\n\"             THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n\"             EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n\"             OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n\"             NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n\"             HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n\"             WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n\"             FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n\"             OTHER DEALINGS IN THE SOFTWARE.\n\"\n\"============================================================================\n\nif exists('g:loaded_syntastic_d_dmd_checker')\n    finish\nendif\nlet g:loaded_syntastic_d_dmd_checker = 1\n\nif !exists('g:syntastic_d_compiler_options')\n    let g:syntastic_d_compiler_options = ''\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_d_dmd_IsAvailable() dict\n    if !exists('g:syntastic_d_compiler')\n        let g:syntastic_d_compiler = self.getExec()\n    endif\n    return executable(expand(g:syntastic_d_compiler))\nendfunction\n\nfunction! SyntaxCheckers_d_dmd_GetLocList() dict\n    return syntastic#c#GetLocList('d', 'dmd', {\n        \\ 'errorformat':\n        \\     '%-G%f:%s:,%f(%l): %m,' .\n        \\     '%f:%l: %m',\n        \\ 'main_flags': '-c -of' . syntastic#util#DevNull(),\n        \\ 'header_names': '\\m\\.di$' })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'd',\n    \\ 'name': 'dmd' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/dart/dartanalyzer.vim",
    "content": "\"============================================================================\n\"File:        dartanalyzer.vim\n\"Description: Dart syntax checker - using dartanalyzer\n\"Maintainer:  Maksim Ryzhikov <rv.maksim at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_dart_dartanalyzer_checker\")\n    finish\nendif\nlet g:loaded_syntastic_dart_dartanalyzer_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_dart_dartanalyzer_GetHighlightRegex(error)\n    if a:error['len']\n        let lcol = a:error['col'] - 1\n        let rcol = a:error['col'] + a:error['len']\n        let ret = '\\%>' . lcol . 'c\\%<' . rcol . 'c'\n    else\n        let ret = ''\n    endif\n\n    return ret\nendfunction\n\nfunction! SyntaxCheckers_dart_dartanalyzer_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '--machine' })\n\n    \" Machine readable format looks like:\n    \" SEVERITY|TYPE|ERROR_CODE|FILENAME|LINE_NUMBER|COLUMN|LENGTH|MESSAGE\n    \" SEVERITY: (WARNING|ERROR)\n    \" TYPE: (RESOLVER|STATIC_TYPE|...)\n    \" ERROR_CODE: (NO_SUCH_TYPE|...)\n    \" FILENAME: String\n    \" LINE_NUMBER: int\n    \" COLUMN: int\n    \" LENGTH: int\n    \" MESSAGE: String\n\n    \" We use %n to grab the error length, for the syntax highlighter\n    let commonformat = '|%.%#|%.%#|%f|%l|%c|%n|%m'\n\n    let errorformat =\n        \\ '%EERROR'   . commonformat . ',' .\n        \\ '%WWARNING' . commonformat\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'returns': [0, 1, 2] })\n\n    for e in loclist\n        let e['text'] = substitute(e['text'], '\\m\\\\\\([\\\\|]\\)', '\\1', 'g')\n\n        \" Undo the %n hack\n        let e['len'] = e['nr']\n        call remove(e, 'nr')\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'dart',\n    \\ 'name': 'dartanalyzer' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/docbk/xmllint.vim",
    "content": "\"============================================================================\n\"File:        docbk.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_docbk_xmllint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_docbk_xmllint_checker = 1\n\nruntime! syntax_checkers/xml/*.vim\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'docbk',\n    \\ 'name': 'xmllint',\n    \\ 'redirect': 'xml/xmllint'})\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/dustjs/swiffer.vim",
    "content": "\"============================================================================\n\"File:        swiffer.vim\n\"Description: Dust.js syntax checker - using swiffer\n\"Maintainer:  Steven Foote <smfoote at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_dustjs_swiffer_checker\")\n    finish\nendif\n\nlet g:loaded_syntastic_dustjs_swiffer_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_dustjs_swiffer_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n\n    let errorformat = '%E%f - Line %l\\, Column %c: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\n endfunction\n\ncall SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'dustjs',\n    \\ 'name': 'swiffer'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/elixir/elixir.vim",
    "content": "\"============================================================================\n\"File:        elixir.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Richard Ramsden <rramsden at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_elixir_elixir_checker\")\n    finish\nendif\nlet g:loaded_syntastic_elixir_elixir_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\n\" TODO: we should probably split this into separate checkers\nfunction! SyntaxCheckers_elixir_elixir_IsAvailable() dict\n    return executable('elixir') && executable('mix')\nendfunction\n\nfunction! SyntaxCheckers_elixir_elixir_GetLocList() dict\n\n    let make_options = {}\n    let compile_command = 'elixir'\n    let mix_file = syntastic#util#findInParent('mix.exs', expand('%:p:h'))\n\n    if filereadable(mix_file)\n        let compile_command = 'mix compile'\n        let make_options['cwd'] = fnamemodify(mix_file, ':p:h')\n    endif\n\n    let make_options['makeprg'] = self.makeprgBuild({ 'exe': compile_command })\n\n    let make_options['errorformat'] = '** %*[^\\ ] %f:%l: %m'\n\n    return SyntasticMake(make_options)\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'elixir',\n    \\ 'name': 'elixir'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/erlang/erlang_check_file.erl",
    "content": "#!/usr/bin/env escript\n-export([main/1]).\n\nmain([FileName]) ->\n    LibDirs = filelib:wildcard(\"{lib,deps}/*/ebin\"),\n    compile(FileName, LibDirs);\n\nmain([FileName | [\"-rebar\" | [Path | LibDirs]]]) ->\n    {ok, L} = file:consult(Path),\n    P = dict:from_list(L),\n    Root = filename:dirname(Path),\n\n    Lib1 = case dict:find(lib_dirs, P) of\n             {ok, X} -> lists:map(fun(Sub) -> Root ++ \"/\" ++ Sub end, X);\n             _ -> []\n           end,\n\n    Lib2 = case dict:find(sub_dirs, P) of\n             {ok, Y} -> lists:foldl(\n                          fun(Sub,Sofar) ->\n                              Sofar ++ [\n                                        Root ++ \"/\" ++ Sub,\n                                        Root ++ \"/\" ++ Sub ++ \"/include\",\n                                        Root ++ \"/\" ++ Sub ++ \"/deps\",\n                                        Root ++ \"/\" ++ Sub ++ \"/lib\"\n                                       ] end, [], Y);\n             _ -> []\n           end,\n\n    LibDirs1 = LibDirs ++ Lib1 ++ Lib2,\n    %io:format(\"~p~n\", [LibDirs1]),\n    compile(FileName, LibDirs1);\n\nmain([FileName | LibDirs]) ->\n    compile(FileName, LibDirs).\n\ncompile(FileName, LibDirs) ->\n    Root = get_root(filename:dirname(FileName)),\n    ok = code:add_pathsa(LibDirs),\n    compile:file(FileName, [warn_obsolete_guard,\n                            warn_unused_import,\n                            warn_shadow_vars,\n                            warn_export_vars,\n                            strong_validation,\n                            report,\n                            {i, filename:join(Root, \"include\")},\n                            {i, filename:join(Root, \"deps\")},\n                            {i, filename:join(Root, \"apps\")},\n                            {i, filename:join(Root, \"lib\")}\n                        ]).\n\nget_root(Dir) ->\n    Path = filename:split(filename:absname(Dir)),\n    filename:join(get_root(lists:reverse(Path), Path)).\n\nget_root([], Path) ->\n    Path;\nget_root([\"src\" | Tail], _Path) ->\n    lists:reverse(Tail);\nget_root([\"test\" | Tail], _Path) ->\n    lists:reverse(Tail);\nget_root([_ | Tail], Path) ->\n    get_root(Tail, Path).\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/erlang/escript.vim",
    "content": "\"============================================================================\n\"File:        erlang.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Pawel Salata <rockplayer.pl at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists('g:loaded_syntastic_erlang_erlang_checker')\n    finish\nendif\nlet g:loaded_syntastic_erlang_erlang_checker = 1\n\nif !exists('g:syntastic_erlc_include_path')\n    let g:syntastic_erlc_include_path = ''\nendif\n\nlet s:check_file = syntastic#util#shescape(expand('<sfile>:p:h') . syntastic#util#Slash() . 'erlang_check_file.erl')\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_erlang_escript_GetLocList() dict\n    if expand('%:e') ==# 'hrl'\n        return []\n    endif\n\n    let shebang = syntastic#util#parseShebang()\n    if shebang['exe'] =~# '\\m\\<escript$' || (shebang['exe'] ==# '/usr/bin/env' && shebang['args'][0] ==# 'escript')\n        let args = '-s'\n        let post_args = ''\n    else\n        let args = s:check_file\n        let post_args = g:syntastic_erlc_include_path\n    endif\n    let makeprg = self.makeprgBuild({\n        \\ 'args_after': args,\n        \\ 'fname': syntastic#util#shexpand('%:p'),\n        \\ 'post_args_after': post_args })\n\n    let errorformat =\n        \\ '%W%f:%l: warning: %m,'.\n        \\ '%E%f:%l: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'erlang',\n    \\ 'name': 'escript'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/erlang/syntaxerl.vim",
    "content": "\"============================================================================\n\"File:        syntaxerl.vim\n\"Description: Syntax checking plugin for syntastic.\n\"Maintainer:  locojay\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_erlang_syntaxerl_checker\")\n    finish\nendif\n\nlet g:loaded_syntastic_erlang_syntaxerl_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\n\nfunction! SyntaxCheckers_erlang_syntaxerl_GetLocList() dict\n\n    let makeprg = self.makeprgBuild({})\n\n    let errorformat =\n        \\ '%W%f:%l: warning: %m,'.\n        \\ '%E%f:%l: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'erlang',\n    \\ 'name': 'syntaxerl'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/eruby/ruby.vim",
    "content": "\"============================================================================\n\"File:        ruby.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_eruby_ruby_checker\")\n    finish\nendif\nlet g:loaded_syntastic_eruby_ruby_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_eruby_ruby_IsAvailable() dict\n    if !exists(\"g:syntastic_ruby_exec\")\n        let g:syntastic_ruby_exec = self.getExec()\n    endif\n    return executable(expand(g:syntastic_ruby_exec))\nendfunction\n\nfunction! SyntaxCheckers_eruby_ruby_GetLocList() dict\n    let exe = syntastic#util#shexpand(g:syntastic_ruby_exec)\n    if !syntastic#util#isRunningWindows()\n        let exe = 'RUBYOPT= ' . exe\n    endif\n\n    let fname = \"'\" . escape(expand('%'), \"\\\\'\") . \"'\"\n\n    \" TODO: encodings became useful in ruby 1.9 :)\n    if syntastic#util#versionIsAtLeast(syntastic#util#getVersion(exe . ' --version'), [1, 9])\n        let enc = &fileencoding != '' ? &fileencoding : &encoding\n        let encoding_spec = ', :encoding => \"' . (enc ==? 'utf-8' ? 'UTF-8' : 'BINARY') . '\"'\n    else\n        let encoding_spec = ''\n    endif\n\n    \"gsub fixes issue #7, rails has it's own eruby syntax\n    let makeprg =\n        \\ exe . ' -rerb -e ' .\n        \\ syntastic#util#shescape('puts ERB.new(File.read(' .\n        \\     fname . encoding_spec .\n        \\     ').gsub(''<%='',''<%''), nil, ''-'').src') .\n        \\ ' | ' . exe . ' -c'\n\n    let errorformat =\n        \\ '%-GSyntax OK,'.\n        \\ '%E-:%l: syntax error\\, %m,%Z%p^,'.\n        \\ '%W-:%l: warning: %m,'.\n        \\ '%Z%p^,'.\n        \\ '%-C%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': { 'bufnr': bufnr(\"\"), 'vcol': 1 } })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'eruby',\n    \\ 'name': 'ruby'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/fortran/gfortran.vim",
    "content": "\"============================================================================\n\"File:        fortran.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Karl Yngve Lervåg <karl.yngve@lervag.net>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_fortran_gfortran_checker\")\n    finish\nendif\nlet g:loaded_syntastic_fortran_gfortran_checker=1\n\nif !exists('g:syntastic_fortran_compiler_options')\n    let g:syntastic_fortran_compiler_options = ''\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_fortran_gfortran_IsAvailable() dict\n    if !exists('g:syntastic_fortran_compiler')\n        let g:syntastic_fortran_compiler = self.getExec()\n    endif\n    return executable(expand(g:syntastic_fortran_compiler))\nendfunction\n\nfunction! SyntaxCheckers_fortran_gfortran_GetLocList() dict\n    return syntastic#c#GetLocList('fortran', 'gfortran', {\n        \\ 'errorformat':\n        \\     '%-C %#,'.\n        \\     '%-C  %#%.%#,'.\n        \\     '%A%f:%l.%c:,'.\n        \\     '%Z%trror: %m,'.\n        \\     '%Z%tarning: %m,'.\n        \\     '%-G%.%#',\n        \\ 'main_flags': '-fsyntax-only' })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'fortran',\n    \\ 'name': 'gfortran' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/glsl/cgc.vim",
    "content": "\"============================================================================\n\"File:        glsl.vim\n\"Description: Syntax checker for OpenGL Shading Language\n\"Maintainer:  Joshua Rahm <joshuarahm@gmail.com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_glsl_cgc_checker\")\n    finish\nendif\nlet g:loaded_syntastic_glsl_cgc_checker = 1\n\nlet s:glsl_extensions = {\n        \\ 'glslf': 'gpu_fp',\n        \\ 'glslv': 'gpu_vp',\n        \\ 'frag':  'gpu_fp',\n        \\ 'vert':  'gpu_vp',\n        \\ 'fp':    'gpu_fp',\n        \\ 'vp':    'gpu_vp'\n    \\ }\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_glsl_cgc_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args_before': '-oglsl -profile ' . s:GetProfile(),\n        \\ 'args': (exists('g:syntastic_glsl_options') ? ' ' . g:syntastic_glsl_options : '') })\n\n    let errorformat =\n        \\ \"%E%f(%l) : error %m,\" .\n        \\ \"%W%f(%l) : warning %m\"\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\nfunction! s:GetProfile()\n    let save_view = winsaveview()\n    let old_foldenable = &foldenable\n    let old_lazyredraw = &lazyredraw\n\n    let &lazyredraw = 1\n    let &foldenable = 0\n    call cursor(1, 1)\n\n    let magic = '\\m\\C^// profile:\\s*'\n    let line = search(magic, 'c')\n\n    call winrestview(save_view)\n    let &foldenable = old_foldenable\n    let &lazyredraw = old_lazyredraw\n\n    if line\n        let profile = matchstr(getline(line), magic . '\\zs.*')\n    else\n        let extensions = exists('g:syntastic_glsl_extensions') ? g:syntastic_glsl_extensions : s:glsl_extensions\n        let profile = get(extensions, tolower(expand('%:e')), 'gpu_vert')\n    endif\n\n    return profile\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\'filetype': 'glsl',\n    \\'name': 'cgc'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/go/go.vim",
    "content": "\"============================================================================\n\"File:        go.vim\n\"Description: Check go syntax using 'gofmt -l' followed by 'go [build|test]'\n\"Maintainer:  Kamil Kisiel <kamil@kamilkisiel.net>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\" This syntax checker does not reformat your source code.\n\" Use a BufWritePre autocommand to that end:\n\"   autocmd FileType go autocmd BufWritePre <buffer> Fmt\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_go_go_checker\")\n    finish\nendif\nlet g:loaded_syntastic_go_go_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_go_go_IsAvailable() dict\n    return executable('go') && executable('gofmt')\nendfunction\n\nfunction! SyntaxCheckers_go_go_GetLocList() dict\n    \" Check with gofmt first, since `go build` and `go test` might not report\n    \" syntax errors in the current file if another file with syntax error is\n    \" compiled first.\n    let makeprg = self.makeprgBuild({\n        \\ 'exe': 'gofmt',\n        \\ 'args': '-l',\n        \\ 'tail': '> ' . syntastic#util#DevNull() })\n\n    let errorformat =\n        \\ '%f:%l:%c: %m,' .\n        \\ '%-G%.%#'\n\n    let errors = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'type': 'e'} })\n    if !empty(errors)\n        return errors\n    endif\n\n    \" Test files, i.e. files with a name ending in `_test.go`, are not\n    \" compiled by `go build`, therefore `go test` must be called for those.\n    if match(expand('%'), '\\m_test\\.go$') == -1\n        let makeprg = 'go build ' . syntastic#c#NullOutput()\n        let cleanup = 0\n    else\n        let makeprg = 'go test -c ' . syntastic#c#NullOutput()\n        let cleanup = 1\n    endif\n\n    \" The first pattern is for warnings from C compilers.\n    let errorformat =\n        \\ '%W%f:%l: warning: %m,' .\n        \\ '%E%f:%l:%c:%m,' .\n        \\ '%E%f:%l:%m,' .\n        \\ '%C%\\s%\\+%m,' .\n        \\ '%-G#%.%#'\n\n    \" The go compiler needs to either be run with an import path as an\n    \" argument or directly from the package directory. Since figuring out\n    \" the proper import path is fickle, just cwd to the package.\n\n    let errors = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'cwd': expand('%:p:h'),\n        \\ 'defaults': {'type': 'e'} })\n\n    if cleanup\n        call delete(expand('%:p:h') . syntastic#util#Slash() . expand('%:p:h:t') . '.test')\n    endif\n\n    return errors\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'go',\n    \\ 'name': 'go'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/go/gofmt.vim",
    "content": "\"============================================================================\n\"File:        gofmt.vim\n\"Description: Check go syntax using 'gofmt -l'\n\"Maintainer:  Brandon Thomson <bt@brandonthomson.com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\" This syntax checker does not reformat your source code.\n\" Use a BufWritePre autocommand to that end:\n\"   autocmd FileType go autocmd BufWritePre <buffer> Fmt\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_go_gofmt_checker\")\n    finish\nendif\nlet g:loaded_syntastic_go_gofmt_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_go_gofmt_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args_after': '-l',\n        \\ 'tail_after': '> ' . syntastic#util#DevNull() })\n\n    let errorformat = '%f:%l:%c: %m,%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'type': 'e'} })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'go',\n    \\ 'name': 'gofmt'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/go/golint.vim",
    "content": "\"============================================================================\n\"File:        golint.vim\n\"Description: Check go syntax using 'golint'\n\"Maintainer:  Hiroshi Ioka <hirochachacha@gmail.com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_go_golint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_go_golint_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_go_golint_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n\n    let errorformat = '%f:%l:%c: %m,%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'subtype': 'Style' })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'go',\n    \\ 'name': 'golint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/go/gotype.vim",
    "content": "\"============================================================================\n\"File:        gotype.vim\n\"Description: Perform syntactic and semantic checking of Go code using 'gotype'\n\"Maintainer:  luz <ne.tetewi@gmail.com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_go_gotype_checker\")\n    finish\nendif\nlet g:loaded_syntastic_go_gotype_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_go_gotype_GetLocList() dict\n    let makeprg = self.getExecEscaped() . ' .'\n\n    let errorformat =\n        \\ '%f:%l:%c: %m,' .\n        \\ '%-G%.%#'\n\n    \" gotype needs the full go package to test types properly. Just cwd to\n    \" the package for the same reasons specified in go.vim (\"figuring out\n    \" the import path is fickle\").\n\n    let errors = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'cwd': expand('%:p:h'),\n        \\ 'defaults': {'type': 'e'} })\n\n    return errors\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'go',\n    \\ 'name': 'gotype'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/go/govet.vim",
    "content": "\"============================================================================\n\"File:        govet.vim\n\"Description: Perform static analysis of Go code with the vet tool\n\"Maintainer:  Kamil Kisiel <kamil@kamilkisiel.net>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_go_govet_checker\")\n    finish\nendif\nlet g:loaded_syntastic_go_govet_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_go_govet_IsAvailable() dict\n    return executable('go')\nendfunction\n\nfunction! SyntaxCheckers_go_govet_GetLocList() dict\n    let makeprg = 'go vet'\n    let errorformat = '%Evet: %.%\\+: %f:%l:%c: %m,%W%f:%l: %m,%-G%.%#'\n\n    \" The go compiler needs to either be run with an import path as an\n    \" argument or directly from the package directory. Since figuring out\n    \" the proper import path is fickle, just cwd to the package.\n\n    let errors = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'cwd': expand('%:p:h'),\n        \\ 'defaults': {'type': 'w'} })\n\n    return errors\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'go',\n    \\ 'name': 'govet'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/haml/haml.vim",
    "content": "\"============================================================================\n\"File:        haml.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists('g:loaded_syntastic_haml_haml_checker')\n    finish\nendif\nlet g:loaded_syntastic_haml_haml_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_haml_haml_IsAvailable() dict\n    if !exists('g:syntastic_haml_interpreter')\n        let g:syntastic_haml_interpreter = self.getExec()\n    endif\n    return executable(expand(g:syntastic_haml_interpreter))\nendfunction\n\nfunction! SyntaxCheckers_haml_haml_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'exe': syntastic#util#shexpand(g:syntastic_haml_interpreter),\n        \\ 'args_after': '-c' })\n\n    let errorformat =\n        \\ 'Haml error on line %l: %m,' .\n        \\ 'Syntax error on line %l: %m,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'haml',\n    \\ 'name': 'haml'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/haml/haml_lint.vim",
    "content": "\"============================================================================\n\"File:        haml_lint.vim\n\"Description: HAML style and syntax checker plugin for Syntastic\n\"Maintainer:  Shane da Silva <shane@dasilva.io>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_haml_haml_lint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_haml_haml_lint_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_haml_haml_lint_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n    let errorformat = '%f:%l [%t] %m'\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'subtype': 'Style'})\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'haml',\n    \\ 'name': 'haml_lint',\n    \\ 'exec': 'haml-lint' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/handlebars/handlebars.vim",
    "content": "\"============================================================================\n\"File:        handlebars.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_handlebars_handlebars_checker\")\n    finish\nendif\nlet g:loaded_syntastic_handlebars_handlebars_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_handlebars_handlebars_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '-f ' . syntastic#util#DevNull() })\n\n    let errorformat =\n        \\ '%EError: %m on line %l:,'.\n        \\ \"%EError: %m,\".\n        \\ '%Z%p^,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr(\"\")} })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'handlebars',\n    \\ 'name': 'handlebars'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/haskell/ghc-mod.vim",
    "content": "\"============================================================================\n\"File:        ghc-mod.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Anthony Carapetis <anthony.carapetis at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists('g:loaded_syntastic_haskell_ghc_mod_checker')\n    finish\nendif\nlet g:loaded_syntastic_haskell_ghc_mod_checker = 1\n\nlet s:ghc_mod_new = -1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_haskell_ghc_mod_IsAvailable() dict\n    \" We need either a Vim version that can handle NULs in system() output,\n    \" or a ghc-mod version that has the --boundary option.\n    let exe = self.getExec()\n    let s:ghc_mod_new = executable(exe) ? s:GhcModNew(exe) : -1\n    return (s:ghc_mod_new >= 0) && (v:version >= 704 || s:ghc_mod_new)\nendfunction\n\nfunction! SyntaxCheckers_haskell_ghc_mod_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'exe': self.getExecEscaped() . ' check' . (s:ghc_mod_new ? ' --boundary=\"\"' : '') })\n\n    let errorformat =\n        \\ '%-G%\\s%#,' .\n        \\ '%f:%l:%c:%trror: %m,' .\n        \\ '%f:%l:%c:%tarning: %m,'.\n        \\ '%f:%l:%c: %trror: %m,' .\n        \\ '%f:%l:%c: %tarning: %m,' .\n        \\ '%f:%l:%c:%m,' .\n        \\ '%E%f:%l:%c:,' .\n        \\ '%Z%m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'postprocess': ['compressWhitespace'],\n        \\ 'returns': [0] })\nendfunction\n\nfunction! s:GhcModNew(exe)\n    let exe = syntastic#util#shescape(a:exe)\n    try\n        let ghc_mod_version = filter(split(system(exe), '\\n'), 'v:val =~# ''\\m^ghc-mod version''')[0]\n        let ret = syntastic#util#versionIsAtLeast(syntastic#util#parseVersion(ghc_mod_version), [2, 1, 2])\n    catch /\\m^Vim\\%((\\a\\+)\\)\\=:E684/\n        call syntastic#log#error(\"checker haskell/ghc_mod: can't parse version string (abnormal termination?)\")\n        let ret = -1\n    endtry\n    return ret\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'haskell',\n    \\ 'name': 'ghc_mod',\n    \\ 'exec': 'ghc-mod' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/haskell/hdevtools.vim",
    "content": "\"============================================================================\n\"File:        hdevtools.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Anthony Carapetis <anthony.carapetis at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_haskell_hdevtools_checker\")\n    finish\nendif\nlet g:loaded_syntastic_haskell_hdevtools_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_haskell_hdevtools_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'exe': self.getExecEscaped() . ' check',\n        \\ 'args': get(g:, 'hdevtools_options', '') })\n\n    let errorformat= '\\%-Z\\ %#,'.\n        \\ '%W%f:%l:%c:\\ Warning:\\ %m,'.\n        \\ '%W%f:%l:%c:\\ Warning:,'.\n        \\ '%E%f:%l:%c:\\ %m,'.\n        \\ '%E%>%f:%l:%c:,'.\n        \\ '%+C\\ \\ %#%m,'.\n        \\ '%W%>%f:%l:%c:,'.\n        \\ '%+C\\ \\ %#%tarning:\\ %m,'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'postprocess': ['compressWhitespace'] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'haskell',\n    \\ 'name': 'hdevtools'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/haskell/hlint.vim",
    "content": "\"============================================================================\n\"File:        hlint.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Nicolas Wu <nicolas.wu at gmail dot com>\n\"License:     BSD\n\"============================================================================\n\nif exists('g:loaded_syntastic_haskell_hlint_checker')\n    finish\nendif\nlet g:loaded_syntastic_haskell_hlint_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_haskell_hlint_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n\n    let errorformat =\n        \\ '%E%f:%l:%c: Error: %m,' .\n        \\ '%W%f:%l:%c: Warning: %m,' .\n        \\ '%C%m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'postprocess': ['compressWhitespace'] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'haskell',\n    \\ 'name': 'hlint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/haxe/haxe.vim",
    "content": "\"============================================================================\n\"File:        haxe.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  David Bernard <david.bernard.31 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_haxe_haxe_checker\")\n    finish\nendif\nlet g:loaded_syntastic_haxe_haxe_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_haxe_haxe_GetLocList() dict\n    if exists('b:vaxe_hxml')\n        let hxml = b:vaxe_hxml\n    elseif exists('g:vaxe_hxml')\n        let hxml = g:vaxe_hxml\n    else\n        let hxml = syntastic#util#findInParent('*.hxml', expand('%:p:h'))\n    endif\n    let hxml = fnamemodify(hxml, ':p')\n\n    if hxml != ''\n        let makeprg = self.makeprgBuild({\n            \\ 'fname': syntastic#util#shescape(fnamemodify(hxml, ':t')) })\n\n        let errorformat = '%E%f:%l: characters %c-%n : %m'\n\n        let loclist = SyntasticMake({\n            \\ 'makeprg': makeprg,\n            \\ 'errorformat': errorformat,\n            \\ 'cwd': fnamemodify(hxml, ':h') })\n\n        for e in loclist\n            let e['hl'] = '\\%>' . e['col'] . 'c\\%<' . (e['nr'] + 1) . 'c'\n            let e['col'] += 1\n            let e['nr'] = 0\n        endfor\n\n        return loclist\n    endif\n\n    return []\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'haxe',\n    \\ 'name': 'haxe'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/hss/hss.vim",
    "content": "\"============================================================================\n\"File:        hss.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Justin Donaldson (jdonaldson@gmail.com)\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_hss_hss_checker\")\n    finish\nendif\nlet g:loaded_syntastic_hss_hss_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_hss_hss_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after' : '-output ' . syntastic#util#DevNull() })\n\n    let errorformat = '%E%f:%l: %m'\n\n    return SyntasticMake({\n\t\\ 'makeprg': makeprg,\n\t\\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'hss',\n    \\ 'name': 'hss'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/html/jshint.vim",
    "content": "\"============================================================================\n\"File:        jshint.vim\n\"Description: Javascript syntax checker for HTML - using jshint\n\"Maintainer:  LCD 47 <lcd047@gmail.com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists('g:loaded_syntastic_html_jshint_checker')\n    finish\nendif\nlet g:loaded_syntastic_html_jshint_checker = 1\n\nif !exists('g:syntastic_jshint_exec')\n    let g:syntastic_jshint_exec = 'jshint'\nendif\n\nif !exists('g:syntastic_html_jshint_conf')\n    let g:syntastic_html_jshint_conf = ''\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_html_jshint_IsAvailable() dict\n    let exe = expand(g:syntastic_jshint_exec)\n    return executable(exe) &&\n        \\ syntastic#util#versionIsAtLeast(syntastic#util#getVersion(exe . ' --version'), [2,4])\nendfunction\n\nfunction! SyntaxCheckers_html_jshint_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'exe': expand(g:syntastic_jshint_exec),\n        \\ 'args': (g:syntastic_html_jshint_conf != '' ? '--config ' . g:syntastic_html_jshint_conf : ''),\n        \\ 'args_after': '--verbose --extract always' })\n\n    let errorformat = '%A%f: line %l\\, col %v\\, %m \\(%t%*\\d\\)'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr('')},\n        \\ 'returns': [0, 2] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'html',\n    \\ 'name': 'jshint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/html/tidy.vim",
    "content": "\"============================================================================\n\"File:        tidy.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" Checker option:\n\"\n\" - g:syntastic_html_tidy_ignore_errors (list; default: [])\n\"   list of errors to ignore\n\" - g:syntastic_html_tidy_blocklevel_tags (list; default: [])\n\"   list of additional blocklevel tags, to be added to \"--new-blocklevel-tags\"\n\" - g:syntastic_html_tidy_inline_tags (list; default: [])\n\"   list of additional inline tags, to be added to \"--new-inline-tags\"\n\" - g:syntastic_html_tidy_empty_tags (list; default: [])\n\"   list of additional empty tags, to be added to \"--new-empty-tags\"\n\nif exists(\"g:loaded_syntastic_html_tidy_checker\")\n    finish\nendif\nlet g:loaded_syntastic_html_tidy_checker = 1\n\nif !exists('g:syntastic_html_tidy_ignore_errors')\n    let g:syntastic_html_tidy_ignore_errors = []\nendif\n\nif !exists('g:syntastic_html_tidy_blocklevel_tags')\n    let g:syntastic_html_tidy_blocklevel_tags = []\nendif\n\nif !exists('g:syntastic_html_tidy_inline_tags')\n    let g:syntastic_html_tidy_inline_tags = []\nendif\n\nif !exists('g:syntastic_html_tidy_empty_tags')\n    let g:syntastic_html_tidy_empty_tags = []\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\n\" TODO: join this with xhtml.vim for DRY's sake?\nfunction! s:TidyEncOptByFenc()\n    let tidy_opts = {\n                \\'utf-8':        '-utf8',\n                \\'ascii':        '-ascii',\n                \\'latin1':       '-latin1',\n                \\'iso-2022-jp':  '-iso-2022',\n                \\'cp1252':       '-win1252',\n                \\'macroman':     '-mac',\n                \\'utf-16le':     '-utf16le',\n                \\'utf-16':       '-utf16',\n                \\'big5':         '-big5',\n                \\'cp932':        '-shiftjis',\n                \\'sjis':         '-shiftjis',\n                \\'cp850':        '-ibm858',\n                \\}\n    return get(tidy_opts, &fileencoding, '-utf8')\nendfunction\n\nlet s:ignore_errors = [\n                \\ \"<table> lacks \\\"summary\\\" attribute\",\n                \\ \"not approved by W3C\",\n                \\ \"<input> proprietary attribute \\\"placeholder\\\"\",\n                \\ \"<meta> proprietary attribute \\\"charset\\\"\",\n                \\ \"<meta> lacks \\\"content\\\" attribute\",\n                \\ \"inserting \\\"type\\\" attribute\",\n                \\ \"proprietary attribute \\\"data-\",\n                \\ \"missing <!DOCTYPE> declaration\",\n                \\ \"inserting implicit <body>\",\n                \\ \"inserting missing 'title' element\",\n                \\ \"unescaped & or unknown entity\",\n                \\ \"<input> attribute \\\"type\\\" has invalid value\",\n                \\ \"proprietary attribute \\\"role\\\"\",\n                \\ \"proprietary attribute \\\"aria-activedescendant\\\"\",\n                \\ \"proprietary attribute \\\"aria-atomic\\\"\",\n                \\ \"proprietary attribute \\\"aria-autocomplete\\\"\",\n                \\ \"proprietary attribute \\\"aria-busy\\\"\",\n                \\ \"proprietary attribute \\\"aria-checked\\\"\",\n                \\ \"proprietary attribute \\\"aria-controls\\\"\",\n                \\ \"proprietary attribute \\\"aria-describedby\\\"\",\n                \\ \"proprietary attribute \\\"aria-disabled\\\"\",\n                \\ \"proprietary attribute \\\"aria-dropeffect\\\"\",\n                \\ \"proprietary attribute \\\"aria-expanded\\\"\",\n                \\ \"proprietary attribute \\\"aria-flowto\\\"\",\n                \\ \"proprietary attribute \\\"aria-grabbed\\\"\",\n                \\ \"proprietary attribute \\\"aria-haspopup\\\"\",\n                \\ \"proprietary attribute \\\"aria-hidden\\\"\",\n                \\ \"proprietary attribute \\\"aria-invalid\\\"\",\n                \\ \"proprietary attribute \\\"aria-label\\\"\",\n                \\ \"proprietary attribute \\\"aria-labelledby\\\"\",\n                \\ \"proprietary attribute \\\"aria-level\\\"\",\n                \\ \"proprietary attribute \\\"aria-live\\\"\",\n                \\ \"proprietary attribute \\\"aria-multiline\\\"\",\n                \\ \"proprietary attribute \\\"aria-multiselectable\\\"\",\n                \\ \"proprietary attribute \\\"aria-orientation\\\"\",\n                \\ \"proprietary attribute \\\"aria-owns\\\"\",\n                \\ \"proprietary attribute \\\"aria-posinset\\\"\",\n                \\ \"proprietary attribute \\\"aria-pressed\\\"\",\n                \\ \"proprietary attribute \\\"aria-readonly\\\"\",\n                \\ \"proprietary attribute \\\"aria-relevant\\\"\",\n                \\ \"proprietary attribute \\\"aria-relevant\\\"\",\n                \\ \"proprietary attribute \\\"aria-required\\\"\",\n                \\ \"proprietary attribute \\\"aria-selected\\\"\",\n                \\ \"proprietary attribute \\\"aria-setsize\\\"\",\n                \\ \"proprietary attribute \\\"aria-sort\\\"\",\n                \\ \"proprietary attribute \\\"aria-valuemax\\\"\",\n                \\ \"proprietary attribute \\\"aria-valuemin\\\"\",\n                \\ \"proprietary attribute \\\"aria-valuenow\\\"\",\n                \\ \"proprietary attribute \\\"aria-valuetext\\\"\"\n                \\ ]\n\nlet s:blocklevel_tags = [\n                \\ \"main\",\n                \\ \"section\",\n                \\ \"article\",\n                \\ \"aside\",\n                \\ \"header\",\n                \\ \"footer\",\n                \\ \"nav\",\n                \\ \"figure\",\n                \\ \"figcaption\"\n                \\ ]\n\nlet s:inline_tags = [\n                \\ \"video\",\n                \\ \"audio\",\n                \\ \"source\",\n                \\ \"embed\",\n                \\ \"mark\",\n                \\ \"progress\",\n                \\ \"meter\",\n                \\ \"time\",\n                \\ \"ruby\",\n                \\ \"rt\",\n                \\ \"rp\",\n                \\ \"canvas\",\n                \\ \"command\",\n                \\ \"details\",\n                \\ \"datalist\"\n                \\ ]\n\nlet s:empty_tags = [\n                \\ \"wbr\",\n                \\ \"keygen\"\n                \\ ]\n\nfunction! s:IgnoreError(text)\n    for i in s:ignore_errors + g:syntastic_html_tidy_ignore_errors\n        if stridx(a:text, i) != -1\n            return 1\n        endif\n    endfor\n    return 0\nendfunction\n\nfunction! s:NewTags(name)\n    return syntastic#util#shescape(join( s:{a:name} + g:syntastic_html_tidy_{a:name}, ',' ))\nendfunction\n\nfunction! s:Args()\n    let args = s:TidyEncOptByFenc() .\n        \\ ' --new-blocklevel-tags ' . s:NewTags('blocklevel_tags') .\n        \\ ' --new-inline-tags ' . s:NewTags('inline_tags') .\n        \\ ' --new-empty-tags ' . s:NewTags('empty_tags') .\n        \\ ' -e'\n    return args\nendfunction\n\nfunction! SyntaxCheckers_html_tidy_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args_after': s:Args(),\n        \\ 'tail': '2>&1' })\n\n    let errorformat =\n        \\ '%Wline %l column %v - Warning: %m,' .\n        \\ '%Eline %l column %v - Error: %m,' .\n        \\ '%-G%.%#'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr(\"\")},\n        \\ 'returns': [0, 1, 2] })\n\n    \" filter out valid HTML5 from the errors\n    for e in loclist\n        if e['valid'] && s:IgnoreError(e['text']) == 1\n            let e['valid'] = 0\n        endif\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'html',\n    \\ 'name': 'tidy'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/html/validator.vim",
    "content": "\"============================================================================\n\"File:        validator.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" For detail;s about validator see: http://about.validator.nu/\n\"\n\" Checker options:\n\"\n\" - g:syntastic_html_validator_api (string; default: 'http://validator.nu/')\n\"   URL of the service to use for checking; leave it to the default to run the\n\"   checks against http://validator.nu/, or set it to 'http://localhost:8888/'\n\"   if you're running a local service as per http://about.validator.nu/#src\n\"\n\" - g:syntastic_html_validator_parser (string; default: empty)\n\"   parser to use; legal values are: xml, xmldtd, html, html5, html4, html4tr;\n\"   set it to 'html5' to check HTML5 files;  see the wiki for reference:\n\"   http://wiki.whatwg.org/wiki/Validator.nu_Common_Input_Parameters#parser\n\"\n\" - g:syntastic_html_validator_nsfilter (string; default: empty)\n\"   sets the nsfilter for the parser; see the wiki for details:\n\"   http://wiki.whatwg.org/wiki/Validator.nu_Common_Input_Parameters#nsfilter\n\nif exists(\"g:loaded_syntastic_html_validator_checker\")\n    finish\nendif\nlet g:loaded_syntastic_html_validator_checker=1\n\nif !exists('g:syntastic_html_validator_api')\n    let g:syntastic_html_validator_api = 'http://validator.nu/'\nendif\n\nif !exists('g:syntastic_html_validator_parser')\n    let g:syntastic_html_validator_parser = ''\nendif\n\nif !exists('g:syntastic_html_validator_nsfilter')\n    let g:syntastic_html_validator_nsfilter = ''\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_html_validator_GetLocList() dict\n    let fname = syntastic#util#shexpand('%')\n    let makeprg = self.getExecEscaped() . ' -s --compressed -F out=gnu -F asciiquotes=yes' .\n        \\ (g:syntastic_html_validator_parser != '' ? ' -F parser=' . g:syntastic_html_validator_parser : '') .\n        \\ (g:syntastic_html_validator_nsfilter != '' ? ' -F nsfilter=' . g:syntastic_html_validator_nsfilter : '') .\n        \\ ' -F doc=@' . fname . '\\;type=text/html\\;filename=' . fname . ' ' . g:syntastic_html_validator_api\n\n    let errorformat =\n        \\ '%E\"%f\":%l: %trror: %m,' .\n        \\ '%E\"%f\":%l-%\\d%\\+: %trror: %m,' .\n        \\ '%E\"%f\":%l%\\%.%c: %trror: %m,' .\n        \\ '%E\"%f\":%l%\\%.%c-%\\d%\\+%\\%.%\\d%\\+: %trror: %m,' .\n        \\ '%E\"%f\":%l: %trror fatal: %m,' .\n        \\ '%E\"%f\":%l-%\\d%\\+: %trror fatal: %m,' .\n        \\ '%E\"%f\":%l%\\%.%c: %trror fatal: %m,' .\n        \\ '%E\"%f\":%l%\\%.%c-%\\d%\\+%\\%.%\\d%\\+: %trror fatal: %m,' .\n        \\ '%W\"%f\":%l: info %tarning: %m,' .\n        \\ '%W\"%f\":%l-%\\d%\\+: info %tarning: %m,' .\n        \\ '%W\"%f\":%l%\\%.%c: info %tarning: %m,' .\n        \\ '%W\"%f\":%l%\\%.%c-%\\d%\\+%\\%.%\\d%\\+: info %tarning: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'preprocess': 'validator',\n        \\ 'returns': [0] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'html',\n    \\ 'name': 'validator',\n    \\ 'exec': 'curl' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/html/w3.vim",
    "content": "\"============================================================================\n\"File:        w3.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" Checker option:\n\"\n\" - g:syntastic_html_w3_api (string; default: 'http://validator.w3.org/check')\n\"   URL of the service to use for checking; leave it to the default to run the\n\"   checks against http://validator.w3.org/, or set it to\n\"   'http://localhost/w3c-validator/check' if you're running a local service\n\nif exists(\"g:loaded_syntastic_html_w3_checker\")\n    finish\nendif\nlet g:loaded_syntastic_html_w3_checker = 1\n\nif !exists('g:syntastic_html_w3_api')\n    let g:syntastic_html_w3_api = 'http://validator.w3.org/check'\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_html_w3_GetLocList() dict\n    let makeprg = self.getExecEscaped() . ' -s -F output=json ' .\n        \\ '-F uploaded_file=@' . syntastic#util#shexpand('%:p') . '\\;type=text/html ' .\n        \\ g:syntastic_html_w3_api\n\n    let errorformat =\n        \\ '%A %\\+{,' .\n        \\ '%C %\\+\"lastLine\": %l\\,%\\?,' .\n        \\ '%C %\\+\"lastColumn\": %c\\,%\\?,' .\n        \\ '%C %\\+\"message\": \"%m\"\\,%\\?,' .\n        \\ '%C %\\+\"type\": \"%trror\"\\,%\\?,' .\n        \\ '%-G %\\+\"type\": \"%tnfo\"\\,%\\?,' .\n        \\ '%C %\\+\"subtype\": \"%tarning\"\\,%\\?,' .\n        \\ '%Z %\\+}\\,,' .\n        \\ '%-G%.%#'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr(\"\")},\n        \\ 'returns': [0] })\n\n    for e in loclist\n        let e['text'] = substitute(e['text'], '\\m\\\\\\([\\\"]\\)', '\\1', 'g')\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'html',\n    \\ 'name': 'w3',\n    \\ 'exec': 'curl' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/java/checkstyle.vim",
    "content": "\"============================================================================\n\"File:        checkstyle.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Dmitry Geurkov <d.geurkov at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\" Tested with checkstyle 5.5\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_java_checkstyle_checker\")\n    finish\nendif\nlet g:loaded_syntastic_java_checkstyle_checker = 1\n\nif !exists(\"g:syntastic_java_checkstyle_classpath\")\n    let g:syntastic_java_checkstyle_classpath = 'checkstyle-5.5-all.jar'\nendif\n\nif !exists(\"g:syntastic_java_checkstyle_conf_file\")\n    let g:syntastic_java_checkstyle_conf_file = 'sun_checks.xml'\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_java_checkstyle_GetLocList() dict\n\n    let fname = syntastic#util#shescape( expand('%:p:h') . '/' . expand('%:t') )\n\n    if has('win32unix')\n        let fname = substitute(system('cygpath -m ' . fname), '\\m\\%x00', '', 'g')\n    endif\n\n    let makeprg = self.makeprgBuild({\n        \\ 'args_after': '-cp ' . g:syntastic_java_checkstyle_classpath .\n        \\               ' com.puppycrawl.tools.checkstyle.Main -c ' . g:syntastic_java_checkstyle_conf_file .\n        \\               ' -f xml',\n        \\ 'fname': fname })\n\n    let errorformat = '%f:%t:%l:%c:%m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'preprocess': 'checkstyle',\n        \\ 'subtype': 'Style' })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'java',\n    \\ 'name': 'checkstyle',\n    \\ 'exec': 'java'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/java/javac.vim",
    "content": "\"============================================================================\n\"File:        javac.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Jochen Keil <jochen.keil at gmail dot com>\n\"             Dmitry Geurkov <d.geurkov at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_java_javac_checker\")\n    finish\nendif\nlet g:loaded_syntastic_java_javac_checker = 1\nlet g:syntastic_java_javac_maven_pom_tags = [\"build\", \"properties\"]\nlet g:syntastic_java_javac_maven_pom_properties = {}\nlet s:has_maven = 0\n\n\" Global Options\nif !exists(\"g:syntastic_java_javac_executable\")\n    let g:syntastic_java_javac_executable = 'javac'\nendif\n\nif !exists(\"g:syntastic_java_maven_executable\")\n    let g:syntastic_java_maven_executable = 'mvn'\nendif\n\nif !exists(\"g:syntastic_java_javac_options\")\n    let g:syntastic_java_javac_options = '-Xlint'\nendif\n\nif !exists(\"g:syntastic_java_javac_classpath\")\n    let g:syntastic_java_javac_classpath = ''\nendif\n\nif !exists(\"g:syntastic_java_javac_delete_output\")\n    let g:syntastic_java_javac_delete_output = 1\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! s:CygwinPath(path)\n    return substitute(system(\"cygpath -m \" . a:path), '\\n', '', 'g')\nendfunction\n\nif !exists(\"g:syntastic_java_javac_temp_dir\")\n    if has('win32') || has('win64')\n        let g:syntastic_java_javac_temp_dir = $TEMP.\"\\\\vim-syntastic-javac\"\n    elseif has('win32unix')\n        let g:syntastic_java_javac_temp_dir = s:CygwinPath('/tmp/vim-syntastic-javac')\n    else\n        let g:syntastic_java_javac_temp_dir = '/tmp/vim-syntastic-javac'\n    endif\nendif\n\nif !exists(\"g:syntastic_java_javac_autoload_maven_classpath\")\n    let g:syntastic_java_javac_autoload_maven_classpath = 1\nendif\n\nif !exists('g:syntastic_java_javac_config_file_enabled')\n    let g:syntastic_java_javac_config_file_enabled = 0\nendif\n\nif !exists('g:syntastic_java_javac_config_file')\n    let g:syntastic_java_javac_config_file = '.syntastic_javac_config'\nendif\n\nif !exists('g:syntastic_java_javac_custom_classpath_command')\n    let g:syntastic_java_javac_custom_classpath_command = ''\nendif\n\nif !exists(\"g:syntastic_java_javac_maven_pom_ftime\")\n    let g:syntastic_java_javac_maven_pom_ftime = {}\nendif\n\nif !exists(\"g:syntastic_java_javac_maven_pom_classpath\")\n    let g:syntastic_java_javac_maven_pom_classpath = {}\nendif\n\nfunction! s:RemoveCarriageReturn(line)\n    return substitute(a:line, '\\r', '', 'g')\nendfunction\n\n\" recursively remove directory and all it's sub-directories\nfunction! s:RemoveDir(dir)\n    if isdirectory(a:dir)\n        for f in split(globpath(a:dir, '*'), \"\\n\")\n            call s:RemoveDir(f)\n        endfor\n        silent! call system('rmdir ' . a:dir)\n    else\n        silent! call delete(a:dir)\n    endif\nendfunction\n\nfunction! s:AddToClasspath(classpath, path)\n    if a:path == ''\n        return a:classpath\n    endif\n    if a:classpath != '' && a:path != ''\n        if has('win32') || has('win32unix') || has('win64')\n            return a:classpath . \";\" . a:path\n        else\n            return a:classpath . \":\" . a:path\n        endif\n    else\n        return a:path\n    endif\nendfunction\n\nfunction! s:SplitClasspath(classpath)\n    if a:classpath == ''\n        return []\n    endif\n    if has('win32') || has('win32unix') || has('win64')\n        return split(a:classpath, \";\")\n    else\n        return split(a:classpath, \":\")\n    endif\nendfunction\n\nfunction! s:LoadConfigFile()\n    if filereadable(g:syntastic_java_javac_config_file)\n        exe 'source '.g:syntastic_java_javac_config_file\n    endif\nendfunction\n\nfunction! s:SaveClasspath()\n    \" build classpath from lines\n    let path = ''\n    let lines = getline(1, line('$'))\n    for l in lines\n        let path = s:AddToClasspath(path, l)\n    endfor\n    \" save classpath to config file\n    if g:syntastic_java_javac_config_file_enabled\n        if filereadable(g:syntastic_java_javac_config_file)\n            \" load lines from config file\n            let lines = readfile(g:syntastic_java_javac_config_file)\n            \" strip g:syntastic_java_javac_classpath options from config file lines\n            let i = 0\n            while i < len(lines)\n                if match(lines[i], 'g:syntastic_java_javac_classpath') != -1\n                    call remove(lines, i)\n                    let i -= 1\n                endif\n                let i += 1\n            endwhile\n        else\n            let lines = []\n        endif\n        \" add new g:syntastic_java_javac_classpath option to config\n        call add(lines, 'let g:syntastic_java_javac_classpath = \"'.path.'\"')\n        \" save config file lines\n        call writefile(lines, g:syntastic_java_javac_config_file)\n    endif\n    \" set new classpath\n    let g:syntastic_java_javac_classpath = path\n    let &modified = 0\nendfunction\n\nfunction! s:EditClasspath()\n    let command = 'syntastic javac classpath'\n    let winnr = bufwinnr('^' . command . '$')\n    if winnr < 0\n        let path = []\n        let pathlines = split(g:syntastic_java_javac_classpath, \"\\n\")\n        for p in pathlines\n            let path += s:SplitClasspath(p)\n        endfor\n        execute (len(path) + 5) . 'sp ' . fnameescape(command)\n\n        augroup syntastic\n            autocmd BufWriteCmd <buffer> call s:SaveClasspath() | bwipeout\n        augroup END\n\n        setlocal buftype=acwrite bufhidden=wipe nobuflisted noswapfile nowrap number\n        for p in path\n            call append(line('$') - 1, p)\n        endfor\n        let &modified = 0\n    else\n        execute winnr . 'wincmd w'\n    endif\nendfunction\n\nfunction! s:SaveConfig()\n    \" get lines\n    let lines = getline(1, line('$'))\n    if g:syntastic_java_javac_config_file_enabled\n        \" save config file lines\n        call writefile(lines, g:syntastic_java_javac_config_file)\n    endif\n    let &modified = 0\nendfunction\n\nfunction! s:EditConfig()\n    let command = 'syntastic javac config'\n    let winnr = bufwinnr('^' . command . '$')\n    if winnr < 0\n        let lines = []\n        if filereadable(g:syntastic_java_javac_config_file)\n            let lines = readfile(g:syntastic_java_javac_config_file)\n        endif\n        execute (len(lines) + 5) . 'sp ' . fnameescape(command)\n\n        augroup syntastic\n            autocmd BufWriteCmd <buffer> call s:SaveConfig() | bwipeout\n        augroup END\n\n        setlocal ft=vim buftype=acwrite bufhidden=wipe nobuflisted noswapfile nowrap number\n        for l in lines\n            call append(line('$') - 1, l)\n        endfor\n        let &modified = 0\n    else\n        execute winnr . 'wincmd w'\n    endif\nendfunction\n\nfunction! s:GetMavenProperties()\n    let mvn_properties = {}\n    let pom = findfile(\"pom.xml\", \".;\")\n    if s:has_maven && filereadable(pom)\n        if !has_key(g:syntastic_java_javac_maven_pom_properties, pom)\n            let mvn_cmd = syntastic#util#shexpand(g:syntastic_java_maven_executable) . ' -f ' . pom\n            let mvn_is_managed_tag = 1\n            let mvn_settings_output = split(system(mvn_cmd . ' help:effective-pom'), \"\\n\")\n            let current_path = 'project'\n            for line in mvn_settings_output\n                let matches = matchlist(line, '\\m^\\s*<\\([a-zA-Z0-9\\-\\.]\\+\\)>\\s*$')\n                if mvn_is_managed_tag && !empty(matches)\n                    let mvn_is_managed_tag = index(g:syntastic_java_javac_maven_pom_tags, matches[1]) >= 0\n                    let current_path .= '.' . matches[1]\n                else\n                    let matches = matchlist(line, '\\m^\\s*</\\([a-zA-Z0-9\\-\\.]\\+\\)>\\s*$')\n                    if !empty(matches)\n                        let mvn_is_managed_tag = index(g:syntastic_java_javac_maven_pom_tags, matches[1]) < 0\n                        let current_path  = substitute(current_path, '\\m\\.' . matches[1] . \"$\", '', '')\n                    else\n                        let matches = matchlist(line, '\\m^\\s*<\\([a-zA-Z0-9\\-\\.]\\+\\)>\\(.\\+\\)</[a-zA-Z0-9\\-\\.]\\+>\\s*$')\n                        if mvn_is_managed_tag && !empty(matches)\n                            let mvn_properties[current_path . '.' . matches[1]] = matches[2]\n                        endif\n                    endif\n                endif\n            endfor\n            let g:syntastic_java_javac_maven_pom_properties[pom] = mvn_properties\n        endif\n        return g:syntastic_java_javac_maven_pom_properties[pom]\n    endif\n    return mvn_properties\nendfunction\n\ncommand! SyntasticJavacEditClasspath call s:EditClasspath()\n\nif g:syntastic_java_javac_config_file_enabled\n    command! SyntasticJavacEditConfig call s:EditConfig()\nendif\n\nfunction! s:GetMavenClasspath()\n    let pom = findfile(\"pom.xml\", \".;\")\n    if s:has_maven && filereadable(pom)\n        if !has_key(g:syntastic_java_javac_maven_pom_ftime, pom) || g:syntastic_java_javac_maven_pom_ftime[pom] != getftime(pom)\n            let mvn_cmd = syntastic#util#shexpand(g:syntastic_java_maven_executable) . ' -f ' . pom\n            let mvn_classpath_output = split(system(mvn_cmd . ' dependency:build-classpath'), \"\\n\")\n            let mvn_classpath = ''\n            let class_path_next = 0\n\n            for line in mvn_classpath_output\n                if class_path_next == 1\n                    let mvn_classpath = s:RemoveCarriageReturn(line)\n                    break\n                endif\n                if stridx(line, 'Dependencies classpath:') >= 0\n                    let class_path_next = 1\n                endif\n            endfor\n\n            let mvn_properties = s:GetMavenProperties()\n\n            let output_dir = 'target/classes'\n            if has_key(mvn_properties, 'project.build.outputDirectory')\n                let output_dir = mvn_properties['project.build.outputDirectory']\n            endif\n            let mvn_classpath = s:AddToClasspath(mvn_classpath, output_dir)\n\n            let test_output_dir = 'target/test-classes'\n            if has_key(mvn_properties, 'project.build.testOutputDirectory')\n                let test_output_dir = mvn_properties['project.build.testOutputDirectory']\n            endif\n            let mvn_classpath = s:AddToClasspath(mvn_classpath, test_output_dir)\n\n            let g:syntastic_java_javac_maven_pom_ftime[pom] = getftime(pom)\n            let g:syntastic_java_javac_maven_pom_classpath[pom] = mvn_classpath\n        endif\n        return g:syntastic_java_javac_maven_pom_classpath[pom]\n    endif\n    return ''\nendfunction\n\nfunction! SyntaxCheckers_java_javac_IsAvailable() dict\n    let s:has_maven = executable(expand(g:syntastic_java_maven_executable))\n    return executable(expand(g:syntastic_java_javac_executable))\nendfunction\n\nfunction! s:MavenOutputDirectory()\n    let pom = findfile(\"pom.xml\", \".;\")\n    if s:has_maven && filereadable(pom)\n        let mvn_properties = s:GetMavenProperties()\n        let output_dir = getcwd()\n        if has_key(mvn_properties, 'project.properties.build.dir')\n            let output_dir = mvn_properties['project.properties.build.dir']\n        endif\n        if stridx(expand( '%:p:h' ), \"src.main.java\") >= 0\n            let output_dir .= '/target/classes'\n            if has_key(mvn_properties, 'project.build.outputDirectory')\n                let output_dir = mvn_properties['project.build.outputDirectory']\n            endif\n        endif\n        if stridx(expand( '%:p:h' ), \"src.test.java\") >= 0\n            let output_dir .= '/target/test-classes'\n            if has_key(mvn_properties, 'project.build.testOutputDirectory')\n                let output_dir = mvn_properties['project.build.testOutputDirectory']\n            endif\n        endif\n\n        if has('win32unix')\n            let output_dir=s:CygwinPath(output_dir)\n        endif\n        return output_dir\n    endif\n    return '.'\nendfunction\n\nfunction! SyntaxCheckers_java_javac_GetLocList() dict\n\n    let javac_opts = g:syntastic_java_javac_options\n\n    let output_dir = \"\"\n    if g:syntastic_java_javac_delete_output\n        let output_dir = g:syntastic_java_javac_temp_dir\n        let javac_opts .= ' -d ' . output_dir\n    endif\n\n    \" load classpath from config file\n    if g:syntastic_java_javac_config_file_enabled\n        call s:LoadConfigFile()\n    endif\n\n    let javac_classpath = ''\n\n    \" add classpathes to javac_classpath\n    if has('win32') || has('win32unix') || has('win64')\n        let javac_classpath_split = ';'\n    else\n        let javac_classpath_split = ':'\n    endif\n    for path in split(g:syntastic_java_javac_classpath, javac_classpath_split)\n        if path != ''\n            try\n                let ps = glob(path, 0, 1)\n            catch\n                let ps = split(glob(path, 0), \"\\n\")\n            endtry\n            if type(ps) == type([])\n                for p in ps\n                    let javac_classpath = s:AddToClasspath(javac_classpath, p)\n                endfor\n            else\n                let javac_classpath = s:AddToClasspath(javac_classpath, ps)\n            endif\n        endif\n    endfor\n\n    if s:has_maven && g:syntastic_java_javac_autoload_maven_classpath\n        if !g:syntastic_java_javac_delete_output\n            let javac_opts .= ' -d ' . s:MavenOutputDirectory()\n        endif\n        let javac_classpath = s:AddToClasspath(javac_classpath, s:GetMavenClasspath())\n    endif\n\n    \" load custom classpath\n    if g:syntastic_java_javac_custom_classpath_command != ''\n        let lines = system(g:syntastic_java_javac_custom_classpath_command)\n        if has('win32') || has('win32unix') || has('win64')\n            let lines = substitute(lines, \"\\r\\n\", \"\\n\", 'g')\n        endif\n        for l in split(lines, \"\\n\")\n            let javac_classpath = s:AddToClasspath(javac_classpath, l)\n        endfor\n    endif\n\n    if javac_classpath != ''\n        let javac_opts .= ' -cp \"' . fnameescape(javac_classpath) . '\"'\n    endif\n\n    \" path seperator\n    if has('win32') || has('win32unix') || has('win64')\n        let sep = \"\\\\\"\n    else\n        let sep = '/'\n    endif\n\n    let fname = fnameescape(expand ( '%:p:h' ) . sep . expand ( '%:t' ))\n\n    if has('win32unix')\n        let fname =  s:CygwinPath(fname)\n    endif\n\n    let makeprg = self.makeprgBuild({\n        \\ 'args': javac_opts,\n        \\ 'fname': fname,\n        \\ 'tail': '2>&1' })\n\n    \" unashamedly stolen from *errorformat-javac* (quickfix.txt) and modified to include error types\n    let errorformat =\n        \\ '%E%f:%l:\\ error:\\ %m,'.\n        \\ '%W%f:%l:\\ warning:\\ %m,'.\n        \\ '%A%f:%l:\\ %m,'.\n        \\ '%+Z%p^,'.\n        \\ '%+C%.%#,'.\n        \\ '%-G%.%#'\n\n    if g:syntastic_java_javac_delete_output\n        silent! call mkdir(output_dir, 'p')\n    endif\n    let errors = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'postprocess': ['cygwinRemoveCR'] })\n\n    if g:syntastic_java_javac_delete_output\n        call s:RemoveDir(output_dir)\n    endif\n    return errors\n\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'java',\n    \\ 'name': 'javac'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/javascript/closurecompiler.vim",
    "content": "\"============================================================================\n\"File:        closurecompiler.vim\n\"Description: Javascript syntax checker - using Google Closure Compiler\n\"Maintainer:  Motohiro Takayama <mootoh at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\"\n\" To enable this plugin, edit the .vimrc like this:\n\"\n\"   let g:syntastic_javascript_checker = \"closurecompiler\"\n\"\n\" and set the path to the Google Closure Compiler:\n\"\n\"   let g:syntastic_javascript_closure_compiler_path = '/path/to/google-closure-compiler.jar'\n\"\n\" It takes additional options for Google Closure Compiler with the variable\n\" g:syntastic_javascript_closure_compiler_options.\n\"\n\nif exists(\"g:loaded_syntastic_javascript_closurecompiler_checker\")\n    finish\nendif\nlet g:loaded_syntastic_javascript_closurecompiler_checker = 1\n\nif !exists(\"g:syntastic_javascript_closure_compiler_options\")\n    let g:syntastic_javascript_closure_compiler_options = \"\"\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_javascript_closurecompiler_IsAvailable() dict\n    return\n        \\ executable(\"java\") &&\n        \\ exists(\"g:syntastic_javascript_closure_compiler_path\") &&\n        \\ filereadable(g:syntastic_javascript_closure_compiler_path)\nendfunction\n\nfunction! SyntaxCheckers_javascript_closurecompiler_GetLocList() dict\n    if exists(\"g:syntastic_javascript_closure_compiler_file_list\")\n        let file_list = join(readfile(g:syntastic_javascript_closure_compiler_file_list))\n    else\n        let file_list = syntastic#util#shexpand('%')\n    endif\n\n    let makeprg = self.makeprgBuild({\n        \\ 'exe': 'java -jar ' . g:syntastic_javascript_closure_compiler_path,\n        \\ 'args': g:syntastic_javascript_closure_compiler_options,\n        \\ 'args_after': '--js' ,\n        \\ 'fname': file_list })\n\n    let errorformat =\n        \\ '%-GOK,'.\n        \\ '%E%f:%l: ERROR - %m,'.\n        \\ '%Z%p^,'.\n        \\ '%W%f:%l: WARNING - %m,'.\n        \\ '%Z%p^'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'javascript',\n    \\ 'name': 'closurecompiler',\n    \\ 'exec': 'java'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/javascript/eslint.vim",
    "content": "\"============================================================================\n\"File:        eslint.vim\n\"Description: Javascript syntax checker - using eslint\n\"Maintainer:  Maksim Ryzhikov <rv.maksim at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists('g:loaded_syntastic_javascript_eslint_checker')\n    finish\nendif\nlet g:loaded_syntastic_javascript_eslint_checker = 1\n\nif !exists('g:syntastic_javascript_eslint_conf')\n    let g:syntastic_javascript_eslint_conf = ''\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_javascript_eslint_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args': (g:syntastic_javascript_eslint_conf != '' ? '--config ' . g:syntastic_javascript_eslint_conf : '') })\n\n    let errorformat =\n        \\ '%E%f: line %l\\, col %c\\, Error - %m'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'postprocess': ['sort'] })\n\n    for e in loclist\n        let e['col'] += 1\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'javascript',\n    \\ 'name': 'eslint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/javascript/gjslint.vim",
    "content": "\"============================================================================\n\"File:        gjslint.vim\n\"Description: Javascript syntax checker - using gjslint\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_javascript_gjslint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_javascript_gjslint_checker = 1\n\nif !exists(\"g:syntastic_javascript_gjslint_conf\")\n    let g:syntastic_javascript_gjslint_conf = \"\"\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_javascript_gjslint_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args': g:syntastic_javascript_gjslint_conf,\n        \\ 'args_after': '--nosummary --unix_mode --nodebug_indentation --nobeep' })\n\n    let errorformat =\n        \\ \"%f:%l:(New Error -%\\\\?\\%n) %m,\" .\n        \\ \"%f:%l:(-%\\\\?%n) %m,\" .\n        \\ \"%-G1 files checked,\" .\n        \\ \" no errors found.,\" .\n        \\ \"%-G%.%#\"\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'javascript',\n    \\ 'name': 'gjslint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/javascript/jscs.vim",
    "content": "\"============================================================================\n\"File:        jscs.vim\n\"Description: Javascript syntax checker - using jscs\n\"Maintainer:  LCD 47 <lcd047@gmail.com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_javascript_jscs_checker\")\n    finish\nendif\nlet g:loaded_syntastic_javascript_jscs_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_javascript_jscs_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '--no-colors --reporter checkstyle' })\n    let errorformat = '%f:%t:%l:%c:%m'\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'subtype': 'Style',\n        \\ 'preprocess': 'checkstyle',\n        \\ 'postprocess': ['sort'],\n        \\ 'returns': [0, 2] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'javascript',\n    \\ 'name': 'jscs'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/javascript/jshint.vim",
    "content": "\"============================================================================\n\"File:        jshint.vim\n\"Description: Javascript syntax checker - using jshint\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists('g:loaded_syntastic_javascript_jshint_checker')\n    finish\nendif\nlet g:loaded_syntastic_javascript_jshint_checker = 1\n\nif !exists('g:syntastic_javascript_jshint_conf')\n    let g:syntastic_javascript_jshint_conf = ''\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_javascript_jshint_IsAvailable() dict\n    if !exists('g:syntastic_jshint_exec')\n        let g:syntastic_jshint_exec = self.getExec()\n    endif\n    return executable(expand(g:syntastic_jshint_exec))\nendfunction\n\nfunction! SyntaxCheckers_javascript_jshint_GetLocList() dict\n    let exe = syntastic#util#shexpand(g:syntastic_jshint_exec)\n    if !exists('s:jshint_new')\n        let s:jshint_new =\n            \\ syntastic#util#versionIsAtLeast(syntastic#util#getVersion(exe . ' --version'), [1, 1])\n    endif\n\n    let makeprg = self.makeprgBuild({\n        \\ 'exe': exe,\n        \\ 'args': (g:syntastic_javascript_jshint_conf != '' ? '--config ' . g:syntastic_javascript_jshint_conf : ''),\n        \\ 'args_after': (s:jshint_new ? '--verbose ' : '') })\n\n    let errorformat = s:jshint_new ?\n        \\ '%A%f: line %l\\, col %v\\, %m \\(%t%*\\d\\)' :\n        \\ '%E%f: line %l\\, col %v\\, %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr('')},\n        \\ 'returns': [0, 2] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'javascript',\n    \\ 'name': 'jshint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/javascript/jsl.vim",
    "content": "\"============================================================================\n\"File:        jsl.vim\n\"Description: Javascript syntax checker - using jsl\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_javascript_jsl_checker\")\n    finish\nendif\nlet g:loaded_syntastic_javascript_jsl_checker = 1\n\nif !exists(\"g:syntastic_javascript_jsl_conf\")\n    let g:syntastic_javascript_jsl_conf = \"\"\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_javascript_jsl_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args': (g:syntastic_javascript_jsl_conf != '' ? '-conf ' . g:syntastic_javascript_jsl_conf : ''),\n        \\ 'args_after': '-nologo -nofilelisting -nosummary -nocontext -process' })\n\n    let errorformat =\n        \\ '%W%f(%l): lint warning: %m,'.\n        \\ '%-Z%p^,'.\n        \\ '%W%f(%l): warning: %m,'.\n        \\ '%-Z%p^,'.\n        \\ '%E%f(%l): SyntaxError: %m,'.\n        \\ '%-Z%p^,'.\n        \\ '%-G'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'javascript',\n    \\ 'name': 'jsl'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/javascript/jslint.vim",
    "content": "\"============================================================================\n\"File:        jslint.vim\n\"Description: Javascript syntax checker - using jslint\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"Tested with jslint 0.1.4.\n\"============================================================================\nif exists(\"g:loaded_syntastic_javascript_jslint_checker\")\n    finish\nendif\n\nlet g:loaded_syntastic_javascript_jslint_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_javascript_jslint_GetHighlightRegex(item)\n    let term = matchstr(a:item['text'], '\\mExpected .* and instead saw ''\\zs.*\\ze''')\n    if term != ''\n        let term = '\\V' . term\n    endif\n    return term\nendfunction\n\nfunction! SyntaxCheckers_javascript_jslint_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args': '--white --nomen --regexp --plusplus --bitwise --newcap --sloppy --vars' })\n\n    let errorformat =\n        \\ '%E %##%\\d%\\+ %m,'.\n        \\ '%-Z%.%#Line %l\\, Pos %c,'.\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr(\"\")} })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'javascript',\n    \\ 'name': 'jslint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/javascript/jsxhint.vim",
    "content": "\"============================================================================\n\"File:        jsxhint.vim\n\"Description: Javascript syntax checker - using jsxhint\n\"Maintainer:  Thomas Boyt <me@thomasboyt.com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists('g:loaded_syntastic_javascript_jsxhint_checker')\n    finish\nendif\nlet g:loaded_syntastic_javascript_jsxhint_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_javascript_jsxhint_IsAvailable() dict\n    if !executable('jshint') || !syntastic#util#versionIsAtLeast(syntastic#util#getVersion('jshint --version'), [1, 1])\n        return 0\n    endif\n\n    let jsxhint_version = system(self.getExecEscaped() . ' --version')\n    return\n        \\ v:shell_error == 0 &&\n        \\ jsxhint_version =~# '\\m^JSXHint\\>' &&\n        \\ syntastic#util#versionIsAtLeast(syntastic#util#parseVersion(jsxhint_version), [0, 4, 1])\nendfunction\n\nfunction! SyntaxCheckers_javascript_jsxhint_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args_after': '--verbose' })\n\n    let errorformat = '%A%f: line %l\\, col %v\\, %m \\(%t%*\\d\\)'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr('')} })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'javascript',\n    \\ 'name': 'jsxhint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/json/jsonlint.vim",
    "content": "\"============================================================================\n\"File:        jsonlint.vim\n\"Description: JSON syntax checker - using jsonlint\n\"Maintainer:  Miller Medeiros <contact at millermedeiros dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_json_jsonlint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_json_jsonlint_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_json_jsonlint_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'post_args_after': '--compact' })\n\n    let errorformat =\n        \\ '%ELine %l:%c,'.\n        \\ '%Z\\\\s%#Reason: %m,'.\n        \\ '%C%.%#,'.\n        \\ '%f: line %l\\, col %c\\, %m,'.\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr('')} })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'json',\n    \\ 'name': 'jsonlint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/json/jsonval.vim",
    "content": "\"============================================================================\n\"File:        jsonval.vim\n\"Description: JSON syntax checker - using jsonval\n\"Maintainer:  Miller Medeiros <contact at millermedeiros dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_json_jsonval_checker\")\n    finish\nendif\nlet g:loaded_syntastic_json_jsonval_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_json_jsonval_GetLocList() dict\n    \" based on https://gist.github.com/1196345\n    let makeprg = self.makeprgBuild({})\n\n    let errorformat =\n        \\ '%E%f:\\ %m\\ at\\ line\\ %l,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr('')} })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'json',\n    \\ 'name': 'jsonval'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/less/less-lint.coffee",
    "content": "#!/usr/bin/env node\n\nfs = require 'fs'\nless = require 'less'\nargs = process.argv.slice(1)\noptions = {}\n\nargs = args.filter (arg) ->\n    match = arg.match(/^-I(.+)$/)\n    if match\n        options.paths.push(match[1]);\n        return false\n\n    match = arg.match(/^--?([a-z][\\-0-9a-z]*)(?:=([^\\s]+))?$/i)\n    if match\n        arg = match[1]\n    else\n        return arg\n\n    switch arg\n        when 'strict-imports' then options.strictImports = true\n        when 'include-path'\n            options.paths = match[2].split(if os.type().match(/Windows/) then ';' else ':')\n                .map (p) ->\n                    if p\n                        return path.resolve(process.cwd(), p)\n        when 'O0' then options.optimization = 0\n        when 'O1' then options.optimization = 1\n        when 'O2' then options.optimization = 2\n\noptions.filename = args[1]\n\nparser = new(less.Parser) options\n\nfs.readFile(options.filename, 'utf-8', (err,data) ->\n    parser.parse(data, (err, tree) ->\n        if err\n            less.writeError err\n            process.exit(1)\n    )\n)\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/less/less-lint.js",
    "content": "// Generated by CoffeeScript 1.3.3\n(function() {\n  var args, fs, less, options, parser;\n\n  fs = require('fs');\n\n  less = require('less');\n\n  args = process.argv.slice(1);\n\n  options = {};\n\n  args = args.filter(function(arg) {\n    var match;\n    match = arg.match(/^-I(.+)$/);\n    if (match) {\n      options.paths.push(match[1]);\n      return false;\n    }\n    match = arg.match(/^--?([a-z][\\-0-9a-z]*)(?:=([^\\s]+))?$/i);\n    if (match) {\n      arg = match[1];\n    } else {\n      return arg;\n    }\n    switch (arg) {\n      case 'strict-imports':\n        return options.strictImports = true;\n      case 'include-path':\n        return options.paths = match[2].split(os.type().match(/Windows/) ? ';' : ':').map(function(p) {\n          if (p) {\n            return path.resolve(process.cwd(), p);\n          }\n        });\n      case 'O0':\n        return options.optimization = 0;\n      case 'O1':\n        return options.optimization = 1;\n      case 'O2':\n        return options.optimization = 2;\n    }\n  });\n\n  options.filename = args[1];\n\n  parser = new less.Parser(options);\n\n  fs.readFile(options.filename, 'utf-8', function(err, data) {\n    return parser.parse(data, function(err, tree) {\n      if (err) {\n        less.writeError(err);\n        return process.exit(1);\n      }\n    });\n  });\n\n}).call(this);\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/less/lessc.vim",
    "content": "\"============================================================================\n\"File:        less.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Julien Blanchard <julien at sideburns dot eu>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\n\" To send additional options to less use the variable g:syntastic_less_options.\n\" The default is\n\"   let g:syntastic_less_options = \"--no-color\"\n\"\n\" To use less-lint instead of less set the variable\n\" g:syntastic_less_use_less_lint.\n\nif exists(\"g:loaded_syntastic_less_lessc_checker\")\n    finish\nendif\nlet g:loaded_syntastic_less_lessc_checker = 1\n\nif !exists(\"g:syntastic_less_options\")\n    let g:syntastic_less_options = \"\"\nendif\n\nif !exists(\"g:syntastic_less_use_less_lint\")\n    let g:syntastic_less_use_less_lint = 0\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nlet s:node_file = 'node ' . syntastic#util#shescape(expand('<sfile>:p:h') . syntastic#util#Slash() . 'less-lint.js')\n\nfunction! SyntaxCheckers_less_lessc_IsAvailable() dict\n    return g:syntastic_less_use_less_lint ? executable('node') : executable(self.getExec())\nendfunction\n\nfunction! SyntaxCheckers_less_lessc_GetLocList() dict\n    if !exists('s:check_file')\n        let s:check_file = g:syntastic_less_use_less_lint ? s:node_file : self.getExecEscaped()\n    endif\n\n    let makeprg = self.makeprgBuild({\n        \\ 'exe': s:check_file,\n        \\ 'args': g:syntastic_less_options,\n        \\ 'args_after': '--no-color',\n        \\ 'tail': '> ' . syntastic#util#DevNull() })\n\n    let errorformat =\n        \\ '%m in %f on line %l\\, column %c:,' .\n        \\ '%m in %f:%l:%c,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr(\"\"), 'text': \"Syntax error\"} })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'less',\n    \\ 'name': 'lessc'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/lex/flex.vim",
    "content": "\"============================================================================\n\"File:        lex.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_lex_flex_checker\")\n    finish\nendif\nlet g:loaded_syntastic_lex_flex_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_lex_flex_GetHighlightRegex(item)\n    let term = matchstr(a:item['text'],\n        \\ '\\m^\\(unrecognized %option\\|bad <start condition>\\|bad character\\( class expression\\)\\=\\): \\zs.*')\n    if term == ''\n        let term = matchstr(a:item['text'],\n            \\ '\\m^\\(Definition value for\\|undefined definition\\) \\zs{[^}]\\+}\\ze')\n    endif\n\n    return term != '' ? '\\V' . term : ''\nendfunction\n\nfunction! SyntaxCheckers_lex_flex_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args_after': syntastic#c#NullOutput() })\n\n    let errorformat = '%f:%l: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'lex',\n    \\ 'name': 'flex'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/limbo/limbo.vim",
    "content": "\"============================================================================\n\"File:        limbo.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Alex Efros <powerman-asdf@ya.ru>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_limbo_limbo_checker\")\n    finish\nendif\nlet g:loaded_syntastic_limbo_limbo_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_limbo_limbo_GetLocList() dict\n    let include = $INFERNO_HOME != '' ? '-I$INFERNO_HOME ' : ''\n    \" don't generate .dis in current dir while checking syntax,\n    \" .dis should be generated by `mk`\n    let output = filereadable('mkfile') ? (' ' . syntastic#c#NullOutput()) : ''\n\n    let makeprg = self.makeprgBuild({ 'args_before': include . '-w' . output })\n\n    let errorformat = '%E%f:%l:%m'\n    if expand('%') =~# '\\m\\.m$'\n        let errorformat = '%-G%f:%l: near ` EOF ` : no implementation module,' . errorformat\n    endif\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'limbo',\n    \\ 'name': 'limbo' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/lisp/clisp.vim",
    "content": "\"============================================================================\n\"File:        lisp.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Karl Yngve Lervåg <karl.yngve@lervag.net>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_lisp_clisp_checker\")\n    finish\nendif\nlet g:loaded_syntastic_lisp_clisp_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_lisp_clisp_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args_after': '-q -c ' . syntastic#c#NullOutput() })\n\n    let errorformat  =\n        \\ '%-G;%.%#,' .\n        \\ '%W%>WARNING:%.%#line %l : %m,' .\n        \\ '%Z  %#%m,' .\n        \\ '%W%>WARNING:%.%#lines %l..%\\d\\# : %m,' .\n        \\ '%Z  %#%m,' .\n        \\ '%E%>The following functions were %m,' .\n        \\ '%Z %m,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr('')} })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'lisp',\n    \\ 'name': 'clisp'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/llvm/llvm.vim",
    "content": "\"============================================================================\n\"File:        llvm.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Andrew Kelley <superjoe30@gmail.com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_llvm_llvm_checker\")\n    finish\nendif\nlet g:loaded_syntastic_llvm_llvm_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_llvm_llvm_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': syntastic#c#NullOutput() })\n\n    let errorformat = 'llc: %f:%l:%c: %trror: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'llvm',\n    \\ 'name': 'llvm',\n    \\ 'exec': 'llc'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/lua/luac.vim",
    "content": "\"============================================================================\n\"File:        lua.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Gregor Uhlenheuer <kongo2002 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_lua_luac_checker\")\n    finish\nendif\nlet g:loaded_syntastic_lua_luac_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_lua_luac_GetHighlightRegex(pos)\n    let result = ''\n    let near = matchstr(a:pos['text'], '\\mnear ''\\zs[^'']\\+\\ze''')\n    if near != ''\n        if near ==# '<eof>'\n            let p = getpos('$')\n            let a:pos['lnum'] = p[1]\n            let a:pos['col'] = p[2]\n            let result = '\\%' . p[2] . 'c'\n        else\n            let result = '\\V' . near\n        endif\n\n        \" XXX the following piece of code is evil, and is likely to break\n        \" in future versions of syntastic; enable it at your own risk :)\n\n        \"let open = matchstr(a:pos['text'], '\\m(to close ''\\zs[^'']\\+\\ze'' at line [0-9]\\+)')\n        \"if open != ''\n        \"    let line = str2nr(matchstr(a:pos['text'], '\\m(to close ''[^'']\\+'' at line \\zs[0-9]\\+\\ze)'))\n        \"    let group = a:pos['type'] ==? 'E' ? 'SyntasticError' : 'SyntasticWarning'\n        \"    call matchadd(group, '\\%' . line . 'l\\V' . open)\n        \"endif\n    endif\n    return result\nendfunction\n\nfunction! SyntaxCheckers_lua_luac_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '-p' })\n\n    let errorformat =  'luac: %#%f:%l: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': { 'bufnr': bufnr(''), 'type': 'E' } })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'lua',\n    \\ 'name': 'luac'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/matlab/mlint.vim",
    "content": "\"============================================================================\n\"File:        matlab.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Jason Graham <jason at the-graham dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_matlab_mlint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_matlab_mlint_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_matlab_mlint_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '-id $*' })\n\n    let errorformat =\n        \\ 'L %l (C %c): %*[a-zA-Z0-9]: %m,'.\n        \\ 'L %l (C %c-%*[0-9]): %*[a-zA-Z0-9]: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr(\"\")} })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'matlab',\n    \\ 'name': 'mlint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/nasm/nasm.vim",
    "content": "\"============================================================================\n\"File:        nasm.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Håvard Pettersson <haavard.pettersson at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_nasm_nasm_checker\")\n    finish\nendif\nlet g:loaded_syntastic_nasm_nasm_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_nasm_nasm_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args_after': '-X gnu -f elf' .\n        \\       ' -I ' . syntastic#util#shescape(expand(\"%:p:h\") . \"/\") .\n        \\       ' ' . syntastic#c#NullOutput() })\n\n    let errorformat = '%f:%l: %t%*[^:]: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'nasm',\n    \\ 'name': 'nasm'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/nroff/mandoc.vim",
    "content": "\"============================================================================\n\"File:        mandoc.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_nroff_mandoc_checker\")\n    finish\nendif\nlet g:loaded_syntastic_nroff_mandoc_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_nroff_mandoc_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '-Tlint' })\n\n    let errorformat =\n        \\ '%E%f:%l:%c: %tRROR: %m,' .\n        \\ '%W%f:%l:%c: %tARNING: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'returns': [0, 2, 3, 4] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'nroff',\n    \\ 'name': 'mandoc'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/objc/gcc.vim",
    "content": "\"============================================================================\n\"File:        objc.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Gregor Uhlenheuer <kongo2002 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists('g:loaded_syntastic_objc_gcc_checker')\n    finish\nendif\nlet g:loaded_syntastic_objc_gcc_checker = 1\n\nif !exists('g:syntastic_objc_compiler_options')\n    let g:syntastic_objc_compiler_options = '-std=gnu99'\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_objc_gcc_IsAvailable() dict\n    if !exists('g:syntastic_objc_compiler')\n        let g:syntastic_objc_compiler = executable(self.getExec()) ? self.getExec() : 'clang'\n    endif\n    return executable(expand(g:syntastic_objc_compiler))\nendfunction\n\nfunction! SyntaxCheckers_objc_gcc_GetLocList() dict\n    return syntastic#c#GetLocList('objc', 'gcc', {\n        \\ 'errorformat':\n        \\     '%-G%f:%s:,' .\n        \\     '%-G%f:%l: %#error: %#(Each undeclared identifier is reported only%.%#,' .\n        \\     '%-G%f:%l: %#error: %#for each function it appears%.%#,' .\n        \\     '%-GIn file included%.%#,'.\n        \\     '%-G %#from %f:%l\\,,' .\n        \\     '%f:%l:%c: %trror: %m,' .\n        \\     '%f:%l:%c: %tarning: %m,' .\n        \\     '%f:%l:%c: %m,' .\n        \\     '%f:%l: %trror: %m,' .\n        \\     '%f:%l: %tarning: %m,' .\n        \\     '%f:%l: %m',\n        \\ 'main_flags': '-x objective-c -fsyntax-only',\n        \\ 'header_flags': '-x objective-c-header -lobjc',\n        \\ 'header_names': '\\m\\.h$' })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'objc',\n    \\ 'name': 'gcc' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/objc/oclint.vim",
    "content": "\"============================================================================\n\"File:        oclint.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  \"UnCO\" Lin <undercooled aT lavabit com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\"\n\" The setting 'g:syntastic_oclint_config_file' allows you to define a file\n\" that contains additional compiler arguments like include directories or\n\" CFLAGS. The file is expected to contain one option per line. If none is\n\" given the filename defaults to '.syntastic_oclint_config':\n\"\n\"   let g:syntastic_oclint_config_file = '.config'\n\nif exists(\"g:loaded_syntastic_objc_oclint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_objc_oclint_checker = 1\n\nruntime! syntax_checkers/c/*.vim\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'objc',\n    \\ 'name': 'oclint',\n    \\ 'redirect': 'c/oclint'})\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/objcpp/gcc.vim",
    "content": "\"============================================================================\n\"File:        objcpp.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Gregor Uhlenheuer <kongo2002 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists('g:loaded_syntastic_objcpp_gcc_checker')\n    finish\nendif\nlet g:loaded_syntastic_objcpp_gcc_checker = 1\n\nif !exists('g:syntastic_objcpp_compiler_options')\n    let g:syntastic_objcpp_compiler_options = '-std=gnu99'\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_objcpp_gcc_IsAvailable() dict\n    if !exists('g:syntastic_c_compiler')\n        let g:syntastic_objcpp_compiler = executable(self.getExec()) ? self.getExec() : 'clang'\n    endif\n    return executable(expand(g:syntastic_objcpp_compiler))\nendfunction\n\nfunction! SyntaxCheckers_objcpp_gcc_GetLocList() dict\n    return syntastic#c#GetLocList('objcpp', 'gcc', {\n        \\ 'errorformat':\n        \\     '%-G%f:%s:,' .\n        \\     '%-G%f:%l: %#error: %#(Each undeclared identifier is reported only%.%#,' .\n        \\     '%-G%f:%l: %#error: %#for each function it appears%.%#,' .\n        \\     '%-GIn file included%.%#,'.\n        \\     '%-G %#from %f:%l\\,,' .\n        \\     '%f:%l:%c: %trror: %m,' .\n        \\     '%f:%l:%c: %tarning: %m,' .\n        \\     '%f:%l:%c: %m,' .\n        \\     '%f:%l: %trror: %m,' .\n        \\     '%f:%l: %tarning: %m,' .\n        \\     '%f:%l: %m',\n        \\ 'main_flags': '-x objective-c++ -fsyntax-only',\n        \\ 'header_flags': '-x objective-c++-header -lobjc',\n        \\ 'header_names': '\\m\\.h$' })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'objcpp',\n    \\ 'name': 'gcc' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/objcpp/oclint.vim",
    "content": "\"============================================================================\n\"File:        oclint.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  \"UnCO\" Lin <undercooled aT lavabit com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\"\n\" The setting 'g:syntastic_oclint_config_file' allows you to define a file\n\" that contains additional compiler arguments like include directories or\n\" CFLAGS. The file is expected to contain one option per line. If none is\n\" given the filename defaults to '.syntastic_oclint_config':\n\"\n\"   let g:syntastic_oclint_config_file = '.config'\n\nif exists(\"g:loaded_syntastic_objcpp_oclint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_objcpp_oclint_checker = 1\n\nruntime! syntax_checkers/c/*.vim\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'objcpp',\n    \\ 'name': 'oclint',\n    \\ 'redirect': 'c/oclint'})\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/ocaml/camlp4o.vim",
    "content": "\"============================================================================\n\"File:        ocaml.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Török Edwin <edwintorok at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" The more reliable way to check for a single .ml file is to use ocamlc.\n\" You can do that setting this in your .vimrc:\n\"\n\"   let g:syntastic_ocaml_use_ocamlc = 1\n\" It's possible to use ocamlc in conjuction with Jane Street's Core. In order\n\" to do that, you have to specify this in your .vimrc:\n\"\n\"   let g:syntastic_ocaml_use_janestreet_core = 1\n\"   let g:syntastic_ocaml_janestreet_core_dir = <path>\n\"\n\" Where path is the path to your core installation (usually a collection of\n\" .cmx and .cmxa files).\n\"\n\"\n\" By default the camlp4o preprocessor is used to check the syntax of .ml, and .mli files,\n\" ocamllex is used to check .mll files and menhir is used to check .mly files.\n\" The output is all redirected to /dev/null, nothing is written to the disk.\n\"\n\" If your source code needs camlp4r then you can define this in your .vimrc:\n\"\n\"   let g:syntastic_ocaml_camlp4r = 1\n\"\n\" If you used some syntax extensions, or you want to also typecheck the source\n\" code, then you can define this:\n\"\n\"   let g:syntastic_ocaml_use_ocamlbuild = 1\n\"\n\" This will run ocamlbuild <name>.inferred.mli, so it will write to your _build\n\" directory (and possibly rebuild your myocamlbuild.ml plugin), only enable this\n\" if you are ok with that.\n\"\n\" If you are using syntax extensions / external libraries and have a properly\n\" set up _tags (and myocamlbuild.ml file) then it should just work\n\" to enable this flag and get syntax / type checks through syntastic.\n\"\n\" For best results your current directory should be the project root\n\" (same situation if you want useful output from :make).\n\nif exists(\"g:loaded_syntastic_ocaml_camlp4o_checker\")\n    finish\nendif\nlet g:loaded_syntastic_ocaml_camlp4o_checker = 1\n\nif exists('g:syntastic_ocaml_camlp4r') && g:syntastic_ocaml_camlp4r != 0\n    let s:ocamlpp=\"camlp4r\"\nelse\n    let s:ocamlpp=\"camlp4o\"\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_ocaml_camlp4o_IsAvailable() dict\n    return executable(s:ocamlpp)\nendfunction\n\nif !exists('g:syntastic_ocaml_use_ocamlc') || !executable('ocamlc')\n    let g:syntastic_ocaml_use_ocamlc = 0\nendif\n\nif !exists('g:syntastic_ocaml_use_janestreet_core')\n    let g:syntastic_ocaml_use_ocamlc = 0\nendif\n\nif !exists('g:syntastic_ocaml_use_ocamlbuild') || !executable(\"ocamlbuild\")\n    let g:syntastic_ocaml_use_ocamlbuild = 0\nendif\n\nfunction! SyntaxCheckers_ocaml_camlp4o_GetLocList() dict\n    let makeprg = s:GetMakeprg()\n    if makeprg == \"\"\n        return []\n    endif\n\n    let errorformat =\n        \\ '%AFile \"%f\"\\, line %l\\, characters %c-%*\\d:,'.\n        \\ '%AFile \"%f\"\\, line %l\\, characters %c-%*\\d (end at line %*\\d\\, character %*\\d):,'.\n        \\ '%AFile \"%f\"\\, line %l\\, character %c:,'.\n        \\ '%AFile \"%f\"\\, line %l\\, character %c:%m,'.\n        \\ '%-GPreprocessing error %.%#,'.\n        \\ '%-GCommand exited %.%#,'.\n        \\ '%C%tarning %n: %m,'.\n        \\ '%C%m,'.\n        \\ '%-G+%.%#'\n\n    return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })\nendfunction\n\nfunction! s:GetMakeprg()\n    if g:syntastic_ocaml_use_ocamlc\n        return s:GetOcamlcMakeprg()\n    endif\n\n    if g:syntastic_ocaml_use_ocamlbuild && isdirectory('_build')\n        return s:GetOcamlBuildMakeprg()\n    endif\n\n    return s:GetOtherMakeprg()\nendfunction\n\nfunction! s:GetOcamlcMakeprg()\n    if g:syntastic_ocaml_use_janestreet_core\n        let build_cmd = \"ocamlc -I \"\n        let build_cmd .= expand(g:syntastic_ocaml_janestreet_core_dir)\n        let build_cmd .= \" -c \" . syntastic#util#shexpand('%')\n        return build_cmd\n    else\n        return \"ocamlc -c \" . syntastic#util#shexpand('%')\n    endif\nendfunction\n\nfunction! s:GetOcamlBuildMakeprg()\n    return \"ocamlbuild -quiet -no-log -tag annot,\" . s:ocamlpp . \" -no-links -no-hygiene -no-sanitize \" .\n                \\ syntastic#util#shexpand('%:r') . \".cmi\"\nendfunction\n\nfunction! s:GetOtherMakeprg()\n    \"TODO: give this function a better name?\n    \"\n    \"TODO: should use throw/catch instead of returning an empty makeprg\n\n    let extension = expand('%:e')\n    let makeprg = \"\"\n\n    if stridx(extension, 'mly') >= 0 && executable(\"menhir\")\n        \" ocamlyacc output can't be redirected, so use menhir\n        let makeprg = \"menhir --only-preprocess \" . syntastic#util#shexpand('%') . \" >\" . syntastic#util#DevNull()\n    elseif stridx(extension,'mll') >= 0 && executable(\"ocamllex\")\n        let makeprg = \"ocamllex -q \" . syntastic#c#NullOutput() . \" \" . syntastic#util#shexpand('%')\n    else\n        let makeprg = \"camlp4o \" . syntastic#c#NullOutput() . \" \" . syntastic#util#shexpand('%')\n    endif\n\n    return makeprg\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'ocaml',\n    \\ 'name': 'camlp4o'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/perl/perl.vim",
    "content": "\"============================================================================\n\"File:        perl.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Anthony Carapetis <anthony.carapetis at gmail dot com>,\n\"             Eric Harmon <http://eharmon.net>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" Checker options:\n\"\n\" - g:syntastic_perl_interpreter (string; default: 'perl')\n\"   The perl interpreter to use.\n\"\n\" - g:syntastic_perl_lib_path (list; default: [])\n\"   List of include directories to be added to the perl command line. Example:\n\"\n\"       let g:syntastic_perl_lib_path = [ './lib', './lib/auto' ]\n\nif exists('g:loaded_syntastic_perl_perl_checker')\n    finish\nendif\nlet g:loaded_syntastic_perl_perl_checker=1\n\nif !exists('g:syntastic_perl_interpreter')\n    let g:syntastic_perl_interpreter = 'perl'\nendif\n\nif !exists('g:syntastic_perl_lib_path')\n    let g:syntastic_perl_lib_path = []\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_perl_perl_IsAvailable() dict\n    \" don't call executable() here, to allow things like\n    \" let g:syntastic_perl_interpreter='/usr/bin/env perl'\n    silent! call system(syntastic#util#shexpand(g:syntastic_perl_interpreter) . ' -e ' . syntastic#util#shescape('exit(0)'))\n    return v:shell_error == 0\nendfunction\n\nfunction! SyntaxCheckers_perl_perl_GetLocList() dict\n    let exe = expand(g:syntastic_perl_interpreter)\n    if type(g:syntastic_perl_lib_path) == type('')\n        call syntastic#log#deprecationWarn('variable g:syntastic_perl_lib_path should be a list')\n        let includes = split(g:syntastic_perl_lib_path, ',')\n    else\n        let includes = copy(syntastic#util#var('perl_lib_path'))\n    endif\n    let shebang = syntastic#util#parseShebang()\n    let extra = join(map(includes, '\"-I\" . v:val')) .\n        \\ (index(shebang['args'], '-T') >= 0 ? ' -T' : '') .\n        \\ (index(shebang['args'], '-t') >= 0 ? ' -t' : '')\n    let errorformat = '%f:%l:%m'\n\n    let makeprg = self.makeprgBuild({\n        \\ 'exe': exe,\n        \\ 'args_before': '-c -X ' . extra })\n\n    let errors = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'preprocess': 'perl',\n        \\ 'defaults': {'type': 'E'} })\n    if !empty(errors)\n        return errors\n    endif\n\n    let makeprg = self.makeprgBuild({\n        \\ 'exe': exe,\n        \\ 'args_before': '-c -Mwarnings ' . extra })\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'preprocess': 'perl',\n        \\ 'defaults': {'type': 'W'} })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'perl',\n    \\ 'name': 'perl'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/perl/perlcritic.vim",
    "content": "\"============================================================================\n\"File:        perlcritic.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" For details about perlcritic see:\n\"\n\" - http://perlcritic.tigris.org/\n\" - https://metacpan.org/module/Perl::Critic\n\"\n\" Checker options:\n\"\n\" - g:syntastic_perl_perlcritic_thres (integer; default: 5)\n\"   error threshold: policy violations with a severity above this\n\"   value are highlighted as errors, the others are warnings\n\"\n\" - g:syntastic_perl_perlcritic_args (string; default: empty)\n\"   command line options to pass to perlcritic\n\nif exists(\"g:loaded_syntastic_perl_perlcritic_checker\")\n    finish\nendif\nlet g:loaded_syntastic_perl_perlcritic_checker = 1\n\nif !exists('g:syntastic_perl_perlcritic_thres')\n    let g:syntastic_perl_perlcritic_thres = 5\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_perl_perlcritic_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args_after': '--quiet --nocolor --verbose \"\\%s:\\%f:\\%l:\\%c:(\\%s) \\%m (\\%e)\\n\"' })\n\n    let errorformat = '%t:%f:%l:%c:%m'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'returns': [0, 2],\n        \\ 'subtype': 'Style' })\n\n    \" change error types according to the prescribed threshold\n    for e in loclist\n        let e['type'] = e['type'] < g:syntastic_perl_perlcritic_thres ? 'W' : 'E'\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'perl',\n    \\ 'name': 'perlcritic'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/perl/podchecker.vim",
    "content": "\"============================================================================\n\"File:        podchecker.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_perl_podchecker_checker\")\n    finish\nendif\nlet g:loaded_syntastic_perl_podchecker_checker = 1\n\nruntime! syntax_checkers/pod/*.vim\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'perl',\n    \\ 'name': 'podchecker',\n    \\ 'redirect': 'pod/podchecker'})\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/php/php.vim",
    "content": "\"============================================================================\n\"File:        php.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_php_php_checker\")\n    finish\nendif\nlet g:loaded_syntastic_php_php_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_php_php_GetHighlightRegex(item)\n    let term = matchstr(a:item['text'], \"\\\\munexpected '\\\\zs[^']\\\\+\\\\ze'\")\n    return term != '' ? '\\V' . term : ''\nendfunction\n\nfunction! SyntaxCheckers_php_php_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args': '-d error_reporting=E_ALL',\n        \\ 'args_after': '-l -d display_errors=1 -d log_errors=0 -d xdebug.cli_color=0' })\n\n    let errorformat =\n        \\ '%-GNo syntax errors detected in%.%#,'.\n        \\ 'Parse error: %#syntax %trror\\, %m in %f on line %l,'.\n        \\ 'Parse %trror: %m in %f on line %l,'.\n        \\ 'Fatal %trror: %m in %f on line %l,'.\n        \\ '%-G\\s%#,'.\n        \\ '%-GErrors parsing %.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'php',\n    \\ 'name': 'php'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/php/phpcs.vim",
    "content": "\"============================================================================\n\"File:        phpcs.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" See here for details of phpcs\n\"    - phpcs (see http://pear.php.net/package/PHP_CodeSniffer)\n\nif exists(\"g:loaded_syntastic_php_phpcs_checker\")\n    finish\nendif\nlet g:loaded_syntastic_php_phpcs_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_php_phpcs_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args': '--tab-width=' . &tabstop,\n        \\ 'args_after': '--report=csv' })\n\n    let errorformat =\n        \\ '%-GFile\\,Line\\,Column\\,Type\\,Message\\,Source\\,Severity,'.\n        \\ '\"%f\"\\,%l\\,%v\\,%t%*[a-zA-Z]\\,\"%m\"\\,%*[a-zA-Z0-9_.-]\\,%*[0-9]'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'subtype': 'Style' })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'php',\n    \\ 'name': 'phpcs' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/php/phpmd.vim",
    "content": "\"============================================================================\n\"File:        phpmd.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" See here for details of phpmd\n\"   - phpmd (see http://phpmd.org)\n\nif exists(\"g:loaded_syntastic_php_phpmd_checker\")\n    finish\nendif\nlet g:loaded_syntastic_php_phpmd_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_php_phpmd_GetHighlightRegex(item)\n    let term = matchstr(a:item['text'], '\\m\\C^The \\S\\+ \\w\\+\\(()\\)\\= \\(has\\|is not\\|utilizes\\)')\n    if term != ''\n        return '\\V'.substitute(term, '\\m\\C^The \\S\\+ \\(\\w\\+\\)\\(()\\)\\= .*', '\\1', '')\n    endif\n    let term = matchstr(a:item['text'], '\\m\\C^Avoid \\(variables with short\\|excessively long variable\\) names like \\S\\+\\.')\n    if term != ''\n        return '\\V'.substitute(term, '\\m\\C^Avoid \\(variables with short\\|excessively long variable\\) names like \\(\\S\\+\\)\\..*', '\\2', '')\n    endif\n    let term = matchstr(a:item['text'], '\\m\\C^Avoid using short method names like \\S\\+::\\S\\+()\\.')\n    if term != ''\n        return '\\V'.substitute(term, '\\m\\C^Avoid using short method names like \\S\\+::\\(\\S\\+\\)()\\..*', '\\1', '')\n    endif\n    let term = matchstr(a:item['text'], '\\m\\C^\\S\\+ accesses the super-global variable ')\n    if term != ''\n        return '\\V'.substitute(term, '\\m\\C accesses the super-global variable .*$', '', '')\n    endif\n    let term = matchstr(a:item['text'], '\\m\\C^Constant \\S\\+ should be defined in uppercase')\n    if term != ''\n        return '\\V'.substitute(term, '\\m\\C^Constant \\(\\S\\+\\) should be defined in uppercase', '\\1', '')\n    endif\n    let term = matchstr(a:item['text'], \"\\\\m\\\\C^The '\\\\S\\\\+()' method which returns \")\n    if term != ''\n        return '\\V'.substitute(term, \"\\\\m\\\\C^The '\\\\(\\\\S\\\\+\\\\()' method which returns.*\", '\\1', '')\n    endif\n    let term = matchstr(a:item['text'], '\\m\\C variable \\S\\+ should begin with ')\n    if term != ''\n        return '\\V'.substitute(term, '\\m\\C.* variable \\(\\S\\+\\) should begin with .*', '\\1', '')\n    endif\n    let term = matchstr(a:item['text'], \"\\\\m\\\\C^Avoid unused \\\\(private fields\\\\|local variables\\\\|private methods\\\\|parameters\\\\) such as '\\\\S\\\\+'\")\n    if term != ''\n        return '\\V'.substitute(term, \"\\\\m\\\\C^Avoid unused \\\\(private fields\\\\|local variables\\\\|private methods\\\\|parameters\\\\) such as '\\\\(\\\\S\\\\+\\\\)'.*\", '\\2', '')\n    endif\n    return ''\nendfunction\n\nfunction! SyntaxCheckers_php_phpmd_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'post_args_before': 'text',\n        \\ 'post_args': 'codesize,design,unusedcode,naming' })\n\n    let errorformat = '%E%f:%l%\\s%#%m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'subtype' : 'Style' })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'php',\n    \\ 'name': 'phpmd'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/po/msgfmt.vim",
    "content": "\"============================================================================\n\"File:        msgfmt.vim\n\"Description: Syntax checking plugin for po files of gettext\n\"Maintainer:  Ryo Okubo <syucream1031@gmail.com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_po_msgfmt_checker\")\n    finish\nendif\nlet g:loaded_syntastic_po_msgfmt_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_po_msgfmt_GetHighlightRegex(item)\n    let term = matchstr(a:item['text'], '\\mkeyword \"\\zs[^\"]\\+\\ze\" unknown')\n    return term != '' ? '\\V' . term : ''\nendfunction\n\nfunction! SyntaxCheckers_po_msgfmt_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '-c ' . syntastic#c#NullOutput() })\n\n    let errorformat =\n        \\ '%W%f:%l: warning: %m,' .\n        \\ '%E%f:%l:%v: %m,' .\n        \\ '%E%f:%l: %m,' .\n        \\ '%+C %.%#,' .\n        \\ '%Z%p^,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'postprocess': ['compressWhitespace'] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'po',\n    \\ 'name': 'msgfmt'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/pod/podchecker.vim",
    "content": "\"============================================================================\n\"File:        podchecker.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_pod_podchecker_checker\")\n    finish\nendif\nlet g:loaded_syntastic_pod_podchecker_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_pod_podchecker_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n\n    let errorformat =\n        \\ '%W%[%#]%[%#]%[%#] WARNING: %m at line %l in file %f,' .\n        \\ '%W%[%#]%[%#]%[%#] WARNING: %m at line EOF in file %f,' .\n        \\ '%E%[%#]%[%#]%[%#] ERROR: %m at line %l in file %f,' .\n        \\ '%E%[%#]%[%#]%[%#] ERROR: %m at line EOF in file %f'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'returns': [0, 1, 2] })\n\n    for e in loclist\n        if e['valid'] && e['lnum'] == 0\n            let e['lnum'] = str2nr(matchstr(e['text'], '\\m\\<line \\zs\\d\\+\\ze'))\n        endif\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'pod',\n    \\ 'name': 'podchecker'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/puppet/puppet.vim",
    "content": "\"============================================================================\n\"File:        puppet.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Eivind Uggedal <eivind at uggedal dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_puppet_puppet_checker\")\n    finish\nendif\nlet g:loaded_syntastic_puppet_puppet_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_puppet_puppet_GetLocList() dict\n    let ver = syntastic#util#getVersion(self.getExecEscaped() . ' --version 2>' . syntastic#util#DevNull())\n\n    if syntastic#util#versionIsAtLeast(ver, [2,7,0])\n        let args = 'parser validate --color=false'\n    else\n        let args = '--color=false --parseonly'\n    endif\n\n    let makeprg = self.makeprgBuild({ 'args_before': args })\n\n    let errorformat =\n        \\ '%-Gerr: Try ''puppet help parser validate'' for usage,' .\n        \\ '%-GError: Try ''puppet help parser validate'' for usage,' .\n        \\ '%Eerr: Could not parse for environment %*[a-z]: %m at %f:%l,' .\n        \\ '%EError: Could not parse for environment %*[a-z]: %m at %f:%l'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'puppet',\n    \\ 'name': 'puppet'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/puppet/puppetlint.vim",
    "content": "\"============================================================================\n\"File:        puppetlint.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Eivind Uggedal <eivind at uggedal dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_puppet_puppetlint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_puppet_puppetlint_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nif exists(\"g:syntastic_puppet_lint_arguments\")\n    let g:syntastic_puppet_puppetlint_args = g:syntastic_puppet_lint_arguments\n    call syntastic#log#deprecationWarn(\"variable g:syntastic_puppet_lint_arguments is deprecated, please use g:syntastic_puppet_puppetlint_args instead\")\nendif\n\nfunction! SyntaxCheckers_puppet_puppetlint_IsAvailable() dict\n    return\n        \\ executable(\"puppet\") &&\n        \\ executable(self.getExec()) &&\n        \\ syntastic#util#versionIsAtLeast(syntastic#util#getVersion(\n        \\       self.getExecEscaped() . ' --version 2>' . syntastic#util#DevNull()), [0,1,10])\nendfunction\n\nfunction! SyntaxCheckers_puppet_puppetlint_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args_after': '--log-format \"%{KIND} [%{check}] %{message} at %{fullpath}:%{linenumber}\"' })\n\n    let errorformat = '%t%*[a-zA-Z] %m at %f:%l'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'puppet',\n    \\ 'name': 'puppetlint',\n    \\ 'exec': 'puppet-lint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/python/compile.py",
    "content": "#!/usr/bin/env python\n\nfrom __future__ import print_function\nfrom sys import argv, exit\n\n\nif len(argv) != 2:\n    exit(1)\n\ntry:\n    compile(open(argv[1]).read(), argv[1], 'exec', 0, 1)\nexcept SyntaxError as err:\n    print('%s:%s:%s: %s' % (err.filename, err.lineno, err.offset, err.msg))\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/python/flake8.vim",
    "content": "\"============================================================================\n\"File:        flake8.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Authors:     Sylvain Soliman <Sylvain dot Soliman+git at gmail dot com>\n\"             kstep <me@kstep.me>\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_python_flake8_checker\")\n    finish\nendif\nlet g:loaded_syntastic_python_flake8_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_python_flake8_GetHighlightRegex(item)\n    return SyntaxCheckers_python_pyflakes_GetHighlightRegex(a:item)\nendfunction\n\nfunction! SyntaxCheckers_python_flake8_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n\n    let errorformat =\n        \\ '%E%f:%l: could not compile,%-Z%p^,' .\n        \\ '%A%f:%l:%c: %t%n %m,' .\n        \\ '%A%f:%l: %t%n %m,' .\n        \\ '%-G%.%#'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\n\n    for e in loclist\n        \" E*** and W*** are pep8 errors\n        \" F*** are PyFlakes codes\n        \" C*** are McCabe complexity messages\n        \" N*** are naming conventions from pep8-naming\n\n        if has_key(e, 'nr')\n            let e['text'] .= printf(' [%s%03d]', e['type'], e['nr'])\n            \" E901 are syntax errors\n            \" E902 are I/O errors\n            if e['type'] ==? 'E' && e['nr'] !~ '\\m^9'\n                let e['subtype'] = 'Style'\n            endif\n            call remove(e, 'nr')\n        endif\n\n        if e['type'] =~? '\\m^[CNW]'\n            let e['subtype'] = 'Style'\n        endif\n\n        let e['type'] = e['type'] =~? '\\m^[EFC]' ? 'E' : 'W'\n    endfor\n\n    return loclist\nendfunction\n\nruntime! syntax_checkers/python/pyflakes.vim\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'python',\n    \\ 'name': 'flake8'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/python/frosted.vim",
    "content": "\"============================================================================\n\"File:        frosted.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists('g:loaded_syntastic_python_frosted_checker')\n    finish\nendif\nlet g:loaded_syntastic_python_frosted_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_python_frosted_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '-vb' })\n\n    let errorformat =\n        \\ '%f:%l:%c:%m,' .\n        \\ '%E%f:%l: %m,' .\n        \\ '%-Z%p^,' .\n        \\ '%-G%.%#'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'returns': [0, 1] })\n\n    for e in loclist\n        let e[\"col\"] += 1\n\n        let parts = matchlist(e.text, '\\v^([EW]\\d+):([^:]*):(.+)')\n        if len(parts) >= 4\n            let e[\"type\"] = parts[1][0]\n            let e[\"text\"] = parts[3] . ' [' . parts[1] . ']'\n            let e[\"hl\"] = '\\V' . parts[2]\n        elseif e[\"text\"] =~? '\\v^I\\d+:'\n            let e[\"valid\"] = 0\n        else\n            let e[\"vcol\"] = 0\n        endif\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'python',\n    \\ 'name': 'frosted' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/python/pep257.vim",
    "content": "\"============================================================================\n\"File:        pep257.vim\n\"Description: Docstring style checking plugin for syntastic.vim\n\"============================================================================\n\"\n\" For details about pep257 see: https://github.com/GreenSteam/pep257\n\nif exists(\"g:loaded_syntastic_python_pep257_checker\")\n    finish\nendif\nlet g:loaded_syntastic_python_pep257_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_python_pep257_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n\n    let errorformat =\n        \\ '%E%f:%l:%c%\\%.%\\%.%\\d%\\+:%\\d%\\+: %m,' .\n        \\ '%E%f:%l:%c: %m,' .\n        \\ '%+C    %m'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'subtype': 'Style',\n        \\ 'preprocess': 'killEmpty',\n        \\ 'postprocess': ['compressWhitespace'] })\n\n    \" pep257 outputs byte offsets rather than column numbers\n    for e in loclist\n        let e['col'] = get(e, 'col', 0) + 1\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'python',\n    \\ 'name': 'pep257'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/python/pep8.vim",
    "content": "\"============================================================================\n\"File:        pep8.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" For details about pep8 see: https://github.com/jcrocholl/pep8\n\nif exists(\"g:loaded_syntastic_python_pep8_checker\")\n    finish\nendif\nlet g:loaded_syntastic_python_pep8_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_python_pep8_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n\n    let errorformat = '%f:%l:%c: %m'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'subtype': 'Style' })\n\n    for e in loclist\n        let e['type'] = e['text'] =~? '^W' ? 'W' : 'E'\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'python',\n    \\ 'name': 'pep8'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/python/py3kwarn.vim",
    "content": "\"============================================================================\n\"File:        py3kwarn.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Authors:     Liam Curry <liam@curry.name>\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_python_py3kwarn_checker\")\n    finish\nendif\nlet g:loaded_syntastic_python_py3kwarn_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_python_py3kwarn_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n\n    let errorformat = '%W%f:%l:%c: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'python',\n    \\ 'name': 'py3kwarn'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/python/pyflakes.vim",
    "content": "\"============================================================================\n\"File:        pyflakes.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Authors:     Martin Grenfell <martin.grenfell@gmail.com>\n\"             kstep <me@kstep.me>\n\"             Parantapa Bhattacharya <parantapa@gmail.com>\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_python_pyflakes_checker\")\n    finish\nendif\nlet g:loaded_syntastic_python_pyflakes_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_python_pyflakes_GetHighlightRegex(i)\n    if stridx(a:i['text'], 'is assigned to but never used') >= 0\n        \\ || stridx(a:i['text'], 'imported but unused') >= 0\n        \\ || stridx(a:i['text'], 'undefined name') >= 0\n        \\ || stridx(a:i['text'], 'redefinition of') >= 0\n        \\ || stridx(a:i['text'], 'referenced before assignment') >= 0\n        \\ || stridx(a:i['text'], 'duplicate argument') >= 0\n        \\ || stridx(a:i['text'], 'after other statements') >= 0\n        \\ || stridx(a:i['text'], 'shadowed by loop variable') >= 0\n\n        \" fun with Python's %r: try \"...\" first, then '...'\n        let terms =  split(a:i['text'], '\"', 1)\n        if len(terms) > 2\n            return terms[1]\n        endif\n\n        let terms =  split(a:i['text'], \"'\", 1)\n        if len(terms) > 2\n            return terms[1]\n        endif\n    endif\n    return ''\nendfunction\n\nfunction! SyntaxCheckers_python_pyflakes_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n\n    let errorformat =\n        \\ '%E%f:%l: could not compile,'.\n        \\ '%-Z%p^,'.\n        \\ '%E%f:%l:%c: %m,'.\n        \\ '%E%f:%l: %m,'.\n        \\ '%-G%.%#'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'text': \"Syntax error\"} })\n\n    for e in loclist\n        let e['vcol'] = 0\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'python',\n    \\ 'name': 'pyflakes'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/python/pylama.vim",
    "content": "\"============================================================================\n\"File:        pylama.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists('g:loaded_syntastic_python_pylama_checker')\n    finish\nendif\nlet g:loaded_syntastic_python_pylama_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_python_pylama_GetHighlightRegex(item)\n    return SyntaxCheckers_python_pyflakes_GetHighlightRegex(a:item)\nendfunction\n\nfunction! SyntaxCheckers_python_pylama_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '-f pep8' })\n\n    \" TODO: \"WARNING:pylama:...\" messages are probably a logging bug\n    let errorformat =\n        \\ '%-GWARNING:pylama:%.%#,' .\n        \\ '%A%f:%l:%c: %m'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'postprocess': ['sort'] })\n\n    \" adjust for weirdness in each checker\n    for e in loclist\n        let e['type'] = e['text'] =~? '\\m^[RCW]' ? 'W' : 'E'\n        if e['text'] =~# '\\v\\[%(mccabe|pep257|pylint)\\]$'\n            if has_key(e, 'col')\n                let e['col'] += 1\n            endif\n        endif\n        if e['text'] =~# '\\v\\[pylint\\]$'\n            if has_key(e, 'vcol')\n                let e['vcol'] = 0\n            endif\n        endif\n        if e['text'] =~# '\\v\\[%(mccabe|pep257|pep8)\\]$'\n            let e['subtype'] = 'Style'\n        endif\n    endfor\n\n    return loclist\nendfunction\n\nruntime! syntax_checkers/python/pyflakes.vim\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'python',\n    \\ 'name': 'pylama' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/python/pylint.vim",
    "content": "\"============================================================================\n\"File:        pylint.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Author:      Parantapa Bhattacharya <parantapa at gmail dot com>\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_python_pylint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_python_pylint_checker = 1\n\nlet s:pylint_new = -1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_python_pylint_IsAvailable() dict\n    let exe = self.getExec()\n    let s:pylint_new = executable(exe) ? s:PylintNew(exe) : -1\n    return s:pylint_new >= 0\nendfunction\n\nfunction! SyntaxCheckers_python_pylint_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args_after': (s:pylint_new ? '-f text --msg-template=\"{path}:{line}:{column}:{C}: [{symbol}] {msg}\" -r n' : '-f parseable -r n -i y') })\n\n    let errorformat =\n        \\ '%A%f:%l:%c:%t: %m,' .\n        \\ '%A%f:%l: %m,' .\n        \\ '%A%f:(%l): %m,' .\n        \\ '%-Z%p^%.%#,' .\n        \\ '%-G%.%#'\n\n    let loclist=SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'postprocess': ['sort'],\n        \\ 'returns': range(32) })\n\n    for e in loclist\n        if !s:pylint_new\n            let e['type'] = e['text'][1]\n        endif\n\n        if e['type'] =~? '\\m^[EF]'\n            let e['type'] = 'E'\n        elseif e['type'] =~? '\\m^[CRW]'\n            let e['type'] = 'W'\n        else\n            let e['valid'] = 0\n        endif\n\n        let e['col'] += 1\n        let e['vcol'] = 0\n    endfor\n\n    return loclist\nendfunction\n\nfunction! s:PylintNew(exe)\n    let exe = syntastic#util#shescape(a:exe)\n    try\n        \" On Windows the version is shown as \"pylint-script.py 1.0.0\".\n        \" On Gentoo Linux it's \"pylint-python2.7 0.28.0\".\n        \" On NixOS, that would be \".pylint-wrapped 0.26.0\", that would be.\n        \" Have you guys considered switching to creative writing yet? ;)\n        let pylint_version = filter(split(system(exe . ' --version'), '\\m, \\=\\|\\n'), 'v:val =~# ''\\m^\\.\\=pylint\\>''')[0]\n        let pylint_version = substitute(pylint_version, '\\v^\\S+\\s+', '', '')\n        let ret = syntastic#util#versionIsAtLeast(syntastic#util#parseVersion(pylint_version), [1])\n    catch /\\m^Vim\\%((\\a\\+)\\)\\=:E684/\n        call syntastic#log#error(\"checker python/pylint: can't parse version string (abnormal termination?)\")\n        let ret = -1\n    endtry\n    return ret\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'python',\n    \\ 'name': 'pylint' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/python/python.vim",
    "content": "\"============================================================================\n\"File:        python.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_python_python_checker\")\n    finish\nendif\nlet g:loaded_syntastic_python_python_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nlet s:compiler = expand('<sfile>:p:h') . syntastic#util#Slash() . 'compile.py'\n\nfunction! SyntaxCheckers_python_python_IsAvailable() dict\n    return executable(self.getExec()) &&\n        \\ syntastic#util#versionIsAtLeast(syntastic#util#getVersion(self.getExecEscaped() . ' --version'), [2, 6])\nendfunction\n\nfunction! SyntaxCheckers_python_python_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'exe': [self.getExec(), s:compiler] })\n\n    let errorformat = '%E%f:%l:%c: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'returns': [0] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'python',\n    \\ 'name': 'python'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/racket/code-ayatollah.vim",
    "content": "\"============================================================================\n\"File:        code-ayatollah.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_racket_code_ayatollah_checker\")\n    finish\nendif\nlet g:loaded_syntastic_racket_code_ayatollah_checker = 1\n\nif !exists('g:syntastic_racket_code_ayatollah_script')\n    let g:syntastic_racket_code_ayatollah_script = 'code-ayatollah.rkt'\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_racket_code_ayatollah_IsAvailable() dict\n    let s:script = expand(g:syntastic_racket_code_ayatollah_script)\n    return executable(self.getExec()) && filereadable(s:script)\nendfunction\n\nfunction! SyntaxCheckers_racket_code_ayatollah_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'exe': [self.getExec(), s:script] })\n\n    let errorformat =\n        \\ '  %l:%v: %m,' .\n        \\ '%PErrors in %f:,' .\n        \\ '%-G%.%#'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'subtype': 'Style',\n        \\ 'postprocess': ['sort'] })\n\n    for e in loclist\n        let e['col'] += 1\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'racket',\n    \\ 'name': 'code_ayatollah',\n    \\ 'exec': 'racket' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/racket/racket.vim",
    "content": "\"============================================================================\n\"File:        racket.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Author:      Steve Bragg <steve at empresseffects dot com>\n\"\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_racket_racket_checker\")\n    finish\nendif\nlet g:loaded_syntastic_racket_racket_checker=1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_racket_racket_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n\n    \" example of error message\n    \"eval-apply.rkt:460:30: the-empty-environment: unbound identifier in module\n    \"  in: the-empty-environment\n    let errorformat = '%f:%l:%v: %m'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\n\n    for e in loclist\n        if has_key(e, 'col')\n            let e['col'] += 1\n        endif\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'racket',\n    \\ 'name': 'racket'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/rst/rst2pseudoxml.vim",
    "content": "\"============================================================================\n\"File:        rst.vim\n\"Description: Syntax checking plugin for docutil's reStructuredText files\n\"Maintainer:  James Rowe <jnrowe at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\n\" We use rst2pseudoxml.py, as it is ever so marginally faster than the other\n\" rst2${x} tools in docutils.\n\nif exists(\"g:loaded_syntastic_rst_rst2pseudoxml_checker\")\n    finish\nendif\nlet g:loaded_syntastic_rst_rst2pseudoxml_checker = 1\n\nlet s:rst2pseudoxml = executable('rst2pseudoxml.py') ? 'rst2pseudoxml.py' : 'rst2pseudoxml'\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_rst_rst2pseudoxml_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args_after': '--report=2 --exit-status=1',\n        \\ 'tail': syntastic#util#DevNull() })\n\n    let errorformat =\n        \\ '%f:%l: (%tNFO/1) %m,'.\n        \\ '%f:%l: (%tARNING/2) %m,'.\n        \\ '%f:%l: (%tRROR/3) %m,'.\n        \\ '%f:%l: (%tEVERE/4) %m,'.\n        \\ '%-G%.%#'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\n\n    for e in loclist\n        if e['type'] ==? 'S'\n            let e['type'] = 'E'\n        elseif e['type'] ==? 'I'\n            let e['type'] = 'W'\n            let e['subtype'] = 'Style'\n        endif\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'rst',\n    \\ 'name': 'rst2pseudoxml',\n    \\ 'exec': s:rst2pseudoxml })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/rst/rstcheck.vim",
    "content": "\"============================================================================\n\"File:        rstcheck.vim\n\"Description: Syntax checking for reStructuredText and embedded code blocks\n\"Authors:     Steven Myint <git@stevenmyint.com>\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_rst_rstcheck_checker\")\n    finish\nendif\nlet g:loaded_syntastic_rst_rstcheck_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_rst_rstcheck_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n\n    let errorformat =\n        \\ '%f:%l: (%tNFO/1) %m,'.\n        \\ '%f:%l: (%tARNING/2) %m,'.\n        \\ '%f:%l: (%tRROR/3) %m,'.\n        \\ '%f:%l: (%tEVERE/4) %m,'.\n        \\ '%-G%.%#'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'returns': [0, 1] })\n\n    for e in loclist\n        if e['type'] ==? 'S'\n            let e['type'] = 'E'\n        elseif e['type'] ==? 'I'\n            let e['type'] = 'W'\n            let e['subtype'] = 'Style'\n        endif\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'rst',\n    \\ 'name': 'rstcheck'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/ruby/jruby.vim",
    "content": "\"============================================================================\n\"File:        jruby.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Leonid Shevtsov <leonid at shevtsov dot me>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_ruby_jruby_checker\")\n    finish\nendif\nlet g:loaded_syntastic_ruby_jruby_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_ruby_jruby_GetLocList() dict\n    if syntastic#util#isRunningWindows()\n        let exe = self.getExecEscaped()\n        let args = '-T1'\n    else\n        let exe = 'RUBYOPT= ' . self.getExecEscaped()\n        let args = ''\n    endif\n\n    let makeprg = self.makeprgBuild({\n        \\ 'exe': exe,\n        \\ 'args': args,\n        \\ 'args_after': '-W1 -c' })\n\n    let errorformat =\n        \\ '%-GSyntax OK for %f,'.\n        \\ '%ESyntaxError in %f:%l: syntax error\\, %m,'.\n        \\ '%Z%p^,'.\n        \\ '%W%f:%l: warning: %m,'.\n        \\ '%Z%p^,'.\n        \\ '%W%f:%l: %m,'.\n        \\ '%-C%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'ruby',\n    \\ 'name': 'jruby'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/ruby/macruby.vim",
    "content": "\"============================================================================\n\"File:        macruby.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_ruby_macruby_checker\")\n    finish\nendif\nlet g:loaded_syntastic_ruby_macruby_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_ruby_macruby_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'exe': 'RUBYOPT= ' . self.getExecEscaped(),\n        \\ 'args_after': '-W1 -c' })\n\n    let errorformat =\n        \\ '%-GSyntax OK,'.\n        \\ '%E%f:%l: syntax error\\, %m,'.\n        \\ '%Z%p^,'.\n        \\ '%W%f:%l: warning: %m,'.\n        \\ '%Z%p^,'.\n        \\ '%W%f:%l: %m,'.\n        \\ '%-C%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'ruby',\n    \\ 'name': 'macruby'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/ruby/mri.vim",
    "content": "\"============================================================================\n\"File:        mri.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_ruby_mri_checker\")\n    finish\nendif\nlet g:loaded_syntastic_ruby_mri_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_ruby_mri_GetHighlightRegex(i)\n    if stridx(a:i['text'], 'assigned but unused variable') >= 0\n        let term = split(a:i['text'], ' - ')[1]\n        return '\\V\\<'.term.'\\>'\n    endif\n\n    return ''\nendfunction\n\nfunction! SyntaxCheckers_ruby_mri_GetLocList() dict\n    if !exists('g:syntastic_ruby_exec')\n        let g:syntastic_ruby_exec = self.getExec()\n    endif\n\n    let exe = syntastic#util#shexpand(g:syntastic_ruby_exec)\n    if !syntastic#util#isRunningWindows()\n        let exe = 'RUBYOPT= ' . exe\n    endif\n\n    let makeprg = self.makeprgBuild({\n        \\ 'exe': exe,\n        \\ 'args_after': '-w -T1 -c' })\n\n    \"this is a hack to filter out a repeated useless warning in rspec files\n    \"containing lines like\n    \"\n    \"  foo.should == 'bar'\n    \"\n    \"Which always generate the warning below. Note that ruby >= 1.9.3 includes\n    \"the word \"possibly\" in the warning\n    let errorformat = '%-G%.%#warning: %\\(possibly %\\)%\\?useless use of == in void context,'\n\n    \" filter out lines starting with ...\n    \" long lines are truncated and wrapped in ... %p then returns the wrong\n    \" column offset\n    let errorformat .= '%-G%\\%.%\\%.%\\%.%.%#,'\n\n    let errorformat .=\n        \\ '%-GSyntax OK,'.\n        \\ '%E%f:%l: syntax error\\, %m,'.\n        \\ '%Z%p^,'.\n        \\ '%W%f:%l: warning: %m,'.\n        \\ '%Z%p^,'.\n        \\ '%W%f:%l: %m,'.\n        \\ '%-C%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'ruby',\n    \\ 'name': 'mri',\n    \\ 'exec': 'ruby'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/ruby/rubocop.vim",
    "content": "\"============================================================================\n\"File:        rubocop.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Recai Oktaş <roktas@bil.omu.edu.tr>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" In order to use rubocop with the default ruby checker (mri):\n\"     let g:syntastic_ruby_checkers = ['mri', 'rubocop']\n\nif exists(\"g:loaded_syntastic_ruby_rubocop_checker\")\n    finish\nendif\nlet g:loaded_syntastic_ruby_rubocop_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_ruby_rubocop_IsAvailable() dict\n    return\n        \\ executable(self.getExec()) &&\n        \\ syntastic#util#versionIsAtLeast(syntastic#util#getVersion(self.getExecEscaped() . ' --version'), [0, 9, 0])\nendfunction\n\nfunction! SyntaxCheckers_ruby_rubocop_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '--format emacs --silent' })\n\n    let errorformat = '%f:%l:%c: %t: %m'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'subtype': 'Style'})\n\n    \" convert rubocop severities to error types recognized by syntastic\n    for e in loclist\n        if e['type'] ==# 'F'\n            let e['type'] = 'E'\n        elseif e['type'] !=# 'W' && e['type'] !=# 'E'\n            let e['type'] = 'W'\n        endif\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'ruby',\n    \\ 'name': 'rubocop'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/ruby/rubylint.vim",
    "content": "\"============================================================================\n\"File:        rubylint.vim\n\"Description: Checks Ruby source code using ruby-lint\n\"Maintainer:  Yorick Peterse <yorickpeterse@gmail.com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_ruby_rubylint_checker\")\n    finish\nendif\n\nlet g:loaded_syntastic_ruby_rubylint_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_ruby_rubylint_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args': 'analyze --presenter=syntastic' })\n\n    let errorformat = '%f:%t:%l:%c: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'ruby',\n    \\ 'name': 'rubylint',\n    \\ 'exec': 'ruby-lint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/rust/rustc.vim",
    "content": "\"============================================================================\n\"File:        rust.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Chad Jablonski <chad.jablonski at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_rust_rustc_checker\")\n    finish\nendif\nlet g:loaded_syntastic_rust_rustc_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_rust_rustc_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '--no-trans' })\n\n    let errorformat  =\n        \\ '%E%f:%l:%c: %\\d%#:%\\d%# %.%\\{-}error:%.%\\{-} %m,'   .\n        \\ '%W%f:%l:%c: %\\d%#:%\\d%# %.%\\{-}warning:%.%\\{-} %m,' .\n        \\ '%C%f:%l %m,' .\n        \\ '%-Z%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'rust',\n    \\ 'name': 'rustc'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/sass/sass.vim",
    "content": "\"============================================================================\n\"File:        sass.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_sass_sass_checker\")\n    finish\nendif\nlet g:loaded_syntastic_sass_sass_checker = 1\n\n\"sass caching for large files drastically speeds up the checking, but store it\n\"in a temp location otherwise sass puts .sass_cache dirs in the users project\nlet s:sass_cache_location = tempname()\n\n\"By default do not check partials as unknown variables are a syntax error\nif !exists(\"g:syntastic_sass_check_partials\")\n    let g:syntastic_sass_check_partials = 0\nendif\n\n\"use compass imports if available\nlet s:imports = \"\"\nif executable(\"compass\")\n    let s:imports = \"--compass\"\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_sass_sass_GetLocList() dict\n    if !g:syntastic_sass_check_partials && expand('%:t')[0] == '_'\n        return []\n    endif\n\n    let makeprg = self.makeprgBuild({\n        \\ 'args_before': '--cache-location ' . s:sass_cache_location . ' ' . s:imports . ' --check' })\n\n    let errorformat =\n        \\ '%ESyntax %trror: %m,' .\n        \\ '%+C              %.%#,' .\n        \\ '%C        on line %l of %f\\, %.%#,' .\n        \\ '%C        on line %l of %f,' .\n        \\ '%-G %\\+from line %.%#,' .\n        \\ '%-G %\\+Use --trace for backtrace.,' .\n        \\ '%W%>DEPRECATION WARNING on line %l of %f:,' .\n        \\ '%+C%>  %.%#,' .\n        \\ '%W%>WARNING: on line %l of %f:,' .\n        \\ '%+C%>  %.%#,' .\n        \\ '%W%>WARNING on line %l of %f: %m,' .\n        \\ '%+C%>  %.%#,' .\n        \\ '%W%>WARNING on line %l of %f:,' .\n        \\ '%Z%m,' .\n        \\ '%W%>WARNING: %m,' .\n        \\ '%C         on line %l of %f\\, %.%#,' .\n        \\ '%C         on line %l of %f,' .\n        \\ '%-G %\\+from line %.%#,' .\n        \\ 'Syntax %trror on line %l: %m,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'postprocess': ['compressWhitespace'] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'sass',\n    \\ 'name': 'sass'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/scala/fsc.vim",
    "content": "\"============================================================================\n\"File:        fsc.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Gregor Uhlenheuer <kongo2002 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists('g:loaded_syntastic_scala_fsc_checker')\n    finish\nendif\nlet g:loaded_syntastic_scala_fsc_checker = 1\n\nif !exists('g:syntastic_scala_options')\n    let g:syntastic_scala_options = ''\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_scala_fsc_GetLocList() dict\n    \" fsc has some serious problems with the\n    \" working directory changing after being started\n    \" that's why we better pass an absolute path\n    let makeprg = self.makeprgBuild({\n        \\ 'args': g:syntastic_scala_options,\n        \\ 'args_after': '-Ystop-after:parser',\n        \\ 'fname': syntastic#util#shexpand('%:p') })\n\n    let errorformat =\n        \\ '%E%f:%l: %trror: %m,' .\n        \\ '%Z%p^,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'scala',\n    \\ 'name': 'fsc'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/scala/scalac.vim",
    "content": "\"============================================================================\n\"File:        scala.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Rickey Visinski <rickeyvisinski at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_scala_scalac_checker\")\n    finish\nendif\nlet g:loaded_syntastic_scala_scalac_checker = 1\n\nif !exists('g:syntastic_scala_options')\n    let g:syntastic_scala_options = ''\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_scala_scalac_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args': g:syntastic_scala_options,\n        \\ 'args_after': '-Ystop-after:parser' })\n\n    let errorformat =\n        \\ '%E%f:%l: %trror: %m,' .\n        \\ '%Z%p^,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'scala',\n    \\ 'name': 'scalac'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/scss/sass.vim",
    "content": "\n\"============================================================================\n\"File:        scss.vim\n\"Description: scss syntax checking plugin for syntastic\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_scss_sass_checker\")\n    finish\nendif\nlet g:loaded_syntastic_scss_sass_checker = 1\n\nruntime! syntax_checkers/sass/*.vim\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'scss',\n    \\ 'name': 'sass',\n    \\ 'redirect': 'sass/sass'})\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/scss/scss_lint.vim",
    "content": "\"============================================================================\n\"File:        scss_lint.vim\n\"Description: SCSS style and syntax checker plugin for Syntastic\n\"Maintainer:  Shane da Silva <shane@dasilva.io>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_scss_scss_lint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_scss_scss_lint_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_scss_scss_lint_IsAvailable() dict\n    return\n        \\ executable(self.getExec()) &&\n        \\ syntastic#util#versionIsAtLeast(syntastic#util#getVersion(\n        \\       self.getExecEscaped() . ' --version'), [0, 12])\nendfunction\n\nfunction! SyntaxCheckers_scss_scss_lint_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n    let errorformat = '%f:%l [%t] %m'\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'subtype': 'Style',\n        \\ 'returns': [0, 1, 65] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'scss',\n    \\ 'name': 'scss_lint',\n    \\ 'exec': 'scss-lint' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/sh/checkbashisms.vim",
    "content": "\"============================================================================\n\"File:        checkbashisms.vim\n\"Description: Shell script syntax/style checking plugin for syntastic.vim\n\"Notes:       checkbashisms.pl can be downloaded from\n\"             http://debian.inode.at/debian/pool/main/d/devscripts/\n\"             as part of the devscripts package.\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_sh_checkbashisms_checker\")\n    finish\nendif\nlet g:loaded_syntastic_sh_checkbashisms_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_sh_checkbashisms_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args': '-fx' })\n\n    let errorformat =\n        \\ '%-Gscript %f is already a bash script; skipping,' .\n        \\ '%Eerror: %f: %m\\, opened in line %l,' .\n        \\ '%Eerror: %f: %m,' .\n        \\ '%Ecannot open script %f for reading: %m,' .\n        \\ '%Wscript %f %m,%C%.# lines,' .\n        \\ '%Wpossible bashism in %f line %l (%m):,%C%.%#,%Z.%#,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'subtype': 'Style' })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'sh',\n    \\ 'name': 'checkbashisms' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/sh/sh.vim",
    "content": "\"============================================================================\n\"File:        sh.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Gregor Uhlenheuer <kongo2002 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_sh_sh_checker\")\n    finish\nendif\nlet g:loaded_syntastic_sh_sh_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! s:GetShell()\n    if !exists('b:shell') || b:shell == ''\n        let b:shell = ''\n        let shebang = getbufline(bufnr('%'), 1)[0]\n        if shebang != ''\n            if stridx(shebang, 'bash') >= 0\n                let b:shell = 'bash'\n            elseif stridx(shebang, 'zsh') >= 0\n                let b:shell = 'zsh'\n            elseif stridx(shebang, 'sh') >= 0\n                let b:shell = 'sh'\n            endif\n        endif\n        \" try to use env variable in case no shebang could be found\n        if b:shell == ''\n            let b:shell = fnamemodify(expand('$SHELL'), ':t')\n        endif\n    endif\n    return b:shell\nendfunction\n\nfunction! s:ForwardToZshChecker()\n    let registry = g:SyntasticRegistry.Instance()\n    if registry.isCheckable('zsh')\n        return registry.getCheckers('zsh', ['zsh'])[0].getLocListRaw()\n    else\n        return []\n    endif\nendfunction\n\nfunction! s:IsShellValid()\n    return len(s:GetShell()) > 0 && executable(s:GetShell())\nendfunction\n\n\nfunction! SyntaxCheckers_sh_sh_IsAvailable() dict\n    return s:IsShellValid()\nendfunction\n\nfunction! SyntaxCheckers_sh_sh_GetLocList() dict\n    if s:GetShell() ==# 'zsh'\n        return s:ForwardToZshChecker()\n    endif\n\n    if !s:IsShellValid()\n        return []\n    endif\n\n    let makeprg = self.makeprgBuild({\n        \\ 'exe': s:GetShell(),\n        \\ 'args_after': '-n' })\n\n    let errorformat = '%f: line %l: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'sh',\n    \\ 'name': 'sh' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/sh/shellcheck.vim",
    "content": "\"============================================================================\n\"File:        shellcheck.vim\n\"Description: Shell script syntax/style checking plugin for syntastic.vim\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_sh_shellcheck_checker\")\n    finish\nendif\nlet g:loaded_syntastic_sh_shellcheck_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_sh_shellcheck_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '-f gcc' })\n\n    let errorformat =\n        \\ '%f:%l:%c: %trror: %m,' .\n        \\ '%f:%l:%c: %tarning: %m,' .\n        \\ '%f:%l:%c: %tote: %m'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'returns': [0, 1] })\n\n    for e in loclist\n        if e['type'] ==? 'n'\n            let e['type'] = 'w'\n            let e['subtype'] = 'Style'\n        endif\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'sh',\n    \\ 'name': 'shellcheck' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/slim/slimrb.vim",
    "content": "\"============================================================================\n\"File:        slim.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_slim_slimrb_checker\")\n    finish\nendif\nlet g:loaded_syntastic_slim_slimrb_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_slim_slimrb_GetLocList() dict\n    if !exists('s:slimrb_new')\n        let s:slimrb_new = syntastic#util#versionIsAtLeast(syntastic#util#getVersion(\n            \\ self.getExecEscaped() . ' --version 2>'. syntastic#util#DevNull()), [1, 3, 1])\n    endif\n\n    let makeprg = self.makeprgBuild({ 'args_after': '-c' })\n\n    if s:slimrb_new\n        let errorformat =\n            \\ '%C\\ %#%f\\, Line %l\\, Column %c,'.\n            \\ '%-G\\ %.%#,'.\n            \\ '%ESlim::Parser::SyntaxError: %m,'.\n            \\ '%+C%.%#'\n    else\n        let errorformat =\n            \\ '%C\\ %#%f\\, Line %l,'.\n            \\ '%-G\\ %.%#,'.\n            \\ '%ESlim::Parser::SyntaxError: %m,'.\n            \\ '%+C%.%#'\n    endif\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'slim',\n    \\ 'name': 'slimrb'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/tcl/nagelfar.vim",
    "content": "\"============================================================================\n\"File:        nagelfar.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  James Pickard <james.pickard at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"Notes:       Requires nagelfar v1.1.12 or later with support for -H option.\n\"             See nagelfar homepage http://nagelfar.berlios.de/.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_tcl_nagelfar_checker\")\n    finish\nendif\nlet g:loaded_syntastic_tcl_nagelfar_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_tcl_nagelfar_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '-H' })\n\n    let errorformat =\n        \\ '%I%f: %l: N %m,'.\n        \\ '%f: %l: %t %m,'.\n        \\ '%-GChecking file %f'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'tcl',\n    \\ 'name': 'nagelfar'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/tex/chktex.vim",
    "content": "\"============================================================================\n\"File:        chktex.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" For details about ChkTeX see:\n\"\n\" http://baruch.ev-en.org/proj/chktex/\n\"\n\" Checker options:\n\"\n\" - g:syntastic_tex_chktex_showmsgs (boolean; default: 1)\n\"   whether to show informational messages (chktex option \"-m\");\n\"   by default informational messages are shown as warnings\n\"\n\" - g:syntastic_tex_chktex_args (string; default: empty)\n\"   command line options to pass to chktex\n\nif exists('g:loaded_syntastic_tex_chktex_checker')\n    finish\nendif\nlet g:loaded_syntastic_tex_chktex_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nif !exists('g:syntastic_tex_chktex_showmsgs')\n    let g:syntastic_tex_chktex_showmsgs = 1\nendif\n\nfunction! SyntaxCheckers_tex_chktex_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '-q -v1' })\n\n    let errorformat =\n        \\ '%EError %n in %f line %l: %m,' .\n        \\ '%WWarning %n in %f line %l: %m,' .\n        \\ (g:syntastic_tex_chktex_showmsgs ? '%WMessage %n in %f line %l: %m,' : '') .\n        \\ '%Z%p^,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'subtype': 'Style',\n        \\ 'postprocess': ['sort'] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'tex',\n    \\ 'name': 'chktex'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/tex/lacheck.vim",
    "content": "\"============================================================================\n\"File:        tex.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists('g:loaded_syntastic_tex_lacheck_checker')\n    finish\nendif\nlet g:loaded_syntastic_tex_lacheck_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_tex_lacheck_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n\n    let errorformat =\n        \\ '%-G** %f:,' .\n        \\ '%E\"%f\"\\, line %l: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'tex',\n    \\ 'name': 'lacheck'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/texinfo/makeinfo.vim",
    "content": "\"============================================================================\n\"File:        makeinfo.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_texinfo_makeinfo_checker\")\n    finish\nendif\nlet g:loaded_syntastic_texinfo_makeinfo_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_texinfo_makeinfo_GetHighlightRegex(item)\n    let term = matchstr(a:item['text'], \"\\\\m`\\\\zs[^']\\\\+\\\\ze'\")\n    return term != '' ? '\\V' . term : ''\nendfunction\n\nfunction! SyntaxCheckers_texinfo_makeinfo_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': syntastic#c#NullOutput() })\n\n    let errorformat =\n        \\ '%f:%l: %tarning: %m,' .\n        \\ '%f:%l: %m,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'type': 'e' })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'texinfo',\n    \\ 'name': 'makeinfo'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/text/atdtool.vim",
    "content": "\"============================================================================\n\"File:        atdtool.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_text_atdtool_checker\")\n    finish\nendif\nlet g:loaded_syntastic_text_atdtool_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_text_atdtool_GetHighlightRegex(item)\n    let term = matchstr(a:item['text'], '\\m \"\\zs[^\"]\\+\\ze\"\\($\\| | suggestions:\\)')\n    if term != ''\n        let col = get(a:item, 'col', 0)\n        let term = (col != 0 ? '\\%' . col . 'c' : '') . '\\V' . term\n    endif\n    return term\nendfunction\n\nfunction! SyntaxCheckers_text_atdtool_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'tail': '2> ' . syntastic#util#DevNull() })\n\n    let errorformat =\n        \\ '%W%f:%l:%c: %m,'.\n        \\ '%+C  suggestions:%.%#'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'returns': [0],\n        \\ 'subtype': 'Style' })\n\n    for e in loclist\n        let e['text'] = substitute(e['text'], '\\m\\n\\s\\+', ' | ', 'g')\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'text',\n    \\ 'name': 'atdtool'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/text/language_check.vim",
    "content": "\"============================================================================\n\"File:        language_check.vim\n\"Description: Grammar checker (https://github.com/myint/language-check)\n\"Authors:     Steven Myint <git@stevenmyint.com>\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_text_language_check_checker\")\n    finish\nendif\nlet g:loaded_syntastic_text_language_check_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_text_language_check_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n\n    let errorformat =\n        \\ '%f:%l:%c: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'subtype': 'Style',\n        \\ 'returns': [0, 2] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'text',\n    \\ 'name': 'language_check',\n    \\ 'exec': 'language-check'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/twig/twiglint.vim",
    "content": "\"============================================================================\n\"File:        twig.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Alexander <iam.asm89 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_twig_twiglint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_twig_twiglint_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_twig_twiglint_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args_before': 'lint',\n        \\ 'args_after': '--format=csv' })\n\n    let errorformat = '\"%f\"\\,%l\\,%m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat})\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'twig',\n    \\ 'name': 'twiglint',\n    \\ 'exec': 'twig-lint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/typescript/tsc.vim",
    "content": "\"============================================================================\n\"File:        typescript.vim\n\"Description: TypeScript syntax checker\n\"Maintainer:  Bill Casarin <bill@casarin.ca>\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_typescript_tsc_checker\")\n    finish\nendif\nlet g:loaded_syntastic_typescript_tsc_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_typescript_tsc_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args': '--module commonjs',\n        \\ 'args_after': '--out ' . syntastic#util#DevNull() })\n\n    let errorformat =\n        \\ '%E%f %#(%l\\,%c): error %m,' .\n        \\ '%E%f %#(%l\\,%c): %m,' .\n        \\ '%Eerror %m,' .\n        \\ '%C%\\s%\\+%m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr(\"\")},\n        \\ 'postprocess': ['sort'] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'typescript',\n    \\ 'name': 'tsc'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/vala/valac.vim",
    "content": "\"============================================================================\n\"File:        vala.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Konstantin Stepanov (me@kstep.me)\n\"Notes:       Add special comment line into your vala file starting with\n\"             \"// modules: \" and containing space delimited list of vala\n\"             modules, used by the file, so this script can build correct\n\"             --pkg arguments.\n\"             Add another special comment line into your vala file starting\n\"             with \"// vapidirs: \" followed by a space delimited list of\n\"             the vapi directories so this script can build with the correct\n\"             --vapidir arguments\n\"             Alternatively you can set the g:syntastic_vala_modules array\n\"             and/or the g:syntastic_vala_vapidirs array\n\"             in your .vimrc or .lvimrc with localvimrc plugin\n\"             (http://www.vim.org/scripts/script.php?script_id=441).\n\"             Valac compiler is not the fastest thing in the world, so you\n\"             may want to disable this plugin with\n\"             let g:syntastic_vala_check_disabled = 1 command in your .vimrc or\n\"             command line. Unlet this variable to set it to 0 to reenable\n\"             this checker.\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_vala_valac_checker\")\n    finish\nendif\nlet g:loaded_syntastic_vala_valac_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_vala_valac_GetHighlightRegex(pos)\n    let length = strlen(matchstr(a:pos['text'], '\\m\\^\\+$'))\n    return '\\%>' . (a:pos['col'] - 1) . 'c.*\\%<' . (a:pos['col'] + length + 1) . 'c'\nendfunction\n\nfunction! s:GetValaModules()\n    if exists('g:syntastic_vala_modules')\n        if type(g:syntastic_vala_modules) == type('')\n            return split(g:syntastic_vala_modules, '\\s\\+')\n        elseif type(g:syntastic_vala_modules) == type([])\n            return copy(g:syntastic_vala_modules)\n        else\n            echoerr 'g:syntastic_vala_modules must be either list or string: fallback to in file modules string'\n        endif\n    endif\n\n    let modules_line = search('^// modules: ', 'n')\n    let modules_str = getline(modules_line)\n    return split(strpart(modules_str, 12), '\\s\\+')\nendfunction\n\nfunction! s:GetValaVapiDirs()\n    if exists('g:syntastic_vala_vapi_dirs')\n        if type(g:syntastic_vala_vapi_dirs) == type('')\n            return split(g:syntastic_vala_vapi_dirs, '\\s\\+')\n        elseif type(g:syntastic_vala_vapi_dirs) == type([])\n            return copy(g:syntastic_vala_vapi_dirs)\n        else\n            echoerr 'g:syntastic_vala_vapi_dirs must be either list or string: fallback to in file modules string'\n        endif\n    endif\n\n    let vapi_line = search('^//\\s*vapidirs:\\s*','n')\n    let vapi_str = getline(vapi_line)\n    return split( substitute( vapi_str, '^//\\s*vapidirs:\\s*', '', 'g' ), '\\s\\+' )\nendfunction\n\nfunction! SyntaxCheckers_vala_valac_GetLocList() dict\n    let vala_pkg_args = join(map(s:GetValaModules(), '\"--pkg \".v:val'), ' ')\n    let vala_vapi_args = join(map(s:GetValaVapiDirs(), '\"--vapidir \".v:val'), ' ')\n    let makeprg = self.makeprgBuild({ 'args': '-C ' . vala_pkg_args . \" \" . vala_vapi_args })\n\n    let errorformat =\n        \\ '%A%f:%l.%c-%\\d%\\+.%\\d%\\+: %t%[a-z]%\\+: %m,'.\n        \\ '%C%m,'.\n        \\ '%Z%m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'vala',\n    \\ 'name': 'valac'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/verilog/verilator.vim",
    "content": "\"============================================================================\n\"File:        verilator.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Kocha <kocha dot lsifrontend at gmail dot com>\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_verilog_verilator_checker\")\n    finish\nendif\nlet g:loaded_syntastic_verilog_verilator_checker = 1\n\nif !exists('g:syntastic_verilog_compiler_options')\n    let g:syntastic_verilog_compiler_options = '-Wall'\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_verilog_verilator_IsAvailable() dict\n    if !exists('g:syntastic_verilog_compiler')\n        let g:syntastic_verilog_compiler = self.getExec()\n    endif\n    return executable(expand(g:syntastic_verilog_compiler))\nendfunction\n\nfunction! SyntaxCheckers_verilog_verilator_GetLocList() dict\n    return syntastic#c#GetLocList('verilog', 'verilator', {\n        \\ 'errorformat':\n        \\     '%%%trror-%\\=%\\w%#: %f:%l: %m,' .\n        \\     '%%%tarning-%\\=%\\w%#: %f:%l: %m',\n        \\ 'main_flags': '--lint-only' })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'verilog',\n    \\ 'name': 'verilator' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/vhdl/ghdl.vim",
    "content": "\"============================================================================\n\"File:        ghdl.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Jan Wagner <jaydyou at janidom dot de>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_vhdl_ghdl_checker\")\n    finish\nendif\nlet g:loaded_syntastic_vhdl_ghdl_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_vhdl_ghdl_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '-s' })\n\n    let errorformat =  '%f:%l:%c: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'vhdl',\n    \\ 'name': 'ghdl'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/vim/vimlint.vim",
    "content": "\"============================================================================\n\"File:        vimlint.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_vim_vimlint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_vim_vimlint_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_vim_vimlint_GetHighlightRegex(item)\n    let term = matchstr(a:item['text'], '\\m `\\zs[^`]\\+\\ze`')\n    if term != ''\n        let col = get(a:item, 'col', 0)\n\n        if col && term[0:1] ==# 'l:'\n            if getline(a:item.lnum)[col-1:col] !=# 'l:'\n                let term = term[2:]\n            endif\n        endif\n\n        return '\\V' . (col ? '\\%' . col . 'c' : '') . term\n    endif\n\n    return ''\nendfunction\n\nfunction! SyntaxCheckers_vim_vimlint_IsAvailable() dict\n    let ret = 0\n    try\n        call vimlint#vimlint(syntastic#util#DevNull(), { 'output': [], 'quiet': 1 })\n        let ret = 1\n    catch /\\m^Vim\\%((\\a\\+)\\)\\=:E117/\n        \" do nothing\n    endtry\n    return ret\nendfunction\n\nfunction! SyntaxCheckers_vim_vimlint_GetLocList() dict\n    \" EVL102: unused variable v\n    \" EVL103: unused argument v\n    \" EVL104: variable may not be initialized on some execution path: v\n    \" EVL105: global variable v is defined without g:\n    \" EVL106: local variable v is used without l:\n    \" EVL201: unreachable code\n    \" EVL204: constant in conditional context\n    \" EVL205: missing scriptencoding\n    \" value 3: the message is a warning\n    \"\n    \" References: :help vimlint-errorcode and :help vimlint-variables\n    return vimlint#vimlint(expand('%'), {\n        \\ 'output': function('s:vimlintOutput'),\n        \\ 'quiet':  1,\n        \\ 'EVL102': 3,\n        \\ 'EVL103': 3,\n        \\ 'EVL104': 3,\n        \\ 'EVL105': 3,\n        \\ 'EVL106': 3,\n        \\ 'EVL201': 3,\n        \\ 'EVL204': 3,\n        \\ 'EVL205': 3 })\nendfunction\n\n\" @vimlint(EVL103, 1, a:filename)\nfunction! s:vimlintOutput(filename, pos, ev, eid, mes, obj)\n    call add(a:obj.error, {\n        \\ 'bufnr': bufnr(''),\n        \\ 'lnum': a:pos.lnum,\n        \\ 'col': a:pos.col,\n        \\ 'vcol': 0,\n        \\ 'type': a:ev[0],\n        \\ 'text': '[' . a:eid . '] ' . a:mes,\n        \\ 'valid': a:pos.lnum > 0 })\nendfunction\n\" @vimlint(EVL103, 0, a:filename)\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'vim',\n    \\ 'name': 'vimlint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/xhtml/jshint.vim",
    "content": "\"============================================================================\n\"File:        jshint.vim\n\"Description: Javascript syntax checker for xHTML - using jshint\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_xhtml_jshint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_xhtml_jshint_checker = 1\n\nruntime! syntax_checkers/html/*.vim\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'xhtml',\n    \\ 'name': 'jshint',\n    \\ 'redirect': 'html/jshint'})\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/xhtml/tidy.vim",
    "content": "\"============================================================================\n\"File:        xhtml.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" Checker option:\n\"\n\" - g:syntastic_xhtml_tidy_ignore_errors (list; default: [])\n\"   list of errors to ignore\n\nif exists(\"g:loaded_syntastic_xhtml_tidy_checker\")\n    finish\nendif\nlet g:loaded_syntastic_xhtml_tidy_checker = 1\n\nif !exists('g:syntastic_xhtml_tidy_ignore_errors')\n    let g:syntastic_xhtml_tidy_ignore_errors = []\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\n\" TODO: join this with html.vim DRY's sake?\nfunction! s:TidyEncOptByFenc()\n    let tidy_opts = {\n                \\'utf-8':        '-utf8',\n                \\'ascii':        '-ascii',\n                \\'latin1':       '-latin1',\n                \\'iso-2022-jp':  '-iso-2022',\n                \\'cp1252':       '-win1252',\n                \\'macroman':     '-mac',\n                \\'utf-16le':     '-utf16le',\n                \\'utf-16':       '-utf16',\n                \\'big5':         '-big5',\n                \\'cp932':        '-shiftjis',\n                \\'sjis':         '-shiftjis',\n                \\'cp850':        '-ibm858',\n                \\}\n    return get(tidy_opts, &fileencoding, '-utf8')\nendfunction\n\nfunction! s:IgnoreError(text)\n    for i in g:syntastic_xhtml_tidy_ignore_errors\n        if stridx(a:text, i) != -1\n            return 1\n        endif\n    endfor\n    return 0\nendfunction\n\nfunction! SyntaxCheckers_xhtml_tidy_GetLocList() dict\n    let encopt = s:TidyEncOptByFenc()\n    let makeprg = self.makeprgBuild({ 'args_after': encopt . ' -xml -e' })\n\n    let errorformat=\n        \\ '%Wline %l column %v - Warning: %m,' .\n        \\ '%Eline %l column %v - Error: %m,' .\n        \\ '%-G%.%#'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr(\"\")},\n        \\ 'returns': [0, 1, 2] })\n\n    for e in loclist\n        if e['valid'] && s:IgnoreError(e['text']) == 1\n            let e['valid'] = 0\n        endif\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'xhtml',\n    \\ 'name': 'tidy'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/xml/xmllint.vim",
    "content": "\"============================================================================\n\"File:        xml.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Sebastian Kusnier <sebastian at kusnier dot net>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_xml_xmllint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_xml_xmllint_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\n\" You can use a local installation of DTDs to significantly speed up validation\n\" and allow you to validate XML data without network access, see xmlcatalog(1)\n\" and http://www.xmlsoft.org/catalog.html for more information.\n\nfunction! SyntaxCheckers_xml_xmllint_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '--xinclude --noout --postvalid' })\n\n    let errorformat=\n        \\ '%E%f:%l: error : %m,' .\n        \\ '%-G%f:%l: validity error : Validation failed: no DTD found %m,' .\n        \\ '%W%f:%l: warning : %m,' .\n        \\ '%W%f:%l: validity warning : %m,' .\n        \\ '%E%f:%l: validity error : %m,' .\n        \\ '%E%f:%l: parser error : %m,' .\n        \\ '%E%f:%l: %m,' .\n        \\ '%-Z%p^,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'returns': [0, 1, 2, 3, 4, 5] })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'xml',\n    \\ 'name': 'xmllint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/xslt/xmllint.vim",
    "content": "\"============================================================================\n\"File:        xslt.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Sebastian Kusnier <sebastian at kusnier dot net>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_xslt_xmllint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_xslt_xmllint_checker = 1\n\nruntime! syntax_checkers/xml/*.vim\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'xslt',\n    \\ 'name': 'xmllint',\n    \\ 'redirect': 'xml/xmllint'})\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/yacc/bison.vim",
    "content": "\"============================================================================\n\"File:        yacc.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_yacc_bison_checker\")\n    finish\nendif\nlet g:loaded_syntastic_yacc_bison_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_yacc_bison_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'args_after': syntastic#c#NullOutput() })\n\n    let errorformat =\n        \\ '%E%f:%l%.%v-%.%\\{-}: %trror: %m,' .\n        \\ '%E%f:%l%.%v: %trror: %m,' .\n        \\ '%W%f:%l%.%v-%.%\\{-}: %tarning: %m,' .\n        \\ '%W%f:%l%.%v: %tarning: %m,' .\n        \\ '%I%f:%l%.%v-%.%\\{-}: %\\s%\\+%m,' .\n        \\ '%I%f:%l%.%v: %\\s%\\+%m'\n\n    let loclist = SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\n\n    let last_type = 'E'\n    for e in loclist\n        if e['type'] ==? 'I'\n            let e['type'] = last_type\n        endif\n        let last_type = e['type']\n    endfor\n\n    return loclist\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'yacc',\n    \\ 'name': 'bison'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/yaml/jsyaml.vim",
    "content": "\"============================================================================\n\"File:        yaml.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"\n\"Installation: $ npm install -g js-yaml\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_yaml_jsyaml_checker\")\n    finish\nendif\nlet g:loaded_syntastic_yaml_jsyaml_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_yaml_jsyaml_GetLocList() dict\n    if !exists('s:js_yaml_new')\n        let s:js_yaml_new =\n            \\ syntastic#util#versionIsAtLeast(syntastic#util#getVersion(self.getExecEscaped() . ' --version'), [2])\n    endif\n\n    let makeprg = self.makeprgBuild({ 'args_after': (s:js_yaml_new ? '' : '--compact') })\n\n    let errorformat =\n        \\ 'Error on line %l\\, col %c:%m,' .\n        \\ 'JS-YAML: %m at line %l\\, column %c:,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'defaults': {'bufnr': bufnr(\"\")} })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'yaml',\n    \\ 'name': 'jsyaml',\n    \\ 'exec': 'js-yaml'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/yaml/yamlxs.vim",
    "content": "\"============================================================================\n\"File:        yamlxs.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"Installation: cpanm YAML::XS\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_yaml_yamlxs_checker\")\n    finish\nendif\nlet g:loaded_syntastic_yaml_yamlxs_checker = 1\n\nif !exists('g:syntastic_perl_lib_path')\n    let g:syntastic_perl_lib_path = []\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_yaml_yamlxs_IsAvailable() dict\n    if !exists('g:syntastic_perl_interpreter')\n        let g:syntastic_perl_interpreter = self.getExec()\n    endif\n\n    \" don't call executable() here, to allow things like\n    \" let g:syntastic_perl_interpreter='/usr/bin/env perl'\n    silent! call system(s:Exe() . ' ' . s:Modules() . ' -e ' . syntastic#util#shescape('exit(0)'))\n    return v:shell_error == 0\nendfunction\n\nfunction! SyntaxCheckers_yaml_yamlxs_GetLocList() dict\n    let makeprg = self.makeprgBuild({\n        \\ 'exe': s:Exe(),\n        \\ 'args_before': s:Modules() . ' -e ' . syntastic#util#shescape('YAML::XS::LoadFile($ARGV[0])') })\n\n    let errorformat =\n        \\ '%EYAML::XS::Load Error: The problem:,' .\n        \\ '%-C,' .\n        \\ '%C    %m,' .\n        \\ '%Cwas found at document: %\\d%\\+\\, line: %l\\, column: %c,' .\n        \\ '%-G%.%#'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat,\n        \\ 'postprocess': ['compressWhitespace'],\n        \\ 'defaults': {'bufnr': bufnr(\"\")} })\nendfunction\n\nfunction! s:Exe()\n    return syntastic#util#shexpand(g:syntastic_perl_interpreter)\nendfunction\n\nfunction s:Modules()\n    if type(g:syntastic_perl_lib_path) == type('')\n        call syntastic#log#deprecationWarn('variable g:syntastic_perl_lib_path should be a list')\n        let includes = split(g:syntastic_perl_lib_path, ',')\n    else\n        let includes = copy(syntastic#util#var('perl_lib_path'))\n    endif\n    return join(map(includes, '\"-I\" . v:val') + ['-MYAML::XS'])\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'yaml',\n    \\ 'name': 'yamlxs',\n    \\ 'exec': 'perl' })\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/z80/z80syntaxchecker.vim",
    "content": "\"============================================================================\n\"File:        z80.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Romain Giot <giot.romain at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" To obtain this application there are two solutions:\n\" - Install this python package:\n\"   https://github.com/rgiot/pycpcdemotools\n\" - Copy/paste this script in your search path:\n\"   https://raw.github.com/rgiot/pycpcdemotools/master/cpcdemotools/source_checker/z80_syntax_checker.py\n\nif exists(\"g:loaded_syntastic_z80_z80syntaxchecker_checker\")\n    finish\nendif\nlet g:loaded_syntastic_z80_z80syntaxchecker_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_z80_z80syntaxchecker_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n\n    let errorformat =  '%f:%l %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'z80',\n    \\ 'name': 'z80syntaxchecker',\n    \\ 'exec': 'z80_syntax_checker.py'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/zpt/zptlint.vim",
    "content": "\"============================================================================\n\"File:        zpt.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  claytron <robots at claytron dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\"\n\" In order for this plugin to be useful, you will need to set up the\n\" zpt filetype in your vimrc\n\"\n\"    \" set up zope page templates as the zpt filetype\n\"    au BufNewFile,BufRead *.pt,*.cpt,*.zpt set filetype=zpt syntax=xml\n\"\n\" Then install the zptlint program, found on pypi:\n\" http://pypi.python.org/pypi/zptlint\n\nif exists(\"g:loaded_syntastic_zpt_zptlint_checker\")\n    finish\nendif\nlet g:loaded_syntastic_zpt_zptlint_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_zpt_zptlint_GetLocList() dict\n    let makeprg = self.makeprgBuild({})\n\n    let errorformat=\n        \\ '%-P*** Error in: %f,'.\n        \\ '%Z%*\\s\\, at line %l\\, column %c,'.\n        \\ '%E%*\\s%m,'.\n        \\ '%-Q'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat })\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'zpt',\n    \\ 'name': 'zptlint'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/zsh/shellcheck.vim",
    "content": "\"============================================================================\n\"File:        shellcheck.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  LCD 47 <lcd047 at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_zsh_shellcheck_checker\")\n    finish\nendif\nlet g:loaded_syntastic_zsh_shellcheck_checker = 1\n\nruntime! syntax_checkers/sh/*.vim\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'zsh',\n    \\ 'name': 'shellcheck',\n    \\ 'redirect': 'sh/shellcheck'})\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/syntastic/syntax_checkers/zsh/zsh.vim",
    "content": "\"============================================================================\n\"File:        zsh.vim\n\"Description: Syntax checking plugin for syntastic.vim\n\"Maintainer:  Martin Grenfell <martin.grenfell at gmail dot com>\n\"License:     This program is free software. It comes without any warranty,\n\"             to the extent permitted by applicable law. You can redistribute\n\"             it and/or modify it under the terms of the Do What The Fuck You\n\"             Want To Public License, Version 2, as published by Sam Hocevar.\n\"             See http://sam.zoy.org/wtfpl/COPYING for more details.\n\"\n\"============================================================================\n\nif exists(\"g:loaded_syntastic_zsh_zsh_checker\")\n    finish\nendif\nlet g:loaded_syntastic_zsh_zsh_checker = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! SyntaxCheckers_zsh_zsh_GetLocList() dict\n    let makeprg = self.makeprgBuild({ 'args_after': '-n' })\n\n    let errorformat = '%f:%l: %m'\n\n    return SyntasticMake({\n        \\ 'makeprg': makeprg,\n        \\ 'errorformat': errorformat})\nendfunction\n\ncall g:SyntasticRegistry.CreateAndRegisterChecker({\n    \\ 'filetype': 'zsh',\n    \\ 'name': 'zsh'})\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: set et sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/tabular/README.md",
    "content": "Tabular\n==============\nSometimes, it's useful to line up text.  Naturally, it's nicer to have the\ncomputer do this for you, since aligning things by hand quickly becomes\nunpleasant.  While there are other plugins for aligning text, the ones I've\ntried are either impossibly difficult to understand and use, or too simplistic\nto handle complicated tasks.  This plugin aims to make the easy things easy\nand the hard things possible, without providing an unnecessarily obtuse\ninterface.  It's still a work in progress, and criticisms are welcome.\n\nSee [Aligning Text with Tabular.vim](http://vimcasts.org/episodes/aligning-text-with-tabular-vim/)\nfor a screencast that shows how Tabular.vim works.\n\nSee [doc/Tabular.txt](http://raw.github.com/godlygeek/tabular/master/doc/Tabular.txt)\nfor detailed documentation.\n\nInstallation\n==============\nIf you don't have a preferred installation method, I recommend installing\n[pathogen.vim](https://github.com/tpope/vim-pathogen), and then simply\ncopy and paste:\n\n    mkdir -p ~/.vim/bundle\n    cd ~/.vim/bundle\n    git clone git://github.com/godlygeek/tabular.git\n\nOnce help tags have been generated (either using Pathogen's `:Helptags`\ncommand, or by pointing vim's `:helptags` command at the directory where you\ninstalled Tabular), you can view the manual with `:help tabular`.\n"
  },
  {
    "path": ".vim/bundle/tabular/after/plugin/TabularMaps.vim",
    "content": "if !exists(':Tabularize') || get(g:, 'no_default_tabular_maps', 0)\n  finish \" Tabular.vim wasn't loaded or the default maps are unwanted\nendif\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nAddTabularPattern!  assignment      /[|&+*/%<>=!~-]\\@<!\\([<>!=]=\\|=\\~\\)\\@![|&+*/%<>=!~-]*=/l1r1\nAddTabularPattern!  two_spaces      /  /l0\n\nAddTabularPipeline! multiple_spaces /  / map(a:lines, \"substitute(v:val, '   *', '  ', 'g')\") | tabular#TabularizeStrings(a:lines, '  ', 'l0')\n\nAddTabularPipeline! argument_list   /(.*)/ map(a:lines, 'substitute(v:val, ''\\s*\\([(,)]\\)\\s*'', ''\\1'', ''g'')')\n                                       \\ | tabular#TabularizeStrings(a:lines, '[(,)]', 'l0')\n                                       \\ | map(a:lines, 'substitute(v:val, ''\\(\\s*\\),'', '',\\1 '', \"g\")')\n                                       \\ | map(a:lines, 'substitute(v:val, ''\\s*)'', \")\", \"g\")')\n\nfunction! SplitCDeclarations(lines)\n  let rv = []\n  for line in a:lines\n    \" split the line into declaractions\n    let split = split(line, '\\s*[,;]\\s*')\n    \" separate the type from the first declaration\n    let type = substitute(split[0], '\\%(\\%([&*]\\s*\\)*\\)\\=\\k\\+$', '', '')\n    \" add the ; back on every declaration\n    call map(split, 'v:val . \";\"')\n    \" add the first element to the return as-is, and remove it from the list\n    let rv += [ remove(split, 0) ]\n    \" transform the other elements by adding the type on at the beginning\n    call map(split, 'type . v:val')\n    \" and add them all to the return\n    let rv += split\n  endfor\n  return rv\nendfunction\n\nAddTabularPipeline! split_declarations /,.*;/ SplitCDeclarations(a:lines)\n\nAddTabularPattern! ternary_operator /^.\\{-}\\zs?\\|:/l1\n\nAddTabularPattern! cpp_io /<<\\|>>/l1\n\nAddTabularPattern! pascal_assign /:=/l1\n\nAddTabularPattern! trailing_c_comments /\\/\\*\\|\\*\\/\\|\\/\\//l1\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n"
  },
  {
    "path": ".vim/bundle/tabular/autoload/tabular.vim",
    "content": "\" Tabular:     Align columnar data using regex-designated column boundaries\n\" Maintainer:  Matthew Wozniski (godlygeek@gmail.com)\n\" Date:        Thu, 03 May 2012 20:49:32 -0400\n\" Version:     1.0\n\"\n\" Long Description:\n\" Sometimes, it's useful to line up text.  Naturally, it's nicer to have the\n\" computer do this for you, since aligning things by hand quickly becomes\n\" unpleasant.  While there are other plugins for aligning text, the ones I've\n\" tried are either impossibly difficult to understand and use, or too simplistic\n\" to handle complicated tasks.  This plugin aims to make the easy things easy\n\" and the hard things possible, without providing an unnecessarily obtuse\n\" interface.  It's still a work in progress, and criticisms are welcome.\n\"\n\" License:\n\" Copyright (c) 2012, Matthew J. Wozniski\n\" All rights reserved.\n\"\n\" Redistribution and use in source and binary forms, with or without\n\" modification, are permitted provided that the following conditions are met:\n\"     * Redistributions of source code must retain the above copyright notice,\n\"       this list of conditions and the following disclaimer.\n\"     * Redistributions in binary form must reproduce the above copyright\n\"       notice, this list of conditions and the following disclaimer in the\n\"       documentation and/or other materials provided with the distribution.\n\"     * The names of the contributors may not be used to endorse or promote\n\"       products derived from this software without specific prior written\n\"       permission.\n\"\n\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS\n\" OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN\n\" NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT, INDIRECT,\n\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n\" OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n\" LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n\" NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\" Stupid vimscript crap                                                   {{{1\nlet s:savecpo = &cpo\nset cpo&vim\n\n\" Private Functions                                                       {{{1\n\n\" Return the number of bytes in a string after expanding tabs to spaces.  {{{2\n\" This expansion is done based on the current value of 'tabstop'\nif exists('*strdisplaywidth')\n  \" Needs vim 7.3\n  let s:Strlen = function(\"strdisplaywidth\")\nelse\n  function! s:Strlen(string)\n    \" Implement the tab handling part of strdisplaywidth for vim 7.2 and\n    \" earlier - not much that can be done about handling doublewidth\n    \" characters.\n    let rv = 0\n    let i = 0\n\n    for char in split(a:string, '\\zs')\n      if char == \"\\t\"\n        let rv += &ts - i\n        let i = 0\n      else\n        let rv += 1\n        let i = (i + 1) % &ts\n      endif\n    endfor\n\n    return rv\n  endfunction\nendif\n\n\" Align a string within a field                                           {{{2\n\" These functions do not trim leading and trailing spaces.\n\n\" Right align 'string' in a field of size 'fieldwidth'\nfunction! s:Right(string, fieldwidth)\n  let spaces = a:fieldwidth - s:Strlen(a:string)\n  return matchstr(a:string, '^\\s*') . repeat(\" \", spaces) . substitute(a:string, '^\\s*', '', '')\nendfunction\n\n\" Left align 'string' in a field of size 'fieldwidth'\nfunction! s:Left(string, fieldwidth)\n  let spaces = a:fieldwidth - s:Strlen(a:string)\n  return a:string . repeat(\" \", spaces)\nendfunction\n\n\" Center align 'string' in a field of size 'fieldwidth'\nfunction! s:Center(string, fieldwidth)\n  let spaces = a:fieldwidth - s:Strlen(a:string)\n  let right = spaces / 2\n  let left = right + (right * 2 != spaces)\n  return repeat(\" \", left) . a:string . repeat(\" \", right)\nendfunction\n\n\" Remove spaces around a string                                           {{{2\n\n\" Remove all trailing spaces from a string.\nfunction! s:StripTrailingSpaces(string)\n  return matchstr(a:string, '^.\\{-}\\ze\\s*$')\nendfunction\n\n\" Remove all leading spaces from a string.\nfunction! s:StripLeadingSpaces(string)\n  return matchstr(a:string, '^\\s*\\zs.*$')\nendfunction\n\n\" Split a string into fields and delimiters                               {{{2\n\" Like split(), but include the delimiters as elements\n\" All odd numbered elements are delimiters\n\" All even numbered elements are non-delimiters (including zero)\nfunction! s:SplitDelim(string, delim)\n  let rv = []\n  let beg = 0\n\n  let len = len(a:string)\n  let searchoff = 0\n\n  while 1\n    let mid = match(a:string, a:delim, beg + searchoff, 1)\n    if mid == -1 || mid == len\n      break\n    endif\n\n    let matchstr = matchstr(a:string, a:delim, beg + searchoff, 1)\n    let length = strlen(matchstr)\n\n    if length == 0 && beg == mid\n      \" Zero-length match for a zero-length delimiter - advance past it\n      let searchoff += 1\n      continue\n    endif\n\n    if beg == mid\n      let rv += [ \"\" ]\n    else\n      let rv += [ a:string[beg : mid-1] ]\n    endif\n\n    let rv += [ matchstr ]\n\n    let beg = mid + length\n    let searchoff = 0\n  endwhile\n\n  let rv += [ strpart(a:string, beg) ]\n\n  return rv\nendfunction\n\n\" Replace lines from `start' to `start + len - 1' with the given strings. {{{2\n\" If more lines are needed to show all strings, they will be added.\n\" If there are too few strings to fill all lines, lines will be removed.\nfunction! s:SetLines(start, len, strings)\n  if a:start > line('$') + 1 || a:start < 1\n    throw \"Invalid start line!\"\n  endif\n\n  if len(a:strings) > a:len\n    let fensave = &fen\n    let view = winsaveview()\n    call append(a:start + a:len - 1, repeat([''], len(a:strings) - a:len))\n    call winrestview(view)\n    let &fen = fensave\n  elseif len(a:strings) < a:len\n    let fensave = &fen\n    let view = winsaveview()\n    sil exe (a:start + len(a:strings)) . ',' .  (a:start + a:len - 1) . 'd_'\n    call winrestview(view)\n    let &fen = fensave\n  endif\n\n  call setline(a:start, a:strings)\nendfunction\n\n\" Runs the given commandstring argument as an expression.                 {{{2\n\" The commandstring expression is expected to reference the a:lines argument.\n\" If the commandstring expression returns a list the items of that list will\n\" replace the items in a:lines, otherwise the expression is assumed to have\n\" modified a:lines itself.\nfunction! s:FilterString(lines, commandstring)\n  exe 'let rv = ' . a:commandstring\n\n  if type(rv) == type(a:lines) && rv isnot a:lines\n    call filter(a:lines, 0)\n    call extend(a:lines, rv)\n  endif\nendfunction\n\n\" Public API                                                              {{{1\n\nif !exists(\"g:tabular_default_format\")\n  let g:tabular_default_format = \"l1\"\nendif\n\nlet s:formatelempat = '\\%([lrc]\\d\\+\\)'\n\nfunction! tabular#ElementFormatPattern()\n  return s:formatelempat\nendfunction\n\n\" Given a list of strings and a delimiter, split each string on every\n\" occurrence of the delimiter pattern, format each element according to either\n\" the provided format (optional) or the default format, and join them back\n\" together with enough space padding to guarantee that the nth delimiter of\n\" each string is aligned.\nfunction! tabular#TabularizeStrings(strings, delim, ...)\n  if a:0 > 1\n    echoerr \"TabularizeStrings accepts only 2 or 3 arguments (got \".(a:0+2).\")\"\n    return 1\n  endif\n\n  let formatstr = (a:0 ? a:1 : g:tabular_default_format)\n\n  if formatstr !~? s:formatelempat . '\\+'\n    echoerr \"Tabular: Invalid format \\\"\" . formatstr . \"\\\" specified!\"\n    return 1\n  endif\n\n  let format = split(formatstr, s:formatelempat . '\\zs')\n\n  let lines = map(a:strings, 's:SplitDelim(v:val, a:delim)')\n\n  \" Strip spaces\n  \"   - Only from non-delimiters; spaces in delimiters must have been matched\n  \"     intentionally\n  \"   - Don't strip leading spaces from the first element; we like indenting.\n  for line in lines\n    if len(line) == 1 && s:do_gtabularize\n      continue \" Leave non-matching lines unchanged for GTabularize\n    endif\n\n    if line[0] !~ '^\\s*$'\n      let line[0] = s:StripTrailingSpaces(line[0])\n    endif\n    if len(line) >= 3\n      for i in range(2, len(line)-1, 2)\n        let line[i] = s:StripLeadingSpaces(s:StripTrailingSpaces(line[i]))\n      endfor\n    endif\n  endfor\n\n  \" Find the max length of each field\n  let maxes = []\n  for line in lines\n    if len(line) == 1 && s:do_gtabularize\n      continue \" non-matching lines don't affect field widths for GTabularize\n    endif\n\n    for i in range(len(line))\n      if i == len(maxes)\n        let maxes += [ s:Strlen(line[i]) ]\n      else\n        let maxes[i] = max( [ maxes[i], s:Strlen(line[i]) ] )\n      endif\n    endfor\n  endfor\n\n  let lead_blank = empty(filter(copy(lines), 'v:val[0] =~ \"\\\\S\"'))\n\n  \" Concatenate the fields, according to the format pattern.\n  for idx in range(len(lines))\n    let line = lines[idx]\n\n    if len(line) == 1 && s:do_gtabularize\n      let lines[idx] = line[0] \" GTabularize doesn't change non-matching lines\n      continue\n    endif\n\n    for i in range(len(line))\n      let how = format[i % len(format)][0]\n      let pad = format[i % len(format)][1:-1]\n\n      if how =~? 'l'\n        let field = s:Left(line[i], maxes[i])\n      elseif how =~? 'r'\n        let field = s:Right(line[i], maxes[i])\n      elseif how =~? 'c'\n        let field = s:Center(line[i], maxes[i])\n      endif\n\n      let line[i] = field . (lead_blank && i == 0 ? '' : repeat(\" \", pad))\n    endfor\n\n    let lines[idx] = s:StripTrailingSpaces(join(line, ''))\n  endfor\nendfunction\n\n\" Apply 0 or more filters, in sequence, to selected text in the buffer    {{{2\n\" The lines to be filtered are determined as follows:\n\"   If the function is called with a range containing multiple lines, then\n\"     those lines will be used as the range.\n\"   If the function is called with no range or with a range of 1 line, then\n\"     if GTabularize mode is being used,\n\"       the range will not be adjusted\n\"     if \"includepat\" is not specified,\n\"       that 1 line will be filtered,\n\"     if \"includepat\" is specified and that line does not match it,\n\"       no lines will be filtered\n\"     if \"includepat\" is specified and that line does match it,\n\"       all contiguous lines above and below the specified line matching the\n\"       pattern will be filtered.\n\"\n\" The remaining arguments must each be a filter to apply to the text.\n\" Each filter must either be a String evaluating to a function to be called.\nfunction! tabular#PipeRange(includepat, ...) range\n  exe a:firstline . ',' . a:lastline\n      \\ . 'call tabular#PipeRangeWithOptions(a:includepat, a:000, {})'\nendfunction\n\n\" Extended version of tabular#PipeRange, which\n\" 1) Takes the list of filters as an explicit list rather than as varargs\n\" 2) Supports passing a dictionary of options to control the routine.\n\"    Currently, the only supported option is 'mode', which determines whether\n\"    to behave as :Tabularize or as :GTabularize\n\" This allows me to add new features here without breaking API compatibility\n\" in the future.\nfunction! tabular#PipeRangeWithOptions(includepat, filterlist, options) range\n  let top = a:firstline\n  let bot = a:lastline\n\n  let s:do_gtabularize = (get(a:options, 'mode', '') ==# 'GTabularize')\n\n  if !s:do_gtabularize\n    \" In the default mode, apply range extension logic\n    if a:includepat != '' && top == bot\n      if top < 0 || top > line('$') || getline(top) !~ a:includepat\n        return\n      endif\n      while top > 1 && getline(top-1) =~ a:includepat\n        let top -= 1\n      endwhile\n      while bot < line('$') && getline(bot+1) =~ a:includepat\n        let bot += 1\n      endwhile\n    endif\n  endif\n\n  let lines = map(range(top, bot), 'getline(v:val)')\n\n  for filter in a:filterlist\n    if type(filter) != type(\"\")\n      echoerr \"PipeRange: Bad filter: \" . string(filter)\n    endif\n\n    call s:FilterString(lines, filter)\n\n    unlet filter\n  endfor\n\n  call s:SetLines(top, bot - top + 1, lines)\nendfunction\n\n\" Part of the public interface so interested pipelines can query this and\n\" adjust their behavior appropriately.\nfunction! tabular#DoGTabularize()\n  return s:do_gtabularize\nendfunction\n\nfunction! s:SplitDelimTest(string, delim, expected)\n  let result = s:SplitDelim(a:string, a:delim)\n\n  if result !=# a:expected\n    echomsg 'Test failed!'\n    echomsg '  string=' . string(a:string) . '  delim=' . string(a:delim)\n    echomsg '  Returned=' . string(result)\n    echomsg '  Expected=' . string(a:expected)\n  endif\nendfunction\n\nfunction! tabular#SplitDelimUnitTest()\n  let assignment = '[|&+*/%<>=!~-]\\@<!\\([<>!=]=\\|=\\~\\)\\@![|&+*/%<>=!~-]*='\n  let two_spaces = '  '\n  let ternary_operator = '^.\\{-}\\zs?\\|:'\n  let cpp_io = '<<\\|>>'\n  let pascal_assign = ':='\n  let trailing_c_comments = '\\/\\*\\|\\*\\/\\|\\/\\/'\n\n  call s:SplitDelimTest('a+=b',    assignment, ['a', '+=', 'b'])\n  call s:SplitDelimTest('a-=b',    assignment, ['a', '-=', 'b'])\n  call s:SplitDelimTest('a!=b',    assignment, ['a!=b'])\n  call s:SplitDelimTest('a==b',    assignment, ['a==b'])\n  call s:SplitDelimTest('a&=b',    assignment, ['a', '&=', 'b'])\n  call s:SplitDelimTest('a|=b',    assignment, ['a', '|=', 'b'])\n  call s:SplitDelimTest('a=b=c',   assignment, ['a', '=', 'b', '=', 'c'])\n\n  call s:SplitDelimTest('a  b  c', two_spaces, ['a', '  ', 'b', '  ', 'c'])\n  call s:SplitDelimTest('a b   c', two_spaces, ['a b', '  ', ' c'])\n  call s:SplitDelimTest('ab    c', two_spaces, ['ab', '  ', '', '  ', 'c'])\n\n  call s:SplitDelimTest('a?b:c',   ternary_operator, ['a', '?', 'b', ':', 'c'])\n\n  call s:SplitDelimTest('a<<b<<c', cpp_io, ['a', '<<', 'b', '<<', 'c'])\n\n  call s:SplitDelimTest('a:=b=c',  pascal_assign, ['a', ':=', 'b=c'])\n\n  call s:SplitDelimTest('x//foo',  trailing_c_comments, ['x', '//', 'foo'])\n  call s:SplitDelimTest('x/*foo*/',trailing_c_comments, ['x', '/*', 'foo', '*/', ''])\n\n  call s:SplitDelimTest('#ab#cd#ef', '[^#]*', ['#', 'ab', '#', 'cd', '#', 'ef', ''])\n  call s:SplitDelimTest('#ab#cd#ef', '#\\zs',  ['#', '', 'ab#', '', 'cd#', '', 'ef'])\nendfunction\n\n\" Stupid vimscript crap, part 2                                           {{{1\nlet &cpo = s:savecpo\nunlet s:savecpo\n\n\" vim:set sw=2 sts=2 fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/tabular/doc/Tabular.txt",
    "content": "*Tabular.txt*   Configurable, flexible, intuitive text aligning\n\n                                                       *tabular* *tabular.vim*\n\n       #|#|#|#|#|          #|                  #|                     ~\n           #|      #|#|#|  #|#|#|    #|    #|  #|    #|#|#|  #|  #|#| ~\n           #|    #|    #|  #|    #|  #|    #|  #|  #|    #|  #|#|     ~\n           #|    #|    #|  #|    #|  #|    #|  #|  #|    #|  #|       ~\n           #|      #|#|#|  #|#|#|      #|#|#|  #|    #|#|#|  #|       ~\n\n                                                  For Vim version 7.0 or newer\n\n                               By Matt Wozniski\n                                mjw@drexel.edu\n\n                               Reference Manual ~\n\n                                                                 *tabular-toc*\n\n1. Description                                           |tabular-intro|\n2. Walkthrough                                           |tabular-walkthrough|\n3. Scripting                                             |tabular-scripting|\n\nThe functionality mentioned here is a plugin, see |add-plugin|.\nYou can avoid loading this plugin by setting the \"Tabular_loaded\" global\nvariable in your |vimrc| file: >\n    :let g:tabular_loaded = 1\n\n==============================================================================\n1. Description                                                 *tabular-intro*\n\nSometimes, it's useful to line up text.  Naturally, it's nicer to have the\ncomputer do this for you, since aligning things by hand quickly becomes\nunpleasant.  While there are other plugins for aligning text, the ones I've\ntried are either impossibly difficult to understand and use, or too simplistic\nto handle complicated tasks.  This plugin aims to make the easy things easy\nand the hard things possible, without providing an unnecessarily obtuse\ninterface.  It's still a work in progress, and criticisms are welcome.\n\n==============================================================================\n2. Walkthrough                                           *tabular-walkthrough*\n\nTabular's commands are based largely on regular expressions.  The basic\ntechnique used by Tabular is taking some regex to match field delimiters,\nsplitting the input lines at those delimiters, trimming unnecessary spaces\nfrom the non-delimiter parts, padding the non-delimiter parts of the lines\nwith spaces to make them the same length, and joining things back together\nagain.\n\nFor instance, consider starting with the following lines:\n>\n    Some short phrase,some other phrase\n    A much longer phrase here,and another long phrase\n<\nLet's say we want to line these lines up at the commas.  We can tell\nTabularize to do this by passing a pattern matching , to the Tabularize\ncommand:\n>\n  :Tabularize /,\n\n    Some short phrase         , some other phrase\n    A much longer phrase here , and another long phrase\n<\nI encourage you to try copying those lines to another buffer and trying to\ncall :Tabularize.  You'll want to take notice of two things quickly: First,\ninstead of requiring a range, Tabularize tries to figure out what you want to\nhappen.  Since it knows that you want to act on lines matching a comma, it\nwill look upwards and downwards for lines around the current line that match a\ncomma, and consider all contiguous lines matching the pattern to be the range\nto be acted upon.  You can always override this by specifying a range, though.\n\nThe second thing you should notice is that you'll almost certainly be able to\nabbreviate :Tabularize to :Tab - using this form in mappings and scripts is\ndiscouraged as it will make conflicts with other scripts more likely, but for\ninteractive use it's a nice timesaver.  Another convenience feature is that\nrunning :Tabularize without providing a new pattern will cause it to reuse the\nlast pattern it was called with.\n\nSo, anyway, now the commas line up.  Splitting the lines on commas, Tabular\nrealized that 'Some short phrase' would need to be padded with spaces to match\nthe length of 'A much longer phrase here', and it did that before joining the\nlines back together.  You'll also notice that, in addition to the spaces\ninserting for padding, extra spaces were inserted between fields.  That's\nbecause by default, Tabular prints things left-aligned with one space between\nfields.  If you wanted to print things right-aligned with no spaces between\nfields, you would provide a different format to the Tabularize command:\n>\n  :Tabularize /,/r0\n\n            Some short phrase,      some other phrase\n    A much longer phrase here,and another long phrase\n<\nA format specifier is either l, r, or c, followed by one or more digits.  If\nthe letter is l, the field will be left aligned, similarly for r and right\naligning and c and center aligning.  The number following the letter is the\nnumber of spaces padding to insert before the start of the next field.\nMultiple format specifiers can be added to the same command - each field will\nbe printed with the next format specifier in the list; when they all have been\nused the first will be used again, and so on.  So, the last command right\naligned every field, then inserted 0 spaces of padding before the next field.\nWhat if we wanted to right align the text before the comma, and left align the\ntext after the comma?  The command would look like this:\n>\n  :Tabularize /,/r1c1l0\n\n            Some short phrase , some other phrase\n    A much longer phrase here , and another long phrase\n<\nThat command would be read as \"Align the matching text, splitting fields on\ncommas.  Print everything before the first comma right aligned, then 1 space,\nthen the comma center aligned, then 1 space, then everything after the comma\nleft aligned.\"  Notice that the alignment of the field the comma is in is\nirrelevant - since it's only 1 cell wide, it looks the same whether it's right,\nleft, or center aligned.  Also notice that the 0 padding spaces specified for\nthe 3rd field are unused - but they would be used if there were enough fields\nto require looping through the fields again.  For instance:\n>\n    abc,def,ghi\n    a,b\n    a,b,c\n\n  :Tabularize /,/r1c1l0\n\n    abc , def, ghi\n      a , b\n      a , b  ,  c\n<\nNotice that now, the format pattern has been reused; field 4 (the second comma)\nis right aligned, field 5 is center aligned.  No spaces were inserted between\nthe 3rd field (containing \"def\") and the 4th field (the second comma) because\nthe format specified 'l0'.\n\nBut, what if you only wanted to act on the first comma on the line, rather than\nall of the commas on the line?  Let's say we want everything before the first\ncomma right aligned, then the comma, then everything after the comma left\naligned:\n>\n    abc,def,ghi\n    a,b\n    a,b,c\n\n  :Tabularize /^[^,]*\\zs,/r0c0l0\n\n    abc,def,ghi\n      a,b\n      a,b,c\n<\nHere, we used a Vim regex that would only match the first comma on the line.\nIt matches the beginning of the line, followed by all the non-comma characters\nup to the first comma, and then forgets about what it matched so far and\npretends that the match starts exactly at the comma.\n\nBut, now that this command does exactly what we want it to, it's become pretty\nunwieldy.  It would be unpleasant to need to type that more than once or\ntwice.  The solution is to assign a name to it.\n>\n  :AddTabularPattern first_comma /^[^,]*\\zs,/r0c0l0\n<\nNow, typing \":Tabularize first_comma\" will do the same thing as typing the\nwhole pattern out each time.  Of course this is more useful if you store the\nname in a file to be used later.\n\nNOTE: In order to make these new commands available every time vim starts,\nyou'll need to put those new commands into a .vim file in a plugin directory\nsomewhere in your 'runtimepath'.  In order to make sure that Tabular.vim has\nalready been loaded before your file tries to use :AddTabularPattern or\n:AddTabularPipeline, the new file should be installed in an after/plugin\ndirectory in 'runtimepath'.  In general, it will be safe to find out where the\nTabularMaps.vim plugin was installed, and place other files extending\nTabular.vim in the same directory as TabularMaps.vim.  For more information,\nand some suggested best practices, check out the |tabular-scripting| section.\n\nLastly, we'll approach the case where tabular cannot achieve your desired goal\njust by splitting lines appart, trimming whitespace, padding with whitespace,\nand rejoining the lines.  As an example, consider the multiple_spaces command\nfrom TabularMaps.vim.  The goal is to split using two or more spaces as a\nfield delimiter, and join fields back together, properly lined up, with only\ntwo spaces between the end of each field and the beginning of the next.\nUnfortunately, Tabular can't do this with only the commands we know so far:\n>\n  :Tabularize /  /\n<\nThe above function won't work, because it will consider \"a    b\" as 5 fields\ndelimited by two pairs of 2 spaces ( 'a', '  ', '', '  ', 'b' ) instead of as\n3 fields delimited by one set of 2 or more spaces ( 'a', '    ', 'b' ).\n>\n  :Tabularize /  \\+/\n<\nThe above function won't work either, because it will leave the delimiter as 4\nspaces when used against \"a    b\", meaning that we would fail at our goal of\ncollapsing everything down to two spaces between fields.  So, we need a new\ncommand to get around this:\n>\n  :AddTabularPipeline multiple_spaces / \\{2,}/\n    \\ map(a:lines, \"substitute(v:val, ' \\{2,}', '  ', 'g')\")\n    \\   | tabular#TabularizeStrings(a:lines, '  ', 'l0')\n<\nYeah.  I know it looks complicated.  Bear with me.  I probably will try to add\nin some shortcuts for this syntax, but this verbose will be guaranteed to\nalways work.\n\nYou should already recognize the name being assigned.  The next thing to\nhappen is / \\{2,}/ which is a pattern specifying which lines should\nautomatically be included in the range when no range is given.  Without this,\nthere would be no pattern to use for extending the range.  Everything after\nthat is a | separated list of expressions to be evaluated.  In the context in\nwhich they will be evaluated, a:lines will be set to a List of Strings\ncontaining the text of the lines being filtered as they procede through the\npipeline you've set up.  The \\ at the start of the lines are just vim's line\ncontinuation marker; you needn't worry much about them.  So, the first\nexpression in the pipeline transforms each line by replacing every instance of\n2 or more spaces with exactly two spaces.  The second command in the pipeline\nperforms the equivalent of \":Tabularize /  /l0\"; the only difference is that\nit is operating on a List of Strings rather than text in the buffer.  At the\nend of the pipeline, the Strings in the modified a:lines (or the return value\nof the last expression in the pipeline, if it returns a List) will replace the\nchosen range.\n\n==============================================================================\n3. Extending                                               *tabular-scripting*\n\nAs mentioned above, the most important consideration when extending Tabular\nwith new maps or commands is that your plugin must be loaded after Tabular.vim\nhas finished loading, and only if Tabular.vim has loaded successfully.  The\neasiest approach to making sure it loads after Tabular.vim is simply putting\nthe new file (we'll call it \"tabular_extra.vim\" as an example) into an\n\"after/plugin/\" directory in 'runtimepath', for instance:\n>\n  ~/.vim/after/plugin/tabular_extra.vim\n<\nThe default set of mappings, found in \"TabularMaps.vim\", is installed in\nthe after/plugin/ subdirectory of whatever directory Tabular was installed to.\n\nThe other important consideration is making sure that your commands are only\ncalled if Tabular.vim was actually loaded.  The easiest way to do this is by\nchecking for the existence of the :Tabularize command at the start of your\nplugin.  A short example plugin would look like this:\n>\n  \" after/plugin/my_tabular_commands.vim\n  \" Provides extra :Tabularize commands\n\n  if !exists(':Tabularize')\n    finish \" Give up here; the Tabular plugin musn't have been loaded\n  endif\n\n  \" Make line wrapping possible by resetting the 'cpo' option, first saving it\n  let s:save_cpo = &cpo\n  set cpo&vim\n\n  AddTabularPattern! asterisk /*/l1\n\n  AddTabularPipeline! remove_leading_spaces /^ /\n                  \\ map(a:lines, \"substitute(v:val, '^ *', '', '')\")\n\n  \" Restore the saved value of 'cpo'\n  let &cpo = s:save_cpo\n  unlet s:save_cpo\n<\n==============================================================================\nvim:tw=78:fo=tcq2:isk=!-~,^*,^\\|,^\\\":ts=8:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/tabular/plugin/Tabular.vim",
    "content": "\" Tabular:     Align columnar data using regex-designated column boundaries\n\" Maintainer:  Matthew Wozniski (godlygeek@gmail.com)\n\" Date:        Thu, 03 May 2012 20:49:32 -0400\n\" Version:     1.0\n\"\n\" Long Description:\n\" Sometimes, it's useful to line up text.  Naturally, it's nicer to have the\n\" computer do this for you, since aligning things by hand quickly becomes\n\" unpleasant.  While there are other plugins for aligning text, the ones I've\n\" tried are either impossibly difficult to understand and use, or too simplistic\n\" to handle complicated tasks.  This plugin aims to make the easy things easy\n\" and the hard things possible, without providing an unnecessarily obtuse\n\" interface.  It's still a work in progress, and criticisms are welcome.\n\"\n\" License:\n\" Copyright (c) 2012, Matthew J. Wozniski\n\" All rights reserved.\n\"\n\" Redistribution and use in source and binary forms, with or without\n\" modification, are permitted provided that the following conditions are met:\n\"     * Redistributions of source code must retain the above copyright notice,\n\"       this list of conditions and the following disclaimer.\n\"     * Redistributions in binary form must reproduce the above copyright\n\"       notice, this list of conditions and the following disclaimer in the\n\"       documentation and/or other materials provided with the distribution.\n\"     * The names of the contributors may not be used to endorse or promote\n\"       products derived from this software without specific prior written\n\"       permission.\n\"\n\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS\n\" OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN\n\" NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT, INDIRECT,\n\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n\" OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n\" LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n\" NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\" Abort if running in vi-compatible mode or the user doesn't want us.\nif &cp || exists('g:tabular_loaded')\n  if &cp && &verbose\n    echo \"Not loading Tabular in compatible mode.\"\n  endif\n  finish\nendif\n\nlet g:tabular_loaded = 1\n\n\" Stupid vimscript crap                                                   {{{1\nlet s:savecpo = &cpo\nset cpo&vim\n\n\" Private Things                                                          {{{1\n\n\" Dictionary of command name to command\nlet s:TabularCommands = {}\n\n\" Generate tab completion list for :Tabularize                            {{{2\n\" Return a list of commands that match the command line typed so far.\n\" NOTE: Tries to handle commands with spaces in the name, but Vim doesn't seem\n\"       to handle that terribly well... maybe I should give up on that.\nfunction! s:CompleteTabularizeCommand(argstart, cmdline, cursorpos)\n  let names = keys(s:TabularCommands)\n  if exists(\"b:TabularCommands\")\n    let names += keys(b:TabularCommands)\n  endif\n\n  let cmdstart = substitute(a:cmdline, '^\\s*\\S\\+\\s*', '', '')\n\n  return filter(names, 'v:val =~# ''^\\V'' . escape(cmdstart, ''\\'')')\nendfunction\n\n\" Choose the proper command map from the given command line               {{{2\n\" Returns [ command map, command line with leading <buffer> removed ]\nfunction! s:ChooseCommandMap(commandline)\n  let map = s:TabularCommands\n  let cmd = a:commandline\n\n  if cmd =~# '^<buffer>\\s\\+'\n    if !exists('b:TabularCommands')\n      let b:TabularCommands = {}\n    endif\n    let map = b:TabularCommands\n    let cmd = substitute(cmd, '^<buffer>\\s\\+', '', '')\n  endif\n\n  return [ map, cmd ]\nendfunction\n\n\" Parse '/pattern/format' into separate pattern and format parts.         {{{2\n\" If parsing fails, return [ '', '' ]\nfunction! s:ParsePattern(string)\n  if a:string[0] != '/'\n    return ['','']\n  endif\n\n  let pat = '\\\\\\@<!\\%(\\\\\\\\\\)\\{-}\\zs/' . tabular#ElementFormatPattern() . '*$'\n  let format = matchstr(a:string[1:-1], pat)\n  if !empty(format)\n    let format = format[1 : -1]\n    let pattern = a:string[1 : -len(format) - 2]\n  else\n    let pattern = a:string[1 : -1]\n  endif\n\n  return [pattern, format]\nendfunction\n\n\" Split apart a list of | separated expressions.                          {{{2\nfunction! s:SplitCommands(string)\n  if a:string =~ '^\\s*$'\n    return []\n  endif\n\n  let end = match(a:string, \"[\\\"'|]\")\n\n  \" Loop until we find a delimiting | or end-of-string\n  while end != -1 && (a:string[end] != '|' || a:string[end+1] == '|')\n    if a:string[end] == \"'\"\n      let end = match(a:string, \"'\", end+1) + 1\n      if end == 0\n        throw \"No matching end single quote\"\n      endif\n    elseif a:string[end] == '\"'\n      \" Find a \" preceded by an even number of \\ (or 0)\n      let pattern = '\\%(\\\\\\@<!\\%(\\\\\\\\\\)*\\)\\@<=\"'\n      let end = matchend(a:string, pattern, end+1) + 1\n      if end == 0\n        throw \"No matching end double quote\"\n      endif\n    else \" Found ||\n      let end += 2\n    endif\n\n    let end = match(a:string, \"[\\\"'|]\", end)\n  endwhile\n\n  if end == 0 || a:string[0 : end - (end > 0)] =~ '^\\s*$'\n    throw \"Empty element\"\n  endif\n\n  if end == -1\n    let rv = [ a:string ]\n  else\n    let rv = [ a:string[0 : end-1] ] + s:SplitCommands(a:string[end+1 : -1])\n  endif\n\n  return rv\nendfunction\n\n\" Public Things                                                           {{{1\n\n\" Command associating a command name with a simple pattern command        {{{2\n\" AddTabularPattern[!] [<buffer>] name /pattern[/format]\n\"\n\" If <buffer> is provided, the command will only be available in the current\n\" buffer, and will be used instead of any global command with the same name.\n\"\n\" If a command with the same name and scope already exists, it is an error,\n\" unless the ! is provided, in which case the existing command will be\n\" replaced.\n\"\n\" pattern is a regex describing the delimiter to be used.\n\"\n\" format describes the format pattern to be used.  The default will be used if\n\" none is provided.\ncom! -nargs=+ -bang AddTabularPattern\n   \\ call AddTabularPattern(<q-args>, <bang>0)\n\nfunction! AddTabularPattern(command, force)\n  try\n    let [ commandmap, rest ] = s:ChooseCommandMap(a:command)\n\n    let name = matchstr(rest, '.\\{-}\\ze\\s*/')\n    let pattern = substitute(rest, '.\\{-}\\s*\\ze/', '', '')\n\n    let [ pattern, format ] = s:ParsePattern(pattern)\n\n    if empty(name) || empty(pattern)\n      throw \"Invalid arguments!\"\n    endif\n\n    if !a:force && has_key(commandmap, name)\n      throw string(name) . \" is already defined, use ! to overwrite.\"\n    endif\n\n    let command = \"tabular#TabularizeStrings(a:lines, \" . string(pattern)\n\n    if !empty(format)\n      let command .=  \", \" . string(format)\n    endif\n\n    let command .= \")\"\n\n    let commandmap[name] = { 'pattern' : pattern, 'commands' : [ command ] }\n  catch\n    echohl ErrorMsg\n    echomsg \"AddTabularPattern: \" . v:exception\n    echohl None\n  endtry\nendfunction\n\n\" Command associating a command name with a pipeline of functions         {{{2\n\" AddTabularPipeline[!] [<buffer>] name /pattern/ func [ | func2 [ | func3 ] ]\n\"\n\" If <buffer> is provided, the command will only be available in the current\n\" buffer, and will be used instead of any global command with the same name.\n\"\n\" If a command with the same name and scope already exists, it is an error,\n\" unless the ! is provided, in which case the existing command will be\n\" replaced.\n\"\n\" pattern is a regex that will be used to determine which lines will be\n\" filtered.  If the cursor line doesn't match the pattern, using the command\n\" will be a no-op, otherwise the cursor and all contiguous lines matching the\n\" pattern will be filtered.\n\"\n\" Each 'func' argument represents a function to be called.  This function\n\" will have access to a:lines, a List containing one String per line being\n\" filtered.\ncom! -nargs=+ -bang AddTabularPipeline\n   \\ call AddTabularPipeline(<q-args>, <bang>0)\n\nfunction! AddTabularPipeline(command, force)\n  try\n    let [ commandmap, rest ] = s:ChooseCommandMap(a:command)\n\n    let name = matchstr(rest, '.\\{-}\\ze\\s*/')\n    let pattern = substitute(rest, '.\\{-}\\s*\\ze/', '', '')\n\n    let commands = matchstr(pattern, '^/.\\{-}\\\\\\@<!\\%(\\\\\\\\\\)\\{-}/\\zs.*')\n    let pattern = matchstr(pattern, '/\\zs.\\{-}\\\\\\@<!\\%(\\\\\\\\\\)\\{-}\\ze/')\n\n    if empty(name) || empty(pattern)\n      throw \"Invalid arguments!\"\n    endif\n\n    if !a:force && has_key(commandmap, name)\n      throw string(name) . \" is already defined, use ! to overwrite.\"\n    endif\n\n    let commandlist = s:SplitCommands(commands)\n\n    if empty(commandlist)\n      throw \"Must provide a list of functions!\"\n    endif\n\n    let commandmap[name] = { 'pattern' : pattern, 'commands' : commandlist }\n  catch\n    echohl ErrorMsg\n    echomsg \"AddTabularPipeline: \" . v:exception\n    echohl None\n  endtry\nendfunction\n\n\" Tabularize /pattern[/format]                                            {{{2\n\" Tabularize name\n\"\n\" Align text, either using the given pattern, or the command associated with\n\" the given name.\ncom! -nargs=* -range -complete=customlist,<SID>CompleteTabularizeCommand\n   \\ Tabularize <line1>,<line2>call Tabularize(<q-args>)\n\nfunction! Tabularize(command, ...) range\n  let piperange_opt = {}\n  if a:0\n    let piperange_opt = a:1\n  endif\n\n  if empty(a:command)\n    if !exists(\"s:last_tabularize_command\")\n      echohl ErrorMsg\n      echomsg \"Tabularize hasn't been called yet; no pattern/command to reuse!\"\n      echohl None\n      return\n    endif\n  else\n    let s:last_tabularize_command = a:command\n  endif\n\n  let command = s:last_tabularize_command\n\n  let range = a:firstline . ',' . a:lastline\n\n  try\n    let [ pattern, format ] = s:ParsePattern(command)\n\n    if !empty(pattern)\n      let cmd  = \"tabular#TabularizeStrings(a:lines, \" . string(pattern)\n\n      if !empty(format)\n        let cmd .= \",\" . string(format)\n      endif\n\n      let cmd .= \")\"\n\n      exe range . 'call tabular#PipeRangeWithOptions(pattern, [ cmd ], '\n                      \\ . 'piperange_opt)'\n    else\n      if exists('b:TabularCommands') && has_key(b:TabularCommands, command)\n        let usercmd = b:TabularCommands[command]\n      elseif has_key(s:TabularCommands, command)\n        let usercmd = s:TabularCommands[command]\n      else\n        throw \"Unrecognized command \" . string(command)\n      endif\n\n      exe range . 'call tabular#PipeRangeWithOptions(usercmd[\"pattern\"], '\n                      \\ . 'usercmd[\"commands\"], piperange_opt)'\n    endif\n  catch\n    echohl ErrorMsg\n    echomsg \"Tabularize: \" . v:exception\n    echohl None\n    return\n  endtry\nendfunction\n\n\" GTabularize /pattern[/format]                                           {{{2\n\" GTabularize name\n\"\n\" Align text on only matching lines, either using the given pattern, or the\n\" command associated with the given name.  Mnemonically, this is similar to\n\" the :global command, which takes some action on all rows matching a pattern\n\" in a range.  This command is different from normal :Tabularize in 3 ways:\n\"   1) If a line in the range does not match the pattern, it will be left\n\"      unchanged, and not in any way affect the outcome of other lines in the\n\"      range (at least, normally - but Pipelines can and will still look at\n\"      non-matching rows unless they are specifically written to be aware of\n\"      tabular#DoGTabularize() and handle it appropriately).\n\"   2) No automatic range determination - :Tabularize automatically expands\n\"      a single-line range (or a call with no range) to include all adjacent\n\"      matching lines.  That behavior does not make sense for this command.\n\"   3) If called without a range, it will act on all lines in the buffer (like\n\"      :global) rather than only a single line\ncom! -nargs=* -range=% -complete=customlist,<SID>CompleteTabularizeCommand\n   \\ GTabularize <line1>,<line2>\n   \\ call Tabularize(<q-args>, { 'mode': 'GTabularize' } )\n\n\" Stupid vimscript crap, part 2                                           {{{1\nlet &cpo = s:savecpo\nunlet s:savecpo\n\n\" vim:set sw=2 sts=2 fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/targets.vim/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Christian Wellenbrock\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": ".vim/bundle/targets.vim/README.md",
    "content": "## Introduction\n\n**Targets.vim** is a Vim plugin that adds various [text objects][textobjects]\nto give you more targets to [operate][operator] on.  It expands on the idea of\nsimple commands like `di'` (delete inside the single quotes around the cursor)\nto give you more opportunities to craft powerful commands that can be\n[repeated][repeat] reliably. One major goal is to handle all corner cases\ncorrectly.\n\n## Examples\n\nThe following examples are displayed as three lines each. The top line denotes\ncursor positions from where the presented command works. The middle line shows\nthe contents of the example line that we're working on. The last line shows the\npart of the line that the command will operate on.\n\nTo change the text in the next pair of parentheses, use the `cin)` command\n\n```\ncursor position │    .....................\nbuffer line     │    This is example text (with a pair of parentheses).\nselection       │                          └───────── cin) ─────────┘\n```\n\nTo delete the item in a comma separated list under the cursor, use `da,`\n\n```\ncursor position │                                  .........\nbuffer line     │    Shopping list: oranges, apples, bananas, tomatoes\nselection       │                                  └─ da, ─┘\n```\n\nNotice how the selection includes exactly one of the surrounding commas to\nleave a proper comma separated list behind.\n\n## Overview\n\nWe distinguish between three kinds of text objects that behave slightly\ndifferently:\n\n- Pair text objects\n- Quote text objects\n- Separator text objects\n\n## Pair Text Objects\n\nThese text objects are similar to the built in text objects such as `i)`.\nSupported trigger characters:\n\n- `(` `)` `b` (work on parentheses)\n- `{` `}` `B` (work on curly braces)\n- `[` `]` `r` (work on square brackets)\n- `<` `>` `a` (work on angle brackets)\n- `t` (work on tags)\n\nWe borrowed the aliases `r` and `a` from the [`vim-surround` plugin][surround].\n\nThe following examples will use parentheses, but they all work for each listed\ntrigger character accordingly.\n\nPair text objects work over multiple lines.\n\n#### In Pair\n\n`i( i) ib i{ i} iB i[ i] ir i< i> ia it`\n\n- Select inside of pair characters.\n- This overrides Vim's default text object to allow seeking for the next pair\n  in the current line to the right or left when the cursor is not inside a\n  pair. This behavior is similar to Vim's seeking behavior of `di'` when not\n  inside of quotes, but it works both ways. See below for details about\n  seeking.\n- Accepts a count to select multiple blocks.\n\n```\n      ............\na ( b ( cccccccc ) d ) e\n   │   └── i) ──┘   │\n   └───── 2i) ──────┘\n```\n\n#### A Pair\n\n`a( a) ab a{ a} aB a[ a] ar a< a> aa at`\n\n- Select a pair including pair characters.\n- Overrides Vim's default text object to allow seeking.\n- Accepts a count.\n\n```\n      ............\na ( b ( cccccccc ) d ) e\n  │   └─── a) ───┘   │\n  └────── 2a) ───────┘\n```\n\n#### Inside Pair\n\n`I( I) Ib I{ I} IB I[ I] Ir I< I> Ia It`\n\n- Select contents of pair characters.\n- Like inside of parentheses, but exclude whitespace at both ends. Useful for\n  changing contents while preserving spacing.\n- Supports seeking.\n- Accepts a count.\n\n```\n      ............\na ( b ( cccccccc ) d ) e\n    │   └─ I) ─┘   │\n    └──── 2I) ─────┘\n```\n\n#### Around Pair\n\n`A( A) Ab A{ A} AB A[ A] Ar A< A> Aa At`\n\n- Select around pair characters.\n- Like a pair, but include whitespace at one side of the pair. Prefers to\n  select trailing whitespace, falls back to select leading whitespace.\n- Supports seeking.\n- Accepts a count.\n\n```\n      ............\na ( b ( cccccccc ) d ) e\n  │   └─── A) ────┘   │\n  └────── 2A) ────────┘\n```\n\n### Next and Last Pair\n\n`in( an( In( An( il( al( Il( Al( ...`\n\nWork directly on distant pairs without moving there separately.\n\nAll the above pair text objects can be shifted to the next pair by\nincluding the letter `n`. The command `in)` selects inside of the next\npair. Use the letter `l` instead to work on the previous (last) pair. Uses\na count to skip multiple pairs. Skipping works over multiple lines.\n\nSee our [Cheat Sheet][cheatsheet] for two charts summarizing all pair mappings.\n\n### Pair Seek\n\nIf any of the normal pair commands (not containing `n` or `l`) is executed when\nthe cursor is not positioned inside a pair, it seeks for pairs before or after\nthe cursor by searching for the appropriate delimiter on the current line. This\nis similar to using the explicit version containing `n` or `l`, but in only\nseeks on the current line.\n\n## Quote Text Objects\n\nThese text objects are similar to the built in text objects such as `i'`.\nSupported trigger characters:\n\n- `'`     (work on single quotes)\n- `\"`     (work on double quotes)\n- `` ` `` (work on back ticks)\n\nThe following examples will use single quotes, but they all work for each\nmentioned separator character accordingly.\n\n\nQuote text objects work over multiple lines.\n\nWhen the cursor is positioned on a quotation mark, the quote text objects count\nthe numbers of quotation marks from the beginning of the line to choose the\nproperly quoted text to the left or right of the cursor.\n\n#### In Quote\n\n`` i' i\" i` ``\n\n- Select inside quote.\n- This overrides Vim's default text object to allow seeking in both directions.\n  See below for details about seeking.\n\n```\n  ............\na ' bbbbbbbb ' c ' d\n   └── i' ──┘\n```\n\n#### A Quote\n\n``a' a\" a` ``\n\n- Select a quote.\n- This overrides Vim's default text object to support seeking.\n- Includes surrounding whitespace in one direction, exactly like Vim's built in\n  quote text objects.\n\n```\n  ............\na ' bbbbbbbb ' c ' d\n  └─── a' ────┘\n```\n\n#### Inside Quote\n\n``I' I\" I` ``\n\n- Select contents of a quote.\n- Like inside quote, but exclude whitespace at both ends. Useful for changing\n  contents while preserving spacing.\n- Supports seeking.\n\n```\n  ............\na ' bbbbbbbb ' c ' d\n    └─ I' ─┘\n```\n\n### Next and Last Quote\n\n`in' In' An' il' Il' Al' iN' IN' AN' iL' IL' AL' ...`\n\nWork directly on distant quotes without moving there separately.\n\nAll the above pair text objects can be shifted to the next quote by\nincluding the letter `n`. The command `in'` selects inside of the next\nsingle quotes. Use the letter `l` instead to work on the previous (last)\nquote. Uses a count to skip multiple quotation characters.\n\nUse uppercase `N` and `L` to jump from within one quote into the next\nproper quote, instead of into the pseudo quote in between. (Using `N`\ninstead of `n` is actually just doubling the count to achieve this.)\n\nSee our [Cheat Sheet][cheatsheet] for a chart summarizing all quote mappings.\n\n### Quote Seek\n\nIf any of the normal quote commands (not containing `n`, `l`, `N` or `L`) is\nexecuted when the cursor is not positioned inside a quote, it seeks for quotes\nbefore or after the cursor by searching for the appropriate delimiter on the\ncurrent line. This is similar to using the explicit version containing `n` or\n`l`.\n\n## Separator Text Objects\n\nThese text objects are based on single separator characters like the comma in\none of our examples above. The text between two instances of the separator\ncharacter can be operated on with these targets.\n\nSupported separators:\n\n```\n, . ; : + - = ~ _ * / | \\ & ~\n```\n\nThe following examples will use commas, but they all work for each listed\nseparator character accordingly.\n\nSeparator text objects work over multiple lines.\n\n#### In Separator\n\n`i, i. i; i: i+ i- i= i~ i_ i* i/ i| i\\ i&`\n\n- Select inside separators. Similar to in quote.\n- Supports seeking.\n\n```\n      ...........\na , b , cccccccc , d , e\n       └── i, ──┘\n```\n\n#### A Separator\n\n`a, a. a; a: a+ a- a= a~ a_ a* a/ a| a\\ a&`\n\n- Select an item in a list separated by the separator character.\n- Includes the leading separator, but excludes the trailing one. This leaves\n  a proper list separated by the separator character after deletion. See the\n  examples above.\n- Supports seeking.\n\n```\n      ...........\na , b , cccccccc , d , e\n      └─── a, ──┘\n```\n\n#### Inside Separator\n\n`I, I. I; I: I+ I- I= I~ I_ I* I/ I| I\\ I&`\n\n- Select contents between separators.\n- Like inside separators, but exclude whitespace at both ends. Useful for\n  changing contents while preserving spacing.\n- Supports seeking.\n\n```\n      ...........\na , b , cccccccc , d , e\n        └─ I, ─┘\n```\n\n#### Around Separator\n\n`A, A. A; A: A+ A- A= A~ A_ A* A/ A| A\\ A&`\n\n- Select around a pair of separators.\n- Includes both separators and a surrounding whitespace, similar to `a'` and\n  `A(`.\n- Supports seeking.\n\n```\n      ...........\na , b , cccccccc , d , e\n      └─── A, ────┘\n```\n\n### Next and Last Separator\n\n`in, an, In, An, il, al, Il, Al, iN, aN, IN, AN, iL, aL, IL, AL, ...`\n\nWork directly on distant separators without moving there separately.\n\nAll the above separator text objects can be shifted to the next separator by\nincluding the letter `n`. The command `in,` selects inside of the next commas.\nUse the letter `l` instead to work on the previous (last) separators. Uses the\ncount to skip multiple separator characters.\n\nUse uppercase `N` and `L` to jump from within one pair of separators into\nthe next distinct pair, instead of into the adjacent one. (Using `N`\ninstead of `n` is actually just doubling the count to achieve this.)\n\nSee our [Cheat Sheet][cheatsheet] for a chart summarizing all separator mappings.\n\n### Separator Seek\n\nLike quote seeking. If any of the normal separator commands (not\ncontaining `n` or `l`) is executed when the cursor is not positioned inside a\npair of separators, it seeks for the separator before or after the cursor.\nThis is similar to using the explicit version containing `n` or `l`.\n\n## Installation\n\nUse your favorite plugin manager.\n\n- [NeoBundle][neobundle]\n\n    ```vim\n    NeoBundle 'wellle/targets.vim'\n    ```\n\n- [Vundle][vundle]\n\n    ```vim\n    Bundle 'wellle/targets.vim'\n    ```\n\n- [Pathogen][pathogen]\n\n    ```sh\n    git clone git://github.com/wellle/targets.vim.git ~/.vim/bundle/targets.vim\n    ```\n\n## Settings\n\nPut these variables into your vimrc to customize the mappings described above.\nThe provided examples also indicate the default values.\n\nAvailable options:\n\n```vim\ng:targets_aiAI\ng:targets_nlNL\ng:targets_pairs\ng:targets_quotes\ng:targets_separators\n```\n\n### g:targets_aiAI\n\nDefault:\n\n```vim\nlet g:targets_aiAI = 'aiAI'\n```\n\nControls the normal mode operator mode maps that get created for In Pair (`i`),\nA Pair (`a`), Inside Pair (`I`), and Around Pair (`A`). Required to be a 4\ncharacter long list. Use a space to deactivate a mode.\n\n### g:targets_nlNL\n\nDefault:\n\n```vim\nlet g:targets_nlNL = 'nlNL'\n```\n\nControls the keys used in maps for seeking next and last text objects. For\nexample, if you don't wish to use the `N` and `L` seeks, and instead wish for\n`n` to always search for the next object and `N` to search for the last, you\ncould set:\n\n```vim\nlet g:targets_nlNL = 'nN  '\n```\n\nNote that two extra spaces are still required on the end, indicating you wish\nto disable the default functionality of `N` and `L`. Required to be a 4\ncharacter long list.\n\n### g:targets_pairs\n\nDefault:\n\n```vim\nlet g:targets_pairs = '()b {}B []r <>a'\n```\n\nDefines the space separated list of pair objects you wish to use, along with\noptional one letter aliases for them.\n\n### g:targets_quotes\n\nDefault:\n\n```vim\nlet g:targets_quotes = '\" '' `'\n```\n\nDefines the space separated list of quoting objects you wish to use. Note that\nyou have to escape the single quote by doubling it. Quote objects can\noptionally be followed by a single one letter alias. For example, to set `d`\nas an alias for double quotes, allowing such commands as `cid` to be\nequivalent to `ci\"`, you could define:\n\n```vim\nlet g:targets_quotes = '\"d '' `'\n```\n\n### g:targets_separators\n\nDefault:\n\n```vim\nlet g:targets_separators = ', . ; : + - = ~ _ * / | \\ &'\n```\n\nDefines the space separated list of separator objects you wish to use. Like\nquote objects, separator objects can optionally be followed by a single one\nletter alias. To set `c` as an alias for comma, allowing such commands as\n`dic` to be equivalent to `di,`, you could define:\n\n```vim\nlet g:targets_separators = ',c . ; : + - = ~ _ * / | \\ &'\n```\n\n## Notes\n\n- [Repeating an operator-pending mapping forgets its last count.][repeatcount]\n    Works since Vim 7.4.160\n\n## Issues\n\n- [Empty matches can't be selected because it is not possible to visually select\n  zero-character ranges.][emptyrange]\n- Forcing to motion to work linewise by inserting `V` in `dVan(` doesn't work\n  for operator-pending mappings. [See `:h o_v`][o_v].\n- Report issues or submit pull requests to\n  [github.com/wellle/targets.vim][targets].\n\n## Todos\n\nCreate more mappings to support commands like `danw` or `danp` to delete the\nnext word or paragraph.\n\n[cheatsheet]: cheatsheet.md\n[textobjects]: http://vimdoc.sourceforge.net/htmldoc/motion.html#text-objects\n[operator]: http://vimdoc.sourceforge.net/htmldoc/motion.html#operator\n[repeat]: http://vimdoc.sourceforge.net/htmldoc/repeat.html#single-repeat\n[surround]: https://github.com/tpope/vim-surround\n[neobundle]: https://github.com/Shougo/neobundle.vim\n[vundle]: https://github.com/gmarik/vundle\n[pathogen]: https://github.com/tpope/vim-pathogen\n[repeatcount]: https://groups.google.com/forum/?fromgroups#!topic/vim_dev/G4SSgcRVN7g\n[emptyrange]: https://groups.google.com/forum/#!topic/vim_use/qialxUwdcMc\n[targets]: https://github.com/wellle/targets.vim\n[o_v]: http://vimdoc.sourceforge.net/htmldoc/motion.html#o_v\n"
  },
  {
    "path": ".vim/bundle/targets.vim/autoload/targets.vim",
    "content": "\" targets.vim Provides additional text objects\n\" Author:  Christian Wellenbrock <christian.wellenbrock@gmail.com>\n\" License: MIT license\n\" Updated: 2014-04-11\n\" Version: 0.1.4\n\nlet s:save_cpoptions = &cpoptions\nset cpo&vim\n\n\" visually select some text for the given delimiters and matchers\n\" `matchers` is a list of functions that gets executed in order\n\" it consists of optional position modifiers, followed by a match selector,\n\" followed by optional selection modifiers\nfunction! targets#omap(delimiters, matchers)\n    call s:init(a:delimiters, a:matchers, v:count1)\n    call s:findMatch(a:matchers)\n    call s:handleMatch()\n    call s:clearCommandLine()\n    call s:cleanUp()\nendfunction\n\n\" like targets#omap, but don't clear the command line\nfunction! targets#xmap(delimiters, matchers)\n    call targets#xmapCount(a:delimiters, a:matchers, v:count1)\nendfunction\n\n\" like targets#xmap, but inject count, triggered from targets#xmapExpr\nfunction! targets#xmapCount(delimiters, matchers, count)\n    call s:init(a:delimiters, a:matchers, a:count)\n    call s:findMatch(a:matchers)\n    call s:handleMatch()\n    call s:saveState()\n    call s:cleanUp()\nendfunction\n\n\" called on `vA` and `vI` to start visual mappings like `vAn,`\n\" we use it like this to still allow to append after visually selected blocks\nfunction! targets#uppercaseXmap(trigger)\n    \" only supported for character wise visual mode\n    if mode() !=# 'v'\n        return a:trigger\n    endif\n\n    \" read characters like `n` and `,` for `vAn,`\n    let chars = nr2char(getchar())\n    if chars =~? '^[nl]'\n        let chars .= nr2char(getchar())\n    endif\n\n    \" get associated arguments for targets#xmapCount\n    let arguments = get(g:targets#mapArgs, a:trigger . chars, '')\n    if arguments == ''\n        return '\\<Esc>'\n    endif\n\n    \" exit visual mode and call targets#xmapCount\n    return \"\\<Esc>:\\<C-U>call targets#xmapCount(\" . arguments . \", \" . v:count1 . \")\\<CR>\"\nendfunction\n\n\" initialize script local variables for the current matching\nfunction! s:init(delimiters, matchers, count)\n    let [s:delimiters, s:matchers, s:count] = [a:delimiters, a:matchers,  a:count]\n    let [s:sl, s:sc, s:el, s:ec] = [0, 0, 0, 0]\n    let s:oldpos = getpos('.')\n    let s:failed = 0\n\n    let s:opening = escape(a:delimiters[0], '\".~\\')\n    if len(a:delimiters) == 2\n        let s:closing = escape(a:delimiters[1], '\".~\\')\n    else\n        let s:closing = s:opening\n    endif\nendfunction\n\n\" remember last selection, delimiters and matchers\nfunction s:saveState()\n    let [s:lsl, s:lsc, s:lel, s:lec] = [s:sl, s:sc, s:el, s:ec]\n    let [s:ldelimiters, s:lmatchers] = [s:delimiters, s:matchers]\nendfunction\n\n\" clean up script variables after match\nfunction! s:cleanUp()\n    unlet s:delimiters s:matchers s:count\n    unlet s:sl s:sc s:el s:ec\n    unlet s:oldpos\n    unlet s:failed\n    unlet s:opening s:closing\nendfunction\n\n\" clear the commandline to hide targets function calls\nfunction! s:clearCommandLine()\n    echo\nendfunction\n\n\" try to find match and return 1 in case of success\nfunction! s:findMatch(matchers)\n    for matcher in split(a:matchers)\n        let Matcher = function('s:' . matcher)\n        call Matcher()\n        if s:failed\n            break\n        endif\n    endfor\n    unlet! Matcher\nendfunction\n\n\" handle the match by either selecting or aborting it\nfunction! s:handleMatch()\n    if s:failed || s:sl == 0 || s:el == 0\n        call s:abortMatch()\n    elseif s:sl < s:el\n        call s:selectMatch()\n    elseif s:sl > s:el\n        call s:abortMatch()\n    elseif s:sc == s:ec + 1\n        call s:handleEmptyMatch()\n    elseif s:sc > s:ec\n        call s:abortMatch()\n    else\n        call s:selectMatch()\n    endif\nendfunction\n\n\" select a proper match\nfunction! s:selectMatch()\n    \" add old position to jump list\n    call setpos('.', s:oldpos)\n    normal! m'\n\n    call cursor(s:sl, s:sc)\n    silent! normal! v\n    call cursor(s:el, s:ec)\nendfunction\n\n\" empty matches can't visually be selected\n\" most operators would like to move to the end delimiter\n\" for change or delete, insert temporary character that will be operated on\nfunction! s:handleEmptyMatch()\n    if v:operator !~# \"^[cd]$\"\n        return s:abortMatch()\n    endif\n\n    \" move cursor to delimiter after zero width match\n    call cursor(s:sl, s:sc)\n    \" insert single space and visually select it\n    silent! execute \"normal! i \\<Esc>v\"\nendfunction\n\n\" abort when no match was found\nfunction! s:abortMatch()\n    call setpos('.', s:oldpos)\n    \" get into normal mode and beep\n    call feedkeys(\"\\<C-\\>\\<C-N>\\<Esc>\", 'n')\n    \" undo partial command\n    call s:triggerUndo()\nendfunction\n\n\" feed keys to call undo after aborted operation and clear the command line\nfunction! s:triggerUndo()\n    if exists(\"*undotree\")\n        let undoseq = undotree().seq_cur\n        call feedkeys(\":call targets#undo(\" . undoseq . \")\\<CR>:echo\\<CR>\", 'n')\n    endif\nendfunction\n\n\" undo last operation if it created a new undo position\nfunction! targets#undo(lastseq)\n    if undotree().seq_cur > a:lastseq\n        silent! execute \"normal! u\"\n    endif\nendfunction\n\n\" mark current matching run as failed\nfunction! s:setFailed()\n    let s:failed = 1\nendfunction\n\n\" position modifiers\n\" ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\n\n\" move the cursor inside of a proper quote when positioned on a delimiter\n\" (move one character to the left when over an odd number of quotation mark)\n\" the number of delimiters to the left of the cursor is counted to decide\n\" if this is an opening or closing quote delimiter\n\" in   │ . │  . │ . │  .\n\" line │ ' │  ' │ ' │  '\n\" out  │ . │ .  │ . │ .\nfunction! s:quote()\n    if getline('.')[col('.')-1] != s:delimiters[0]\n        return\n    endif\n\n    let oldpos = getpos('.')\n    let closing = 1\n    let line = 1\n    while line != 0\n        let line = searchpos(s:opening, 'bW', line('.'))[0]\n        let closing = !closing\n    endwhile\n    call setpos('.', oldpos)\n    if closing \" cursor is on closing delimiter\n        silent! normal! h\n    endif\n    unlet oldpos closing line\nendfunction\n\n\" find `count` next delimiter (multi line)\n\" in   │     ...\n\" line │  '  '  '  '\n\" out  │        1  2\nfunction! s:next()\n    for _ in range(s:count)\n        call searchpos(s:opening, 'W')\n    endfor\n    let s:count = 1\nendfunction\n\n\" find `count` last delimiter, move in front of it (multi line)\n\" in   │     ...\n\" line │  '  '  '  '\n\" out  │ 2  1\nfunction! s:last()\n    \" only the first delimiter can match at current position\n    call searchpos(s:closing, 'bcW')\n    for _ in range(s:count - 1)\n        call searchpos(s:closing, 'bW')\n    endfor\n    let s:count = 1\n    silent! normal! h\nendfunction\n\n\" find `count` next opening delimiter (multi line)\n\" in   │ ....\n\" line │ ( ) ( ) ( ( ) ) ( )\n\" out  │     1   2 3     4\nfunction! s:nextp(...)\n    if a:0 == 1\n        let opening = a:1\n    else\n        let opening = s:opening\n    endif\n\n    \" find `count` next opening\n    for _ in range(s:count)\n        let line = searchpos(opening, 'W')[0]\n        if line == 0 \" not enough found\n            return s:setFailed()\n        endif\n    endfor\n    let s:count = 1\nendfunction\n\n\" find `count` last closing delimiter (multi line)\n\" in   │               ....\n\" line │ ( ) ( ) ( ( ) ) ( )\n\" out  │   4   3     2 1\nfunction! s:lastp(...)\n    if a:0 == 1\n        let closing = a:1\n    else\n        let closing = s:closing\n    endif\n\n    \" find `count` last closing\n    for _ in range(s:count)\n        let line = searchpos(closing, 'bW')[0]\n        if line == 0 \" not enough found\n            return s:setFailed()\n        endif\n    endfor\n    let s:count = 1\nendfunction\n\n\" find `count` next opening tag delimiter (multi line)\n\" in   │ .........\n\" line │ <a> </a> <b> </b> <c> <d> </d> </c> <e> </e>\n\" out  │          1        2   3             4\nfunction! s:nextt()\n    return s:nextp('<\\a')\nendfunction\n\n\" find `count` last closing tag delimiter (multi line)\n\" in   │                                    .........\n\" line │ <a> </a> <b> </b> <c> <d> </d> </c> <e> </e>\n\" out  │     4        3            2    1\nfunction! s:lastt()\n    return s:lastp('</\\a')\nendfunction\n\n\" match selectors\n\" ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\n\n\" select pair of delimiters around cursor (multi line, no seeking)\n\" select to the right if cursor is on a delimiter\n\" cursor  │   ....\n\" line    │ ' ' b ' '\n\" matcher │   └───┘\nfunction! s:select()\n    let [s:sl, s:sc] = searchpos(s:opening, 'bcW')\n    if s:sc == 0 \" no match to the left\n        return s:setFailed()\n    endif\n    let [s:el, s:ec] = searchpos(s:closing, 'W')\n    if s:ec == 0 \" no match to the right\n        return s:setFailed()\n    endif\nendfunction\n\n\" select pair of delimiters around cursor (multi line, no seeking)\nfunction! s:seekselect()\n    let [rl, rc] = searchpos(s:opening, 'W', line('.'))\n    if rl > 0 \" delim r found after cursor in line\n        let [s:sl, s:sc] = searchpos(s:opening, 'bW', line('.'))\n        if s:sl > 0 \" delim found before r in line\n            let [s:el, s:ec] = [rl, rc]\n            return\n        endif\n        \" no delim before cursor in line\n        let [s:el, s:ec] = searchpos(s:opening, 'W', line('.'))\n        if s:el > 0 \" delim found after r in line\n            let [s:sl, s:sc] = [rl, rc]\n            return\n        endif\n        \" no delim found after r in line\n        let [s:sl, s:sc] = searchpos(s:opening, 'bW')\n        if s:sl > 0 \" delim found before r\n            let [s:el, s:ec] = [rl, rc]\n            return\n        endif\n        \" no delim found before r\n        let [s:el, s:ec] = searchpos(s:opening, 'W')\n        if s:el > 0 \" delim found after r\n            let [s:sl, s:sc] = [rl, rc]\n            return\n        endif\n        \" no delim found after r\n        return s:setFailed()\n    endif\n\n    \" no delim found after cursor in line\n    let [ll, lc] = searchpos(s:opening, 'bcW', line('.'))\n    if ll > 0 \" delim l found before cursor in line\n        let [s:sl, s:sc] = searchpos(s:opening, 'bW', line('.'))\n        if s:sl > 0 \" delim found before l in line\n            let [s:el, s:ec] = [ll, lc]\n            return\n        endif\n        \" no delim found before l in line\n        let [s:el, s:ec] = searchpos(s:opening, 'W')\n        if s:el > 0 \" delim found after l\n            let [s:sl, s:sc] = [ll, lc]\n            return\n        endif\n        \" no delim found after l\n        let [s:sl, s:sc] = searchpos(s:opening, 'bW')\n        if s:sl > 0 \" delim found before l\n            let [s:el, s:ec] = [ll, lc]\n            return\n        endif\n        \" no delim found before l\n        return s:setFailed()\n    endif\n\n    \" no delim found before cursor in line\n    let [rl, rc] = searchpos(s:opening, 'W')\n    if rl > 0 \" delim r found after cursor\n        let [s:sl, s:sc] = searchpos(s:opening, 'bW')\n        if s:sl > 0 \" delim found before r\n            let [s:el, s:ec] = [rl, rc]\n            return\n        endif\n        \" no delim found before r\n        let [s:el, s:ec] = searchpos(s:opening, 'W')\n        if s:el > 0 \" delim found after r\n            let [s:sl, s:sc] = [rl, rc]\n            return\n        endif\n        \" no delim found after r\n        return s:setFailed()\n    endif\n\n    \" no delim found after cursor\n    let [s:el, s:ec] = searchpos(s:opening, 'bW')\n    let [s:sl, s:sc] = searchpos(s:opening, 'bW')\n    if s:sl > 0 && s:el > 0 \" match found before cursor\n        return\n    endif\n    return s:setFailed()\nendfunction\n\n\" pair matcher (works across multiple lines, no seeking)\n\" cursor   │   .....\n\" line     │ ( ( a ) )\n\" modifier │ │ └─1─┘ │\n\"          │ └── 2 ──┘\nfunction! s:selectp()\n    \" try to select pair\n    silent! execute 'normal! va' . s:opening\n    let [s:el, s:ec] = getpos('.')[1:2]\n    silent! normal! o\n    let [s:sl, s:sc] = getpos('.')[1:2]\n    silent! normal! v\n\n    if s:sc == s:ec && s:sl == s:el\n        return s:setFailed() \" no match found\n    endif\nendfunction\n\n\" pair matcher (works across multiple lines, supports seeking)\nfunction! s:seekselectp(...)\n    if a:0 == 3\n        let [ opening, closing, trigger ] = [ a:1, a:2, a:3 ]\n    else\n        let [ opening, closing, trigger ] = [ s:opening, s:closing, s:closing ]\n    endif\n\n    \" try to select around cursor\n    silent! execute 'normal! v' . s:count . 'a' . trigger\n    let [s:el, s:ec] = getpos('.')[1:2]\n    silent! normal! o\n    let [s:sl, s:sc] = getpos('.')[1:2]\n    silent! normal! v\n\n    if s:sc != s:ec || s:sl != s:el\n        \" found target around cursor\n        let s:count = 1\n        return\n    endif\n\n    if s:count > 1\n        \" don't seek when count was given\n        return s:setFailed()\n    endif\n    let s:count = 1\n\n    let [s:sl, s:sc] = searchpos(opening, 'W', line('.'))\n    if s:sc > 0 \" found opening to the right in line\n        return s:selectp()\n    endif\n\n    let [s:sl, s:sc] = searchpos(closing, 'Wb', line('.'))\n    if s:sc > 0 \" found closing to the left in line\n        return s:selectp()\n    endif\n\n    let [s:sl, s:sc] = searchpos(opening, 'W')\n    if s:sc > 0 \" found opening to the right\n        return s:selectp()\n    endif\n\n    let [s:sl, s:sc] = searchpos(closing, 'Wb')\n    if s:sc > 0 \" found closing to the left\n        return s:selectp()\n    endif\n\n    return s:setFailed() \" no match found\nendfunction\n\n\" tag pair matcher (works across multiple lines, supports seeking)\nfunction! s:seekselectt()\n    return s:seekselectp('<\\a', '</\\a', 't')\nendfunction\n\n\" selects the current cursor position (useful to test modifiers)\nfunction! s:position()\n    let [s:sl, s:sc] = getpos('.')[1:2]\n    let [s:el, s:ec] = [s:sl, s:sc]\nendfunction\n\n\" selection modifiers\n\" ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\n\n\" drop delimiters left and right\n\" in   │   ┌─────┐\n\" line │ a .  b  . c\n\" out  │    └───┘\nfunction! s:drop()\n    call cursor(s:sl, s:sc)\n    silent! execute \"normal! 1 \"\n    let [s:sl, s:sc] = getpos('.')[1:2]\n    call cursor(s:el, s:ec)\n    silent! execute \"normal! \\<BS>\"\n    let [s:el, s:ec] = getpos('.')[1:2]\nendfunction\n\n\" drop right delimiter\n\" in   │   ┌─────┐\n\" line │ a . b c . d\n\" out  │   └────┘\nfunction! s:dropr()\n    let s:ec -= 1\nendfunction\n\n\" drop tag delimiters left and right\n\" in   │   ┌──────────┐\n\" line │ a <b>  c  </b> c\n\" out  │      └───┘\nfunction! s:dropt()\n    call cursor(s:sl, s:sc)\n    call searchpos('>', 'W')\n    silent! execute \"normal! 1 \"\n    let [s:sl, s:sc] = getpos('.')[1:2]\n    call cursor(s:el, s:ec)\n    call searchpos('<', 'bW')\n    silent! execute \"normal! \\<BS>\"\n    let [s:el, s:ec] = getpos('.')[1:2]\nendfunction\n\n\" drop delimters and whitespace left and right\n\" fall back to drop when only whitespace is inside\n\" in   │   ┌─────┐   │   ┌──┐\n\" line │ a . b c . d │ a .  . d\n\" out  │     └─┘     │    └┘\nfunction! s:shrink()\n    call cursor(s:el, s:ec)\n    let [s:el, s:ec] = searchpos('\\S', 'bW', line('.'))\n    if s:ec <= s:sc\n        \" fall back to drop when there's only whitespace in between\n        return s:drop()\n    endif\n    call cursor(s:sl, s:sc)\n    let [s:sl, s:sc] = searchpos('\\S', 'W', line('.'))\nendfunction\n\n\" expand selection by some whitespace\n\" prefer to expand to the right, don't expand when there is none\n\" in   │   ┌───┐   │   ┌───┐  │  ┌───┐  │ ┌───┐\n\" line │ a . b . c │ a . b .c │ a. c .c │ . a .c\n\" out  │   └────┘  │  └────┘  │  └───┘  │└────┘\nfunction! s:expand()\n    call cursor(s:el, s:ec)\n    let [line, column] = searchpos('\\S\\|$', 'W', line('.'))\n    if line > 0 && column-1 > s:ec\n        \" non whitespace or EOL after trailing whitespace found\n        let s:el = line\n        let s:ec = column-1\n        unlet line column\n        return\n    endif\n    call cursor(s:sl, s:sc)\n    let [line, column] = searchpos('\\S', 'bW', line('.'))\n    if line > 0\n        \" non whitespace before leading whitespace found\n        let s:sl = line\n        let s:sc = column+1\n        unlet line column\n        return\n    endif\n    unlet line column\n    \" include all leading whitespace from BOL\n    let s:sc = 1\nendfunction\n\n\" grows selection on repeated invocations by increasing s:count\nfunction! s:grow()\n    if !exists('s:ldelimiters') \" no previous invocation\n        return\n    endif\n    if [s:ldelimiters, s:lmatchers] != [s:delimiters, s:matchers] \" different invocation\n        return\n    endif\n    if getpos(\"'<\")[1:2] != [s:lsl, s:lsc] \" selection start changed\n        return\n    endif\n    if getpos(\"'>\")[1:2] != [s:lel, s:lec] \" selection end changed\n        return\n    endif\n\n    \" increase s:count to grow selection\n    let s:count = s:count + 1\nendfunction\n\n\" doubles the count (used for `iN'`)\nfunction! s:double()\n    let s:count = s:count * 2\nendfunction\n\nlet &cpoptions = s:save_cpoptions\nunlet s:save_cpoptions\n"
  },
  {
    "path": ".vim/bundle/targets.vim/cheatsheet.md",
    "content": "## Pair mappings\n\nAvailable mappings\n\n     i(  i)  ib  i{  i}  iB  i[  i]  ir  i<  i>  ia it\n     a(  a)  ab  a{  a}  aB  a[  a]  ar  a<  a>  aa at\n     I(  I)  Ib  I{  I}  IB  I[  I]  Ir  I<  I>  Ia It\n     A(  A)  Ab  A{  A}  AB  A[  A]  Ar  A<  A>  Aa At\n\n    in( in) inb in{ in} inB in[ in] inr in< in> ina int\n    an( an) anb an{ an} anB an[ an] anr an< an> ana ant\n    In( In) Inb In{ In} InB In[ In] Inr In< In> Ina Int\n    An( An) Anb An{ An} AnB An[ An] Anr An< An> Ana Ant\n\n    il( il) ilb il{ il} ilB il[ il] ilr il< il> ila ilt\n    al( al) alb al{ al} alB al[ al] alr al< al> ala alt\n    Il( Il) Ilb Il{ Il} IlB Il[ Il] Ilr Il< Il> Ila Ilt\n    Al( Al) Alb Al{ Al} AlB Al[ Al] Alr Al< Al> Ala Alt\n\nChart for a list of pairs\n\n```\n                           ..........\na ( bbbbbbbb ) ( ccccccc ) ( dddddd ) ( eeeeeee ) ( ffffffff ) g\n  ││└ 2Il) ┘│││││└ Il) ┘│││││└ I) ┘│││││└ In) ┘│││││└ 2In) ┘│││\n  │└─ 2il) ─┘│││└─ il) ─┘│││└─ i) ─┘│││└─ in) ─┘│││└─ 2in) ─┘││\n  ├── 2al) ──┘│├── al) ──┘│├── a) ──┘│├── an) ──┘│├── 2an) ──┘│\n  └── 2Al) ───┘└── Al) ───┘└── A) ───┘└── An) ───┘└── 2An) ───┘\n```\n\nChart for nested pairs\n\n```\n                           ..........\na ( b ( cccccccc ) d ) ( e ( ffffff ) g ) ( h ( iiiiiiii ) j ) k\n  │││ ││└ 2Il) ┘││││││││││ ││└ I) ┘││││││││││ ││└ 2In) ┘│││││││\n  │││ │└─ 2il) ─┘│││││││││ │└─ i) ─┘│││││││││ │└─ 2in) ─┘││││││\n  │││ ├── 2al) ──┘││││││││ ├── a) ──┘││││││││ ├── 2an) ──┘│││││\n  │││ └── 2Al) ───┘│││││││ └── A) ───┘│││││││ └── 2An) ───┘││││\n  ││└───── Il) ────┘│││││└─── 2I) ────┘│││││└───── In) ────┘│││\n  │└────── il) ─────┘│││└──── 2i) ─────┘│││└────── in) ─────┘││\n  ├─────── al) ──────┘│├───── 2a) ──────┘│├─────── an) ──────┘│\n  └─────── Al) ───────┘└───── 2A) ───────┘└─────── An) ───────┘\n```\n\n## Quote mappings\n\nAvailable mappings\n\n```\n i'  i\"  i`    in' in\" in`    il' il\" il`    iL' iL\" iL`\n a'  a\"  a`    an' an\" an`    al' al\" al`    aL' aL\" aL`\n I'  I\"  I`    In' In\" In`    Il' Il\" Il`    IL' IL\" IL`\n```\n\nChart for a list of quotes\n\n```\n                      ..........\na ' bbbbbbb ' ccccccc ' dddddd ' eeeeeee ' fffffff ' g\n  ││└ IL' ┘│││└ Il' ┘│││└ I' ┘│││└ In' ┘│││└ IN' ┘│ │\n  │└─ iL' ─┘│├─ il' ─┘│├─ i' ─┘│├─ in' ─┘│├─ iN' ─┘ │\n  └── aL' ──┼┘        └┼─ a' ──┼┘        └┼─ aN' ───┘\n            └── al' ───┘       └── an' ───┘\n```\n\n## Separator mappings\n\nAvailable mappings\n\n```\n i,  i.  i;  i:  i+  i-  i=  i~  i_  i*  i/  i|  i\\  i&\n a,  a.  a;  a:  a+  a-  a=  a~  a_  a*  a/  a|  a\\  a&\n I,  I.  I;  I:  I+  I-  I=  I~  I_  I*  I/  I|  I\\  I&\n A,  A.  A;  A:  A+  A-  A=  A~  A_  A*  A/  A|  A\\  A&\n\nin, in. in; in: in+ in- in= in~ in_ in* in/ in| in\\ in&\nan, an. an; an: an+ an- an= an~ an_ an* an/ an| an\\ an&\nIn, In. In; In: In+ In- In= In~ In_ In* In/ In| In\\ In&\nAn, An. An; An: An+ An- An= An~ An_ An* An/ An| An\\ An&\n\nil, il. il; il: il+ il- il= il~ il_ il* il/ il| il\\ il&\nal, al. al; al: al+ al- al= al~ al_ al* al/ al| al\\ al&\nIl, Il. Il; Il: Il+ Il- Il= Il~ Il_ Il* Il/ Il| Il\\ Il&\nAl, Al. Al; Al: Al+ Al- Al= Al~ Al_ Al* Al/ Al| Al\\ Al&\n\niN, iN. iN; iN: iN+ iN- iN= iN~ iN_ iN* iN/ iN| iN\\ iN&\naN, aN. aN; aN: aN+ aN- aN= aN~ aN_ aN* aN/ aN| aN\\ aN&\nIN, IN. IN; IN: IN+ IN- IN= IN~ IN_ IN* IN/ IN| IN\\ IN&\nAN, AN. AN; AN: AN+ AN- AN= AN~ AN_ AN* AN/ AN| AN\\ AN&\n\niL, iL. iL; iL: iL+ iL- iL= iL~ iL_ iL* iL/ iL| iL\\ iL&\naL, aL. aL; aL: aL+ aL- aL= aL~ aL_ aL* aL/ aL| aL\\ aL&\nIL, IL. IL; IL: IL+ IL- IL= IL~ IL_ IL* IL/ IL| IL\\ IL&\nAL, AL. AL; AL: AL+ AL- AL= AL~ AL_ AL* AL/ AL| AL\\ AL&\n```\n\nChart for a list of separators\n\n```\n                      .........\na , bbbbbbb , ccccccc , dddddd , eeeeeee , fffffff , g\n  ││└ IL, ┘│││└ Il, ┘│││└ I, ┘│││└ In, ┘│││└ IN, ┘│ │\n  │└─ iL, ─┤│├─ il, ─┤│├─ i, ─┤│├─ in, ─┤│├─ iN, ─┤ │\n  ├── aL, ─┘├┼─ al, ─┘├┼─ a, ─┘├┼─ an, ─┘├┼─ aN, ─┘ │\n  └── AL, ──┼┘        └┼─ A, ──┼┘        └┼─ AN, ───┘\n            └─  Al,  ──┘       └─  An,  ──┘\n```\n\n"
  },
  {
    "path": ".vim/bundle/targets.vim/doc/targets.txt",
    "content": "*targets.txt*\tProvide additional text objects\n\nAuthor:  Christian Wellenbrock <christian.wellenbrock@gmail.com>\nLicense: MIT license\nUpdated: 2014-04-11\nVersion: 0.1.4\n\n                           ____\n                           \\___\\_.::::::::::.____\n                           /___/ '::::::::::'\n\n\n\n==============================================================================\nINTRODUCTION                                            *targets-introduction*\n\nTargets.vim adds various |text-objects| to give you more targets to operate\non. It expands on the idea of simple commands like `di'` (delete inside the\nsingle quotes around the cursor) to give you more opportunities to craft\npowerful commands that can be repeated reliably. Another major goal is to\nhandle all corner cases correctly.\n\n==============================================================================\nEXAMPLES                                                    *targets-examples*\n\nThe following examples are displayed as three lines each. The top line denotes\ncursor positions from where the presented command works. The middle line shows\nthe contents of the example line that we're working on. The last line shows\nthe part of the line that the command will operate on.\n\nTo change the text in the next pair of parentheses, use the `cin)` command\n\n    .....................\n    This is example text (with a pair of parentheses) ~\n                          └───────── cin) ─────────┘\n\nTo delete the item in a comma separated list under the cursor, use `da,`\n\n                                  .........\n    Shopping list: oranges, apples, bananas, tomatoes ~\n                                  └─ da, ─┘\n\nNotice how the selection includes exactly one of the surrounding commas to\nleave a proper comma separated list behind.\n\n==============================================================================\nOVERVIEW                                                    *targets-overview*\n\nWe distinguish between three kinds of text objects that behave slightly\ndifferently:\n\n    Pair text objects           |targets-pair-text-objects|\n    Quote text objects          |targets-quote-text-objects|\n    Separator text objects      |targets-separator-text-objects|\n\n==============================================================================\nPAIR TEXT OBJECTS                                  *targets-pair-text-objects*\n\nThese text objects are similar to the built in text objects such as |i)|.\nSupported trigger characters:\n\n    ( ) b     (work on parentheses)\n    { } B     (work on curly braces)\n    [ ] r     (work on square brackets)\n    < > a     (work on angle brackets)\n        t     (work on tags)\n\nWe borrowed the aliases `r` and `a` from the |surround| plugin by Tim Pope.\nThe following examples will use parentheses, but they all work for each listed\ntrigger character accordingly.\n\nPair text objects work over multiple lines.\n\ni( i) ib i{ i} iB it          *it_t* *i(_t* *i)_t* *ib_t* *i{_t* *i}_t* *iB_t*\ni[ i] ir i< i> ia                    *i[_t* *i]_t* *ir_t* *i<_t* *i>_t* *ia_t*\n    Select inside of pair characters. This overrides Vim's default text object\n    to allow seeking for the next pair in the current line to the right or\n    left when the cursor is not inside a pair. This behavior is similar to\n    Vim's seeking behavior of `di'` when not inside of quotes, but it works\n    both ways. See |targets-pair-seek|. Accepts a [count] to select multiple\n    blocks.\n\n              ............\n        a ( b ( cccccccc ) d ) e ~\n           │   └── i) ──┘   │\n           └───── 2i) ──────┘\n\na( a) ab a{ a} aB at          *at_t* *a(_t* *a)_t* *ab_t* *a{_t* *a}_t* *aB_t*\na[ a] ar a< a> aa                    *a[_t* *a]_t* *ar_t* *a<_t* *a>_t* *aa_t*\n    Select a pair. Overrides Vim's default text object to allow seeking.\n    Supports |targets-pair-seek|. Accepts [count].\n\n              ............\n        a ( b ( cccccccc ) d ) e ~\n          │   └─── a) ───┘   │\n          └────── 2a) ───────┘\n\nI( I) Ib I{ I} IB It                        *It* *I(* *I)* *Ib* *I{* *I}* *IB*\nI[ I] Ir I< I> Ia                                *I[* *I]* *Ir* *I<* *I>* *Ia*\n    Select contents of pair characters. Like inside of parentheses, but\n    exclude whitespace at both ends. Useful for changing contents while\n    preserving spacing. Supports |targets-pair-seek|. Accepts [count].\n\n              ............\n        a ( b ( cccccccc ) d ) e ~\n            │   └─ I) ─┘   │\n            └──── 2I) ─────┘\n\nA( A) Ab A{ A} AB At                        *At* *A(* *A)* *Ab* *A{* *A}* *AB*\nA[ A] Ar A< A> Aa                                *A[* *A]* *Ar* *A<* *A>* *Aa*\n    Select around pair characters. Like a pair, but include whitespace at one\n    side of the pair. Prefers to select trailing whitespace, falls back to\n    select leading whitespace. Supports |targets-pair-seek|. Accepts [count].\n\n              ............\n        a ( b ( cccccccc ) d ) e ~\n          │   └─── A) ────┘   │\n          └────── 2A) ────────┘\n\n------------------------------------------------------------------------------\nNEXT AND LAST PAIR                                    *targets-next-last-pair*\n\nWork directly on distant pairs without moving there separately.\n\nin( in) inb in{ in} inB int          *int* *in(* *in)* *inb* *in{* *in}* *inB*\nin[ in] inr in< in> ina                    *in[* *in]* *inr* *in<* *in>* *ina*\nan( an) anb an{ an} anB ant          *ant* *an(* *an)* *anb* *an{* *an}* *anB*\nan[ an] anr an< an> ana                    *an[* *an]* *anr* *an<* *an>* *ana*\nIn( In) Inb In{ In} InB Int          *Int* *In(* *In)* *Inb* *In{* *In}* *InB*\nIn[ In] Inr In< In> Ina                    *In[* *In]* *Inr* *In<* *In>* *Ina*\nAn( An) Anb An{ An} AnB Ant          *Ant* *An(* *An)* *Anb* *An{* *An}* *AnB*\nAn[ An] Anr An< An> Ana                    *An[* *An]* *Anr* *An<* *An>* *Ana*\nil( il) ilb il{ il} ilB ilt          *ilt* *il(* *il)* *ilb* *il{* *il}* *ilB*\nil[ il] ilr il< il> ila                    *il[* *il]* *ilr* *il<* *il>* *ila*\nal( al) alb al{ al} alB alt          *alt* *al(* *al)* *alb* *al{* *al}* *alB*\nal[ al] alr al< al> ala                    *al[* *al]* *alr* *al<* *al>* *ala*\nIl( Il) Ilb Il{ Il} IlB Ilt          *Ilt* *Il(* *Il)* *Ilb* *Il{* *Il}* *IlB*\nIl[ Il] Ilr Il< Il> Ila                    *Il[* *Il]* *Ilr* *Il<* *Il>* *Ila*\nAl( Al) Alb Al{ Al} AlB Alt          *Alt* *Al(* *Al)* *Alb* *Al{* *Al}* *AlB*\nAl[ Al] Alr Al< Al> Ala                    *Al[* *Al]* *Alr* *Al<* *Al>* *Ala*\n    All the above pair text objects can be shifted to the next pair by\n    including the letter `n`. The command `in)` selects inside of the next\n    pair. Use the letter `l` instead to work on the previous (last) pair. Uses\n    a [count] to skip multiple pairs. Skipping works over multiple lines.\n\n                                                        *targets-pair-charts*\nThe following charts summarizes all pair mappings for a list of pairs and\nnested pairs:\n\n                               ..........\n    a ( bbbbbbbb ) ( ccccccc ) ( dddddd ) ( eeeeeee ) ( ffffffff ) g ~\n      ││└ 2Il) ┘│││││└ Il) ┘│││││└ I) ┘│││││└ In) ┘│││││└ 2In) ┘│││\n      │└─ 2il) ─┘│││└─ il) ─┘│││└─ i) ─┘│││└─ in) ─┘│││└─ 2in) ─┘││\n      ├── 2al) ──┘│├── al) ──┘│├── a) ──┘│├── an) ──┘│├── 2an) ──┘│\n      └── 2Al) ───┘└── Al) ───┘└── A) ───┘└── An) ───┘└── 2An) ───┘\n\n                               ..........\n    a ( b ( cccccccc ) d ) ( e ( ffffff ) g ) ( h ( iiiiiiii ) j ) k ~\n      │││ ││└ 2Il) ┘││││││││││ ││└ I) ┘││││││││││ ││└ 2In) ┘│││││││\n      │││ │└─ 2il) ─┘│││││││││ │└─ i) ─┘│││││││││ │└─ 2in) ─┘││││││\n      │││ ├── 2al) ──┘││││││││ ├── a) ──┘││││││││ ├── 2an) ──┘│││││\n      │││ └── 2Al) ───┘│││││││ └── A) ───┘│││││││ └── 2An) ───┘││││\n      ││└───── Il) ────┘│││││└─── 2I) ────┘│││││└───── In) ────┘│││\n      │└────── il) ─────┘│││└──── 2i) ─────┘│││└────── in) ─────┘││\n      ├─────── al) ──────┘│├───── 2a) ──────┘│├─────── an) ──────┘│\n      └─────── Al) ───────┘└───── 2A) ───────┘└─────── An) ───────┘\n\n------------------------------------------------------------------------------\nPAIR SEEK                                                  *targets-pair-seek*\n\nIf any of the normal pair commands (not containing `n` or `l`) is executed\nwhen the cursor is not positioned inside a pair, it seeks for pairs before or\nafter the cursor by searching for the appropriate delimiter on the current\nline. This is similar to using the explicit version containing `n` or `l`, but\nin only seeks on the current line.\n\n==============================================================================\nQUOTE TEXT OBJECTS                                *targets-quote-text-objects*\n\nThese text objects are similar to the built in text objects such as |i'|.\nSupported trigger characters:\n\n    '         (work on single quotes)\n    \"         (work on double quotes)\n    `         (work on back ticks)\n\nThe following examples will use single quotes, but they all work for each\nlisted quoting character accordingly.\n\nQuote text objects work over multiple lines.\n\nWhen the cursor is positioned on a quotation mark, the quote text objects\ncount the numbers of quotation marks from the beginning of the line to choose\nthe properly quoted text to the left or right of the cursor.\n\ni' i\" i`                                              *i`_t* *i'_t* *iquote_t*\n    Select inside quote. This overrides Vim's default text object to allow\n    seeking in both directions. See |targets-quote-seek|.\n\n          ............\n        a ' bbbbbbbb ' c ' d ~\n           └── i' ──┘\n\na' a\" a`                                              *a`_t* *a'_t* *aquote_t*\n    Select a quote. This overrides Vim's default text object to support\n    |targets-quote-seek|. Includes surrounding whitespace in one direction,\n    exactly like Vim's built in quote text objects.\n\n          ............\n        a ' bbbbbbbb ' c ' d ~\n          └─── a' ────┘\n\nI' I\" I`                                                    *I`* *I'* *Iquote*\n    Select contents of a quote. Like inside quote, but exclude whitespace at\n    both ends. Useful for changing contents while preserving spacing. Supports\n    |targets-quote-seek|.\n\n          ............\n        a ' bbbbbbbb ' c ' d ~\n            └─ I' ─┘\n\n------------------------------------------------------------------------------\nNEXT AND LAST QUOTE                                  *targets-next-last-quote*\n\nWork directly on distant quotes without moving there separately.\n\nin' in\" in` il' il\" il`            *in`* *in'* *inquote* *il`* *il'* *ilquote*\nan' an\" an` al' al\" al`            *an`* *an'* *anquote* *al`* *al'* *alquote*\nIn' In\" In` Il' Il\" Il`            *In`* *In'* *Inquote* *Il`* *Il'* *Ilquote*\niN' iN\" iN` iL' iL\" iL`            *iN`* *iN'* *iNquote* *iL`* *iL'* *iLquote*\naN' aN\" aN` aL' aL\" aL`            *aN`* *aN'* *aNquote* *aL`* *aL'* *aLquote*\nIN' IN\" IN` IL' IL\" IL`            *IN`* *IN'* *INquote* *IL`* *IL'* *ILquote*\n    All the above pair text objects can be shifted to the next quote by\n    including the letter `n`. The command `in'` selects inside of the next\n    single quotes. Use the letter `l` instead to work on the previous (last)\n    quote. Uses a [count] to skip multiple quotation characters.\n\n    Use uppercase `N` and `L` to jump from within one quote into the next\n    proper quote, instead of into the pseudo quote in between. (Using `N`\n    instead of `n` is actually just doubling the count to achieve this.)\n\n                                                         *targets-quote-chart*\nThe following chart summarizes all quote mappings:\n\n                          ..........\n    a ' bbbbbbb ' ccccccc ' dddddd ' eeeeeee ' fffffff ' g ~\n      ││└ IL' ┘│││└ Il' ┘│││└ I' ┘│││└ In' ┘│││└ IN' ┘│ │\n      │└─ iL' ─┘│├─ il' ─┘│├─ i' ─┘│├─ in' ─┘│├─ iN' ─┘ │\n      └── aL' ──┼┘        └┼─ a' ──┼┘        └┼─ aN' ───┘\n                └── al' ───┘       └── an' ───┘\n\n------------------------------------------------------------------------------\nQUOTE SEEK                                                *targets-quote-seek*\n\nIf any of the normal quote commands (not containing `n`, `l`, `N` or `L`) is\nexecuted when the cursor is not positioned inside a quote, it seeks for quotes\nbefore or after the cursor by searching for the appropriate delimiter on the\ncurrent line. Similar to using the explicit version containing `n` or `l`.\n\n==============================================================================\nSEPARATOR TEXT OBJECTS                        *targets-separator-text-objects*\n\nThese text objects are based on single separator characters like the comma in\none of our |targets-examples|. The text between two instances of the separator\ncharacter can be operated on with these targets.\n\nSupported separators:\n\n    , . ; : + - = ~ _ * / | \\ & ~\n\nThe following examples will use commas, but they all work for each listed\nseparator character accordingly.\n\nSeparator text objects work over multiple lines.\n\ni, i. i; i: i+ i- i=                     *i,* *i.* *i;* *i:* *i+* *i-* *i=*\ni~ i_ i* i/ i| i\\ a&                     *i~* *i_* *i/* *i|* *i\\* *i&* *istar*\n    Select inside separators. Supports |targets-separator-seek|.\n\n              ...........\n        a , b , cccccccc , d , e ~\n               └── i, ──┘\n\na, a. a; a: a+ a- a=                     *a,* *a.* *a;* *a:* *a+* *a-* *a=*\na~ a_ a* a/ a| a\\ a&                     *a~* *a_* *a/* *a|* *a\\* *a&* *astar*\n    Select an item in a list separated by the separator character. This\n    includes the leading separator, but excludes the trailing one. This leaves\n    a proper list separated by the separator character after deletion. See\n    |targets-examples|. Supports |targets-separator-seek|.\n\n              ...........\n        a , b , cccccccc , d , e ~\n              └─── a, ──┘\n\nI, I. I; I: I+ I- I=                     *I,* *I.* *I;* *I:* *I+* *I-* *I=*\nI~ I_ I* I/ I| I\\ I&                     *I~* *I_* *I/* *I|* *I\\* *I&* *Istar*\n    Select contents between separators. Like inside separators, but exclude\n    whitespace at both ends. Useful for changing contents while preserving\n    spacing. Supports |targets-separator-seek|.\n\n              ...........\n        a , b , cccccccc , d , e ~\n                └─ I, ─┘\n\nA, A. A; A: A+ A- A=                     *A,* *A.* *A;* *A:* *A+* *A-* *A=*\nA~ A_ A* A/ A| A\\ A&                     *A~* *A_* *A/* *A|* *A\\* *A&* *Astar*\n    Select around a pair of separators. This includes both separators and a\n    surrounding whitespace, similar to `a'` and `A(`. Supports\n    |targets-separator-seek|.\n\n              ...........\n        a , b , cccccccc , d , e ~\n              └─── A, ────┘\n\n------------------------------------------------------------------------------\nNEXT AND LAST SEPARATOR                          *targets-next-last-separator*\n\nWork directly on distant separators without moving there separately.\n\nin, in. in; in: in+ in- in=       *in,* *in.* *in;* *in:* *in+* *in-* *in=*\nin~ in_ in* in/ in| in\\ in&       *in~* *in_* *in/* *in|* *in\\* *in&* *instar*\nan, an. an; an: an+ an- an=       *an,* *an.* *an;* *an:* *an+* *an-* *an=*\nan~ an_ an* an/ an| an\\ an&       *an~* *an_* *an/* *an|* *an\\* *an&* *anstar*\nIn, In. In; In: In+ In- In=       *In,* *In.* *In;* *In:* *In+* *In-* *In=*\nIn~ In_ In* In/ In| In\\ In&       *In~* *In_* *In/* *In|* *In\\* *In&* *Instar*\nAn, An. An; An: An+ An- An=       *An,* *An.* *An;* *An:* *An+* *An-* *An=*\nAn~ An_ An* An/ An| An\\ An&       *An~* *An_* *An/* *An|* *An\\* *An&* *Anstar*\nil, il. il; il: il+ il- il=       *il,* *il.* *il;* *il:* *il+* *il-* *il=*\nil~ il_ il* il/ il| il\\ il&       *il~* *il_* *il/* *il|* *il\\* *il&* *ilstar*\nal, al. al; al: al+ al- al=       *al,* *al.* *al;* *al:* *al+* *al-* *al=*\nal~ al_ al* al/ al| al\\ al&       *al~* *al_* *al/* *al|* *al\\* *al&* *alstar*\nIl, Il. Il; Il: Il+ Il- Il=       *Il,* *Il.* *Il;* *Il:* *Il+* *Il-* *Il=*\nIl~ Il_ Il* Il/ Il| Il\\ Il&       *Il~* *Il_* *Il/* *Il|* *Il\\* *Il&* *Ilstar*\nAl, Al. Al; Al: Al+ Al- Al=       *Al,* *Al.* *Al;* *Al:* *Al+* *Al-* *Al=*\nAl~ Al_ Al* Al/ Al| Al\\ Al&       *Al~* *Al_* *Al/* *Al|* *Al\\* *Al&* *Alstar*\niN, iN. iN; iN: iN+ iN- iN=       *iN,* *iN.* *iN;* *iN:* *iN+* *iN-* *iN=*\niN~ iN_ iN* iN/ iN| iN\\ iN&       *iN~* *iN_* *iN/* *iN|* *iN\\* *iN&* *iNstar*\naN, aN. aN; aN: aN+ aN- aN=       *aN,* *aN.* *aN;* *aN:* *aN+* *aN-* *aN=*\naN~ aN_ aN* aN/ aN| aN\\ aN&       *aN~* *aN_* *aN/* *aN|* *aN\\* *aN&* *aNstar*\nIN, IN. IN; IN: IN+ IN- IN=       *IN,* *IN.* *IN;* *IN:* *IN+* *IN-* *IN=*\nIN~ IN_ IN* IN/ IN| IN\\ IN&       *IN~* *IN_* *IN/* *IN|* *IN\\* *IN&* *INstar*\nAN, AN. AN; AN: AN+ AN- AN=       *AN,* *AN.* *AN;* *AN:* *AN+* *AN-* *AN=*\nAN~ AN_ AN* AN/ AN| AN\\ AN&       *AN~* *AN_* *AN/* *AN|* *AN\\* *AN&* *ANstar*\niL, iL. iL; iL: iL+ iL- iL=       *iL,* *iL.* *iL;* *iL:* *iL+* *iL-* *iL=*\niL~ iL_ iL* iL/ iL| iL\\ iL&       *iL~* *iL_* *iL/* *iL|* *iL\\* *iL&* *iLstar*\naL, aL. aL; aL: aL+ aL- aL=       *aL,* *aL.* *aL;* *aL:* *aL+* *aL-* *aL=*\naL~ aL_ aL* aL/ aL| aL\\ aL&       *aL~* *aL_* *aL/* *aL|* *aL\\* *aL&* *aLstar*\nIL, IL. IL; IL: IL+ IL- IL=       *IL,* *IL.* *IL;* *IL:* *IL+* *IL-* *IL=*\nIL~ IL_ IL* IL/ IL| IL\\ IL&       *IL~* *IL_* *IL/* *IL|* *IL\\* *IL&* *ILstar*\nAL, AL. AL; AL: AL+ AL- AL=       *AL,* *AL.* *AL;* *AL:* *AL+* *AL-* *AL=*\nAL~ AL_ AL* AL/ AL| AL\\ AL&       *AL~* *AL_* *AL/* *AL|* *AL\\* *ALstar*\n    All the above separator text objects can be shifted to the next separator\n    by including the letter `n`. The command `in,` selects inside of the next\n    commas. Use the letter `l` instead to work on the previous (last)\n    separators. Uses a [count] to skip multiple separator characters.\n\n    Use uppercase `N` and `L` to jump from within one pair of separators into\n    the next distinct pair, instead of into the adjacent one. (Using `N`\n    instead of `n` is actually just doubling the count to achieve this.)\n\n                                                     *targets-separator-chart*\nThe following chart summarizes all separator mappings:\n\n                          .........\n    a , bbbbbbb , ccccccc , dddddd , eeeeeee , fffffff , g ~\n      ││└ IL, ┘│││└ Il, ┘│││└ I, ┘│││└ In, ┘│││└ IN, ┘│ │\n      │└─ iL, ─┤│├─ il, ─┤│├─ i, ─┤│├─ in, ─┤│├─ iN, ─┤ │\n      ├── aL, ─┘├┼─ al, ─┘├┼─ a, ─┘├┼─ an, ─┘├┼─ aN, ─┘ │\n      └── AL, ──┼┘        └┼─ A, ──┼┘        └┼─ AN, ───┘\n                └─  Al,  ──┘       └─  An,  ──┘\n\n------------------------------------------------------------------------------\nSEPARATOR SEEK                                        *targets-separator-seek*\n\nLike |targets-quote-seek|. If any of the normal separator commands (not\ncontaining `n` or `l`) is executed when the cursor is not positioned inside a\npair of separators, it seeks for the separator before or after the cursor.\nThis is similar to using the explicit version containing `n` or `l`.\n\n==============================================================================\nSETTINGS                                                    *targets-settings*\n\nPut these variables into your vimrc to customize the mappings described above.\nThe provided examples also indicate the default values.\n\nAvailable options: ~\n\n    |g:targets_aiAI|\n    |g:targets_nlNL|\n    |g:targets_pairs|\n    |g:targets_quotes|\n    |g:targets_separators|\n\n------------------------------------------------------------------------------\n                                                              *g:targets_aiAI*\nDefault:\n    let g:targets_aiAI = 'aiAI' ~\n\nControls the normal mode operator mode maps that get created for In Pair (i),\nA Pair (a), Inside Pair (I), and Around Pair (A). Required to be a 4 character\nlong list. Use a space to deactivate a mode.\n\n                                                              *g:targets_nlNL*\nDefault:\n    let g:targets_nlNL = 'nlNL' ~\n\nControls the keys used in maps for seeking next and last text objects. For\nexample, if you don't wish to use the N and L seeks, and instead wish for 'n'\nto always search for the next object and 'N' to search for the last, you could\nset:\n\n    let g:targets_nlNL = 'nN  ' ~\n\nNote that two extra spaces are still required on the end, indicating you wish\nto disable the default functionality of N and L. Required to be a 4 character\nlong list.\n\n                                                             *g:targets_pairs*\nDefault:\n    let g:targets_pairs = '()b {}B []r <>a' ~\n\nDefines the space separated list of pair objects you wish to use, along with\noptional one letter aliases for them.\n\n                                                            *g:targets_quotes*\nDefault:\n    let g:targets_quotes = '\" '' `' ~\n\nDefines the space separated list of quoting objects you wish to use. Note that\nyou have to escape the single quote by doubling it. Quote objects can\noptionally be followed by a single one letter alias. For example, to set 'd'\nas an alias for double quotes, allowing such commands as 'cid' to be\nequivalent to 'ci\"', you could define:\n\n    let g:targets_quotes = '\"d '' `' ~\n\n\n                                                        *g:targets_separators*\nDefault:\n    let g:targets_separators = ', . ; : + - = ~ _ * / | \\ &' ~\n\nDefines the space separated list of separator objects you wish to use. Like\nquote objects, separator objects can optionally be followed by a single one\nletter alias. To set 'c' as an alias for comma, allowing such commands as\n'dic' to be equivalent to 'di,', you could define:\n\n    let g:targets_separators = ',c . ; : + - = ~ _ * / | \\ &' ~\n\n==============================================================================\nNOTES                                                          *targets-notes*\n\nRepeating an operator-pending mapping forgets its last count.\n    https://groups.google.com/forum/?fromgroups#!topic/vim_dev/G4SSgcRVN7g\nWorks since Vim 7.4.160\n\n==============================================================================\nISSUES                                                        *targets-issues*\n\nEmpty matches can't be selected because it is no possible to visually select\nzero-character ranges.\n\nForcing to motion to work linewise by inserting `V` in `dVan(` doesn't work\nfor operator-pending mappings. See |o_V|.\n\nReport issues or submit pull requests to:\n    https://github.com/wellle/vim-targets\n\n==============================================================================\nTODOS                                                          *targets-todos*\n\nCreate more mappings to support commands like `danw` or `danp` to delete the\nnext word or paragraph.\n\n==============================================================================\nvim:tw=78:ts=8:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/targets.vim/plugin/targets.vim",
    "content": "\" targets.vim Provides additional text objects\n\" Author:  Christian Wellenbrock <christian.wellenbrock@gmail.com>\n\" License: MIT license\n\" Updated: 2014-04-11\n\" Version: 0.1.4\n\nif exists(\"g:loaded_targets\") || &cp || v:version < 700\n    finish\nendif\nlet g:loaded_targets = '0.1.4' \" version number\nlet s:save_cpoptions = &cpoptions\nset cpo&vim\n\n\" create a text object by combining prefix and trigger to call Match with\n\" the given delimiters and matchers\nfunction! s:createTextObject(prefix, trigger, delimiters, matchers)\n    if match(a:prefix, ' ') >= 0  \" if there's a blank in the prefix, it should be deactivated\n        return\n    endif\n\n    let delimiters = substitute(a:delimiters, \"'\", \"''\", 'g')\n\n    let rawMapping = a:prefix . a:trigger\n    let rawArguments = \"'\" . delimiters . \"', '\" . a:matchers . \"'\"\n\n    let mapping = substitute(rawMapping, '|', '\\\\\\|', 'g')\n    let arguments = substitute(rawArguments, '|', '\\\\\\|', 'g')\n\n    execute 'onoremap <silent>' . mapping . ' :<C-U>call targets#omap(' . arguments . ')<CR>'\n\n    \" don't create xmaps beginning with `A` or `I`\n    \" conflict with `^VA` and `^VI` to append before or insert after visual\n    \" block selection. #6\n    \" instead, save mapping to targets#mapArgs so we can execute these only\n    \" for character wise visual mode in targets#uppercaseXmap #23\n    if a:prefix !~# '^[AI]'\n        execute 'xnoremap <silent>' . mapping . ' :<C-U>call targets#xmap(' . arguments . ')<CR>'\n    else\n        let g:targets#mapArgs[rawMapping] = rawArguments\n    endif\n\n    unlet delimiters mapping arguments\nendfunction\n\n\" creat a text object for a single delimiter\nfunction! s:createSimpleTextObject(prefix, delimiter, matchers)\n    call s:createTextObject(a:prefix, a:delimiter[0], a:delimiter[0], a:matchers)\n    if strlen(a:delimiter) > 1  \" check for alias\n        call s:createTextObject(a:prefix, a:delimiter[1], a:delimiter[0], a:matchers)\n    endif\nendfunction\n\n\" create multiple text objects for a pair of delimiters and optional\n\" additional triggers\nfunction! s:createPairTextObject(prefix, delimiters, matchers)\n    let [opening, closing] = [a:delimiters[0], a:delimiters[1]]\n    for trigger in split(a:delimiters, '\\zs')\n        call s:createTextObject(a:prefix, trigger, opening . closing, a:matchers)\n    endfor\n    unlet opening closing\nendfunction\n\n\" pair text objects (multi line objects with single line seek)\n\" cursor  │                        .........\n\" line    │ a ( bbbbbb ) ( ccccc ) ( ddddd ) ( eeeee ) ( ffffff ) g\n\" command │   ││└2Il)┘│││││└Il)┘│││││└─I)┘│││││└In)┘│││││└2In)┘│││\n\"         │   │└─2il)─┘│││└─il)─┘│││└──i)─┘│││└─in)─┘│││└─2in)─┘││\n\"         │   ├──2al)──┘│├──al)──┘│├───a)──┘│├──an)──┘│├──2an)──┘│\n\"         │   └──2Al)───┘└──Al)───┘└───A)───┘└──An)───┘└──2An)───┘\n\" cursor  │                          .........\n\" line    │ a ( b ( cccccc ) d ) ( e ( fffff ) g ) ( h ( iiiiii ) j ) k\n\" command │   │││ ││└2Il)┘││││││││││ ││└─I)┘││││││││││ ││└2In)┘│││││││\n\"         │   │││ │└─2il)─┘│││││││││ │└──i)─┘│││││││││ │└─2in)─┘││││││\n\"         │   │││ ├──2al)──┘││││││││ ├───a)──┘││││││││ ├──2an)──┘│││││\n\"         │   │││ └──2Al)───┘│││││││ └───A)───┘│││││││ └──2An)───┘││││\n\"         │   ││└─────Il)────┘│││││└────2I)────┘│││││└─────In)────┘│││\n\"         │   │└──────il)─────┘│││└─────2i)─────┘│││└──────in)─────┘││\n\"         │   ├───────al)──────┘│├──────2a)──────┘│├───────an)──────┘│\n\"         │   └───────Al)───────┘└──────2A)───────┘└───────An)───────┘\nfunction! s:createPairTextObjects()\n    for delimiters in s:pair_list \" aliases like surround\n        call s:createPairTextObject(s:i,       delimiters, 'grow seekselectp drop')\n        call s:createPairTextObject(s:a,       delimiters, 'grow seekselectp')\n        call s:createPairTextObject(s:I,       delimiters, 'seekselectp shrink')\n        call s:createPairTextObject(s:A,       delimiters, 'seekselectp expand')\n        call s:createPairTextObject(s:i . s:n, delimiters, 'nextp selectp drop')\n        call s:createPairTextObject(s:a . s:n, delimiters, 'nextp selectp')\n        call s:createPairTextObject(s:I . s:n, delimiters, 'nextp selectp shrink')\n        call s:createPairTextObject(s:A . s:n, delimiters, 'nextp selectp expand')\n        call s:createPairTextObject(s:i . s:l, delimiters, 'lastp selectp drop')\n        call s:createPairTextObject(s:a . s:l, delimiters, 'lastp selectp')\n        call s:createPairTextObject(s:I . s:l, delimiters, 'lastp selectp shrink')\n        call s:createPairTextObject(s:A . s:l, delimiters, 'lastp selectp expand')\n    endfor\nendfunction\n\n\" tag text objects work on tags (similar to pair text objects)\nfunction! s:createTagTextObjects()\n    call s:createSimpleTextObject(s:i,       't', 'grow seekselectt dropt')\n    call s:createSimpleTextObject(s:a,       't', 'grow seekselectt')\n    call s:createSimpleTextObject(s:I,       't', 'seekselectt dropt shrink')\n    call s:createSimpleTextObject(s:A,       't', 'seekselectt expand')\n    call s:createSimpleTextObject(s:i . s:n, 't', 'nextt selectp dropt')\n    call s:createSimpleTextObject(s:a . s:n, 't', 'nextt selectp')\n    call s:createSimpleTextObject(s:I . s:n, 't', 'nextt selectp dropt shrink')\n    call s:createSimpleTextObject(s:A . s:n, 't', 'nextt selectp shrink')\n    call s:createSimpleTextObject(s:i . s:l, 't', 'lastt selectp dropt')\n    call s:createSimpleTextObject(s:a . s:l, 't', 'lastt selectp')\n    call s:createSimpleTextObject(s:I . s:l, 't', 'lastt selectp dropt shrink')\n    call s:createSimpleTextObject(s:A . s:l, 't', 'lastt selectp shrink')\nendfunction\n\n\" quote text objects expand into quote (by counting quote signs)\n\" `aN'` is a shortcut for `2an'` to jump from within one quote into the\n\" next one, instead of the quote in between\n\" cursor  │                   ........\n\" line    │ a ' bbbbb ' ccccc ' dddd ' eeeee ' fffff ' g\n\" command │   ││└IL'┘│││└Il'┘│││└I'┘│││└In'┘│││└IN'┘│ │\n\"         │   │└─iL'─┘│├─il'─┘│├─i'─┘│├─in'─┘│├─iN'─┘ │\n\"         │   └──aL'──┼┘      └┼─a'──┼┘      └┼─aN'───┘\n\"         │           └──al'───┘     └──an'───┘\n\" cursor  │ ..........      │      ......      │      ..........\n\" line    │ a ' bbbb ' c '' │ ' a ' bbbb ' c ' │ '' b ' cccc ' d\n\" command │   ││└I'┘│ │     │     ││└I'┘│ │    │      ││└I'┘│ │\n\"         │   │└─i'─┘ │     │     │└─i'─┘ │    │      │└─i'─┘ │\n\"         │   └──a'───┘     │     └──a'───┘    │      └──a'───┘\nfunction! s:createQuoteTextObjects()\n    for delimiter in s:quote_list\n        call s:createSimpleTextObject(s:i,       delimiter, 'quote seekselect drop')\n        call s:createSimpleTextObject(s:a,       delimiter, 'quote seekselect expand')\n        call s:createSimpleTextObject(s:I,       delimiter, 'quote seekselect shrink')\n        call s:createSimpleTextObject(s:i . s:n, delimiter, 'quote next select drop')\n        call s:createSimpleTextObject(s:a . s:n, delimiter, 'quote next select expand')\n        call s:createSimpleTextObject(s:I . s:n, delimiter, 'quote next select shrink')\n        call s:createSimpleTextObject(s:i . s:l, delimiter, 'quote last select drop')\n        call s:createSimpleTextObject(s:a . s:l, delimiter, 'quote last select expand')\n        call s:createSimpleTextObject(s:I . s:l, delimiter, 'quote last select shrink')\n        call s:createSimpleTextObject(s:i . s:N, delimiter, 'quote double next select drop')\n        call s:createSimpleTextObject(s:a . s:N, delimiter, 'quote double next select expand')\n        call s:createSimpleTextObject(s:I . s:N, delimiter, 'quote double next select shrink')\n        call s:createSimpleTextObject(s:i . s:L, delimiter, 'quote double last select drop')\n        call s:createSimpleTextObject(s:a . s:L, delimiter, 'quote double last select expand')\n        call s:createSimpleTextObject(s:I . s:L, delimiter, 'quote double last select shrink')\n    endfor\nendfunction\n\n\" separator text objects expand to the right\n\" cursor  |                   ........\n\" line    │ a , bbbbb , ccccc , ddddd , eeeee , fffff , g\n\" command │   ││└IL,┘│││└Il,┘│││└ I,┘│││└In,┘│││└IN,┘│ │\n\"         │   │└─iL,─┤│├─il,─┤│├─ i,─┤│├─in,─┤│├─iN,─┤ │\n\"         │   ├──aL,─┘├┼─al,─┘├┼─ a,─┘├┼─an,─┘├┼─aN,─┘ │\n\"         │   └──AL,──┼┘      └┼─ A,──┼┘      └┼─AN,───┘\n\"         │           └─ Al, ──┘      └─ An, ──┘\n\" cursor  │ .........        │       ..........\n\" line    │ a , bbbb , c , d │ a , b , cccc , d\n\" command │   ││└I,┘│ │      │       ││└I,┘│ │\n\"         │   │└─i,─┤ │      │       │└─i,─┤ │\n\"         │   ├──a,─┘ │      │       ├──a,─┘ │\n\"         │   └──A,───┘      │       └──A,───┘\n\"         | nsth |\nfunction! s:createSeparatorTextObjects()\n    for delimiter in s:separator_list\n        call s:createSimpleTextObject(s:i,       delimiter, 'seekselect drop')\n        call s:createSimpleTextObject(s:a,       delimiter, 'seekselect dropr')\n        call s:createSimpleTextObject(s:I,       delimiter, 'seekselect shrink')\n        call s:createSimpleTextObject(s:A,       delimiter, 'seekselect expand')\n        call s:createSimpleTextObject(s:i . s:n, delimiter, 'next select drop')\n        call s:createSimpleTextObject(s:a . s:n, delimiter, 'next select dropr')\n        call s:createSimpleTextObject(s:I . s:n, delimiter, 'next select shrink')\n        call s:createSimpleTextObject(s:A . s:n, delimiter, 'next select expand')\n        call s:createSimpleTextObject(s:i . s:l, delimiter, 'last select drop')\n        call s:createSimpleTextObject(s:a . s:l, delimiter, 'last select dropr')\n        call s:createSimpleTextObject(s:I . s:l, delimiter, 'last select shrink')\n        call s:createSimpleTextObject(s:A . s:l, delimiter, 'last select expand')\n        call s:createSimpleTextObject(s:i . s:N, delimiter, 'double next select drop')\n        call s:createSimpleTextObject(s:a . s:N, delimiter, 'double next select dropr')\n        call s:createSimpleTextObject(s:I . s:N, delimiter, 'double next select shrink')\n        call s:createSimpleTextObject(s:A . s:N, delimiter, 'double next select expand')\n        call s:createSimpleTextObject(s:i . s:L, delimiter, 'double last select drop')\n        call s:createSimpleTextObject(s:a . s:L, delimiter, 'double last select dropr')\n        call s:createSimpleTextObject(s:I . s:L, delimiter, 'double last select shrink')\n        call s:createSimpleTextObject(s:A . s:L, delimiter, 'double last select expand')\n    endfor\nendfunction\n\n\" add expression mappings for `A` and `I` in visual mode #23 unless\n\" deactivated #49\nfunction! s:addExpressionMappings()\n    if s:A !=# ' '\n        xnoremap <expr> <silent> A targets#uppercaseXmap('A')\n    endif\n    if s:I !=# ' '\n        xnoremap <expr> <silent> I targets#uppercaseXmap('I')\n    endif\nendfunction\n\nfunction! s:loadSettings()\n    \" load configuration options if present\n    if !exists('g:targets_aiAI')\n        let g:targets_aiAI = 'aiAI'\n    endif\n    if !exists('g:targets_nlNL')\n        let g:targets_nlNL = 'nlNL'\n    endif\n    if !exists('g:targets_pairs')\n        let g:targets_pairs = '()b {}B []r <>a'\n    endif\n    if !exists('g:targets_quotes')\n        let g:targets_quotes = '\" '' `'\n    endif\n    if !exists('g:targets_separators')\n        let g:targets_separators = ', . ; : + - = ~ _ * / \\ | &'\n    endif\n\n    let [s:a, s:i, s:A, s:I] = split(g:targets_aiAI, '\\zs')\n    let [s:n, s:l, s:N, s:L] = split(g:targets_nlNL, '\\zs')\n\n    let s:pair_list = split(g:targets_pairs)\n    let s:quote_list = split(g:targets_quotes)\n    let s:separator_list = split(g:targets_separators)\nendfunction\n\n\" dictionary mapping uppercase xmap like `An,` to argument strings for\n\" targets#xmapCount. used by targets#uppercaseXmap\nlet targets#mapArgs = {}\n\ncall s:loadSettings()\n\n\" create the text objects (current total count: 429)\ncall s:createPairTextObjects()\ncall s:createTagTextObjects()\ncall s:createQuoteTextObjects()\ncall s:createSeparatorTextObjects()\ncall s:addExpressionMappings()\n\nlet &cpoptions = s:save_cpoptions\nunlet s:save_cpoptions\n"
  },
  {
    "path": ".vim/bundle/targets.vim/test/Makefile",
    "content": "all:\n\t@rm -f *.out\n\t@vim -N -u NONE --noplugin -S test.vim\n\t@git diff --no-index test1.ok test1.out && echo \"test1 OK\" || echo \"test1 failed\"\n\t@git diff --no-index test2.ok test2.out && echo \"test2 OK\" || echo \"test2 failed\"\n\t@git diff --no-index test3.ok test3.out && echo \"test3 OK\" || echo \"test3 failed\"\n\t@git diff --no-index test4.ok test4.out && echo \"test4 OK\" || echo \"test4 failed\"\n"
  },
  {
    "path": ".vim/bundle/targets.vim/test/test.vim",
    "content": "\" targets.vim Provides additional text objects\n\" Author:  Christian Wellenbrock <christian.wellenbrock@gmail.com>\n\" License: MIT license\n\" Updated: 2014-04-11\n\" Version: 0.1.4\n\nset runtimepath+=../\nset softtabstop=16 expandtab\nsource ../plugin/targets.vim\n\nfunction! s:execute(operation, motions)\n    if a:operation == 'c'\n        execute \"normal \" . a:operation . a:motions . \"_\"\n    elseif a:operation == 'v'\n        execute \"normal \" . a:operation . a:motions\n        normal r_\n    else\n        execute \"normal \" . a:operation . a:motions\n    endif\n    if a:operation == 'y'\n        execute \"normal A\\<Tab>'\\<C-R>\\\"'\"\n    endif\n    execute \"normal I\" . a:operation . a:motions . \"\\<Tab>\\<Esc>\"\nendfunction\n\nfunction! s:testBasic()\n    edit test1.in\n    normal gg0\n\n    for delset in [\n                \\ [ '(', ')', 'b' ],\n                \\ [ '{', '}', 'B' ],\n                \\ [ '[', ']', 'r' ],\n                \\ [ '<', '>', 'a' ],\n                \\ [ 't' ]\n                \\ ]\n        normal \"lyy\n\n        for op in [ 'c', 'd', 'y', 'v' ]\n            for cnt in [ '', '1', '2' ]\n                for nl in [ '', 'n', 'l' ]\n                    for iaIA in [ 'i', 'a', 'I', 'A' ]\n                        for del in delset\n                            execute \"normal \\\"lpfx\"\n                            call s:execute(op, cnt . iaIA . nl . del)\n                        endfor\n                    endfor\n                endfor\n            endfor\n        endfor\n\n        normal +\n    endfor\n\n    normal +\n\n    for del in [ \"'\", '\"', '`' ]\n        normal \"lyy\n\n        for op in [ 'c', 'd', 'y', 'v' ]\n            for cnt in [ '', '1', '2' ]\n                for nlNL in [ '', 'n', 'l', 'N', 'L' ]\n                    for iaI in [ 'i', 'a', 'I' ]\n                        execute \"normal \\\"lpfx\"\n                        call s:execute(op, cnt . iaI . nlNL . del)\n                    endfor\n                endfor\n            endfor\n        endfor\n\n        normal +\n    endfor\n\n    normal +\n\n    for del in [ ',', '.', ';', ':', '+', '-', '=', '~', '_', '*', '/', '|', '\\', '&' ]\n        normal \"lyy\n\n        for op in [ 'c', 'd', 'y', 'v' ]\n            for cnt in [ '', '1', '2' ]\n                for nlNL in [ '', 'n', 'l', 'N', 'L' ]\n                    for iaIA in [ 'i', 'a', 'I', 'A' ]\n                        execute \"normal \\\"lpfx\"\n                        call s:execute(op, cnt . iaIA . nlNL . del)\n                    endfor\n                endfor\n            endfor\n        endfor\n\n        normal +\n    endfor\n\n    write! test1.out\nendfunction\n\nfunction! s:testMultiline()\n    edit! test2.in\n    normal gg0\n\n    \" TODO: this test fails for `cI{`\n    execute \"normal /comment 1\\<CR>\"\n    execute \"normal cin{foo\\<Esc>\"\n\n    execute \"normal /comment 2\\<CR>\"\n    execute \"normal cin;foo\\<Esc>\"\n\n    execute \"normal /comment 3\\<CR>\"\n    execute \"normal cin`foo\\<Esc>\"\n\n    write! test2.out\nendfunction\n\nfunction s:testSeeking()\n    edit! test3.in\n    normal gg0\n\n    for c in split('ABCDEFGHI', '\\zs')\n        execute \"normal /\"   . c . \"\\<CR>\"\n        execute \"normal ci)\" . c . \"\\<Esc>\"\n    endfor\n\n    for c in split('JKLMNO', '\\zs')\n        execute \"normal /\"   . c . \"\\<CR>\"\n        execute \"normal ci'\" . c . \"\\<Esc>\"\n    endfor\n\n    write! test3.out\nendfunction\n\nfunction s:testVisual()\n    edit! test4.in\n    normal gg0\n\n    for delset in [\n                \\ [ '(', ')', 'b' ],\n                \\ [ '{', '}', 'B' ],\n                \\ [ '[', ']', 'r' ],\n                \\ [ '<', '>', 'a' ],\n                \\ [ 't' ]\n                \\ ]\n        normal \"lyy\n\n        for ia in [ 'i', 'a' ]\n            for del in delset\n                normal \"lpfx\n                execute \"normal v\" . ia . del . ia . del . \"r_\"\n            endfor\n        endfor\n\n        normal +\n    endfor\n\n\n    write! test4.out\nendfunction\n\ncall s:testBasic()\ncall s:testMultiline()\ncall s:testSeeking()\ncall s:testVisual()\n\nquit!\n"
  },
  {
    "path": ".vim/bundle/targets.vim/test/test1.in",
    "content": "a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g\na { b } { c } { { x } } { e } { f } g\na [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g\na < b > < c > < < x > > < e > < f > g\na <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\n\na ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l\na \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l\na ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l\n\na , b , c , d , e , x , g , h , i , k , l\na . b . c . d . e . x . g . h . i . k . l\na ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l\na : b : c : d : e : x : g : h : i : k : l\na + b + c + d + e + x + g + h + i + k + l\na - b - c - d - e - x - g - h - i - k - l\na = b = c = d = e = x = g = h = i = k = l\na ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\na _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l\na * b * c * d * e * x * g * h * i * k * l\na / b / c / d / e / x / g / h / i / k / l\na | b | c | d | e | x | g | h | i | k | l\na \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\na & b & c & d & e & x & g & h & i & k & l\n\n"
  },
  {
    "path": ".vim/bundle/targets.vim/test/test1.ok",
    "content": "a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g\nci(             a ( b ) ( c ) ( (_) ) ( e ) ( f ) g\nci)             a ( b ) ( c ) ( (_) ) ( e ) ( f ) g\ncib             a ( b ) ( c ) ( (_) ) ( e ) ( f ) g\nca(             a ( b ) ( c ) ( _ ) ( e ) ( f ) g\nca)             a ( b ) ( c ) ( _ ) ( e ) ( f ) g\ncab             a ( b ) ( c ) ( _ ) ( e ) ( f ) g\ncI(             a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\ncI)             a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\ncIb             a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\ncA(             a ( b ) ( c ) ( _) ( e ) ( f ) g\ncA)             a ( b ) ( c ) ( _) ( e ) ( f ) g\ncAb             a ( b ) ( c ) ( _) ( e ) ( f ) g\ncin(            a ( b ) ( c ) ( ( x ) ) (_) ( f ) g\ncin)            a ( b ) ( c ) ( ( x ) ) (_) ( f ) g\ncinb            a ( b ) ( c ) ( ( x ) ) (_) ( f ) g\ncan(            a ( b ) ( c ) ( ( x ) ) _ ( f ) g\ncan)            a ( b ) ( c ) ( ( x ) ) _ ( f ) g\ncanb            a ( b ) ( c ) ( ( x ) ) _ ( f ) g\ncIn(            a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\ncIn)            a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\ncInb            a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\ncAn(            a ( b ) ( c ) ( ( x ) ) _( f ) g\ncAn)            a ( b ) ( c ) ( ( x ) ) _( f ) g\ncAnb            a ( b ) ( c ) ( ( x ) ) _( f ) g\ncil(            a ( b ) (_) ( ( x ) ) ( e ) ( f ) g\ncil)            a ( b ) (_) ( ( x ) ) ( e ) ( f ) g\ncilb            a ( b ) (_) ( ( x ) ) ( e ) ( f ) g\ncal(            a ( b ) _ ( ( x ) ) ( e ) ( f ) g\ncal)            a ( b ) _ ( ( x ) ) ( e ) ( f ) g\ncalb            a ( b ) _ ( ( x ) ) ( e ) ( f ) g\ncIl(            a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\ncIl)            a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\ncIlb            a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\ncAl(            a ( b ) _( ( x ) ) ( e ) ( f ) g\ncAl)            a ( b ) _( ( x ) ) ( e ) ( f ) g\ncAlb            a ( b ) _( ( x ) ) ( e ) ( f ) g\nc1i(            a ( b ) ( c ) ( (_) ) ( e ) ( f ) g\nc1i)            a ( b ) ( c ) ( (_) ) ( e ) ( f ) g\nc1ib            a ( b ) ( c ) ( (_) ) ( e ) ( f ) g\nc1a(            a ( b ) ( c ) ( _ ) ( e ) ( f ) g\nc1a)            a ( b ) ( c ) ( _ ) ( e ) ( f ) g\nc1ab            a ( b ) ( c ) ( _ ) ( e ) ( f ) g\nc1I(            a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nc1I)            a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nc1Ib            a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nc1A(            a ( b ) ( c ) ( _) ( e ) ( f ) g\nc1A)            a ( b ) ( c ) ( _) ( e ) ( f ) g\nc1Ab            a ( b ) ( c ) ( _) ( e ) ( f ) g\nc1in(           a ( b ) ( c ) ( ( x ) ) (_) ( f ) g\nc1in)           a ( b ) ( c ) ( ( x ) ) (_) ( f ) g\nc1inb           a ( b ) ( c ) ( ( x ) ) (_) ( f ) g\nc1an(           a ( b ) ( c ) ( ( x ) ) _ ( f ) g\nc1an)           a ( b ) ( c ) ( ( x ) ) _ ( f ) g\nc1anb           a ( b ) ( c ) ( ( x ) ) _ ( f ) g\nc1In(           a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nc1In)           a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nc1Inb           a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nc1An(           a ( b ) ( c ) ( ( x ) ) _( f ) g\nc1An)           a ( b ) ( c ) ( ( x ) ) _( f ) g\nc1Anb           a ( b ) ( c ) ( ( x ) ) _( f ) g\nc1il(           a ( b ) (_) ( ( x ) ) ( e ) ( f ) g\nc1il)           a ( b ) (_) ( ( x ) ) ( e ) ( f ) g\nc1ilb           a ( b ) (_) ( ( x ) ) ( e ) ( f ) g\nc1al(           a ( b ) _ ( ( x ) ) ( e ) ( f ) g\nc1al)           a ( b ) _ ( ( x ) ) ( e ) ( f ) g\nc1alb           a ( b ) _ ( ( x ) ) ( e ) ( f ) g\nc1Il(           a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nc1Il)           a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nc1Ilb           a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nc1Al(           a ( b ) _( ( x ) ) ( e ) ( f ) g\nc1Al)           a ( b ) _( ( x ) ) ( e ) ( f ) g\nc1Alb           a ( b ) _( ( x ) ) ( e ) ( f ) g\nc2i(            a ( b ) ( c ) (_) ( e ) ( f ) g\nc2i)            a ( b ) ( c ) (_) ( e ) ( f ) g\nc2ib            a ( b ) ( c ) (_) ( e ) ( f ) g\nc2a(            a ( b ) ( c ) _ ( e ) ( f ) g\nc2a)            a ( b ) ( c ) _ ( e ) ( f ) g\nc2ab            a ( b ) ( c ) _ ( e ) ( f ) g\nc2I(            a ( b ) ( c ) ( _ ) ( e ) ( f ) g\nc2I)            a ( b ) ( c ) ( _ ) ( e ) ( f ) g\nc2Ib            a ( b ) ( c ) ( _ ) ( e ) ( f ) g\nc2A(            a ( b ) ( c ) _( e ) ( f ) g\nc2A)            a ( b ) ( c ) _( e ) ( f ) g\nc2Ab            a ( b ) ( c ) _( e ) ( f ) g\nc2in(           a ( b ) ( c ) ( ( x ) ) ( e ) (_) g\nc2in)           a ( b ) ( c ) ( ( x ) ) ( e ) (_) g\nc2inb           a ( b ) ( c ) ( ( x ) ) ( e ) (_) g\nc2an(           a ( b ) ( c ) ( ( x ) ) ( e ) _ g\nc2an)           a ( b ) ( c ) ( ( x ) ) ( e ) _ g\nc2anb           a ( b ) ( c ) ( ( x ) ) ( e ) _ g\nc2In(           a ( b ) ( c ) ( ( x ) ) ( e ) ( _ ) g\nc2In)           a ( b ) ( c ) ( ( x ) ) ( e ) ( _ ) g\nc2Inb           a ( b ) ( c ) ( ( x ) ) ( e ) ( _ ) g\nc2An(           a ( b ) ( c ) ( ( x ) ) ( e ) _g\nc2An)           a ( b ) ( c ) ( ( x ) ) ( e ) _g\nc2Anb           a ( b ) ( c ) ( ( x ) ) ( e ) _g\nc2il(           a (_) ( c ) ( ( x ) ) ( e ) ( f ) g\nc2il)           a (_) ( c ) ( ( x ) ) ( e ) ( f ) g\nc2ilb           a (_) ( c ) ( ( x ) ) ( e ) ( f ) g\nc2al(           a _ ( c ) ( ( x ) ) ( e ) ( f ) g\nc2al)           a _ ( c ) ( ( x ) ) ( e ) ( f ) g\nc2alb           a _ ( c ) ( ( x ) ) ( e ) ( f ) g\nc2Il(           a ( _ ) ( c ) ( ( x ) ) ( e ) ( f ) g\nc2Il)           a ( _ ) ( c ) ( ( x ) ) ( e ) ( f ) g\nc2Ilb           a ( _ ) ( c ) ( ( x ) ) ( e ) ( f ) g\nc2Al(           a _( c ) ( ( x ) ) ( e ) ( f ) g\nc2Al)           a _( c ) ( ( x ) ) ( e ) ( f ) g\nc2Alb           a _( c ) ( ( x ) ) ( e ) ( f ) g\ndi(             a ( b ) ( c ) ( () ) ( e ) ( f ) g\ndi)             a ( b ) ( c ) ( () ) ( e ) ( f ) g\ndib             a ( b ) ( c ) ( () ) ( e ) ( f ) g\nda(             a ( b ) ( c ) (  ) ( e ) ( f ) g\nda)             a ( b ) ( c ) (  ) ( e ) ( f ) g\ndab             a ( b ) ( c ) (  ) ( e ) ( f ) g\ndI(             a ( b ) ( c ) ( (  ) ) ( e ) ( f ) g\ndI)             a ( b ) ( c ) ( (  ) ) ( e ) ( f ) g\ndIb             a ( b ) ( c ) ( (  ) ) ( e ) ( f ) g\ndA(             a ( b ) ( c ) ( ) ( e ) ( f ) g\ndA)             a ( b ) ( c ) ( ) ( e ) ( f ) g\ndAb             a ( b ) ( c ) ( ) ( e ) ( f ) g\ndin(            a ( b ) ( c ) ( ( x ) ) () ( f ) g\ndin)            a ( b ) ( c ) ( ( x ) ) () ( f ) g\ndinb            a ( b ) ( c ) ( ( x ) ) () ( f ) g\ndan(            a ( b ) ( c ) ( ( x ) )  ( f ) g\ndan)            a ( b ) ( c ) ( ( x ) )  ( f ) g\ndanb            a ( b ) ( c ) ( ( x ) )  ( f ) g\ndIn(            a ( b ) ( c ) ( ( x ) ) (  ) ( f ) g\ndIn)            a ( b ) ( c ) ( ( x ) ) (  ) ( f ) g\ndInb            a ( b ) ( c ) ( ( x ) ) (  ) ( f ) g\ndAn(            a ( b ) ( c ) ( ( x ) ) ( f ) g\ndAn)            a ( b ) ( c ) ( ( x ) ) ( f ) g\ndAnb            a ( b ) ( c ) ( ( x ) ) ( f ) g\ndil(            a ( b ) () ( ( x ) ) ( e ) ( f ) g\ndil)            a ( b ) () ( ( x ) ) ( e ) ( f ) g\ndilb            a ( b ) () ( ( x ) ) ( e ) ( f ) g\ndal(            a ( b )  ( ( x ) ) ( e ) ( f ) g\ndal)            a ( b )  ( ( x ) ) ( e ) ( f ) g\ndalb            a ( b )  ( ( x ) ) ( e ) ( f ) g\ndIl(            a ( b ) (  ) ( ( x ) ) ( e ) ( f ) g\ndIl)            a ( b ) (  ) ( ( x ) ) ( e ) ( f ) g\ndIlb            a ( b ) (  ) ( ( x ) ) ( e ) ( f ) g\ndAl(            a ( b ) ( ( x ) ) ( e ) ( f ) g\ndAl)            a ( b ) ( ( x ) ) ( e ) ( f ) g\ndAlb            a ( b ) ( ( x ) ) ( e ) ( f ) g\nd1i(            a ( b ) ( c ) ( () ) ( e ) ( f ) g\nd1i)            a ( b ) ( c ) ( () ) ( e ) ( f ) g\nd1ib            a ( b ) ( c ) ( () ) ( e ) ( f ) g\nd1a(            a ( b ) ( c ) (  ) ( e ) ( f ) g\nd1a)            a ( b ) ( c ) (  ) ( e ) ( f ) g\nd1ab            a ( b ) ( c ) (  ) ( e ) ( f ) g\nd1I(            a ( b ) ( c ) ( (  ) ) ( e ) ( f ) g\nd1I)            a ( b ) ( c ) ( (  ) ) ( e ) ( f ) g\nd1Ib            a ( b ) ( c ) ( (  ) ) ( e ) ( f ) g\nd1A(            a ( b ) ( c ) ( ) ( e ) ( f ) g\nd1A)            a ( b ) ( c ) ( ) ( e ) ( f ) g\nd1Ab            a ( b ) ( c ) ( ) ( e ) ( f ) g\nd1in(           a ( b ) ( c ) ( ( x ) ) () ( f ) g\nd1in)           a ( b ) ( c ) ( ( x ) ) () ( f ) g\nd1inb           a ( b ) ( c ) ( ( x ) ) () ( f ) g\nd1an(           a ( b ) ( c ) ( ( x ) )  ( f ) g\nd1an)           a ( b ) ( c ) ( ( x ) )  ( f ) g\nd1anb           a ( b ) ( c ) ( ( x ) )  ( f ) g\nd1In(           a ( b ) ( c ) ( ( x ) ) (  ) ( f ) g\nd1In)           a ( b ) ( c ) ( ( x ) ) (  ) ( f ) g\nd1Inb           a ( b ) ( c ) ( ( x ) ) (  ) ( f ) g\nd1An(           a ( b ) ( c ) ( ( x ) ) ( f ) g\nd1An)           a ( b ) ( c ) ( ( x ) ) ( f ) g\nd1Anb           a ( b ) ( c ) ( ( x ) ) ( f ) g\nd1il(           a ( b ) () ( ( x ) ) ( e ) ( f ) g\nd1il)           a ( b ) () ( ( x ) ) ( e ) ( f ) g\nd1ilb           a ( b ) () ( ( x ) ) ( e ) ( f ) g\nd1al(           a ( b )  ( ( x ) ) ( e ) ( f ) g\nd1al)           a ( b )  ( ( x ) ) ( e ) ( f ) g\nd1alb           a ( b )  ( ( x ) ) ( e ) ( f ) g\nd1Il(           a ( b ) (  ) ( ( x ) ) ( e ) ( f ) g\nd1Il)           a ( b ) (  ) ( ( x ) ) ( e ) ( f ) g\nd1Ilb           a ( b ) (  ) ( ( x ) ) ( e ) ( f ) g\nd1Al(           a ( b ) ( ( x ) ) ( e ) ( f ) g\nd1Al)           a ( b ) ( ( x ) ) ( e ) ( f ) g\nd1Alb           a ( b ) ( ( x ) ) ( e ) ( f ) g\nd2i(            a ( b ) ( c ) () ( e ) ( f ) g\nd2i)            a ( b ) ( c ) () ( e ) ( f ) g\nd2ib            a ( b ) ( c ) () ( e ) ( f ) g\nd2a(            a ( b ) ( c )  ( e ) ( f ) g\nd2a)            a ( b ) ( c )  ( e ) ( f ) g\nd2ab            a ( b ) ( c )  ( e ) ( f ) g\nd2I(            a ( b ) ( c ) (  ) ( e ) ( f ) g\nd2I)            a ( b ) ( c ) (  ) ( e ) ( f ) g\nd2Ib            a ( b ) ( c ) (  ) ( e ) ( f ) g\nd2A(            a ( b ) ( c ) ( e ) ( f ) g\nd2A)            a ( b ) ( c ) ( e ) ( f ) g\nd2Ab            a ( b ) ( c ) ( e ) ( f ) g\nd2in(           a ( b ) ( c ) ( ( x ) ) ( e ) () g\nd2in)           a ( b ) ( c ) ( ( x ) ) ( e ) () g\nd2inb           a ( b ) ( c ) ( ( x ) ) ( e ) () g\nd2an(           a ( b ) ( c ) ( ( x ) ) ( e )  g\nd2an)           a ( b ) ( c ) ( ( x ) ) ( e )  g\nd2anb           a ( b ) ( c ) ( ( x ) ) ( e )  g\nd2In(           a ( b ) ( c ) ( ( x ) ) ( e ) (  ) g\nd2In)           a ( b ) ( c ) ( ( x ) ) ( e ) (  ) g\nd2Inb           a ( b ) ( c ) ( ( x ) ) ( e ) (  ) g\nd2An(           a ( b ) ( c ) ( ( x ) ) ( e ) g\nd2An)           a ( b ) ( c ) ( ( x ) ) ( e ) g\nd2Anb           a ( b ) ( c ) ( ( x ) ) ( e ) g\nd2il(           a () ( c ) ( ( x ) ) ( e ) ( f ) g\nd2il)           a () ( c ) ( ( x ) ) ( e ) ( f ) g\nd2ilb           a () ( c ) ( ( x ) ) ( e ) ( f ) g\nd2al(           a  ( c ) ( ( x ) ) ( e ) ( f ) g\nd2al)           a  ( c ) ( ( x ) ) ( e ) ( f ) g\nd2alb           a  ( c ) ( ( x ) ) ( e ) ( f ) g\nd2Il(           a (  ) ( c ) ( ( x ) ) ( e ) ( f ) g\nd2Il)           a (  ) ( c ) ( ( x ) ) ( e ) ( f ) g\nd2Ilb           a (  ) ( c ) ( ( x ) ) ( e ) ( f ) g\nd2Al(           a ( c ) ( ( x ) ) ( e ) ( f ) g\nd2Al)           a ( c ) ( ( x ) ) ( e ) ( f ) g\nd2Alb           a ( c ) ( ( x ) ) ( e ) ( f ) g\nyi(             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' x '\nyi)             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' x '\nyib             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' x '\nya(             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\nya)             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\nyab             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\nyI(             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'x'\nyI)             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'x'\nyIb             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'x'\nyA(             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x ) '\nyA)             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x ) '\nyAb             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x ) '\nyin(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' e '\nyin)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' e '\nyinb            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' e '\nyan(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e )'\nyan)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e )'\nyanb            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e )'\nyIn(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'e'\nyIn)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'e'\nyInb            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'e'\nyAn(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e ) '\nyAn)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e ) '\nyAnb            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e ) '\nyil(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' c '\nyil)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' c '\nyilb            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' c '\nyal(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c )'\nyal)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c )'\nyalb            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c )'\nyIl(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'c'\nyIl)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'c'\nyIlb            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'c'\nyAl(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c ) '\nyAl)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c ) '\nyAlb            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c ) '\ny1i(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' x '\ny1i)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' x '\ny1ib            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' x '\ny1a(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\ny1a)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\ny1ab            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\ny1I(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'x'\ny1I)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'x'\ny1Ib            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'x'\ny1A(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x ) '\ny1A)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x ) '\ny1Ab            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x ) '\ny1in(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' e '\ny1in)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' e '\ny1inb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' e '\ny1an(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e )'\ny1an)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e )'\ny1anb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e )'\ny1In(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'e'\ny1In)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'e'\ny1Inb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'e'\ny1An(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e ) '\ny1An)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e ) '\ny1Anb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e ) '\ny1il(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' c '\ny1il)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' c '\ny1ilb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' c '\ny1al(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c )'\ny1al)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c )'\ny1alb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c )'\ny1Il(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'c'\ny1Il)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'c'\ny1Ilb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'c'\ny1Al(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c ) '\ny1Al)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c ) '\ny1Alb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c ) '\ny2i(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' ( x ) '\ny2i)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' ( x ) '\ny2ib            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' ( x ) '\ny2a(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( ( x ) )'\ny2a)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( ( x ) )'\ny2ab            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( ( x ) )'\ny2I(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\ny2I)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\ny2Ib            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\ny2A(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( ( x ) ) '\ny2A)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( ( x ) ) '\ny2Ab            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( ( x ) ) '\ny2in(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' f '\ny2in)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' f '\ny2inb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' f '\ny2an(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( f )'\ny2an)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( f )'\ny2anb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( f )'\ny2In(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'f'\ny2In)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'f'\ny2Inb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'f'\ny2An(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( f ) '\ny2An)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( f ) '\ny2Anb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( f ) '\ny2il(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' b '\ny2il)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' b '\ny2ilb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' b '\ny2al(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( b )'\ny2al)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( b )'\ny2alb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( b )'\ny2Il(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'b'\ny2Il)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'b'\ny2Ilb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'b'\ny2Al(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( b ) '\ny2Al)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( b ) '\ny2Alb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( b ) '\nvi(             a ( b ) ( c ) ( (___) ) ( e ) ( f ) g\nvi)             a ( b ) ( c ) ( (___) ) ( e ) ( f ) g\nvib             a ( b ) ( c ) ( (___) ) ( e ) ( f ) g\nva(             a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nva)             a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nvab             a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nvI(             a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nvI)             a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nvIb             a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nvA(             a ( b ) ( c ) ( ______) ( e ) ( f ) g\nvA)             a ( b ) ( c ) ( ______) ( e ) ( f ) g\nvAb             a ( b ) ( c ) ( ______) ( e ) ( f ) g\nvin(            a ( b ) ( c ) ( ( x ) ) (___) ( f ) g\nvin)            a ( b ) ( c ) ( ( x ) ) (___) ( f ) g\nvinb            a ( b ) ( c ) ( ( x ) ) (___) ( f ) g\nvan(            a ( b ) ( c ) ( ( x ) ) _____ ( f ) g\nvan)            a ( b ) ( c ) ( ( x ) ) _____ ( f ) g\nvanb            a ( b ) ( c ) ( ( x ) ) _____ ( f ) g\nvIn(            a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nvIn)            a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nvInb            a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nvAn(            a ( b ) ( c ) ( ( x ) ) ______( f ) g\nvAn)            a ( b ) ( c ) ( ( x ) ) ______( f ) g\nvAnb            a ( b ) ( c ) ( ( x ) ) ______( f ) g\nvil(            a ( b ) (___) ( ( x ) ) ( e ) ( f ) g\nvil)            a ( b ) (___) ( ( x ) ) ( e ) ( f ) g\nvilb            a ( b ) (___) ( ( x ) ) ( e ) ( f ) g\nval(            a ( b ) _____ ( ( x ) ) ( e ) ( f ) g\nval)            a ( b ) _____ ( ( x ) ) ( e ) ( f ) g\nvalb            a ( b ) _____ ( ( x ) ) ( e ) ( f ) g\nvIl(            a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nvIl)            a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nvIlb            a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nvAl(            a ( b ) ______( ( x ) ) ( e ) ( f ) g\nvAl)            a ( b ) ______( ( x ) ) ( e ) ( f ) g\nvAlb            a ( b ) ______( ( x ) ) ( e ) ( f ) g\nv1i(            a ( b ) ( c ) ( (___) ) ( e ) ( f ) g\nv1i)            a ( b ) ( c ) ( (___) ) ( e ) ( f ) g\nv1ib            a ( b ) ( c ) ( (___) ) ( e ) ( f ) g\nv1a(            a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nv1a)            a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nv1ab            a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nv1I(            a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nv1I)            a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nv1Ib            a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nv1A(            a ( b ) ( c ) ( ______) ( e ) ( f ) g\nv1A)            a ( b ) ( c ) ( ______) ( e ) ( f ) g\nv1Ab            a ( b ) ( c ) ( ______) ( e ) ( f ) g\nv1in(           a ( b ) ( c ) ( ( x ) ) (___) ( f ) g\nv1in)           a ( b ) ( c ) ( ( x ) ) (___) ( f ) g\nv1inb           a ( b ) ( c ) ( ( x ) ) (___) ( f ) g\nv1an(           a ( b ) ( c ) ( ( x ) ) _____ ( f ) g\nv1an)           a ( b ) ( c ) ( ( x ) ) _____ ( f ) g\nv1anb           a ( b ) ( c ) ( ( x ) ) _____ ( f ) g\nv1In(           a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nv1In)           a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nv1Inb           a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nv1An(           a ( b ) ( c ) ( ( x ) ) ______( f ) g\nv1An)           a ( b ) ( c ) ( ( x ) ) ______( f ) g\nv1Anb           a ( b ) ( c ) ( ( x ) ) ______( f ) g\nv1il(           a ( b ) (___) ( ( x ) ) ( e ) ( f ) g\nv1il)           a ( b ) (___) ( ( x ) ) ( e ) ( f ) g\nv1ilb           a ( b ) (___) ( ( x ) ) ( e ) ( f ) g\nv1al(           a ( b ) _____ ( ( x ) ) ( e ) ( f ) g\nv1al)           a ( b ) _____ ( ( x ) ) ( e ) ( f ) g\nv1alb           a ( b ) _____ ( ( x ) ) ( e ) ( f ) g\nv1Il(           a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nv1Il)           a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nv1Ilb           a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nv1Al(           a ( b ) ______( ( x ) ) ( e ) ( f ) g\nv1Al)           a ( b ) ______( ( x ) ) ( e ) ( f ) g\nv1Alb           a ( b ) ______( ( x ) ) ( e ) ( f ) g\nv2i(            a ( b ) ( c ) (_______) ( e ) ( f ) g\nv2i)            a ( b ) ( c ) (_______) ( e ) ( f ) g\nv2ib            a ( b ) ( c ) (_______) ( e ) ( f ) g\nv2a(            a ( b ) ( c ) _________ ( e ) ( f ) g\nv2a)            a ( b ) ( c ) _________ ( e ) ( f ) g\nv2ab            a ( b ) ( c ) _________ ( e ) ( f ) g\nv2I(            a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nv2I)            a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nv2Ib            a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nv2A(            a ( b ) ( c ) __________( e ) ( f ) g\nv2A)            a ( b ) ( c ) __________( e ) ( f ) g\nv2Ab            a ( b ) ( c ) __________( e ) ( f ) g\nv2in(           a ( b ) ( c ) ( ( x ) ) ( e ) (___) g\nv2in)           a ( b ) ( c ) ( ( x ) ) ( e ) (___) g\nv2inb           a ( b ) ( c ) ( ( x ) ) ( e ) (___) g\nv2an(           a ( b ) ( c ) ( ( x ) ) ( e ) _____ g\nv2an)           a ( b ) ( c ) ( ( x ) ) ( e ) _____ g\nv2anb           a ( b ) ( c ) ( ( x ) ) ( e ) _____ g\nv2In(           a ( b ) ( c ) ( ( x ) ) ( e ) ( _ ) g\nv2In)           a ( b ) ( c ) ( ( x ) ) ( e ) ( _ ) g\nv2Inb           a ( b ) ( c ) ( ( x ) ) ( e ) ( _ ) g\nv2An(           a ( b ) ( c ) ( ( x ) ) ( e ) ______g\nv2An)           a ( b ) ( c ) ( ( x ) ) ( e ) ______g\nv2Anb           a ( b ) ( c ) ( ( x ) ) ( e ) ______g\nv2il(           a (___) ( c ) ( ( x ) ) ( e ) ( f ) g\nv2il)           a (___) ( c ) ( ( x ) ) ( e ) ( f ) g\nv2ilb           a (___) ( c ) ( ( x ) ) ( e ) ( f ) g\nv2al(           a _____ ( c ) ( ( x ) ) ( e ) ( f ) g\nv2al)           a _____ ( c ) ( ( x ) ) ( e ) ( f ) g\nv2alb           a _____ ( c ) ( ( x ) ) ( e ) ( f ) g\nv2Il(           a ( _ ) ( c ) ( ( x ) ) ( e ) ( f ) g\nv2Il)           a ( _ ) ( c ) ( ( x ) ) ( e ) ( f ) g\nv2Ilb           a ( _ ) ( c ) ( ( x ) ) ( e ) ( f ) g\nv2Al(           a ______( c ) ( ( x ) ) ( e ) ( f ) g\nv2Al)           a ______( c ) ( ( x ) ) ( e ) ( f ) g\nv2Alb           a ______( c ) ( ( x ) ) ( e ) ( f ) g\na { b } { c } { { x } } { e } { f } g\nci{             a { b } { c } { {_} } { e } { f } g\nci}             a { b } { c } { {_} } { e } { f } g\nciB             a { b } { c } { {_} } { e } { f } g\nca{             a { b } { c } { _ } { e } { f } g\nca}             a { b } { c } { _ } { e } { f } g\ncaB             a { b } { c } { _ } { e } { f } g\ncI{             a { b } { c } { { _ } } { e } { f } g\ncI}             a { b } { c } { { _ } } { e } { f } g\ncIB             a { b } { c } { { _ } } { e } { f } g\ncA{             a { b } { c } { _} { e } { f } g\ncA}             a { b } { c } { _} { e } { f } g\ncAB             a { b } { c } { _} { e } { f } g\ncin{            a { b } { c } { { x } } {_} { f } g\ncin}            a { b } { c } { { x } } {_} { f } g\ncinB            a { b } { c } { { x } } {_} { f } g\ncan{            a { b } { c } { { x } } _ { f } g\ncan}            a { b } { c } { { x } } _ { f } g\ncanB            a { b } { c } { { x } } _ { f } g\ncIn{            a { b } { c } { { x } } { _ } { f } g\ncIn}            a { b } { c } { { x } } { _ } { f } g\ncInB            a { b } { c } { { x } } { _ } { f } g\ncAn{            a { b } { c } { { x } } _{ f } g\ncAn}            a { b } { c } { { x } } _{ f } g\ncAnB            a { b } { c } { { x } } _{ f } g\ncil{            a { b } {_} { { x } } { e } { f } g\ncil}            a { b } {_} { { x } } { e } { f } g\ncilB            a { b } {_} { { x } } { e } { f } g\ncal{            a { b } _ { { x } } { e } { f } g\ncal}            a { b } _ { { x } } { e } { f } g\ncalB            a { b } _ { { x } } { e } { f } g\ncIl{            a { b } { _ } { { x } } { e } { f } g\ncIl}            a { b } { _ } { { x } } { e } { f } g\ncIlB            a { b } { _ } { { x } } { e } { f } g\ncAl{            a { b } _{ { x } } { e } { f } g\ncAl}            a { b } _{ { x } } { e } { f } g\ncAlB            a { b } _{ { x } } { e } { f } g\nc1i{            a { b } { c } { {_} } { e } { f } g\nc1i}            a { b } { c } { {_} } { e } { f } g\nc1iB            a { b } { c } { {_} } { e } { f } g\nc1a{            a { b } { c } { _ } { e } { f } g\nc1a}            a { b } { c } { _ } { e } { f } g\nc1aB            a { b } { c } { _ } { e } { f } g\nc1I{            a { b } { c } { { _ } } { e } { f } g\nc1I}            a { b } { c } { { _ } } { e } { f } g\nc1IB            a { b } { c } { { _ } } { e } { f } g\nc1A{            a { b } { c } { _} { e } { f } g\nc1A}            a { b } { c } { _} { e } { f } g\nc1AB            a { b } { c } { _} { e } { f } g\nc1in{           a { b } { c } { { x } } {_} { f } g\nc1in}           a { b } { c } { { x } } {_} { f } g\nc1inB           a { b } { c } { { x } } {_} { f } g\nc1an{           a { b } { c } { { x } } _ { f } g\nc1an}           a { b } { c } { { x } } _ { f } g\nc1anB           a { b } { c } { { x } } _ { f } g\nc1In{           a { b } { c } { { x } } { _ } { f } g\nc1In}           a { b } { c } { { x } } { _ } { f } g\nc1InB           a { b } { c } { { x } } { _ } { f } g\nc1An{           a { b } { c } { { x } } _{ f } g\nc1An}           a { b } { c } { { x } } _{ f } g\nc1AnB           a { b } { c } { { x } } _{ f } g\nc1il{           a { b } {_} { { x } } { e } { f } g\nc1il}           a { b } {_} { { x } } { e } { f } g\nc1ilB           a { b } {_} { { x } } { e } { f } g\nc1al{           a { b } _ { { x } } { e } { f } g\nc1al}           a { b } _ { { x } } { e } { f } g\nc1alB           a { b } _ { { x } } { e } { f } g\nc1Il{           a { b } { _ } { { x } } { e } { f } g\nc1Il}           a { b } { _ } { { x } } { e } { f } g\nc1IlB           a { b } { _ } { { x } } { e } { f } g\nc1Al{           a { b } _{ { x } } { e } { f } g\nc1Al}           a { b } _{ { x } } { e } { f } g\nc1AlB           a { b } _{ { x } } { e } { f } g\nc2i{            a { b } { c } {_} { e } { f } g\nc2i}            a { b } { c } {_} { e } { f } g\nc2iB            a { b } { c } {_} { e } { f } g\nc2a{            a { b } { c } _ { e } { f } g\nc2a}            a { b } { c } _ { e } { f } g\nc2aB            a { b } { c } _ { e } { f } g\nc2I{            a { b } { c } { _ } { e } { f } g\nc2I}            a { b } { c } { _ } { e } { f } g\nc2IB            a { b } { c } { _ } { e } { f } g\nc2A{            a { b } { c } _{ e } { f } g\nc2A}            a { b } { c } _{ e } { f } g\nc2AB            a { b } { c } _{ e } { f } g\nc2in{           a { b } { c } { { x } } { e } {_} g\nc2in}           a { b } { c } { { x } } { e } {_} g\nc2inB           a { b } { c } { { x } } { e } {_} g\nc2an{           a { b } { c } { { x } } { e } _ g\nc2an}           a { b } { c } { { x } } { e } _ g\nc2anB           a { b } { c } { { x } } { e } _ g\nc2In{           a { b } { c } { { x } } { e } { _ } g\nc2In}           a { b } { c } { { x } } { e } { _ } g\nc2InB           a { b } { c } { { x } } { e } { _ } g\nc2An{           a { b } { c } { { x } } { e } _g\nc2An}           a { b } { c } { { x } } { e } _g\nc2AnB           a { b } { c } { { x } } { e } _g\nc2il{           a {_} { c } { { x } } { e } { f } g\nc2il}           a {_} { c } { { x } } { e } { f } g\nc2ilB           a {_} { c } { { x } } { e } { f } g\nc2al{           a _ { c } { { x } } { e } { f } g\nc2al}           a _ { c } { { x } } { e } { f } g\nc2alB           a _ { c } { { x } } { e } { f } g\nc2Il{           a { _ } { c } { { x } } { e } { f } g\nc2Il}           a { _ } { c } { { x } } { e } { f } g\nc2IlB           a { _ } { c } { { x } } { e } { f } g\nc2Al{           a _{ c } { { x } } { e } { f } g\nc2Al}           a _{ c } { { x } } { e } { f } g\nc2AlB           a _{ c } { { x } } { e } { f } g\ndi{             a { b } { c } { {} } { e } { f } g\ndi}             a { b } { c } { {} } { e } { f } g\ndiB             a { b } { c } { {} } { e } { f } g\nda{             a { b } { c } {  } { e } { f } g\nda}             a { b } { c } {  } { e } { f } g\ndaB             a { b } { c } {  } { e } { f } g\ndI{             a { b } { c } { {  } } { e } { f } g\ndI}             a { b } { c } { {  } } { e } { f } g\ndIB             a { b } { c } { {  } } { e } { f } g\ndA{             a { b } { c } { } { e } { f } g\ndA}             a { b } { c } { } { e } { f } g\ndAB             a { b } { c } { } { e } { f } g\ndin{            a { b } { c } { { x } } {} { f } g\ndin}            a { b } { c } { { x } } {} { f } g\ndinB            a { b } { c } { { x } } {} { f } g\ndan{            a { b } { c } { { x } }  { f } g\ndan}            a { b } { c } { { x } }  { f } g\ndanB            a { b } { c } { { x } }  { f } g\ndIn{            a { b } { c } { { x } } {  } { f } g\ndIn}            a { b } { c } { { x } } {  } { f } g\ndInB            a { b } { c } { { x } } {  } { f } g\ndAn{            a { b } { c } { { x } } { f } g\ndAn}            a { b } { c } { { x } } { f } g\ndAnB            a { b } { c } { { x } } { f } g\ndil{            a { b } {} { { x } } { e } { f } g\ndil}            a { b } {} { { x } } { e } { f } g\ndilB            a { b } {} { { x } } { e } { f } g\ndal{            a { b }  { { x } } { e } { f } g\ndal}            a { b }  { { x } } { e } { f } g\ndalB            a { b }  { { x } } { e } { f } g\ndIl{            a { b } {  } { { x } } { e } { f } g\ndIl}            a { b } {  } { { x } } { e } { f } g\ndIlB            a { b } {  } { { x } } { e } { f } g\ndAl{            a { b } { { x } } { e } { f } g\ndAl}            a { b } { { x } } { e } { f } g\ndAlB            a { b } { { x } } { e } { f } g\nd1i{            a { b } { c } { {} } { e } { f } g\nd1i}            a { b } { c } { {} } { e } { f } g\nd1iB            a { b } { c } { {} } { e } { f } g\nd1a{            a { b } { c } {  } { e } { f } g\nd1a}            a { b } { c } {  } { e } { f } g\nd1aB            a { b } { c } {  } { e } { f } g\nd1I{            a { b } { c } { {  } } { e } { f } g\nd1I}            a { b } { c } { {  } } { e } { f } g\nd1IB            a { b } { c } { {  } } { e } { f } g\nd1A{            a { b } { c } { } { e } { f } g\nd1A}            a { b } { c } { } { e } { f } g\nd1AB            a { b } { c } { } { e } { f } g\nd1in{           a { b } { c } { { x } } {} { f } g\nd1in}           a { b } { c } { { x } } {} { f } g\nd1inB           a { b } { c } { { x } } {} { f } g\nd1an{           a { b } { c } { { x } }  { f } g\nd1an}           a { b } { c } { { x } }  { f } g\nd1anB           a { b } { c } { { x } }  { f } g\nd1In{           a { b } { c } { { x } } {  } { f } g\nd1In}           a { b } { c } { { x } } {  } { f } g\nd1InB           a { b } { c } { { x } } {  } { f } g\nd1An{           a { b } { c } { { x } } { f } g\nd1An}           a { b } { c } { { x } } { f } g\nd1AnB           a { b } { c } { { x } } { f } g\nd1il{           a { b } {} { { x } } { e } { f } g\nd1il}           a { b } {} { { x } } { e } { f } g\nd1ilB           a { b } {} { { x } } { e } { f } g\nd1al{           a { b }  { { x } } { e } { f } g\nd1al}           a { b }  { { x } } { e } { f } g\nd1alB           a { b }  { { x } } { e } { f } g\nd1Il{           a { b } {  } { { x } } { e } { f } g\nd1Il}           a { b } {  } { { x } } { e } { f } g\nd1IlB           a { b } {  } { { x } } { e } { f } g\nd1Al{           a { b } { { x } } { e } { f } g\nd1Al}           a { b } { { x } } { e } { f } g\nd1AlB           a { b } { { x } } { e } { f } g\nd2i{            a { b } { c } {} { e } { f } g\nd2i}            a { b } { c } {} { e } { f } g\nd2iB            a { b } { c } {} { e } { f } g\nd2a{            a { b } { c }  { e } { f } g\nd2a}            a { b } { c }  { e } { f } g\nd2aB            a { b } { c }  { e } { f } g\nd2I{            a { b } { c } {  } { e } { f } g\nd2I}            a { b } { c } {  } { e } { f } g\nd2IB            a { b } { c } {  } { e } { f } g\nd2A{            a { b } { c } { e } { f } g\nd2A}            a { b } { c } { e } { f } g\nd2AB            a { b } { c } { e } { f } g\nd2in{           a { b } { c } { { x } } { e } {} g\nd2in}           a { b } { c } { { x } } { e } {} g\nd2inB           a { b } { c } { { x } } { e } {} g\nd2an{           a { b } { c } { { x } } { e }  g\nd2an}           a { b } { c } { { x } } { e }  g\nd2anB           a { b } { c } { { x } } { e }  g\nd2In{           a { b } { c } { { x } } { e } {  } g\nd2In}           a { b } { c } { { x } } { e } {  } g\nd2InB           a { b } { c } { { x } } { e } {  } g\nd2An{           a { b } { c } { { x } } { e } g\nd2An}           a { b } { c } { { x } } { e } g\nd2AnB           a { b } { c } { { x } } { e } g\nd2il{           a {} { c } { { x } } { e } { f } g\nd2il}           a {} { c } { { x } } { e } { f } g\nd2ilB           a {} { c } { { x } } { e } { f } g\nd2al{           a  { c } { { x } } { e } { f } g\nd2al}           a  { c } { { x } } { e } { f } g\nd2alB           a  { c } { { x } } { e } { f } g\nd2Il{           a {  } { c } { { x } } { e } { f } g\nd2Il}           a {  } { c } { { x } } { e } { f } g\nd2IlB           a {  } { c } { { x } } { e } { f } g\nd2Al{           a { c } { { x } } { e } { f } g\nd2Al}           a { c } { { x } } { e } { f } g\nd2AlB           a { c } { { x } } { e } { f } g\nyi{             a { b } { c } { { x } } { e } { f } g           ' x '\nyi}             a { b } { c } { { x } } { e } { f } g           ' x '\nyiB             a { b } { c } { { x } } { e } { f } g           ' x '\nya{             a { b } { c } { { x } } { e } { f } g           '{ x }'\nya}             a { b } { c } { { x } } { e } { f } g           '{ x }'\nyaB             a { b } { c } { { x } } { e } { f } g           '{ x }'\nyI{             a { b } { c } { { x } } { e } { f } g           'x'\nyI}             a { b } { c } { { x } } { e } { f } g           'x'\nyIB             a { b } { c } { { x } } { e } { f } g           'x'\nyA{             a { b } { c } { { x } } { e } { f } g           '{ x } '\nyA}             a { b } { c } { { x } } { e } { f } g           '{ x } '\nyAB             a { b } { c } { { x } } { e } { f } g           '{ x } '\nyin{            a { b } { c } { { x } } { e } { f } g           ' e '\nyin}            a { b } { c } { { x } } { e } { f } g           ' e '\nyinB            a { b } { c } { { x } } { e } { f } g           ' e '\nyan{            a { b } { c } { { x } } { e } { f } g           '{ e }'\nyan}            a { b } { c } { { x } } { e } { f } g           '{ e }'\nyanB            a { b } { c } { { x } } { e } { f } g           '{ e }'\nyIn{            a { b } { c } { { x } } { e } { f } g           'e'\nyIn}            a { b } { c } { { x } } { e } { f } g           'e'\nyInB            a { b } { c } { { x } } { e } { f } g           'e'\nyAn{            a { b } { c } { { x } } { e } { f } g           '{ e } '\nyAn}            a { b } { c } { { x } } { e } { f } g           '{ e } '\nyAnB            a { b } { c } { { x } } { e } { f } g           '{ e } '\nyil{            a { b } { c } { { x } } { e } { f } g           ' c '\nyil}            a { b } { c } { { x } } { e } { f } g           ' c '\nyilB            a { b } { c } { { x } } { e } { f } g           ' c '\nyal{            a { b } { c } { { x } } { e } { f } g           '{ c }'\nyal}            a { b } { c } { { x } } { e } { f } g           '{ c }'\nyalB            a { b } { c } { { x } } { e } { f } g           '{ c }'\nyIl{            a { b } { c } { { x } } { e } { f } g           'c'\nyIl}            a { b } { c } { { x } } { e } { f } g           'c'\nyIlB            a { b } { c } { { x } } { e } { f } g           'c'\nyAl{            a { b } { c } { { x } } { e } { f } g           '{ c } '\nyAl}            a { b } { c } { { x } } { e } { f } g           '{ c } '\nyAlB            a { b } { c } { { x } } { e } { f } g           '{ c } '\ny1i{            a { b } { c } { { x } } { e } { f } g           ' x '\ny1i}            a { b } { c } { { x } } { e } { f } g           ' x '\ny1iB            a { b } { c } { { x } } { e } { f } g           ' x '\ny1a{            a { b } { c } { { x } } { e } { f } g           '{ x }'\ny1a}            a { b } { c } { { x } } { e } { f } g           '{ x }'\ny1aB            a { b } { c } { { x } } { e } { f } g           '{ x }'\ny1I{            a { b } { c } { { x } } { e } { f } g           'x'\ny1I}            a { b } { c } { { x } } { e } { f } g           'x'\ny1IB            a { b } { c } { { x } } { e } { f } g           'x'\ny1A{            a { b } { c } { { x } } { e } { f } g           '{ x } '\ny1A}            a { b } { c } { { x } } { e } { f } g           '{ x } '\ny1AB            a { b } { c } { { x } } { e } { f } g           '{ x } '\ny1in{           a { b } { c } { { x } } { e } { f } g           ' e '\ny1in}           a { b } { c } { { x } } { e } { f } g           ' e '\ny1inB           a { b } { c } { { x } } { e } { f } g           ' e '\ny1an{           a { b } { c } { { x } } { e } { f } g           '{ e }'\ny1an}           a { b } { c } { { x } } { e } { f } g           '{ e }'\ny1anB           a { b } { c } { { x } } { e } { f } g           '{ e }'\ny1In{           a { b } { c } { { x } } { e } { f } g           'e'\ny1In}           a { b } { c } { { x } } { e } { f } g           'e'\ny1InB           a { b } { c } { { x } } { e } { f } g           'e'\ny1An{           a { b } { c } { { x } } { e } { f } g           '{ e } '\ny1An}           a { b } { c } { { x } } { e } { f } g           '{ e } '\ny1AnB           a { b } { c } { { x } } { e } { f } g           '{ e } '\ny1il{           a { b } { c } { { x } } { e } { f } g           ' c '\ny1il}           a { b } { c } { { x } } { e } { f } g           ' c '\ny1ilB           a { b } { c } { { x } } { e } { f } g           ' c '\ny1al{           a { b } { c } { { x } } { e } { f } g           '{ c }'\ny1al}           a { b } { c } { { x } } { e } { f } g           '{ c }'\ny1alB           a { b } { c } { { x } } { e } { f } g           '{ c }'\ny1Il{           a { b } { c } { { x } } { e } { f } g           'c'\ny1Il}           a { b } { c } { { x } } { e } { f } g           'c'\ny1IlB           a { b } { c } { { x } } { e } { f } g           'c'\ny1Al{           a { b } { c } { { x } } { e } { f } g           '{ c } '\ny1Al}           a { b } { c } { { x } } { e } { f } g           '{ c } '\ny1AlB           a { b } { c } { { x } } { e } { f } g           '{ c } '\ny2i{            a { b } { c } { { x } } { e } { f } g           ' { x } '\ny2i}            a { b } { c } { { x } } { e } { f } g           ' { x } '\ny2iB            a { b } { c } { { x } } { e } { f } g           ' { x } '\ny2a{            a { b } { c } { { x } } { e } { f } g           '{ { x } }'\ny2a}            a { b } { c } { { x } } { e } { f } g           '{ { x } }'\ny2aB            a { b } { c } { { x } } { e } { f } g           '{ { x } }'\ny2I{            a { b } { c } { { x } } { e } { f } g           '{ x }'\ny2I}            a { b } { c } { { x } } { e } { f } g           '{ x }'\ny2IB            a { b } { c } { { x } } { e } { f } g           '{ x }'\ny2A{            a { b } { c } { { x } } { e } { f } g           '{ { x } } '\ny2A}            a { b } { c } { { x } } { e } { f } g           '{ { x } } '\ny2AB            a { b } { c } { { x } } { e } { f } g           '{ { x } } '\ny2in{           a { b } { c } { { x } } { e } { f } g           ' f '\ny2in}           a { b } { c } { { x } } { e } { f } g           ' f '\ny2inB           a { b } { c } { { x } } { e } { f } g           ' f '\ny2an{           a { b } { c } { { x } } { e } { f } g           '{ f }'\ny2an}           a { b } { c } { { x } } { e } { f } g           '{ f }'\ny2anB           a { b } { c } { { x } } { e } { f } g           '{ f }'\ny2In{           a { b } { c } { { x } } { e } { f } g           'f'\ny2In}           a { b } { c } { { x } } { e } { f } g           'f'\ny2InB           a { b } { c } { { x } } { e } { f } g           'f'\ny2An{           a { b } { c } { { x } } { e } { f } g           '{ f } '\ny2An}           a { b } { c } { { x } } { e } { f } g           '{ f } '\ny2AnB           a { b } { c } { { x } } { e } { f } g           '{ f } '\ny2il{           a { b } { c } { { x } } { e } { f } g           ' b '\ny2il}           a { b } { c } { { x } } { e } { f } g           ' b '\ny2ilB           a { b } { c } { { x } } { e } { f } g           ' b '\ny2al{           a { b } { c } { { x } } { e } { f } g           '{ b }'\ny2al}           a { b } { c } { { x } } { e } { f } g           '{ b }'\ny2alB           a { b } { c } { { x } } { e } { f } g           '{ b }'\ny2Il{           a { b } { c } { { x } } { e } { f } g           'b'\ny2Il}           a { b } { c } { { x } } { e } { f } g           'b'\ny2IlB           a { b } { c } { { x } } { e } { f } g           'b'\ny2Al{           a { b } { c } { { x } } { e } { f } g           '{ b } '\ny2Al}           a { b } { c } { { x } } { e } { f } g           '{ b } '\ny2AlB           a { b } { c } { { x } } { e } { f } g           '{ b } '\nvi{             a { b } { c } { {___} } { e } { f } g\nvi}             a { b } { c } { {___} } { e } { f } g\nviB             a { b } { c } { {___} } { e } { f } g\nva{             a { b } { c } { _____ } { e } { f } g\nva}             a { b } { c } { _____ } { e } { f } g\nvaB             a { b } { c } { _____ } { e } { f } g\nvI{             a { b } { c } { { _ } } { e } { f } g\nvI}             a { b } { c } { { _ } } { e } { f } g\nvIB             a { b } { c } { { _ } } { e } { f } g\nvA{             a { b } { c } { ______} { e } { f } g\nvA}             a { b } { c } { ______} { e } { f } g\nvAB             a { b } { c } { ______} { e } { f } g\nvin{            a { b } { c } { { x } } {___} { f } g\nvin}            a { b } { c } { { x } } {___} { f } g\nvinB            a { b } { c } { { x } } {___} { f } g\nvan{            a { b } { c } { { x } } _____ { f } g\nvan}            a { b } { c } { { x } } _____ { f } g\nvanB            a { b } { c } { { x } } _____ { f } g\nvIn{            a { b } { c } { { x } } { _ } { f } g\nvIn}            a { b } { c } { { x } } { _ } { f } g\nvInB            a { b } { c } { { x } } { _ } { f } g\nvAn{            a { b } { c } { { x } } ______{ f } g\nvAn}            a { b } { c } { { x } } ______{ f } g\nvAnB            a { b } { c } { { x } } ______{ f } g\nvil{            a { b } {___} { { x } } { e } { f } g\nvil}            a { b } {___} { { x } } { e } { f } g\nvilB            a { b } {___} { { x } } { e } { f } g\nval{            a { b } _____ { { x } } { e } { f } g\nval}            a { b } _____ { { x } } { e } { f } g\nvalB            a { b } _____ { { x } } { e } { f } g\nvIl{            a { b } { _ } { { x } } { e } { f } g\nvIl}            a { b } { _ } { { x } } { e } { f } g\nvIlB            a { b } { _ } { { x } } { e } { f } g\nvAl{            a { b } ______{ { x } } { e } { f } g\nvAl}            a { b } ______{ { x } } { e } { f } g\nvAlB            a { b } ______{ { x } } { e } { f } g\nv1i{            a { b } { c } { {___} } { e } { f } g\nv1i}            a { b } { c } { {___} } { e } { f } g\nv1iB            a { b } { c } { {___} } { e } { f } g\nv1a{            a { b } { c } { _____ } { e } { f } g\nv1a}            a { b } { c } { _____ } { e } { f } g\nv1aB            a { b } { c } { _____ } { e } { f } g\nv1I{            a { b } { c } { { _ } } { e } { f } g\nv1I}            a { b } { c } { { _ } } { e } { f } g\nv1IB            a { b } { c } { { _ } } { e } { f } g\nv1A{            a { b } { c } { ______} { e } { f } g\nv1A}            a { b } { c } { ______} { e } { f } g\nv1AB            a { b } { c } { ______} { e } { f } g\nv1in{           a { b } { c } { { x } } {___} { f } g\nv1in}           a { b } { c } { { x } } {___} { f } g\nv1inB           a { b } { c } { { x } } {___} { f } g\nv1an{           a { b } { c } { { x } } _____ { f } g\nv1an}           a { b } { c } { { x } } _____ { f } g\nv1anB           a { b } { c } { { x } } _____ { f } g\nv1In{           a { b } { c } { { x } } { _ } { f } g\nv1In}           a { b } { c } { { x } } { _ } { f } g\nv1InB           a { b } { c } { { x } } { _ } { f } g\nv1An{           a { b } { c } { { x } } ______{ f } g\nv1An}           a { b } { c } { { x } } ______{ f } g\nv1AnB           a { b } { c } { { x } } ______{ f } g\nv1il{           a { b } {___} { { x } } { e } { f } g\nv1il}           a { b } {___} { { x } } { e } { f } g\nv1ilB           a { b } {___} { { x } } { e } { f } g\nv1al{           a { b } _____ { { x } } { e } { f } g\nv1al}           a { b } _____ { { x } } { e } { f } g\nv1alB           a { b } _____ { { x } } { e } { f } g\nv1Il{           a { b } { _ } { { x } } { e } { f } g\nv1Il}           a { b } { _ } { { x } } { e } { f } g\nv1IlB           a { b } { _ } { { x } } { e } { f } g\nv1Al{           a { b } ______{ { x } } { e } { f } g\nv1Al}           a { b } ______{ { x } } { e } { f } g\nv1AlB           a { b } ______{ { x } } { e } { f } g\nv2i{            a { b } { c } {_______} { e } { f } g\nv2i}            a { b } { c } {_______} { e } { f } g\nv2iB            a { b } { c } {_______} { e } { f } g\nv2a{            a { b } { c } _________ { e } { f } g\nv2a}            a { b } { c } _________ { e } { f } g\nv2aB            a { b } { c } _________ { e } { f } g\nv2I{            a { b } { c } { _____ } { e } { f } g\nv2I}            a { b } { c } { _____ } { e } { f } g\nv2IB            a { b } { c } { _____ } { e } { f } g\nv2A{            a { b } { c } __________{ e } { f } g\nv2A}            a { b } { c } __________{ e } { f } g\nv2AB            a { b } { c } __________{ e } { f } g\nv2in{           a { b } { c } { { x } } { e } {___} g\nv2in}           a { b } { c } { { x } } { e } {___} g\nv2inB           a { b } { c } { { x } } { e } {___} g\nv2an{           a { b } { c } { { x } } { e } _____ g\nv2an}           a { b } { c } { { x } } { e } _____ g\nv2anB           a { b } { c } { { x } } { e } _____ g\nv2In{           a { b } { c } { { x } } { e } { _ } g\nv2In}           a { b } { c } { { x } } { e } { _ } g\nv2InB           a { b } { c } { { x } } { e } { _ } g\nv2An{           a { b } { c } { { x } } { e } ______g\nv2An}           a { b } { c } { { x } } { e } ______g\nv2AnB           a { b } { c } { { x } } { e } ______g\nv2il{           a {___} { c } { { x } } { e } { f } g\nv2il}           a {___} { c } { { x } } { e } { f } g\nv2ilB           a {___} { c } { { x } } { e } { f } g\nv2al{           a _____ { c } { { x } } { e } { f } g\nv2al}           a _____ { c } { { x } } { e } { f } g\nv2alB           a _____ { c } { { x } } { e } { f } g\nv2Il{           a { _ } { c } { { x } } { e } { f } g\nv2Il}           a { _ } { c } { { x } } { e } { f } g\nv2IlB           a { _ } { c } { { x } } { e } { f } g\nv2Al{           a ______{ c } { { x } } { e } { f } g\nv2Al}           a ______{ c } { { x } } { e } { f } g\nv2AlB           a ______{ c } { { x } } { e } { f } g\na [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g\nci[             a [ b ] [ c ] [ [_] ] [ e ] [ f ] g\nci]             a [ b ] [ c ] [ [_] ] [ e ] [ f ] g\ncir             a [ b ] [ c ] [ [_] ] [ e ] [ f ] g\nca[             a [ b ] [ c ] [ _ ] [ e ] [ f ] g\nca]             a [ b ] [ c ] [ _ ] [ e ] [ f ] g\ncar             a [ b ] [ c ] [ _ ] [ e ] [ f ] g\ncI[             a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\ncI]             a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\ncIr             a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\ncA[             a [ b ] [ c ] [ _] [ e ] [ f ] g\ncA]             a [ b ] [ c ] [ _] [ e ] [ f ] g\ncAr             a [ b ] [ c ] [ _] [ e ] [ f ] g\ncin[            a [ b ] [ c ] [ [ x ] ] [_] [ f ] g\ncin]            a [ b ] [ c ] [ [ x ] ] [_] [ f ] g\ncinr            a [ b ] [ c ] [ [ x ] ] [_] [ f ] g\ncan[            a [ b ] [ c ] [ [ x ] ] _ [ f ] g\ncan]            a [ b ] [ c ] [ [ x ] ] _ [ f ] g\ncanr            a [ b ] [ c ] [ [ x ] ] _ [ f ] g\ncIn[            a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\ncIn]            a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\ncInr            a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\ncAn[            a [ b ] [ c ] [ [ x ] ] _[ f ] g\ncAn]            a [ b ] [ c ] [ [ x ] ] _[ f ] g\ncAnr            a [ b ] [ c ] [ [ x ] ] _[ f ] g\ncil[            a [ b ] [_] [ [ x ] ] [ e ] [ f ] g\ncil]            a [ b ] [_] [ [ x ] ] [ e ] [ f ] g\ncilr            a [ b ] [_] [ [ x ] ] [ e ] [ f ] g\ncal[            a [ b ] _ [ [ x ] ] [ e ] [ f ] g\ncal]            a [ b ] _ [ [ x ] ] [ e ] [ f ] g\ncalr            a [ b ] _ [ [ x ] ] [ e ] [ f ] g\ncIl[            a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\ncIl]            a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\ncIlr            a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\ncAl[            a [ b ] _[ [ x ] ] [ e ] [ f ] g\ncAl]            a [ b ] _[ [ x ] ] [ e ] [ f ] g\ncAlr            a [ b ] _[ [ x ] ] [ e ] [ f ] g\nc1i[            a [ b ] [ c ] [ [_] ] [ e ] [ f ] g\nc1i]            a [ b ] [ c ] [ [_] ] [ e ] [ f ] g\nc1ir            a [ b ] [ c ] [ [_] ] [ e ] [ f ] g\nc1a[            a [ b ] [ c ] [ _ ] [ e ] [ f ] g\nc1a]            a [ b ] [ c ] [ _ ] [ e ] [ f ] g\nc1ar            a [ b ] [ c ] [ _ ] [ e ] [ f ] g\nc1I[            a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nc1I]            a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nc1Ir            a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nc1A[            a [ b ] [ c ] [ _] [ e ] [ f ] g\nc1A]            a [ b ] [ c ] [ _] [ e ] [ f ] g\nc1Ar            a [ b ] [ c ] [ _] [ e ] [ f ] g\nc1in[           a [ b ] [ c ] [ [ x ] ] [_] [ f ] g\nc1in]           a [ b ] [ c ] [ [ x ] ] [_] [ f ] g\nc1inr           a [ b ] [ c ] [ [ x ] ] [_] [ f ] g\nc1an[           a [ b ] [ c ] [ [ x ] ] _ [ f ] g\nc1an]           a [ b ] [ c ] [ [ x ] ] _ [ f ] g\nc1anr           a [ b ] [ c ] [ [ x ] ] _ [ f ] g\nc1In[           a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nc1In]           a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nc1Inr           a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nc1An[           a [ b ] [ c ] [ [ x ] ] _[ f ] g\nc1An]           a [ b ] [ c ] [ [ x ] ] _[ f ] g\nc1Anr           a [ b ] [ c ] [ [ x ] ] _[ f ] g\nc1il[           a [ b ] [_] [ [ x ] ] [ e ] [ f ] g\nc1il]           a [ b ] [_] [ [ x ] ] [ e ] [ f ] g\nc1ilr           a [ b ] [_] [ [ x ] ] [ e ] [ f ] g\nc1al[           a [ b ] _ [ [ x ] ] [ e ] [ f ] g\nc1al]           a [ b ] _ [ [ x ] ] [ e ] [ f ] g\nc1alr           a [ b ] _ [ [ x ] ] [ e ] [ f ] g\nc1Il[           a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nc1Il]           a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nc1Ilr           a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nc1Al[           a [ b ] _[ [ x ] ] [ e ] [ f ] g\nc1Al]           a [ b ] _[ [ x ] ] [ e ] [ f ] g\nc1Alr           a [ b ] _[ [ x ] ] [ e ] [ f ] g\nc2i[            a [ b ] [ c ] [_] [ e ] [ f ] g\nc2i]            a [ b ] [ c ] [_] [ e ] [ f ] g\nc2ir            a [ b ] [ c ] [_] [ e ] [ f ] g\nc2a[            a [ b ] [ c ] _ [ e ] [ f ] g\nc2a]            a [ b ] [ c ] _ [ e ] [ f ] g\nc2ar            a [ b ] [ c ] _ [ e ] [ f ] g\nc2I[            a [ b ] [ c ] [ _ ] [ e ] [ f ] g\nc2I]            a [ b ] [ c ] [ _ ] [ e ] [ f ] g\nc2Ir            a [ b ] [ c ] [ _ ] [ e ] [ f ] g\nc2A[            a [ b ] [ c ] _[ e ] [ f ] g\nc2A]            a [ b ] [ c ] _[ e ] [ f ] g\nc2Ar            a [ b ] [ c ] _[ e ] [ f ] g\nc2in[           a [ b ] [ c ] [ [ x ] ] [ e ] [_] g\nc2in]           a [ b ] [ c ] [ [ x ] ] [ e ] [_] g\nc2inr           a [ b ] [ c ] [ [ x ] ] [ e ] [_] g\nc2an[           a [ b ] [ c ] [ [ x ] ] [ e ] _ g\nc2an]           a [ b ] [ c ] [ [ x ] ] [ e ] _ g\nc2anr           a [ b ] [ c ] [ [ x ] ] [ e ] _ g\nc2In[           a [ b ] [ c ] [ [ x ] ] [ e ] [ _ ] g\nc2In]           a [ b ] [ c ] [ [ x ] ] [ e ] [ _ ] g\nc2Inr           a [ b ] [ c ] [ [ x ] ] [ e ] [ _ ] g\nc2An[           a [ b ] [ c ] [ [ x ] ] [ e ] _g\nc2An]           a [ b ] [ c ] [ [ x ] ] [ e ] _g\nc2Anr           a [ b ] [ c ] [ [ x ] ] [ e ] _g\nc2il[           a [_] [ c ] [ [ x ] ] [ e ] [ f ] g\nc2il]           a [_] [ c ] [ [ x ] ] [ e ] [ f ] g\nc2ilr           a [_] [ c ] [ [ x ] ] [ e ] [ f ] g\nc2al[           a _ [ c ] [ [ x ] ] [ e ] [ f ] g\nc2al]           a _ [ c ] [ [ x ] ] [ e ] [ f ] g\nc2alr           a _ [ c ] [ [ x ] ] [ e ] [ f ] g\nc2Il[           a [ _ ] [ c ] [ [ x ] ] [ e ] [ f ] g\nc2Il]           a [ _ ] [ c ] [ [ x ] ] [ e ] [ f ] g\nc2Ilr           a [ _ ] [ c ] [ [ x ] ] [ e ] [ f ] g\nc2Al[           a _[ c ] [ [ x ] ] [ e ] [ f ] g\nc2Al]           a _[ c ] [ [ x ] ] [ e ] [ f ] g\nc2Alr           a _[ c ] [ [ x ] ] [ e ] [ f ] g\ndi[             a [ b ] [ c ] [ [] ] [ e ] [ f ] g\ndi]             a [ b ] [ c ] [ [] ] [ e ] [ f ] g\ndir             a [ b ] [ c ] [ [] ] [ e ] [ f ] g\nda[             a [ b ] [ c ] [  ] [ e ] [ f ] g\nda]             a [ b ] [ c ] [  ] [ e ] [ f ] g\ndar             a [ b ] [ c ] [  ] [ e ] [ f ] g\ndI[             a [ b ] [ c ] [ [  ] ] [ e ] [ f ] g\ndI]             a [ b ] [ c ] [ [  ] ] [ e ] [ f ] g\ndIr             a [ b ] [ c ] [ [  ] ] [ e ] [ f ] g\ndA[             a [ b ] [ c ] [ ] [ e ] [ f ] g\ndA]             a [ b ] [ c ] [ ] [ e ] [ f ] g\ndAr             a [ b ] [ c ] [ ] [ e ] [ f ] g\ndin[            a [ b ] [ c ] [ [ x ] ] [] [ f ] g\ndin]            a [ b ] [ c ] [ [ x ] ] [] [ f ] g\ndinr            a [ b ] [ c ] [ [ x ] ] [] [ f ] g\ndan[            a [ b ] [ c ] [ [ x ] ]  [ f ] g\ndan]            a [ b ] [ c ] [ [ x ] ]  [ f ] g\ndanr            a [ b ] [ c ] [ [ x ] ]  [ f ] g\ndIn[            a [ b ] [ c ] [ [ x ] ] [  ] [ f ] g\ndIn]            a [ b ] [ c ] [ [ x ] ] [  ] [ f ] g\ndInr            a [ b ] [ c ] [ [ x ] ] [  ] [ f ] g\ndAn[            a [ b ] [ c ] [ [ x ] ] [ f ] g\ndAn]            a [ b ] [ c ] [ [ x ] ] [ f ] g\ndAnr            a [ b ] [ c ] [ [ x ] ] [ f ] g\ndil[            a [ b ] [] [ [ x ] ] [ e ] [ f ] g\ndil]            a [ b ] [] [ [ x ] ] [ e ] [ f ] g\ndilr            a [ b ] [] [ [ x ] ] [ e ] [ f ] g\ndal[            a [ b ]  [ [ x ] ] [ e ] [ f ] g\ndal]            a [ b ]  [ [ x ] ] [ e ] [ f ] g\ndalr            a [ b ]  [ [ x ] ] [ e ] [ f ] g\ndIl[            a [ b ] [  ] [ [ x ] ] [ e ] [ f ] g\ndIl]            a [ b ] [  ] [ [ x ] ] [ e ] [ f ] g\ndIlr            a [ b ] [  ] [ [ x ] ] [ e ] [ f ] g\ndAl[            a [ b ] [ [ x ] ] [ e ] [ f ] g\ndAl]            a [ b ] [ [ x ] ] [ e ] [ f ] g\ndAlr            a [ b ] [ [ x ] ] [ e ] [ f ] g\nd1i[            a [ b ] [ c ] [ [] ] [ e ] [ f ] g\nd1i]            a [ b ] [ c ] [ [] ] [ e ] [ f ] g\nd1ir            a [ b ] [ c ] [ [] ] [ e ] [ f ] g\nd1a[            a [ b ] [ c ] [  ] [ e ] [ f ] g\nd1a]            a [ b ] [ c ] [  ] [ e ] [ f ] g\nd1ar            a [ b ] [ c ] [  ] [ e ] [ f ] g\nd1I[            a [ b ] [ c ] [ [  ] ] [ e ] [ f ] g\nd1I]            a [ b ] [ c ] [ [  ] ] [ e ] [ f ] g\nd1Ir            a [ b ] [ c ] [ [  ] ] [ e ] [ f ] g\nd1A[            a [ b ] [ c ] [ ] [ e ] [ f ] g\nd1A]            a [ b ] [ c ] [ ] [ e ] [ f ] g\nd1Ar            a [ b ] [ c ] [ ] [ e ] [ f ] g\nd1in[           a [ b ] [ c ] [ [ x ] ] [] [ f ] g\nd1in]           a [ b ] [ c ] [ [ x ] ] [] [ f ] g\nd1inr           a [ b ] [ c ] [ [ x ] ] [] [ f ] g\nd1an[           a [ b ] [ c ] [ [ x ] ]  [ f ] g\nd1an]           a [ b ] [ c ] [ [ x ] ]  [ f ] g\nd1anr           a [ b ] [ c ] [ [ x ] ]  [ f ] g\nd1In[           a [ b ] [ c ] [ [ x ] ] [  ] [ f ] g\nd1In]           a [ b ] [ c ] [ [ x ] ] [  ] [ f ] g\nd1Inr           a [ b ] [ c ] [ [ x ] ] [  ] [ f ] g\nd1An[           a [ b ] [ c ] [ [ x ] ] [ f ] g\nd1An]           a [ b ] [ c ] [ [ x ] ] [ f ] g\nd1Anr           a [ b ] [ c ] [ [ x ] ] [ f ] g\nd1il[           a [ b ] [] [ [ x ] ] [ e ] [ f ] g\nd1il]           a [ b ] [] [ [ x ] ] [ e ] [ f ] g\nd1ilr           a [ b ] [] [ [ x ] ] [ e ] [ f ] g\nd1al[           a [ b ]  [ [ x ] ] [ e ] [ f ] g\nd1al]           a [ b ]  [ [ x ] ] [ e ] [ f ] g\nd1alr           a [ b ]  [ [ x ] ] [ e ] [ f ] g\nd1Il[           a [ b ] [  ] [ [ x ] ] [ e ] [ f ] g\nd1Il]           a [ b ] [  ] [ [ x ] ] [ e ] [ f ] g\nd1Ilr           a [ b ] [  ] [ [ x ] ] [ e ] [ f ] g\nd1Al[           a [ b ] [ [ x ] ] [ e ] [ f ] g\nd1Al]           a [ b ] [ [ x ] ] [ e ] [ f ] g\nd1Alr           a [ b ] [ [ x ] ] [ e ] [ f ] g\nd2i[            a [ b ] [ c ] [] [ e ] [ f ] g\nd2i]            a [ b ] [ c ] [] [ e ] [ f ] g\nd2ir            a [ b ] [ c ] [] [ e ] [ f ] g\nd2a[            a [ b ] [ c ]  [ e ] [ f ] g\nd2a]            a [ b ] [ c ]  [ e ] [ f ] g\nd2ar            a [ b ] [ c ]  [ e ] [ f ] g\nd2I[            a [ b ] [ c ] [  ] [ e ] [ f ] g\nd2I]            a [ b ] [ c ] [  ] [ e ] [ f ] g\nd2Ir            a [ b ] [ c ] [  ] [ e ] [ f ] g\nd2A[            a [ b ] [ c ] [ e ] [ f ] g\nd2A]            a [ b ] [ c ] [ e ] [ f ] g\nd2Ar            a [ b ] [ c ] [ e ] [ f ] g\nd2in[           a [ b ] [ c ] [ [ x ] ] [ e ] [] g\nd2in]           a [ b ] [ c ] [ [ x ] ] [ e ] [] g\nd2inr           a [ b ] [ c ] [ [ x ] ] [ e ] [] g\nd2an[           a [ b ] [ c ] [ [ x ] ] [ e ]  g\nd2an]           a [ b ] [ c ] [ [ x ] ] [ e ]  g\nd2anr           a [ b ] [ c ] [ [ x ] ] [ e ]  g\nd2In[           a [ b ] [ c ] [ [ x ] ] [ e ] [  ] g\nd2In]           a [ b ] [ c ] [ [ x ] ] [ e ] [  ] g\nd2Inr           a [ b ] [ c ] [ [ x ] ] [ e ] [  ] g\nd2An[           a [ b ] [ c ] [ [ x ] ] [ e ] g\nd2An]           a [ b ] [ c ] [ [ x ] ] [ e ] g\nd2Anr           a [ b ] [ c ] [ [ x ] ] [ e ] g\nd2il[           a [] [ c ] [ [ x ] ] [ e ] [ f ] g\nd2il]           a [] [ c ] [ [ x ] ] [ e ] [ f ] g\nd2ilr           a [] [ c ] [ [ x ] ] [ e ] [ f ] g\nd2al[           a  [ c ] [ [ x ] ] [ e ] [ f ] g\nd2al]           a  [ c ] [ [ x ] ] [ e ] [ f ] g\nd2alr           a  [ c ] [ [ x ] ] [ e ] [ f ] g\nd2Il[           a [  ] [ c ] [ [ x ] ] [ e ] [ f ] g\nd2Il]           a [  ] [ c ] [ [ x ] ] [ e ] [ f ] g\nd2Ilr           a [  ] [ c ] [ [ x ] ] [ e ] [ f ] g\nd2Al[           a [ c ] [ [ x ] ] [ e ] [ f ] g\nd2Al]           a [ c ] [ [ x ] ] [ e ] [ f ] g\nd2Alr           a [ c ] [ [ x ] ] [ e ] [ f ] g\nyi[             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' x '\nyi]             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' x '\nyir             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' x '\nya[             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\nya]             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\nyar             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\nyI[             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'x'\nyI]             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'x'\nyIr             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'x'\nyA[             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ] '\nyA]             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ] '\nyAr             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ] '\nyin[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' e '\nyin]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' e '\nyinr            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' e '\nyan[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ]'\nyan]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ]'\nyanr            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ]'\nyIn[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'e'\nyIn]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'e'\nyInr            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'e'\nyAn[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ] '\nyAn]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ] '\nyAnr            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ] '\nyil[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' c '\nyil]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' c '\nyilr            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' c '\nyal[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ]'\nyal]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ]'\nyalr            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ]'\nyIl[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'c'\nyIl]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'c'\nyIlr            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'c'\nyAl[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ] '\nyAl]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ] '\nyAlr            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ] '\ny1i[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' x '\ny1i]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' x '\ny1ir            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' x '\ny1a[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\ny1a]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\ny1ar            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\ny1I[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'x'\ny1I]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'x'\ny1Ir            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'x'\ny1A[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ] '\ny1A]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ] '\ny1Ar            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ] '\ny1in[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' e '\ny1in]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' e '\ny1inr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' e '\ny1an[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ]'\ny1an]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ]'\ny1anr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ]'\ny1In[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'e'\ny1In]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'e'\ny1Inr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'e'\ny1An[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ] '\ny1An]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ] '\ny1Anr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ] '\ny1il[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' c '\ny1il]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' c '\ny1ilr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' c '\ny1al[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ]'\ny1al]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ]'\ny1alr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ]'\ny1Il[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'c'\ny1Il]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'c'\ny1Ilr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'c'\ny1Al[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ] '\ny1Al]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ] '\ny1Alr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ] '\ny2i[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' [ x ] '\ny2i]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' [ x ] '\ny2ir            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' [ x ] '\ny2a[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ [ x ] ]'\ny2a]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ [ x ] ]'\ny2ar            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ [ x ] ]'\ny2I[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\ny2I]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\ny2Ir            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\ny2A[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ [ x ] ] '\ny2A]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ [ x ] ] '\ny2Ar            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ [ x ] ] '\ny2in[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' f '\ny2in]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' f '\ny2inr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' f '\ny2an[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ f ]'\ny2an]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ f ]'\ny2anr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ f ]'\ny2In[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'f'\ny2In]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'f'\ny2Inr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'f'\ny2An[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ f ] '\ny2An]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ f ] '\ny2Anr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ f ] '\ny2il[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' b '\ny2il]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' b '\ny2ilr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' b '\ny2al[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ b ]'\ny2al]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ b ]'\ny2alr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ b ]'\ny2Il[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'b'\ny2Il]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'b'\ny2Ilr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'b'\ny2Al[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ b ] '\ny2Al]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ b ] '\ny2Alr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ b ] '\nvi[             a [ b ] [ c ] [ [___] ] [ e ] [ f ] g\nvi]             a [ b ] [ c ] [ [___] ] [ e ] [ f ] g\nvir             a [ b ] [ c ] [ [___] ] [ e ] [ f ] g\nva[             a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nva]             a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nvar             a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nvI[             a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nvI]             a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nvIr             a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nvA[             a [ b ] [ c ] [ ______] [ e ] [ f ] g\nvA]             a [ b ] [ c ] [ ______] [ e ] [ f ] g\nvAr             a [ b ] [ c ] [ ______] [ e ] [ f ] g\nvin[            a [ b ] [ c ] [ [ x ] ] [___] [ f ] g\nvin]            a [ b ] [ c ] [ [ x ] ] [___] [ f ] g\nvinr            a [ b ] [ c ] [ [ x ] ] [___] [ f ] g\nvan[            a [ b ] [ c ] [ [ x ] ] _____ [ f ] g\nvan]            a [ b ] [ c ] [ [ x ] ] _____ [ f ] g\nvanr            a [ b ] [ c ] [ [ x ] ] _____ [ f ] g\nvIn[            a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nvIn]            a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nvInr            a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nvAn[            a [ b ] [ c ] [ [ x ] ] ______[ f ] g\nvAn]            a [ b ] [ c ] [ [ x ] ] ______[ f ] g\nvAnr            a [ b ] [ c ] [ [ x ] ] ______[ f ] g\nvil[            a [ b ] [___] [ [ x ] ] [ e ] [ f ] g\nvil]            a [ b ] [___] [ [ x ] ] [ e ] [ f ] g\nvilr            a [ b ] [___] [ [ x ] ] [ e ] [ f ] g\nval[            a [ b ] _____ [ [ x ] ] [ e ] [ f ] g\nval]            a [ b ] _____ [ [ x ] ] [ e ] [ f ] g\nvalr            a [ b ] _____ [ [ x ] ] [ e ] [ f ] g\nvIl[            a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nvIl]            a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nvIlr            a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nvAl[            a [ b ] ______[ [ x ] ] [ e ] [ f ] g\nvAl]            a [ b ] ______[ [ x ] ] [ e ] [ f ] g\nvAlr            a [ b ] ______[ [ x ] ] [ e ] [ f ] g\nv1i[            a [ b ] [ c ] [ [___] ] [ e ] [ f ] g\nv1i]            a [ b ] [ c ] [ [___] ] [ e ] [ f ] g\nv1ir            a [ b ] [ c ] [ [___] ] [ e ] [ f ] g\nv1a[            a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nv1a]            a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nv1ar            a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nv1I[            a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nv1I]            a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nv1Ir            a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nv1A[            a [ b ] [ c ] [ ______] [ e ] [ f ] g\nv1A]            a [ b ] [ c ] [ ______] [ e ] [ f ] g\nv1Ar            a [ b ] [ c ] [ ______] [ e ] [ f ] g\nv1in[           a [ b ] [ c ] [ [ x ] ] [___] [ f ] g\nv1in]           a [ b ] [ c ] [ [ x ] ] [___] [ f ] g\nv1inr           a [ b ] [ c ] [ [ x ] ] [___] [ f ] g\nv1an[           a [ b ] [ c ] [ [ x ] ] _____ [ f ] g\nv1an]           a [ b ] [ c ] [ [ x ] ] _____ [ f ] g\nv1anr           a [ b ] [ c ] [ [ x ] ] _____ [ f ] g\nv1In[           a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nv1In]           a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nv1Inr           a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nv1An[           a [ b ] [ c ] [ [ x ] ] ______[ f ] g\nv1An]           a [ b ] [ c ] [ [ x ] ] ______[ f ] g\nv1Anr           a [ b ] [ c ] [ [ x ] ] ______[ f ] g\nv1il[           a [ b ] [___] [ [ x ] ] [ e ] [ f ] g\nv1il]           a [ b ] [___] [ [ x ] ] [ e ] [ f ] g\nv1ilr           a [ b ] [___] [ [ x ] ] [ e ] [ f ] g\nv1al[           a [ b ] _____ [ [ x ] ] [ e ] [ f ] g\nv1al]           a [ b ] _____ [ [ x ] ] [ e ] [ f ] g\nv1alr           a [ b ] _____ [ [ x ] ] [ e ] [ f ] g\nv1Il[           a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nv1Il]           a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nv1Ilr           a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nv1Al[           a [ b ] ______[ [ x ] ] [ e ] [ f ] g\nv1Al]           a [ b ] ______[ [ x ] ] [ e ] [ f ] g\nv1Alr           a [ b ] ______[ [ x ] ] [ e ] [ f ] g\nv2i[            a [ b ] [ c ] [_______] [ e ] [ f ] g\nv2i]            a [ b ] [ c ] [_______] [ e ] [ f ] g\nv2ir            a [ b ] [ c ] [_______] [ e ] [ f ] g\nv2a[            a [ b ] [ c ] _________ [ e ] [ f ] g\nv2a]            a [ b ] [ c ] _________ [ e ] [ f ] g\nv2ar            a [ b ] [ c ] _________ [ e ] [ f ] g\nv2I[            a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nv2I]            a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nv2Ir            a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nv2A[            a [ b ] [ c ] __________[ e ] [ f ] g\nv2A]            a [ b ] [ c ] __________[ e ] [ f ] g\nv2Ar            a [ b ] [ c ] __________[ e ] [ f ] g\nv2in[           a [ b ] [ c ] [ [ x ] ] [ e ] [___] g\nv2in]           a [ b ] [ c ] [ [ x ] ] [ e ] [___] g\nv2inr           a [ b ] [ c ] [ [ x ] ] [ e ] [___] g\nv2an[           a [ b ] [ c ] [ [ x ] ] [ e ] _____ g\nv2an]           a [ b ] [ c ] [ [ x ] ] [ e ] _____ g\nv2anr           a [ b ] [ c ] [ [ x ] ] [ e ] _____ g\nv2In[           a [ b ] [ c ] [ [ x ] ] [ e ] [ _ ] g\nv2In]           a [ b ] [ c ] [ [ x ] ] [ e ] [ _ ] g\nv2Inr           a [ b ] [ c ] [ [ x ] ] [ e ] [ _ ] g\nv2An[           a [ b ] [ c ] [ [ x ] ] [ e ] ______g\nv2An]           a [ b ] [ c ] [ [ x ] ] [ e ] ______g\nv2Anr           a [ b ] [ c ] [ [ x ] ] [ e ] ______g\nv2il[           a [___] [ c ] [ [ x ] ] [ e ] [ f ] g\nv2il]           a [___] [ c ] [ [ x ] ] [ e ] [ f ] g\nv2ilr           a [___] [ c ] [ [ x ] ] [ e ] [ f ] g\nv2al[           a _____ [ c ] [ [ x ] ] [ e ] [ f ] g\nv2al]           a _____ [ c ] [ [ x ] ] [ e ] [ f ] g\nv2alr           a _____ [ c ] [ [ x ] ] [ e ] [ f ] g\nv2Il[           a [ _ ] [ c ] [ [ x ] ] [ e ] [ f ] g\nv2Il]           a [ _ ] [ c ] [ [ x ] ] [ e ] [ f ] g\nv2Ilr           a [ _ ] [ c ] [ [ x ] ] [ e ] [ f ] g\nv2Al[           a ______[ c ] [ [ x ] ] [ e ] [ f ] g\nv2Al]           a ______[ c ] [ [ x ] ] [ e ] [ f ] g\nv2Alr           a ______[ c ] [ [ x ] ] [ e ] [ f ] g\na < b > < c > < < x > > < e > < f > g\nci<             a < b > < c > < <_> > < e > < f > g\nci>             a < b > < c > < <_> > < e > < f > g\ncia             a < b > < c > < <_> > < e > < f > g\nca<             a < b > < c > < _ > < e > < f > g\nca>             a < b > < c > < _ > < e > < f > g\ncaa             a < b > < c > < _ > < e > < f > g\ncI<             a < b > < c > < < _ > > < e > < f > g\ncI>             a < b > < c > < < _ > > < e > < f > g\ncIa             a < b > < c > < < _ > > < e > < f > g\ncA<             a < b > < c > < _> < e > < f > g\ncA>             a < b > < c > < _> < e > < f > g\ncAa             a < b > < c > < _> < e > < f > g\ncin<            a < b > < c > < < x > > <_> < f > g\ncin>            a < b > < c > < < x > > <_> < f > g\ncina            a < b > < c > < < x > > <_> < f > g\ncan<            a < b > < c > < < x > > _ < f > g\ncan>            a < b > < c > < < x > > _ < f > g\ncana            a < b > < c > < < x > > _ < f > g\ncIn<            a < b > < c > < < x > > < _ > < f > g\ncIn>            a < b > < c > < < x > > < _ > < f > g\ncIna            a < b > < c > < < x > > < _ > < f > g\ncAn<            a < b > < c > < < x > > _< f > g\ncAn>            a < b > < c > < < x > > _< f > g\ncAna            a < b > < c > < < x > > _< f > g\ncil<            a < b > <_> < < x > > < e > < f > g\ncil>            a < b > <_> < < x > > < e > < f > g\ncila            a < b > <_> < < x > > < e > < f > g\ncal<            a < b > _ < < x > > < e > < f > g\ncal>            a < b > _ < < x > > < e > < f > g\ncala            a < b > _ < < x > > < e > < f > g\ncIl<            a < b > < _ > < < x > > < e > < f > g\ncIl>            a < b > < _ > < < x > > < e > < f > g\ncIla            a < b > < _ > < < x > > < e > < f > g\ncAl<            a < b > _< < x > > < e > < f > g\ncAl>            a < b > _< < x > > < e > < f > g\ncAla            a < b > _< < x > > < e > < f > g\nc1i<            a < b > < c > < <_> > < e > < f > g\nc1i>            a < b > < c > < <_> > < e > < f > g\nc1ia            a < b > < c > < <_> > < e > < f > g\nc1a<            a < b > < c > < _ > < e > < f > g\nc1a>            a < b > < c > < _ > < e > < f > g\nc1aa            a < b > < c > < _ > < e > < f > g\nc1I<            a < b > < c > < < _ > > < e > < f > g\nc1I>            a < b > < c > < < _ > > < e > < f > g\nc1Ia            a < b > < c > < < _ > > < e > < f > g\nc1A<            a < b > < c > < _> < e > < f > g\nc1A>            a < b > < c > < _> < e > < f > g\nc1Aa            a < b > < c > < _> < e > < f > g\nc1in<           a < b > < c > < < x > > <_> < f > g\nc1in>           a < b > < c > < < x > > <_> < f > g\nc1ina           a < b > < c > < < x > > <_> < f > g\nc1an<           a < b > < c > < < x > > _ < f > g\nc1an>           a < b > < c > < < x > > _ < f > g\nc1ana           a < b > < c > < < x > > _ < f > g\nc1In<           a < b > < c > < < x > > < _ > < f > g\nc1In>           a < b > < c > < < x > > < _ > < f > g\nc1Ina           a < b > < c > < < x > > < _ > < f > g\nc1An<           a < b > < c > < < x > > _< f > g\nc1An>           a < b > < c > < < x > > _< f > g\nc1Ana           a < b > < c > < < x > > _< f > g\nc1il<           a < b > <_> < < x > > < e > < f > g\nc1il>           a < b > <_> < < x > > < e > < f > g\nc1ila           a < b > <_> < < x > > < e > < f > g\nc1al<           a < b > _ < < x > > < e > < f > g\nc1al>           a < b > _ < < x > > < e > < f > g\nc1ala           a < b > _ < < x > > < e > < f > g\nc1Il<           a < b > < _ > < < x > > < e > < f > g\nc1Il>           a < b > < _ > < < x > > < e > < f > g\nc1Ila           a < b > < _ > < < x > > < e > < f > g\nc1Al<           a < b > _< < x > > < e > < f > g\nc1Al>           a < b > _< < x > > < e > < f > g\nc1Ala           a < b > _< < x > > < e > < f > g\nc2i<            a < b > < c > <_> < e > < f > g\nc2i>            a < b > < c > <_> < e > < f > g\nc2ia            a < b > < c > <_> < e > < f > g\nc2a<            a < b > < c > _ < e > < f > g\nc2a>            a < b > < c > _ < e > < f > g\nc2aa            a < b > < c > _ < e > < f > g\nc2I<            a < b > < c > < _ > < e > < f > g\nc2I>            a < b > < c > < _ > < e > < f > g\nc2Ia            a < b > < c > < _ > < e > < f > g\nc2A<            a < b > < c > _< e > < f > g\nc2A>            a < b > < c > _< e > < f > g\nc2Aa            a < b > < c > _< e > < f > g\nc2in<           a < b > < c > < < x > > < e > <_> g\nc2in>           a < b > < c > < < x > > < e > <_> g\nc2ina           a < b > < c > < < x > > < e > <_> g\nc2an<           a < b > < c > < < x > > < e > _ g\nc2an>           a < b > < c > < < x > > < e > _ g\nc2ana           a < b > < c > < < x > > < e > _ g\nc2In<           a < b > < c > < < x > > < e > < _ > g\nc2In>           a < b > < c > < < x > > < e > < _ > g\nc2Ina           a < b > < c > < < x > > < e > < _ > g\nc2An<           a < b > < c > < < x > > < e > _g\nc2An>           a < b > < c > < < x > > < e > _g\nc2Ana           a < b > < c > < < x > > < e > _g\nc2il<           a <_> < c > < < x > > < e > < f > g\nc2il>           a <_> < c > < < x > > < e > < f > g\nc2ila           a <_> < c > < < x > > < e > < f > g\nc2al<           a _ < c > < < x > > < e > < f > g\nc2al>           a _ < c > < < x > > < e > < f > g\nc2ala           a _ < c > < < x > > < e > < f > g\nc2Il<           a < _ > < c > < < x > > < e > < f > g\nc2Il>           a < _ > < c > < < x > > < e > < f > g\nc2Ila           a < _ > < c > < < x > > < e > < f > g\nc2Al<           a _< c > < < x > > < e > < f > g\nc2Al>           a _< c > < < x > > < e > < f > g\nc2Ala           a _< c > < < x > > < e > < f > g\ndi<             a < b > < c > < <> > < e > < f > g\ndi>             a < b > < c > < <> > < e > < f > g\ndia             a < b > < c > < <> > < e > < f > g\nda<             a < b > < c > <  > < e > < f > g\nda>             a < b > < c > <  > < e > < f > g\ndaa             a < b > < c > <  > < e > < f > g\ndI<             a < b > < c > < <  > > < e > < f > g\ndI>             a < b > < c > < <  > > < e > < f > g\ndIa             a < b > < c > < <  > > < e > < f > g\ndA<             a < b > < c > < > < e > < f > g\ndA>             a < b > < c > < > < e > < f > g\ndAa             a < b > < c > < > < e > < f > g\ndin<            a < b > < c > < < x > > <> < f > g\ndin>            a < b > < c > < < x > > <> < f > g\ndina            a < b > < c > < < x > > <> < f > g\ndan<            a < b > < c > < < x > >  < f > g\ndan>            a < b > < c > < < x > >  < f > g\ndana            a < b > < c > < < x > >  < f > g\ndIn<            a < b > < c > < < x > > <  > < f > g\ndIn>            a < b > < c > < < x > > <  > < f > g\ndIna            a < b > < c > < < x > > <  > < f > g\ndAn<            a < b > < c > < < x > > < f > g\ndAn>            a < b > < c > < < x > > < f > g\ndAna            a < b > < c > < < x > > < f > g\ndil<            a < b > <> < < x > > < e > < f > g\ndil>            a < b > <> < < x > > < e > < f > g\ndila            a < b > <> < < x > > < e > < f > g\ndal<            a < b >  < < x > > < e > < f > g\ndal>            a < b >  < < x > > < e > < f > g\ndala            a < b >  < < x > > < e > < f > g\ndIl<            a < b > <  > < < x > > < e > < f > g\ndIl>            a < b > <  > < < x > > < e > < f > g\ndIla            a < b > <  > < < x > > < e > < f > g\ndAl<            a < b > < < x > > < e > < f > g\ndAl>            a < b > < < x > > < e > < f > g\ndAla            a < b > < < x > > < e > < f > g\nd1i<            a < b > < c > < <> > < e > < f > g\nd1i>            a < b > < c > < <> > < e > < f > g\nd1ia            a < b > < c > < <> > < e > < f > g\nd1a<            a < b > < c > <  > < e > < f > g\nd1a>            a < b > < c > <  > < e > < f > g\nd1aa            a < b > < c > <  > < e > < f > g\nd1I<            a < b > < c > < <  > > < e > < f > g\nd1I>            a < b > < c > < <  > > < e > < f > g\nd1Ia            a < b > < c > < <  > > < e > < f > g\nd1A<            a < b > < c > < > < e > < f > g\nd1A>            a < b > < c > < > < e > < f > g\nd1Aa            a < b > < c > < > < e > < f > g\nd1in<           a < b > < c > < < x > > <> < f > g\nd1in>           a < b > < c > < < x > > <> < f > g\nd1ina           a < b > < c > < < x > > <> < f > g\nd1an<           a < b > < c > < < x > >  < f > g\nd1an>           a < b > < c > < < x > >  < f > g\nd1ana           a < b > < c > < < x > >  < f > g\nd1In<           a < b > < c > < < x > > <  > < f > g\nd1In>           a < b > < c > < < x > > <  > < f > g\nd1Ina           a < b > < c > < < x > > <  > < f > g\nd1An<           a < b > < c > < < x > > < f > g\nd1An>           a < b > < c > < < x > > < f > g\nd1Ana           a < b > < c > < < x > > < f > g\nd1il<           a < b > <> < < x > > < e > < f > g\nd1il>           a < b > <> < < x > > < e > < f > g\nd1ila           a < b > <> < < x > > < e > < f > g\nd1al<           a < b >  < < x > > < e > < f > g\nd1al>           a < b >  < < x > > < e > < f > g\nd1ala           a < b >  < < x > > < e > < f > g\nd1Il<           a < b > <  > < < x > > < e > < f > g\nd1Il>           a < b > <  > < < x > > < e > < f > g\nd1Ila           a < b > <  > < < x > > < e > < f > g\nd1Al<           a < b > < < x > > < e > < f > g\nd1Al>           a < b > < < x > > < e > < f > g\nd1Ala           a < b > < < x > > < e > < f > g\nd2i<            a < b > < c > <> < e > < f > g\nd2i>            a < b > < c > <> < e > < f > g\nd2ia            a < b > < c > <> < e > < f > g\nd2a<            a < b > < c >  < e > < f > g\nd2a>            a < b > < c >  < e > < f > g\nd2aa            a < b > < c >  < e > < f > g\nd2I<            a < b > < c > <  > < e > < f > g\nd2I>            a < b > < c > <  > < e > < f > g\nd2Ia            a < b > < c > <  > < e > < f > g\nd2A<            a < b > < c > < e > < f > g\nd2A>            a < b > < c > < e > < f > g\nd2Aa            a < b > < c > < e > < f > g\nd2in<           a < b > < c > < < x > > < e > <> g\nd2in>           a < b > < c > < < x > > < e > <> g\nd2ina           a < b > < c > < < x > > < e > <> g\nd2an<           a < b > < c > < < x > > < e >  g\nd2an>           a < b > < c > < < x > > < e >  g\nd2ana           a < b > < c > < < x > > < e >  g\nd2In<           a < b > < c > < < x > > < e > <  > g\nd2In>           a < b > < c > < < x > > < e > <  > g\nd2Ina           a < b > < c > < < x > > < e > <  > g\nd2An<           a < b > < c > < < x > > < e > g\nd2An>           a < b > < c > < < x > > < e > g\nd2Ana           a < b > < c > < < x > > < e > g\nd2il<           a <> < c > < < x > > < e > < f > g\nd2il>           a <> < c > < < x > > < e > < f > g\nd2ila           a <> < c > < < x > > < e > < f > g\nd2al<           a  < c > < < x > > < e > < f > g\nd2al>           a  < c > < < x > > < e > < f > g\nd2ala           a  < c > < < x > > < e > < f > g\nd2Il<           a <  > < c > < < x > > < e > < f > g\nd2Il>           a <  > < c > < < x > > < e > < f > g\nd2Ila           a <  > < c > < < x > > < e > < f > g\nd2Al<           a < c > < < x > > < e > < f > g\nd2Al>           a < c > < < x > > < e > < f > g\nd2Ala           a < c > < < x > > < e > < f > g\nyi<             a < b > < c > < < x > > < e > < f > g           ' x '\nyi>             a < b > < c > < < x > > < e > < f > g           ' x '\nyia             a < b > < c > < < x > > < e > < f > g           ' x '\nya<             a < b > < c > < < x > > < e > < f > g           '< x >'\nya>             a < b > < c > < < x > > < e > < f > g           '< x >'\nyaa             a < b > < c > < < x > > < e > < f > g           '< x >'\nyI<             a < b > < c > < < x > > < e > < f > g           'x'\nyI>             a < b > < c > < < x > > < e > < f > g           'x'\nyIa             a < b > < c > < < x > > < e > < f > g           'x'\nyA<             a < b > < c > < < x > > < e > < f > g           '< x > '\nyA>             a < b > < c > < < x > > < e > < f > g           '< x > '\nyAa             a < b > < c > < < x > > < e > < f > g           '< x > '\nyin<            a < b > < c > < < x > > < e > < f > g           ' e '\nyin>            a < b > < c > < < x > > < e > < f > g           ' e '\nyina            a < b > < c > < < x > > < e > < f > g           ' e '\nyan<            a < b > < c > < < x > > < e > < f > g           '< e >'\nyan>            a < b > < c > < < x > > < e > < f > g           '< e >'\nyana            a < b > < c > < < x > > < e > < f > g           '< e >'\nyIn<            a < b > < c > < < x > > < e > < f > g           'e'\nyIn>            a < b > < c > < < x > > < e > < f > g           'e'\nyIna            a < b > < c > < < x > > < e > < f > g           'e'\nyAn<            a < b > < c > < < x > > < e > < f > g           '< e > '\nyAn>            a < b > < c > < < x > > < e > < f > g           '< e > '\nyAna            a < b > < c > < < x > > < e > < f > g           '< e > '\nyil<            a < b > < c > < < x > > < e > < f > g           ' c '\nyil>            a < b > < c > < < x > > < e > < f > g           ' c '\nyila            a < b > < c > < < x > > < e > < f > g           ' c '\nyal<            a < b > < c > < < x > > < e > < f > g           '< c >'\nyal>            a < b > < c > < < x > > < e > < f > g           '< c >'\nyala            a < b > < c > < < x > > < e > < f > g           '< c >'\nyIl<            a < b > < c > < < x > > < e > < f > g           'c'\nyIl>            a < b > < c > < < x > > < e > < f > g           'c'\nyIla            a < b > < c > < < x > > < e > < f > g           'c'\nyAl<            a < b > < c > < < x > > < e > < f > g           '< c > '\nyAl>            a < b > < c > < < x > > < e > < f > g           '< c > '\nyAla            a < b > < c > < < x > > < e > < f > g           '< c > '\ny1i<            a < b > < c > < < x > > < e > < f > g           ' x '\ny1i>            a < b > < c > < < x > > < e > < f > g           ' x '\ny1ia            a < b > < c > < < x > > < e > < f > g           ' x '\ny1a<            a < b > < c > < < x > > < e > < f > g           '< x >'\ny1a>            a < b > < c > < < x > > < e > < f > g           '< x >'\ny1aa            a < b > < c > < < x > > < e > < f > g           '< x >'\ny1I<            a < b > < c > < < x > > < e > < f > g           'x'\ny1I>            a < b > < c > < < x > > < e > < f > g           'x'\ny1Ia            a < b > < c > < < x > > < e > < f > g           'x'\ny1A<            a < b > < c > < < x > > < e > < f > g           '< x > '\ny1A>            a < b > < c > < < x > > < e > < f > g           '< x > '\ny1Aa            a < b > < c > < < x > > < e > < f > g           '< x > '\ny1in<           a < b > < c > < < x > > < e > < f > g           ' e '\ny1in>           a < b > < c > < < x > > < e > < f > g           ' e '\ny1ina           a < b > < c > < < x > > < e > < f > g           ' e '\ny1an<           a < b > < c > < < x > > < e > < f > g           '< e >'\ny1an>           a < b > < c > < < x > > < e > < f > g           '< e >'\ny1ana           a < b > < c > < < x > > < e > < f > g           '< e >'\ny1In<           a < b > < c > < < x > > < e > < f > g           'e'\ny1In>           a < b > < c > < < x > > < e > < f > g           'e'\ny1Ina           a < b > < c > < < x > > < e > < f > g           'e'\ny1An<           a < b > < c > < < x > > < e > < f > g           '< e > '\ny1An>           a < b > < c > < < x > > < e > < f > g           '< e > '\ny1Ana           a < b > < c > < < x > > < e > < f > g           '< e > '\ny1il<           a < b > < c > < < x > > < e > < f > g           ' c '\ny1il>           a < b > < c > < < x > > < e > < f > g           ' c '\ny1ila           a < b > < c > < < x > > < e > < f > g           ' c '\ny1al<           a < b > < c > < < x > > < e > < f > g           '< c >'\ny1al>           a < b > < c > < < x > > < e > < f > g           '< c >'\ny1ala           a < b > < c > < < x > > < e > < f > g           '< c >'\ny1Il<           a < b > < c > < < x > > < e > < f > g           'c'\ny1Il>           a < b > < c > < < x > > < e > < f > g           'c'\ny1Ila           a < b > < c > < < x > > < e > < f > g           'c'\ny1Al<           a < b > < c > < < x > > < e > < f > g           '< c > '\ny1Al>           a < b > < c > < < x > > < e > < f > g           '< c > '\ny1Ala           a < b > < c > < < x > > < e > < f > g           '< c > '\ny2i<            a < b > < c > < < x > > < e > < f > g           ' < x > '\ny2i>            a < b > < c > < < x > > < e > < f > g           ' < x > '\ny2ia            a < b > < c > < < x > > < e > < f > g           ' < x > '\ny2a<            a < b > < c > < < x > > < e > < f > g           '< < x > >'\ny2a>            a < b > < c > < < x > > < e > < f > g           '< < x > >'\ny2aa            a < b > < c > < < x > > < e > < f > g           '< < x > >'\ny2I<            a < b > < c > < < x > > < e > < f > g           '< x >'\ny2I>            a < b > < c > < < x > > < e > < f > g           '< x >'\ny2Ia            a < b > < c > < < x > > < e > < f > g           '< x >'\ny2A<            a < b > < c > < < x > > < e > < f > g           '< < x > > '\ny2A>            a < b > < c > < < x > > < e > < f > g           '< < x > > '\ny2Aa            a < b > < c > < < x > > < e > < f > g           '< < x > > '\ny2in<           a < b > < c > < < x > > < e > < f > g           ' f '\ny2in>           a < b > < c > < < x > > < e > < f > g           ' f '\ny2ina           a < b > < c > < < x > > < e > < f > g           ' f '\ny2an<           a < b > < c > < < x > > < e > < f > g           '< f >'\ny2an>           a < b > < c > < < x > > < e > < f > g           '< f >'\ny2ana           a < b > < c > < < x > > < e > < f > g           '< f >'\ny2In<           a < b > < c > < < x > > < e > < f > g           'f'\ny2In>           a < b > < c > < < x > > < e > < f > g           'f'\ny2Ina           a < b > < c > < < x > > < e > < f > g           'f'\ny2An<           a < b > < c > < < x > > < e > < f > g           '< f > '\ny2An>           a < b > < c > < < x > > < e > < f > g           '< f > '\ny2Ana           a < b > < c > < < x > > < e > < f > g           '< f > '\ny2il<           a < b > < c > < < x > > < e > < f > g           ' b '\ny2il>           a < b > < c > < < x > > < e > < f > g           ' b '\ny2ila           a < b > < c > < < x > > < e > < f > g           ' b '\ny2al<           a < b > < c > < < x > > < e > < f > g           '< b >'\ny2al>           a < b > < c > < < x > > < e > < f > g           '< b >'\ny2ala           a < b > < c > < < x > > < e > < f > g           '< b >'\ny2Il<           a < b > < c > < < x > > < e > < f > g           'b'\ny2Il>           a < b > < c > < < x > > < e > < f > g           'b'\ny2Ila           a < b > < c > < < x > > < e > < f > g           'b'\ny2Al<           a < b > < c > < < x > > < e > < f > g           '< b > '\ny2Al>           a < b > < c > < < x > > < e > < f > g           '< b > '\ny2Ala           a < b > < c > < < x > > < e > < f > g           '< b > '\nvi<             a < b > < c > < <___> > < e > < f > g\nvi>             a < b > < c > < <___> > < e > < f > g\nvia             a < b > < c > < <___> > < e > < f > g\nva<             a < b > < c > < _____ > < e > < f > g\nva>             a < b > < c > < _____ > < e > < f > g\nvaa             a < b > < c > < _____ > < e > < f > g\nvI<             a < b > < c > < < _ > > < e > < f > g\nvI>             a < b > < c > < < _ > > < e > < f > g\nvIa             a < b > < c > < < _ > > < e > < f > g\nvA<             a < b > < c > < ______> < e > < f > g\nvA>             a < b > < c > < ______> < e > < f > g\nvAa             a < b > < c > < ______> < e > < f > g\nvin<            a < b > < c > < < x > > <___> < f > g\nvin>            a < b > < c > < < x > > <___> < f > g\nvina            a < b > < c > < < x > > <___> < f > g\nvan<            a < b > < c > < < x > > _____ < f > g\nvan>            a < b > < c > < < x > > _____ < f > g\nvana            a < b > < c > < < x > > _____ < f > g\nvIn<            a < b > < c > < < x > > < _ > < f > g\nvIn>            a < b > < c > < < x > > < _ > < f > g\nvIna            a < b > < c > < < x > > < _ > < f > g\nvAn<            a < b > < c > < < x > > ______< f > g\nvAn>            a < b > < c > < < x > > ______< f > g\nvAna            a < b > < c > < < x > > ______< f > g\nvil<            a < b > <___> < < x > > < e > < f > g\nvil>            a < b > <___> < < x > > < e > < f > g\nvila            a < b > <___> < < x > > < e > < f > g\nval<            a < b > _____ < < x > > < e > < f > g\nval>            a < b > _____ < < x > > < e > < f > g\nvala            a < b > _____ < < x > > < e > < f > g\nvIl<            a < b > < _ > < < x > > < e > < f > g\nvIl>            a < b > < _ > < < x > > < e > < f > g\nvIla            a < b > < _ > < < x > > < e > < f > g\nvAl<            a < b > ______< < x > > < e > < f > g\nvAl>            a < b > ______< < x > > < e > < f > g\nvAla            a < b > ______< < x > > < e > < f > g\nv1i<            a < b > < c > < <___> > < e > < f > g\nv1i>            a < b > < c > < <___> > < e > < f > g\nv1ia            a < b > < c > < <___> > < e > < f > g\nv1a<            a < b > < c > < _____ > < e > < f > g\nv1a>            a < b > < c > < _____ > < e > < f > g\nv1aa            a < b > < c > < _____ > < e > < f > g\nv1I<            a < b > < c > < < _ > > < e > < f > g\nv1I>            a < b > < c > < < _ > > < e > < f > g\nv1Ia            a < b > < c > < < _ > > < e > < f > g\nv1A<            a < b > < c > < ______> < e > < f > g\nv1A>            a < b > < c > < ______> < e > < f > g\nv1Aa            a < b > < c > < ______> < e > < f > g\nv1in<           a < b > < c > < < x > > <___> < f > g\nv1in>           a < b > < c > < < x > > <___> < f > g\nv1ina           a < b > < c > < < x > > <___> < f > g\nv1an<           a < b > < c > < < x > > _____ < f > g\nv1an>           a < b > < c > < < x > > _____ < f > g\nv1ana           a < b > < c > < < x > > _____ < f > g\nv1In<           a < b > < c > < < x > > < _ > < f > g\nv1In>           a < b > < c > < < x > > < _ > < f > g\nv1Ina           a < b > < c > < < x > > < _ > < f > g\nv1An<           a < b > < c > < < x > > ______< f > g\nv1An>           a < b > < c > < < x > > ______< f > g\nv1Ana           a < b > < c > < < x > > ______< f > g\nv1il<           a < b > <___> < < x > > < e > < f > g\nv1il>           a < b > <___> < < x > > < e > < f > g\nv1ila           a < b > <___> < < x > > < e > < f > g\nv1al<           a < b > _____ < < x > > < e > < f > g\nv1al>           a < b > _____ < < x > > < e > < f > g\nv1ala           a < b > _____ < < x > > < e > < f > g\nv1Il<           a < b > < _ > < < x > > < e > < f > g\nv1Il>           a < b > < _ > < < x > > < e > < f > g\nv1Ila           a < b > < _ > < < x > > < e > < f > g\nv1Al<           a < b > ______< < x > > < e > < f > g\nv1Al>           a < b > ______< < x > > < e > < f > g\nv1Ala           a < b > ______< < x > > < e > < f > g\nv2i<            a < b > < c > <_______> < e > < f > g\nv2i>            a < b > < c > <_______> < e > < f > g\nv2ia            a < b > < c > <_______> < e > < f > g\nv2a<            a < b > < c > _________ < e > < f > g\nv2a>            a < b > < c > _________ < e > < f > g\nv2aa            a < b > < c > _________ < e > < f > g\nv2I<            a < b > < c > < _____ > < e > < f > g\nv2I>            a < b > < c > < _____ > < e > < f > g\nv2Ia            a < b > < c > < _____ > < e > < f > g\nv2A<            a < b > < c > __________< e > < f > g\nv2A>            a < b > < c > __________< e > < f > g\nv2Aa            a < b > < c > __________< e > < f > g\nv2in<           a < b > < c > < < x > > < e > <___> g\nv2in>           a < b > < c > < < x > > < e > <___> g\nv2ina           a < b > < c > < < x > > < e > <___> g\nv2an<           a < b > < c > < < x > > < e > _____ g\nv2an>           a < b > < c > < < x > > < e > _____ g\nv2ana           a < b > < c > < < x > > < e > _____ g\nv2In<           a < b > < c > < < x > > < e > < _ > g\nv2In>           a < b > < c > < < x > > < e > < _ > g\nv2Ina           a < b > < c > < < x > > < e > < _ > g\nv2An<           a < b > < c > < < x > > < e > ______g\nv2An>           a < b > < c > < < x > > < e > ______g\nv2Ana           a < b > < c > < < x > > < e > ______g\nv2il<           a <___> < c > < < x > > < e > < f > g\nv2il>           a <___> < c > < < x > > < e > < f > g\nv2ila           a <___> < c > < < x > > < e > < f > g\nv2al<           a _____ < c > < < x > > < e > < f > g\nv2al>           a _____ < c > < < x > > < e > < f > g\nv2ala           a _____ < c > < < x > > < e > < f > g\nv2Il<           a < _ > < c > < < x > > < e > < f > g\nv2Il>           a < _ > < c > < < x > > < e > < f > g\nv2Ila           a < _ > < c > < < x > > < e > < f > g\nv2Al<           a ______< c > < < x > > < e > < f > g\nv2Al>           a ______< c > < < x > > < e > < f > g\nv2Ala           a ______< c > < < x > > < e > < f > g\na <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\ncit             a <a> b </a> <b> c </b> <c> <d>_</d> </c> <e> e </e> <f> f </f> g\ncat             a <a> b </a> <b> c </b> <c> _ </c> <e> e </e> <f> f </f> g\ncIt             a <a> b </a> <b> c </b> <c> <d> _ </d> </c> <e> e </e> <f> f </f> g\ncAt             a <a> b </a> <b> c </b> <c> _</c> <e> e </e> <f> f </f> g\ncint            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e>_</e> <f> f </f> g\ncant            a <a> b </a> <b> c </b> <c> <d> x </d> </c> _ <f> f </f> g\ncInt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> _ </e> <f> f </f> g\ncAnt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <_> <f> f </f> g\ncilt            a <a> b </a> <b>_</b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\ncalt            a <a> b </a> _ <c> <d> x </d> </c> <e> e </e> <f> f </f> g\ncIlt            a <a> b </a> <b> _ </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\ncAlt            a <a> b </a> <_> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nc1it            a <a> b </a> <b> c </b> <c> <d>_</d> </c> <e> e </e> <f> f </f> g\nc1at            a <a> b </a> <b> c </b> <c> _ </c> <e> e </e> <f> f </f> g\nc1It            a <a> b </a> <b> c </b> <c> <d> _ </d> </c> <e> e </e> <f> f </f> g\nc1At            a <a> b </a> <b> c </b> <c> _</c> <e> e </e> <f> f </f> g\nc1int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e>_</e> <f> f </f> g\nc1ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> _ <f> f </f> g\nc1Int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> _ </e> <f> f </f> g\nc1Ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <_> <f> f </f> g\nc1ilt           a <a> b </a> <b>_</b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nc1alt           a <a> b </a> _ <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nc1Ilt           a <a> b </a> <b> _ </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nc1Alt           a <a> b </a> <_> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nc2it            a <a> b </a> <b> c </b> <c>_</c> <e> e </e> <f> f </f> g\nc2at            a <a> b </a> <b> c </b> _ <e> e </e> <f> f </f> g\nc2It            a <a> b </a> <b> c </b> <c> _ </c> <e> e </e> <f> f </f> g\nc2At            a <a> b </a> <b> c </b> _<e> e </e> <f> f </f> g\nc2int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f>_</f> g\nc2ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> _ g\nc2Int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> _ </f> g\nc2Ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <_> g\nc2ilt           a <a>_</a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nc2alt           a _ <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nc2Ilt           a <a> _ </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nc2Alt           a <_> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\ndit             a <a> b </a> <b> c </b> <c> <d></d> </c> <e> e </e> <f> f </f> g\ndat             a <a> b </a> <b> c </b> <c>  </c> <e> e </e> <f> f </f> g\ndIt             a <a> b </a> <b> c </b> <c> <d>  </d> </c> <e> e </e> <f> f </f> g\ndAt             a <a> b </a> <b> c </b> <c> </c> <e> e </e> <f> f </f> g\ndint            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e></e> <f> f </f> g\ndant            a <a> b </a> <b> c </b> <c> <d> x </d> </c>  <f> f </f> g\ndInt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e>  </e> <f> f </f> g\ndAnt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <> <f> f </f> g\ndilt            a <a> b </a> <b></b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\ndalt            a <a> b </a>  <c> <d> x </d> </c> <e> e </e> <f> f </f> g\ndIlt            a <a> b </a> <b>  </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\ndAlt            a <a> b </a> <> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nd1it            a <a> b </a> <b> c </b> <c> <d></d> </c> <e> e </e> <f> f </f> g\nd1at            a <a> b </a> <b> c </b> <c>  </c> <e> e </e> <f> f </f> g\nd1It            a <a> b </a> <b> c </b> <c> <d>  </d> </c> <e> e </e> <f> f </f> g\nd1At            a <a> b </a> <b> c </b> <c> </c> <e> e </e> <f> f </f> g\nd1int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e></e> <f> f </f> g\nd1ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c>  <f> f </f> g\nd1Int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e>  </e> <f> f </f> g\nd1Ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <> <f> f </f> g\nd1ilt           a <a> b </a> <b></b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nd1alt           a <a> b </a>  <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nd1Ilt           a <a> b </a> <b>  </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nd1Alt           a <a> b </a> <> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nd2it            a <a> b </a> <b> c </b> <c></c> <e> e </e> <f> f </f> g\nd2at            a <a> b </a> <b> c </b>  <e> e </e> <f> f </f> g\nd2It            a <a> b </a> <b> c </b> <c>  </c> <e> e </e> <f> f </f> g\nd2At            a <a> b </a> <b> c </b> <e> e </e> <f> f </f> g\nd2int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f></f> g\nd2ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e>  g\nd2Int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f>  </f> g\nd2Ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <> g\nd2ilt           a <a></a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nd2alt           a  <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nd2Ilt           a <a>  </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nd2Alt           a <> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nyit             a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' x '\nyat             a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<d> x </d>'\nyIt             a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'x'\nyAt             a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<d> x </d> '\nyint            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' e '\nyant            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<e> e </e>'\nyInt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'e'\nyAnt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'e> e </e'\nyilt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' c '\nyalt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<b> c </b>'\nyIlt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'c'\nyAlt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'b> c </b'\ny1it            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' x '\ny1at            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<d> x </d>'\ny1It            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'x'\ny1At            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<d> x </d> '\ny1int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' e '\ny1ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<e> e </e>'\ny1Int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'e'\ny1Ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'e> e </e'\ny1ilt           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' c '\ny1alt           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<b> c </b>'\ny1Ilt           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'c'\ny1Alt           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'b> c </b'\ny2it            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' <d> x </d> '\ny2at            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<c> <d> x </d> </c>'\ny2It            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<d> x </d>'\ny2At            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<c> <d> x </d> </c> '\ny2int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' f '\ny2ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<f> f </f>'\ny2Int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'f'\ny2Ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'f> f </f'\ny2ilt           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' b '\ny2alt           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<a> b </a>'\ny2Ilt           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'b'\ny2Alt           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'a> b </a'\nvit             a <a> b </a> <b> c </b> <c> <d>___</d> </c> <e> e </e> <f> f </f> g\nvat             a <a> b </a> <b> c </b> <c> __________ </c> <e> e </e> <f> f </f> g\nvIt             a <a> b </a> <b> c </b> <c> <d> _ </d> </c> <e> e </e> <f> f </f> g\nvAt             a <a> b </a> <b> c </b> <c> ___________</c> <e> e </e> <f> f </f> g\nvint            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e>___</e> <f> f </f> g\nvant            a <a> b </a> <b> c </b> <c> <d> x </d> </c> __________ <f> f </f> g\nvInt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> _ </e> <f> f </f> g\nvAnt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <________> <f> f </f> g\nvilt            a <a> b </a> <b>___</b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nvalt            a <a> b </a> __________ <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nvIlt            a <a> b </a> <b> _ </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nvAlt            a <a> b </a> <________> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nv1it            a <a> b </a> <b> c </b> <c> <d>___</d> </c> <e> e </e> <f> f </f> g\nv1at            a <a> b </a> <b> c </b> <c> __________ </c> <e> e </e> <f> f </f> g\nv1It            a <a> b </a> <b> c </b> <c> <d> _ </d> </c> <e> e </e> <f> f </f> g\nv1At            a <a> b </a> <b> c </b> <c> ___________</c> <e> e </e> <f> f </f> g\nv1int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e>___</e> <f> f </f> g\nv1ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> __________ <f> f </f> g\nv1Int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> _ </e> <f> f </f> g\nv1Ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <________> <f> f </f> g\nv1ilt           a <a> b </a> <b>___</b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nv1alt           a <a> b </a> __________ <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nv1Ilt           a <a> b </a> <b> _ </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nv1Alt           a <a> b </a> <________> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nv2it            a <a> b </a> <b> c </b> <c>____________</c> <e> e </e> <f> f </f> g\nv2at            a <a> b </a> <b> c </b> ___________________ <e> e </e> <f> f </f> g\nv2It            a <a> b </a> <b> c </b> <c> __________ </c> <e> e </e> <f> f </f> g\nv2At            a <a> b </a> <b> c </b> ____________________<e> e </e> <f> f </f> g\nv2int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f>___</f> g\nv2ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> __________ g\nv2Int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> _ </f> g\nv2Ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <________> g\nv2ilt           a <a>___</a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nv2alt           a __________ <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nv2Ilt           a <a> _ </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nv2Alt           a <________> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\n\na ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l\nci'             a ' b ' c ' d ' e '_' g ' h ' i ' k ' l\nca'             a ' b ' c ' d ' e _g ' h ' i ' k ' l\ncI'             a ' b ' c ' d ' e ' _ ' g ' h ' i ' k ' l\ncin'            a ' b ' c ' d ' e ' x '_' h ' i ' k ' l\ncan'            a ' b ' c ' d ' e ' x _h ' i ' k ' l\ncIn'            a ' b ' c ' d ' e ' x ' _ ' h ' i ' k ' l\ncil'            a ' b ' c ' d '_' x ' g ' h ' i ' k ' l\ncal'            a ' b ' c ' d _x ' g ' h ' i ' k ' l\ncIl'            a ' b ' c ' d ' _ ' x ' g ' h ' i ' k ' l\nciN'            a ' b ' c ' d ' e ' x ' g '_' i ' k ' l\ncaN'            a ' b ' c ' d ' e ' x ' g _i ' k ' l\ncIN'            a ' b ' c ' d ' e ' x ' g ' _ ' i ' k ' l\nciL'            a ' b ' c '_' e ' x ' g ' h ' i ' k ' l\ncaL'            a ' b ' c _e ' x ' g ' h ' i ' k ' l\ncIL'            a ' b ' c ' _ ' e ' x ' g ' h ' i ' k ' l\nc1i'            a ' b ' c ' d ' e '_' g ' h ' i ' k ' l\nc1a'            a ' b ' c ' d ' e _g ' h ' i ' k ' l\nc1I'            a ' b ' c ' d ' e ' _ ' g ' h ' i ' k ' l\nc1in'           a ' b ' c ' d ' e ' x '_' h ' i ' k ' l\nc1an'           a ' b ' c ' d ' e ' x _h ' i ' k ' l\nc1In'           a ' b ' c ' d ' e ' x ' _ ' h ' i ' k ' l\nc1il'           a ' b ' c ' d '_' x ' g ' h ' i ' k ' l\nc1al'           a ' b ' c ' d _x ' g ' h ' i ' k ' l\nc1Il'           a ' b ' c ' d ' _ ' x ' g ' h ' i ' k ' l\nc1iN'           a ' b ' c ' d ' e ' x ' g '_' i ' k ' l\nc1aN'           a ' b ' c ' d ' e ' x ' g _i ' k ' l\nc1IN'           a ' b ' c ' d ' e ' x ' g ' _ ' i ' k ' l\nc1iL'           a ' b ' c '_' e ' x ' g ' h ' i ' k ' l\nc1aL'           a ' b ' c _e ' x ' g ' h ' i ' k ' l\nc1IL'           a ' b ' c ' _ ' e ' x ' g ' h ' i ' k ' l\nc2i'            a ' b ' c ' d ' e '_' g ' h ' i ' k ' l\nc2a'            a ' b ' c ' d ' e _g ' h ' i ' k ' l\nc2I'            a ' b ' c ' d ' e ' _ ' g ' h ' i ' k ' l\nc2in'           a ' b ' c ' d ' e ' x ' g '_' i ' k ' l\nc2an'           a ' b ' c ' d ' e ' x ' g _i ' k ' l\nc2In'           a ' b ' c ' d ' e ' x ' g ' _ ' i ' k ' l\nc2il'           a ' b ' c '_' e ' x ' g ' h ' i ' k ' l\nc2al'           a ' b ' c _e ' x ' g ' h ' i ' k ' l\nc2Il'           a ' b ' c ' _ ' e ' x ' g ' h ' i ' k ' l\nc2iN'           a ' b ' c ' d ' e ' x ' g ' h ' i '_' l\nc2aN'           a ' b ' c ' d ' e ' x ' g ' h ' i _l\nc2IN'           a ' b ' c ' d ' e ' x ' g ' h ' i ' _ ' l\nc2iL'           a '_' c ' d ' e ' x ' g ' h ' i ' k ' l\nc2aL'           a _c ' d ' e ' x ' g ' h ' i ' k ' l\nc2IL'           a ' _ ' c ' d ' e ' x ' g ' h ' i ' k ' l\ndi'             a ' b ' c ' d ' e '' g ' h ' i ' k ' l\nda'             a ' b ' c ' d ' e g ' h ' i ' k ' l\ndI'             a ' b ' c ' d ' e '  ' g ' h ' i ' k ' l\ndin'            a ' b ' c ' d ' e ' x '' h ' i ' k ' l\ndan'            a ' b ' c ' d ' e ' x h ' i ' k ' l\ndIn'            a ' b ' c ' d ' e ' x '  ' h ' i ' k ' l\ndil'            a ' b ' c ' d '' x ' g ' h ' i ' k ' l\ndal'            a ' b ' c ' d x ' g ' h ' i ' k ' l\ndIl'            a ' b ' c ' d '  ' x ' g ' h ' i ' k ' l\ndiN'            a ' b ' c ' d ' e ' x ' g '' i ' k ' l\ndaN'            a ' b ' c ' d ' e ' x ' g i ' k ' l\ndIN'            a ' b ' c ' d ' e ' x ' g '  ' i ' k ' l\ndiL'            a ' b ' c '' e ' x ' g ' h ' i ' k ' l\ndaL'            a ' b ' c e ' x ' g ' h ' i ' k ' l\ndIL'            a ' b ' c '  ' e ' x ' g ' h ' i ' k ' l\nd1i'            a ' b ' c ' d ' e '' g ' h ' i ' k ' l\nd1a'            a ' b ' c ' d ' e g ' h ' i ' k ' l\nd1I'            a ' b ' c ' d ' e '  ' g ' h ' i ' k ' l\nd1in'           a ' b ' c ' d ' e ' x '' h ' i ' k ' l\nd1an'           a ' b ' c ' d ' e ' x h ' i ' k ' l\nd1In'           a ' b ' c ' d ' e ' x '  ' h ' i ' k ' l\nd1il'           a ' b ' c ' d '' x ' g ' h ' i ' k ' l\nd1al'           a ' b ' c ' d x ' g ' h ' i ' k ' l\nd1Il'           a ' b ' c ' d '  ' x ' g ' h ' i ' k ' l\nd1iN'           a ' b ' c ' d ' e ' x ' g '' i ' k ' l\nd1aN'           a ' b ' c ' d ' e ' x ' g i ' k ' l\nd1IN'           a ' b ' c ' d ' e ' x ' g '  ' i ' k ' l\nd1iL'           a ' b ' c '' e ' x ' g ' h ' i ' k ' l\nd1aL'           a ' b ' c e ' x ' g ' h ' i ' k ' l\nd1IL'           a ' b ' c '  ' e ' x ' g ' h ' i ' k ' l\nd2i'            a ' b ' c ' d ' e '' g ' h ' i ' k ' l\nd2a'            a ' b ' c ' d ' e g ' h ' i ' k ' l\nd2I'            a ' b ' c ' d ' e '  ' g ' h ' i ' k ' l\nd2in'           a ' b ' c ' d ' e ' x ' g '' i ' k ' l\nd2an'           a ' b ' c ' d ' e ' x ' g i ' k ' l\nd2In'           a ' b ' c ' d ' e ' x ' g '  ' i ' k ' l\nd2il'           a ' b ' c '' e ' x ' g ' h ' i ' k ' l\nd2al'           a ' b ' c e ' x ' g ' h ' i ' k ' l\nd2Il'           a ' b ' c '  ' e ' x ' g ' h ' i ' k ' l\nd2iN'           a ' b ' c ' d ' e ' x ' g ' h ' i '' l\nd2aN'           a ' b ' c ' d ' e ' x ' g ' h ' i l\nd2IN'           a ' b ' c ' d ' e ' x ' g ' h ' i '  ' l\nd2iL'           a '' c ' d ' e ' x ' g ' h ' i ' k ' l\nd2aL'           a c ' d ' e ' x ' g ' h ' i ' k ' l\nd2IL'           a '  ' c ' d ' e ' x ' g ' h ' i ' k ' l\nyi'             a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' x '\nya'             a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' x ' '\nyI'             a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'x'\nyin'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' g '\nyan'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' g ' '\nyIn'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'g'\nyil'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' e '\nyal'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' e ' '\nyIl'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'e'\nyiN'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' h '\nyaN'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' h ' '\nyIN'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'h'\nyiL'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' d '\nyaL'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' d ' '\nyIL'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'd'\ny1i'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' x '\ny1a'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' x ' '\ny1I'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'x'\ny1in'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' g '\ny1an'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' g ' '\ny1In'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'g'\ny1il'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' e '\ny1al'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' e ' '\ny1Il'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'e'\ny1iN'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' h '\ny1aN'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' h ' '\ny1IN'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'h'\ny1iL'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' d '\ny1aL'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' d ' '\ny1IL'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'd'\ny2i'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' x '\ny2a'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' x ' '\ny2I'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'x'\ny2in'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' h '\ny2an'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' h ' '\ny2In'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'h'\ny2il'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' d '\ny2al'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' d ' '\ny2Il'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'd'\ny2iN'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' k '\ny2aN'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' k ' '\ny2IN'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'k'\ny2iL'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' b '\ny2aL'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' b ' '\ny2IL'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'b'\nvi'             a ' b ' c ' d ' e '___' g ' h ' i ' k ' l\nva'             a ' b ' c ' d ' e ______g ' h ' i ' k ' l\nvI'             a ' b ' c ' d ' e ' _ ' g ' h ' i ' k ' l\nvin'            a ' b ' c ' d ' e ' x '___' h ' i ' k ' l\nvan'            a ' b ' c ' d ' e ' x ______h ' i ' k ' l\nvIn'            a ' b ' c ' d ' e ' x ' _ ' h ' i ' k ' l\nvil'            a ' b ' c ' d '___' x ' g ' h ' i ' k ' l\nval'            a ' b ' c ' d ______x ' g ' h ' i ' k ' l\nvIl'            a ' b ' c ' d ' _ ' x ' g ' h ' i ' k ' l\nviN'            a ' b ' c ' d ' e ' x ' g '___' i ' k ' l\nvaN'            a ' b ' c ' d ' e ' x ' g ______i ' k ' l\nvIN'            a ' b ' c ' d ' e ' x ' g ' _ ' i ' k ' l\nviL'            a ' b ' c '___' e ' x ' g ' h ' i ' k ' l\nvaL'            a ' b ' c ______e ' x ' g ' h ' i ' k ' l\nvIL'            a ' b ' c ' _ ' e ' x ' g ' h ' i ' k ' l\nv1i'            a ' b ' c ' d ' e '___' g ' h ' i ' k ' l\nv1a'            a ' b ' c ' d ' e ______g ' h ' i ' k ' l\nv1I'            a ' b ' c ' d ' e ' _ ' g ' h ' i ' k ' l\nv1in'           a ' b ' c ' d ' e ' x '___' h ' i ' k ' l\nv1an'           a ' b ' c ' d ' e ' x ______h ' i ' k ' l\nv1In'           a ' b ' c ' d ' e ' x ' _ ' h ' i ' k ' l\nv1il'           a ' b ' c ' d '___' x ' g ' h ' i ' k ' l\nv1al'           a ' b ' c ' d ______x ' g ' h ' i ' k ' l\nv1Il'           a ' b ' c ' d ' _ ' x ' g ' h ' i ' k ' l\nv1iN'           a ' b ' c ' d ' e ' x ' g '___' i ' k ' l\nv1aN'           a ' b ' c ' d ' e ' x ' g ______i ' k ' l\nv1IN'           a ' b ' c ' d ' e ' x ' g ' _ ' i ' k ' l\nv1iL'           a ' b ' c '___' e ' x ' g ' h ' i ' k ' l\nv1aL'           a ' b ' c ______e ' x ' g ' h ' i ' k ' l\nv1IL'           a ' b ' c ' _ ' e ' x ' g ' h ' i ' k ' l\nv2i'            a ' b ' c ' d ' e '___' g ' h ' i ' k ' l\nv2a'            a ' b ' c ' d ' e ______g ' h ' i ' k ' l\nv2I'            a ' b ' c ' d ' e ' _ ' g ' h ' i ' k ' l\nv2in'           a ' b ' c ' d ' e ' x ' g '___' i ' k ' l\nv2an'           a ' b ' c ' d ' e ' x ' g ______i ' k ' l\nv2In'           a ' b ' c ' d ' e ' x ' g ' _ ' i ' k ' l\nv2il'           a ' b ' c '___' e ' x ' g ' h ' i ' k ' l\nv2al'           a ' b ' c ______e ' x ' g ' h ' i ' k ' l\nv2Il'           a ' b ' c ' _ ' e ' x ' g ' h ' i ' k ' l\nv2iN'           a ' b ' c ' d ' e ' x ' g ' h ' i '___' l\nv2aN'           a ' b ' c ' d ' e ' x ' g ' h ' i ______l\nv2IN'           a ' b ' c ' d ' e ' x ' g ' h ' i ' _ ' l\nv2iL'           a '___' c ' d ' e ' x ' g ' h ' i ' k ' l\nv2aL'           a ______c ' d ' e ' x ' g ' h ' i ' k ' l\nv2IL'           a ' _ ' c ' d ' e ' x ' g ' h ' i ' k ' l\na \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l\nci\"             a \" b \" c \" d \" e \"_\" g \" h \" i \" k \" l\nca\"             a \" b \" c \" d \" e _g \" h \" i \" k \" l\ncI\"             a \" b \" c \" d \" e \" _ \" g \" h \" i \" k \" l\ncin\"            a \" b \" c \" d \" e \" x \"_\" h \" i \" k \" l\ncan\"            a \" b \" c \" d \" e \" x _h \" i \" k \" l\ncIn\"            a \" b \" c \" d \" e \" x \" _ \" h \" i \" k \" l\ncil\"            a \" b \" c \" d \"_\" x \" g \" h \" i \" k \" l\ncal\"            a \" b \" c \" d _x \" g \" h \" i \" k \" l\ncIl\"            a \" b \" c \" d \" _ \" x \" g \" h \" i \" k \" l\nciN\"            a \" b \" c \" d \" e \" x \" g \"_\" i \" k \" l\ncaN\"            a \" b \" c \" d \" e \" x \" g _i \" k \" l\ncIN\"            a \" b \" c \" d \" e \" x \" g \" _ \" i \" k \" l\nciL\"            a \" b \" c \"_\" e \" x \" g \" h \" i \" k \" l\ncaL\"            a \" b \" c _e \" x \" g \" h \" i \" k \" l\ncIL\"            a \" b \" c \" _ \" e \" x \" g \" h \" i \" k \" l\nc1i\"            a \" b \" c \" d \" e \"_\" g \" h \" i \" k \" l\nc1a\"            a \" b \" c \" d \" e _g \" h \" i \" k \" l\nc1I\"            a \" b \" c \" d \" e \" _ \" g \" h \" i \" k \" l\nc1in\"           a \" b \" c \" d \" e \" x \"_\" h \" i \" k \" l\nc1an\"           a \" b \" c \" d \" e \" x _h \" i \" k \" l\nc1In\"           a \" b \" c \" d \" e \" x \" _ \" h \" i \" k \" l\nc1il\"           a \" b \" c \" d \"_\" x \" g \" h \" i \" k \" l\nc1al\"           a \" b \" c \" d _x \" g \" h \" i \" k \" l\nc1Il\"           a \" b \" c \" d \" _ \" x \" g \" h \" i \" k \" l\nc1iN\"           a \" b \" c \" d \" e \" x \" g \"_\" i \" k \" l\nc1aN\"           a \" b \" c \" d \" e \" x \" g _i \" k \" l\nc1IN\"           a \" b \" c \" d \" e \" x \" g \" _ \" i \" k \" l\nc1iL\"           a \" b \" c \"_\" e \" x \" g \" h \" i \" k \" l\nc1aL\"           a \" b \" c _e \" x \" g \" h \" i \" k \" l\nc1IL\"           a \" b \" c \" _ \" e \" x \" g \" h \" i \" k \" l\nc2i\"            a \" b \" c \" d \" e \"_\" g \" h \" i \" k \" l\nc2a\"            a \" b \" c \" d \" e _g \" h \" i \" k \" l\nc2I\"            a \" b \" c \" d \" e \" _ \" g \" h \" i \" k \" l\nc2in\"           a \" b \" c \" d \" e \" x \" g \"_\" i \" k \" l\nc2an\"           a \" b \" c \" d \" e \" x \" g _i \" k \" l\nc2In\"           a \" b \" c \" d \" e \" x \" g \" _ \" i \" k \" l\nc2il\"           a \" b \" c \"_\" e \" x \" g \" h \" i \" k \" l\nc2al\"           a \" b \" c _e \" x \" g \" h \" i \" k \" l\nc2Il\"           a \" b \" c \" _ \" e \" x \" g \" h \" i \" k \" l\nc2iN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \"_\" l\nc2aN\"           a \" b \" c \" d \" e \" x \" g \" h \" i _l\nc2IN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" _ \" l\nc2iL\"           a \"_\" c \" d \" e \" x \" g \" h \" i \" k \" l\nc2aL\"           a _c \" d \" e \" x \" g \" h \" i \" k \" l\nc2IL\"           a \" _ \" c \" d \" e \" x \" g \" h \" i \" k \" l\ndi\"             a \" b \" c \" d \" e \"\" g \" h \" i \" k \" l\nda\"             a \" b \" c \" d \" e g \" h \" i \" k \" l\ndI\"             a \" b \" c \" d \" e \"  \" g \" h \" i \" k \" l\ndin\"            a \" b \" c \" d \" e \" x \"\" h \" i \" k \" l\ndan\"            a \" b \" c \" d \" e \" x h \" i \" k \" l\ndIn\"            a \" b \" c \" d \" e \" x \"  \" h \" i \" k \" l\ndil\"            a \" b \" c \" d \"\" x \" g \" h \" i \" k \" l\ndal\"            a \" b \" c \" d x \" g \" h \" i \" k \" l\ndIl\"            a \" b \" c \" d \"  \" x \" g \" h \" i \" k \" l\ndiN\"            a \" b \" c \" d \" e \" x \" g \"\" i \" k \" l\ndaN\"            a \" b \" c \" d \" e \" x \" g i \" k \" l\ndIN\"            a \" b \" c \" d \" e \" x \" g \"  \" i \" k \" l\ndiL\"            a \" b \" c \"\" e \" x \" g \" h \" i \" k \" l\ndaL\"            a \" b \" c e \" x \" g \" h \" i \" k \" l\ndIL\"            a \" b \" c \"  \" e \" x \" g \" h \" i \" k \" l\nd1i\"            a \" b \" c \" d \" e \"\" g \" h \" i \" k \" l\nd1a\"            a \" b \" c \" d \" e g \" h \" i \" k \" l\nd1I\"            a \" b \" c \" d \" e \"  \" g \" h \" i \" k \" l\nd1in\"           a \" b \" c \" d \" e \" x \"\" h \" i \" k \" l\nd1an\"           a \" b \" c \" d \" e \" x h \" i \" k \" l\nd1In\"           a \" b \" c \" d \" e \" x \"  \" h \" i \" k \" l\nd1il\"           a \" b \" c \" d \"\" x \" g \" h \" i \" k \" l\nd1al\"           a \" b \" c \" d x \" g \" h \" i \" k \" l\nd1Il\"           a \" b \" c \" d \"  \" x \" g \" h \" i \" k \" l\nd1iN\"           a \" b \" c \" d \" e \" x \" g \"\" i \" k \" l\nd1aN\"           a \" b \" c \" d \" e \" x \" g i \" k \" l\nd1IN\"           a \" b \" c \" d \" e \" x \" g \"  \" i \" k \" l\nd1iL\"           a \" b \" c \"\" e \" x \" g \" h \" i \" k \" l\nd1aL\"           a \" b \" c e \" x \" g \" h \" i \" k \" l\nd1IL\"           a \" b \" c \"  \" e \" x \" g \" h \" i \" k \" l\nd2i\"            a \" b \" c \" d \" e \"\" g \" h \" i \" k \" l\nd2a\"            a \" b \" c \" d \" e g \" h \" i \" k \" l\nd2I\"            a \" b \" c \" d \" e \"  \" g \" h \" i \" k \" l\nd2in\"           a \" b \" c \" d \" e \" x \" g \"\" i \" k \" l\nd2an\"           a \" b \" c \" d \" e \" x \" g i \" k \" l\nd2In\"           a \" b \" c \" d \" e \" x \" g \"  \" i \" k \" l\nd2il\"           a \" b \" c \"\" e \" x \" g \" h \" i \" k \" l\nd2al\"           a \" b \" c e \" x \" g \" h \" i \" k \" l\nd2Il\"           a \" b \" c \"  \" e \" x \" g \" h \" i \" k \" l\nd2iN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \"\" l\nd2aN\"           a \" b \" c \" d \" e \" x \" g \" h \" i l\nd2IN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \"  \" l\nd2iL\"           a \"\" c \" d \" e \" x \" g \" h \" i \" k \" l\nd2aL\"           a c \" d \" e \" x \" g \" h \" i \" k \" l\nd2IL\"           a \"  \" c \" d \" e \" x \" g \" h \" i \" k \" l\nyi\"             a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' x '\nya\"             a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" x \" '\nyI\"             a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'x'\nyin\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' g '\nyan\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" g \" '\nyIn\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'g'\nyil\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' e '\nyal\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" e \" '\nyIl\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'e'\nyiN\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' h '\nyaN\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" h \" '\nyIN\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'h'\nyiL\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' d '\nyaL\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" d \" '\nyIL\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'd'\ny1i\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' x '\ny1a\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" x \" '\ny1I\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'x'\ny1in\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' g '\ny1an\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" g \" '\ny1In\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'g'\ny1il\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' e '\ny1al\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" e \" '\ny1Il\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'e'\ny1iN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' h '\ny1aN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" h \" '\ny1IN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'h'\ny1iL\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' d '\ny1aL\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" d \" '\ny1IL\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'd'\ny2i\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' x '\ny2a\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" x \" '\ny2I\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'x'\ny2in\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' h '\ny2an\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" h \" '\ny2In\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'h'\ny2il\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' d '\ny2al\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" d \" '\ny2Il\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'd'\ny2iN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' k '\ny2aN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" k \" '\ny2IN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'k'\ny2iL\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' b '\ny2aL\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" b \" '\ny2IL\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'b'\nvi\"             a \" b \" c \" d \" e \"___\" g \" h \" i \" k \" l\nva\"             a \" b \" c \" d \" e ______g \" h \" i \" k \" l\nvI\"             a \" b \" c \" d \" e \" _ \" g \" h \" i \" k \" l\nvin\"            a \" b \" c \" d \" e \" x \"___\" h \" i \" k \" l\nvan\"            a \" b \" c \" d \" e \" x ______h \" i \" k \" l\nvIn\"            a \" b \" c \" d \" e \" x \" _ \" h \" i \" k \" l\nvil\"            a \" b \" c \" d \"___\" x \" g \" h \" i \" k \" l\nval\"            a \" b \" c \" d ______x \" g \" h \" i \" k \" l\nvIl\"            a \" b \" c \" d \" _ \" x \" g \" h \" i \" k \" l\nviN\"            a \" b \" c \" d \" e \" x \" g \"___\" i \" k \" l\nvaN\"            a \" b \" c \" d \" e \" x \" g ______i \" k \" l\nvIN\"            a \" b \" c \" d \" e \" x \" g \" _ \" i \" k \" l\nviL\"            a \" b \" c \"___\" e \" x \" g \" h \" i \" k \" l\nvaL\"            a \" b \" c ______e \" x \" g \" h \" i \" k \" l\nvIL\"            a \" b \" c \" _ \" e \" x \" g \" h \" i \" k \" l\nv1i\"            a \" b \" c \" d \" e \"___\" g \" h \" i \" k \" l\nv1a\"            a \" b \" c \" d \" e ______g \" h \" i \" k \" l\nv1I\"            a \" b \" c \" d \" e \" _ \" g \" h \" i \" k \" l\nv1in\"           a \" b \" c \" d \" e \" x \"___\" h \" i \" k \" l\nv1an\"           a \" b \" c \" d \" e \" x ______h \" i \" k \" l\nv1In\"           a \" b \" c \" d \" e \" x \" _ \" h \" i \" k \" l\nv1il\"           a \" b \" c \" d \"___\" x \" g \" h \" i \" k \" l\nv1al\"           a \" b \" c \" d ______x \" g \" h \" i \" k \" l\nv1Il\"           a \" b \" c \" d \" _ \" x \" g \" h \" i \" k \" l\nv1iN\"           a \" b \" c \" d \" e \" x \" g \"___\" i \" k \" l\nv1aN\"           a \" b \" c \" d \" e \" x \" g ______i \" k \" l\nv1IN\"           a \" b \" c \" d \" e \" x \" g \" _ \" i \" k \" l\nv1iL\"           a \" b \" c \"___\" e \" x \" g \" h \" i \" k \" l\nv1aL\"           a \" b \" c ______e \" x \" g \" h \" i \" k \" l\nv1IL\"           a \" b \" c \" _ \" e \" x \" g \" h \" i \" k \" l\nv2i\"            a \" b \" c \" d \" e \"___\" g \" h \" i \" k \" l\nv2a\"            a \" b \" c \" d \" e ______g \" h \" i \" k \" l\nv2I\"            a \" b \" c \" d \" e \" _ \" g \" h \" i \" k \" l\nv2in\"           a \" b \" c \" d \" e \" x \" g \"___\" i \" k \" l\nv2an\"           a \" b \" c \" d \" e \" x \" g ______i \" k \" l\nv2In\"           a \" b \" c \" d \" e \" x \" g \" _ \" i \" k \" l\nv2il\"           a \" b \" c \"___\" e \" x \" g \" h \" i \" k \" l\nv2al\"           a \" b \" c ______e \" x \" g \" h \" i \" k \" l\nv2Il\"           a \" b \" c \" _ \" e \" x \" g \" h \" i \" k \" l\nv2iN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \"___\" l\nv2aN\"           a \" b \" c \" d \" e \" x \" g \" h \" i ______l\nv2IN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" _ \" l\nv2iL\"           a \"___\" c \" d \" e \" x \" g \" h \" i \" k \" l\nv2aL\"           a ______c \" d \" e \" x \" g \" h \" i \" k \" l\nv2IL\"           a \" _ \" c \" d \" e \" x \" g \" h \" i \" k \" l\na ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l\nci`             a ` b ` c ` d ` e `_` g ` h ` i ` k ` l\nca`             a ` b ` c ` d ` e _g ` h ` i ` k ` l\ncI`             a ` b ` c ` d ` e ` _ ` g ` h ` i ` k ` l\ncin`            a ` b ` c ` d ` e ` x `_` h ` i ` k ` l\ncan`            a ` b ` c ` d ` e ` x _h ` i ` k ` l\ncIn`            a ` b ` c ` d ` e ` x ` _ ` h ` i ` k ` l\ncil`            a ` b ` c ` d `_` x ` g ` h ` i ` k ` l\ncal`            a ` b ` c ` d _x ` g ` h ` i ` k ` l\ncIl`            a ` b ` c ` d ` _ ` x ` g ` h ` i ` k ` l\nciN`            a ` b ` c ` d ` e ` x ` g `_` i ` k ` l\ncaN`            a ` b ` c ` d ` e ` x ` g _i ` k ` l\ncIN`            a ` b ` c ` d ` e ` x ` g ` _ ` i ` k ` l\nciL`            a ` b ` c `_` e ` x ` g ` h ` i ` k ` l\ncaL`            a ` b ` c _e ` x ` g ` h ` i ` k ` l\ncIL`            a ` b ` c ` _ ` e ` x ` g ` h ` i ` k ` l\nc1i`            a ` b ` c ` d ` e `_` g ` h ` i ` k ` l\nc1a`            a ` b ` c ` d ` e _g ` h ` i ` k ` l\nc1I`            a ` b ` c ` d ` e ` _ ` g ` h ` i ` k ` l\nc1in`           a ` b ` c ` d ` e ` x `_` h ` i ` k ` l\nc1an`           a ` b ` c ` d ` e ` x _h ` i ` k ` l\nc1In`           a ` b ` c ` d ` e ` x ` _ ` h ` i ` k ` l\nc1il`           a ` b ` c ` d `_` x ` g ` h ` i ` k ` l\nc1al`           a ` b ` c ` d _x ` g ` h ` i ` k ` l\nc1Il`           a ` b ` c ` d ` _ ` x ` g ` h ` i ` k ` l\nc1iN`           a ` b ` c ` d ` e ` x ` g `_` i ` k ` l\nc1aN`           a ` b ` c ` d ` e ` x ` g _i ` k ` l\nc1IN`           a ` b ` c ` d ` e ` x ` g ` _ ` i ` k ` l\nc1iL`           a ` b ` c `_` e ` x ` g ` h ` i ` k ` l\nc1aL`           a ` b ` c _e ` x ` g ` h ` i ` k ` l\nc1IL`           a ` b ` c ` _ ` e ` x ` g ` h ` i ` k ` l\nc2i`            a ` b ` c ` d ` e `_` g ` h ` i ` k ` l\nc2a`            a ` b ` c ` d ` e _g ` h ` i ` k ` l\nc2I`            a ` b ` c ` d ` e ` _ ` g ` h ` i ` k ` l\nc2in`           a ` b ` c ` d ` e ` x ` g `_` i ` k ` l\nc2an`           a ` b ` c ` d ` e ` x ` g _i ` k ` l\nc2In`           a ` b ` c ` d ` e ` x ` g ` _ ` i ` k ` l\nc2il`           a ` b ` c `_` e ` x ` g ` h ` i ` k ` l\nc2al`           a ` b ` c _e ` x ` g ` h ` i ` k ` l\nc2Il`           a ` b ` c ` _ ` e ` x ` g ` h ` i ` k ` l\nc2iN`           a ` b ` c ` d ` e ` x ` g ` h ` i `_` l\nc2aN`           a ` b ` c ` d ` e ` x ` g ` h ` i _l\nc2IN`           a ` b ` c ` d ` e ` x ` g ` h ` i ` _ ` l\nc2iL`           a `_` c ` d ` e ` x ` g ` h ` i ` k ` l\nc2aL`           a _c ` d ` e ` x ` g ` h ` i ` k ` l\nc2IL`           a ` _ ` c ` d ` e ` x ` g ` h ` i ` k ` l\ndi`             a ` b ` c ` d ` e `` g ` h ` i ` k ` l\nda`             a ` b ` c ` d ` e g ` h ` i ` k ` l\ndI`             a ` b ` c ` d ` e `  ` g ` h ` i ` k ` l\ndin`            a ` b ` c ` d ` e ` x `` h ` i ` k ` l\ndan`            a ` b ` c ` d ` e ` x h ` i ` k ` l\ndIn`            a ` b ` c ` d ` e ` x `  ` h ` i ` k ` l\ndil`            a ` b ` c ` d `` x ` g ` h ` i ` k ` l\ndal`            a ` b ` c ` d x ` g ` h ` i ` k ` l\ndIl`            a ` b ` c ` d `  ` x ` g ` h ` i ` k ` l\ndiN`            a ` b ` c ` d ` e ` x ` g `` i ` k ` l\ndaN`            a ` b ` c ` d ` e ` x ` g i ` k ` l\ndIN`            a ` b ` c ` d ` e ` x ` g `  ` i ` k ` l\ndiL`            a ` b ` c `` e ` x ` g ` h ` i ` k ` l\ndaL`            a ` b ` c e ` x ` g ` h ` i ` k ` l\ndIL`            a ` b ` c `  ` e ` x ` g ` h ` i ` k ` l\nd1i`            a ` b ` c ` d ` e `` g ` h ` i ` k ` l\nd1a`            a ` b ` c ` d ` e g ` h ` i ` k ` l\nd1I`            a ` b ` c ` d ` e `  ` g ` h ` i ` k ` l\nd1in`           a ` b ` c ` d ` e ` x `` h ` i ` k ` l\nd1an`           a ` b ` c ` d ` e ` x h ` i ` k ` l\nd1In`           a ` b ` c ` d ` e ` x `  ` h ` i ` k ` l\nd1il`           a ` b ` c ` d `` x ` g ` h ` i ` k ` l\nd1al`           a ` b ` c ` d x ` g ` h ` i ` k ` l\nd1Il`           a ` b ` c ` d `  ` x ` g ` h ` i ` k ` l\nd1iN`           a ` b ` c ` d ` e ` x ` g `` i ` k ` l\nd1aN`           a ` b ` c ` d ` e ` x ` g i ` k ` l\nd1IN`           a ` b ` c ` d ` e ` x ` g `  ` i ` k ` l\nd1iL`           a ` b ` c `` e ` x ` g ` h ` i ` k ` l\nd1aL`           a ` b ` c e ` x ` g ` h ` i ` k ` l\nd1IL`           a ` b ` c `  ` e ` x ` g ` h ` i ` k ` l\nd2i`            a ` b ` c ` d ` e `` g ` h ` i ` k ` l\nd2a`            a ` b ` c ` d ` e g ` h ` i ` k ` l\nd2I`            a ` b ` c ` d ` e `  ` g ` h ` i ` k ` l\nd2in`           a ` b ` c ` d ` e ` x ` g `` i ` k ` l\nd2an`           a ` b ` c ` d ` e ` x ` g i ` k ` l\nd2In`           a ` b ` c ` d ` e ` x ` g `  ` i ` k ` l\nd2il`           a ` b ` c `` e ` x ` g ` h ` i ` k ` l\nd2al`           a ` b ` c e ` x ` g ` h ` i ` k ` l\nd2Il`           a ` b ` c `  ` e ` x ` g ` h ` i ` k ` l\nd2iN`           a ` b ` c ` d ` e ` x ` g ` h ` i `` l\nd2aN`           a ` b ` c ` d ` e ` x ` g ` h ` i l\nd2IN`           a ` b ` c ` d ` e ` x ` g ` h ` i `  ` l\nd2iL`           a `` c ` d ` e ` x ` g ` h ` i ` k ` l\nd2aL`           a c ` d ` e ` x ` g ` h ` i ` k ` l\nd2IL`           a `  ` c ` d ` e ` x ` g ` h ` i ` k ` l\nyi`             a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' x '\nya`             a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` x ` '\nyI`             a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'x'\nyin`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' g '\nyan`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` g ` '\nyIn`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'g'\nyil`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' e '\nyal`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` e ` '\nyIl`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'e'\nyiN`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' h '\nyaN`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` h ` '\nyIN`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'h'\nyiL`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' d '\nyaL`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` d ` '\nyIL`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'd'\ny1i`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' x '\ny1a`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` x ` '\ny1I`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'x'\ny1in`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' g '\ny1an`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` g ` '\ny1In`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'g'\ny1il`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' e '\ny1al`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` e ` '\ny1Il`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'e'\ny1iN`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' h '\ny1aN`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` h ` '\ny1IN`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'h'\ny1iL`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' d '\ny1aL`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` d ` '\ny1IL`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'd'\ny2i`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' x '\ny2a`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` x ` '\ny2I`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'x'\ny2in`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' h '\ny2an`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` h ` '\ny2In`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'h'\ny2il`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' d '\ny2al`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` d ` '\ny2Il`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'd'\ny2iN`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' k '\ny2aN`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` k ` '\ny2IN`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'k'\ny2iL`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' b '\ny2aL`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` b ` '\ny2IL`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'b'\nvi`             a ` b ` c ` d ` e `___` g ` h ` i ` k ` l\nva`             a ` b ` c ` d ` e ______g ` h ` i ` k ` l\nvI`             a ` b ` c ` d ` e ` _ ` g ` h ` i ` k ` l\nvin`            a ` b ` c ` d ` e ` x `___` h ` i ` k ` l\nvan`            a ` b ` c ` d ` e ` x ______h ` i ` k ` l\nvIn`            a ` b ` c ` d ` e ` x ` _ ` h ` i ` k ` l\nvil`            a ` b ` c ` d `___` x ` g ` h ` i ` k ` l\nval`            a ` b ` c ` d ______x ` g ` h ` i ` k ` l\nvIl`            a ` b ` c ` d ` _ ` x ` g ` h ` i ` k ` l\nviN`            a ` b ` c ` d ` e ` x ` g `___` i ` k ` l\nvaN`            a ` b ` c ` d ` e ` x ` g ______i ` k ` l\nvIN`            a ` b ` c ` d ` e ` x ` g ` _ ` i ` k ` l\nviL`            a ` b ` c `___` e ` x ` g ` h ` i ` k ` l\nvaL`            a ` b ` c ______e ` x ` g ` h ` i ` k ` l\nvIL`            a ` b ` c ` _ ` e ` x ` g ` h ` i ` k ` l\nv1i`            a ` b ` c ` d ` e `___` g ` h ` i ` k ` l\nv1a`            a ` b ` c ` d ` e ______g ` h ` i ` k ` l\nv1I`            a ` b ` c ` d ` e ` _ ` g ` h ` i ` k ` l\nv1in`           a ` b ` c ` d ` e ` x `___` h ` i ` k ` l\nv1an`           a ` b ` c ` d ` e ` x ______h ` i ` k ` l\nv1In`           a ` b ` c ` d ` e ` x ` _ ` h ` i ` k ` l\nv1il`           a ` b ` c ` d `___` x ` g ` h ` i ` k ` l\nv1al`           a ` b ` c ` d ______x ` g ` h ` i ` k ` l\nv1Il`           a ` b ` c ` d ` _ ` x ` g ` h ` i ` k ` l\nv1iN`           a ` b ` c ` d ` e ` x ` g `___` i ` k ` l\nv1aN`           a ` b ` c ` d ` e ` x ` g ______i ` k ` l\nv1IN`           a ` b ` c ` d ` e ` x ` g ` _ ` i ` k ` l\nv1iL`           a ` b ` c `___` e ` x ` g ` h ` i ` k ` l\nv1aL`           a ` b ` c ______e ` x ` g ` h ` i ` k ` l\nv1IL`           a ` b ` c ` _ ` e ` x ` g ` h ` i ` k ` l\nv2i`            a ` b ` c ` d ` e `___` g ` h ` i ` k ` l\nv2a`            a ` b ` c ` d ` e ______g ` h ` i ` k ` l\nv2I`            a ` b ` c ` d ` e ` _ ` g ` h ` i ` k ` l\nv2in`           a ` b ` c ` d ` e ` x ` g `___` i ` k ` l\nv2an`           a ` b ` c ` d ` e ` x ` g ______i ` k ` l\nv2In`           a ` b ` c ` d ` e ` x ` g ` _ ` i ` k ` l\nv2il`           a ` b ` c `___` e ` x ` g ` h ` i ` k ` l\nv2al`           a ` b ` c ______e ` x ` g ` h ` i ` k ` l\nv2Il`           a ` b ` c ` _ ` e ` x ` g ` h ` i ` k ` l\nv2iN`           a ` b ` c ` d ` e ` x ` g ` h ` i `___` l\nv2aN`           a ` b ` c ` d ` e ` x ` g ` h ` i ______l\nv2IN`           a ` b ` c ` d ` e ` x ` g ` h ` i ` _ ` l\nv2iL`           a `___` c ` d ` e ` x ` g ` h ` i ` k ` l\nv2aL`           a ______c ` d ` e ` x ` g ` h ` i ` k ` l\nv2IL`           a ` _ ` c ` d ` e ` x ` g ` h ` i ` k ` l\n\na , b , c , d , e , x , g , h , i , k , l\nci,             a , b , c , d , e ,_, g , h , i , k , l\nca,             a , b , c , d , e _, g , h , i , k , l\ncI,             a , b , c , d , e , _ , g , h , i , k , l\ncA,             a , b , c , d , e _g , h , i , k , l\ncin,            a , b , c , d , e , x ,_, h , i , k , l\ncan,            a , b , c , d , e , x _, h , i , k , l\ncIn,            a , b , c , d , e , x , _ , h , i , k , l\ncAn,            a , b , c , d , e , x _h , i , k , l\ncil,            a , b , c , d ,_, x , g , h , i , k , l\ncal,            a , b , c , d _, x , g , h , i , k , l\ncIl,            a , b , c , d , _ , x , g , h , i , k , l\ncAl,            a , b , c , d _x , g , h , i , k , l\nciN,            a , b , c , d , e , x , g ,_, i , k , l\ncaN,            a , b , c , d , e , x , g _, i , k , l\ncIN,            a , b , c , d , e , x , g , _ , i , k , l\ncAN,            a , b , c , d , e , x , g _i , k , l\nciL,            a , b , c ,_, e , x , g , h , i , k , l\ncaL,            a , b , c _, e , x , g , h , i , k , l\ncIL,            a , b , c , _ , e , x , g , h , i , k , l\ncAL,            a , b , c _e , x , g , h , i , k , l\nc1i,            a , b , c , d , e ,_, g , h , i , k , l\nc1a,            a , b , c , d , e _, g , h , i , k , l\nc1I,            a , b , c , d , e , _ , g , h , i , k , l\nc1A,            a , b , c , d , e _g , h , i , k , l\nc1in,           a , b , c , d , e , x ,_, h , i , k , l\nc1an,           a , b , c , d , e , x _, h , i , k , l\nc1In,           a , b , c , d , e , x , _ , h , i , k , l\nc1An,           a , b , c , d , e , x _h , i , k , l\nc1il,           a , b , c , d ,_, x , g , h , i , k , l\nc1al,           a , b , c , d _, x , g , h , i , k , l\nc1Il,           a , b , c , d , _ , x , g , h , i , k , l\nc1Al,           a , b , c , d _x , g , h , i , k , l\nc1iN,           a , b , c , d , e , x , g ,_, i , k , l\nc1aN,           a , b , c , d , e , x , g _, i , k , l\nc1IN,           a , b , c , d , e , x , g , _ , i , k , l\nc1AN,           a , b , c , d , e , x , g _i , k , l\nc1iL,           a , b , c ,_, e , x , g , h , i , k , l\nc1aL,           a , b , c _, e , x , g , h , i , k , l\nc1IL,           a , b , c , _ , e , x , g , h , i , k , l\nc1AL,           a , b , c _e , x , g , h , i , k , l\nc2i,            a , b , c , d , e ,_, g , h , i , k , l\nc2a,            a , b , c , d , e _, g , h , i , k , l\nc2I,            a , b , c , d , e , _ , g , h , i , k , l\nc2A,            a , b , c , d , e _g , h , i , k , l\nc2in,           a , b , c , d , e , x , g ,_, i , k , l\nc2an,           a , b , c , d , e , x , g _, i , k , l\nc2In,           a , b , c , d , e , x , g , _ , i , k , l\nc2An,           a , b , c , d , e , x , g _i , k , l\nc2il,           a , b , c ,_, e , x , g , h , i , k , l\nc2al,           a , b , c _, e , x , g , h , i , k , l\nc2Il,           a , b , c , _ , e , x , g , h , i , k , l\nc2Al,           a , b , c _e , x , g , h , i , k , l\nc2iN,           a , b , c , d , e , x , g , h , i ,_, l\nc2aN,           a , b , c , d , e , x , g , h , i _, l\nc2IN,           a , b , c , d , e , x , g , h , i , _ , l\nc2AN,           a , b , c , d , e , x , g , h , i _l\nc2iL,           a ,_, c , d , e , x , g , h , i , k , l\nc2aL,           a _, c , d , e , x , g , h , i , k , l\nc2IL,           a , _ , c , d , e , x , g , h , i , k , l\nc2AL,           a _c , d , e , x , g , h , i , k , l\ndi,             a , b , c , d , e ,, g , h , i , k , l\nda,             a , b , c , d , e , g , h , i , k , l\ndI,             a , b , c , d , e ,  , g , h , i , k , l\ndA,             a , b , c , d , e g , h , i , k , l\ndin,            a , b , c , d , e , x ,, h , i , k , l\ndan,            a , b , c , d , e , x , h , i , k , l\ndIn,            a , b , c , d , e , x ,  , h , i , k , l\ndAn,            a , b , c , d , e , x h , i , k , l\ndil,            a , b , c , d ,, x , g , h , i , k , l\ndal,            a , b , c , d , x , g , h , i , k , l\ndIl,            a , b , c , d ,  , x , g , h , i , k , l\ndAl,            a , b , c , d x , g , h , i , k , l\ndiN,            a , b , c , d , e , x , g ,, i , k , l\ndaN,            a , b , c , d , e , x , g , i , k , l\ndIN,            a , b , c , d , e , x , g ,  , i , k , l\ndAN,            a , b , c , d , e , x , g i , k , l\ndiL,            a , b , c ,, e , x , g , h , i , k , l\ndaL,            a , b , c , e , x , g , h , i , k , l\ndIL,            a , b , c ,  , e , x , g , h , i , k , l\ndAL,            a , b , c e , x , g , h , i , k , l\nd1i,            a , b , c , d , e ,, g , h , i , k , l\nd1a,            a , b , c , d , e , g , h , i , k , l\nd1I,            a , b , c , d , e ,  , g , h , i , k , l\nd1A,            a , b , c , d , e g , h , i , k , l\nd1in,           a , b , c , d , e , x ,, h , i , k , l\nd1an,           a , b , c , d , e , x , h , i , k , l\nd1In,           a , b , c , d , e , x ,  , h , i , k , l\nd1An,           a , b , c , d , e , x h , i , k , l\nd1il,           a , b , c , d ,, x , g , h , i , k , l\nd1al,           a , b , c , d , x , g , h , i , k , l\nd1Il,           a , b , c , d ,  , x , g , h , i , k , l\nd1Al,           a , b , c , d x , g , h , i , k , l\nd1iN,           a , b , c , d , e , x , g ,, i , k , l\nd1aN,           a , b , c , d , e , x , g , i , k , l\nd1IN,           a , b , c , d , e , x , g ,  , i , k , l\nd1AN,           a , b , c , d , e , x , g i , k , l\nd1iL,           a , b , c ,, e , x , g , h , i , k , l\nd1aL,           a , b , c , e , x , g , h , i , k , l\nd1IL,           a , b , c ,  , e , x , g , h , i , k , l\nd1AL,           a , b , c e , x , g , h , i , k , l\nd2i,            a , b , c , d , e ,, g , h , i , k , l\nd2a,            a , b , c , d , e , g , h , i , k , l\nd2I,            a , b , c , d , e ,  , g , h , i , k , l\nd2A,            a , b , c , d , e g , h , i , k , l\nd2in,           a , b , c , d , e , x , g ,, i , k , l\nd2an,           a , b , c , d , e , x , g , i , k , l\nd2In,           a , b , c , d , e , x , g ,  , i , k , l\nd2An,           a , b , c , d , e , x , g i , k , l\nd2il,           a , b , c ,, e , x , g , h , i , k , l\nd2al,           a , b , c , e , x , g , h , i , k , l\nd2Il,           a , b , c ,  , e , x , g , h , i , k , l\nd2Al,           a , b , c e , x , g , h , i , k , l\nd2iN,           a , b , c , d , e , x , g , h , i ,, l\nd2aN,           a , b , c , d , e , x , g , h , i , l\nd2IN,           a , b , c , d , e , x , g , h , i ,  , l\nd2AN,           a , b , c , d , e , x , g , h , i l\nd2iL,           a ,, c , d , e , x , g , h , i , k , l\nd2aL,           a , c , d , e , x , g , h , i , k , l\nd2IL,           a ,  , c , d , e , x , g , h , i , k , l\nd2AL,           a c , d , e , x , g , h , i , k , l\nyi,             a , b , c , d , e , x , g , h , i , k , l       ' x '\nya,             a , b , c , d , e , x , g , h , i , k , l       ', x '\nyI,             a , b , c , d , e , x , g , h , i , k , l       'x'\nyA,             a , b , c , d , e , x , g , h , i , k , l       ', x , '\nyin,            a , b , c , d , e , x , g , h , i , k , l       ' g '\nyan,            a , b , c , d , e , x , g , h , i , k , l       ', g '\nyIn,            a , b , c , d , e , x , g , h , i , k , l       'g'\nyAn,            a , b , c , d , e , x , g , h , i , k , l       ', g , '\nyil,            a , b , c , d , e , x , g , h , i , k , l       ' e '\nyal,            a , b , c , d , e , x , g , h , i , k , l       ', e '\nyIl,            a , b , c , d , e , x , g , h , i , k , l       'e'\nyAl,            a , b , c , d , e , x , g , h , i , k , l       ', e , '\nyiN,            a , b , c , d , e , x , g , h , i , k , l       ' h '\nyaN,            a , b , c , d , e , x , g , h , i , k , l       ', h '\nyIN,            a , b , c , d , e , x , g , h , i , k , l       'h'\nyAN,            a , b , c , d , e , x , g , h , i , k , l       ', h , '\nyiL,            a , b , c , d , e , x , g , h , i , k , l       ' d '\nyaL,            a , b , c , d , e , x , g , h , i , k , l       ', d '\nyIL,            a , b , c , d , e , x , g , h , i , k , l       'd'\nyAL,            a , b , c , d , e , x , g , h , i , k , l       ', d , '\ny1i,            a , b , c , d , e , x , g , h , i , k , l       ' x '\ny1a,            a , b , c , d , e , x , g , h , i , k , l       ', x '\ny1I,            a , b , c , d , e , x , g , h , i , k , l       'x'\ny1A,            a , b , c , d , e , x , g , h , i , k , l       ', x , '\ny1in,           a , b , c , d , e , x , g , h , i , k , l       ' g '\ny1an,           a , b , c , d , e , x , g , h , i , k , l       ', g '\ny1In,           a , b , c , d , e , x , g , h , i , k , l       'g'\ny1An,           a , b , c , d , e , x , g , h , i , k , l       ', g , '\ny1il,           a , b , c , d , e , x , g , h , i , k , l       ' e '\ny1al,           a , b , c , d , e , x , g , h , i , k , l       ', e '\ny1Il,           a , b , c , d , e , x , g , h , i , k , l       'e'\ny1Al,           a , b , c , d , e , x , g , h , i , k , l       ', e , '\ny1iN,           a , b , c , d , e , x , g , h , i , k , l       ' h '\ny1aN,           a , b , c , d , e , x , g , h , i , k , l       ', h '\ny1IN,           a , b , c , d , e , x , g , h , i , k , l       'h'\ny1AN,           a , b , c , d , e , x , g , h , i , k , l       ', h , '\ny1iL,           a , b , c , d , e , x , g , h , i , k , l       ' d '\ny1aL,           a , b , c , d , e , x , g , h , i , k , l       ', d '\ny1IL,           a , b , c , d , e , x , g , h , i , k , l       'd'\ny1AL,           a , b , c , d , e , x , g , h , i , k , l       ', d , '\ny2i,            a , b , c , d , e , x , g , h , i , k , l       ' x '\ny2a,            a , b , c , d , e , x , g , h , i , k , l       ', x '\ny2I,            a , b , c , d , e , x , g , h , i , k , l       'x'\ny2A,            a , b , c , d , e , x , g , h , i , k , l       ', x , '\ny2in,           a , b , c , d , e , x , g , h , i , k , l       ' h '\ny2an,           a , b , c , d , e , x , g , h , i , k , l       ', h '\ny2In,           a , b , c , d , e , x , g , h , i , k , l       'h'\ny2An,           a , b , c , d , e , x , g , h , i , k , l       ', h , '\ny2il,           a , b , c , d , e , x , g , h , i , k , l       ' d '\ny2al,           a , b , c , d , e , x , g , h , i , k , l       ', d '\ny2Il,           a , b , c , d , e , x , g , h , i , k , l       'd'\ny2Al,           a , b , c , d , e , x , g , h , i , k , l       ', d , '\ny2iN,           a , b , c , d , e , x , g , h , i , k , l       ' k '\ny2aN,           a , b , c , d , e , x , g , h , i , k , l       ', k '\ny2IN,           a , b , c , d , e , x , g , h , i , k , l       'k'\ny2AN,           a , b , c , d , e , x , g , h , i , k , l       ', k , '\ny2iL,           a , b , c , d , e , x , g , h , i , k , l       ' b '\ny2aL,           a , b , c , d , e , x , g , h , i , k , l       ', b '\ny2IL,           a , b , c , d , e , x , g , h , i , k , l       'b'\ny2AL,           a , b , c , d , e , x , g , h , i , k , l       ', b , '\nvi,             a , b , c , d , e ,___, g , h , i , k , l\nva,             a , b , c , d , e ____, g , h , i , k , l\nvI,             a , b , c , d , e , _ , g , h , i , k , l\nvA,             a , b , c , d , e ______g , h , i , k , l\nvin,            a , b , c , d , e , x ,___, h , i , k , l\nvan,            a , b , c , d , e , x ____, h , i , k , l\nvIn,            a , b , c , d , e , x , _ , h , i , k , l\nvAn,            a , b , c , d , e , x ______h , i , k , l\nvil,            a , b , c , d ,___, x , g , h , i , k , l\nval,            a , b , c , d ____, x , g , h , i , k , l\nvIl,            a , b , c , d , _ , x , g , h , i , k , l\nvAl,            a , b , c , d ______x , g , h , i , k , l\nviN,            a , b , c , d , e , x , g ,___, i , k , l\nvaN,            a , b , c , d , e , x , g ____, i , k , l\nvIN,            a , b , c , d , e , x , g , _ , i , k , l\nvAN,            a , b , c , d , e , x , g ______i , k , l\nviL,            a , b , c ,___, e , x , g , h , i , k , l\nvaL,            a , b , c ____, e , x , g , h , i , k , l\nvIL,            a , b , c , _ , e , x , g , h , i , k , l\nvAL,            a , b , c ______e , x , g , h , i , k , l\nv1i,            a , b , c , d , e ,___, g , h , i , k , l\nv1a,            a , b , c , d , e ____, g , h , i , k , l\nv1I,            a , b , c , d , e , _ , g , h , i , k , l\nv1A,            a , b , c , d , e ______g , h , i , k , l\nv1in,           a , b , c , d , e , x ,___, h , i , k , l\nv1an,           a , b , c , d , e , x ____, h , i , k , l\nv1In,           a , b , c , d , e , x , _ , h , i , k , l\nv1An,           a , b , c , d , e , x ______h , i , k , l\nv1il,           a , b , c , d ,___, x , g , h , i , k , l\nv1al,           a , b , c , d ____, x , g , h , i , k , l\nv1Il,           a , b , c , d , _ , x , g , h , i , k , l\nv1Al,           a , b , c , d ______x , g , h , i , k , l\nv1iN,           a , b , c , d , e , x , g ,___, i , k , l\nv1aN,           a , b , c , d , e , x , g ____, i , k , l\nv1IN,           a , b , c , d , e , x , g , _ , i , k , l\nv1AN,           a , b , c , d , e , x , g ______i , k , l\nv1iL,           a , b , c ,___, e , x , g , h , i , k , l\nv1aL,           a , b , c ____, e , x , g , h , i , k , l\nv1IL,           a , b , c , _ , e , x , g , h , i , k , l\nv1AL,           a , b , c ______e , x , g , h , i , k , l\nv2i,            a , b , c , d , e ,___, g , h , i , k , l\nv2a,            a , b , c , d , e ____, g , h , i , k , l\nv2I,            a , b , c , d , e , _ , g , h , i , k , l\nv2A,            a , b , c , d , e ______g , h , i , k , l\nv2in,           a , b , c , d , e , x , g ,___, i , k , l\nv2an,           a , b , c , d , e , x , g ____, i , k , l\nv2In,           a , b , c , d , e , x , g , _ , i , k , l\nv2An,           a , b , c , d , e , x , g ______i , k , l\nv2il,           a , b , c ,___, e , x , g , h , i , k , l\nv2al,           a , b , c ____, e , x , g , h , i , k , l\nv2Il,           a , b , c , _ , e , x , g , h , i , k , l\nv2Al,           a , b , c ______e , x , g , h , i , k , l\nv2iN,           a , b , c , d , e , x , g , h , i ,___, l\nv2aN,           a , b , c , d , e , x , g , h , i ____, l\nv2IN,           a , b , c , d , e , x , g , h , i , _ , l\nv2AN,           a , b , c , d , e , x , g , h , i ______l\nv2iL,           a ,___, c , d , e , x , g , h , i , k , l\nv2aL,           a ____, c , d , e , x , g , h , i , k , l\nv2IL,           a , _ , c , d , e , x , g , h , i , k , l\nv2AL,           a ______c , d , e , x , g , h , i , k , l\na . b . c . d . e . x . g . h . i . k . l\nci.             a . b . c . d . e ._. g . h . i . k . l\nca.             a . b . c . d . e _. g . h . i . k . l\ncI.             a . b . c . d . e . _ . g . h . i . k . l\ncA.             a . b . c . d . e _g . h . i . k . l\ncin.            a . b . c . d . e . x ._. h . i . k . l\ncan.            a . b . c . d . e . x _. h . i . k . l\ncIn.            a . b . c . d . e . x . _ . h . i . k . l\ncAn.            a . b . c . d . e . x _h . i . k . l\ncil.            a . b . c . d ._. x . g . h . i . k . l\ncal.            a . b . c . d _. x . g . h . i . k . l\ncIl.            a . b . c . d . _ . x . g . h . i . k . l\ncAl.            a . b . c . d _x . g . h . i . k . l\nciN.            a . b . c . d . e . x . g ._. i . k . l\ncaN.            a . b . c . d . e . x . g _. i . k . l\ncIN.            a . b . c . d . e . x . g . _ . i . k . l\ncAN.            a . b . c . d . e . x . g _i . k . l\nciL.            a . b . c ._. e . x . g . h . i . k . l\ncaL.            a . b . c _. e . x . g . h . i . k . l\ncIL.            a . b . c . _ . e . x . g . h . i . k . l\ncAL.            a . b . c _e . x . g . h . i . k . l\nc1i.            a . b . c . d . e ._. g . h . i . k . l\nc1a.            a . b . c . d . e _. g . h . i . k . l\nc1I.            a . b . c . d . e . _ . g . h . i . k . l\nc1A.            a . b . c . d . e _g . h . i . k . l\nc1in.           a . b . c . d . e . x ._. h . i . k . l\nc1an.           a . b . c . d . e . x _. h . i . k . l\nc1In.           a . b . c . d . e . x . _ . h . i . k . l\nc1An.           a . b . c . d . e . x _h . i . k . l\nc1il.           a . b . c . d ._. x . g . h . i . k . l\nc1al.           a . b . c . d _. x . g . h . i . k . l\nc1Il.           a . b . c . d . _ . x . g . h . i . k . l\nc1Al.           a . b . c . d _x . g . h . i . k . l\nc1iN.           a . b . c . d . e . x . g ._. i . k . l\nc1aN.           a . b . c . d . e . x . g _. i . k . l\nc1IN.           a . b . c . d . e . x . g . _ . i . k . l\nc1AN.           a . b . c . d . e . x . g _i . k . l\nc1iL.           a . b . c ._. e . x . g . h . i . k . l\nc1aL.           a . b . c _. e . x . g . h . i . k . l\nc1IL.           a . b . c . _ . e . x . g . h . i . k . l\nc1AL.           a . b . c _e . x . g . h . i . k . l\nc2i.            a . b . c . d . e ._. g . h . i . k . l\nc2a.            a . b . c . d . e _. g . h . i . k . l\nc2I.            a . b . c . d . e . _ . g . h . i . k . l\nc2A.            a . b . c . d . e _g . h . i . k . l\nc2in.           a . b . c . d . e . x . g ._. i . k . l\nc2an.           a . b . c . d . e . x . g _. i . k . l\nc2In.           a . b . c . d . e . x . g . _ . i . k . l\nc2An.           a . b . c . d . e . x . g _i . k . l\nc2il.           a . b . c ._. e . x . g . h . i . k . l\nc2al.           a . b . c _. e . x . g . h . i . k . l\nc2Il.           a . b . c . _ . e . x . g . h . i . k . l\nc2Al.           a . b . c _e . x . g . h . i . k . l\nc2iN.           a . b . c . d . e . x . g . h . i ._. l\nc2aN.           a . b . c . d . e . x . g . h . i _. l\nc2IN.           a . b . c . d . e . x . g . h . i . _ . l\nc2AN.           a . b . c . d . e . x . g . h . i _l\nc2iL.           a ._. c . d . e . x . g . h . i . k . l\nc2aL.           a _. c . d . e . x . g . h . i . k . l\nc2IL.           a . _ . c . d . e . x . g . h . i . k . l\nc2AL.           a _c . d . e . x . g . h . i . k . l\ndi.             a . b . c . d . e .. g . h . i . k . l\nda.             a . b . c . d . e . g . h . i . k . l\ndI.             a . b . c . d . e .  . g . h . i . k . l\ndA.             a . b . c . d . e g . h . i . k . l\ndin.            a . b . c . d . e . x .. h . i . k . l\ndan.            a . b . c . d . e . x . h . i . k . l\ndIn.            a . b . c . d . e . x .  . h . i . k . l\ndAn.            a . b . c . d . e . x h . i . k . l\ndil.            a . b . c . d .. x . g . h . i . k . l\ndal.            a . b . c . d . x . g . h . i . k . l\ndIl.            a . b . c . d .  . x . g . h . i . k . l\ndAl.            a . b . c . d x . g . h . i . k . l\ndiN.            a . b . c . d . e . x . g .. i . k . l\ndaN.            a . b . c . d . e . x . g . i . k . l\ndIN.            a . b . c . d . e . x . g .  . i . k . l\ndAN.            a . b . c . d . e . x . g i . k . l\ndiL.            a . b . c .. e . x . g . h . i . k . l\ndaL.            a . b . c . e . x . g . h . i . k . l\ndIL.            a . b . c .  . e . x . g . h . i . k . l\ndAL.            a . b . c e . x . g . h . i . k . l\nd1i.            a . b . c . d . e .. g . h . i . k . l\nd1a.            a . b . c . d . e . g . h . i . k . l\nd1I.            a . b . c . d . e .  . g . h . i . k . l\nd1A.            a . b . c . d . e g . h . i . k . l\nd1in.           a . b . c . d . e . x .. h . i . k . l\nd1an.           a . b . c . d . e . x . h . i . k . l\nd1In.           a . b . c . d . e . x .  . h . i . k . l\nd1An.           a . b . c . d . e . x h . i . k . l\nd1il.           a . b . c . d .. x . g . h . i . k . l\nd1al.           a . b . c . d . x . g . h . i . k . l\nd1Il.           a . b . c . d .  . x . g . h . i . k . l\nd1Al.           a . b . c . d x . g . h . i . k . l\nd1iN.           a . b . c . d . e . x . g .. i . k . l\nd1aN.           a . b . c . d . e . x . g . i . k . l\nd1IN.           a . b . c . d . e . x . g .  . i . k . l\nd1AN.           a . b . c . d . e . x . g i . k . l\nd1iL.           a . b . c .. e . x . g . h . i . k . l\nd1aL.           a . b . c . e . x . g . h . i . k . l\nd1IL.           a . b . c .  . e . x . g . h . i . k . l\nd1AL.           a . b . c e . x . g . h . i . k . l\nd2i.            a . b . c . d . e .. g . h . i . k . l\nd2a.            a . b . c . d . e . g . h . i . k . l\nd2I.            a . b . c . d . e .  . g . h . i . k . l\nd2A.            a . b . c . d . e g . h . i . k . l\nd2in.           a . b . c . d . e . x . g .. i . k . l\nd2an.           a . b . c . d . e . x . g . i . k . l\nd2In.           a . b . c . d . e . x . g .  . i . k . l\nd2An.           a . b . c . d . e . x . g i . k . l\nd2il.           a . b . c .. e . x . g . h . i . k . l\nd2al.           a . b . c . e . x . g . h . i . k . l\nd2Il.           a . b . c .  . e . x . g . h . i . k . l\nd2Al.           a . b . c e . x . g . h . i . k . l\nd2iN.           a . b . c . d . e . x . g . h . i .. l\nd2aN.           a . b . c . d . e . x . g . h . i . l\nd2IN.           a . b . c . d . e . x . g . h . i .  . l\nd2AN.           a . b . c . d . e . x . g . h . i l\nd2iL.           a .. c . d . e . x . g . h . i . k . l\nd2aL.           a . c . d . e . x . g . h . i . k . l\nd2IL.           a .  . c . d . e . x . g . h . i . k . l\nd2AL.           a c . d . e . x . g . h . i . k . l\nyi.             a . b . c . d . e . x . g . h . i . k . l       ' x '\nya.             a . b . c . d . e . x . g . h . i . k . l       '. x '\nyI.             a . b . c . d . e . x . g . h . i . k . l       'x'\nyA.             a . b . c . d . e . x . g . h . i . k . l       '. x . '\nyin.            a . b . c . d . e . x . g . h . i . k . l       ' g '\nyan.            a . b . c . d . e . x . g . h . i . k . l       '. g '\nyIn.            a . b . c . d . e . x . g . h . i . k . l       'g'\nyAn.            a . b . c . d . e . x . g . h . i . k . l       '. g . '\nyil.            a . b . c . d . e . x . g . h . i . k . l       ' e '\nyal.            a . b . c . d . e . x . g . h . i . k . l       '. e '\nyIl.            a . b . c . d . e . x . g . h . i . k . l       'e'\nyAl.            a . b . c . d . e . x . g . h . i . k . l       '. e . '\nyiN.            a . b . c . d . e . x . g . h . i . k . l       ' h '\nyaN.            a . b . c . d . e . x . g . h . i . k . l       '. h '\nyIN.            a . b . c . d . e . x . g . h . i . k . l       'h'\nyAN.            a . b . c . d . e . x . g . h . i . k . l       '. h . '\nyiL.            a . b . c . d . e . x . g . h . i . k . l       ' d '\nyaL.            a . b . c . d . e . x . g . h . i . k . l       '. d '\nyIL.            a . b . c . d . e . x . g . h . i . k . l       'd'\nyAL.            a . b . c . d . e . x . g . h . i . k . l       '. d . '\ny1i.            a . b . c . d . e . x . g . h . i . k . l       ' x '\ny1a.            a . b . c . d . e . x . g . h . i . k . l       '. x '\ny1I.            a . b . c . d . e . x . g . h . i . k . l       'x'\ny1A.            a . b . c . d . e . x . g . h . i . k . l       '. x . '\ny1in.           a . b . c . d . e . x . g . h . i . k . l       ' g '\ny1an.           a . b . c . d . e . x . g . h . i . k . l       '. g '\ny1In.           a . b . c . d . e . x . g . h . i . k . l       'g'\ny1An.           a . b . c . d . e . x . g . h . i . k . l       '. g . '\ny1il.           a . b . c . d . e . x . g . h . i . k . l       ' e '\ny1al.           a . b . c . d . e . x . g . h . i . k . l       '. e '\ny1Il.           a . b . c . d . e . x . g . h . i . k . l       'e'\ny1Al.           a . b . c . d . e . x . g . h . i . k . l       '. e . '\ny1iN.           a . b . c . d . e . x . g . h . i . k . l       ' h '\ny1aN.           a . b . c . d . e . x . g . h . i . k . l       '. h '\ny1IN.           a . b . c . d . e . x . g . h . i . k . l       'h'\ny1AN.           a . b . c . d . e . x . g . h . i . k . l       '. h . '\ny1iL.           a . b . c . d . e . x . g . h . i . k . l       ' d '\ny1aL.           a . b . c . d . e . x . g . h . i . k . l       '. d '\ny1IL.           a . b . c . d . e . x . g . h . i . k . l       'd'\ny1AL.           a . b . c . d . e . x . g . h . i . k . l       '. d . '\ny2i.            a . b . c . d . e . x . g . h . i . k . l       ' x '\ny2a.            a . b . c . d . e . x . g . h . i . k . l       '. x '\ny2I.            a . b . c . d . e . x . g . h . i . k . l       'x'\ny2A.            a . b . c . d . e . x . g . h . i . k . l       '. x . '\ny2in.           a . b . c . d . e . x . g . h . i . k . l       ' h '\ny2an.           a . b . c . d . e . x . g . h . i . k . l       '. h '\ny2In.           a . b . c . d . e . x . g . h . i . k . l       'h'\ny2An.           a . b . c . d . e . x . g . h . i . k . l       '. h . '\ny2il.           a . b . c . d . e . x . g . h . i . k . l       ' d '\ny2al.           a . b . c . d . e . x . g . h . i . k . l       '. d '\ny2Il.           a . b . c . d . e . x . g . h . i . k . l       'd'\ny2Al.           a . b . c . d . e . x . g . h . i . k . l       '. d . '\ny2iN.           a . b . c . d . e . x . g . h . i . k . l       ' k '\ny2aN.           a . b . c . d . e . x . g . h . i . k . l       '. k '\ny2IN.           a . b . c . d . e . x . g . h . i . k . l       'k'\ny2AN.           a . b . c . d . e . x . g . h . i . k . l       '. k . '\ny2iL.           a . b . c . d . e . x . g . h . i . k . l       ' b '\ny2aL.           a . b . c . d . e . x . g . h . i . k . l       '. b '\ny2IL.           a . b . c . d . e . x . g . h . i . k . l       'b'\ny2AL.           a . b . c . d . e . x . g . h . i . k . l       '. b . '\nvi.             a . b . c . d . e .___. g . h . i . k . l\nva.             a . b . c . d . e ____. g . h . i . k . l\nvI.             a . b . c . d . e . _ . g . h . i . k . l\nvA.             a . b . c . d . e ______g . h . i . k . l\nvin.            a . b . c . d . e . x .___. h . i . k . l\nvan.            a . b . c . d . e . x ____. h . i . k . l\nvIn.            a . b . c . d . e . x . _ . h . i . k . l\nvAn.            a . b . c . d . e . x ______h . i . k . l\nvil.            a . b . c . d .___. x . g . h . i . k . l\nval.            a . b . c . d ____. x . g . h . i . k . l\nvIl.            a . b . c . d . _ . x . g . h . i . k . l\nvAl.            a . b . c . d ______x . g . h . i . k . l\nviN.            a . b . c . d . e . x . g .___. i . k . l\nvaN.            a . b . c . d . e . x . g ____. i . k . l\nvIN.            a . b . c . d . e . x . g . _ . i . k . l\nvAN.            a . b . c . d . e . x . g ______i . k . l\nviL.            a . b . c .___. e . x . g . h . i . k . l\nvaL.            a . b . c ____. e . x . g . h . i . k . l\nvIL.            a . b . c . _ . e . x . g . h . i . k . l\nvAL.            a . b . c ______e . x . g . h . i . k . l\nv1i.            a . b . c . d . e .___. g . h . i . k . l\nv1a.            a . b . c . d . e ____. g . h . i . k . l\nv1I.            a . b . c . d . e . _ . g . h . i . k . l\nv1A.            a . b . c . d . e ______g . h . i . k . l\nv1in.           a . b . c . d . e . x .___. h . i . k . l\nv1an.           a . b . c . d . e . x ____. h . i . k . l\nv1In.           a . b . c . d . e . x . _ . h . i . k . l\nv1An.           a . b . c . d . e . x ______h . i . k . l\nv1il.           a . b . c . d .___. x . g . h . i . k . l\nv1al.           a . b . c . d ____. x . g . h . i . k . l\nv1Il.           a . b . c . d . _ . x . g . h . i . k . l\nv1Al.           a . b . c . d ______x . g . h . i . k . l\nv1iN.           a . b . c . d . e . x . g .___. i . k . l\nv1aN.           a . b . c . d . e . x . g ____. i . k . l\nv1IN.           a . b . c . d . e . x . g . _ . i . k . l\nv1AN.           a . b . c . d . e . x . g ______i . k . l\nv1iL.           a . b . c .___. e . x . g . h . i . k . l\nv1aL.           a . b . c ____. e . x . g . h . i . k . l\nv1IL.           a . b . c . _ . e . x . g . h . i . k . l\nv1AL.           a . b . c ______e . x . g . h . i . k . l\nv2i.            a . b . c . d . e .___. g . h . i . k . l\nv2a.            a . b . c . d . e ____. g . h . i . k . l\nv2I.            a . b . c . d . e . _ . g . h . i . k . l\nv2A.            a . b . c . d . e ______g . h . i . k . l\nv2in.           a . b . c . d . e . x . g .___. i . k . l\nv2an.           a . b . c . d . e . x . g ____. i . k . l\nv2In.           a . b . c . d . e . x . g . _ . i . k . l\nv2An.           a . b . c . d . e . x . g ______i . k . l\nv2il.           a . b . c .___. e . x . g . h . i . k . l\nv2al.           a . b . c ____. e . x . g . h . i . k . l\nv2Il.           a . b . c . _ . e . x . g . h . i . k . l\nv2Al.           a . b . c ______e . x . g . h . i . k . l\nv2iN.           a . b . c . d . e . x . g . h . i .___. l\nv2aN.           a . b . c . d . e . x . g . h . i ____. l\nv2IN.           a . b . c . d . e . x . g . h . i . _ . l\nv2AN.           a . b . c . d . e . x . g . h . i ______l\nv2iL.           a .___. c . d . e . x . g . h . i . k . l\nv2aL.           a ____. c . d . e . x . g . h . i . k . l\nv2IL.           a . _ . c . d . e . x . g . h . i . k . l\nv2AL.           a ______c . d . e . x . g . h . i . k . l\na ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l\nci;             a ; b ; c ; d ; e ;_; g ; h ; i ; k ; l\nca;             a ; b ; c ; d ; e _; g ; h ; i ; k ; l\ncI;             a ; b ; c ; d ; e ; _ ; g ; h ; i ; k ; l\ncA;             a ; b ; c ; d ; e _g ; h ; i ; k ; l\ncin;            a ; b ; c ; d ; e ; x ;_; h ; i ; k ; l\ncan;            a ; b ; c ; d ; e ; x _; h ; i ; k ; l\ncIn;            a ; b ; c ; d ; e ; x ; _ ; h ; i ; k ; l\ncAn;            a ; b ; c ; d ; e ; x _h ; i ; k ; l\ncil;            a ; b ; c ; d ;_; x ; g ; h ; i ; k ; l\ncal;            a ; b ; c ; d _; x ; g ; h ; i ; k ; l\ncIl;            a ; b ; c ; d ; _ ; x ; g ; h ; i ; k ; l\ncAl;            a ; b ; c ; d _x ; g ; h ; i ; k ; l\nciN;            a ; b ; c ; d ; e ; x ; g ;_; i ; k ; l\ncaN;            a ; b ; c ; d ; e ; x ; g _; i ; k ; l\ncIN;            a ; b ; c ; d ; e ; x ; g ; _ ; i ; k ; l\ncAN;            a ; b ; c ; d ; e ; x ; g _i ; k ; l\nciL;            a ; b ; c ;_; e ; x ; g ; h ; i ; k ; l\ncaL;            a ; b ; c _; e ; x ; g ; h ; i ; k ; l\ncIL;            a ; b ; c ; _ ; e ; x ; g ; h ; i ; k ; l\ncAL;            a ; b ; c _e ; x ; g ; h ; i ; k ; l\nc1i;            a ; b ; c ; d ; e ;_; g ; h ; i ; k ; l\nc1a;            a ; b ; c ; d ; e _; g ; h ; i ; k ; l\nc1I;            a ; b ; c ; d ; e ; _ ; g ; h ; i ; k ; l\nc1A;            a ; b ; c ; d ; e _g ; h ; i ; k ; l\nc1in;           a ; b ; c ; d ; e ; x ;_; h ; i ; k ; l\nc1an;           a ; b ; c ; d ; e ; x _; h ; i ; k ; l\nc1In;           a ; b ; c ; d ; e ; x ; _ ; h ; i ; k ; l\nc1An;           a ; b ; c ; d ; e ; x _h ; i ; k ; l\nc1il;           a ; b ; c ; d ;_; x ; g ; h ; i ; k ; l\nc1al;           a ; b ; c ; d _; x ; g ; h ; i ; k ; l\nc1Il;           a ; b ; c ; d ; _ ; x ; g ; h ; i ; k ; l\nc1Al;           a ; b ; c ; d _x ; g ; h ; i ; k ; l\nc1iN;           a ; b ; c ; d ; e ; x ; g ;_; i ; k ; l\nc1aN;           a ; b ; c ; d ; e ; x ; g _; i ; k ; l\nc1IN;           a ; b ; c ; d ; e ; x ; g ; _ ; i ; k ; l\nc1AN;           a ; b ; c ; d ; e ; x ; g _i ; k ; l\nc1iL;           a ; b ; c ;_; e ; x ; g ; h ; i ; k ; l\nc1aL;           a ; b ; c _; e ; x ; g ; h ; i ; k ; l\nc1IL;           a ; b ; c ; _ ; e ; x ; g ; h ; i ; k ; l\nc1AL;           a ; b ; c _e ; x ; g ; h ; i ; k ; l\nc2i;            a ; b ; c ; d ; e ;_; g ; h ; i ; k ; l\nc2a;            a ; b ; c ; d ; e _; g ; h ; i ; k ; l\nc2I;            a ; b ; c ; d ; e ; _ ; g ; h ; i ; k ; l\nc2A;            a ; b ; c ; d ; e _g ; h ; i ; k ; l\nc2in;           a ; b ; c ; d ; e ; x ; g ;_; i ; k ; l\nc2an;           a ; b ; c ; d ; e ; x ; g _; i ; k ; l\nc2In;           a ; b ; c ; d ; e ; x ; g ; _ ; i ; k ; l\nc2An;           a ; b ; c ; d ; e ; x ; g _i ; k ; l\nc2il;           a ; b ; c ;_; e ; x ; g ; h ; i ; k ; l\nc2al;           a ; b ; c _; e ; x ; g ; h ; i ; k ; l\nc2Il;           a ; b ; c ; _ ; e ; x ; g ; h ; i ; k ; l\nc2Al;           a ; b ; c _e ; x ; g ; h ; i ; k ; l\nc2iN;           a ; b ; c ; d ; e ; x ; g ; h ; i ;_; l\nc2aN;           a ; b ; c ; d ; e ; x ; g ; h ; i _; l\nc2IN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; _ ; l\nc2AN;           a ; b ; c ; d ; e ; x ; g ; h ; i _l\nc2iL;           a ;_; c ; d ; e ; x ; g ; h ; i ; k ; l\nc2aL;           a _; c ; d ; e ; x ; g ; h ; i ; k ; l\nc2IL;           a ; _ ; c ; d ; e ; x ; g ; h ; i ; k ; l\nc2AL;           a _c ; d ; e ; x ; g ; h ; i ; k ; l\ndi;             a ; b ; c ; d ; e ;; g ; h ; i ; k ; l\nda;             a ; b ; c ; d ; e ; g ; h ; i ; k ; l\ndI;             a ; b ; c ; d ; e ;  ; g ; h ; i ; k ; l\ndA;             a ; b ; c ; d ; e g ; h ; i ; k ; l\ndin;            a ; b ; c ; d ; e ; x ;; h ; i ; k ; l\ndan;            a ; b ; c ; d ; e ; x ; h ; i ; k ; l\ndIn;            a ; b ; c ; d ; e ; x ;  ; h ; i ; k ; l\ndAn;            a ; b ; c ; d ; e ; x h ; i ; k ; l\ndil;            a ; b ; c ; d ;; x ; g ; h ; i ; k ; l\ndal;            a ; b ; c ; d ; x ; g ; h ; i ; k ; l\ndIl;            a ; b ; c ; d ;  ; x ; g ; h ; i ; k ; l\ndAl;            a ; b ; c ; d x ; g ; h ; i ; k ; l\ndiN;            a ; b ; c ; d ; e ; x ; g ;; i ; k ; l\ndaN;            a ; b ; c ; d ; e ; x ; g ; i ; k ; l\ndIN;            a ; b ; c ; d ; e ; x ; g ;  ; i ; k ; l\ndAN;            a ; b ; c ; d ; e ; x ; g i ; k ; l\ndiL;            a ; b ; c ;; e ; x ; g ; h ; i ; k ; l\ndaL;            a ; b ; c ; e ; x ; g ; h ; i ; k ; l\ndIL;            a ; b ; c ;  ; e ; x ; g ; h ; i ; k ; l\ndAL;            a ; b ; c e ; x ; g ; h ; i ; k ; l\nd1i;            a ; b ; c ; d ; e ;; g ; h ; i ; k ; l\nd1a;            a ; b ; c ; d ; e ; g ; h ; i ; k ; l\nd1I;            a ; b ; c ; d ; e ;  ; g ; h ; i ; k ; l\nd1A;            a ; b ; c ; d ; e g ; h ; i ; k ; l\nd1in;           a ; b ; c ; d ; e ; x ;; h ; i ; k ; l\nd1an;           a ; b ; c ; d ; e ; x ; h ; i ; k ; l\nd1In;           a ; b ; c ; d ; e ; x ;  ; h ; i ; k ; l\nd1An;           a ; b ; c ; d ; e ; x h ; i ; k ; l\nd1il;           a ; b ; c ; d ;; x ; g ; h ; i ; k ; l\nd1al;           a ; b ; c ; d ; x ; g ; h ; i ; k ; l\nd1Il;           a ; b ; c ; d ;  ; x ; g ; h ; i ; k ; l\nd1Al;           a ; b ; c ; d x ; g ; h ; i ; k ; l\nd1iN;           a ; b ; c ; d ; e ; x ; g ;; i ; k ; l\nd1aN;           a ; b ; c ; d ; e ; x ; g ; i ; k ; l\nd1IN;           a ; b ; c ; d ; e ; x ; g ;  ; i ; k ; l\nd1AN;           a ; b ; c ; d ; e ; x ; g i ; k ; l\nd1iL;           a ; b ; c ;; e ; x ; g ; h ; i ; k ; l\nd1aL;           a ; b ; c ; e ; x ; g ; h ; i ; k ; l\nd1IL;           a ; b ; c ;  ; e ; x ; g ; h ; i ; k ; l\nd1AL;           a ; b ; c e ; x ; g ; h ; i ; k ; l\nd2i;            a ; b ; c ; d ; e ;; g ; h ; i ; k ; l\nd2a;            a ; b ; c ; d ; e ; g ; h ; i ; k ; l\nd2I;            a ; b ; c ; d ; e ;  ; g ; h ; i ; k ; l\nd2A;            a ; b ; c ; d ; e g ; h ; i ; k ; l\nd2in;           a ; b ; c ; d ; e ; x ; g ;; i ; k ; l\nd2an;           a ; b ; c ; d ; e ; x ; g ; i ; k ; l\nd2In;           a ; b ; c ; d ; e ; x ; g ;  ; i ; k ; l\nd2An;           a ; b ; c ; d ; e ; x ; g i ; k ; l\nd2il;           a ; b ; c ;; e ; x ; g ; h ; i ; k ; l\nd2al;           a ; b ; c ; e ; x ; g ; h ; i ; k ; l\nd2Il;           a ; b ; c ;  ; e ; x ; g ; h ; i ; k ; l\nd2Al;           a ; b ; c e ; x ; g ; h ; i ; k ; l\nd2iN;           a ; b ; c ; d ; e ; x ; g ; h ; i ;; l\nd2aN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; l\nd2IN;           a ; b ; c ; d ; e ; x ; g ; h ; i ;  ; l\nd2AN;           a ; b ; c ; d ; e ; x ; g ; h ; i l\nd2iL;           a ;; c ; d ; e ; x ; g ; h ; i ; k ; l\nd2aL;           a ; c ; d ; e ; x ; g ; h ; i ; k ; l\nd2IL;           a ;  ; c ; d ; e ; x ; g ; h ; i ; k ; l\nd2AL;           a c ; d ; e ; x ; g ; h ; i ; k ; l\nyi;             a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' x '\nya;             a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; x '\nyI;             a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'x'\nyA;             a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; x ; '\nyin;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' g '\nyan;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; g '\nyIn;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'g'\nyAn;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; g ; '\nyil;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' e '\nyal;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; e '\nyIl;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'e'\nyAl;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; e ; '\nyiN;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' h '\nyaN;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; h '\nyIN;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'h'\nyAN;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; h ; '\nyiL;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' d '\nyaL;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; d '\nyIL;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'd'\nyAL;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; d ; '\ny1i;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' x '\ny1a;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; x '\ny1I;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'x'\ny1A;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; x ; '\ny1in;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' g '\ny1an;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; g '\ny1In;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'g'\ny1An;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; g ; '\ny1il;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' e '\ny1al;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; e '\ny1Il;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'e'\ny1Al;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; e ; '\ny1iN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' h '\ny1aN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; h '\ny1IN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'h'\ny1AN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; h ; '\ny1iL;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' d '\ny1aL;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; d '\ny1IL;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'd'\ny1AL;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; d ; '\ny2i;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' x '\ny2a;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; x '\ny2I;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'x'\ny2A;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; x ; '\ny2in;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' h '\ny2an;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; h '\ny2In;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'h'\ny2An;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; h ; '\ny2il;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' d '\ny2al;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; d '\ny2Il;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'd'\ny2Al;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; d ; '\ny2iN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' k '\ny2aN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; k '\ny2IN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'k'\ny2AN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; k ; '\ny2iL;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' b '\ny2aL;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; b '\ny2IL;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'b'\ny2AL;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; b ; '\nvi;             a ; b ; c ; d ; e ;___; g ; h ; i ; k ; l\nva;             a ; b ; c ; d ; e ____; g ; h ; i ; k ; l\nvI;             a ; b ; c ; d ; e ; _ ; g ; h ; i ; k ; l\nvA;             a ; b ; c ; d ; e ______g ; h ; i ; k ; l\nvin;            a ; b ; c ; d ; e ; x ;___; h ; i ; k ; l\nvan;            a ; b ; c ; d ; e ; x ____; h ; i ; k ; l\nvIn;            a ; b ; c ; d ; e ; x ; _ ; h ; i ; k ; l\nvAn;            a ; b ; c ; d ; e ; x ______h ; i ; k ; l\nvil;            a ; b ; c ; d ;___; x ; g ; h ; i ; k ; l\nval;            a ; b ; c ; d ____; x ; g ; h ; i ; k ; l\nvIl;            a ; b ; c ; d ; _ ; x ; g ; h ; i ; k ; l\nvAl;            a ; b ; c ; d ______x ; g ; h ; i ; k ; l\nviN;            a ; b ; c ; d ; e ; x ; g ;___; i ; k ; l\nvaN;            a ; b ; c ; d ; e ; x ; g ____; i ; k ; l\nvIN;            a ; b ; c ; d ; e ; x ; g ; _ ; i ; k ; l\nvAN;            a ; b ; c ; d ; e ; x ; g ______i ; k ; l\nviL;            a ; b ; c ;___; e ; x ; g ; h ; i ; k ; l\nvaL;            a ; b ; c ____; e ; x ; g ; h ; i ; k ; l\nvIL;            a ; b ; c ; _ ; e ; x ; g ; h ; i ; k ; l\nvAL;            a ; b ; c ______e ; x ; g ; h ; i ; k ; l\nv1i;            a ; b ; c ; d ; e ;___; g ; h ; i ; k ; l\nv1a;            a ; b ; c ; d ; e ____; g ; h ; i ; k ; l\nv1I;            a ; b ; c ; d ; e ; _ ; g ; h ; i ; k ; l\nv1A;            a ; b ; c ; d ; e ______g ; h ; i ; k ; l\nv1in;           a ; b ; c ; d ; e ; x ;___; h ; i ; k ; l\nv1an;           a ; b ; c ; d ; e ; x ____; h ; i ; k ; l\nv1In;           a ; b ; c ; d ; e ; x ; _ ; h ; i ; k ; l\nv1An;           a ; b ; c ; d ; e ; x ______h ; i ; k ; l\nv1il;           a ; b ; c ; d ;___; x ; g ; h ; i ; k ; l\nv1al;           a ; b ; c ; d ____; x ; g ; h ; i ; k ; l\nv1Il;           a ; b ; c ; d ; _ ; x ; g ; h ; i ; k ; l\nv1Al;           a ; b ; c ; d ______x ; g ; h ; i ; k ; l\nv1iN;           a ; b ; c ; d ; e ; x ; g ;___; i ; k ; l\nv1aN;           a ; b ; c ; d ; e ; x ; g ____; i ; k ; l\nv1IN;           a ; b ; c ; d ; e ; x ; g ; _ ; i ; k ; l\nv1AN;           a ; b ; c ; d ; e ; x ; g ______i ; k ; l\nv1iL;           a ; b ; c ;___; e ; x ; g ; h ; i ; k ; l\nv1aL;           a ; b ; c ____; e ; x ; g ; h ; i ; k ; l\nv1IL;           a ; b ; c ; _ ; e ; x ; g ; h ; i ; k ; l\nv1AL;           a ; b ; c ______e ; x ; g ; h ; i ; k ; l\nv2i;            a ; b ; c ; d ; e ;___; g ; h ; i ; k ; l\nv2a;            a ; b ; c ; d ; e ____; g ; h ; i ; k ; l\nv2I;            a ; b ; c ; d ; e ; _ ; g ; h ; i ; k ; l\nv2A;            a ; b ; c ; d ; e ______g ; h ; i ; k ; l\nv2in;           a ; b ; c ; d ; e ; x ; g ;___; i ; k ; l\nv2an;           a ; b ; c ; d ; e ; x ; g ____; i ; k ; l\nv2In;           a ; b ; c ; d ; e ; x ; g ; _ ; i ; k ; l\nv2An;           a ; b ; c ; d ; e ; x ; g ______i ; k ; l\nv2il;           a ; b ; c ;___; e ; x ; g ; h ; i ; k ; l\nv2al;           a ; b ; c ____; e ; x ; g ; h ; i ; k ; l\nv2Il;           a ; b ; c ; _ ; e ; x ; g ; h ; i ; k ; l\nv2Al;           a ; b ; c ______e ; x ; g ; h ; i ; k ; l\nv2iN;           a ; b ; c ; d ; e ; x ; g ; h ; i ;___; l\nv2aN;           a ; b ; c ; d ; e ; x ; g ; h ; i ____; l\nv2IN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; _ ; l\nv2AN;           a ; b ; c ; d ; e ; x ; g ; h ; i ______l\nv2iL;           a ;___; c ; d ; e ; x ; g ; h ; i ; k ; l\nv2aL;           a ____; c ; d ; e ; x ; g ; h ; i ; k ; l\nv2IL;           a ; _ ; c ; d ; e ; x ; g ; h ; i ; k ; l\nv2AL;           a ______c ; d ; e ; x ; g ; h ; i ; k ; l\na : b : c : d : e : x : g : h : i : k : l\nci:             a : b : c : d : e :_: g : h : i : k : l\nca:             a : b : c : d : e _: g : h : i : k : l\ncI:             a : b : c : d : e : _ : g : h : i : k : l\ncA:             a : b : c : d : e _g : h : i : k : l\ncin:            a : b : c : d : e : x :_: h : i : k : l\ncan:            a : b : c : d : e : x _: h : i : k : l\ncIn:            a : b : c : d : e : x : _ : h : i : k : l\ncAn:            a : b : c : d : e : x _h : i : k : l\ncil:            a : b : c : d :_: x : g : h : i : k : l\ncal:            a : b : c : d _: x : g : h : i : k : l\ncIl:            a : b : c : d : _ : x : g : h : i : k : l\ncAl:            a : b : c : d _x : g : h : i : k : l\nciN:            a : b : c : d : e : x : g :_: i : k : l\ncaN:            a : b : c : d : e : x : g _: i : k : l\ncIN:            a : b : c : d : e : x : g : _ : i : k : l\ncAN:            a : b : c : d : e : x : g _i : k : l\nciL:            a : b : c :_: e : x : g : h : i : k : l\ncaL:            a : b : c _: e : x : g : h : i : k : l\ncIL:            a : b : c : _ : e : x : g : h : i : k : l\ncAL:            a : b : c _e : x : g : h : i : k : l\nc1i:            a : b : c : d : e :_: g : h : i : k : l\nc1a:            a : b : c : d : e _: g : h : i : k : l\nc1I:            a : b : c : d : e : _ : g : h : i : k : l\nc1A:            a : b : c : d : e _g : h : i : k : l\nc1in:           a : b : c : d : e : x :_: h : i : k : l\nc1an:           a : b : c : d : e : x _: h : i : k : l\nc1In:           a : b : c : d : e : x : _ : h : i : k : l\nc1An:           a : b : c : d : e : x _h : i : k : l\nc1il:           a : b : c : d :_: x : g : h : i : k : l\nc1al:           a : b : c : d _: x : g : h : i : k : l\nc1Il:           a : b : c : d : _ : x : g : h : i : k : l\nc1Al:           a : b : c : d _x : g : h : i : k : l\nc1iN:           a : b : c : d : e : x : g :_: i : k : l\nc1aN:           a : b : c : d : e : x : g _: i : k : l\nc1IN:           a : b : c : d : e : x : g : _ : i : k : l\nc1AN:           a : b : c : d : e : x : g _i : k : l\nc1iL:           a : b : c :_: e : x : g : h : i : k : l\nc1aL:           a : b : c _: e : x : g : h : i : k : l\nc1IL:           a : b : c : _ : e : x : g : h : i : k : l\nc1AL:           a : b : c _e : x : g : h : i : k : l\nc2i:            a : b : c : d : e :_: g : h : i : k : l\nc2a:            a : b : c : d : e _: g : h : i : k : l\nc2I:            a : b : c : d : e : _ : g : h : i : k : l\nc2A:            a : b : c : d : e _g : h : i : k : l\nc2in:           a : b : c : d : e : x : g :_: i : k : l\nc2an:           a : b : c : d : e : x : g _: i : k : l\nc2In:           a : b : c : d : e : x : g : _ : i : k : l\nc2An:           a : b : c : d : e : x : g _i : k : l\nc2il:           a : b : c :_: e : x : g : h : i : k : l\nc2al:           a : b : c _: e : x : g : h : i : k : l\nc2Il:           a : b : c : _ : e : x : g : h : i : k : l\nc2Al:           a : b : c _e : x : g : h : i : k : l\nc2iN:           a : b : c : d : e : x : g : h : i :_: l\nc2aN:           a : b : c : d : e : x : g : h : i _: l\nc2IN:           a : b : c : d : e : x : g : h : i : _ : l\nc2AN:           a : b : c : d : e : x : g : h : i _l\nc2iL:           a :_: c : d : e : x : g : h : i : k : l\nc2aL:           a _: c : d : e : x : g : h : i : k : l\nc2IL:           a : _ : c : d : e : x : g : h : i : k : l\nc2AL:           a _c : d : e : x : g : h : i : k : l\ndi:             a : b : c : d : e :: g : h : i : k : l\nda:             a : b : c : d : e : g : h : i : k : l\ndI:             a : b : c : d : e :  : g : h : i : k : l\ndA:             a : b : c : d : e g : h : i : k : l\ndin:            a : b : c : d : e : x :: h : i : k : l\ndan:            a : b : c : d : e : x : h : i : k : l\ndIn:            a : b : c : d : e : x :  : h : i : k : l\ndAn:            a : b : c : d : e : x h : i : k : l\ndil:            a : b : c : d :: x : g : h : i : k : l\ndal:            a : b : c : d : x : g : h : i : k : l\ndIl:            a : b : c : d :  : x : g : h : i : k : l\ndAl:            a : b : c : d x : g : h : i : k : l\ndiN:            a : b : c : d : e : x : g :: i : k : l\ndaN:            a : b : c : d : e : x : g : i : k : l\ndIN:            a : b : c : d : e : x : g :  : i : k : l\ndAN:            a : b : c : d : e : x : g i : k : l\ndiL:            a : b : c :: e : x : g : h : i : k : l\ndaL:            a : b : c : e : x : g : h : i : k : l\ndIL:            a : b : c :  : e : x : g : h : i : k : l\ndAL:            a : b : c e : x : g : h : i : k : l\nd1i:            a : b : c : d : e :: g : h : i : k : l\nd1a:            a : b : c : d : e : g : h : i : k : l\nd1I:            a : b : c : d : e :  : g : h : i : k : l\nd1A:            a : b : c : d : e g : h : i : k : l\nd1in:           a : b : c : d : e : x :: h : i : k : l\nd1an:           a : b : c : d : e : x : h : i : k : l\nd1In:           a : b : c : d : e : x :  : h : i : k : l\nd1An:           a : b : c : d : e : x h : i : k : l\nd1il:           a : b : c : d :: x : g : h : i : k : l\nd1al:           a : b : c : d : x : g : h : i : k : l\nd1Il:           a : b : c : d :  : x : g : h : i : k : l\nd1Al:           a : b : c : d x : g : h : i : k : l\nd1iN:           a : b : c : d : e : x : g :: i : k : l\nd1aN:           a : b : c : d : e : x : g : i : k : l\nd1IN:           a : b : c : d : e : x : g :  : i : k : l\nd1AN:           a : b : c : d : e : x : g i : k : l\nd1iL:           a : b : c :: e : x : g : h : i : k : l\nd1aL:           a : b : c : e : x : g : h : i : k : l\nd1IL:           a : b : c :  : e : x : g : h : i : k : l\nd1AL:           a : b : c e : x : g : h : i : k : l\nd2i:            a : b : c : d : e :: g : h : i : k : l\nd2a:            a : b : c : d : e : g : h : i : k : l\nd2I:            a : b : c : d : e :  : g : h : i : k : l\nd2A:            a : b : c : d : e g : h : i : k : l\nd2in:           a : b : c : d : e : x : g :: i : k : l\nd2an:           a : b : c : d : e : x : g : i : k : l\nd2In:           a : b : c : d : e : x : g :  : i : k : l\nd2An:           a : b : c : d : e : x : g i : k : l\nd2il:           a : b : c :: e : x : g : h : i : k : l\nd2al:           a : b : c : e : x : g : h : i : k : l\nd2Il:           a : b : c :  : e : x : g : h : i : k : l\nd2Al:           a : b : c e : x : g : h : i : k : l\nd2iN:           a : b : c : d : e : x : g : h : i :: l\nd2aN:           a : b : c : d : e : x : g : h : i : l\nd2IN:           a : b : c : d : e : x : g : h : i :  : l\nd2AN:           a : b : c : d : e : x : g : h : i l\nd2iL:           a :: c : d : e : x : g : h : i : k : l\nd2aL:           a : c : d : e : x : g : h : i : k : l\nd2IL:           a :  : c : d : e : x : g : h : i : k : l\nd2AL:           a c : d : e : x : g : h : i : k : l\nyi:             a : b : c : d : e : x : g : h : i : k : l       ' x '\nya:             a : b : c : d : e : x : g : h : i : k : l       ': x '\nyI:             a : b : c : d : e : x : g : h : i : k : l       'x'\nyA:             a : b : c : d : e : x : g : h : i : k : l       ': x : '\nyin:            a : b : c : d : e : x : g : h : i : k : l       ' g '\nyan:            a : b : c : d : e : x : g : h : i : k : l       ': g '\nyIn:            a : b : c : d : e : x : g : h : i : k : l       'g'\nyAn:            a : b : c : d : e : x : g : h : i : k : l       ': g : '\nyil:            a : b : c : d : e : x : g : h : i : k : l       ' e '\nyal:            a : b : c : d : e : x : g : h : i : k : l       ': e '\nyIl:            a : b : c : d : e : x : g : h : i : k : l       'e'\nyAl:            a : b : c : d : e : x : g : h : i : k : l       ': e : '\nyiN:            a : b : c : d : e : x : g : h : i : k : l       ' h '\nyaN:            a : b : c : d : e : x : g : h : i : k : l       ': h '\nyIN:            a : b : c : d : e : x : g : h : i : k : l       'h'\nyAN:            a : b : c : d : e : x : g : h : i : k : l       ': h : '\nyiL:            a : b : c : d : e : x : g : h : i : k : l       ' d '\nyaL:            a : b : c : d : e : x : g : h : i : k : l       ': d '\nyIL:            a : b : c : d : e : x : g : h : i : k : l       'd'\nyAL:            a : b : c : d : e : x : g : h : i : k : l       ': d : '\ny1i:            a : b : c : d : e : x : g : h : i : k : l       ' x '\ny1a:            a : b : c : d : e : x : g : h : i : k : l       ': x '\ny1I:            a : b : c : d : e : x : g : h : i : k : l       'x'\ny1A:            a : b : c : d : e : x : g : h : i : k : l       ': x : '\ny1in:           a : b : c : d : e : x : g : h : i : k : l       ' g '\ny1an:           a : b : c : d : e : x : g : h : i : k : l       ': g '\ny1In:           a : b : c : d : e : x : g : h : i : k : l       'g'\ny1An:           a : b : c : d : e : x : g : h : i : k : l       ': g : '\ny1il:           a : b : c : d : e : x : g : h : i : k : l       ' e '\ny1al:           a : b : c : d : e : x : g : h : i : k : l       ': e '\ny1Il:           a : b : c : d : e : x : g : h : i : k : l       'e'\ny1Al:           a : b : c : d : e : x : g : h : i : k : l       ': e : '\ny1iN:           a : b : c : d : e : x : g : h : i : k : l       ' h '\ny1aN:           a : b : c : d : e : x : g : h : i : k : l       ': h '\ny1IN:           a : b : c : d : e : x : g : h : i : k : l       'h'\ny1AN:           a : b : c : d : e : x : g : h : i : k : l       ': h : '\ny1iL:           a : b : c : d : e : x : g : h : i : k : l       ' d '\ny1aL:           a : b : c : d : e : x : g : h : i : k : l       ': d '\ny1IL:           a : b : c : d : e : x : g : h : i : k : l       'd'\ny1AL:           a : b : c : d : e : x : g : h : i : k : l       ': d : '\ny2i:            a : b : c : d : e : x : g : h : i : k : l       ' x '\ny2a:            a : b : c : d : e : x : g : h : i : k : l       ': x '\ny2I:            a : b : c : d : e : x : g : h : i : k : l       'x'\ny2A:            a : b : c : d : e : x : g : h : i : k : l       ': x : '\ny2in:           a : b : c : d : e : x : g : h : i : k : l       ' h '\ny2an:           a : b : c : d : e : x : g : h : i : k : l       ': h '\ny2In:           a : b : c : d : e : x : g : h : i : k : l       'h'\ny2An:           a : b : c : d : e : x : g : h : i : k : l       ': h : '\ny2il:           a : b : c : d : e : x : g : h : i : k : l       ' d '\ny2al:           a : b : c : d : e : x : g : h : i : k : l       ': d '\ny2Il:           a : b : c : d : e : x : g : h : i : k : l       'd'\ny2Al:           a : b : c : d : e : x : g : h : i : k : l       ': d : '\ny2iN:           a : b : c : d : e : x : g : h : i : k : l       ' k '\ny2aN:           a : b : c : d : e : x : g : h : i : k : l       ': k '\ny2IN:           a : b : c : d : e : x : g : h : i : k : l       'k'\ny2AN:           a : b : c : d : e : x : g : h : i : k : l       ': k : '\ny2iL:           a : b : c : d : e : x : g : h : i : k : l       ' b '\ny2aL:           a : b : c : d : e : x : g : h : i : k : l       ': b '\ny2IL:           a : b : c : d : e : x : g : h : i : k : l       'b'\ny2AL:           a : b : c : d : e : x : g : h : i : k : l       ': b : '\nvi:             a : b : c : d : e :___: g : h : i : k : l\nva:             a : b : c : d : e ____: g : h : i : k : l\nvI:             a : b : c : d : e : _ : g : h : i : k : l\nvA:             a : b : c : d : e ______g : h : i : k : l\nvin:            a : b : c : d : e : x :___: h : i : k : l\nvan:            a : b : c : d : e : x ____: h : i : k : l\nvIn:            a : b : c : d : e : x : _ : h : i : k : l\nvAn:            a : b : c : d : e : x ______h : i : k : l\nvil:            a : b : c : d :___: x : g : h : i : k : l\nval:            a : b : c : d ____: x : g : h : i : k : l\nvIl:            a : b : c : d : _ : x : g : h : i : k : l\nvAl:            a : b : c : d ______x : g : h : i : k : l\nviN:            a : b : c : d : e : x : g :___: i : k : l\nvaN:            a : b : c : d : e : x : g ____: i : k : l\nvIN:            a : b : c : d : e : x : g : _ : i : k : l\nvAN:            a : b : c : d : e : x : g ______i : k : l\nviL:            a : b : c :___: e : x : g : h : i : k : l\nvaL:            a : b : c ____: e : x : g : h : i : k : l\nvIL:            a : b : c : _ : e : x : g : h : i : k : l\nvAL:            a : b : c ______e : x : g : h : i : k : l\nv1i:            a : b : c : d : e :___: g : h : i : k : l\nv1a:            a : b : c : d : e ____: g : h : i : k : l\nv1I:            a : b : c : d : e : _ : g : h : i : k : l\nv1A:            a : b : c : d : e ______g : h : i : k : l\nv1in:           a : b : c : d : e : x :___: h : i : k : l\nv1an:           a : b : c : d : e : x ____: h : i : k : l\nv1In:           a : b : c : d : e : x : _ : h : i : k : l\nv1An:           a : b : c : d : e : x ______h : i : k : l\nv1il:           a : b : c : d :___: x : g : h : i : k : l\nv1al:           a : b : c : d ____: x : g : h : i : k : l\nv1Il:           a : b : c : d : _ : x : g : h : i : k : l\nv1Al:           a : b : c : d ______x : g : h : i : k : l\nv1iN:           a : b : c : d : e : x : g :___: i : k : l\nv1aN:           a : b : c : d : e : x : g ____: i : k : l\nv1IN:           a : b : c : d : e : x : g : _ : i : k : l\nv1AN:           a : b : c : d : e : x : g ______i : k : l\nv1iL:           a : b : c :___: e : x : g : h : i : k : l\nv1aL:           a : b : c ____: e : x : g : h : i : k : l\nv1IL:           a : b : c : _ : e : x : g : h : i : k : l\nv1AL:           a : b : c ______e : x : g : h : i : k : l\nv2i:            a : b : c : d : e :___: g : h : i : k : l\nv2a:            a : b : c : d : e ____: g : h : i : k : l\nv2I:            a : b : c : d : e : _ : g : h : i : k : l\nv2A:            a : b : c : d : e ______g : h : i : k : l\nv2in:           a : b : c : d : e : x : g :___: i : k : l\nv2an:           a : b : c : d : e : x : g ____: i : k : l\nv2In:           a : b : c : d : e : x : g : _ : i : k : l\nv2An:           a : b : c : d : e : x : g ______i : k : l\nv2il:           a : b : c :___: e : x : g : h : i : k : l\nv2al:           a : b : c ____: e : x : g : h : i : k : l\nv2Il:           a : b : c : _ : e : x : g : h : i : k : l\nv2Al:           a : b : c ______e : x : g : h : i : k : l\nv2iN:           a : b : c : d : e : x : g : h : i :___: l\nv2aN:           a : b : c : d : e : x : g : h : i ____: l\nv2IN:           a : b : c : d : e : x : g : h : i : _ : l\nv2AN:           a : b : c : d : e : x : g : h : i ______l\nv2iL:           a :___: c : d : e : x : g : h : i : k : l\nv2aL:           a ____: c : d : e : x : g : h : i : k : l\nv2IL:           a : _ : c : d : e : x : g : h : i : k : l\nv2AL:           a ______c : d : e : x : g : h : i : k : l\na + b + c + d + e + x + g + h + i + k + l\nci+             a + b + c + d + e +_+ g + h + i + k + l\nca+             a + b + c + d + e _+ g + h + i + k + l\ncI+             a + b + c + d + e + _ + g + h + i + k + l\ncA+             a + b + c + d + e _g + h + i + k + l\ncin+            a + b + c + d + e + x +_+ h + i + k + l\ncan+            a + b + c + d + e + x _+ h + i + k + l\ncIn+            a + b + c + d + e + x + _ + h + i + k + l\ncAn+            a + b + c + d + e + x _h + i + k + l\ncil+            a + b + c + d +_+ x + g + h + i + k + l\ncal+            a + b + c + d _+ x + g + h + i + k + l\ncIl+            a + b + c + d + _ + x + g + h + i + k + l\ncAl+            a + b + c + d _x + g + h + i + k + l\nciN+            a + b + c + d + e + x + g +_+ i + k + l\ncaN+            a + b + c + d + e + x + g _+ i + k + l\ncIN+            a + b + c + d + e + x + g + _ + i + k + l\ncAN+            a + b + c + d + e + x + g _i + k + l\nciL+            a + b + c +_+ e + x + g + h + i + k + l\ncaL+            a + b + c _+ e + x + g + h + i + k + l\ncIL+            a + b + c + _ + e + x + g + h + i + k + l\ncAL+            a + b + c _e + x + g + h + i + k + l\nc1i+            a + b + c + d + e +_+ g + h + i + k + l\nc1a+            a + b + c + d + e _+ g + h + i + k + l\nc1I+            a + b + c + d + e + _ + g + h + i + k + l\nc1A+            a + b + c + d + e _g + h + i + k + l\nc1in+           a + b + c + d + e + x +_+ h + i + k + l\nc1an+           a + b + c + d + e + x _+ h + i + k + l\nc1In+           a + b + c + d + e + x + _ + h + i + k + l\nc1An+           a + b + c + d + e + x _h + i + k + l\nc1il+           a + b + c + d +_+ x + g + h + i + k + l\nc1al+           a + b + c + d _+ x + g + h + i + k + l\nc1Il+           a + b + c + d + _ + x + g + h + i + k + l\nc1Al+           a + b + c + d _x + g + h + i + k + l\nc1iN+           a + b + c + d + e + x + g +_+ i + k + l\nc1aN+           a + b + c + d + e + x + g _+ i + k + l\nc1IN+           a + b + c + d + e + x + g + _ + i + k + l\nc1AN+           a + b + c + d + e + x + g _i + k + l\nc1iL+           a + b + c +_+ e + x + g + h + i + k + l\nc1aL+           a + b + c _+ e + x + g + h + i + k + l\nc1IL+           a + b + c + _ + e + x + g + h + i + k + l\nc1AL+           a + b + c _e + x + g + h + i + k + l\nc2i+            a + b + c + d + e +_+ g + h + i + k + l\nc2a+            a + b + c + d + e _+ g + h + i + k + l\nc2I+            a + b + c + d + e + _ + g + h + i + k + l\nc2A+            a + b + c + d + e _g + h + i + k + l\nc2in+           a + b + c + d + e + x + g +_+ i + k + l\nc2an+           a + b + c + d + e + x + g _+ i + k + l\nc2In+           a + b + c + d + e + x + g + _ + i + k + l\nc2An+           a + b + c + d + e + x + g _i + k + l\nc2il+           a + b + c +_+ e + x + g + h + i + k + l\nc2al+           a + b + c _+ e + x + g + h + i + k + l\nc2Il+           a + b + c + _ + e + x + g + h + i + k + l\nc2Al+           a + b + c _e + x + g + h + i + k + l\nc2iN+           a + b + c + d + e + x + g + h + i +_+ l\nc2aN+           a + b + c + d + e + x + g + h + i _+ l\nc2IN+           a + b + c + d + e + x + g + h + i + _ + l\nc2AN+           a + b + c + d + e + x + g + h + i _l\nc2iL+           a +_+ c + d + e + x + g + h + i + k + l\nc2aL+           a _+ c + d + e + x + g + h + i + k + l\nc2IL+           a + _ + c + d + e + x + g + h + i + k + l\nc2AL+           a _c + d + e + x + g + h + i + k + l\ndi+             a + b + c + d + e ++ g + h + i + k + l\nda+             a + b + c + d + e + g + h + i + k + l\ndI+             a + b + c + d + e +  + g + h + i + k + l\ndA+             a + b + c + d + e g + h + i + k + l\ndin+            a + b + c + d + e + x ++ h + i + k + l\ndan+            a + b + c + d + e + x + h + i + k + l\ndIn+            a + b + c + d + e + x +  + h + i + k + l\ndAn+            a + b + c + d + e + x h + i + k + l\ndil+            a + b + c + d ++ x + g + h + i + k + l\ndal+            a + b + c + d + x + g + h + i + k + l\ndIl+            a + b + c + d +  + x + g + h + i + k + l\ndAl+            a + b + c + d x + g + h + i + k + l\ndiN+            a + b + c + d + e + x + g ++ i + k + l\ndaN+            a + b + c + d + e + x + g + i + k + l\ndIN+            a + b + c + d + e + x + g +  + i + k + l\ndAN+            a + b + c + d + e + x + g i + k + l\ndiL+            a + b + c ++ e + x + g + h + i + k + l\ndaL+            a + b + c + e + x + g + h + i + k + l\ndIL+            a + b + c +  + e + x + g + h + i + k + l\ndAL+            a + b + c e + x + g + h + i + k + l\nd1i+            a + b + c + d + e ++ g + h + i + k + l\nd1a+            a + b + c + d + e + g + h + i + k + l\nd1I+            a + b + c + d + e +  + g + h + i + k + l\nd1A+            a + b + c + d + e g + h + i + k + l\nd1in+           a + b + c + d + e + x ++ h + i + k + l\nd1an+           a + b + c + d + e + x + h + i + k + l\nd1In+           a + b + c + d + e + x +  + h + i + k + l\nd1An+           a + b + c + d + e + x h + i + k + l\nd1il+           a + b + c + d ++ x + g + h + i + k + l\nd1al+           a + b + c + d + x + g + h + i + k + l\nd1Il+           a + b + c + d +  + x + g + h + i + k + l\nd1Al+           a + b + c + d x + g + h + i + k + l\nd1iN+           a + b + c + d + e + x + g ++ i + k + l\nd1aN+           a + b + c + d + e + x + g + i + k + l\nd1IN+           a + b + c + d + e + x + g +  + i + k + l\nd1AN+           a + b + c + d + e + x + g i + k + l\nd1iL+           a + b + c ++ e + x + g + h + i + k + l\nd1aL+           a + b + c + e + x + g + h + i + k + l\nd1IL+           a + b + c +  + e + x + g + h + i + k + l\nd1AL+           a + b + c e + x + g + h + i + k + l\nd2i+            a + b + c + d + e ++ g + h + i + k + l\nd2a+            a + b + c + d + e + g + h + i + k + l\nd2I+            a + b + c + d + e +  + g + h + i + k + l\nd2A+            a + b + c + d + e g + h + i + k + l\nd2in+           a + b + c + d + e + x + g ++ i + k + l\nd2an+           a + b + c + d + e + x + g + i + k + l\nd2In+           a + b + c + d + e + x + g +  + i + k + l\nd2An+           a + b + c + d + e + x + g i + k + l\nd2il+           a + b + c ++ e + x + g + h + i + k + l\nd2al+           a + b + c + e + x + g + h + i + k + l\nd2Il+           a + b + c +  + e + x + g + h + i + k + l\nd2Al+           a + b + c e + x + g + h + i + k + l\nd2iN+           a + b + c + d + e + x + g + h + i ++ l\nd2aN+           a + b + c + d + e + x + g + h + i + l\nd2IN+           a + b + c + d + e + x + g + h + i +  + l\nd2AN+           a + b + c + d + e + x + g + h + i l\nd2iL+           a ++ c + d + e + x + g + h + i + k + l\nd2aL+           a + c + d + e + x + g + h + i + k + l\nd2IL+           a +  + c + d + e + x + g + h + i + k + l\nd2AL+           a c + d + e + x + g + h + i + k + l\nyi+             a + b + c + d + e + x + g + h + i + k + l       ' x '\nya+             a + b + c + d + e + x + g + h + i + k + l       '+ x '\nyI+             a + b + c + d + e + x + g + h + i + k + l       'x'\nyA+             a + b + c + d + e + x + g + h + i + k + l       '+ x + '\nyin+            a + b + c + d + e + x + g + h + i + k + l       ' g '\nyan+            a + b + c + d + e + x + g + h + i + k + l       '+ g '\nyIn+            a + b + c + d + e + x + g + h + i + k + l       'g'\nyAn+            a + b + c + d + e + x + g + h + i + k + l       '+ g + '\nyil+            a + b + c + d + e + x + g + h + i + k + l       ' e '\nyal+            a + b + c + d + e + x + g + h + i + k + l       '+ e '\nyIl+            a + b + c + d + e + x + g + h + i + k + l       'e'\nyAl+            a + b + c + d + e + x + g + h + i + k + l       '+ e + '\nyiN+            a + b + c + d + e + x + g + h + i + k + l       ' h '\nyaN+            a + b + c + d + e + x + g + h + i + k + l       '+ h '\nyIN+            a + b + c + d + e + x + g + h + i + k + l       'h'\nyAN+            a + b + c + d + e + x + g + h + i + k + l       '+ h + '\nyiL+            a + b + c + d + e + x + g + h + i + k + l       ' d '\nyaL+            a + b + c + d + e + x + g + h + i + k + l       '+ d '\nyIL+            a + b + c + d + e + x + g + h + i + k + l       'd'\nyAL+            a + b + c + d + e + x + g + h + i + k + l       '+ d + '\ny1i+            a + b + c + d + e + x + g + h + i + k + l       ' x '\ny1a+            a + b + c + d + e + x + g + h + i + k + l       '+ x '\ny1I+            a + b + c + d + e + x + g + h + i + k + l       'x'\ny1A+            a + b + c + d + e + x + g + h + i + k + l       '+ x + '\ny1in+           a + b + c + d + e + x + g + h + i + k + l       ' g '\ny1an+           a + b + c + d + e + x + g + h + i + k + l       '+ g '\ny1In+           a + b + c + d + e + x + g + h + i + k + l       'g'\ny1An+           a + b + c + d + e + x + g + h + i + k + l       '+ g + '\ny1il+           a + b + c + d + e + x + g + h + i + k + l       ' e '\ny1al+           a + b + c + d + e + x + g + h + i + k + l       '+ e '\ny1Il+           a + b + c + d + e + x + g + h + i + k + l       'e'\ny1Al+           a + b + c + d + e + x + g + h + i + k + l       '+ e + '\ny1iN+           a + b + c + d + e + x + g + h + i + k + l       ' h '\ny1aN+           a + b + c + d + e + x + g + h + i + k + l       '+ h '\ny1IN+           a + b + c + d + e + x + g + h + i + k + l       'h'\ny1AN+           a + b + c + d + e + x + g + h + i + k + l       '+ h + '\ny1iL+           a + b + c + d + e + x + g + h + i + k + l       ' d '\ny1aL+           a + b + c + d + e + x + g + h + i + k + l       '+ d '\ny1IL+           a + b + c + d + e + x + g + h + i + k + l       'd'\ny1AL+           a + b + c + d + e + x + g + h + i + k + l       '+ d + '\ny2i+            a + b + c + d + e + x + g + h + i + k + l       ' x '\ny2a+            a + b + c + d + e + x + g + h + i + k + l       '+ x '\ny2I+            a + b + c + d + e + x + g + h + i + k + l       'x'\ny2A+            a + b + c + d + e + x + g + h + i + k + l       '+ x + '\ny2in+           a + b + c + d + e + x + g + h + i + k + l       ' h '\ny2an+           a + b + c + d + e + x + g + h + i + k + l       '+ h '\ny2In+           a + b + c + d + e + x + g + h + i + k + l       'h'\ny2An+           a + b + c + d + e + x + g + h + i + k + l       '+ h + '\ny2il+           a + b + c + d + e + x + g + h + i + k + l       ' d '\ny2al+           a + b + c + d + e + x + g + h + i + k + l       '+ d '\ny2Il+           a + b + c + d + e + x + g + h + i + k + l       'd'\ny2Al+           a + b + c + d + e + x + g + h + i + k + l       '+ d + '\ny2iN+           a + b + c + d + e + x + g + h + i + k + l       ' k '\ny2aN+           a + b + c + d + e + x + g + h + i + k + l       '+ k '\ny2IN+           a + b + c + d + e + x + g + h + i + k + l       'k'\ny2AN+           a + b + c + d + e + x + g + h + i + k + l       '+ k + '\ny2iL+           a + b + c + d + e + x + g + h + i + k + l       ' b '\ny2aL+           a + b + c + d + e + x + g + h + i + k + l       '+ b '\ny2IL+           a + b + c + d + e + x + g + h + i + k + l       'b'\ny2AL+           a + b + c + d + e + x + g + h + i + k + l       '+ b + '\nvi+             a + b + c + d + e +___+ g + h + i + k + l\nva+             a + b + c + d + e ____+ g + h + i + k + l\nvI+             a + b + c + d + e + _ + g + h + i + k + l\nvA+             a + b + c + d + e ______g + h + i + k + l\nvin+            a + b + c + d + e + x +___+ h + i + k + l\nvan+            a + b + c + d + e + x ____+ h + i + k + l\nvIn+            a + b + c + d + e + x + _ + h + i + k + l\nvAn+            a + b + c + d + e + x ______h + i + k + l\nvil+            a + b + c + d +___+ x + g + h + i + k + l\nval+            a + b + c + d ____+ x + g + h + i + k + l\nvIl+            a + b + c + d + _ + x + g + h + i + k + l\nvAl+            a + b + c + d ______x + g + h + i + k + l\nviN+            a + b + c + d + e + x + g +___+ i + k + l\nvaN+            a + b + c + d + e + x + g ____+ i + k + l\nvIN+            a + b + c + d + e + x + g + _ + i + k + l\nvAN+            a + b + c + d + e + x + g ______i + k + l\nviL+            a + b + c +___+ e + x + g + h + i + k + l\nvaL+            a + b + c ____+ e + x + g + h + i + k + l\nvIL+            a + b + c + _ + e + x + g + h + i + k + l\nvAL+            a + b + c ______e + x + g + h + i + k + l\nv1i+            a + b + c + d + e +___+ g + h + i + k + l\nv1a+            a + b + c + d + e ____+ g + h + i + k + l\nv1I+            a + b + c + d + e + _ + g + h + i + k + l\nv1A+            a + b + c + d + e ______g + h + i + k + l\nv1in+           a + b + c + d + e + x +___+ h + i + k + l\nv1an+           a + b + c + d + e + x ____+ h + i + k + l\nv1In+           a + b + c + d + e + x + _ + h + i + k + l\nv1An+           a + b + c + d + e + x ______h + i + k + l\nv1il+           a + b + c + d +___+ x + g + h + i + k + l\nv1al+           a + b + c + d ____+ x + g + h + i + k + l\nv1Il+           a + b + c + d + _ + x + g + h + i + k + l\nv1Al+           a + b + c + d ______x + g + h + i + k + l\nv1iN+           a + b + c + d + e + x + g +___+ i + k + l\nv1aN+           a + b + c + d + e + x + g ____+ i + k + l\nv1IN+           a + b + c + d + e + x + g + _ + i + k + l\nv1AN+           a + b + c + d + e + x + g ______i + k + l\nv1iL+           a + b + c +___+ e + x + g + h + i + k + l\nv1aL+           a + b + c ____+ e + x + g + h + i + k + l\nv1IL+           a + b + c + _ + e + x + g + h + i + k + l\nv1AL+           a + b + c ______e + x + g + h + i + k + l\nv2i+            a + b + c + d + e +___+ g + h + i + k + l\nv2a+            a + b + c + d + e ____+ g + h + i + k + l\nv2I+            a + b + c + d + e + _ + g + h + i + k + l\nv2A+            a + b + c + d + e ______g + h + i + k + l\nv2in+           a + b + c + d + e + x + g +___+ i + k + l\nv2an+           a + b + c + d + e + x + g ____+ i + k + l\nv2In+           a + b + c + d + e + x + g + _ + i + k + l\nv2An+           a + b + c + d + e + x + g ______i + k + l\nv2il+           a + b + c +___+ e + x + g + h + i + k + l\nv2al+           a + b + c ____+ e + x + g + h + i + k + l\nv2Il+           a + b + c + _ + e + x + g + h + i + k + l\nv2Al+           a + b + c ______e + x + g + h + i + k + l\nv2iN+           a + b + c + d + e + x + g + h + i +___+ l\nv2aN+           a + b + c + d + e + x + g + h + i ____+ l\nv2IN+           a + b + c + d + e + x + g + h + i + _ + l\nv2AN+           a + b + c + d + e + x + g + h + i ______l\nv2iL+           a +___+ c + d + e + x + g + h + i + k + l\nv2aL+           a ____+ c + d + e + x + g + h + i + k + l\nv2IL+           a + _ + c + d + e + x + g + h + i + k + l\nv2AL+           a ______c + d + e + x + g + h + i + k + l\na - b - c - d - e - x - g - h - i - k - l\nci-             a - b - c - d - e -_- g - h - i - k - l\nca-             a - b - c - d - e _- g - h - i - k - l\ncI-             a - b - c - d - e - _ - g - h - i - k - l\ncA-             a - b - c - d - e _g - h - i - k - l\ncin-            a - b - c - d - e - x -_- h - i - k - l\ncan-            a - b - c - d - e - x _- h - i - k - l\ncIn-            a - b - c - d - e - x - _ - h - i - k - l\ncAn-            a - b - c - d - e - x _h - i - k - l\ncil-            a - b - c - d -_- x - g - h - i - k - l\ncal-            a - b - c - d _- x - g - h - i - k - l\ncIl-            a - b - c - d - _ - x - g - h - i - k - l\ncAl-            a - b - c - d _x - g - h - i - k - l\nciN-            a - b - c - d - e - x - g -_- i - k - l\ncaN-            a - b - c - d - e - x - g _- i - k - l\ncIN-            a - b - c - d - e - x - g - _ - i - k - l\ncAN-            a - b - c - d - e - x - g _i - k - l\nciL-            a - b - c -_- e - x - g - h - i - k - l\ncaL-            a - b - c _- e - x - g - h - i - k - l\ncIL-            a - b - c - _ - e - x - g - h - i - k - l\ncAL-            a - b - c _e - x - g - h - i - k - l\nc1i-            a - b - c - d - e -_- g - h - i - k - l\nc1a-            a - b - c - d - e _- g - h - i - k - l\nc1I-            a - b - c - d - e - _ - g - h - i - k - l\nc1A-            a - b - c - d - e _g - h - i - k - l\nc1in-           a - b - c - d - e - x -_- h - i - k - l\nc1an-           a - b - c - d - e - x _- h - i - k - l\nc1In-           a - b - c - d - e - x - _ - h - i - k - l\nc1An-           a - b - c - d - e - x _h - i - k - l\nc1il-           a - b - c - d -_- x - g - h - i - k - l\nc1al-           a - b - c - d _- x - g - h - i - k - l\nc1Il-           a - b - c - d - _ - x - g - h - i - k - l\nc1Al-           a - b - c - d _x - g - h - i - k - l\nc1iN-           a - b - c - d - e - x - g -_- i - k - l\nc1aN-           a - b - c - d - e - x - g _- i - k - l\nc1IN-           a - b - c - d - e - x - g - _ - i - k - l\nc1AN-           a - b - c - d - e - x - g _i - k - l\nc1iL-           a - b - c -_- e - x - g - h - i - k - l\nc1aL-           a - b - c _- e - x - g - h - i - k - l\nc1IL-           a - b - c - _ - e - x - g - h - i - k - l\nc1AL-           a - b - c _e - x - g - h - i - k - l\nc2i-            a - b - c - d - e -_- g - h - i - k - l\nc2a-            a - b - c - d - e _- g - h - i - k - l\nc2I-            a - b - c - d - e - _ - g - h - i - k - l\nc2A-            a - b - c - d - e _g - h - i - k - l\nc2in-           a - b - c - d - e - x - g -_- i - k - l\nc2an-           a - b - c - d - e - x - g _- i - k - l\nc2In-           a - b - c - d - e - x - g - _ - i - k - l\nc2An-           a - b - c - d - e - x - g _i - k - l\nc2il-           a - b - c -_- e - x - g - h - i - k - l\nc2al-           a - b - c _- e - x - g - h - i - k - l\nc2Il-           a - b - c - _ - e - x - g - h - i - k - l\nc2Al-           a - b - c _e - x - g - h - i - k - l\nc2iN-           a - b - c - d - e - x - g - h - i -_- l\nc2aN-           a - b - c - d - e - x - g - h - i _- l\nc2IN-           a - b - c - d - e - x - g - h - i - _ - l\nc2AN-           a - b - c - d - e - x - g - h - i _l\nc2iL-           a -_- c - d - e - x - g - h - i - k - l\nc2aL-           a _- c - d - e - x - g - h - i - k - l\nc2IL-           a - _ - c - d - e - x - g - h - i - k - l\nc2AL-           a _c - d - e - x - g - h - i - k - l\ndi-             a - b - c - d - e -- g - h - i - k - l\nda-             a - b - c - d - e - g - h - i - k - l\ndI-             a - b - c - d - e -  - g - h - i - k - l\ndA-             a - b - c - d - e g - h - i - k - l\ndin-            a - b - c - d - e - x -- h - i - k - l\ndan-            a - b - c - d - e - x - h - i - k - l\ndIn-            a - b - c - d - e - x -  - h - i - k - l\ndAn-            a - b - c - d - e - x h - i - k - l\ndil-            a - b - c - d -- x - g - h - i - k - l\ndal-            a - b - c - d - x - g - h - i - k - l\ndIl-            a - b - c - d -  - x - g - h - i - k - l\ndAl-            a - b - c - d x - g - h - i - k - l\ndiN-            a - b - c - d - e - x - g -- i - k - l\ndaN-            a - b - c - d - e - x - g - i - k - l\ndIN-            a - b - c - d - e - x - g -  - i - k - l\ndAN-            a - b - c - d - e - x - g i - k - l\ndiL-            a - b - c -- e - x - g - h - i - k - l\ndaL-            a - b - c - e - x - g - h - i - k - l\ndIL-            a - b - c -  - e - x - g - h - i - k - l\ndAL-            a - b - c e - x - g - h - i - k - l\nd1i-            a - b - c - d - e -- g - h - i - k - l\nd1a-            a - b - c - d - e - g - h - i - k - l\nd1I-            a - b - c - d - e -  - g - h - i - k - l\nd1A-            a - b - c - d - e g - h - i - k - l\nd1in-           a - b - c - d - e - x -- h - i - k - l\nd1an-           a - b - c - d - e - x - h - i - k - l\nd1In-           a - b - c - d - e - x -  - h - i - k - l\nd1An-           a - b - c - d - e - x h - i - k - l\nd1il-           a - b - c - d -- x - g - h - i - k - l\nd1al-           a - b - c - d - x - g - h - i - k - l\nd1Il-           a - b - c - d -  - x - g - h - i - k - l\nd1Al-           a - b - c - d x - g - h - i - k - l\nd1iN-           a - b - c - d - e - x - g -- i - k - l\nd1aN-           a - b - c - d - e - x - g - i - k - l\nd1IN-           a - b - c - d - e - x - g -  - i - k - l\nd1AN-           a - b - c - d - e - x - g i - k - l\nd1iL-           a - b - c -- e - x - g - h - i - k - l\nd1aL-           a - b - c - e - x - g - h - i - k - l\nd1IL-           a - b - c -  - e - x - g - h - i - k - l\nd1AL-           a - b - c e - x - g - h - i - k - l\nd2i-            a - b - c - d - e -- g - h - i - k - l\nd2a-            a - b - c - d - e - g - h - i - k - l\nd2I-            a - b - c - d - e -  - g - h - i - k - l\nd2A-            a - b - c - d - e g - h - i - k - l\nd2in-           a - b - c - d - e - x - g -- i - k - l\nd2an-           a - b - c - d - e - x - g - i - k - l\nd2In-           a - b - c - d - e - x - g -  - i - k - l\nd2An-           a - b - c - d - e - x - g i - k - l\nd2il-           a - b - c -- e - x - g - h - i - k - l\nd2al-           a - b - c - e - x - g - h - i - k - l\nd2Il-           a - b - c -  - e - x - g - h - i - k - l\nd2Al-           a - b - c e - x - g - h - i - k - l\nd2iN-           a - b - c - d - e - x - g - h - i -- l\nd2aN-           a - b - c - d - e - x - g - h - i - l\nd2IN-           a - b - c - d - e - x - g - h - i -  - l\nd2AN-           a - b - c - d - e - x - g - h - i l\nd2iL-           a -- c - d - e - x - g - h - i - k - l\nd2aL-           a - c - d - e - x - g - h - i - k - l\nd2IL-           a -  - c - d - e - x - g - h - i - k - l\nd2AL-           a c - d - e - x - g - h - i - k - l\nyi-             a - b - c - d - e - x - g - h - i - k - l       ' x '\nya-             a - b - c - d - e - x - g - h - i - k - l       '- x '\nyI-             a - b - c - d - e - x - g - h - i - k - l       'x'\nyA-             a - b - c - d - e - x - g - h - i - k - l       '- x - '\nyin-            a - b - c - d - e - x - g - h - i - k - l       ' g '\nyan-            a - b - c - d - e - x - g - h - i - k - l       '- g '\nyIn-            a - b - c - d - e - x - g - h - i - k - l       'g'\nyAn-            a - b - c - d - e - x - g - h - i - k - l       '- g - '\nyil-            a - b - c - d - e - x - g - h - i - k - l       ' e '\nyal-            a - b - c - d - e - x - g - h - i - k - l       '- e '\nyIl-            a - b - c - d - e - x - g - h - i - k - l       'e'\nyAl-            a - b - c - d - e - x - g - h - i - k - l       '- e - '\nyiN-            a - b - c - d - e - x - g - h - i - k - l       ' h '\nyaN-            a - b - c - d - e - x - g - h - i - k - l       '- h '\nyIN-            a - b - c - d - e - x - g - h - i - k - l       'h'\nyAN-            a - b - c - d - e - x - g - h - i - k - l       '- h - '\nyiL-            a - b - c - d - e - x - g - h - i - k - l       ' d '\nyaL-            a - b - c - d - e - x - g - h - i - k - l       '- d '\nyIL-            a - b - c - d - e - x - g - h - i - k - l       'd'\nyAL-            a - b - c - d - e - x - g - h - i - k - l       '- d - '\ny1i-            a - b - c - d - e - x - g - h - i - k - l       ' x '\ny1a-            a - b - c - d - e - x - g - h - i - k - l       '- x '\ny1I-            a - b - c - d - e - x - g - h - i - k - l       'x'\ny1A-            a - b - c - d - e - x - g - h - i - k - l       '- x - '\ny1in-           a - b - c - d - e - x - g - h - i - k - l       ' g '\ny1an-           a - b - c - d - e - x - g - h - i - k - l       '- g '\ny1In-           a - b - c - d - e - x - g - h - i - k - l       'g'\ny1An-           a - b - c - d - e - x - g - h - i - k - l       '- g - '\ny1il-           a - b - c - d - e - x - g - h - i - k - l       ' e '\ny1al-           a - b - c - d - e - x - g - h - i - k - l       '- e '\ny1Il-           a - b - c - d - e - x - g - h - i - k - l       'e'\ny1Al-           a - b - c - d - e - x - g - h - i - k - l       '- e - '\ny1iN-           a - b - c - d - e - x - g - h - i - k - l       ' h '\ny1aN-           a - b - c - d - e - x - g - h - i - k - l       '- h '\ny1IN-           a - b - c - d - e - x - g - h - i - k - l       'h'\ny1AN-           a - b - c - d - e - x - g - h - i - k - l       '- h - '\ny1iL-           a - b - c - d - e - x - g - h - i - k - l       ' d '\ny1aL-           a - b - c - d - e - x - g - h - i - k - l       '- d '\ny1IL-           a - b - c - d - e - x - g - h - i - k - l       'd'\ny1AL-           a - b - c - d - e - x - g - h - i - k - l       '- d - '\ny2i-            a - b - c - d - e - x - g - h - i - k - l       ' x '\ny2a-            a - b - c - d - e - x - g - h - i - k - l       '- x '\ny2I-            a - b - c - d - e - x - g - h - i - k - l       'x'\ny2A-            a - b - c - d - e - x - g - h - i - k - l       '- x - '\ny2in-           a - b - c - d - e - x - g - h - i - k - l       ' h '\ny2an-           a - b - c - d - e - x - g - h - i - k - l       '- h '\ny2In-           a - b - c - d - e - x - g - h - i - k - l       'h'\ny2An-           a - b - c - d - e - x - g - h - i - k - l       '- h - '\ny2il-           a - b - c - d - e - x - g - h - i - k - l       ' d '\ny2al-           a - b - c - d - e - x - g - h - i - k - l       '- d '\ny2Il-           a - b - c - d - e - x - g - h - i - k - l       'd'\ny2Al-           a - b - c - d - e - x - g - h - i - k - l       '- d - '\ny2iN-           a - b - c - d - e - x - g - h - i - k - l       ' k '\ny2aN-           a - b - c - d - e - x - g - h - i - k - l       '- k '\ny2IN-           a - b - c - d - e - x - g - h - i - k - l       'k'\ny2AN-           a - b - c - d - e - x - g - h - i - k - l       '- k - '\ny2iL-           a - b - c - d - e - x - g - h - i - k - l       ' b '\ny2aL-           a - b - c - d - e - x - g - h - i - k - l       '- b '\ny2IL-           a - b - c - d - e - x - g - h - i - k - l       'b'\ny2AL-           a - b - c - d - e - x - g - h - i - k - l       '- b - '\nvi-             a - b - c - d - e -___- g - h - i - k - l\nva-             a - b - c - d - e ____- g - h - i - k - l\nvI-             a - b - c - d - e - _ - g - h - i - k - l\nvA-             a - b - c - d - e ______g - h - i - k - l\nvin-            a - b - c - d - e - x -___- h - i - k - l\nvan-            a - b - c - d - e - x ____- h - i - k - l\nvIn-            a - b - c - d - e - x - _ - h - i - k - l\nvAn-            a - b - c - d - e - x ______h - i - k - l\nvil-            a - b - c - d -___- x - g - h - i - k - l\nval-            a - b - c - d ____- x - g - h - i - k - l\nvIl-            a - b - c - d - _ - x - g - h - i - k - l\nvAl-            a - b - c - d ______x - g - h - i - k - l\nviN-            a - b - c - d - e - x - g -___- i - k - l\nvaN-            a - b - c - d - e - x - g ____- i - k - l\nvIN-            a - b - c - d - e - x - g - _ - i - k - l\nvAN-            a - b - c - d - e - x - g ______i - k - l\nviL-            a - b - c -___- e - x - g - h - i - k - l\nvaL-            a - b - c ____- e - x - g - h - i - k - l\nvIL-            a - b - c - _ - e - x - g - h - i - k - l\nvAL-            a - b - c ______e - x - g - h - i - k - l\nv1i-            a - b - c - d - e -___- g - h - i - k - l\nv1a-            a - b - c - d - e ____- g - h - i - k - l\nv1I-            a - b - c - d - e - _ - g - h - i - k - l\nv1A-            a - b - c - d - e ______g - h - i - k - l\nv1in-           a - b - c - d - e - x -___- h - i - k - l\nv1an-           a - b - c - d - e - x ____- h - i - k - l\nv1In-           a - b - c - d - e - x - _ - h - i - k - l\nv1An-           a - b - c - d - e - x ______h - i - k - l\nv1il-           a - b - c - d -___- x - g - h - i - k - l\nv1al-           a - b - c - d ____- x - g - h - i - k - l\nv1Il-           a - b - c - d - _ - x - g - h - i - k - l\nv1Al-           a - b - c - d ______x - g - h - i - k - l\nv1iN-           a - b - c - d - e - x - g -___- i - k - l\nv1aN-           a - b - c - d - e - x - g ____- i - k - l\nv1IN-           a - b - c - d - e - x - g - _ - i - k - l\nv1AN-           a - b - c - d - e - x - g ______i - k - l\nv1iL-           a - b - c -___- e - x - g - h - i - k - l\nv1aL-           a - b - c ____- e - x - g - h - i - k - l\nv1IL-           a - b - c - _ - e - x - g - h - i - k - l\nv1AL-           a - b - c ______e - x - g - h - i - k - l\nv2i-            a - b - c - d - e -___- g - h - i - k - l\nv2a-            a - b - c - d - e ____- g - h - i - k - l\nv2I-            a - b - c - d - e - _ - g - h - i - k - l\nv2A-            a - b - c - d - e ______g - h - i - k - l\nv2in-           a - b - c - d - e - x - g -___- i - k - l\nv2an-           a - b - c - d - e - x - g ____- i - k - l\nv2In-           a - b - c - d - e - x - g - _ - i - k - l\nv2An-           a - b - c - d - e - x - g ______i - k - l\nv2il-           a - b - c -___- e - x - g - h - i - k - l\nv2al-           a - b - c ____- e - x - g - h - i - k - l\nv2Il-           a - b - c - _ - e - x - g - h - i - k - l\nv2Al-           a - b - c ______e - x - g - h - i - k - l\nv2iN-           a - b - c - d - e - x - g - h - i -___- l\nv2aN-           a - b - c - d - e - x - g - h - i ____- l\nv2IN-           a - b - c - d - e - x - g - h - i - _ - l\nv2AN-           a - b - c - d - e - x - g - h - i ______l\nv2iL-           a -___- c - d - e - x - g - h - i - k - l\nv2aL-           a ____- c - d - e - x - g - h - i - k - l\nv2IL-           a - _ - c - d - e - x - g - h - i - k - l\nv2AL-           a ______c - d - e - x - g - h - i - k - l\na = b = c = d = e = x = g = h = i = k = l\nci=             a = b = c = d = e =_= g = h = i = k = l\nca=             a = b = c = d = e _= g = h = i = k = l\ncI=             a = b = c = d = e = _ = g = h = i = k = l\ncA=             a = b = c = d = e _g = h = i = k = l\ncin=            a = b = c = d = e = x =_= h = i = k = l\ncan=            a = b = c = d = e = x _= h = i = k = l\ncIn=            a = b = c = d = e = x = _ = h = i = k = l\ncAn=            a = b = c = d = e = x _h = i = k = l\ncil=            a = b = c = d =_= x = g = h = i = k = l\ncal=            a = b = c = d _= x = g = h = i = k = l\ncIl=            a = b = c = d = _ = x = g = h = i = k = l\ncAl=            a = b = c = d _x = g = h = i = k = l\nciN=            a = b = c = d = e = x = g =_= i = k = l\ncaN=            a = b = c = d = e = x = g _= i = k = l\ncIN=            a = b = c = d = e = x = g = _ = i = k = l\ncAN=            a = b = c = d = e = x = g _i = k = l\nciL=            a = b = c =_= e = x = g = h = i = k = l\ncaL=            a = b = c _= e = x = g = h = i = k = l\ncIL=            a = b = c = _ = e = x = g = h = i = k = l\ncAL=            a = b = c _e = x = g = h = i = k = l\nc1i=            a = b = c = d = e =_= g = h = i = k = l\nc1a=            a = b = c = d = e _= g = h = i = k = l\nc1I=            a = b = c = d = e = _ = g = h = i = k = l\nc1A=            a = b = c = d = e _g = h = i = k = l\nc1in=           a = b = c = d = e = x =_= h = i = k = l\nc1an=           a = b = c = d = e = x _= h = i = k = l\nc1In=           a = b = c = d = e = x = _ = h = i = k = l\nc1An=           a = b = c = d = e = x _h = i = k = l\nc1il=           a = b = c = d =_= x = g = h = i = k = l\nc1al=           a = b = c = d _= x = g = h = i = k = l\nc1Il=           a = b = c = d = _ = x = g = h = i = k = l\nc1Al=           a = b = c = d _x = g = h = i = k = l\nc1iN=           a = b = c = d = e = x = g =_= i = k = l\nc1aN=           a = b = c = d = e = x = g _= i = k = l\nc1IN=           a = b = c = d = e = x = g = _ = i = k = l\nc1AN=           a = b = c = d = e = x = g _i = k = l\nc1iL=           a = b = c =_= e = x = g = h = i = k = l\nc1aL=           a = b = c _= e = x = g = h = i = k = l\nc1IL=           a = b = c = _ = e = x = g = h = i = k = l\nc1AL=           a = b = c _e = x = g = h = i = k = l\nc2i=            a = b = c = d = e =_= g = h = i = k = l\nc2a=            a = b = c = d = e _= g = h = i = k = l\nc2I=            a = b = c = d = e = _ = g = h = i = k = l\nc2A=            a = b = c = d = e _g = h = i = k = l\nc2in=           a = b = c = d = e = x = g =_= i = k = l\nc2an=           a = b = c = d = e = x = g _= i = k = l\nc2In=           a = b = c = d = e = x = g = _ = i = k = l\nc2An=           a = b = c = d = e = x = g _i = k = l\nc2il=           a = b = c =_= e = x = g = h = i = k = l\nc2al=           a = b = c _= e = x = g = h = i = k = l\nc2Il=           a = b = c = _ = e = x = g = h = i = k = l\nc2Al=           a = b = c _e = x = g = h = i = k = l\nc2iN=           a = b = c = d = e = x = g = h = i =_= l\nc2aN=           a = b = c = d = e = x = g = h = i _= l\nc2IN=           a = b = c = d = e = x = g = h = i = _ = l\nc2AN=           a = b = c = d = e = x = g = h = i _l\nc2iL=           a =_= c = d = e = x = g = h = i = k = l\nc2aL=           a _= c = d = e = x = g = h = i = k = l\nc2IL=           a = _ = c = d = e = x = g = h = i = k = l\nc2AL=           a _c = d = e = x = g = h = i = k = l\ndi=             a = b = c = d = e == g = h = i = k = l\nda=             a = b = c = d = e = g = h = i = k = l\ndI=             a = b = c = d = e =  = g = h = i = k = l\ndA=             a = b = c = d = e g = h = i = k = l\ndin=            a = b = c = d = e = x == h = i = k = l\ndan=            a = b = c = d = e = x = h = i = k = l\ndIn=            a = b = c = d = e = x =  = h = i = k = l\ndAn=            a = b = c = d = e = x h = i = k = l\ndil=            a = b = c = d == x = g = h = i = k = l\ndal=            a = b = c = d = x = g = h = i = k = l\ndIl=            a = b = c = d =  = x = g = h = i = k = l\ndAl=            a = b = c = d x = g = h = i = k = l\ndiN=            a = b = c = d = e = x = g == i = k = l\ndaN=            a = b = c = d = e = x = g = i = k = l\ndIN=            a = b = c = d = e = x = g =  = i = k = l\ndAN=            a = b = c = d = e = x = g i = k = l\ndiL=            a = b = c == e = x = g = h = i = k = l\ndaL=            a = b = c = e = x = g = h = i = k = l\ndIL=            a = b = c =  = e = x = g = h = i = k = l\ndAL=            a = b = c e = x = g = h = i = k = l\nd1i=            a = b = c = d = e == g = h = i = k = l\nd1a=            a = b = c = d = e = g = h = i = k = l\nd1I=            a = b = c = d = e =  = g = h = i = k = l\nd1A=            a = b = c = d = e g = h = i = k = l\nd1in=           a = b = c = d = e = x == h = i = k = l\nd1an=           a = b = c = d = e = x = h = i = k = l\nd1In=           a = b = c = d = e = x =  = h = i = k = l\nd1An=           a = b = c = d = e = x h = i = k = l\nd1il=           a = b = c = d == x = g = h = i = k = l\nd1al=           a = b = c = d = x = g = h = i = k = l\nd1Il=           a = b = c = d =  = x = g = h = i = k = l\nd1Al=           a = b = c = d x = g = h = i = k = l\nd1iN=           a = b = c = d = e = x = g == i = k = l\nd1aN=           a = b = c = d = e = x = g = i = k = l\nd1IN=           a = b = c = d = e = x = g =  = i = k = l\nd1AN=           a = b = c = d = e = x = g i = k = l\nd1iL=           a = b = c == e = x = g = h = i = k = l\nd1aL=           a = b = c = e = x = g = h = i = k = l\nd1IL=           a = b = c =  = e = x = g = h = i = k = l\nd1AL=           a = b = c e = x = g = h = i = k = l\nd2i=            a = b = c = d = e == g = h = i = k = l\nd2a=            a = b = c = d = e = g = h = i = k = l\nd2I=            a = b = c = d = e =  = g = h = i = k = l\nd2A=            a = b = c = d = e g = h = i = k = l\nd2in=           a = b = c = d = e = x = g == i = k = l\nd2an=           a = b = c = d = e = x = g = i = k = l\nd2In=           a = b = c = d = e = x = g =  = i = k = l\nd2An=           a = b = c = d = e = x = g i = k = l\nd2il=           a = b = c == e = x = g = h = i = k = l\nd2al=           a = b = c = e = x = g = h = i = k = l\nd2Il=           a = b = c =  = e = x = g = h = i = k = l\nd2Al=           a = b = c e = x = g = h = i = k = l\nd2iN=           a = b = c = d = e = x = g = h = i == l\nd2aN=           a = b = c = d = e = x = g = h = i = l\nd2IN=           a = b = c = d = e = x = g = h = i =  = l\nd2AN=           a = b = c = d = e = x = g = h = i l\nd2iL=           a == c = d = e = x = g = h = i = k = l\nd2aL=           a = c = d = e = x = g = h = i = k = l\nd2IL=           a =  = c = d = e = x = g = h = i = k = l\nd2AL=           a c = d = e = x = g = h = i = k = l\nyi=             a = b = c = d = e = x = g = h = i = k = l       ' x '\nya=             a = b = c = d = e = x = g = h = i = k = l       '= x '\nyI=             a = b = c = d = e = x = g = h = i = k = l       'x'\nyA=             a = b = c = d = e = x = g = h = i = k = l       '= x = '\nyin=            a = b = c = d = e = x = g = h = i = k = l       ' g '\nyan=            a = b = c = d = e = x = g = h = i = k = l       '= g '\nyIn=            a = b = c = d = e = x = g = h = i = k = l       'g'\nyAn=            a = b = c = d = e = x = g = h = i = k = l       '= g = '\nyil=            a = b = c = d = e = x = g = h = i = k = l       ' e '\nyal=            a = b = c = d = e = x = g = h = i = k = l       '= e '\nyIl=            a = b = c = d = e = x = g = h = i = k = l       'e'\nyAl=            a = b = c = d = e = x = g = h = i = k = l       '= e = '\nyiN=            a = b = c = d = e = x = g = h = i = k = l       ' h '\nyaN=            a = b = c = d = e = x = g = h = i = k = l       '= h '\nyIN=            a = b = c = d = e = x = g = h = i = k = l       'h'\nyAN=            a = b = c = d = e = x = g = h = i = k = l       '= h = '\nyiL=            a = b = c = d = e = x = g = h = i = k = l       ' d '\nyaL=            a = b = c = d = e = x = g = h = i = k = l       '= d '\nyIL=            a = b = c = d = e = x = g = h = i = k = l       'd'\nyAL=            a = b = c = d = e = x = g = h = i = k = l       '= d = '\ny1i=            a = b = c = d = e = x = g = h = i = k = l       ' x '\ny1a=            a = b = c = d = e = x = g = h = i = k = l       '= x '\ny1I=            a = b = c = d = e = x = g = h = i = k = l       'x'\ny1A=            a = b = c = d = e = x = g = h = i = k = l       '= x = '\ny1in=           a = b = c = d = e = x = g = h = i = k = l       ' g '\ny1an=           a = b = c = d = e = x = g = h = i = k = l       '= g '\ny1In=           a = b = c = d = e = x = g = h = i = k = l       'g'\ny1An=           a = b = c = d = e = x = g = h = i = k = l       '= g = '\ny1il=           a = b = c = d = e = x = g = h = i = k = l       ' e '\ny1al=           a = b = c = d = e = x = g = h = i = k = l       '= e '\ny1Il=           a = b = c = d = e = x = g = h = i = k = l       'e'\ny1Al=           a = b = c = d = e = x = g = h = i = k = l       '= e = '\ny1iN=           a = b = c = d = e = x = g = h = i = k = l       ' h '\ny1aN=           a = b = c = d = e = x = g = h = i = k = l       '= h '\ny1IN=           a = b = c = d = e = x = g = h = i = k = l       'h'\ny1AN=           a = b = c = d = e = x = g = h = i = k = l       '= h = '\ny1iL=           a = b = c = d = e = x = g = h = i = k = l       ' d '\ny1aL=           a = b = c = d = e = x = g = h = i = k = l       '= d '\ny1IL=           a = b = c = d = e = x = g = h = i = k = l       'd'\ny1AL=           a = b = c = d = e = x = g = h = i = k = l       '= d = '\ny2i=            a = b = c = d = e = x = g = h = i = k = l       ' x '\ny2a=            a = b = c = d = e = x = g = h = i = k = l       '= x '\ny2I=            a = b = c = d = e = x = g = h = i = k = l       'x'\ny2A=            a = b = c = d = e = x = g = h = i = k = l       '= x = '\ny2in=           a = b = c = d = e = x = g = h = i = k = l       ' h '\ny2an=           a = b = c = d = e = x = g = h = i = k = l       '= h '\ny2In=           a = b = c = d = e = x = g = h = i = k = l       'h'\ny2An=           a = b = c = d = e = x = g = h = i = k = l       '= h = '\ny2il=           a = b = c = d = e = x = g = h = i = k = l       ' d '\ny2al=           a = b = c = d = e = x = g = h = i = k = l       '= d '\ny2Il=           a = b = c = d = e = x = g = h = i = k = l       'd'\ny2Al=           a = b = c = d = e = x = g = h = i = k = l       '= d = '\ny2iN=           a = b = c = d = e = x = g = h = i = k = l       ' k '\ny2aN=           a = b = c = d = e = x = g = h = i = k = l       '= k '\ny2IN=           a = b = c = d = e = x = g = h = i = k = l       'k'\ny2AN=           a = b = c = d = e = x = g = h = i = k = l       '= k = '\ny2iL=           a = b = c = d = e = x = g = h = i = k = l       ' b '\ny2aL=           a = b = c = d = e = x = g = h = i = k = l       '= b '\ny2IL=           a = b = c = d = e = x = g = h = i = k = l       'b'\ny2AL=           a = b = c = d = e = x = g = h = i = k = l       '= b = '\nvi=             a = b = c = d = e =___= g = h = i = k = l\nva=             a = b = c = d = e ____= g = h = i = k = l\nvI=             a = b = c = d = e = _ = g = h = i = k = l\nvA=             a = b = c = d = e ______g = h = i = k = l\nvin=            a = b = c = d = e = x =___= h = i = k = l\nvan=            a = b = c = d = e = x ____= h = i = k = l\nvIn=            a = b = c = d = e = x = _ = h = i = k = l\nvAn=            a = b = c = d = e = x ______h = i = k = l\nvil=            a = b = c = d =___= x = g = h = i = k = l\nval=            a = b = c = d ____= x = g = h = i = k = l\nvIl=            a = b = c = d = _ = x = g = h = i = k = l\nvAl=            a = b = c = d ______x = g = h = i = k = l\nviN=            a = b = c = d = e = x = g =___= i = k = l\nvaN=            a = b = c = d = e = x = g ____= i = k = l\nvIN=            a = b = c = d = e = x = g = _ = i = k = l\nvAN=            a = b = c = d = e = x = g ______i = k = l\nviL=            a = b = c =___= e = x = g = h = i = k = l\nvaL=            a = b = c ____= e = x = g = h = i = k = l\nvIL=            a = b = c = _ = e = x = g = h = i = k = l\nvAL=            a = b = c ______e = x = g = h = i = k = l\nv1i=            a = b = c = d = e =___= g = h = i = k = l\nv1a=            a = b = c = d = e ____= g = h = i = k = l\nv1I=            a = b = c = d = e = _ = g = h = i = k = l\nv1A=            a = b = c = d = e ______g = h = i = k = l\nv1in=           a = b = c = d = e = x =___= h = i = k = l\nv1an=           a = b = c = d = e = x ____= h = i = k = l\nv1In=           a = b = c = d = e = x = _ = h = i = k = l\nv1An=           a = b = c = d = e = x ______h = i = k = l\nv1il=           a = b = c = d =___= x = g = h = i = k = l\nv1al=           a = b = c = d ____= x = g = h = i = k = l\nv1Il=           a = b = c = d = _ = x = g = h = i = k = l\nv1Al=           a = b = c = d ______x = g = h = i = k = l\nv1iN=           a = b = c = d = e = x = g =___= i = k = l\nv1aN=           a = b = c = d = e = x = g ____= i = k = l\nv1IN=           a = b = c = d = e = x = g = _ = i = k = l\nv1AN=           a = b = c = d = e = x = g ______i = k = l\nv1iL=           a = b = c =___= e = x = g = h = i = k = l\nv1aL=           a = b = c ____= e = x = g = h = i = k = l\nv1IL=           a = b = c = _ = e = x = g = h = i = k = l\nv1AL=           a = b = c ______e = x = g = h = i = k = l\nv2i=            a = b = c = d = e =___= g = h = i = k = l\nv2a=            a = b = c = d = e ____= g = h = i = k = l\nv2I=            a = b = c = d = e = _ = g = h = i = k = l\nv2A=            a = b = c = d = e ______g = h = i = k = l\nv2in=           a = b = c = d = e = x = g =___= i = k = l\nv2an=           a = b = c = d = e = x = g ____= i = k = l\nv2In=           a = b = c = d = e = x = g = _ = i = k = l\nv2An=           a = b = c = d = e = x = g ______i = k = l\nv2il=           a = b = c =___= e = x = g = h = i = k = l\nv2al=           a = b = c ____= e = x = g = h = i = k = l\nv2Il=           a = b = c = _ = e = x = g = h = i = k = l\nv2Al=           a = b = c ______e = x = g = h = i = k = l\nv2iN=           a = b = c = d = e = x = g = h = i =___= l\nv2aN=           a = b = c = d = e = x = g = h = i ____= l\nv2IN=           a = b = c = d = e = x = g = h = i = _ = l\nv2AN=           a = b = c = d = e = x = g = h = i ______l\nv2iL=           a =___= c = d = e = x = g = h = i = k = l\nv2aL=           a ____= c = d = e = x = g = h = i = k = l\nv2IL=           a = _ = c = d = e = x = g = h = i = k = l\nv2AL=           a ______c = d = e = x = g = h = i = k = l\na ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nci~             a ~ b ~ c ~ d ~ e ~_~ g ~ h ~ i ~ k ~ l\nca~             a ~ b ~ c ~ d ~ e _~ g ~ h ~ i ~ k ~ l\ncI~             a ~ b ~ c ~ d ~ e ~ _ ~ g ~ h ~ i ~ k ~ l\ncA~             a ~ b ~ c ~ d ~ e _g ~ h ~ i ~ k ~ l\ncin~            a ~ b ~ c ~ d ~ e ~ x ~_~ h ~ i ~ k ~ l\ncan~            a ~ b ~ c ~ d ~ e ~ x _~ h ~ i ~ k ~ l\ncIn~            a ~ b ~ c ~ d ~ e ~ x ~ _ ~ h ~ i ~ k ~ l\ncAn~            a ~ b ~ c ~ d ~ e ~ x _h ~ i ~ k ~ l\ncil~            a ~ b ~ c ~ d ~_~ x ~ g ~ h ~ i ~ k ~ l\ncal~            a ~ b ~ c ~ d _~ x ~ g ~ h ~ i ~ k ~ l\ncIl~            a ~ b ~ c ~ d ~ _ ~ x ~ g ~ h ~ i ~ k ~ l\ncAl~            a ~ b ~ c ~ d _x ~ g ~ h ~ i ~ k ~ l\nciN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~_~ i ~ k ~ l\ncaN~            a ~ b ~ c ~ d ~ e ~ x ~ g _~ i ~ k ~ l\ncIN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ _ ~ i ~ k ~ l\ncAN~            a ~ b ~ c ~ d ~ e ~ x ~ g _i ~ k ~ l\nciL~            a ~ b ~ c ~_~ e ~ x ~ g ~ h ~ i ~ k ~ l\ncaL~            a ~ b ~ c _~ e ~ x ~ g ~ h ~ i ~ k ~ l\ncIL~            a ~ b ~ c ~ _ ~ e ~ x ~ g ~ h ~ i ~ k ~ l\ncAL~            a ~ b ~ c _e ~ x ~ g ~ h ~ i ~ k ~ l\nc1i~            a ~ b ~ c ~ d ~ e ~_~ g ~ h ~ i ~ k ~ l\nc1a~            a ~ b ~ c ~ d ~ e _~ g ~ h ~ i ~ k ~ l\nc1I~            a ~ b ~ c ~ d ~ e ~ _ ~ g ~ h ~ i ~ k ~ l\nc1A~            a ~ b ~ c ~ d ~ e _g ~ h ~ i ~ k ~ l\nc1in~           a ~ b ~ c ~ d ~ e ~ x ~_~ h ~ i ~ k ~ l\nc1an~           a ~ b ~ c ~ d ~ e ~ x _~ h ~ i ~ k ~ l\nc1In~           a ~ b ~ c ~ d ~ e ~ x ~ _ ~ h ~ i ~ k ~ l\nc1An~           a ~ b ~ c ~ d ~ e ~ x _h ~ i ~ k ~ l\nc1il~           a ~ b ~ c ~ d ~_~ x ~ g ~ h ~ i ~ k ~ l\nc1al~           a ~ b ~ c ~ d _~ x ~ g ~ h ~ i ~ k ~ l\nc1Il~           a ~ b ~ c ~ d ~ _ ~ x ~ g ~ h ~ i ~ k ~ l\nc1Al~           a ~ b ~ c ~ d _x ~ g ~ h ~ i ~ k ~ l\nc1iN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~_~ i ~ k ~ l\nc1aN~           a ~ b ~ c ~ d ~ e ~ x ~ g _~ i ~ k ~ l\nc1IN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ _ ~ i ~ k ~ l\nc1AN~           a ~ b ~ c ~ d ~ e ~ x ~ g _i ~ k ~ l\nc1iL~           a ~ b ~ c ~_~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc1aL~           a ~ b ~ c _~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc1IL~           a ~ b ~ c ~ _ ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc1AL~           a ~ b ~ c _e ~ x ~ g ~ h ~ i ~ k ~ l\nc2i~            a ~ b ~ c ~ d ~ e ~_~ g ~ h ~ i ~ k ~ l\nc2a~            a ~ b ~ c ~ d ~ e _~ g ~ h ~ i ~ k ~ l\nc2I~            a ~ b ~ c ~ d ~ e ~ _ ~ g ~ h ~ i ~ k ~ l\nc2A~            a ~ b ~ c ~ d ~ e _g ~ h ~ i ~ k ~ l\nc2in~           a ~ b ~ c ~ d ~ e ~ x ~ g ~_~ i ~ k ~ l\nc2an~           a ~ b ~ c ~ d ~ e ~ x ~ g _~ i ~ k ~ l\nc2In~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ _ ~ i ~ k ~ l\nc2An~           a ~ b ~ c ~ d ~ e ~ x ~ g _i ~ k ~ l\nc2il~           a ~ b ~ c ~_~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc2al~           a ~ b ~ c _~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc2Il~           a ~ b ~ c ~ _ ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc2Al~           a ~ b ~ c _e ~ x ~ g ~ h ~ i ~ k ~ l\nc2iN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~_~ l\nc2aN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i _~ l\nc2IN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ _ ~ l\nc2AN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i _l\nc2iL~           a ~_~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc2aL~           a _~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc2IL~           a ~ _ ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc2AL~           a _c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\ndi~             a ~ b ~ c ~ d ~ e ~~ g ~ h ~ i ~ k ~ l\nda~             a ~ b ~ c ~ d ~ e ~ g ~ h ~ i ~ k ~ l\ndI~             a ~ b ~ c ~ d ~ e ~  ~ g ~ h ~ i ~ k ~ l\ndA~             a ~ b ~ c ~ d ~ e g ~ h ~ i ~ k ~ l\ndin~            a ~ b ~ c ~ d ~ e ~ x ~~ h ~ i ~ k ~ l\ndan~            a ~ b ~ c ~ d ~ e ~ x ~ h ~ i ~ k ~ l\ndIn~            a ~ b ~ c ~ d ~ e ~ x ~  ~ h ~ i ~ k ~ l\ndAn~            a ~ b ~ c ~ d ~ e ~ x h ~ i ~ k ~ l\ndil~            a ~ b ~ c ~ d ~~ x ~ g ~ h ~ i ~ k ~ l\ndal~            a ~ b ~ c ~ d ~ x ~ g ~ h ~ i ~ k ~ l\ndIl~            a ~ b ~ c ~ d ~  ~ x ~ g ~ h ~ i ~ k ~ l\ndAl~            a ~ b ~ c ~ d x ~ g ~ h ~ i ~ k ~ l\ndiN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~~ i ~ k ~ l\ndaN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ i ~ k ~ l\ndIN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~  ~ i ~ k ~ l\ndAN~            a ~ b ~ c ~ d ~ e ~ x ~ g i ~ k ~ l\ndiL~            a ~ b ~ c ~~ e ~ x ~ g ~ h ~ i ~ k ~ l\ndaL~            a ~ b ~ c ~ e ~ x ~ g ~ h ~ i ~ k ~ l\ndIL~            a ~ b ~ c ~  ~ e ~ x ~ g ~ h ~ i ~ k ~ l\ndAL~            a ~ b ~ c e ~ x ~ g ~ h ~ i ~ k ~ l\nd1i~            a ~ b ~ c ~ d ~ e ~~ g ~ h ~ i ~ k ~ l\nd1a~            a ~ b ~ c ~ d ~ e ~ g ~ h ~ i ~ k ~ l\nd1I~            a ~ b ~ c ~ d ~ e ~  ~ g ~ h ~ i ~ k ~ l\nd1A~            a ~ b ~ c ~ d ~ e g ~ h ~ i ~ k ~ l\nd1in~           a ~ b ~ c ~ d ~ e ~ x ~~ h ~ i ~ k ~ l\nd1an~           a ~ b ~ c ~ d ~ e ~ x ~ h ~ i ~ k ~ l\nd1In~           a ~ b ~ c ~ d ~ e ~ x ~  ~ h ~ i ~ k ~ l\nd1An~           a ~ b ~ c ~ d ~ e ~ x h ~ i ~ k ~ l\nd1il~           a ~ b ~ c ~ d ~~ x ~ g ~ h ~ i ~ k ~ l\nd1al~           a ~ b ~ c ~ d ~ x ~ g ~ h ~ i ~ k ~ l\nd1Il~           a ~ b ~ c ~ d ~  ~ x ~ g ~ h ~ i ~ k ~ l\nd1Al~           a ~ b ~ c ~ d x ~ g ~ h ~ i ~ k ~ l\nd1iN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~~ i ~ k ~ l\nd1aN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ i ~ k ~ l\nd1IN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~  ~ i ~ k ~ l\nd1AN~           a ~ b ~ c ~ d ~ e ~ x ~ g i ~ k ~ l\nd1iL~           a ~ b ~ c ~~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd1aL~           a ~ b ~ c ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd1IL~           a ~ b ~ c ~  ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd1AL~           a ~ b ~ c e ~ x ~ g ~ h ~ i ~ k ~ l\nd2i~            a ~ b ~ c ~ d ~ e ~~ g ~ h ~ i ~ k ~ l\nd2a~            a ~ b ~ c ~ d ~ e ~ g ~ h ~ i ~ k ~ l\nd2I~            a ~ b ~ c ~ d ~ e ~  ~ g ~ h ~ i ~ k ~ l\nd2A~            a ~ b ~ c ~ d ~ e g ~ h ~ i ~ k ~ l\nd2in~           a ~ b ~ c ~ d ~ e ~ x ~ g ~~ i ~ k ~ l\nd2an~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ i ~ k ~ l\nd2In~           a ~ b ~ c ~ d ~ e ~ x ~ g ~  ~ i ~ k ~ l\nd2An~           a ~ b ~ c ~ d ~ e ~ x ~ g i ~ k ~ l\nd2il~           a ~ b ~ c ~~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd2al~           a ~ b ~ c ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd2Il~           a ~ b ~ c ~  ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd2Al~           a ~ b ~ c e ~ x ~ g ~ h ~ i ~ k ~ l\nd2iN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~~ l\nd2aN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ l\nd2IN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~  ~ l\nd2AN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i l\nd2iL~           a ~~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd2aL~           a ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd2IL~           a ~  ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd2AL~           a c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nyi~             a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' x '\nya~             a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ x '\nyI~             a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'x'\nyA~             a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ x ~ '\nyin~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' g '\nyan~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ g '\nyIn~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'g'\nyAn~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ g ~ '\nyil~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' e '\nyal~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ e '\nyIl~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'e'\nyAl~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ e ~ '\nyiN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' h '\nyaN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ h '\nyIN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'h'\nyAN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ h ~ '\nyiL~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' d '\nyaL~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ d '\nyIL~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'd'\nyAL~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ d ~ '\ny1i~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' x '\ny1a~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ x '\ny1I~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'x'\ny1A~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ x ~ '\ny1in~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' g '\ny1an~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ g '\ny1In~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'g'\ny1An~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ g ~ '\ny1il~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' e '\ny1al~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ e '\ny1Il~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'e'\ny1Al~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ e ~ '\ny1iN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' h '\ny1aN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ h '\ny1IN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'h'\ny1AN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ h ~ '\ny1iL~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' d '\ny1aL~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ d '\ny1IL~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'd'\ny1AL~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ d ~ '\ny2i~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' x '\ny2a~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ x '\ny2I~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'x'\ny2A~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ x ~ '\ny2in~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' h '\ny2an~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ h '\ny2In~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'h'\ny2An~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ h ~ '\ny2il~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' d '\ny2al~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ d '\ny2Il~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'd'\ny2Al~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ d ~ '\ny2iN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' k '\ny2aN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ k '\ny2IN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'k'\ny2AN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ k ~ '\ny2iL~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' b '\ny2aL~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ b '\ny2IL~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'b'\ny2AL~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ b ~ '\nvi~             a ~ b ~ c ~ d ~ e ~___~ g ~ h ~ i ~ k ~ l\nva~             a ~ b ~ c ~ d ~ e ____~ g ~ h ~ i ~ k ~ l\nvI~             a ~ b ~ c ~ d ~ e ~ _ ~ g ~ h ~ i ~ k ~ l\nvA~             a ~ b ~ c ~ d ~ e ______g ~ h ~ i ~ k ~ l\nvin~            a ~ b ~ c ~ d ~ e ~ x ~___~ h ~ i ~ k ~ l\nvan~            a ~ b ~ c ~ d ~ e ~ x ____~ h ~ i ~ k ~ l\nvIn~            a ~ b ~ c ~ d ~ e ~ x ~ _ ~ h ~ i ~ k ~ l\nvAn~            a ~ b ~ c ~ d ~ e ~ x ______h ~ i ~ k ~ l\nvil~            a ~ b ~ c ~ d ~___~ x ~ g ~ h ~ i ~ k ~ l\nval~            a ~ b ~ c ~ d ____~ x ~ g ~ h ~ i ~ k ~ l\nvIl~            a ~ b ~ c ~ d ~ _ ~ x ~ g ~ h ~ i ~ k ~ l\nvAl~            a ~ b ~ c ~ d ______x ~ g ~ h ~ i ~ k ~ l\nviN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~___~ i ~ k ~ l\nvaN~            a ~ b ~ c ~ d ~ e ~ x ~ g ____~ i ~ k ~ l\nvIN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ _ ~ i ~ k ~ l\nvAN~            a ~ b ~ c ~ d ~ e ~ x ~ g ______i ~ k ~ l\nviL~            a ~ b ~ c ~___~ e ~ x ~ g ~ h ~ i ~ k ~ l\nvaL~            a ~ b ~ c ____~ e ~ x ~ g ~ h ~ i ~ k ~ l\nvIL~            a ~ b ~ c ~ _ ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nvAL~            a ~ b ~ c ______e ~ x ~ g ~ h ~ i ~ k ~ l\nv1i~            a ~ b ~ c ~ d ~ e ~___~ g ~ h ~ i ~ k ~ l\nv1a~            a ~ b ~ c ~ d ~ e ____~ g ~ h ~ i ~ k ~ l\nv1I~            a ~ b ~ c ~ d ~ e ~ _ ~ g ~ h ~ i ~ k ~ l\nv1A~            a ~ b ~ c ~ d ~ e ______g ~ h ~ i ~ k ~ l\nv1in~           a ~ b ~ c ~ d ~ e ~ x ~___~ h ~ i ~ k ~ l\nv1an~           a ~ b ~ c ~ d ~ e ~ x ____~ h ~ i ~ k ~ l\nv1In~           a ~ b ~ c ~ d ~ e ~ x ~ _ ~ h ~ i ~ k ~ l\nv1An~           a ~ b ~ c ~ d ~ e ~ x ______h ~ i ~ k ~ l\nv1il~           a ~ b ~ c ~ d ~___~ x ~ g ~ h ~ i ~ k ~ l\nv1al~           a ~ b ~ c ~ d ____~ x ~ g ~ h ~ i ~ k ~ l\nv1Il~           a ~ b ~ c ~ d ~ _ ~ x ~ g ~ h ~ i ~ k ~ l\nv1Al~           a ~ b ~ c ~ d ______x ~ g ~ h ~ i ~ k ~ l\nv1iN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~___~ i ~ k ~ l\nv1aN~           a ~ b ~ c ~ d ~ e ~ x ~ g ____~ i ~ k ~ l\nv1IN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ _ ~ i ~ k ~ l\nv1AN~           a ~ b ~ c ~ d ~ e ~ x ~ g ______i ~ k ~ l\nv1iL~           a ~ b ~ c ~___~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv1aL~           a ~ b ~ c ____~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv1IL~           a ~ b ~ c ~ _ ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv1AL~           a ~ b ~ c ______e ~ x ~ g ~ h ~ i ~ k ~ l\nv2i~            a ~ b ~ c ~ d ~ e ~___~ g ~ h ~ i ~ k ~ l\nv2a~            a ~ b ~ c ~ d ~ e ____~ g ~ h ~ i ~ k ~ l\nv2I~            a ~ b ~ c ~ d ~ e ~ _ ~ g ~ h ~ i ~ k ~ l\nv2A~            a ~ b ~ c ~ d ~ e ______g ~ h ~ i ~ k ~ l\nv2in~           a ~ b ~ c ~ d ~ e ~ x ~ g ~___~ i ~ k ~ l\nv2an~           a ~ b ~ c ~ d ~ e ~ x ~ g ____~ i ~ k ~ l\nv2In~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ _ ~ i ~ k ~ l\nv2An~           a ~ b ~ c ~ d ~ e ~ x ~ g ______i ~ k ~ l\nv2il~           a ~ b ~ c ~___~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv2al~           a ~ b ~ c ____~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv2Il~           a ~ b ~ c ~ _ ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv2Al~           a ~ b ~ c ______e ~ x ~ g ~ h ~ i ~ k ~ l\nv2iN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~___~ l\nv2aN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ____~ l\nv2IN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ _ ~ l\nv2AN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ______l\nv2iL~           a ~___~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv2aL~           a ____~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv2IL~           a ~ _ ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv2AL~           a ______c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\na _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l\nci_             a _ b _ c _ d _ e ___ g _ h _ i _ k _ l\nca_             a _ b _ c _ d _ e __ g _ h _ i _ k _ l\ncI_             a _ b _ c _ d _ e _ _ _ g _ h _ i _ k _ l\ncA_             a _ b _ c _ d _ e _g _ h _ i _ k _ l\ncin_            a _ b _ c _ d _ e _ x ___ h _ i _ k _ l\ncan_            a _ b _ c _ d _ e _ x __ h _ i _ k _ l\ncIn_            a _ b _ c _ d _ e _ x _ _ _ h _ i _ k _ l\ncAn_            a _ b _ c _ d _ e _ x _h _ i _ k _ l\ncil_            a _ b _ c _ d ___ x _ g _ h _ i _ k _ l\ncal_            a _ b _ c _ d __ x _ g _ h _ i _ k _ l\ncIl_            a _ b _ c _ d _ _ _ x _ g _ h _ i _ k _ l\ncAl_            a _ b _ c _ d _x _ g _ h _ i _ k _ l\nciN_            a _ b _ c _ d _ e _ x _ g ___ i _ k _ l\ncaN_            a _ b _ c _ d _ e _ x _ g __ i _ k _ l\ncIN_            a _ b _ c _ d _ e _ x _ g _ _ _ i _ k _ l\ncAN_            a _ b _ c _ d _ e _ x _ g _i _ k _ l\nciL_            a _ b _ c ___ e _ x _ g _ h _ i _ k _ l\ncaL_            a _ b _ c __ e _ x _ g _ h _ i _ k _ l\ncIL_            a _ b _ c _ _ _ e _ x _ g _ h _ i _ k _ l\ncAL_            a _ b _ c _e _ x _ g _ h _ i _ k _ l\nc1i_            a _ b _ c _ d _ e ___ g _ h _ i _ k _ l\nc1a_            a _ b _ c _ d _ e __ g _ h _ i _ k _ l\nc1I_            a _ b _ c _ d _ e _ _ _ g _ h _ i _ k _ l\nc1A_            a _ b _ c _ d _ e _g _ h _ i _ k _ l\nc1in_           a _ b _ c _ d _ e _ x ___ h _ i _ k _ l\nc1an_           a _ b _ c _ d _ e _ x __ h _ i _ k _ l\nc1In_           a _ b _ c _ d _ e _ x _ _ _ h _ i _ k _ l\nc1An_           a _ b _ c _ d _ e _ x _h _ i _ k _ l\nc1il_           a _ b _ c _ d ___ x _ g _ h _ i _ k _ l\nc1al_           a _ b _ c _ d __ x _ g _ h _ i _ k _ l\nc1Il_           a _ b _ c _ d _ _ _ x _ g _ h _ i _ k _ l\nc1Al_           a _ b _ c _ d _x _ g _ h _ i _ k _ l\nc1iN_           a _ b _ c _ d _ e _ x _ g ___ i _ k _ l\nc1aN_           a _ b _ c _ d _ e _ x _ g __ i _ k _ l\nc1IN_           a _ b _ c _ d _ e _ x _ g _ _ _ i _ k _ l\nc1AN_           a _ b _ c _ d _ e _ x _ g _i _ k _ l\nc1iL_           a _ b _ c ___ e _ x _ g _ h _ i _ k _ l\nc1aL_           a _ b _ c __ e _ x _ g _ h _ i _ k _ l\nc1IL_           a _ b _ c _ _ _ e _ x _ g _ h _ i _ k _ l\nc1AL_           a _ b _ c _e _ x _ g _ h _ i _ k _ l\nc2i_            a _ b _ c _ d _ e ___ g _ h _ i _ k _ l\nc2a_            a _ b _ c _ d _ e __ g _ h _ i _ k _ l\nc2I_            a _ b _ c _ d _ e _ _ _ g _ h _ i _ k _ l\nc2A_            a _ b _ c _ d _ e _g _ h _ i _ k _ l\nc2in_           a _ b _ c _ d _ e _ x _ g ___ i _ k _ l\nc2an_           a _ b _ c _ d _ e _ x _ g __ i _ k _ l\nc2In_           a _ b _ c _ d _ e _ x _ g _ _ _ i _ k _ l\nc2An_           a _ b _ c _ d _ e _ x _ g _i _ k _ l\nc2il_           a _ b _ c ___ e _ x _ g _ h _ i _ k _ l\nc2al_           a _ b _ c __ e _ x _ g _ h _ i _ k _ l\nc2Il_           a _ b _ c _ _ _ e _ x _ g _ h _ i _ k _ l\nc2Al_           a _ b _ c _e _ x _ g _ h _ i _ k _ l\nc2iN_           a _ b _ c _ d _ e _ x _ g _ h _ i ___ l\nc2aN_           a _ b _ c _ d _ e _ x _ g _ h _ i __ l\nc2IN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ _ _ l\nc2AN_           a _ b _ c _ d _ e _ x _ g _ h _ i _l\nc2iL_           a ___ c _ d _ e _ x _ g _ h _ i _ k _ l\nc2aL_           a __ c _ d _ e _ x _ g _ h _ i _ k _ l\nc2IL_           a _ _ _ c _ d _ e _ x _ g _ h _ i _ k _ l\nc2AL_           a _c _ d _ e _ x _ g _ h _ i _ k _ l\ndi_             a _ b _ c _ d _ e __ g _ h _ i _ k _ l\nda_             a _ b _ c _ d _ e _ g _ h _ i _ k _ l\ndI_             a _ b _ c _ d _ e _  _ g _ h _ i _ k _ l\ndA_             a _ b _ c _ d _ e g _ h _ i _ k _ l\ndin_            a _ b _ c _ d _ e _ x __ h _ i _ k _ l\ndan_            a _ b _ c _ d _ e _ x _ h _ i _ k _ l\ndIn_            a _ b _ c _ d _ e _ x _  _ h _ i _ k _ l\ndAn_            a _ b _ c _ d _ e _ x h _ i _ k _ l\ndil_            a _ b _ c _ d __ x _ g _ h _ i _ k _ l\ndal_            a _ b _ c _ d _ x _ g _ h _ i _ k _ l\ndIl_            a _ b _ c _ d _  _ x _ g _ h _ i _ k _ l\ndAl_            a _ b _ c _ d x _ g _ h _ i _ k _ l\ndiN_            a _ b _ c _ d _ e _ x _ g __ i _ k _ l\ndaN_            a _ b _ c _ d _ e _ x _ g _ i _ k _ l\ndIN_            a _ b _ c _ d _ e _ x _ g _  _ i _ k _ l\ndAN_            a _ b _ c _ d _ e _ x _ g i _ k _ l\ndiL_            a _ b _ c __ e _ x _ g _ h _ i _ k _ l\ndaL_            a _ b _ c _ e _ x _ g _ h _ i _ k _ l\ndIL_            a _ b _ c _  _ e _ x _ g _ h _ i _ k _ l\ndAL_            a _ b _ c e _ x _ g _ h _ i _ k _ l\nd1i_            a _ b _ c _ d _ e __ g _ h _ i _ k _ l\nd1a_            a _ b _ c _ d _ e _ g _ h _ i _ k _ l\nd1I_            a _ b _ c _ d _ e _  _ g _ h _ i _ k _ l\nd1A_            a _ b _ c _ d _ e g _ h _ i _ k _ l\nd1in_           a _ b _ c _ d _ e _ x __ h _ i _ k _ l\nd1an_           a _ b _ c _ d _ e _ x _ h _ i _ k _ l\nd1In_           a _ b _ c _ d _ e _ x _  _ h _ i _ k _ l\nd1An_           a _ b _ c _ d _ e _ x h _ i _ k _ l\nd1il_           a _ b _ c _ d __ x _ g _ h _ i _ k _ l\nd1al_           a _ b _ c _ d _ x _ g _ h _ i _ k _ l\nd1Il_           a _ b _ c _ d _  _ x _ g _ h _ i _ k _ l\nd1Al_           a _ b _ c _ d x _ g _ h _ i _ k _ l\nd1iN_           a _ b _ c _ d _ e _ x _ g __ i _ k _ l\nd1aN_           a _ b _ c _ d _ e _ x _ g _ i _ k _ l\nd1IN_           a _ b _ c _ d _ e _ x _ g _  _ i _ k _ l\nd1AN_           a _ b _ c _ d _ e _ x _ g i _ k _ l\nd1iL_           a _ b _ c __ e _ x _ g _ h _ i _ k _ l\nd1aL_           a _ b _ c _ e _ x _ g _ h _ i _ k _ l\nd1IL_           a _ b _ c _  _ e _ x _ g _ h _ i _ k _ l\nd1AL_           a _ b _ c e _ x _ g _ h _ i _ k _ l\nd2i_            a _ b _ c _ d _ e __ g _ h _ i _ k _ l\nd2a_            a _ b _ c _ d _ e _ g _ h _ i _ k _ l\nd2I_            a _ b _ c _ d _ e _  _ g _ h _ i _ k _ l\nd2A_            a _ b _ c _ d _ e g _ h _ i _ k _ l\nd2in_           a _ b _ c _ d _ e _ x _ g __ i _ k _ l\nd2an_           a _ b _ c _ d _ e _ x _ g _ i _ k _ l\nd2In_           a _ b _ c _ d _ e _ x _ g _  _ i _ k _ l\nd2An_           a _ b _ c _ d _ e _ x _ g i _ k _ l\nd2il_           a _ b _ c __ e _ x _ g _ h _ i _ k _ l\nd2al_           a _ b _ c _ e _ x _ g _ h _ i _ k _ l\nd2Il_           a _ b _ c _  _ e _ x _ g _ h _ i _ k _ l\nd2Al_           a _ b _ c e _ x _ g _ h _ i _ k _ l\nd2iN_           a _ b _ c _ d _ e _ x _ g _ h _ i __ l\nd2aN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ l\nd2IN_           a _ b _ c _ d _ e _ x _ g _ h _ i _  _ l\nd2AN_           a _ b _ c _ d _ e _ x _ g _ h _ i l\nd2iL_           a __ c _ d _ e _ x _ g _ h _ i _ k _ l\nd2aL_           a _ c _ d _ e _ x _ g _ h _ i _ k _ l\nd2IL_           a _  _ c _ d _ e _ x _ g _ h _ i _ k _ l\nd2AL_           a c _ d _ e _ x _ g _ h _ i _ k _ l\nyi_             a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' x '\nya_             a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ x '\nyI_             a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'x'\nyA_             a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ x _ '\nyin_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' g '\nyan_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ g '\nyIn_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'g'\nyAn_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ g _ '\nyil_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' e '\nyal_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ e '\nyIl_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'e'\nyAl_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ e _ '\nyiN_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' h '\nyaN_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ h '\nyIN_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'h'\nyAN_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ h _ '\nyiL_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' d '\nyaL_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ d '\nyIL_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'd'\nyAL_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ d _ '\ny1i_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' x '\ny1a_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ x '\ny1I_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'x'\ny1A_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ x _ '\ny1in_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' g '\ny1an_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ g '\ny1In_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'g'\ny1An_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ g _ '\ny1il_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' e '\ny1al_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ e '\ny1Il_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'e'\ny1Al_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ e _ '\ny1iN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' h '\ny1aN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ h '\ny1IN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'h'\ny1AN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ h _ '\ny1iL_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' d '\ny1aL_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ d '\ny1IL_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'd'\ny1AL_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ d _ '\ny2i_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' x '\ny2a_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ x '\ny2I_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'x'\ny2A_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ x _ '\ny2in_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' h '\ny2an_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ h '\ny2In_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'h'\ny2An_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ h _ '\ny2il_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' d '\ny2al_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ d '\ny2Il_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'd'\ny2Al_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ d _ '\ny2iN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' k '\ny2aN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ k '\ny2IN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'k'\ny2AN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ k _ '\ny2iL_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' b '\ny2aL_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ b '\ny2IL_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'b'\ny2AL_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ b _ '\nvi_             a _ b _ c _ d _ e _____ g _ h _ i _ k _ l\nva_             a _ b _ c _ d _ e _____ g _ h _ i _ k _ l\nvI_             a _ b _ c _ d _ e _ _ _ g _ h _ i _ k _ l\nvA_             a _ b _ c _ d _ e ______g _ h _ i _ k _ l\nvin_            a _ b _ c _ d _ e _ x _____ h _ i _ k _ l\nvan_            a _ b _ c _ d _ e _ x _____ h _ i _ k _ l\nvIn_            a _ b _ c _ d _ e _ x _ _ _ h _ i _ k _ l\nvAn_            a _ b _ c _ d _ e _ x ______h _ i _ k _ l\nvil_            a _ b _ c _ d _____ x _ g _ h _ i _ k _ l\nval_            a _ b _ c _ d _____ x _ g _ h _ i _ k _ l\nvIl_            a _ b _ c _ d _ _ _ x _ g _ h _ i _ k _ l\nvAl_            a _ b _ c _ d ______x _ g _ h _ i _ k _ l\nviN_            a _ b _ c _ d _ e _ x _ g _____ i _ k _ l\nvaN_            a _ b _ c _ d _ e _ x _ g _____ i _ k _ l\nvIN_            a _ b _ c _ d _ e _ x _ g _ _ _ i _ k _ l\nvAN_            a _ b _ c _ d _ e _ x _ g ______i _ k _ l\nviL_            a _ b _ c _____ e _ x _ g _ h _ i _ k _ l\nvaL_            a _ b _ c _____ e _ x _ g _ h _ i _ k _ l\nvIL_            a _ b _ c _ _ _ e _ x _ g _ h _ i _ k _ l\nvAL_            a _ b _ c ______e _ x _ g _ h _ i _ k _ l\nv1i_            a _ b _ c _ d _ e _____ g _ h _ i _ k _ l\nv1a_            a _ b _ c _ d _ e _____ g _ h _ i _ k _ l\nv1I_            a _ b _ c _ d _ e _ _ _ g _ h _ i _ k _ l\nv1A_            a _ b _ c _ d _ e ______g _ h _ i _ k _ l\nv1in_           a _ b _ c _ d _ e _ x _____ h _ i _ k _ l\nv1an_           a _ b _ c _ d _ e _ x _____ h _ i _ k _ l\nv1In_           a _ b _ c _ d _ e _ x _ _ _ h _ i _ k _ l\nv1An_           a _ b _ c _ d _ e _ x ______h _ i _ k _ l\nv1il_           a _ b _ c _ d _____ x _ g _ h _ i _ k _ l\nv1al_           a _ b _ c _ d _____ x _ g _ h _ i _ k _ l\nv1Il_           a _ b _ c _ d _ _ _ x _ g _ h _ i _ k _ l\nv1Al_           a _ b _ c _ d ______x _ g _ h _ i _ k _ l\nv1iN_           a _ b _ c _ d _ e _ x _ g _____ i _ k _ l\nv1aN_           a _ b _ c _ d _ e _ x _ g _____ i _ k _ l\nv1IN_           a _ b _ c _ d _ e _ x _ g _ _ _ i _ k _ l\nv1AN_           a _ b _ c _ d _ e _ x _ g ______i _ k _ l\nv1iL_           a _ b _ c _____ e _ x _ g _ h _ i _ k _ l\nv1aL_           a _ b _ c _____ e _ x _ g _ h _ i _ k _ l\nv1IL_           a _ b _ c _ _ _ e _ x _ g _ h _ i _ k _ l\nv1AL_           a _ b _ c ______e _ x _ g _ h _ i _ k _ l\nv2i_            a _ b _ c _ d _ e _____ g _ h _ i _ k _ l\nv2a_            a _ b _ c _ d _ e _____ g _ h _ i _ k _ l\nv2I_            a _ b _ c _ d _ e _ _ _ g _ h _ i _ k _ l\nv2A_            a _ b _ c _ d _ e ______g _ h _ i _ k _ l\nv2in_           a _ b _ c _ d _ e _ x _ g _____ i _ k _ l\nv2an_           a _ b _ c _ d _ e _ x _ g _____ i _ k _ l\nv2In_           a _ b _ c _ d _ e _ x _ g _ _ _ i _ k _ l\nv2An_           a _ b _ c _ d _ e _ x _ g ______i _ k _ l\nv2il_           a _ b _ c _____ e _ x _ g _ h _ i _ k _ l\nv2al_           a _ b _ c _____ e _ x _ g _ h _ i _ k _ l\nv2Il_           a _ b _ c _ _ _ e _ x _ g _ h _ i _ k _ l\nv2Al_           a _ b _ c ______e _ x _ g _ h _ i _ k _ l\nv2iN_           a _ b _ c _ d _ e _ x _ g _ h _ i _____ l\nv2aN_           a _ b _ c _ d _ e _ x _ g _ h _ i _____ l\nv2IN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ _ _ l\nv2AN_           a _ b _ c _ d _ e _ x _ g _ h _ i ______l\nv2iL_           a _____ c _ d _ e _ x _ g _ h _ i _ k _ l\nv2aL_           a _____ c _ d _ e _ x _ g _ h _ i _ k _ l\nv2IL_           a _ _ _ c _ d _ e _ x _ g _ h _ i _ k _ l\nv2AL_           a ______c _ d _ e _ x _ g _ h _ i _ k _ l\na * b * c * d * e * x * g * h * i * k * l\nci*             a * b * c * d * e *_* g * h * i * k * l\nca*             a * b * c * d * e _* g * h * i * k * l\ncI*             a * b * c * d * e * _ * g * h * i * k * l\ncA*             a * b * c * d * e _g * h * i * k * l\ncin*            a * b * c * d * e * x *_* h * i * k * l\ncan*            a * b * c * d * e * x _* h * i * k * l\ncIn*            a * b * c * d * e * x * _ * h * i * k * l\ncAn*            a * b * c * d * e * x _h * i * k * l\ncil*            a * b * c * d *_* x * g * h * i * k * l\ncal*            a * b * c * d _* x * g * h * i * k * l\ncIl*            a * b * c * d * _ * x * g * h * i * k * l\ncAl*            a * b * c * d _x * g * h * i * k * l\nciN*            a * b * c * d * e * x * g *_* i * k * l\ncaN*            a * b * c * d * e * x * g _* i * k * l\ncIN*            a * b * c * d * e * x * g * _ * i * k * l\ncAN*            a * b * c * d * e * x * g _i * k * l\nciL*            a * b * c *_* e * x * g * h * i * k * l\ncaL*            a * b * c _* e * x * g * h * i * k * l\ncIL*            a * b * c * _ * e * x * g * h * i * k * l\ncAL*            a * b * c _e * x * g * h * i * k * l\nc1i*            a * b * c * d * e *_* g * h * i * k * l\nc1a*            a * b * c * d * e _* g * h * i * k * l\nc1I*            a * b * c * d * e * _ * g * h * i * k * l\nc1A*            a * b * c * d * e _g * h * i * k * l\nc1in*           a * b * c * d * e * x *_* h * i * k * l\nc1an*           a * b * c * d * e * x _* h * i * k * l\nc1In*           a * b * c * d * e * x * _ * h * i * k * l\nc1An*           a * b * c * d * e * x _h * i * k * l\nc1il*           a * b * c * d *_* x * g * h * i * k * l\nc1al*           a * b * c * d _* x * g * h * i * k * l\nc1Il*           a * b * c * d * _ * x * g * h * i * k * l\nc1Al*           a * b * c * d _x * g * h * i * k * l\nc1iN*           a * b * c * d * e * x * g *_* i * k * l\nc1aN*           a * b * c * d * e * x * g _* i * k * l\nc1IN*           a * b * c * d * e * x * g * _ * i * k * l\nc1AN*           a * b * c * d * e * x * g _i * k * l\nc1iL*           a * b * c *_* e * x * g * h * i * k * l\nc1aL*           a * b * c _* e * x * g * h * i * k * l\nc1IL*           a * b * c * _ * e * x * g * h * i * k * l\nc1AL*           a * b * c _e * x * g * h * i * k * l\nc2i*            a * b * c * d * e *_* g * h * i * k * l\nc2a*            a * b * c * d * e _* g * h * i * k * l\nc2I*            a * b * c * d * e * _ * g * h * i * k * l\nc2A*            a * b * c * d * e _g * h * i * k * l\nc2in*           a * b * c * d * e * x * g *_* i * k * l\nc2an*           a * b * c * d * e * x * g _* i * k * l\nc2In*           a * b * c * d * e * x * g * _ * i * k * l\nc2An*           a * b * c * d * e * x * g _i * k * l\nc2il*           a * b * c *_* e * x * g * h * i * k * l\nc2al*           a * b * c _* e * x * g * h * i * k * l\nc2Il*           a * b * c * _ * e * x * g * h * i * k * l\nc2Al*           a * b * c _e * x * g * h * i * k * l\nc2iN*           a * b * c * d * e * x * g * h * i *_* l\nc2aN*           a * b * c * d * e * x * g * h * i _* l\nc2IN*           a * b * c * d * e * x * g * h * i * _ * l\nc2AN*           a * b * c * d * e * x * g * h * i _l\nc2iL*           a *_* c * d * e * x * g * h * i * k * l\nc2aL*           a _* c * d * e * x * g * h * i * k * l\nc2IL*           a * _ * c * d * e * x * g * h * i * k * l\nc2AL*           a _c * d * e * x * g * h * i * k * l\ndi*             a * b * c * d * e ** g * h * i * k * l\nda*             a * b * c * d * e * g * h * i * k * l\ndI*             a * b * c * d * e *  * g * h * i * k * l\ndA*             a * b * c * d * e g * h * i * k * l\ndin*            a * b * c * d * e * x ** h * i * k * l\ndan*            a * b * c * d * e * x * h * i * k * l\ndIn*            a * b * c * d * e * x *  * h * i * k * l\ndAn*            a * b * c * d * e * x h * i * k * l\ndil*            a * b * c * d ** x * g * h * i * k * l\ndal*            a * b * c * d * x * g * h * i * k * l\ndIl*            a * b * c * d *  * x * g * h * i * k * l\ndAl*            a * b * c * d x * g * h * i * k * l\ndiN*            a * b * c * d * e * x * g ** i * k * l\ndaN*            a * b * c * d * e * x * g * i * k * l\ndIN*            a * b * c * d * e * x * g *  * i * k * l\ndAN*            a * b * c * d * e * x * g i * k * l\ndiL*            a * b * c ** e * x * g * h * i * k * l\ndaL*            a * b * c * e * x * g * h * i * k * l\ndIL*            a * b * c *  * e * x * g * h * i * k * l\ndAL*            a * b * c e * x * g * h * i * k * l\nd1i*            a * b * c * d * e ** g * h * i * k * l\nd1a*            a * b * c * d * e * g * h * i * k * l\nd1I*            a * b * c * d * e *  * g * h * i * k * l\nd1A*            a * b * c * d * e g * h * i * k * l\nd1in*           a * b * c * d * e * x ** h * i * k * l\nd1an*           a * b * c * d * e * x * h * i * k * l\nd1In*           a * b * c * d * e * x *  * h * i * k * l\nd1An*           a * b * c * d * e * x h * i * k * l\nd1il*           a * b * c * d ** x * g * h * i * k * l\nd1al*           a * b * c * d * x * g * h * i * k * l\nd1Il*           a * b * c * d *  * x * g * h * i * k * l\nd1Al*           a * b * c * d x * g * h * i * k * l\nd1iN*           a * b * c * d * e * x * g ** i * k * l\nd1aN*           a * b * c * d * e * x * g * i * k * l\nd1IN*           a * b * c * d * e * x * g *  * i * k * l\nd1AN*           a * b * c * d * e * x * g i * k * l\nd1iL*           a * b * c ** e * x * g * h * i * k * l\nd1aL*           a * b * c * e * x * g * h * i * k * l\nd1IL*           a * b * c *  * e * x * g * h * i * k * l\nd1AL*           a * b * c e * x * g * h * i * k * l\nd2i*            a * b * c * d * e ** g * h * i * k * l\nd2a*            a * b * c * d * e * g * h * i * k * l\nd2I*            a * b * c * d * e *  * g * h * i * k * l\nd2A*            a * b * c * d * e g * h * i * k * l\nd2in*           a * b * c * d * e * x * g ** i * k * l\nd2an*           a * b * c * d * e * x * g * i * k * l\nd2In*           a * b * c * d * e * x * g *  * i * k * l\nd2An*           a * b * c * d * e * x * g i * k * l\nd2il*           a * b * c ** e * x * g * h * i * k * l\nd2al*           a * b * c * e * x * g * h * i * k * l\nd2Il*           a * b * c *  * e * x * g * h * i * k * l\nd2Al*           a * b * c e * x * g * h * i * k * l\nd2iN*           a * b * c * d * e * x * g * h * i ** l\nd2aN*           a * b * c * d * e * x * g * h * i * l\nd2IN*           a * b * c * d * e * x * g * h * i *  * l\nd2AN*           a * b * c * d * e * x * g * h * i l\nd2iL*           a ** c * d * e * x * g * h * i * k * l\nd2aL*           a * c * d * e * x * g * h * i * k * l\nd2IL*           a *  * c * d * e * x * g * h * i * k * l\nd2AL*           a c * d * e * x * g * h * i * k * l\nyi*             a * b * c * d * e * x * g * h * i * k * l       ' x '\nya*             a * b * c * d * e * x * g * h * i * k * l       '* x '\nyI*             a * b * c * d * e * x * g * h * i * k * l       'x'\nyA*             a * b * c * d * e * x * g * h * i * k * l       '* x * '\nyin*            a * b * c * d * e * x * g * h * i * k * l       ' g '\nyan*            a * b * c * d * e * x * g * h * i * k * l       '* g '\nyIn*            a * b * c * d * e * x * g * h * i * k * l       'g'\nyAn*            a * b * c * d * e * x * g * h * i * k * l       '* g * '\nyil*            a * b * c * d * e * x * g * h * i * k * l       ' e '\nyal*            a * b * c * d * e * x * g * h * i * k * l       '* e '\nyIl*            a * b * c * d * e * x * g * h * i * k * l       'e'\nyAl*            a * b * c * d * e * x * g * h * i * k * l       '* e * '\nyiN*            a * b * c * d * e * x * g * h * i * k * l       ' h '\nyaN*            a * b * c * d * e * x * g * h * i * k * l       '* h '\nyIN*            a * b * c * d * e * x * g * h * i * k * l       'h'\nyAN*            a * b * c * d * e * x * g * h * i * k * l       '* h * '\nyiL*            a * b * c * d * e * x * g * h * i * k * l       ' d '\nyaL*            a * b * c * d * e * x * g * h * i * k * l       '* d '\nyIL*            a * b * c * d * e * x * g * h * i * k * l       'd'\nyAL*            a * b * c * d * e * x * g * h * i * k * l       '* d * '\ny1i*            a * b * c * d * e * x * g * h * i * k * l       ' x '\ny1a*            a * b * c * d * e * x * g * h * i * k * l       '* x '\ny1I*            a * b * c * d * e * x * g * h * i * k * l       'x'\ny1A*            a * b * c * d * e * x * g * h * i * k * l       '* x * '\ny1in*           a * b * c * d * e * x * g * h * i * k * l       ' g '\ny1an*           a * b * c * d * e * x * g * h * i * k * l       '* g '\ny1In*           a * b * c * d * e * x * g * h * i * k * l       'g'\ny1An*           a * b * c * d * e * x * g * h * i * k * l       '* g * '\ny1il*           a * b * c * d * e * x * g * h * i * k * l       ' e '\ny1al*           a * b * c * d * e * x * g * h * i * k * l       '* e '\ny1Il*           a * b * c * d * e * x * g * h * i * k * l       'e'\ny1Al*           a * b * c * d * e * x * g * h * i * k * l       '* e * '\ny1iN*           a * b * c * d * e * x * g * h * i * k * l       ' h '\ny1aN*           a * b * c * d * e * x * g * h * i * k * l       '* h '\ny1IN*           a * b * c * d * e * x * g * h * i * k * l       'h'\ny1AN*           a * b * c * d * e * x * g * h * i * k * l       '* h * '\ny1iL*           a * b * c * d * e * x * g * h * i * k * l       ' d '\ny1aL*           a * b * c * d * e * x * g * h * i * k * l       '* d '\ny1IL*           a * b * c * d * e * x * g * h * i * k * l       'd'\ny1AL*           a * b * c * d * e * x * g * h * i * k * l       '* d * '\ny2i*            a * b * c * d * e * x * g * h * i * k * l       ' x '\ny2a*            a * b * c * d * e * x * g * h * i * k * l       '* x '\ny2I*            a * b * c * d * e * x * g * h * i * k * l       'x'\ny2A*            a * b * c * d * e * x * g * h * i * k * l       '* x * '\ny2in*           a * b * c * d * e * x * g * h * i * k * l       ' h '\ny2an*           a * b * c * d * e * x * g * h * i * k * l       '* h '\ny2In*           a * b * c * d * e * x * g * h * i * k * l       'h'\ny2An*           a * b * c * d * e * x * g * h * i * k * l       '* h * '\ny2il*           a * b * c * d * e * x * g * h * i * k * l       ' d '\ny2al*           a * b * c * d * e * x * g * h * i * k * l       '* d '\ny2Il*           a * b * c * d * e * x * g * h * i * k * l       'd'\ny2Al*           a * b * c * d * e * x * g * h * i * k * l       '* d * '\ny2iN*           a * b * c * d * e * x * g * h * i * k * l       ' k '\ny2aN*           a * b * c * d * e * x * g * h * i * k * l       '* k '\ny2IN*           a * b * c * d * e * x * g * h * i * k * l       'k'\ny2AN*           a * b * c * d * e * x * g * h * i * k * l       '* k * '\ny2iL*           a * b * c * d * e * x * g * h * i * k * l       ' b '\ny2aL*           a * b * c * d * e * x * g * h * i * k * l       '* b '\ny2IL*           a * b * c * d * e * x * g * h * i * k * l       'b'\ny2AL*           a * b * c * d * e * x * g * h * i * k * l       '* b * '\nvi*             a * b * c * d * e *___* g * h * i * k * l\nva*             a * b * c * d * e ____* g * h * i * k * l\nvI*             a * b * c * d * e * _ * g * h * i * k * l\nvA*             a * b * c * d * e ______g * h * i * k * l\nvin*            a * b * c * d * e * x *___* h * i * k * l\nvan*            a * b * c * d * e * x ____* h * i * k * l\nvIn*            a * b * c * d * e * x * _ * h * i * k * l\nvAn*            a * b * c * d * e * x ______h * i * k * l\nvil*            a * b * c * d *___* x * g * h * i * k * l\nval*            a * b * c * d ____* x * g * h * i * k * l\nvIl*            a * b * c * d * _ * x * g * h * i * k * l\nvAl*            a * b * c * d ______x * g * h * i * k * l\nviN*            a * b * c * d * e * x * g *___* i * k * l\nvaN*            a * b * c * d * e * x * g ____* i * k * l\nvIN*            a * b * c * d * e * x * g * _ * i * k * l\nvAN*            a * b * c * d * e * x * g ______i * k * l\nviL*            a * b * c *___* e * x * g * h * i * k * l\nvaL*            a * b * c ____* e * x * g * h * i * k * l\nvIL*            a * b * c * _ * e * x * g * h * i * k * l\nvAL*            a * b * c ______e * x * g * h * i * k * l\nv1i*            a * b * c * d * e *___* g * h * i * k * l\nv1a*            a * b * c * d * e ____* g * h * i * k * l\nv1I*            a * b * c * d * e * _ * g * h * i * k * l\nv1A*            a * b * c * d * e ______g * h * i * k * l\nv1in*           a * b * c * d * e * x *___* h * i * k * l\nv1an*           a * b * c * d * e * x ____* h * i * k * l\nv1In*           a * b * c * d * e * x * _ * h * i * k * l\nv1An*           a * b * c * d * e * x ______h * i * k * l\nv1il*           a * b * c * d *___* x * g * h * i * k * l\nv1al*           a * b * c * d ____* x * g * h * i * k * l\nv1Il*           a * b * c * d * _ * x * g * h * i * k * l\nv1Al*           a * b * c * d ______x * g * h * i * k * l\nv1iN*           a * b * c * d * e * x * g *___* i * k * l\nv1aN*           a * b * c * d * e * x * g ____* i * k * l\nv1IN*           a * b * c * d * e * x * g * _ * i * k * l\nv1AN*           a * b * c * d * e * x * g ______i * k * l\nv1iL*           a * b * c *___* e * x * g * h * i * k * l\nv1aL*           a * b * c ____* e * x * g * h * i * k * l\nv1IL*           a * b * c * _ * e * x * g * h * i * k * l\nv1AL*           a * b * c ______e * x * g * h * i * k * l\nv2i*            a * b * c * d * e *___* g * h * i * k * l\nv2a*            a * b * c * d * e ____* g * h * i * k * l\nv2I*            a * b * c * d * e * _ * g * h * i * k * l\nv2A*            a * b * c * d * e ______g * h * i * k * l\nv2in*           a * b * c * d * e * x * g *___* i * k * l\nv2an*           a * b * c * d * e * x * g ____* i * k * l\nv2In*           a * b * c * d * e * x * g * _ * i * k * l\nv2An*           a * b * c * d * e * x * g ______i * k * l\nv2il*           a * b * c *___* e * x * g * h * i * k * l\nv2al*           a * b * c ____* e * x * g * h * i * k * l\nv2Il*           a * b * c * _ * e * x * g * h * i * k * l\nv2Al*           a * b * c ______e * x * g * h * i * k * l\nv2iN*           a * b * c * d * e * x * g * h * i *___* l\nv2aN*           a * b * c * d * e * x * g * h * i ____* l\nv2IN*           a * b * c * d * e * x * g * h * i * _ * l\nv2AN*           a * b * c * d * e * x * g * h * i ______l\nv2iL*           a *___* c * d * e * x * g * h * i * k * l\nv2aL*           a ____* c * d * e * x * g * h * i * k * l\nv2IL*           a * _ * c * d * e * x * g * h * i * k * l\nv2AL*           a ______c * d * e * x * g * h * i * k * l\na / b / c / d / e / x / g / h / i / k / l\nci/             a / b / c / d / e /_/ g / h / i / k / l\nca/             a / b / c / d / e _/ g / h / i / k / l\ncI/             a / b / c / d / e / _ / g / h / i / k / l\ncA/             a / b / c / d / e _g / h / i / k / l\ncin/            a / b / c / d / e / x /_/ h / i / k / l\ncan/            a / b / c / d / e / x _/ h / i / k / l\ncIn/            a / b / c / d / e / x / _ / h / i / k / l\ncAn/            a / b / c / d / e / x _h / i / k / l\ncil/            a / b / c / d /_/ x / g / h / i / k / l\ncal/            a / b / c / d _/ x / g / h / i / k / l\ncIl/            a / b / c / d / _ / x / g / h / i / k / l\ncAl/            a / b / c / d _x / g / h / i / k / l\nciN/            a / b / c / d / e / x / g /_/ i / k / l\ncaN/            a / b / c / d / e / x / g _/ i / k / l\ncIN/            a / b / c / d / e / x / g / _ / i / k / l\ncAN/            a / b / c / d / e / x / g _i / k / l\nciL/            a / b / c /_/ e / x / g / h / i / k / l\ncaL/            a / b / c _/ e / x / g / h / i / k / l\ncIL/            a / b / c / _ / e / x / g / h / i / k / l\ncAL/            a / b / c _e / x / g / h / i / k / l\nc1i/            a / b / c / d / e /_/ g / h / i / k / l\nc1a/            a / b / c / d / e _/ g / h / i / k / l\nc1I/            a / b / c / d / e / _ / g / h / i / k / l\nc1A/            a / b / c / d / e _g / h / i / k / l\nc1in/           a / b / c / d / e / x /_/ h / i / k / l\nc1an/           a / b / c / d / e / x _/ h / i / k / l\nc1In/           a / b / c / d / e / x / _ / h / i / k / l\nc1An/           a / b / c / d / e / x _h / i / k / l\nc1il/           a / b / c / d /_/ x / g / h / i / k / l\nc1al/           a / b / c / d _/ x / g / h / i / k / l\nc1Il/           a / b / c / d / _ / x / g / h / i / k / l\nc1Al/           a / b / c / d _x / g / h / i / k / l\nc1iN/           a / b / c / d / e / x / g /_/ i / k / l\nc1aN/           a / b / c / d / e / x / g _/ i / k / l\nc1IN/           a / b / c / d / e / x / g / _ / i / k / l\nc1AN/           a / b / c / d / e / x / g _i / k / l\nc1iL/           a / b / c /_/ e / x / g / h / i / k / l\nc1aL/           a / b / c _/ e / x / g / h / i / k / l\nc1IL/           a / b / c / _ / e / x / g / h / i / k / l\nc1AL/           a / b / c _e / x / g / h / i / k / l\nc2i/            a / b / c / d / e /_/ g / h / i / k / l\nc2a/            a / b / c / d / e _/ g / h / i / k / l\nc2I/            a / b / c / d / e / _ / g / h / i / k / l\nc2A/            a / b / c / d / e _g / h / i / k / l\nc2in/           a / b / c / d / e / x / g /_/ i / k / l\nc2an/           a / b / c / d / e / x / g _/ i / k / l\nc2In/           a / b / c / d / e / x / g / _ / i / k / l\nc2An/           a / b / c / d / e / x / g _i / k / l\nc2il/           a / b / c /_/ e / x / g / h / i / k / l\nc2al/           a / b / c _/ e / x / g / h / i / k / l\nc2Il/           a / b / c / _ / e / x / g / h / i / k / l\nc2Al/           a / b / c _e / x / g / h / i / k / l\nc2iN/           a / b / c / d / e / x / g / h / i /_/ l\nc2aN/           a / b / c / d / e / x / g / h / i _/ l\nc2IN/           a / b / c / d / e / x / g / h / i / _ / l\nc2AN/           a / b / c / d / e / x / g / h / i _l\nc2iL/           a /_/ c / d / e / x / g / h / i / k / l\nc2aL/           a _/ c / d / e / x / g / h / i / k / l\nc2IL/           a / _ / c / d / e / x / g / h / i / k / l\nc2AL/           a _c / d / e / x / g / h / i / k / l\ndi/             a / b / c / d / e // g / h / i / k / l\nda/             a / b / c / d / e / g / h / i / k / l\ndI/             a / b / c / d / e /  / g / h / i / k / l\ndA/             a / b / c / d / e g / h / i / k / l\ndin/            a / b / c / d / e / x // h / i / k / l\ndan/            a / b / c / d / e / x / h / i / k / l\ndIn/            a / b / c / d / e / x /  / h / i / k / l\ndAn/            a / b / c / d / e / x h / i / k / l\ndil/            a / b / c / d // x / g / h / i / k / l\ndal/            a / b / c / d / x / g / h / i / k / l\ndIl/            a / b / c / d /  / x / g / h / i / k / l\ndAl/            a / b / c / d x / g / h / i / k / l\ndiN/            a / b / c / d / e / x / g // i / k / l\ndaN/            a / b / c / d / e / x / g / i / k / l\ndIN/            a / b / c / d / e / x / g /  / i / k / l\ndAN/            a / b / c / d / e / x / g i / k / l\ndiL/            a / b / c // e / x / g / h / i / k / l\ndaL/            a / b / c / e / x / g / h / i / k / l\ndIL/            a / b / c /  / e / x / g / h / i / k / l\ndAL/            a / b / c e / x / g / h / i / k / l\nd1i/            a / b / c / d / e // g / h / i / k / l\nd1a/            a / b / c / d / e / g / h / i / k / l\nd1I/            a / b / c / d / e /  / g / h / i / k / l\nd1A/            a / b / c / d / e g / h / i / k / l\nd1in/           a / b / c / d / e / x // h / i / k / l\nd1an/           a / b / c / d / e / x / h / i / k / l\nd1In/           a / b / c / d / e / x /  / h / i / k / l\nd1An/           a / b / c / d / e / x h / i / k / l\nd1il/           a / b / c / d // x / g / h / i / k / l\nd1al/           a / b / c / d / x / g / h / i / k / l\nd1Il/           a / b / c / d /  / x / g / h / i / k / l\nd1Al/           a / b / c / d x / g / h / i / k / l\nd1iN/           a / b / c / d / e / x / g // i / k / l\nd1aN/           a / b / c / d / e / x / g / i / k / l\nd1IN/           a / b / c / d / e / x / g /  / i / k / l\nd1AN/           a / b / c / d / e / x / g i / k / l\nd1iL/           a / b / c // e / x / g / h / i / k / l\nd1aL/           a / b / c / e / x / g / h / i / k / l\nd1IL/           a / b / c /  / e / x / g / h / i / k / l\nd1AL/           a / b / c e / x / g / h / i / k / l\nd2i/            a / b / c / d / e // g / h / i / k / l\nd2a/            a / b / c / d / e / g / h / i / k / l\nd2I/            a / b / c / d / e /  / g / h / i / k / l\nd2A/            a / b / c / d / e g / h / i / k / l\nd2in/           a / b / c / d / e / x / g // i / k / l\nd2an/           a / b / c / d / e / x / g / i / k / l\nd2In/           a / b / c / d / e / x / g /  / i / k / l\nd2An/           a / b / c / d / e / x / g i / k / l\nd2il/           a / b / c // e / x / g / h / i / k / l\nd2al/           a / b / c / e / x / g / h / i / k / l\nd2Il/           a / b / c /  / e / x / g / h / i / k / l\nd2Al/           a / b / c e / x / g / h / i / k / l\nd2iN/           a / b / c / d / e / x / g / h / i // l\nd2aN/           a / b / c / d / e / x / g / h / i / l\nd2IN/           a / b / c / d / e / x / g / h / i /  / l\nd2AN/           a / b / c / d / e / x / g / h / i l\nd2iL/           a // c / d / e / x / g / h / i / k / l\nd2aL/           a / c / d / e / x / g / h / i / k / l\nd2IL/           a /  / c / d / e / x / g / h / i / k / l\nd2AL/           a c / d / e / x / g / h / i / k / l\nyi/             a / b / c / d / e / x / g / h / i / k / l       ' x '\nya/             a / b / c / d / e / x / g / h / i / k / l       '/ x '\nyI/             a / b / c / d / e / x / g / h / i / k / l       'x'\nyA/             a / b / c / d / e / x / g / h / i / k / l       '/ x / '\nyin/            a / b / c / d / e / x / g / h / i / k / l       ' g '\nyan/            a / b / c / d / e / x / g / h / i / k / l       '/ g '\nyIn/            a / b / c / d / e / x / g / h / i / k / l       'g'\nyAn/            a / b / c / d / e / x / g / h / i / k / l       '/ g / '\nyil/            a / b / c / d / e / x / g / h / i / k / l       ' e '\nyal/            a / b / c / d / e / x / g / h / i / k / l       '/ e '\nyIl/            a / b / c / d / e / x / g / h / i / k / l       'e'\nyAl/            a / b / c / d / e / x / g / h / i / k / l       '/ e / '\nyiN/            a / b / c / d / e / x / g / h / i / k / l       ' h '\nyaN/            a / b / c / d / e / x / g / h / i / k / l       '/ h '\nyIN/            a / b / c / d / e / x / g / h / i / k / l       'h'\nyAN/            a / b / c / d / e / x / g / h / i / k / l       '/ h / '\nyiL/            a / b / c / d / e / x / g / h / i / k / l       ' d '\nyaL/            a / b / c / d / e / x / g / h / i / k / l       '/ d '\nyIL/            a / b / c / d / e / x / g / h / i / k / l       'd'\nyAL/            a / b / c / d / e / x / g / h / i / k / l       '/ d / '\ny1i/            a / b / c / d / e / x / g / h / i / k / l       ' x '\ny1a/            a / b / c / d / e / x / g / h / i / k / l       '/ x '\ny1I/            a / b / c / d / e / x / g / h / i / k / l       'x'\ny1A/            a / b / c / d / e / x / g / h / i / k / l       '/ x / '\ny1in/           a / b / c / d / e / x / g / h / i / k / l       ' g '\ny1an/           a / b / c / d / e / x / g / h / i / k / l       '/ g '\ny1In/           a / b / c / d / e / x / g / h / i / k / l       'g'\ny1An/           a / b / c / d / e / x / g / h / i / k / l       '/ g / '\ny1il/           a / b / c / d / e / x / g / h / i / k / l       ' e '\ny1al/           a / b / c / d / e / x / g / h / i / k / l       '/ e '\ny1Il/           a / b / c / d / e / x / g / h / i / k / l       'e'\ny1Al/           a / b / c / d / e / x / g / h / i / k / l       '/ e / '\ny1iN/           a / b / c / d / e / x / g / h / i / k / l       ' h '\ny1aN/           a / b / c / d / e / x / g / h / i / k / l       '/ h '\ny1IN/           a / b / c / d / e / x / g / h / i / k / l       'h'\ny1AN/           a / b / c / d / e / x / g / h / i / k / l       '/ h / '\ny1iL/           a / b / c / d / e / x / g / h / i / k / l       ' d '\ny1aL/           a / b / c / d / e / x / g / h / i / k / l       '/ d '\ny1IL/           a / b / c / d / e / x / g / h / i / k / l       'd'\ny1AL/           a / b / c / d / e / x / g / h / i / k / l       '/ d / '\ny2i/            a / b / c / d / e / x / g / h / i / k / l       ' x '\ny2a/            a / b / c / d / e / x / g / h / i / k / l       '/ x '\ny2I/            a / b / c / d / e / x / g / h / i / k / l       'x'\ny2A/            a / b / c / d / e / x / g / h / i / k / l       '/ x / '\ny2in/           a / b / c / d / e / x / g / h / i / k / l       ' h '\ny2an/           a / b / c / d / e / x / g / h / i / k / l       '/ h '\ny2In/           a / b / c / d / e / x / g / h / i / k / l       'h'\ny2An/           a / b / c / d / e / x / g / h / i / k / l       '/ h / '\ny2il/           a / b / c / d / e / x / g / h / i / k / l       ' d '\ny2al/           a / b / c / d / e / x / g / h / i / k / l       '/ d '\ny2Il/           a / b / c / d / e / x / g / h / i / k / l       'd'\ny2Al/           a / b / c / d / e / x / g / h / i / k / l       '/ d / '\ny2iN/           a / b / c / d / e / x / g / h / i / k / l       ' k '\ny2aN/           a / b / c / d / e / x / g / h / i / k / l       '/ k '\ny2IN/           a / b / c / d / e / x / g / h / i / k / l       'k'\ny2AN/           a / b / c / d / e / x / g / h / i / k / l       '/ k / '\ny2iL/           a / b / c / d / e / x / g / h / i / k / l       ' b '\ny2aL/           a / b / c / d / e / x / g / h / i / k / l       '/ b '\ny2IL/           a / b / c / d / e / x / g / h / i / k / l       'b'\ny2AL/           a / b / c / d / e / x / g / h / i / k / l       '/ b / '\nvi/             a / b / c / d / e /___/ g / h / i / k / l\nva/             a / b / c / d / e ____/ g / h / i / k / l\nvI/             a / b / c / d / e / _ / g / h / i / k / l\nvA/             a / b / c / d / e ______g / h / i / k / l\nvin/            a / b / c / d / e / x /___/ h / i / k / l\nvan/            a / b / c / d / e / x ____/ h / i / k / l\nvIn/            a / b / c / d / e / x / _ / h / i / k / l\nvAn/            a / b / c / d / e / x ______h / i / k / l\nvil/            a / b / c / d /___/ x / g / h / i / k / l\nval/            a / b / c / d ____/ x / g / h / i / k / l\nvIl/            a / b / c / d / _ / x / g / h / i / k / l\nvAl/            a / b / c / d ______x / g / h / i / k / l\nviN/            a / b / c / d / e / x / g /___/ i / k / l\nvaN/            a / b / c / d / e / x / g ____/ i / k / l\nvIN/            a / b / c / d / e / x / g / _ / i / k / l\nvAN/            a / b / c / d / e / x / g ______i / k / l\nviL/            a / b / c /___/ e / x / g / h / i / k / l\nvaL/            a / b / c ____/ e / x / g / h / i / k / l\nvIL/            a / b / c / _ / e / x / g / h / i / k / l\nvAL/            a / b / c ______e / x / g / h / i / k / l\nv1i/            a / b / c / d / e /___/ g / h / i / k / l\nv1a/            a / b / c / d / e ____/ g / h / i / k / l\nv1I/            a / b / c / d / e / _ / g / h / i / k / l\nv1A/            a / b / c / d / e ______g / h / i / k / l\nv1in/           a / b / c / d / e / x /___/ h / i / k / l\nv1an/           a / b / c / d / e / x ____/ h / i / k / l\nv1In/           a / b / c / d / e / x / _ / h / i / k / l\nv1An/           a / b / c / d / e / x ______h / i / k / l\nv1il/           a / b / c / d /___/ x / g / h / i / k / l\nv1al/           a / b / c / d ____/ x / g / h / i / k / l\nv1Il/           a / b / c / d / _ / x / g / h / i / k / l\nv1Al/           a / b / c / d ______x / g / h / i / k / l\nv1iN/           a / b / c / d / e / x / g /___/ i / k / l\nv1aN/           a / b / c / d / e / x / g ____/ i / k / l\nv1IN/           a / b / c / d / e / x / g / _ / i / k / l\nv1AN/           a / b / c / d / e / x / g ______i / k / l\nv1iL/           a / b / c /___/ e / x / g / h / i / k / l\nv1aL/           a / b / c ____/ e / x / g / h / i / k / l\nv1IL/           a / b / c / _ / e / x / g / h / i / k / l\nv1AL/           a / b / c ______e / x / g / h / i / k / l\nv2i/            a / b / c / d / e /___/ g / h / i / k / l\nv2a/            a / b / c / d / e ____/ g / h / i / k / l\nv2I/            a / b / c / d / e / _ / g / h / i / k / l\nv2A/            a / b / c / d / e ______g / h / i / k / l\nv2in/           a / b / c / d / e / x / g /___/ i / k / l\nv2an/           a / b / c / d / e / x / g ____/ i / k / l\nv2In/           a / b / c / d / e / x / g / _ / i / k / l\nv2An/           a / b / c / d / e / x / g ______i / k / l\nv2il/           a / b / c /___/ e / x / g / h / i / k / l\nv2al/           a / b / c ____/ e / x / g / h / i / k / l\nv2Il/           a / b / c / _ / e / x / g / h / i / k / l\nv2Al/           a / b / c ______e / x / g / h / i / k / l\nv2iN/           a / b / c / d / e / x / g / h / i /___/ l\nv2aN/           a / b / c / d / e / x / g / h / i ____/ l\nv2IN/           a / b / c / d / e / x / g / h / i / _ / l\nv2AN/           a / b / c / d / e / x / g / h / i ______l\nv2iL/           a /___/ c / d / e / x / g / h / i / k / l\nv2aL/           a ____/ c / d / e / x / g / h / i / k / l\nv2IL/           a / _ / c / d / e / x / g / h / i / k / l\nv2AL/           a ______c / d / e / x / g / h / i / k / l\na | b | c | d | e | x | g | h | i | k | l\nci|             a | b | c | d | e |_| g | h | i | k | l\nca|             a | b | c | d | e _| g | h | i | k | l\ncI|             a | b | c | d | e | _ | g | h | i | k | l\ncA|             a | b | c | d | e _g | h | i | k | l\ncin|            a | b | c | d | e | x |_| h | i | k | l\ncan|            a | b | c | d | e | x _| h | i | k | l\ncIn|            a | b | c | d | e | x | _ | h | i | k | l\ncAn|            a | b | c | d | e | x _h | i | k | l\ncil|            a | b | c | d |_| x | g | h | i | k | l\ncal|            a | b | c | d _| x | g | h | i | k | l\ncIl|            a | b | c | d | _ | x | g | h | i | k | l\ncAl|            a | b | c | d _x | g | h | i | k | l\nciN|            a | b | c | d | e | x | g |_| i | k | l\ncaN|            a | b | c | d | e | x | g _| i | k | l\ncIN|            a | b | c | d | e | x | g | _ | i | k | l\ncAN|            a | b | c | d | e | x | g _i | k | l\nciL|            a | b | c |_| e | x | g | h | i | k | l\ncaL|            a | b | c _| e | x | g | h | i | k | l\ncIL|            a | b | c | _ | e | x | g | h | i | k | l\ncAL|            a | b | c _e | x | g | h | i | k | l\nc1i|            a | b | c | d | e |_| g | h | i | k | l\nc1a|            a | b | c | d | e _| g | h | i | k | l\nc1I|            a | b | c | d | e | _ | g | h | i | k | l\nc1A|            a | b | c | d | e _g | h | i | k | l\nc1in|           a | b | c | d | e | x |_| h | i | k | l\nc1an|           a | b | c | d | e | x _| h | i | k | l\nc1In|           a | b | c | d | e | x | _ | h | i | k | l\nc1An|           a | b | c | d | e | x _h | i | k | l\nc1il|           a | b | c | d |_| x | g | h | i | k | l\nc1al|           a | b | c | d _| x | g | h | i | k | l\nc1Il|           a | b | c | d | _ | x | g | h | i | k | l\nc1Al|           a | b | c | d _x | g | h | i | k | l\nc1iN|           a | b | c | d | e | x | g |_| i | k | l\nc1aN|           a | b | c | d | e | x | g _| i | k | l\nc1IN|           a | b | c | d | e | x | g | _ | i | k | l\nc1AN|           a | b | c | d | e | x | g _i | k | l\nc1iL|           a | b | c |_| e | x | g | h | i | k | l\nc1aL|           a | b | c _| e | x | g | h | i | k | l\nc1IL|           a | b | c | _ | e | x | g | h | i | k | l\nc1AL|           a | b | c _e | x | g | h | i | k | l\nc2i|            a | b | c | d | e |_| g | h | i | k | l\nc2a|            a | b | c | d | e _| g | h | i | k | l\nc2I|            a | b | c | d | e | _ | g | h | i | k | l\nc2A|            a | b | c | d | e _g | h | i | k | l\nc2in|           a | b | c | d | e | x | g |_| i | k | l\nc2an|           a | b | c | d | e | x | g _| i | k | l\nc2In|           a | b | c | d | e | x | g | _ | i | k | l\nc2An|           a | b | c | d | e | x | g _i | k | l\nc2il|           a | b | c |_| e | x | g | h | i | k | l\nc2al|           a | b | c _| e | x | g | h | i | k | l\nc2Il|           a | b | c | _ | e | x | g | h | i | k | l\nc2Al|           a | b | c _e | x | g | h | i | k | l\nc2iN|           a | b | c | d | e | x | g | h | i |_| l\nc2aN|           a | b | c | d | e | x | g | h | i _| l\nc2IN|           a | b | c | d | e | x | g | h | i | _ | l\nc2AN|           a | b | c | d | e | x | g | h | i _l\nc2iL|           a |_| c | d | e | x | g | h | i | k | l\nc2aL|           a _| c | d | e | x | g | h | i | k | l\nc2IL|           a | _ | c | d | e | x | g | h | i | k | l\nc2AL|           a _c | d | e | x | g | h | i | k | l\ndi|             a | b | c | d | e || g | h | i | k | l\nda|             a | b | c | d | e | g | h | i | k | l\ndI|             a | b | c | d | e |  | g | h | i | k | l\ndA|             a | b | c | d | e g | h | i | k | l\ndin|            a | b | c | d | e | x || h | i | k | l\ndan|            a | b | c | d | e | x | h | i | k | l\ndIn|            a | b | c | d | e | x |  | h | i | k | l\ndAn|            a | b | c | d | e | x h | i | k | l\ndil|            a | b | c | d || x | g | h | i | k | l\ndal|            a | b | c | d | x | g | h | i | k | l\ndIl|            a | b | c | d |  | x | g | h | i | k | l\ndAl|            a | b | c | d x | g | h | i | k | l\ndiN|            a | b | c | d | e | x | g || i | k | l\ndaN|            a | b | c | d | e | x | g | i | k | l\ndIN|            a | b | c | d | e | x | g |  | i | k | l\ndAN|            a | b | c | d | e | x | g i | k | l\ndiL|            a | b | c || e | x | g | h | i | k | l\ndaL|            a | b | c | e | x | g | h | i | k | l\ndIL|            a | b | c |  | e | x | g | h | i | k | l\ndAL|            a | b | c e | x | g | h | i | k | l\nd1i|            a | b | c | d | e || g | h | i | k | l\nd1a|            a | b | c | d | e | g | h | i | k | l\nd1I|            a | b | c | d | e |  | g | h | i | k | l\nd1A|            a | b | c | d | e g | h | i | k | l\nd1in|           a | b | c | d | e | x || h | i | k | l\nd1an|           a | b | c | d | e | x | h | i | k | l\nd1In|           a | b | c | d | e | x |  | h | i | k | l\nd1An|           a | b | c | d | e | x h | i | k | l\nd1il|           a | b | c | d || x | g | h | i | k | l\nd1al|           a | b | c | d | x | g | h | i | k | l\nd1Il|           a | b | c | d |  | x | g | h | i | k | l\nd1Al|           a | b | c | d x | g | h | i | k | l\nd1iN|           a | b | c | d | e | x | g || i | k | l\nd1aN|           a | b | c | d | e | x | g | i | k | l\nd1IN|           a | b | c | d | e | x | g |  | i | k | l\nd1AN|           a | b | c | d | e | x | g i | k | l\nd1iL|           a | b | c || e | x | g | h | i | k | l\nd1aL|           a | b | c | e | x | g | h | i | k | l\nd1IL|           a | b | c |  | e | x | g | h | i | k | l\nd1AL|           a | b | c e | x | g | h | i | k | l\nd2i|            a | b | c | d | e || g | h | i | k | l\nd2a|            a | b | c | d | e | g | h | i | k | l\nd2I|            a | b | c | d | e |  | g | h | i | k | l\nd2A|            a | b | c | d | e g | h | i | k | l\nd2in|           a | b | c | d | e | x | g || i | k | l\nd2an|           a | b | c | d | e | x | g | i | k | l\nd2In|           a | b | c | d | e | x | g |  | i | k | l\nd2An|           a | b | c | d | e | x | g i | k | l\nd2il|           a | b | c || e | x | g | h | i | k | l\nd2al|           a | b | c | e | x | g | h | i | k | l\nd2Il|           a | b | c |  | e | x | g | h | i | k | l\nd2Al|           a | b | c e | x | g | h | i | k | l\nd2iN|           a | b | c | d | e | x | g | h | i || l\nd2aN|           a | b | c | d | e | x | g | h | i | l\nd2IN|           a | b | c | d | e | x | g | h | i |  | l\nd2AN|           a | b | c | d | e | x | g | h | i l\nd2iL|           a || c | d | e | x | g | h | i | k | l\nd2aL|           a | c | d | e | x | g | h | i | k | l\nd2IL|           a |  | c | d | e | x | g | h | i | k | l\nd2AL|           a c | d | e | x | g | h | i | k | l\nyi|             a | b | c | d | e | x | g | h | i | k | l       ' x '\nya|             a | b | c | d | e | x | g | h | i | k | l       '| x '\nyI|             a | b | c | d | e | x | g | h | i | k | l       'x'\nyA|             a | b | c | d | e | x | g | h | i | k | l       '| x | '\nyin|            a | b | c | d | e | x | g | h | i | k | l       ' g '\nyan|            a | b | c | d | e | x | g | h | i | k | l       '| g '\nyIn|            a | b | c | d | e | x | g | h | i | k | l       'g'\nyAn|            a | b | c | d | e | x | g | h | i | k | l       '| g | '\nyil|            a | b | c | d | e | x | g | h | i | k | l       ' e '\nyal|            a | b | c | d | e | x | g | h | i | k | l       '| e '\nyIl|            a | b | c | d | e | x | g | h | i | k | l       'e'\nyAl|            a | b | c | d | e | x | g | h | i | k | l       '| e | '\nyiN|            a | b | c | d | e | x | g | h | i | k | l       ' h '\nyaN|            a | b | c | d | e | x | g | h | i | k | l       '| h '\nyIN|            a | b | c | d | e | x | g | h | i | k | l       'h'\nyAN|            a | b | c | d | e | x | g | h | i | k | l       '| h | '\nyiL|            a | b | c | d | e | x | g | h | i | k | l       ' d '\nyaL|            a | b | c | d | e | x | g | h | i | k | l       '| d '\nyIL|            a | b | c | d | e | x | g | h | i | k | l       'd'\nyAL|            a | b | c | d | e | x | g | h | i | k | l       '| d | '\ny1i|            a | b | c | d | e | x | g | h | i | k | l       ' x '\ny1a|            a | b | c | d | e | x | g | h | i | k | l       '| x '\ny1I|            a | b | c | d | e | x | g | h | i | k | l       'x'\ny1A|            a | b | c | d | e | x | g | h | i | k | l       '| x | '\ny1in|           a | b | c | d | e | x | g | h | i | k | l       ' g '\ny1an|           a | b | c | d | e | x | g | h | i | k | l       '| g '\ny1In|           a | b | c | d | e | x | g | h | i | k | l       'g'\ny1An|           a | b | c | d | e | x | g | h | i | k | l       '| g | '\ny1il|           a | b | c | d | e | x | g | h | i | k | l       ' e '\ny1al|           a | b | c | d | e | x | g | h | i | k | l       '| e '\ny1Il|           a | b | c | d | e | x | g | h | i | k | l       'e'\ny1Al|           a | b | c | d | e | x | g | h | i | k | l       '| e | '\ny1iN|           a | b | c | d | e | x | g | h | i | k | l       ' h '\ny1aN|           a | b | c | d | e | x | g | h | i | k | l       '| h '\ny1IN|           a | b | c | d | e | x | g | h | i | k | l       'h'\ny1AN|           a | b | c | d | e | x | g | h | i | k | l       '| h | '\ny1iL|           a | b | c | d | e | x | g | h | i | k | l       ' d '\ny1aL|           a | b | c | d | e | x | g | h | i | k | l       '| d '\ny1IL|           a | b | c | d | e | x | g | h | i | k | l       'd'\ny1AL|           a | b | c | d | e | x | g | h | i | k | l       '| d | '\ny2i|            a | b | c | d | e | x | g | h | i | k | l       ' x '\ny2a|            a | b | c | d | e | x | g | h | i | k | l       '| x '\ny2I|            a | b | c | d | e | x | g | h | i | k | l       'x'\ny2A|            a | b | c | d | e | x | g | h | i | k | l       '| x | '\ny2in|           a | b | c | d | e | x | g | h | i | k | l       ' h '\ny2an|           a | b | c | d | e | x | g | h | i | k | l       '| h '\ny2In|           a | b | c | d | e | x | g | h | i | k | l       'h'\ny2An|           a | b | c | d | e | x | g | h | i | k | l       '| h | '\ny2il|           a | b | c | d | e | x | g | h | i | k | l       ' d '\ny2al|           a | b | c | d | e | x | g | h | i | k | l       '| d '\ny2Il|           a | b | c | d | e | x | g | h | i | k | l       'd'\ny2Al|           a | b | c | d | e | x | g | h | i | k | l       '| d | '\ny2iN|           a | b | c | d | e | x | g | h | i | k | l       ' k '\ny2aN|           a | b | c | d | e | x | g | h | i | k | l       '| k '\ny2IN|           a | b | c | d | e | x | g | h | i | k | l       'k'\ny2AN|           a | b | c | d | e | x | g | h | i | k | l       '| k | '\ny2iL|           a | b | c | d | e | x | g | h | i | k | l       ' b '\ny2aL|           a | b | c | d | e | x | g | h | i | k | l       '| b '\ny2IL|           a | b | c | d | e | x | g | h | i | k | l       'b'\ny2AL|           a | b | c | d | e | x | g | h | i | k | l       '| b | '\nvi|             a | b | c | d | e |___| g | h | i | k | l\nva|             a | b | c | d | e ____| g | h | i | k | l\nvI|             a | b | c | d | e | _ | g | h | i | k | l\nvA|             a | b | c | d | e ______g | h | i | k | l\nvin|            a | b | c | d | e | x |___| h | i | k | l\nvan|            a | b | c | d | e | x ____| h | i | k | l\nvIn|            a | b | c | d | e | x | _ | h | i | k | l\nvAn|            a | b | c | d | e | x ______h | i | k | l\nvil|            a | b | c | d |___| x | g | h | i | k | l\nval|            a | b | c | d ____| x | g | h | i | k | l\nvIl|            a | b | c | d | _ | x | g | h | i | k | l\nvAl|            a | b | c | d ______x | g | h | i | k | l\nviN|            a | b | c | d | e | x | g |___| i | k | l\nvaN|            a | b | c | d | e | x | g ____| i | k | l\nvIN|            a | b | c | d | e | x | g | _ | i | k | l\nvAN|            a | b | c | d | e | x | g ______i | k | l\nviL|            a | b | c |___| e | x | g | h | i | k | l\nvaL|            a | b | c ____| e | x | g | h | i | k | l\nvIL|            a | b | c | _ | e | x | g | h | i | k | l\nvAL|            a | b | c ______e | x | g | h | i | k | l\nv1i|            a | b | c | d | e |___| g | h | i | k | l\nv1a|            a | b | c | d | e ____| g | h | i | k | l\nv1I|            a | b | c | d | e | _ | g | h | i | k | l\nv1A|            a | b | c | d | e ______g | h | i | k | l\nv1in|           a | b | c | d | e | x |___| h | i | k | l\nv1an|           a | b | c | d | e | x ____| h | i | k | l\nv1In|           a | b | c | d | e | x | _ | h | i | k | l\nv1An|           a | b | c | d | e | x ______h | i | k | l\nv1il|           a | b | c | d |___| x | g | h | i | k | l\nv1al|           a | b | c | d ____| x | g | h | i | k | l\nv1Il|           a | b | c | d | _ | x | g | h | i | k | l\nv1Al|           a | b | c | d ______x | g | h | i | k | l\nv1iN|           a | b | c | d | e | x | g |___| i | k | l\nv1aN|           a | b | c | d | e | x | g ____| i | k | l\nv1IN|           a | b | c | d | e | x | g | _ | i | k | l\nv1AN|           a | b | c | d | e | x | g ______i | k | l\nv1iL|           a | b | c |___| e | x | g | h | i | k | l\nv1aL|           a | b | c ____| e | x | g | h | i | k | l\nv1IL|           a | b | c | _ | e | x | g | h | i | k | l\nv1AL|           a | b | c ______e | x | g | h | i | k | l\nv2i|            a | b | c | d | e |___| g | h | i | k | l\nv2a|            a | b | c | d | e ____| g | h | i | k | l\nv2I|            a | b | c | d | e | _ | g | h | i | k | l\nv2A|            a | b | c | d | e ______g | h | i | k | l\nv2in|           a | b | c | d | e | x | g |___| i | k | l\nv2an|           a | b | c | d | e | x | g ____| i | k | l\nv2In|           a | b | c | d | e | x | g | _ | i | k | l\nv2An|           a | b | c | d | e | x | g ______i | k | l\nv2il|           a | b | c |___| e | x | g | h | i | k | l\nv2al|           a | b | c ____| e | x | g | h | i | k | l\nv2Il|           a | b | c | _ | e | x | g | h | i | k | l\nv2Al|           a | b | c ______e | x | g | h | i | k | l\nv2iN|           a | b | c | d | e | x | g | h | i |___| l\nv2aN|           a | b | c | d | e | x | g | h | i ____| l\nv2IN|           a | b | c | d | e | x | g | h | i | _ | l\nv2AN|           a | b | c | d | e | x | g | h | i ______l\nv2iL|           a |___| c | d | e | x | g | h | i | k | l\nv2aL|           a ____| c | d | e | x | g | h | i | k | l\nv2IL|           a | _ | c | d | e | x | g | h | i | k | l\nv2AL|           a ______c | d | e | x | g | h | i | k | l\na \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nci\\             a \\ b \\ c \\ d \\ e \\_\\ g \\ h \\ i \\ k \\ l\nca\\             a \\ b \\ c \\ d \\ e _\\ g \\ h \\ i \\ k \\ l\ncI\\             a \\ b \\ c \\ d \\ e \\ _ \\ g \\ h \\ i \\ k \\ l\ncA\\             a \\ b \\ c \\ d \\ e _g \\ h \\ i \\ k \\ l\ncin\\            a \\ b \\ c \\ d \\ e \\ x \\_\\ h \\ i \\ k \\ l\ncan\\            a \\ b \\ c \\ d \\ e \\ x _\\ h \\ i \\ k \\ l\ncIn\\            a \\ b \\ c \\ d \\ e \\ x \\ _ \\ h \\ i \\ k \\ l\ncAn\\            a \\ b \\ c \\ d \\ e \\ x _h \\ i \\ k \\ l\ncil\\            a \\ b \\ c \\ d \\_\\ x \\ g \\ h \\ i \\ k \\ l\ncal\\            a \\ b \\ c \\ d _\\ x \\ g \\ h \\ i \\ k \\ l\ncIl\\            a \\ b \\ c \\ d \\ _ \\ x \\ g \\ h \\ i \\ k \\ l\ncAl\\            a \\ b \\ c \\ d _x \\ g \\ h \\ i \\ k \\ l\nciN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\_\\ i \\ k \\ l\ncaN\\            a \\ b \\ c \\ d \\ e \\ x \\ g _\\ i \\ k \\ l\ncIN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ _ \\ i \\ k \\ l\ncAN\\            a \\ b \\ c \\ d \\ e \\ x \\ g _i \\ k \\ l\nciL\\            a \\ b \\ c \\_\\ e \\ x \\ g \\ h \\ i \\ k \\ l\ncaL\\            a \\ b \\ c _\\ e \\ x \\ g \\ h \\ i \\ k \\ l\ncIL\\            a \\ b \\ c \\ _ \\ e \\ x \\ g \\ h \\ i \\ k \\ l\ncAL\\            a \\ b \\ c _e \\ x \\ g \\ h \\ i \\ k \\ l\nc1i\\            a \\ b \\ c \\ d \\ e \\_\\ g \\ h \\ i \\ k \\ l\nc1a\\            a \\ b \\ c \\ d \\ e _\\ g \\ h \\ i \\ k \\ l\nc1I\\            a \\ b \\ c \\ d \\ e \\ _ \\ g \\ h \\ i \\ k \\ l\nc1A\\            a \\ b \\ c \\ d \\ e _g \\ h \\ i \\ k \\ l\nc1in\\           a \\ b \\ c \\ d \\ e \\ x \\_\\ h \\ i \\ k \\ l\nc1an\\           a \\ b \\ c \\ d \\ e \\ x _\\ h \\ i \\ k \\ l\nc1In\\           a \\ b \\ c \\ d \\ e \\ x \\ _ \\ h \\ i \\ k \\ l\nc1An\\           a \\ b \\ c \\ d \\ e \\ x _h \\ i \\ k \\ l\nc1il\\           a \\ b \\ c \\ d \\_\\ x \\ g \\ h \\ i \\ k \\ l\nc1al\\           a \\ b \\ c \\ d _\\ x \\ g \\ h \\ i \\ k \\ l\nc1Il\\           a \\ b \\ c \\ d \\ _ \\ x \\ g \\ h \\ i \\ k \\ l\nc1Al\\           a \\ b \\ c \\ d _x \\ g \\ h \\ i \\ k \\ l\nc1iN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\_\\ i \\ k \\ l\nc1aN\\           a \\ b \\ c \\ d \\ e \\ x \\ g _\\ i \\ k \\ l\nc1IN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ _ \\ i \\ k \\ l\nc1AN\\           a \\ b \\ c \\ d \\ e \\ x \\ g _i \\ k \\ l\nc1iL\\           a \\ b \\ c \\_\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc1aL\\           a \\ b \\ c _\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc1IL\\           a \\ b \\ c \\ _ \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc1AL\\           a \\ b \\ c _e \\ x \\ g \\ h \\ i \\ k \\ l\nc2i\\            a \\ b \\ c \\ d \\ e \\_\\ g \\ h \\ i \\ k \\ l\nc2a\\            a \\ b \\ c \\ d \\ e _\\ g \\ h \\ i \\ k \\ l\nc2I\\            a \\ b \\ c \\ d \\ e \\ _ \\ g \\ h \\ i \\ k \\ l\nc2A\\            a \\ b \\ c \\ d \\ e _g \\ h \\ i \\ k \\ l\nc2in\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\_\\ i \\ k \\ l\nc2an\\           a \\ b \\ c \\ d \\ e \\ x \\ g _\\ i \\ k \\ l\nc2In\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ _ \\ i \\ k \\ l\nc2An\\           a \\ b \\ c \\ d \\ e \\ x \\ g _i \\ k \\ l\nc2il\\           a \\ b \\ c \\_\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc2al\\           a \\ b \\ c _\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc2Il\\           a \\ b \\ c \\ _ \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc2Al\\           a \\ b \\ c _e \\ x \\ g \\ h \\ i \\ k \\ l\nc2iN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\_\\ l\nc2aN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i _\\ l\nc2IN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ _ \\ l\nc2AN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i _l\nc2iL\\           a \\_\\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc2aL\\           a _\\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc2IL\\           a \\ _ \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc2AL\\           a _c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\ndi\\             a \\ b \\ c \\ d \\ e \\\\ g \\ h \\ i \\ k \\ l\nda\\             a \\ b \\ c \\ d \\ e \\ g \\ h \\ i \\ k \\ l\ndI\\             a \\ b \\ c \\ d \\ e \\  \\ g \\ h \\ i \\ k \\ l\ndA\\             a \\ b \\ c \\ d \\ e g \\ h \\ i \\ k \\ l\ndin\\            a \\ b \\ c \\ d \\ e \\ x \\\\ h \\ i \\ k \\ l\ndan\\            a \\ b \\ c \\ d \\ e \\ x \\ h \\ i \\ k \\ l\ndIn\\            a \\ b \\ c \\ d \\ e \\ x \\  \\ h \\ i \\ k \\ l\ndAn\\            a \\ b \\ c \\ d \\ e \\ x h \\ i \\ k \\ l\ndil\\            a \\ b \\ c \\ d \\\\ x \\ g \\ h \\ i \\ k \\ l\ndal\\            a \\ b \\ c \\ d \\ x \\ g \\ h \\ i \\ k \\ l\ndIl\\            a \\ b \\ c \\ d \\  \\ x \\ g \\ h \\ i \\ k \\ l\ndAl\\            a \\ b \\ c \\ d x \\ g \\ h \\ i \\ k \\ l\ndiN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\\\ i \\ k \\ l\ndaN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ i \\ k \\ l\ndIN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\  \\ i \\ k \\ l\ndAN\\            a \\ b \\ c \\ d \\ e \\ x \\ g i \\ k \\ l\ndiL\\            a \\ b \\ c \\\\ e \\ x \\ g \\ h \\ i \\ k \\ l\ndaL\\            a \\ b \\ c \\ e \\ x \\ g \\ h \\ i \\ k \\ l\ndIL\\            a \\ b \\ c \\  \\ e \\ x \\ g \\ h \\ i \\ k \\ l\ndAL\\            a \\ b \\ c e \\ x \\ g \\ h \\ i \\ k \\ l\nd1i\\            a \\ b \\ c \\ d \\ e \\\\ g \\ h \\ i \\ k \\ l\nd1a\\            a \\ b \\ c \\ d \\ e \\ g \\ h \\ i \\ k \\ l\nd1I\\            a \\ b \\ c \\ d \\ e \\  \\ g \\ h \\ i \\ k \\ l\nd1A\\            a \\ b \\ c \\ d \\ e g \\ h \\ i \\ k \\ l\nd1in\\           a \\ b \\ c \\ d \\ e \\ x \\\\ h \\ i \\ k \\ l\nd1an\\           a \\ b \\ c \\ d \\ e \\ x \\ h \\ i \\ k \\ l\nd1In\\           a \\ b \\ c \\ d \\ e \\ x \\  \\ h \\ i \\ k \\ l\nd1An\\           a \\ b \\ c \\ d \\ e \\ x h \\ i \\ k \\ l\nd1il\\           a \\ b \\ c \\ d \\\\ x \\ g \\ h \\ i \\ k \\ l\nd1al\\           a \\ b \\ c \\ d \\ x \\ g \\ h \\ i \\ k \\ l\nd1Il\\           a \\ b \\ c \\ d \\  \\ x \\ g \\ h \\ i \\ k \\ l\nd1Al\\           a \\ b \\ c \\ d x \\ g \\ h \\ i \\ k \\ l\nd1iN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\\\ i \\ k \\ l\nd1aN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ i \\ k \\ l\nd1IN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\  \\ i \\ k \\ l\nd1AN\\           a \\ b \\ c \\ d \\ e \\ x \\ g i \\ k \\ l\nd1iL\\           a \\ b \\ c \\\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd1aL\\           a \\ b \\ c \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd1IL\\           a \\ b \\ c \\  \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd1AL\\           a \\ b \\ c e \\ x \\ g \\ h \\ i \\ k \\ l\nd2i\\            a \\ b \\ c \\ d \\ e \\\\ g \\ h \\ i \\ k \\ l\nd2a\\            a \\ b \\ c \\ d \\ e \\ g \\ h \\ i \\ k \\ l\nd2I\\            a \\ b \\ c \\ d \\ e \\  \\ g \\ h \\ i \\ k \\ l\nd2A\\            a \\ b \\ c \\ d \\ e g \\ h \\ i \\ k \\ l\nd2in\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\\\ i \\ k \\ l\nd2an\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ i \\ k \\ l\nd2In\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\  \\ i \\ k \\ l\nd2An\\           a \\ b \\ c \\ d \\ e \\ x \\ g i \\ k \\ l\nd2il\\           a \\ b \\ c \\\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd2al\\           a \\ b \\ c \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd2Il\\           a \\ b \\ c \\  \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd2Al\\           a \\ b \\ c e \\ x \\ g \\ h \\ i \\ k \\ l\nd2iN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\\\ l\nd2aN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ l\nd2IN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\  \\ l\nd2AN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i l\nd2iL\\           a \\\\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd2aL\\           a \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd2IL\\           a \\  \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd2AL\\           a c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nyi\\             a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' x '\nya\\             a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ x '\nyI\\             a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'x'\nyA\\             a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ x \\ '\nyin\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' g '\nyan\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ g '\nyIn\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'g'\nyAn\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ g \\ '\nyil\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' e '\nyal\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ e '\nyIl\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'e'\nyAl\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ e \\ '\nyiN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' h '\nyaN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ h '\nyIN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'h'\nyAN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ h \\ '\nyiL\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' d '\nyaL\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ d '\nyIL\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'd'\nyAL\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ d \\ '\ny1i\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' x '\ny1a\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ x '\ny1I\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'x'\ny1A\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ x \\ '\ny1in\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' g '\ny1an\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ g '\ny1In\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'g'\ny1An\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ g \\ '\ny1il\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' e '\ny1al\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ e '\ny1Il\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'e'\ny1Al\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ e \\ '\ny1iN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' h '\ny1aN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ h '\ny1IN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'h'\ny1AN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ h \\ '\ny1iL\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' d '\ny1aL\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ d '\ny1IL\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'd'\ny1AL\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ d \\ '\ny2i\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' x '\ny2a\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ x '\ny2I\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'x'\ny2A\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ x \\ '\ny2in\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' h '\ny2an\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ h '\ny2In\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'h'\ny2An\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ h \\ '\ny2il\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' d '\ny2al\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ d '\ny2Il\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'd'\ny2Al\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ d \\ '\ny2iN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' k '\ny2aN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ k '\ny2IN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'k'\ny2AN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ k \\ '\ny2iL\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' b '\ny2aL\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ b '\ny2IL\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'b'\ny2AL\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ b \\ '\nvi\\             a \\ b \\ c \\ d \\ e \\___\\ g \\ h \\ i \\ k \\ l\nva\\             a \\ b \\ c \\ d \\ e ____\\ g \\ h \\ i \\ k \\ l\nvI\\             a \\ b \\ c \\ d \\ e \\ _ \\ g \\ h \\ i \\ k \\ l\nvA\\             a \\ b \\ c \\ d \\ e ______g \\ h \\ i \\ k \\ l\nvin\\            a \\ b \\ c \\ d \\ e \\ x \\___\\ h \\ i \\ k \\ l\nvan\\            a \\ b \\ c \\ d \\ e \\ x ____\\ h \\ i \\ k \\ l\nvIn\\            a \\ b \\ c \\ d \\ e \\ x \\ _ \\ h \\ i \\ k \\ l\nvAn\\            a \\ b \\ c \\ d \\ e \\ x ______h \\ i \\ k \\ l\nvil\\            a \\ b \\ c \\ d \\___\\ x \\ g \\ h \\ i \\ k \\ l\nval\\            a \\ b \\ c \\ d ____\\ x \\ g \\ h \\ i \\ k \\ l\nvIl\\            a \\ b \\ c \\ d \\ _ \\ x \\ g \\ h \\ i \\ k \\ l\nvAl\\            a \\ b \\ c \\ d ______x \\ g \\ h \\ i \\ k \\ l\nviN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\___\\ i \\ k \\ l\nvaN\\            a \\ b \\ c \\ d \\ e \\ x \\ g ____\\ i \\ k \\ l\nvIN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ _ \\ i \\ k \\ l\nvAN\\            a \\ b \\ c \\ d \\ e \\ x \\ g ______i \\ k \\ l\nviL\\            a \\ b \\ c \\___\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nvaL\\            a \\ b \\ c ____\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nvIL\\            a \\ b \\ c \\ _ \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nvAL\\            a \\ b \\ c ______e \\ x \\ g \\ h \\ i \\ k \\ l\nv1i\\            a \\ b \\ c \\ d \\ e \\___\\ g \\ h \\ i \\ k \\ l\nv1a\\            a \\ b \\ c \\ d \\ e ____\\ g \\ h \\ i \\ k \\ l\nv1I\\            a \\ b \\ c \\ d \\ e \\ _ \\ g \\ h \\ i \\ k \\ l\nv1A\\            a \\ b \\ c \\ d \\ e ______g \\ h \\ i \\ k \\ l\nv1in\\           a \\ b \\ c \\ d \\ e \\ x \\___\\ h \\ i \\ k \\ l\nv1an\\           a \\ b \\ c \\ d \\ e \\ x ____\\ h \\ i \\ k \\ l\nv1In\\           a \\ b \\ c \\ d \\ e \\ x \\ _ \\ h \\ i \\ k \\ l\nv1An\\           a \\ b \\ c \\ d \\ e \\ x ______h \\ i \\ k \\ l\nv1il\\           a \\ b \\ c \\ d \\___\\ x \\ g \\ h \\ i \\ k \\ l\nv1al\\           a \\ b \\ c \\ d ____\\ x \\ g \\ h \\ i \\ k \\ l\nv1Il\\           a \\ b \\ c \\ d \\ _ \\ x \\ g \\ h \\ i \\ k \\ l\nv1Al\\           a \\ b \\ c \\ d ______x \\ g \\ h \\ i \\ k \\ l\nv1iN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\___\\ i \\ k \\ l\nv1aN\\           a \\ b \\ c \\ d \\ e \\ x \\ g ____\\ i \\ k \\ l\nv1IN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ _ \\ i \\ k \\ l\nv1AN\\           a \\ b \\ c \\ d \\ e \\ x \\ g ______i \\ k \\ l\nv1iL\\           a \\ b \\ c \\___\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv1aL\\           a \\ b \\ c ____\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv1IL\\           a \\ b \\ c \\ _ \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv1AL\\           a \\ b \\ c ______e \\ x \\ g \\ h \\ i \\ k \\ l\nv2i\\            a \\ b \\ c \\ d \\ e \\___\\ g \\ h \\ i \\ k \\ l\nv2a\\            a \\ b \\ c \\ d \\ e ____\\ g \\ h \\ i \\ k \\ l\nv2I\\            a \\ b \\ c \\ d \\ e \\ _ \\ g \\ h \\ i \\ k \\ l\nv2A\\            a \\ b \\ c \\ d \\ e ______g \\ h \\ i \\ k \\ l\nv2in\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\___\\ i \\ k \\ l\nv2an\\           a \\ b \\ c \\ d \\ e \\ x \\ g ____\\ i \\ k \\ l\nv2In\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ _ \\ i \\ k \\ l\nv2An\\           a \\ b \\ c \\ d \\ e \\ x \\ g ______i \\ k \\ l\nv2il\\           a \\ b \\ c \\___\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv2al\\           a \\ b \\ c ____\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv2Il\\           a \\ b \\ c \\ _ \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv2Al\\           a \\ b \\ c ______e \\ x \\ g \\ h \\ i \\ k \\ l\nv2iN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\___\\ l\nv2aN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i ____\\ l\nv2IN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ _ \\ l\nv2AN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i ______l\nv2iL\\           a \\___\\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv2aL\\           a ____\\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv2IL\\           a \\ _ \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv2AL\\           a ______c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\na & b & c & d & e & x & g & h & i & k & l\nci&             a & b & c & d & e &_& g & h & i & k & l\nca&             a & b & c & d & e _& g & h & i & k & l\ncI&             a & b & c & d & e & _ & g & h & i & k & l\ncA&             a & b & c & d & e _g & h & i & k & l\ncin&            a & b & c & d & e & x &_& h & i & k & l\ncan&            a & b & c & d & e & x _& h & i & k & l\ncIn&            a & b & c & d & e & x & _ & h & i & k & l\ncAn&            a & b & c & d & e & x _h & i & k & l\ncil&            a & b & c & d &_& x & g & h & i & k & l\ncal&            a & b & c & d _& x & g & h & i & k & l\ncIl&            a & b & c & d & _ & x & g & h & i & k & l\ncAl&            a & b & c & d _x & g & h & i & k & l\nciN&            a & b & c & d & e & x & g &_& i & k & l\ncaN&            a & b & c & d & e & x & g _& i & k & l\ncIN&            a & b & c & d & e & x & g & _ & i & k & l\ncAN&            a & b & c & d & e & x & g _i & k & l\nciL&            a & b & c &_& e & x & g & h & i & k & l\ncaL&            a & b & c _& e & x & g & h & i & k & l\ncIL&            a & b & c & _ & e & x & g & h & i & k & l\ncAL&            a & b & c _e & x & g & h & i & k & l\nc1i&            a & b & c & d & e &_& g & h & i & k & l\nc1a&            a & b & c & d & e _& g & h & i & k & l\nc1I&            a & b & c & d & e & _ & g & h & i & k & l\nc1A&            a & b & c & d & e _g & h & i & k & l\nc1in&           a & b & c & d & e & x &_& h & i & k & l\nc1an&           a & b & c & d & e & x _& h & i & k & l\nc1In&           a & b & c & d & e & x & _ & h & i & k & l\nc1An&           a & b & c & d & e & x _h & i & k & l\nc1il&           a & b & c & d &_& x & g & h & i & k & l\nc1al&           a & b & c & d _& x & g & h & i & k & l\nc1Il&           a & b & c & d & _ & x & g & h & i & k & l\nc1Al&           a & b & c & d _x & g & h & i & k & l\nc1iN&           a & b & c & d & e & x & g &_& i & k & l\nc1aN&           a & b & c & d & e & x & g _& i & k & l\nc1IN&           a & b & c & d & e & x & g & _ & i & k & l\nc1AN&           a & b & c & d & e & x & g _i & k & l\nc1iL&           a & b & c &_& e & x & g & h & i & k & l\nc1aL&           a & b & c _& e & x & g & h & i & k & l\nc1IL&           a & b & c & _ & e & x & g & h & i & k & l\nc1AL&           a & b & c _e & x & g & h & i & k & l\nc2i&            a & b & c & d & e &_& g & h & i & k & l\nc2a&            a & b & c & d & e _& g & h & i & k & l\nc2I&            a & b & c & d & e & _ & g & h & i & k & l\nc2A&            a & b & c & d & e _g & h & i & k & l\nc2in&           a & b & c & d & e & x & g &_& i & k & l\nc2an&           a & b & c & d & e & x & g _& i & k & l\nc2In&           a & b & c & d & e & x & g & _ & i & k & l\nc2An&           a & b & c & d & e & x & g _i & k & l\nc2il&           a & b & c &_& e & x & g & h & i & k & l\nc2al&           a & b & c _& e & x & g & h & i & k & l\nc2Il&           a & b & c & _ & e & x & g & h & i & k & l\nc2Al&           a & b & c _e & x & g & h & i & k & l\nc2iN&           a & b & c & d & e & x & g & h & i &_& l\nc2aN&           a & b & c & d & e & x & g & h & i _& l\nc2IN&           a & b & c & d & e & x & g & h & i & _ & l\nc2AN&           a & b & c & d & e & x & g & h & i _l\nc2iL&           a &_& c & d & e & x & g & h & i & k & l\nc2aL&           a _& c & d & e & x & g & h & i & k & l\nc2IL&           a & _ & c & d & e & x & g & h & i & k & l\nc2AL&           a _c & d & e & x & g & h & i & k & l\ndi&             a & b & c & d & e && g & h & i & k & l\nda&             a & b & c & d & e & g & h & i & k & l\ndI&             a & b & c & d & e &  & g & h & i & k & l\ndA&             a & b & c & d & e g & h & i & k & l\ndin&            a & b & c & d & e & x && h & i & k & l\ndan&            a & b & c & d & e & x & h & i & k & l\ndIn&            a & b & c & d & e & x &  & h & i & k & l\ndAn&            a & b & c & d & e & x h & i & k & l\ndil&            a & b & c & d && x & g & h & i & k & l\ndal&            a & b & c & d & x & g & h & i & k & l\ndIl&            a & b & c & d &  & x & g & h & i & k & l\ndAl&            a & b & c & d x & g & h & i & k & l\ndiN&            a & b & c & d & e & x & g && i & k & l\ndaN&            a & b & c & d & e & x & g & i & k & l\ndIN&            a & b & c & d & e & x & g &  & i & k & l\ndAN&            a & b & c & d & e & x & g i & k & l\ndiL&            a & b & c && e & x & g & h & i & k & l\ndaL&            a & b & c & e & x & g & h & i & k & l\ndIL&            a & b & c &  & e & x & g & h & i & k & l\ndAL&            a & b & c e & x & g & h & i & k & l\nd1i&            a & b & c & d & e && g & h & i & k & l\nd1a&            a & b & c & d & e & g & h & i & k & l\nd1I&            a & b & c & d & e &  & g & h & i & k & l\nd1A&            a & b & c & d & e g & h & i & k & l\nd1in&           a & b & c & d & e & x && h & i & k & l\nd1an&           a & b & c & d & e & x & h & i & k & l\nd1In&           a & b & c & d & e & x &  & h & i & k & l\nd1An&           a & b & c & d & e & x h & i & k & l\nd1il&           a & b & c & d && x & g & h & i & k & l\nd1al&           a & b & c & d & x & g & h & i & k & l\nd1Il&           a & b & c & d &  & x & g & h & i & k & l\nd1Al&           a & b & c & d x & g & h & i & k & l\nd1iN&           a & b & c & d & e & x & g && i & k & l\nd1aN&           a & b & c & d & e & x & g & i & k & l\nd1IN&           a & b & c & d & e & x & g &  & i & k & l\nd1AN&           a & b & c & d & e & x & g i & k & l\nd1iL&           a & b & c && e & x & g & h & i & k & l\nd1aL&           a & b & c & e & x & g & h & i & k & l\nd1IL&           a & b & c &  & e & x & g & h & i & k & l\nd1AL&           a & b & c e & x & g & h & i & k & l\nd2i&            a & b & c & d & e && g & h & i & k & l\nd2a&            a & b & c & d & e & g & h & i & k & l\nd2I&            a & b & c & d & e &  & g & h & i & k & l\nd2A&            a & b & c & d & e g & h & i & k & l\nd2in&           a & b & c & d & e & x & g && i & k & l\nd2an&           a & b & c & d & e & x & g & i & k & l\nd2In&           a & b & c & d & e & x & g &  & i & k & l\nd2An&           a & b & c & d & e & x & g i & k & l\nd2il&           a & b & c && e & x & g & h & i & k & l\nd2al&           a & b & c & e & x & g & h & i & k & l\nd2Il&           a & b & c &  & e & x & g & h & i & k & l\nd2Al&           a & b & c e & x & g & h & i & k & l\nd2iN&           a & b & c & d & e & x & g & h & i && l\nd2aN&           a & b & c & d & e & x & g & h & i & l\nd2IN&           a & b & c & d & e & x & g & h & i &  & l\nd2AN&           a & b & c & d & e & x & g & h & i l\nd2iL&           a && c & d & e & x & g & h & i & k & l\nd2aL&           a & c & d & e & x & g & h & i & k & l\nd2IL&           a &  & c & d & e & x & g & h & i & k & l\nd2AL&           a c & d & e & x & g & h & i & k & l\nyi&             a & b & c & d & e & x & g & h & i & k & l       ' x '\nya&             a & b & c & d & e & x & g & h & i & k & l       '& x '\nyI&             a & b & c & d & e & x & g & h & i & k & l       'x'\nyA&             a & b & c & d & e & x & g & h & i & k & l       '& x & '\nyin&            a & b & c & d & e & x & g & h & i & k & l       ' g '\nyan&            a & b & c & d & e & x & g & h & i & k & l       '& g '\nyIn&            a & b & c & d & e & x & g & h & i & k & l       'g'\nyAn&            a & b & c & d & e & x & g & h & i & k & l       '& g & '\nyil&            a & b & c & d & e & x & g & h & i & k & l       ' e '\nyal&            a & b & c & d & e & x & g & h & i & k & l       '& e '\nyIl&            a & b & c & d & e & x & g & h & i & k & l       'e'\nyAl&            a & b & c & d & e & x & g & h & i & k & l       '& e & '\nyiN&            a & b & c & d & e & x & g & h & i & k & l       ' h '\nyaN&            a & b & c & d & e & x & g & h & i & k & l       '& h '\nyIN&            a & b & c & d & e & x & g & h & i & k & l       'h'\nyAN&            a & b & c & d & e & x & g & h & i & k & l       '& h & '\nyiL&            a & b & c & d & e & x & g & h & i & k & l       ' d '\nyaL&            a & b & c & d & e & x & g & h & i & k & l       '& d '\nyIL&            a & b & c & d & e & x & g & h & i & k & l       'd'\nyAL&            a & b & c & d & e & x & g & h & i & k & l       '& d & '\ny1i&            a & b & c & d & e & x & g & h & i & k & l       ' x '\ny1a&            a & b & c & d & e & x & g & h & i & k & l       '& x '\ny1I&            a & b & c & d & e & x & g & h & i & k & l       'x'\ny1A&            a & b & c & d & e & x & g & h & i & k & l       '& x & '\ny1in&           a & b & c & d & e & x & g & h & i & k & l       ' g '\ny1an&           a & b & c & d & e & x & g & h & i & k & l       '& g '\ny1In&           a & b & c & d & e & x & g & h & i & k & l       'g'\ny1An&           a & b & c & d & e & x & g & h & i & k & l       '& g & '\ny1il&           a & b & c & d & e & x & g & h & i & k & l       ' e '\ny1al&           a & b & c & d & e & x & g & h & i & k & l       '& e '\ny1Il&           a & b & c & d & e & x & g & h & i & k & l       'e'\ny1Al&           a & b & c & d & e & x & g & h & i & k & l       '& e & '\ny1iN&           a & b & c & d & e & x & g & h & i & k & l       ' h '\ny1aN&           a & b & c & d & e & x & g & h & i & k & l       '& h '\ny1IN&           a & b & c & d & e & x & g & h & i & k & l       'h'\ny1AN&           a & b & c & d & e & x & g & h & i & k & l       '& h & '\ny1iL&           a & b & c & d & e & x & g & h & i & k & l       ' d '\ny1aL&           a & b & c & d & e & x & g & h & i & k & l       '& d '\ny1IL&           a & b & c & d & e & x & g & h & i & k & l       'd'\ny1AL&           a & b & c & d & e & x & g & h & i & k & l       '& d & '\ny2i&            a & b & c & d & e & x & g & h & i & k & l       ' x '\ny2a&            a & b & c & d & e & x & g & h & i & k & l       '& x '\ny2I&            a & b & c & d & e & x & g & h & i & k & l       'x'\ny2A&            a & b & c & d & e & x & g & h & i & k & l       '& x & '\ny2in&           a & b & c & d & e & x & g & h & i & k & l       ' h '\ny2an&           a & b & c & d & e & x & g & h & i & k & l       '& h '\ny2In&           a & b & c & d & e & x & g & h & i & k & l       'h'\ny2An&           a & b & c & d & e & x & g & h & i & k & l       '& h & '\ny2il&           a & b & c & d & e & x & g & h & i & k & l       ' d '\ny2al&           a & b & c & d & e & x & g & h & i & k & l       '& d '\ny2Il&           a & b & c & d & e & x & g & h & i & k & l       'd'\ny2Al&           a & b & c & d & e & x & g & h & i & k & l       '& d & '\ny2iN&           a & b & c & d & e & x & g & h & i & k & l       ' k '\ny2aN&           a & b & c & d & e & x & g & h & i & k & l       '& k '\ny2IN&           a & b & c & d & e & x & g & h & i & k & l       'k'\ny2AN&           a & b & c & d & e & x & g & h & i & k & l       '& k & '\ny2iL&           a & b & c & d & e & x & g & h & i & k & l       ' b '\ny2aL&           a & b & c & d & e & x & g & h & i & k & l       '& b '\ny2IL&           a & b & c & d & e & x & g & h & i & k & l       'b'\ny2AL&           a & b & c & d & e & x & g & h & i & k & l       '& b & '\nvi&             a & b & c & d & e &___& g & h & i & k & l\nva&             a & b & c & d & e ____& g & h & i & k & l\nvI&             a & b & c & d & e & _ & g & h & i & k & l\nvA&             a & b & c & d & e ______g & h & i & k & l\nvin&            a & b & c & d & e & x &___& h & i & k & l\nvan&            a & b & c & d & e & x ____& h & i & k & l\nvIn&            a & b & c & d & e & x & _ & h & i & k & l\nvAn&            a & b & c & d & e & x ______h & i & k & l\nvil&            a & b & c & d &___& x & g & h & i & k & l\nval&            a & b & c & d ____& x & g & h & i & k & l\nvIl&            a & b & c & d & _ & x & g & h & i & k & l\nvAl&            a & b & c & d ______x & g & h & i & k & l\nviN&            a & b & c & d & e & x & g &___& i & k & l\nvaN&            a & b & c & d & e & x & g ____& i & k & l\nvIN&            a & b & c & d & e & x & g & _ & i & k & l\nvAN&            a & b & c & d & e & x & g ______i & k & l\nviL&            a & b & c &___& e & x & g & h & i & k & l\nvaL&            a & b & c ____& e & x & g & h & i & k & l\nvIL&            a & b & c & _ & e & x & g & h & i & k & l\nvAL&            a & b & c ______e & x & g & h & i & k & l\nv1i&            a & b & c & d & e &___& g & h & i & k & l\nv1a&            a & b & c & d & e ____& g & h & i & k & l\nv1I&            a & b & c & d & e & _ & g & h & i & k & l\nv1A&            a & b & c & d & e ______g & h & i & k & l\nv1in&           a & b & c & d & e & x &___& h & i & k & l\nv1an&           a & b & c & d & e & x ____& h & i & k & l\nv1In&           a & b & c & d & e & x & _ & h & i & k & l\nv1An&           a & b & c & d & e & x ______h & i & k & l\nv1il&           a & b & c & d &___& x & g & h & i & k & l\nv1al&           a & b & c & d ____& x & g & h & i & k & l\nv1Il&           a & b & c & d & _ & x & g & h & i & k & l\nv1Al&           a & b & c & d ______x & g & h & i & k & l\nv1iN&           a & b & c & d & e & x & g &___& i & k & l\nv1aN&           a & b & c & d & e & x & g ____& i & k & l\nv1IN&           a & b & c & d & e & x & g & _ & i & k & l\nv1AN&           a & b & c & d & e & x & g ______i & k & l\nv1iL&           a & b & c &___& e & x & g & h & i & k & l\nv1aL&           a & b & c ____& e & x & g & h & i & k & l\nv1IL&           a & b & c & _ & e & x & g & h & i & k & l\nv1AL&           a & b & c ______e & x & g & h & i & k & l\nv2i&            a & b & c & d & e &___& g & h & i & k & l\nv2a&            a & b & c & d & e ____& g & h & i & k & l\nv2I&            a & b & c & d & e & _ & g & h & i & k & l\nv2A&            a & b & c & d & e ______g & h & i & k & l\nv2in&           a & b & c & d & e & x & g &___& i & k & l\nv2an&           a & b & c & d & e & x & g ____& i & k & l\nv2In&           a & b & c & d & e & x & g & _ & i & k & l\nv2An&           a & b & c & d & e & x & g ______i & k & l\nv2il&           a & b & c &___& e & x & g & h & i & k & l\nv2al&           a & b & c ____& e & x & g & h & i & k & l\nv2Il&           a & b & c & _ & e & x & g & h & i & k & l\nv2Al&           a & b & c ______e & x & g & h & i & k & l\nv2iN&           a & b & c & d & e & x & g & h & i &___& l\nv2aN&           a & b & c & d & e & x & g & h & i ____& l\nv2IN&           a & b & c & d & e & x & g & h & i & _ & l\nv2AN&           a & b & c & d & e & x & g & h & i ______l\nv2iL&           a &___& c & d & e & x & g & h & i & k & l\nv2aL&           a ____& c & d & e & x & g & h & i & k & l\nv2IL&           a & _ & c & d & e & x & g & h & i & k & l\nv2AL&           a ______c & d & e & x & g & h & i & k & l\n\n"
  },
  {
    "path": ".vim/bundle/targets.vim/test/test1.out",
    "content": "a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g\nci(             a ( b ) ( c ) ( (_) ) ( e ) ( f ) g\nci)             a ( b ) ( c ) ( (_) ) ( e ) ( f ) g\ncib             a ( b ) ( c ) ( (_) ) ( e ) ( f ) g\nca(             a ( b ) ( c ) ( _ ) ( e ) ( f ) g\nca)             a ( b ) ( c ) ( _ ) ( e ) ( f ) g\ncab             a ( b ) ( c ) ( _ ) ( e ) ( f ) g\ncI(             a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\ncI)             a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\ncIb             a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\ncA(             a ( b ) ( c ) ( _) ( e ) ( f ) g\ncA)             a ( b ) ( c ) ( _) ( e ) ( f ) g\ncAb             a ( b ) ( c ) ( _) ( e ) ( f ) g\ncin(            a ( b ) ( c ) ( ( x ) ) (_) ( f ) g\ncin)            a ( b ) ( c ) ( ( x ) ) (_) ( f ) g\ncinb            a ( b ) ( c ) ( ( x ) ) (_) ( f ) g\ncan(            a ( b ) ( c ) ( ( x ) ) _ ( f ) g\ncan)            a ( b ) ( c ) ( ( x ) ) _ ( f ) g\ncanb            a ( b ) ( c ) ( ( x ) ) _ ( f ) g\ncIn(            a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\ncIn)            a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\ncInb            a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\ncAn(            a ( b ) ( c ) ( ( x ) ) _( f ) g\ncAn)            a ( b ) ( c ) ( ( x ) ) _( f ) g\ncAnb            a ( b ) ( c ) ( ( x ) ) _( f ) g\ncil(            a ( b ) (_) ( ( x ) ) ( e ) ( f ) g\ncil)            a ( b ) (_) ( ( x ) ) ( e ) ( f ) g\ncilb            a ( b ) (_) ( ( x ) ) ( e ) ( f ) g\ncal(            a ( b ) _ ( ( x ) ) ( e ) ( f ) g\ncal)            a ( b ) _ ( ( x ) ) ( e ) ( f ) g\ncalb            a ( b ) _ ( ( x ) ) ( e ) ( f ) g\ncIl(            a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\ncIl)            a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\ncIlb            a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\ncAl(            a ( b ) _( ( x ) ) ( e ) ( f ) g\ncAl)            a ( b ) _( ( x ) ) ( e ) ( f ) g\ncAlb            a ( b ) _( ( x ) ) ( e ) ( f ) g\nc1i(            a ( b ) ( c ) ( (_) ) ( e ) ( f ) g\nc1i)            a ( b ) ( c ) ( (_) ) ( e ) ( f ) g\nc1ib            a ( b ) ( c ) ( (_) ) ( e ) ( f ) g\nc1a(            a ( b ) ( c ) ( _ ) ( e ) ( f ) g\nc1a)            a ( b ) ( c ) ( _ ) ( e ) ( f ) g\nc1ab            a ( b ) ( c ) ( _ ) ( e ) ( f ) g\nc1I(            a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nc1I)            a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nc1Ib            a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nc1A(            a ( b ) ( c ) ( _) ( e ) ( f ) g\nc1A)            a ( b ) ( c ) ( _) ( e ) ( f ) g\nc1Ab            a ( b ) ( c ) ( _) ( e ) ( f ) g\nc1in(           a ( b ) ( c ) ( ( x ) ) (_) ( f ) g\nc1in)           a ( b ) ( c ) ( ( x ) ) (_) ( f ) g\nc1inb           a ( b ) ( c ) ( ( x ) ) (_) ( f ) g\nc1an(           a ( b ) ( c ) ( ( x ) ) _ ( f ) g\nc1an)           a ( b ) ( c ) ( ( x ) ) _ ( f ) g\nc1anb           a ( b ) ( c ) ( ( x ) ) _ ( f ) g\nc1In(           a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nc1In)           a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nc1Inb           a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nc1An(           a ( b ) ( c ) ( ( x ) ) _( f ) g\nc1An)           a ( b ) ( c ) ( ( x ) ) _( f ) g\nc1Anb           a ( b ) ( c ) ( ( x ) ) _( f ) g\nc1il(           a ( b ) (_) ( ( x ) ) ( e ) ( f ) g\nc1il)           a ( b ) (_) ( ( x ) ) ( e ) ( f ) g\nc1ilb           a ( b ) (_) ( ( x ) ) ( e ) ( f ) g\nc1al(           a ( b ) _ ( ( x ) ) ( e ) ( f ) g\nc1al)           a ( b ) _ ( ( x ) ) ( e ) ( f ) g\nc1alb           a ( b ) _ ( ( x ) ) ( e ) ( f ) g\nc1Il(           a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nc1Il)           a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nc1Ilb           a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nc1Al(           a ( b ) _( ( x ) ) ( e ) ( f ) g\nc1Al)           a ( b ) _( ( x ) ) ( e ) ( f ) g\nc1Alb           a ( b ) _( ( x ) ) ( e ) ( f ) g\nc2i(            a ( b ) ( c ) (_) ( e ) ( f ) g\nc2i)            a ( b ) ( c ) (_) ( e ) ( f ) g\nc2ib            a ( b ) ( c ) (_) ( e ) ( f ) g\nc2a(            a ( b ) ( c ) _ ( e ) ( f ) g\nc2a)            a ( b ) ( c ) _ ( e ) ( f ) g\nc2ab            a ( b ) ( c ) _ ( e ) ( f ) g\nc2I(            a ( b ) ( c ) ( _ ) ( e ) ( f ) g\nc2I)            a ( b ) ( c ) ( _ ) ( e ) ( f ) g\nc2Ib            a ( b ) ( c ) ( _ ) ( e ) ( f ) g\nc2A(            a ( b ) ( c ) _( e ) ( f ) g\nc2A)            a ( b ) ( c ) _( e ) ( f ) g\nc2Ab            a ( b ) ( c ) _( e ) ( f ) g\nc2in(           a ( b ) ( c ) ( ( x ) ) ( e ) (_) g\nc2in)           a ( b ) ( c ) ( ( x ) ) ( e ) (_) g\nc2inb           a ( b ) ( c ) ( ( x ) ) ( e ) (_) g\nc2an(           a ( b ) ( c ) ( ( x ) ) ( e ) _ g\nc2an)           a ( b ) ( c ) ( ( x ) ) ( e ) _ g\nc2anb           a ( b ) ( c ) ( ( x ) ) ( e ) _ g\nc2In(           a ( b ) ( c ) ( ( x ) ) ( e ) ( _ ) g\nc2In)           a ( b ) ( c ) ( ( x ) ) ( e ) ( _ ) g\nc2Inb           a ( b ) ( c ) ( ( x ) ) ( e ) ( _ ) g\nc2An(           a ( b ) ( c ) ( ( x ) ) ( e ) _g\nc2An)           a ( b ) ( c ) ( ( x ) ) ( e ) _g\nc2Anb           a ( b ) ( c ) ( ( x ) ) ( e ) _g\nc2il(           a (_) ( c ) ( ( x ) ) ( e ) ( f ) g\nc2il)           a (_) ( c ) ( ( x ) ) ( e ) ( f ) g\nc2ilb           a (_) ( c ) ( ( x ) ) ( e ) ( f ) g\nc2al(           a _ ( c ) ( ( x ) ) ( e ) ( f ) g\nc2al)           a _ ( c ) ( ( x ) ) ( e ) ( f ) g\nc2alb           a _ ( c ) ( ( x ) ) ( e ) ( f ) g\nc2Il(           a ( _ ) ( c ) ( ( x ) ) ( e ) ( f ) g\nc2Il)           a ( _ ) ( c ) ( ( x ) ) ( e ) ( f ) g\nc2Ilb           a ( _ ) ( c ) ( ( x ) ) ( e ) ( f ) g\nc2Al(           a _( c ) ( ( x ) ) ( e ) ( f ) g\nc2Al)           a _( c ) ( ( x ) ) ( e ) ( f ) g\nc2Alb           a _( c ) ( ( x ) ) ( e ) ( f ) g\ndi(             a ( b ) ( c ) ( () ) ( e ) ( f ) g\ndi)             a ( b ) ( c ) ( () ) ( e ) ( f ) g\ndib             a ( b ) ( c ) ( () ) ( e ) ( f ) g\nda(             a ( b ) ( c ) (  ) ( e ) ( f ) g\nda)             a ( b ) ( c ) (  ) ( e ) ( f ) g\ndab             a ( b ) ( c ) (  ) ( e ) ( f ) g\ndI(             a ( b ) ( c ) ( (  ) ) ( e ) ( f ) g\ndI)             a ( b ) ( c ) ( (  ) ) ( e ) ( f ) g\ndIb             a ( b ) ( c ) ( (  ) ) ( e ) ( f ) g\ndA(             a ( b ) ( c ) ( ) ( e ) ( f ) g\ndA)             a ( b ) ( c ) ( ) ( e ) ( f ) g\ndAb             a ( b ) ( c ) ( ) ( e ) ( f ) g\ndin(            a ( b ) ( c ) ( ( x ) ) () ( f ) g\ndin)            a ( b ) ( c ) ( ( x ) ) () ( f ) g\ndinb            a ( b ) ( c ) ( ( x ) ) () ( f ) g\ndan(            a ( b ) ( c ) ( ( x ) )  ( f ) g\ndan)            a ( b ) ( c ) ( ( x ) )  ( f ) g\ndanb            a ( b ) ( c ) ( ( x ) )  ( f ) g\ndIn(            a ( b ) ( c ) ( ( x ) ) (  ) ( f ) g\ndIn)            a ( b ) ( c ) ( ( x ) ) (  ) ( f ) g\ndInb            a ( b ) ( c ) ( ( x ) ) (  ) ( f ) g\ndAn(            a ( b ) ( c ) ( ( x ) ) ( f ) g\ndAn)            a ( b ) ( c ) ( ( x ) ) ( f ) g\ndAnb            a ( b ) ( c ) ( ( x ) ) ( f ) g\ndil(            a ( b ) () ( ( x ) ) ( e ) ( f ) g\ndil)            a ( b ) () ( ( x ) ) ( e ) ( f ) g\ndilb            a ( b ) () ( ( x ) ) ( e ) ( f ) g\ndal(            a ( b )  ( ( x ) ) ( e ) ( f ) g\ndal)            a ( b )  ( ( x ) ) ( e ) ( f ) g\ndalb            a ( b )  ( ( x ) ) ( e ) ( f ) g\ndIl(            a ( b ) (  ) ( ( x ) ) ( e ) ( f ) g\ndIl)            a ( b ) (  ) ( ( x ) ) ( e ) ( f ) g\ndIlb            a ( b ) (  ) ( ( x ) ) ( e ) ( f ) g\ndAl(            a ( b ) ( ( x ) ) ( e ) ( f ) g\ndAl)            a ( b ) ( ( x ) ) ( e ) ( f ) g\ndAlb            a ( b ) ( ( x ) ) ( e ) ( f ) g\nd1i(            a ( b ) ( c ) ( () ) ( e ) ( f ) g\nd1i)            a ( b ) ( c ) ( () ) ( e ) ( f ) g\nd1ib            a ( b ) ( c ) ( () ) ( e ) ( f ) g\nd1a(            a ( b ) ( c ) (  ) ( e ) ( f ) g\nd1a)            a ( b ) ( c ) (  ) ( e ) ( f ) g\nd1ab            a ( b ) ( c ) (  ) ( e ) ( f ) g\nd1I(            a ( b ) ( c ) ( (  ) ) ( e ) ( f ) g\nd1I)            a ( b ) ( c ) ( (  ) ) ( e ) ( f ) g\nd1Ib            a ( b ) ( c ) ( (  ) ) ( e ) ( f ) g\nd1A(            a ( b ) ( c ) ( ) ( e ) ( f ) g\nd1A)            a ( b ) ( c ) ( ) ( e ) ( f ) g\nd1Ab            a ( b ) ( c ) ( ) ( e ) ( f ) g\nd1in(           a ( b ) ( c ) ( ( x ) ) () ( f ) g\nd1in)           a ( b ) ( c ) ( ( x ) ) () ( f ) g\nd1inb           a ( b ) ( c ) ( ( x ) ) () ( f ) g\nd1an(           a ( b ) ( c ) ( ( x ) )  ( f ) g\nd1an)           a ( b ) ( c ) ( ( x ) )  ( f ) g\nd1anb           a ( b ) ( c ) ( ( x ) )  ( f ) g\nd1In(           a ( b ) ( c ) ( ( x ) ) (  ) ( f ) g\nd1In)           a ( b ) ( c ) ( ( x ) ) (  ) ( f ) g\nd1Inb           a ( b ) ( c ) ( ( x ) ) (  ) ( f ) g\nd1An(           a ( b ) ( c ) ( ( x ) ) ( f ) g\nd1An)           a ( b ) ( c ) ( ( x ) ) ( f ) g\nd1Anb           a ( b ) ( c ) ( ( x ) ) ( f ) g\nd1il(           a ( b ) () ( ( x ) ) ( e ) ( f ) g\nd1il)           a ( b ) () ( ( x ) ) ( e ) ( f ) g\nd1ilb           a ( b ) () ( ( x ) ) ( e ) ( f ) g\nd1al(           a ( b )  ( ( x ) ) ( e ) ( f ) g\nd1al)           a ( b )  ( ( x ) ) ( e ) ( f ) g\nd1alb           a ( b )  ( ( x ) ) ( e ) ( f ) g\nd1Il(           a ( b ) (  ) ( ( x ) ) ( e ) ( f ) g\nd1Il)           a ( b ) (  ) ( ( x ) ) ( e ) ( f ) g\nd1Ilb           a ( b ) (  ) ( ( x ) ) ( e ) ( f ) g\nd1Al(           a ( b ) ( ( x ) ) ( e ) ( f ) g\nd1Al)           a ( b ) ( ( x ) ) ( e ) ( f ) g\nd1Alb           a ( b ) ( ( x ) ) ( e ) ( f ) g\nd2i(            a ( b ) ( c ) () ( e ) ( f ) g\nd2i)            a ( b ) ( c ) () ( e ) ( f ) g\nd2ib            a ( b ) ( c ) () ( e ) ( f ) g\nd2a(            a ( b ) ( c )  ( e ) ( f ) g\nd2a)            a ( b ) ( c )  ( e ) ( f ) g\nd2ab            a ( b ) ( c )  ( e ) ( f ) g\nd2I(            a ( b ) ( c ) (  ) ( e ) ( f ) g\nd2I)            a ( b ) ( c ) (  ) ( e ) ( f ) g\nd2Ib            a ( b ) ( c ) (  ) ( e ) ( f ) g\nd2A(            a ( b ) ( c ) ( e ) ( f ) g\nd2A)            a ( b ) ( c ) ( e ) ( f ) g\nd2Ab            a ( b ) ( c ) ( e ) ( f ) g\nd2in(           a ( b ) ( c ) ( ( x ) ) ( e ) () g\nd2in)           a ( b ) ( c ) ( ( x ) ) ( e ) () g\nd2inb           a ( b ) ( c ) ( ( x ) ) ( e ) () g\nd2an(           a ( b ) ( c ) ( ( x ) ) ( e )  g\nd2an)           a ( b ) ( c ) ( ( x ) ) ( e )  g\nd2anb           a ( b ) ( c ) ( ( x ) ) ( e )  g\nd2In(           a ( b ) ( c ) ( ( x ) ) ( e ) (  ) g\nd2In)           a ( b ) ( c ) ( ( x ) ) ( e ) (  ) g\nd2Inb           a ( b ) ( c ) ( ( x ) ) ( e ) (  ) g\nd2An(           a ( b ) ( c ) ( ( x ) ) ( e ) g\nd2An)           a ( b ) ( c ) ( ( x ) ) ( e ) g\nd2Anb           a ( b ) ( c ) ( ( x ) ) ( e ) g\nd2il(           a () ( c ) ( ( x ) ) ( e ) ( f ) g\nd2il)           a () ( c ) ( ( x ) ) ( e ) ( f ) g\nd2ilb           a () ( c ) ( ( x ) ) ( e ) ( f ) g\nd2al(           a  ( c ) ( ( x ) ) ( e ) ( f ) g\nd2al)           a  ( c ) ( ( x ) ) ( e ) ( f ) g\nd2alb           a  ( c ) ( ( x ) ) ( e ) ( f ) g\nd2Il(           a (  ) ( c ) ( ( x ) ) ( e ) ( f ) g\nd2Il)           a (  ) ( c ) ( ( x ) ) ( e ) ( f ) g\nd2Ilb           a (  ) ( c ) ( ( x ) ) ( e ) ( f ) g\nd2Al(           a ( c ) ( ( x ) ) ( e ) ( f ) g\nd2Al)           a ( c ) ( ( x ) ) ( e ) ( f ) g\nd2Alb           a ( c ) ( ( x ) ) ( e ) ( f ) g\nyi(             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' x '\nyi)             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' x '\nyib             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' x '\nya(             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\nya)             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\nyab             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\nyI(             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'x'\nyI)             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'x'\nyIb             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'x'\nyA(             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x ) '\nyA)             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x ) '\nyAb             a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x ) '\nyin(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' e '\nyin)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' e '\nyinb            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' e '\nyan(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e )'\nyan)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e )'\nyanb            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e )'\nyIn(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'e'\nyIn)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'e'\nyInb            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'e'\nyAn(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e ) '\nyAn)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e ) '\nyAnb            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e ) '\nyil(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' c '\nyil)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' c '\nyilb            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' c '\nyal(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c )'\nyal)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c )'\nyalb            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c )'\nyIl(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'c'\nyIl)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'c'\nyIlb            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'c'\nyAl(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c ) '\nyAl)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c ) '\nyAlb            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c ) '\ny1i(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' x '\ny1i)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' x '\ny1ib            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' x '\ny1a(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\ny1a)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\ny1ab            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\ny1I(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'x'\ny1I)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'x'\ny1Ib            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'x'\ny1A(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x ) '\ny1A)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x ) '\ny1Ab            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x ) '\ny1in(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' e '\ny1in)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' e '\ny1inb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' e '\ny1an(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e )'\ny1an)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e )'\ny1anb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e )'\ny1In(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'e'\ny1In)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'e'\ny1Inb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'e'\ny1An(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e ) '\ny1An)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e ) '\ny1Anb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( e ) '\ny1il(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' c '\ny1il)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' c '\ny1ilb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' c '\ny1al(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c )'\ny1al)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c )'\ny1alb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c )'\ny1Il(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'c'\ny1Il)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'c'\ny1Ilb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'c'\ny1Al(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c ) '\ny1Al)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c ) '\ny1Alb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( c ) '\ny2i(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' ( x ) '\ny2i)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' ( x ) '\ny2ib            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' ( x ) '\ny2a(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( ( x ) )'\ny2a)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( ( x ) )'\ny2ab            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( ( x ) )'\ny2I(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\ny2I)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\ny2Ib            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( x )'\ny2A(            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( ( x ) ) '\ny2A)            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( ( x ) ) '\ny2Ab            a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( ( x ) ) '\ny2in(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' f '\ny2in)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' f '\ny2inb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' f '\ny2an(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( f )'\ny2an)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( f )'\ny2anb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( f )'\ny2In(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'f'\ny2In)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'f'\ny2Inb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'f'\ny2An(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( f ) '\ny2An)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( f ) '\ny2Anb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( f ) '\ny2il(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' b '\ny2il)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' b '\ny2ilb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           ' b '\ny2al(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( b )'\ny2al)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( b )'\ny2alb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( b )'\ny2Il(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'b'\ny2Il)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'b'\ny2Ilb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           'b'\ny2Al(           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( b ) '\ny2Al)           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( b ) '\ny2Alb           a ( b ) ( c ) ( ( x ) ) ( e ) ( f ) g           '( b ) '\nvi(             a ( b ) ( c ) ( (___) ) ( e ) ( f ) g\nvi)             a ( b ) ( c ) ( (___) ) ( e ) ( f ) g\nvib             a ( b ) ( c ) ( (___) ) ( e ) ( f ) g\nva(             a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nva)             a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nvab             a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nvI(             a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nvI)             a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nvIb             a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nvA(             a ( b ) ( c ) ( ______) ( e ) ( f ) g\nvA)             a ( b ) ( c ) ( ______) ( e ) ( f ) g\nvAb             a ( b ) ( c ) ( ______) ( e ) ( f ) g\nvin(            a ( b ) ( c ) ( ( x ) ) (___) ( f ) g\nvin)            a ( b ) ( c ) ( ( x ) ) (___) ( f ) g\nvinb            a ( b ) ( c ) ( ( x ) ) (___) ( f ) g\nvan(            a ( b ) ( c ) ( ( x ) ) _____ ( f ) g\nvan)            a ( b ) ( c ) ( ( x ) ) _____ ( f ) g\nvanb            a ( b ) ( c ) ( ( x ) ) _____ ( f ) g\nvIn(            a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nvIn)            a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nvInb            a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nvAn(            a ( b ) ( c ) ( ( x ) ) ______( f ) g\nvAn)            a ( b ) ( c ) ( ( x ) ) ______( f ) g\nvAnb            a ( b ) ( c ) ( ( x ) ) ______( f ) g\nvil(            a ( b ) (___) ( ( x ) ) ( e ) ( f ) g\nvil)            a ( b ) (___) ( ( x ) ) ( e ) ( f ) g\nvilb            a ( b ) (___) ( ( x ) ) ( e ) ( f ) g\nval(            a ( b ) _____ ( ( x ) ) ( e ) ( f ) g\nval)            a ( b ) _____ ( ( x ) ) ( e ) ( f ) g\nvalb            a ( b ) _____ ( ( x ) ) ( e ) ( f ) g\nvIl(            a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nvIl)            a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nvIlb            a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nvAl(            a ( b ) ______( ( x ) ) ( e ) ( f ) g\nvAl)            a ( b ) ______( ( x ) ) ( e ) ( f ) g\nvAlb            a ( b ) ______( ( x ) ) ( e ) ( f ) g\nv1i(            a ( b ) ( c ) ( (___) ) ( e ) ( f ) g\nv1i)            a ( b ) ( c ) ( (___) ) ( e ) ( f ) g\nv1ib            a ( b ) ( c ) ( (___) ) ( e ) ( f ) g\nv1a(            a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nv1a)            a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nv1ab            a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nv1I(            a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nv1I)            a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nv1Ib            a ( b ) ( c ) ( ( _ ) ) ( e ) ( f ) g\nv1A(            a ( b ) ( c ) ( ______) ( e ) ( f ) g\nv1A)            a ( b ) ( c ) ( ______) ( e ) ( f ) g\nv1Ab            a ( b ) ( c ) ( ______) ( e ) ( f ) g\nv1in(           a ( b ) ( c ) ( ( x ) ) (___) ( f ) g\nv1in)           a ( b ) ( c ) ( ( x ) ) (___) ( f ) g\nv1inb           a ( b ) ( c ) ( ( x ) ) (___) ( f ) g\nv1an(           a ( b ) ( c ) ( ( x ) ) _____ ( f ) g\nv1an)           a ( b ) ( c ) ( ( x ) ) _____ ( f ) g\nv1anb           a ( b ) ( c ) ( ( x ) ) _____ ( f ) g\nv1In(           a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nv1In)           a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nv1Inb           a ( b ) ( c ) ( ( x ) ) ( _ ) ( f ) g\nv1An(           a ( b ) ( c ) ( ( x ) ) ______( f ) g\nv1An)           a ( b ) ( c ) ( ( x ) ) ______( f ) g\nv1Anb           a ( b ) ( c ) ( ( x ) ) ______( f ) g\nv1il(           a ( b ) (___) ( ( x ) ) ( e ) ( f ) g\nv1il)           a ( b ) (___) ( ( x ) ) ( e ) ( f ) g\nv1ilb           a ( b ) (___) ( ( x ) ) ( e ) ( f ) g\nv1al(           a ( b ) _____ ( ( x ) ) ( e ) ( f ) g\nv1al)           a ( b ) _____ ( ( x ) ) ( e ) ( f ) g\nv1alb           a ( b ) _____ ( ( x ) ) ( e ) ( f ) g\nv1Il(           a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nv1Il)           a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nv1Ilb           a ( b ) ( _ ) ( ( x ) ) ( e ) ( f ) g\nv1Al(           a ( b ) ______( ( x ) ) ( e ) ( f ) g\nv1Al)           a ( b ) ______( ( x ) ) ( e ) ( f ) g\nv1Alb           a ( b ) ______( ( x ) ) ( e ) ( f ) g\nv2i(            a ( b ) ( c ) (_______) ( e ) ( f ) g\nv2i)            a ( b ) ( c ) (_______) ( e ) ( f ) g\nv2ib            a ( b ) ( c ) (_______) ( e ) ( f ) g\nv2a(            a ( b ) ( c ) _________ ( e ) ( f ) g\nv2a)            a ( b ) ( c ) _________ ( e ) ( f ) g\nv2ab            a ( b ) ( c ) _________ ( e ) ( f ) g\nv2I(            a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nv2I)            a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nv2Ib            a ( b ) ( c ) ( _____ ) ( e ) ( f ) g\nv2A(            a ( b ) ( c ) __________( e ) ( f ) g\nv2A)            a ( b ) ( c ) __________( e ) ( f ) g\nv2Ab            a ( b ) ( c ) __________( e ) ( f ) g\nv2in(           a ( b ) ( c ) ( ( x ) ) ( e ) (___) g\nv2in)           a ( b ) ( c ) ( ( x ) ) ( e ) (___) g\nv2inb           a ( b ) ( c ) ( ( x ) ) ( e ) (___) g\nv2an(           a ( b ) ( c ) ( ( x ) ) ( e ) _____ g\nv2an)           a ( b ) ( c ) ( ( x ) ) ( e ) _____ g\nv2anb           a ( b ) ( c ) ( ( x ) ) ( e ) _____ g\nv2In(           a ( b ) ( c ) ( ( x ) ) ( e ) ( _ ) g\nv2In)           a ( b ) ( c ) ( ( x ) ) ( e ) ( _ ) g\nv2Inb           a ( b ) ( c ) ( ( x ) ) ( e ) ( _ ) g\nv2An(           a ( b ) ( c ) ( ( x ) ) ( e ) ______g\nv2An)           a ( b ) ( c ) ( ( x ) ) ( e ) ______g\nv2Anb           a ( b ) ( c ) ( ( x ) ) ( e ) ______g\nv2il(           a (___) ( c ) ( ( x ) ) ( e ) ( f ) g\nv2il)           a (___) ( c ) ( ( x ) ) ( e ) ( f ) g\nv2ilb           a (___) ( c ) ( ( x ) ) ( e ) ( f ) g\nv2al(           a _____ ( c ) ( ( x ) ) ( e ) ( f ) g\nv2al)           a _____ ( c ) ( ( x ) ) ( e ) ( f ) g\nv2alb           a _____ ( c ) ( ( x ) ) ( e ) ( f ) g\nv2Il(           a ( _ ) ( c ) ( ( x ) ) ( e ) ( f ) g\nv2Il)           a ( _ ) ( c ) ( ( x ) ) ( e ) ( f ) g\nv2Ilb           a ( _ ) ( c ) ( ( x ) ) ( e ) ( f ) g\nv2Al(           a ______( c ) ( ( x ) ) ( e ) ( f ) g\nv2Al)           a ______( c ) ( ( x ) ) ( e ) ( f ) g\nv2Alb           a ______( c ) ( ( x ) ) ( e ) ( f ) g\na { b } { c } { { x } } { e } { f } g\nci{             a { b } { c } { {_} } { e } { f } g\nci}             a { b } { c } { {_} } { e } { f } g\nciB             a { b } { c } { {_} } { e } { f } g\nca{             a { b } { c } { _ } { e } { f } g\nca}             a { b } { c } { _ } { e } { f } g\ncaB             a { b } { c } { _ } { e } { f } g\ncI{             a { b } { c } { { _ } } { e } { f } g\ncI}             a { b } { c } { { _ } } { e } { f } g\ncIB             a { b } { c } { { _ } } { e } { f } g\ncA{             a { b } { c } { _} { e } { f } g\ncA}             a { b } { c } { _} { e } { f } g\ncAB             a { b } { c } { _} { e } { f } g\ncin{            a { b } { c } { { x } } {_} { f } g\ncin}            a { b } { c } { { x } } {_} { f } g\ncinB            a { b } { c } { { x } } {_} { f } g\ncan{            a { b } { c } { { x } } _ { f } g\ncan}            a { b } { c } { { x } } _ { f } g\ncanB            a { b } { c } { { x } } _ { f } g\ncIn{            a { b } { c } { { x } } { _ } { f } g\ncIn}            a { b } { c } { { x } } { _ } { f } g\ncInB            a { b } { c } { { x } } { _ } { f } g\ncAn{            a { b } { c } { { x } } _{ f } g\ncAn}            a { b } { c } { { x } } _{ f } g\ncAnB            a { b } { c } { { x } } _{ f } g\ncil{            a { b } {_} { { x } } { e } { f } g\ncil}            a { b } {_} { { x } } { e } { f } g\ncilB            a { b } {_} { { x } } { e } { f } g\ncal{            a { b } _ { { x } } { e } { f } g\ncal}            a { b } _ { { x } } { e } { f } g\ncalB            a { b } _ { { x } } { e } { f } g\ncIl{            a { b } { _ } { { x } } { e } { f } g\ncIl}            a { b } { _ } { { x } } { e } { f } g\ncIlB            a { b } { _ } { { x } } { e } { f } g\ncAl{            a { b } _{ { x } } { e } { f } g\ncAl}            a { b } _{ { x } } { e } { f } g\ncAlB            a { b } _{ { x } } { e } { f } g\nc1i{            a { b } { c } { {_} } { e } { f } g\nc1i}            a { b } { c } { {_} } { e } { f } g\nc1iB            a { b } { c } { {_} } { e } { f } g\nc1a{            a { b } { c } { _ } { e } { f } g\nc1a}            a { b } { c } { _ } { e } { f } g\nc1aB            a { b } { c } { _ } { e } { f } g\nc1I{            a { b } { c } { { _ } } { e } { f } g\nc1I}            a { b } { c } { { _ } } { e } { f } g\nc1IB            a { b } { c } { { _ } } { e } { f } g\nc1A{            a { b } { c } { _} { e } { f } g\nc1A}            a { b } { c } { _} { e } { f } g\nc1AB            a { b } { c } { _} { e } { f } g\nc1in{           a { b } { c } { { x } } {_} { f } g\nc1in}           a { b } { c } { { x } } {_} { f } g\nc1inB           a { b } { c } { { x } } {_} { f } g\nc1an{           a { b } { c } { { x } } _ { f } g\nc1an}           a { b } { c } { { x } } _ { f } g\nc1anB           a { b } { c } { { x } } _ { f } g\nc1In{           a { b } { c } { { x } } { _ } { f } g\nc1In}           a { b } { c } { { x } } { _ } { f } g\nc1InB           a { b } { c } { { x } } { _ } { f } g\nc1An{           a { b } { c } { { x } } _{ f } g\nc1An}           a { b } { c } { { x } } _{ f } g\nc1AnB           a { b } { c } { { x } } _{ f } g\nc1il{           a { b } {_} { { x } } { e } { f } g\nc1il}           a { b } {_} { { x } } { e } { f } g\nc1ilB           a { b } {_} { { x } } { e } { f } g\nc1al{           a { b } _ { { x } } { e } { f } g\nc1al}           a { b } _ { { x } } { e } { f } g\nc1alB           a { b } _ { { x } } { e } { f } g\nc1Il{           a { b } { _ } { { x } } { e } { f } g\nc1Il}           a { b } { _ } { { x } } { e } { f } g\nc1IlB           a { b } { _ } { { x } } { e } { f } g\nc1Al{           a { b } _{ { x } } { e } { f } g\nc1Al}           a { b } _{ { x } } { e } { f } g\nc1AlB           a { b } _{ { x } } { e } { f } g\nc2i{            a { b } { c } {_} { e } { f } g\nc2i}            a { b } { c } {_} { e } { f } g\nc2iB            a { b } { c } {_} { e } { f } g\nc2a{            a { b } { c } _ { e } { f } g\nc2a}            a { b } { c } _ { e } { f } g\nc2aB            a { b } { c } _ { e } { f } g\nc2I{            a { b } { c } { _ } { e } { f } g\nc2I}            a { b } { c } { _ } { e } { f } g\nc2IB            a { b } { c } { _ } { e } { f } g\nc2A{            a { b } { c } _{ e } { f } g\nc2A}            a { b } { c } _{ e } { f } g\nc2AB            a { b } { c } _{ e } { f } g\nc2in{           a { b } { c } { { x } } { e } {_} g\nc2in}           a { b } { c } { { x } } { e } {_} g\nc2inB           a { b } { c } { { x } } { e } {_} g\nc2an{           a { b } { c } { { x } } { e } _ g\nc2an}           a { b } { c } { { x } } { e } _ g\nc2anB           a { b } { c } { { x } } { e } _ g\nc2In{           a { b } { c } { { x } } { e } { _ } g\nc2In}           a { b } { c } { { x } } { e } { _ } g\nc2InB           a { b } { c } { { x } } { e } { _ } g\nc2An{           a { b } { c } { { x } } { e } _g\nc2An}           a { b } { c } { { x } } { e } _g\nc2AnB           a { b } { c } { { x } } { e } _g\nc2il{           a {_} { c } { { x } } { e } { f } g\nc2il}           a {_} { c } { { x } } { e } { f } g\nc2ilB           a {_} { c } { { x } } { e } { f } g\nc2al{           a _ { c } { { x } } { e } { f } g\nc2al}           a _ { c } { { x } } { e } { f } g\nc2alB           a _ { c } { { x } } { e } { f } g\nc2Il{           a { _ } { c } { { x } } { e } { f } g\nc2Il}           a { _ } { c } { { x } } { e } { f } g\nc2IlB           a { _ } { c } { { x } } { e } { f } g\nc2Al{           a _{ c } { { x } } { e } { f } g\nc2Al}           a _{ c } { { x } } { e } { f } g\nc2AlB           a _{ c } { { x } } { e } { f } g\ndi{             a { b } { c } { {} } { e } { f } g\ndi}             a { b } { c } { {} } { e } { f } g\ndiB             a { b } { c } { {} } { e } { f } g\nda{             a { b } { c } {  } { e } { f } g\nda}             a { b } { c } {  } { e } { f } g\ndaB             a { b } { c } {  } { e } { f } g\ndI{             a { b } { c } { {  } } { e } { f } g\ndI}             a { b } { c } { {  } } { e } { f } g\ndIB             a { b } { c } { {  } } { e } { f } g\ndA{             a { b } { c } { } { e } { f } g\ndA}             a { b } { c } { } { e } { f } g\ndAB             a { b } { c } { } { e } { f } g\ndin{            a { b } { c } { { x } } {} { f } g\ndin}            a { b } { c } { { x } } {} { f } g\ndinB            a { b } { c } { { x } } {} { f } g\ndan{            a { b } { c } { { x } }  { f } g\ndan}            a { b } { c } { { x } }  { f } g\ndanB            a { b } { c } { { x } }  { f } g\ndIn{            a { b } { c } { { x } } {  } { f } g\ndIn}            a { b } { c } { { x } } {  } { f } g\ndInB            a { b } { c } { { x } } {  } { f } g\ndAn{            a { b } { c } { { x } } { f } g\ndAn}            a { b } { c } { { x } } { f } g\ndAnB            a { b } { c } { { x } } { f } g\ndil{            a { b } {} { { x } } { e } { f } g\ndil}            a { b } {} { { x } } { e } { f } g\ndilB            a { b } {} { { x } } { e } { f } g\ndal{            a { b }  { { x } } { e } { f } g\ndal}            a { b }  { { x } } { e } { f } g\ndalB            a { b }  { { x } } { e } { f } g\ndIl{            a { b } {  } { { x } } { e } { f } g\ndIl}            a { b } {  } { { x } } { e } { f } g\ndIlB            a { b } {  } { { x } } { e } { f } g\ndAl{            a { b } { { x } } { e } { f } g\ndAl}            a { b } { { x } } { e } { f } g\ndAlB            a { b } { { x } } { e } { f } g\nd1i{            a { b } { c } { {} } { e } { f } g\nd1i}            a { b } { c } { {} } { e } { f } g\nd1iB            a { b } { c } { {} } { e } { f } g\nd1a{            a { b } { c } {  } { e } { f } g\nd1a}            a { b } { c } {  } { e } { f } g\nd1aB            a { b } { c } {  } { e } { f } g\nd1I{            a { b } { c } { {  } } { e } { f } g\nd1I}            a { b } { c } { {  } } { e } { f } g\nd1IB            a { b } { c } { {  } } { e } { f } g\nd1A{            a { b } { c } { } { e } { f } g\nd1A}            a { b } { c } { } { e } { f } g\nd1AB            a { b } { c } { } { e } { f } g\nd1in{           a { b } { c } { { x } } {} { f } g\nd1in}           a { b } { c } { { x } } {} { f } g\nd1inB           a { b } { c } { { x } } {} { f } g\nd1an{           a { b } { c } { { x } }  { f } g\nd1an}           a { b } { c } { { x } }  { f } g\nd1anB           a { b } { c } { { x } }  { f } g\nd1In{           a { b } { c } { { x } } {  } { f } g\nd1In}           a { b } { c } { { x } } {  } { f } g\nd1InB           a { b } { c } { { x } } {  } { f } g\nd1An{           a { b } { c } { { x } } { f } g\nd1An}           a { b } { c } { { x } } { f } g\nd1AnB           a { b } { c } { { x } } { f } g\nd1il{           a { b } {} { { x } } { e } { f } g\nd1il}           a { b } {} { { x } } { e } { f } g\nd1ilB           a { b } {} { { x } } { e } { f } g\nd1al{           a { b }  { { x } } { e } { f } g\nd1al}           a { b }  { { x } } { e } { f } g\nd1alB           a { b }  { { x } } { e } { f } g\nd1Il{           a { b } {  } { { x } } { e } { f } g\nd1Il}           a { b } {  } { { x } } { e } { f } g\nd1IlB           a { b } {  } { { x } } { e } { f } g\nd1Al{           a { b } { { x } } { e } { f } g\nd1Al}           a { b } { { x } } { e } { f } g\nd1AlB           a { b } { { x } } { e } { f } g\nd2i{            a { b } { c } {} { e } { f } g\nd2i}            a { b } { c } {} { e } { f } g\nd2iB            a { b } { c } {} { e } { f } g\nd2a{            a { b } { c }  { e } { f } g\nd2a}            a { b } { c }  { e } { f } g\nd2aB            a { b } { c }  { e } { f } g\nd2I{            a { b } { c } {  } { e } { f } g\nd2I}            a { b } { c } {  } { e } { f } g\nd2IB            a { b } { c } {  } { e } { f } g\nd2A{            a { b } { c } { e } { f } g\nd2A}            a { b } { c } { e } { f } g\nd2AB            a { b } { c } { e } { f } g\nd2in{           a { b } { c } { { x } } { e } {} g\nd2in}           a { b } { c } { { x } } { e } {} g\nd2inB           a { b } { c } { { x } } { e } {} g\nd2an{           a { b } { c } { { x } } { e }  g\nd2an}           a { b } { c } { { x } } { e }  g\nd2anB           a { b } { c } { { x } } { e }  g\nd2In{           a { b } { c } { { x } } { e } {  } g\nd2In}           a { b } { c } { { x } } { e } {  } g\nd2InB           a { b } { c } { { x } } { e } {  } g\nd2An{           a { b } { c } { { x } } { e } g\nd2An}           a { b } { c } { { x } } { e } g\nd2AnB           a { b } { c } { { x } } { e } g\nd2il{           a {} { c } { { x } } { e } { f } g\nd2il}           a {} { c } { { x } } { e } { f } g\nd2ilB           a {} { c } { { x } } { e } { f } g\nd2al{           a  { c } { { x } } { e } { f } g\nd2al}           a  { c } { { x } } { e } { f } g\nd2alB           a  { c } { { x } } { e } { f } g\nd2Il{           a {  } { c } { { x } } { e } { f } g\nd2Il}           a {  } { c } { { x } } { e } { f } g\nd2IlB           a {  } { c } { { x } } { e } { f } g\nd2Al{           a { c } { { x } } { e } { f } g\nd2Al}           a { c } { { x } } { e } { f } g\nd2AlB           a { c } { { x } } { e } { f } g\nyi{             a { b } { c } { { x } } { e } { f } g           ' x '\nyi}             a { b } { c } { { x } } { e } { f } g           ' x '\nyiB             a { b } { c } { { x } } { e } { f } g           ' x '\nya{             a { b } { c } { { x } } { e } { f } g           '{ x }'\nya}             a { b } { c } { { x } } { e } { f } g           '{ x }'\nyaB             a { b } { c } { { x } } { e } { f } g           '{ x }'\nyI{             a { b } { c } { { x } } { e } { f } g           'x'\nyI}             a { b } { c } { { x } } { e } { f } g           'x'\nyIB             a { b } { c } { { x } } { e } { f } g           'x'\nyA{             a { b } { c } { { x } } { e } { f } g           '{ x } '\nyA}             a { b } { c } { { x } } { e } { f } g           '{ x } '\nyAB             a { b } { c } { { x } } { e } { f } g           '{ x } '\nyin{            a { b } { c } { { x } } { e } { f } g           ' e '\nyin}            a { b } { c } { { x } } { e } { f } g           ' e '\nyinB            a { b } { c } { { x } } { e } { f } g           ' e '\nyan{            a { b } { c } { { x } } { e } { f } g           '{ e }'\nyan}            a { b } { c } { { x } } { e } { f } g           '{ e }'\nyanB            a { b } { c } { { x } } { e } { f } g           '{ e }'\nyIn{            a { b } { c } { { x } } { e } { f } g           'e'\nyIn}            a { b } { c } { { x } } { e } { f } g           'e'\nyInB            a { b } { c } { { x } } { e } { f } g           'e'\nyAn{            a { b } { c } { { x } } { e } { f } g           '{ e } '\nyAn}            a { b } { c } { { x } } { e } { f } g           '{ e } '\nyAnB            a { b } { c } { { x } } { e } { f } g           '{ e } '\nyil{            a { b } { c } { { x } } { e } { f } g           ' c '\nyil}            a { b } { c } { { x } } { e } { f } g           ' c '\nyilB            a { b } { c } { { x } } { e } { f } g           ' c '\nyal{            a { b } { c } { { x } } { e } { f } g           '{ c }'\nyal}            a { b } { c } { { x } } { e } { f } g           '{ c }'\nyalB            a { b } { c } { { x } } { e } { f } g           '{ c }'\nyIl{            a { b } { c } { { x } } { e } { f } g           'c'\nyIl}            a { b } { c } { { x } } { e } { f } g           'c'\nyIlB            a { b } { c } { { x } } { e } { f } g           'c'\nyAl{            a { b } { c } { { x } } { e } { f } g           '{ c } '\nyAl}            a { b } { c } { { x } } { e } { f } g           '{ c } '\nyAlB            a { b } { c } { { x } } { e } { f } g           '{ c } '\ny1i{            a { b } { c } { { x } } { e } { f } g           ' x '\ny1i}            a { b } { c } { { x } } { e } { f } g           ' x '\ny1iB            a { b } { c } { { x } } { e } { f } g           ' x '\ny1a{            a { b } { c } { { x } } { e } { f } g           '{ x }'\ny1a}            a { b } { c } { { x } } { e } { f } g           '{ x }'\ny1aB            a { b } { c } { { x } } { e } { f } g           '{ x }'\ny1I{            a { b } { c } { { x } } { e } { f } g           'x'\ny1I}            a { b } { c } { { x } } { e } { f } g           'x'\ny1IB            a { b } { c } { { x } } { e } { f } g           'x'\ny1A{            a { b } { c } { { x } } { e } { f } g           '{ x } '\ny1A}            a { b } { c } { { x } } { e } { f } g           '{ x } '\ny1AB            a { b } { c } { { x } } { e } { f } g           '{ x } '\ny1in{           a { b } { c } { { x } } { e } { f } g           ' e '\ny1in}           a { b } { c } { { x } } { e } { f } g           ' e '\ny1inB           a { b } { c } { { x } } { e } { f } g           ' e '\ny1an{           a { b } { c } { { x } } { e } { f } g           '{ e }'\ny1an}           a { b } { c } { { x } } { e } { f } g           '{ e }'\ny1anB           a { b } { c } { { x } } { e } { f } g           '{ e }'\ny1In{           a { b } { c } { { x } } { e } { f } g           'e'\ny1In}           a { b } { c } { { x } } { e } { f } g           'e'\ny1InB           a { b } { c } { { x } } { e } { f } g           'e'\ny1An{           a { b } { c } { { x } } { e } { f } g           '{ e } '\ny1An}           a { b } { c } { { x } } { e } { f } g           '{ e } '\ny1AnB           a { b } { c } { { x } } { e } { f } g           '{ e } '\ny1il{           a { b } { c } { { x } } { e } { f } g           ' c '\ny1il}           a { b } { c } { { x } } { e } { f } g           ' c '\ny1ilB           a { b } { c } { { x } } { e } { f } g           ' c '\ny1al{           a { b } { c } { { x } } { e } { f } g           '{ c }'\ny1al}           a { b } { c } { { x } } { e } { f } g           '{ c }'\ny1alB           a { b } { c } { { x } } { e } { f } g           '{ c }'\ny1Il{           a { b } { c } { { x } } { e } { f } g           'c'\ny1Il}           a { b } { c } { { x } } { e } { f } g           'c'\ny1IlB           a { b } { c } { { x } } { e } { f } g           'c'\ny1Al{           a { b } { c } { { x } } { e } { f } g           '{ c } '\ny1Al}           a { b } { c } { { x } } { e } { f } g           '{ c } '\ny1AlB           a { b } { c } { { x } } { e } { f } g           '{ c } '\ny2i{            a { b } { c } { { x } } { e } { f } g           ' { x } '\ny2i}            a { b } { c } { { x } } { e } { f } g           ' { x } '\ny2iB            a { b } { c } { { x } } { e } { f } g           ' { x } '\ny2a{            a { b } { c } { { x } } { e } { f } g           '{ { x } }'\ny2a}            a { b } { c } { { x } } { e } { f } g           '{ { x } }'\ny2aB            a { b } { c } { { x } } { e } { f } g           '{ { x } }'\ny2I{            a { b } { c } { { x } } { e } { f } g           '{ x }'\ny2I}            a { b } { c } { { x } } { e } { f } g           '{ x }'\ny2IB            a { b } { c } { { x } } { e } { f } g           '{ x }'\ny2A{            a { b } { c } { { x } } { e } { f } g           '{ { x } } '\ny2A}            a { b } { c } { { x } } { e } { f } g           '{ { x } } '\ny2AB            a { b } { c } { { x } } { e } { f } g           '{ { x } } '\ny2in{           a { b } { c } { { x } } { e } { f } g           ' f '\ny2in}           a { b } { c } { { x } } { e } { f } g           ' f '\ny2inB           a { b } { c } { { x } } { e } { f } g           ' f '\ny2an{           a { b } { c } { { x } } { e } { f } g           '{ f }'\ny2an}           a { b } { c } { { x } } { e } { f } g           '{ f }'\ny2anB           a { b } { c } { { x } } { e } { f } g           '{ f }'\ny2In{           a { b } { c } { { x } } { e } { f } g           'f'\ny2In}           a { b } { c } { { x } } { e } { f } g           'f'\ny2InB           a { b } { c } { { x } } { e } { f } g           'f'\ny2An{           a { b } { c } { { x } } { e } { f } g           '{ f } '\ny2An}           a { b } { c } { { x } } { e } { f } g           '{ f } '\ny2AnB           a { b } { c } { { x } } { e } { f } g           '{ f } '\ny2il{           a { b } { c } { { x } } { e } { f } g           ' b '\ny2il}           a { b } { c } { { x } } { e } { f } g           ' b '\ny2ilB           a { b } { c } { { x } } { e } { f } g           ' b '\ny2al{           a { b } { c } { { x } } { e } { f } g           '{ b }'\ny2al}           a { b } { c } { { x } } { e } { f } g           '{ b }'\ny2alB           a { b } { c } { { x } } { e } { f } g           '{ b }'\ny2Il{           a { b } { c } { { x } } { e } { f } g           'b'\ny2Il}           a { b } { c } { { x } } { e } { f } g           'b'\ny2IlB           a { b } { c } { { x } } { e } { f } g           'b'\ny2Al{           a { b } { c } { { x } } { e } { f } g           '{ b } '\ny2Al}           a { b } { c } { { x } } { e } { f } g           '{ b } '\ny2AlB           a { b } { c } { { x } } { e } { f } g           '{ b } '\nvi{             a { b } { c } { {___} } { e } { f } g\nvi}             a { b } { c } { {___} } { e } { f } g\nviB             a { b } { c } { {___} } { e } { f } g\nva{             a { b } { c } { _____ } { e } { f } g\nva}             a { b } { c } { _____ } { e } { f } g\nvaB             a { b } { c } { _____ } { e } { f } g\nvI{             a { b } { c } { { _ } } { e } { f } g\nvI}             a { b } { c } { { _ } } { e } { f } g\nvIB             a { b } { c } { { _ } } { e } { f } g\nvA{             a { b } { c } { ______} { e } { f } g\nvA}             a { b } { c } { ______} { e } { f } g\nvAB             a { b } { c } { ______} { e } { f } g\nvin{            a { b } { c } { { x } } {___} { f } g\nvin}            a { b } { c } { { x } } {___} { f } g\nvinB            a { b } { c } { { x } } {___} { f } g\nvan{            a { b } { c } { { x } } _____ { f } g\nvan}            a { b } { c } { { x } } _____ { f } g\nvanB            a { b } { c } { { x } } _____ { f } g\nvIn{            a { b } { c } { { x } } { _ } { f } g\nvIn}            a { b } { c } { { x } } { _ } { f } g\nvInB            a { b } { c } { { x } } { _ } { f } g\nvAn{            a { b } { c } { { x } } ______{ f } g\nvAn}            a { b } { c } { { x } } ______{ f } g\nvAnB            a { b } { c } { { x } } ______{ f } g\nvil{            a { b } {___} { { x } } { e } { f } g\nvil}            a { b } {___} { { x } } { e } { f } g\nvilB            a { b } {___} { { x } } { e } { f } g\nval{            a { b } _____ { { x } } { e } { f } g\nval}            a { b } _____ { { x } } { e } { f } g\nvalB            a { b } _____ { { x } } { e } { f } g\nvIl{            a { b } { _ } { { x } } { e } { f } g\nvIl}            a { b } { _ } { { x } } { e } { f } g\nvIlB            a { b } { _ } { { x } } { e } { f } g\nvAl{            a { b } ______{ { x } } { e } { f } g\nvAl}            a { b } ______{ { x } } { e } { f } g\nvAlB            a { b } ______{ { x } } { e } { f } g\nv1i{            a { b } { c } { {___} } { e } { f } g\nv1i}            a { b } { c } { {___} } { e } { f } g\nv1iB            a { b } { c } { {___} } { e } { f } g\nv1a{            a { b } { c } { _____ } { e } { f } g\nv1a}            a { b } { c } { _____ } { e } { f } g\nv1aB            a { b } { c } { _____ } { e } { f } g\nv1I{            a { b } { c } { { _ } } { e } { f } g\nv1I}            a { b } { c } { { _ } } { e } { f } g\nv1IB            a { b } { c } { { _ } } { e } { f } g\nv1A{            a { b } { c } { ______} { e } { f } g\nv1A}            a { b } { c } { ______} { e } { f } g\nv1AB            a { b } { c } { ______} { e } { f } g\nv1in{           a { b } { c } { { x } } {___} { f } g\nv1in}           a { b } { c } { { x } } {___} { f } g\nv1inB           a { b } { c } { { x } } {___} { f } g\nv1an{           a { b } { c } { { x } } _____ { f } g\nv1an}           a { b } { c } { { x } } _____ { f } g\nv1anB           a { b } { c } { { x } } _____ { f } g\nv1In{           a { b } { c } { { x } } { _ } { f } g\nv1In}           a { b } { c } { { x } } { _ } { f } g\nv1InB           a { b } { c } { { x } } { _ } { f } g\nv1An{           a { b } { c } { { x } } ______{ f } g\nv1An}           a { b } { c } { { x } } ______{ f } g\nv1AnB           a { b } { c } { { x } } ______{ f } g\nv1il{           a { b } {___} { { x } } { e } { f } g\nv1il}           a { b } {___} { { x } } { e } { f } g\nv1ilB           a { b } {___} { { x } } { e } { f } g\nv1al{           a { b } _____ { { x } } { e } { f } g\nv1al}           a { b } _____ { { x } } { e } { f } g\nv1alB           a { b } _____ { { x } } { e } { f } g\nv1Il{           a { b } { _ } { { x } } { e } { f } g\nv1Il}           a { b } { _ } { { x } } { e } { f } g\nv1IlB           a { b } { _ } { { x } } { e } { f } g\nv1Al{           a { b } ______{ { x } } { e } { f } g\nv1Al}           a { b } ______{ { x } } { e } { f } g\nv1AlB           a { b } ______{ { x } } { e } { f } g\nv2i{            a { b } { c } {_______} { e } { f } g\nv2i}            a { b } { c } {_______} { e } { f } g\nv2iB            a { b } { c } {_______} { e } { f } g\nv2a{            a { b } { c } _________ { e } { f } g\nv2a}            a { b } { c } _________ { e } { f } g\nv2aB            a { b } { c } _________ { e } { f } g\nv2I{            a { b } { c } { _____ } { e } { f } g\nv2I}            a { b } { c } { _____ } { e } { f } g\nv2IB            a { b } { c } { _____ } { e } { f } g\nv2A{            a { b } { c } __________{ e } { f } g\nv2A}            a { b } { c } __________{ e } { f } g\nv2AB            a { b } { c } __________{ e } { f } g\nv2in{           a { b } { c } { { x } } { e } {___} g\nv2in}           a { b } { c } { { x } } { e } {___} g\nv2inB           a { b } { c } { { x } } { e } {___} g\nv2an{           a { b } { c } { { x } } { e } _____ g\nv2an}           a { b } { c } { { x } } { e } _____ g\nv2anB           a { b } { c } { { x } } { e } _____ g\nv2In{           a { b } { c } { { x } } { e } { _ } g\nv2In}           a { b } { c } { { x } } { e } { _ } g\nv2InB           a { b } { c } { { x } } { e } { _ } g\nv2An{           a { b } { c } { { x } } { e } ______g\nv2An}           a { b } { c } { { x } } { e } ______g\nv2AnB           a { b } { c } { { x } } { e } ______g\nv2il{           a {___} { c } { { x } } { e } { f } g\nv2il}           a {___} { c } { { x } } { e } { f } g\nv2ilB           a {___} { c } { { x } } { e } { f } g\nv2al{           a _____ { c } { { x } } { e } { f } g\nv2al}           a _____ { c } { { x } } { e } { f } g\nv2alB           a _____ { c } { { x } } { e } { f } g\nv2Il{           a { _ } { c } { { x } } { e } { f } g\nv2Il}           a { _ } { c } { { x } } { e } { f } g\nv2IlB           a { _ } { c } { { x } } { e } { f } g\nv2Al{           a ______{ c } { { x } } { e } { f } g\nv2Al}           a ______{ c } { { x } } { e } { f } g\nv2AlB           a ______{ c } { { x } } { e } { f } g\na [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g\nci[             a [ b ] [ c ] [ [_] ] [ e ] [ f ] g\nci]             a [ b ] [ c ] [ [_] ] [ e ] [ f ] g\ncir             a [ b ] [ c ] [ [_] ] [ e ] [ f ] g\nca[             a [ b ] [ c ] [ _ ] [ e ] [ f ] g\nca]             a [ b ] [ c ] [ _ ] [ e ] [ f ] g\ncar             a [ b ] [ c ] [ _ ] [ e ] [ f ] g\ncI[             a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\ncI]             a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\ncIr             a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\ncA[             a [ b ] [ c ] [ _] [ e ] [ f ] g\ncA]             a [ b ] [ c ] [ _] [ e ] [ f ] g\ncAr             a [ b ] [ c ] [ _] [ e ] [ f ] g\ncin[            a [ b ] [ c ] [ [ x ] ] [_] [ f ] g\ncin]            a [ b ] [ c ] [ [ x ] ] [_] [ f ] g\ncinr            a [ b ] [ c ] [ [ x ] ] [_] [ f ] g\ncan[            a [ b ] [ c ] [ [ x ] ] _ [ f ] g\ncan]            a [ b ] [ c ] [ [ x ] ] _ [ f ] g\ncanr            a [ b ] [ c ] [ [ x ] ] _ [ f ] g\ncIn[            a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\ncIn]            a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\ncInr            a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\ncAn[            a [ b ] [ c ] [ [ x ] ] _[ f ] g\ncAn]            a [ b ] [ c ] [ [ x ] ] _[ f ] g\ncAnr            a [ b ] [ c ] [ [ x ] ] _[ f ] g\ncil[            a [ b ] [_] [ [ x ] ] [ e ] [ f ] g\ncil]            a [ b ] [_] [ [ x ] ] [ e ] [ f ] g\ncilr            a [ b ] [_] [ [ x ] ] [ e ] [ f ] g\ncal[            a [ b ] _ [ [ x ] ] [ e ] [ f ] g\ncal]            a [ b ] _ [ [ x ] ] [ e ] [ f ] g\ncalr            a [ b ] _ [ [ x ] ] [ e ] [ f ] g\ncIl[            a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\ncIl]            a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\ncIlr            a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\ncAl[            a [ b ] _[ [ x ] ] [ e ] [ f ] g\ncAl]            a [ b ] _[ [ x ] ] [ e ] [ f ] g\ncAlr            a [ b ] _[ [ x ] ] [ e ] [ f ] g\nc1i[            a [ b ] [ c ] [ [_] ] [ e ] [ f ] g\nc1i]            a [ b ] [ c ] [ [_] ] [ e ] [ f ] g\nc1ir            a [ b ] [ c ] [ [_] ] [ e ] [ f ] g\nc1a[            a [ b ] [ c ] [ _ ] [ e ] [ f ] g\nc1a]            a [ b ] [ c ] [ _ ] [ e ] [ f ] g\nc1ar            a [ b ] [ c ] [ _ ] [ e ] [ f ] g\nc1I[            a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nc1I]            a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nc1Ir            a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nc1A[            a [ b ] [ c ] [ _] [ e ] [ f ] g\nc1A]            a [ b ] [ c ] [ _] [ e ] [ f ] g\nc1Ar            a [ b ] [ c ] [ _] [ e ] [ f ] g\nc1in[           a [ b ] [ c ] [ [ x ] ] [_] [ f ] g\nc1in]           a [ b ] [ c ] [ [ x ] ] [_] [ f ] g\nc1inr           a [ b ] [ c ] [ [ x ] ] [_] [ f ] g\nc1an[           a [ b ] [ c ] [ [ x ] ] _ [ f ] g\nc1an]           a [ b ] [ c ] [ [ x ] ] _ [ f ] g\nc1anr           a [ b ] [ c ] [ [ x ] ] _ [ f ] g\nc1In[           a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nc1In]           a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nc1Inr           a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nc1An[           a [ b ] [ c ] [ [ x ] ] _[ f ] g\nc1An]           a [ b ] [ c ] [ [ x ] ] _[ f ] g\nc1Anr           a [ b ] [ c ] [ [ x ] ] _[ f ] g\nc1il[           a [ b ] [_] [ [ x ] ] [ e ] [ f ] g\nc1il]           a [ b ] [_] [ [ x ] ] [ e ] [ f ] g\nc1ilr           a [ b ] [_] [ [ x ] ] [ e ] [ f ] g\nc1al[           a [ b ] _ [ [ x ] ] [ e ] [ f ] g\nc1al]           a [ b ] _ [ [ x ] ] [ e ] [ f ] g\nc1alr           a [ b ] _ [ [ x ] ] [ e ] [ f ] g\nc1Il[           a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nc1Il]           a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nc1Ilr           a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nc1Al[           a [ b ] _[ [ x ] ] [ e ] [ f ] g\nc1Al]           a [ b ] _[ [ x ] ] [ e ] [ f ] g\nc1Alr           a [ b ] _[ [ x ] ] [ e ] [ f ] g\nc2i[            a [ b ] [ c ] [_] [ e ] [ f ] g\nc2i]            a [ b ] [ c ] [_] [ e ] [ f ] g\nc2ir            a [ b ] [ c ] [_] [ e ] [ f ] g\nc2a[            a [ b ] [ c ] _ [ e ] [ f ] g\nc2a]            a [ b ] [ c ] _ [ e ] [ f ] g\nc2ar            a [ b ] [ c ] _ [ e ] [ f ] g\nc2I[            a [ b ] [ c ] [ _ ] [ e ] [ f ] g\nc2I]            a [ b ] [ c ] [ _ ] [ e ] [ f ] g\nc2Ir            a [ b ] [ c ] [ _ ] [ e ] [ f ] g\nc2A[            a [ b ] [ c ] _[ e ] [ f ] g\nc2A]            a [ b ] [ c ] _[ e ] [ f ] g\nc2Ar            a [ b ] [ c ] _[ e ] [ f ] g\nc2in[           a [ b ] [ c ] [ [ x ] ] [ e ] [_] g\nc2in]           a [ b ] [ c ] [ [ x ] ] [ e ] [_] g\nc2inr           a [ b ] [ c ] [ [ x ] ] [ e ] [_] g\nc2an[           a [ b ] [ c ] [ [ x ] ] [ e ] _ g\nc2an]           a [ b ] [ c ] [ [ x ] ] [ e ] _ g\nc2anr           a [ b ] [ c ] [ [ x ] ] [ e ] _ g\nc2In[           a [ b ] [ c ] [ [ x ] ] [ e ] [ _ ] g\nc2In]           a [ b ] [ c ] [ [ x ] ] [ e ] [ _ ] g\nc2Inr           a [ b ] [ c ] [ [ x ] ] [ e ] [ _ ] g\nc2An[           a [ b ] [ c ] [ [ x ] ] [ e ] _g\nc2An]           a [ b ] [ c ] [ [ x ] ] [ e ] _g\nc2Anr           a [ b ] [ c ] [ [ x ] ] [ e ] _g\nc2il[           a [_] [ c ] [ [ x ] ] [ e ] [ f ] g\nc2il]           a [_] [ c ] [ [ x ] ] [ e ] [ f ] g\nc2ilr           a [_] [ c ] [ [ x ] ] [ e ] [ f ] g\nc2al[           a _ [ c ] [ [ x ] ] [ e ] [ f ] g\nc2al]           a _ [ c ] [ [ x ] ] [ e ] [ f ] g\nc2alr           a _ [ c ] [ [ x ] ] [ e ] [ f ] g\nc2Il[           a [ _ ] [ c ] [ [ x ] ] [ e ] [ f ] g\nc2Il]           a [ _ ] [ c ] [ [ x ] ] [ e ] [ f ] g\nc2Ilr           a [ _ ] [ c ] [ [ x ] ] [ e ] [ f ] g\nc2Al[           a _[ c ] [ [ x ] ] [ e ] [ f ] g\nc2Al]           a _[ c ] [ [ x ] ] [ e ] [ f ] g\nc2Alr           a _[ c ] [ [ x ] ] [ e ] [ f ] g\ndi[             a [ b ] [ c ] [ [] ] [ e ] [ f ] g\ndi]             a [ b ] [ c ] [ [] ] [ e ] [ f ] g\ndir             a [ b ] [ c ] [ [] ] [ e ] [ f ] g\nda[             a [ b ] [ c ] [  ] [ e ] [ f ] g\nda]             a [ b ] [ c ] [  ] [ e ] [ f ] g\ndar             a [ b ] [ c ] [  ] [ e ] [ f ] g\ndI[             a [ b ] [ c ] [ [  ] ] [ e ] [ f ] g\ndI]             a [ b ] [ c ] [ [  ] ] [ e ] [ f ] g\ndIr             a [ b ] [ c ] [ [  ] ] [ e ] [ f ] g\ndA[             a [ b ] [ c ] [ ] [ e ] [ f ] g\ndA]             a [ b ] [ c ] [ ] [ e ] [ f ] g\ndAr             a [ b ] [ c ] [ ] [ e ] [ f ] g\ndin[            a [ b ] [ c ] [ [ x ] ] [] [ f ] g\ndin]            a [ b ] [ c ] [ [ x ] ] [] [ f ] g\ndinr            a [ b ] [ c ] [ [ x ] ] [] [ f ] g\ndan[            a [ b ] [ c ] [ [ x ] ]  [ f ] g\ndan]            a [ b ] [ c ] [ [ x ] ]  [ f ] g\ndanr            a [ b ] [ c ] [ [ x ] ]  [ f ] g\ndIn[            a [ b ] [ c ] [ [ x ] ] [  ] [ f ] g\ndIn]            a [ b ] [ c ] [ [ x ] ] [  ] [ f ] g\ndInr            a [ b ] [ c ] [ [ x ] ] [  ] [ f ] g\ndAn[            a [ b ] [ c ] [ [ x ] ] [ f ] g\ndAn]            a [ b ] [ c ] [ [ x ] ] [ f ] g\ndAnr            a [ b ] [ c ] [ [ x ] ] [ f ] g\ndil[            a [ b ] [] [ [ x ] ] [ e ] [ f ] g\ndil]            a [ b ] [] [ [ x ] ] [ e ] [ f ] g\ndilr            a [ b ] [] [ [ x ] ] [ e ] [ f ] g\ndal[            a [ b ]  [ [ x ] ] [ e ] [ f ] g\ndal]            a [ b ]  [ [ x ] ] [ e ] [ f ] g\ndalr            a [ b ]  [ [ x ] ] [ e ] [ f ] g\ndIl[            a [ b ] [  ] [ [ x ] ] [ e ] [ f ] g\ndIl]            a [ b ] [  ] [ [ x ] ] [ e ] [ f ] g\ndIlr            a [ b ] [  ] [ [ x ] ] [ e ] [ f ] g\ndAl[            a [ b ] [ [ x ] ] [ e ] [ f ] g\ndAl]            a [ b ] [ [ x ] ] [ e ] [ f ] g\ndAlr            a [ b ] [ [ x ] ] [ e ] [ f ] g\nd1i[            a [ b ] [ c ] [ [] ] [ e ] [ f ] g\nd1i]            a [ b ] [ c ] [ [] ] [ e ] [ f ] g\nd1ir            a [ b ] [ c ] [ [] ] [ e ] [ f ] g\nd1a[            a [ b ] [ c ] [  ] [ e ] [ f ] g\nd1a]            a [ b ] [ c ] [  ] [ e ] [ f ] g\nd1ar            a [ b ] [ c ] [  ] [ e ] [ f ] g\nd1I[            a [ b ] [ c ] [ [  ] ] [ e ] [ f ] g\nd1I]            a [ b ] [ c ] [ [  ] ] [ e ] [ f ] g\nd1Ir            a [ b ] [ c ] [ [  ] ] [ e ] [ f ] g\nd1A[            a [ b ] [ c ] [ ] [ e ] [ f ] g\nd1A]            a [ b ] [ c ] [ ] [ e ] [ f ] g\nd1Ar            a [ b ] [ c ] [ ] [ e ] [ f ] g\nd1in[           a [ b ] [ c ] [ [ x ] ] [] [ f ] g\nd1in]           a [ b ] [ c ] [ [ x ] ] [] [ f ] g\nd1inr           a [ b ] [ c ] [ [ x ] ] [] [ f ] g\nd1an[           a [ b ] [ c ] [ [ x ] ]  [ f ] g\nd1an]           a [ b ] [ c ] [ [ x ] ]  [ f ] g\nd1anr           a [ b ] [ c ] [ [ x ] ]  [ f ] g\nd1In[           a [ b ] [ c ] [ [ x ] ] [  ] [ f ] g\nd1In]           a [ b ] [ c ] [ [ x ] ] [  ] [ f ] g\nd1Inr           a [ b ] [ c ] [ [ x ] ] [  ] [ f ] g\nd1An[           a [ b ] [ c ] [ [ x ] ] [ f ] g\nd1An]           a [ b ] [ c ] [ [ x ] ] [ f ] g\nd1Anr           a [ b ] [ c ] [ [ x ] ] [ f ] g\nd1il[           a [ b ] [] [ [ x ] ] [ e ] [ f ] g\nd1il]           a [ b ] [] [ [ x ] ] [ e ] [ f ] g\nd1ilr           a [ b ] [] [ [ x ] ] [ e ] [ f ] g\nd1al[           a [ b ]  [ [ x ] ] [ e ] [ f ] g\nd1al]           a [ b ]  [ [ x ] ] [ e ] [ f ] g\nd1alr           a [ b ]  [ [ x ] ] [ e ] [ f ] g\nd1Il[           a [ b ] [  ] [ [ x ] ] [ e ] [ f ] g\nd1Il]           a [ b ] [  ] [ [ x ] ] [ e ] [ f ] g\nd1Ilr           a [ b ] [  ] [ [ x ] ] [ e ] [ f ] g\nd1Al[           a [ b ] [ [ x ] ] [ e ] [ f ] g\nd1Al]           a [ b ] [ [ x ] ] [ e ] [ f ] g\nd1Alr           a [ b ] [ [ x ] ] [ e ] [ f ] g\nd2i[            a [ b ] [ c ] [] [ e ] [ f ] g\nd2i]            a [ b ] [ c ] [] [ e ] [ f ] g\nd2ir            a [ b ] [ c ] [] [ e ] [ f ] g\nd2a[            a [ b ] [ c ]  [ e ] [ f ] g\nd2a]            a [ b ] [ c ]  [ e ] [ f ] g\nd2ar            a [ b ] [ c ]  [ e ] [ f ] g\nd2I[            a [ b ] [ c ] [  ] [ e ] [ f ] g\nd2I]            a [ b ] [ c ] [  ] [ e ] [ f ] g\nd2Ir            a [ b ] [ c ] [  ] [ e ] [ f ] g\nd2A[            a [ b ] [ c ] [ e ] [ f ] g\nd2A]            a [ b ] [ c ] [ e ] [ f ] g\nd2Ar            a [ b ] [ c ] [ e ] [ f ] g\nd2in[           a [ b ] [ c ] [ [ x ] ] [ e ] [] g\nd2in]           a [ b ] [ c ] [ [ x ] ] [ e ] [] g\nd2inr           a [ b ] [ c ] [ [ x ] ] [ e ] [] g\nd2an[           a [ b ] [ c ] [ [ x ] ] [ e ]  g\nd2an]           a [ b ] [ c ] [ [ x ] ] [ e ]  g\nd2anr           a [ b ] [ c ] [ [ x ] ] [ e ]  g\nd2In[           a [ b ] [ c ] [ [ x ] ] [ e ] [  ] g\nd2In]           a [ b ] [ c ] [ [ x ] ] [ e ] [  ] g\nd2Inr           a [ b ] [ c ] [ [ x ] ] [ e ] [  ] g\nd2An[           a [ b ] [ c ] [ [ x ] ] [ e ] g\nd2An]           a [ b ] [ c ] [ [ x ] ] [ e ] g\nd2Anr           a [ b ] [ c ] [ [ x ] ] [ e ] g\nd2il[           a [] [ c ] [ [ x ] ] [ e ] [ f ] g\nd2il]           a [] [ c ] [ [ x ] ] [ e ] [ f ] g\nd2ilr           a [] [ c ] [ [ x ] ] [ e ] [ f ] g\nd2al[           a  [ c ] [ [ x ] ] [ e ] [ f ] g\nd2al]           a  [ c ] [ [ x ] ] [ e ] [ f ] g\nd2alr           a  [ c ] [ [ x ] ] [ e ] [ f ] g\nd2Il[           a [  ] [ c ] [ [ x ] ] [ e ] [ f ] g\nd2Il]           a [  ] [ c ] [ [ x ] ] [ e ] [ f ] g\nd2Ilr           a [  ] [ c ] [ [ x ] ] [ e ] [ f ] g\nd2Al[           a [ c ] [ [ x ] ] [ e ] [ f ] g\nd2Al]           a [ c ] [ [ x ] ] [ e ] [ f ] g\nd2Alr           a [ c ] [ [ x ] ] [ e ] [ f ] g\nyi[             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' x '\nyi]             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' x '\nyir             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' x '\nya[             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\nya]             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\nyar             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\nyI[             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'x'\nyI]             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'x'\nyIr             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'x'\nyA[             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ] '\nyA]             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ] '\nyAr             a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ] '\nyin[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' e '\nyin]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' e '\nyinr            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' e '\nyan[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ]'\nyan]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ]'\nyanr            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ]'\nyIn[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'e'\nyIn]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'e'\nyInr            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'e'\nyAn[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ] '\nyAn]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ] '\nyAnr            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ] '\nyil[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' c '\nyil]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' c '\nyilr            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' c '\nyal[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ]'\nyal]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ]'\nyalr            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ]'\nyIl[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'c'\nyIl]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'c'\nyIlr            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'c'\nyAl[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ] '\nyAl]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ] '\nyAlr            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ] '\ny1i[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' x '\ny1i]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' x '\ny1ir            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' x '\ny1a[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\ny1a]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\ny1ar            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\ny1I[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'x'\ny1I]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'x'\ny1Ir            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'x'\ny1A[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ] '\ny1A]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ] '\ny1Ar            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ] '\ny1in[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' e '\ny1in]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' e '\ny1inr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' e '\ny1an[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ]'\ny1an]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ]'\ny1anr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ]'\ny1In[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'e'\ny1In]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'e'\ny1Inr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'e'\ny1An[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ] '\ny1An]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ] '\ny1Anr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ e ] '\ny1il[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' c '\ny1il]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' c '\ny1ilr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' c '\ny1al[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ]'\ny1al]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ]'\ny1alr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ]'\ny1Il[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'c'\ny1Il]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'c'\ny1Ilr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'c'\ny1Al[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ] '\ny1Al]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ] '\ny1Alr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ c ] '\ny2i[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' [ x ] '\ny2i]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' [ x ] '\ny2ir            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' [ x ] '\ny2a[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ [ x ] ]'\ny2a]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ [ x ] ]'\ny2ar            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ [ x ] ]'\ny2I[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\ny2I]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\ny2Ir            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ x ]'\ny2A[            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ [ x ] ] '\ny2A]            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ [ x ] ] '\ny2Ar            a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ [ x ] ] '\ny2in[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' f '\ny2in]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' f '\ny2inr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' f '\ny2an[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ f ]'\ny2an]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ f ]'\ny2anr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ f ]'\ny2In[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'f'\ny2In]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'f'\ny2Inr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'f'\ny2An[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ f ] '\ny2An]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ f ] '\ny2Anr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ f ] '\ny2il[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' b '\ny2il]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' b '\ny2ilr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           ' b '\ny2al[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ b ]'\ny2al]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ b ]'\ny2alr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ b ]'\ny2Il[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'b'\ny2Il]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'b'\ny2Ilr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           'b'\ny2Al[           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ b ] '\ny2Al]           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ b ] '\ny2Alr           a [ b ] [ c ] [ [ x ] ] [ e ] [ f ] g           '[ b ] '\nvi[             a [ b ] [ c ] [ [___] ] [ e ] [ f ] g\nvi]             a [ b ] [ c ] [ [___] ] [ e ] [ f ] g\nvir             a [ b ] [ c ] [ [___] ] [ e ] [ f ] g\nva[             a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nva]             a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nvar             a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nvI[             a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nvI]             a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nvIr             a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nvA[             a [ b ] [ c ] [ ______] [ e ] [ f ] g\nvA]             a [ b ] [ c ] [ ______] [ e ] [ f ] g\nvAr             a [ b ] [ c ] [ ______] [ e ] [ f ] g\nvin[            a [ b ] [ c ] [ [ x ] ] [___] [ f ] g\nvin]            a [ b ] [ c ] [ [ x ] ] [___] [ f ] g\nvinr            a [ b ] [ c ] [ [ x ] ] [___] [ f ] g\nvan[            a [ b ] [ c ] [ [ x ] ] _____ [ f ] g\nvan]            a [ b ] [ c ] [ [ x ] ] _____ [ f ] g\nvanr            a [ b ] [ c ] [ [ x ] ] _____ [ f ] g\nvIn[            a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nvIn]            a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nvInr            a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nvAn[            a [ b ] [ c ] [ [ x ] ] ______[ f ] g\nvAn]            a [ b ] [ c ] [ [ x ] ] ______[ f ] g\nvAnr            a [ b ] [ c ] [ [ x ] ] ______[ f ] g\nvil[            a [ b ] [___] [ [ x ] ] [ e ] [ f ] g\nvil]            a [ b ] [___] [ [ x ] ] [ e ] [ f ] g\nvilr            a [ b ] [___] [ [ x ] ] [ e ] [ f ] g\nval[            a [ b ] _____ [ [ x ] ] [ e ] [ f ] g\nval]            a [ b ] _____ [ [ x ] ] [ e ] [ f ] g\nvalr            a [ b ] _____ [ [ x ] ] [ e ] [ f ] g\nvIl[            a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nvIl]            a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nvIlr            a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nvAl[            a [ b ] ______[ [ x ] ] [ e ] [ f ] g\nvAl]            a [ b ] ______[ [ x ] ] [ e ] [ f ] g\nvAlr            a [ b ] ______[ [ x ] ] [ e ] [ f ] g\nv1i[            a [ b ] [ c ] [ [___] ] [ e ] [ f ] g\nv1i]            a [ b ] [ c ] [ [___] ] [ e ] [ f ] g\nv1ir            a [ b ] [ c ] [ [___] ] [ e ] [ f ] g\nv1a[            a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nv1a]            a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nv1ar            a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nv1I[            a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nv1I]            a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nv1Ir            a [ b ] [ c ] [ [ _ ] ] [ e ] [ f ] g\nv1A[            a [ b ] [ c ] [ ______] [ e ] [ f ] g\nv1A]            a [ b ] [ c ] [ ______] [ e ] [ f ] g\nv1Ar            a [ b ] [ c ] [ ______] [ e ] [ f ] g\nv1in[           a [ b ] [ c ] [ [ x ] ] [___] [ f ] g\nv1in]           a [ b ] [ c ] [ [ x ] ] [___] [ f ] g\nv1inr           a [ b ] [ c ] [ [ x ] ] [___] [ f ] g\nv1an[           a [ b ] [ c ] [ [ x ] ] _____ [ f ] g\nv1an]           a [ b ] [ c ] [ [ x ] ] _____ [ f ] g\nv1anr           a [ b ] [ c ] [ [ x ] ] _____ [ f ] g\nv1In[           a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nv1In]           a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nv1Inr           a [ b ] [ c ] [ [ x ] ] [ _ ] [ f ] g\nv1An[           a [ b ] [ c ] [ [ x ] ] ______[ f ] g\nv1An]           a [ b ] [ c ] [ [ x ] ] ______[ f ] g\nv1Anr           a [ b ] [ c ] [ [ x ] ] ______[ f ] g\nv1il[           a [ b ] [___] [ [ x ] ] [ e ] [ f ] g\nv1il]           a [ b ] [___] [ [ x ] ] [ e ] [ f ] g\nv1ilr           a [ b ] [___] [ [ x ] ] [ e ] [ f ] g\nv1al[           a [ b ] _____ [ [ x ] ] [ e ] [ f ] g\nv1al]           a [ b ] _____ [ [ x ] ] [ e ] [ f ] g\nv1alr           a [ b ] _____ [ [ x ] ] [ e ] [ f ] g\nv1Il[           a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nv1Il]           a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nv1Ilr           a [ b ] [ _ ] [ [ x ] ] [ e ] [ f ] g\nv1Al[           a [ b ] ______[ [ x ] ] [ e ] [ f ] g\nv1Al]           a [ b ] ______[ [ x ] ] [ e ] [ f ] g\nv1Alr           a [ b ] ______[ [ x ] ] [ e ] [ f ] g\nv2i[            a [ b ] [ c ] [_______] [ e ] [ f ] g\nv2i]            a [ b ] [ c ] [_______] [ e ] [ f ] g\nv2ir            a [ b ] [ c ] [_______] [ e ] [ f ] g\nv2a[            a [ b ] [ c ] _________ [ e ] [ f ] g\nv2a]            a [ b ] [ c ] _________ [ e ] [ f ] g\nv2ar            a [ b ] [ c ] _________ [ e ] [ f ] g\nv2I[            a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nv2I]            a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nv2Ir            a [ b ] [ c ] [ _____ ] [ e ] [ f ] g\nv2A[            a [ b ] [ c ] __________[ e ] [ f ] g\nv2A]            a [ b ] [ c ] __________[ e ] [ f ] g\nv2Ar            a [ b ] [ c ] __________[ e ] [ f ] g\nv2in[           a [ b ] [ c ] [ [ x ] ] [ e ] [___] g\nv2in]           a [ b ] [ c ] [ [ x ] ] [ e ] [___] g\nv2inr           a [ b ] [ c ] [ [ x ] ] [ e ] [___] g\nv2an[           a [ b ] [ c ] [ [ x ] ] [ e ] _____ g\nv2an]           a [ b ] [ c ] [ [ x ] ] [ e ] _____ g\nv2anr           a [ b ] [ c ] [ [ x ] ] [ e ] _____ g\nv2In[           a [ b ] [ c ] [ [ x ] ] [ e ] [ _ ] g\nv2In]           a [ b ] [ c ] [ [ x ] ] [ e ] [ _ ] g\nv2Inr           a [ b ] [ c ] [ [ x ] ] [ e ] [ _ ] g\nv2An[           a [ b ] [ c ] [ [ x ] ] [ e ] ______g\nv2An]           a [ b ] [ c ] [ [ x ] ] [ e ] ______g\nv2Anr           a [ b ] [ c ] [ [ x ] ] [ e ] ______g\nv2il[           a [___] [ c ] [ [ x ] ] [ e ] [ f ] g\nv2il]           a [___] [ c ] [ [ x ] ] [ e ] [ f ] g\nv2ilr           a [___] [ c ] [ [ x ] ] [ e ] [ f ] g\nv2al[           a _____ [ c ] [ [ x ] ] [ e ] [ f ] g\nv2al]           a _____ [ c ] [ [ x ] ] [ e ] [ f ] g\nv2alr           a _____ [ c ] [ [ x ] ] [ e ] [ f ] g\nv2Il[           a [ _ ] [ c ] [ [ x ] ] [ e ] [ f ] g\nv2Il]           a [ _ ] [ c ] [ [ x ] ] [ e ] [ f ] g\nv2Ilr           a [ _ ] [ c ] [ [ x ] ] [ e ] [ f ] g\nv2Al[           a ______[ c ] [ [ x ] ] [ e ] [ f ] g\nv2Al]           a ______[ c ] [ [ x ] ] [ e ] [ f ] g\nv2Alr           a ______[ c ] [ [ x ] ] [ e ] [ f ] g\na < b > < c > < < x > > < e > < f > g\nci<             a < b > < c > < <_> > < e > < f > g\nci>             a < b > < c > < <_> > < e > < f > g\ncia             a < b > < c > < <_> > < e > < f > g\nca<             a < b > < c > < _ > < e > < f > g\nca>             a < b > < c > < _ > < e > < f > g\ncaa             a < b > < c > < _ > < e > < f > g\ncI<             a < b > < c > < < _ > > < e > < f > g\ncI>             a < b > < c > < < _ > > < e > < f > g\ncIa             a < b > < c > < < _ > > < e > < f > g\ncA<             a < b > < c > < _> < e > < f > g\ncA>             a < b > < c > < _> < e > < f > g\ncAa             a < b > < c > < _> < e > < f > g\ncin<            a < b > < c > < < x > > <_> < f > g\ncin>            a < b > < c > < < x > > <_> < f > g\ncina            a < b > < c > < < x > > <_> < f > g\ncan<            a < b > < c > < < x > > _ < f > g\ncan>            a < b > < c > < < x > > _ < f > g\ncana            a < b > < c > < < x > > _ < f > g\ncIn<            a < b > < c > < < x > > < _ > < f > g\ncIn>            a < b > < c > < < x > > < _ > < f > g\ncIna            a < b > < c > < < x > > < _ > < f > g\ncAn<            a < b > < c > < < x > > _< f > g\ncAn>            a < b > < c > < < x > > _< f > g\ncAna            a < b > < c > < < x > > _< f > g\ncil<            a < b > <_> < < x > > < e > < f > g\ncil>            a < b > <_> < < x > > < e > < f > g\ncila            a < b > <_> < < x > > < e > < f > g\ncal<            a < b > _ < < x > > < e > < f > g\ncal>            a < b > _ < < x > > < e > < f > g\ncala            a < b > _ < < x > > < e > < f > g\ncIl<            a < b > < _ > < < x > > < e > < f > g\ncIl>            a < b > < _ > < < x > > < e > < f > g\ncIla            a < b > < _ > < < x > > < e > < f > g\ncAl<            a < b > _< < x > > < e > < f > g\ncAl>            a < b > _< < x > > < e > < f > g\ncAla            a < b > _< < x > > < e > < f > g\nc1i<            a < b > < c > < <_> > < e > < f > g\nc1i>            a < b > < c > < <_> > < e > < f > g\nc1ia            a < b > < c > < <_> > < e > < f > g\nc1a<            a < b > < c > < _ > < e > < f > g\nc1a>            a < b > < c > < _ > < e > < f > g\nc1aa            a < b > < c > < _ > < e > < f > g\nc1I<            a < b > < c > < < _ > > < e > < f > g\nc1I>            a < b > < c > < < _ > > < e > < f > g\nc1Ia            a < b > < c > < < _ > > < e > < f > g\nc1A<            a < b > < c > < _> < e > < f > g\nc1A>            a < b > < c > < _> < e > < f > g\nc1Aa            a < b > < c > < _> < e > < f > g\nc1in<           a < b > < c > < < x > > <_> < f > g\nc1in>           a < b > < c > < < x > > <_> < f > g\nc1ina           a < b > < c > < < x > > <_> < f > g\nc1an<           a < b > < c > < < x > > _ < f > g\nc1an>           a < b > < c > < < x > > _ < f > g\nc1ana           a < b > < c > < < x > > _ < f > g\nc1In<           a < b > < c > < < x > > < _ > < f > g\nc1In>           a < b > < c > < < x > > < _ > < f > g\nc1Ina           a < b > < c > < < x > > < _ > < f > g\nc1An<           a < b > < c > < < x > > _< f > g\nc1An>           a < b > < c > < < x > > _< f > g\nc1Ana           a < b > < c > < < x > > _< f > g\nc1il<           a < b > <_> < < x > > < e > < f > g\nc1il>           a < b > <_> < < x > > < e > < f > g\nc1ila           a < b > <_> < < x > > < e > < f > g\nc1al<           a < b > _ < < x > > < e > < f > g\nc1al>           a < b > _ < < x > > < e > < f > g\nc1ala           a < b > _ < < x > > < e > < f > g\nc1Il<           a < b > < _ > < < x > > < e > < f > g\nc1Il>           a < b > < _ > < < x > > < e > < f > g\nc1Ila           a < b > < _ > < < x > > < e > < f > g\nc1Al<           a < b > _< < x > > < e > < f > g\nc1Al>           a < b > _< < x > > < e > < f > g\nc1Ala           a < b > _< < x > > < e > < f > g\nc2i<            a < b > < c > <_> < e > < f > g\nc2i>            a < b > < c > <_> < e > < f > g\nc2ia            a < b > < c > <_> < e > < f > g\nc2a<            a < b > < c > _ < e > < f > g\nc2a>            a < b > < c > _ < e > < f > g\nc2aa            a < b > < c > _ < e > < f > g\nc2I<            a < b > < c > < _ > < e > < f > g\nc2I>            a < b > < c > < _ > < e > < f > g\nc2Ia            a < b > < c > < _ > < e > < f > g\nc2A<            a < b > < c > _< e > < f > g\nc2A>            a < b > < c > _< e > < f > g\nc2Aa            a < b > < c > _< e > < f > g\nc2in<           a < b > < c > < < x > > < e > <_> g\nc2in>           a < b > < c > < < x > > < e > <_> g\nc2ina           a < b > < c > < < x > > < e > <_> g\nc2an<           a < b > < c > < < x > > < e > _ g\nc2an>           a < b > < c > < < x > > < e > _ g\nc2ana           a < b > < c > < < x > > < e > _ g\nc2In<           a < b > < c > < < x > > < e > < _ > g\nc2In>           a < b > < c > < < x > > < e > < _ > g\nc2Ina           a < b > < c > < < x > > < e > < _ > g\nc2An<           a < b > < c > < < x > > < e > _g\nc2An>           a < b > < c > < < x > > < e > _g\nc2Ana           a < b > < c > < < x > > < e > _g\nc2il<           a <_> < c > < < x > > < e > < f > g\nc2il>           a <_> < c > < < x > > < e > < f > g\nc2ila           a <_> < c > < < x > > < e > < f > g\nc2al<           a _ < c > < < x > > < e > < f > g\nc2al>           a _ < c > < < x > > < e > < f > g\nc2ala           a _ < c > < < x > > < e > < f > g\nc2Il<           a < _ > < c > < < x > > < e > < f > g\nc2Il>           a < _ > < c > < < x > > < e > < f > g\nc2Ila           a < _ > < c > < < x > > < e > < f > g\nc2Al<           a _< c > < < x > > < e > < f > g\nc2Al>           a _< c > < < x > > < e > < f > g\nc2Ala           a _< c > < < x > > < e > < f > g\ndi<             a < b > < c > < <> > < e > < f > g\ndi>             a < b > < c > < <> > < e > < f > g\ndia             a < b > < c > < <> > < e > < f > g\nda<             a < b > < c > <  > < e > < f > g\nda>             a < b > < c > <  > < e > < f > g\ndaa             a < b > < c > <  > < e > < f > g\ndI<             a < b > < c > < <  > > < e > < f > g\ndI>             a < b > < c > < <  > > < e > < f > g\ndIa             a < b > < c > < <  > > < e > < f > g\ndA<             a < b > < c > < > < e > < f > g\ndA>             a < b > < c > < > < e > < f > g\ndAa             a < b > < c > < > < e > < f > g\ndin<            a < b > < c > < < x > > <> < f > g\ndin>            a < b > < c > < < x > > <> < f > g\ndina            a < b > < c > < < x > > <> < f > g\ndan<            a < b > < c > < < x > >  < f > g\ndan>            a < b > < c > < < x > >  < f > g\ndana            a < b > < c > < < x > >  < f > g\ndIn<            a < b > < c > < < x > > <  > < f > g\ndIn>            a < b > < c > < < x > > <  > < f > g\ndIna            a < b > < c > < < x > > <  > < f > g\ndAn<            a < b > < c > < < x > > < f > g\ndAn>            a < b > < c > < < x > > < f > g\ndAna            a < b > < c > < < x > > < f > g\ndil<            a < b > <> < < x > > < e > < f > g\ndil>            a < b > <> < < x > > < e > < f > g\ndila            a < b > <> < < x > > < e > < f > g\ndal<            a < b >  < < x > > < e > < f > g\ndal>            a < b >  < < x > > < e > < f > g\ndala            a < b >  < < x > > < e > < f > g\ndIl<            a < b > <  > < < x > > < e > < f > g\ndIl>            a < b > <  > < < x > > < e > < f > g\ndIla            a < b > <  > < < x > > < e > < f > g\ndAl<            a < b > < < x > > < e > < f > g\ndAl>            a < b > < < x > > < e > < f > g\ndAla            a < b > < < x > > < e > < f > g\nd1i<            a < b > < c > < <> > < e > < f > g\nd1i>            a < b > < c > < <> > < e > < f > g\nd1ia            a < b > < c > < <> > < e > < f > g\nd1a<            a < b > < c > <  > < e > < f > g\nd1a>            a < b > < c > <  > < e > < f > g\nd1aa            a < b > < c > <  > < e > < f > g\nd1I<            a < b > < c > < <  > > < e > < f > g\nd1I>            a < b > < c > < <  > > < e > < f > g\nd1Ia            a < b > < c > < <  > > < e > < f > g\nd1A<            a < b > < c > < > < e > < f > g\nd1A>            a < b > < c > < > < e > < f > g\nd1Aa            a < b > < c > < > < e > < f > g\nd1in<           a < b > < c > < < x > > <> < f > g\nd1in>           a < b > < c > < < x > > <> < f > g\nd1ina           a < b > < c > < < x > > <> < f > g\nd1an<           a < b > < c > < < x > >  < f > g\nd1an>           a < b > < c > < < x > >  < f > g\nd1ana           a < b > < c > < < x > >  < f > g\nd1In<           a < b > < c > < < x > > <  > < f > g\nd1In>           a < b > < c > < < x > > <  > < f > g\nd1Ina           a < b > < c > < < x > > <  > < f > g\nd1An<           a < b > < c > < < x > > < f > g\nd1An>           a < b > < c > < < x > > < f > g\nd1Ana           a < b > < c > < < x > > < f > g\nd1il<           a < b > <> < < x > > < e > < f > g\nd1il>           a < b > <> < < x > > < e > < f > g\nd1ila           a < b > <> < < x > > < e > < f > g\nd1al<           a < b >  < < x > > < e > < f > g\nd1al>           a < b >  < < x > > < e > < f > g\nd1ala           a < b >  < < x > > < e > < f > g\nd1Il<           a < b > <  > < < x > > < e > < f > g\nd1Il>           a < b > <  > < < x > > < e > < f > g\nd1Ila           a < b > <  > < < x > > < e > < f > g\nd1Al<           a < b > < < x > > < e > < f > g\nd1Al>           a < b > < < x > > < e > < f > g\nd1Ala           a < b > < < x > > < e > < f > g\nd2i<            a < b > < c > <> < e > < f > g\nd2i>            a < b > < c > <> < e > < f > g\nd2ia            a < b > < c > <> < e > < f > g\nd2a<            a < b > < c >  < e > < f > g\nd2a>            a < b > < c >  < e > < f > g\nd2aa            a < b > < c >  < e > < f > g\nd2I<            a < b > < c > <  > < e > < f > g\nd2I>            a < b > < c > <  > < e > < f > g\nd2Ia            a < b > < c > <  > < e > < f > g\nd2A<            a < b > < c > < e > < f > g\nd2A>            a < b > < c > < e > < f > g\nd2Aa            a < b > < c > < e > < f > g\nd2in<           a < b > < c > < < x > > < e > <> g\nd2in>           a < b > < c > < < x > > < e > <> g\nd2ina           a < b > < c > < < x > > < e > <> g\nd2an<           a < b > < c > < < x > > < e >  g\nd2an>           a < b > < c > < < x > > < e >  g\nd2ana           a < b > < c > < < x > > < e >  g\nd2In<           a < b > < c > < < x > > < e > <  > g\nd2In>           a < b > < c > < < x > > < e > <  > g\nd2Ina           a < b > < c > < < x > > < e > <  > g\nd2An<           a < b > < c > < < x > > < e > g\nd2An>           a < b > < c > < < x > > < e > g\nd2Ana           a < b > < c > < < x > > < e > g\nd2il<           a <> < c > < < x > > < e > < f > g\nd2il>           a <> < c > < < x > > < e > < f > g\nd2ila           a <> < c > < < x > > < e > < f > g\nd2al<           a  < c > < < x > > < e > < f > g\nd2al>           a  < c > < < x > > < e > < f > g\nd2ala           a  < c > < < x > > < e > < f > g\nd2Il<           a <  > < c > < < x > > < e > < f > g\nd2Il>           a <  > < c > < < x > > < e > < f > g\nd2Ila           a <  > < c > < < x > > < e > < f > g\nd2Al<           a < c > < < x > > < e > < f > g\nd2Al>           a < c > < < x > > < e > < f > g\nd2Ala           a < c > < < x > > < e > < f > g\nyi<             a < b > < c > < < x > > < e > < f > g           ' x '\nyi>             a < b > < c > < < x > > < e > < f > g           ' x '\nyia             a < b > < c > < < x > > < e > < f > g           ' x '\nya<             a < b > < c > < < x > > < e > < f > g           '< x >'\nya>             a < b > < c > < < x > > < e > < f > g           '< x >'\nyaa             a < b > < c > < < x > > < e > < f > g           '< x >'\nyI<             a < b > < c > < < x > > < e > < f > g           'x'\nyI>             a < b > < c > < < x > > < e > < f > g           'x'\nyIa             a < b > < c > < < x > > < e > < f > g           'x'\nyA<             a < b > < c > < < x > > < e > < f > g           '< x > '\nyA>             a < b > < c > < < x > > < e > < f > g           '< x > '\nyAa             a < b > < c > < < x > > < e > < f > g           '< x > '\nyin<            a < b > < c > < < x > > < e > < f > g           ' e '\nyin>            a < b > < c > < < x > > < e > < f > g           ' e '\nyina            a < b > < c > < < x > > < e > < f > g           ' e '\nyan<            a < b > < c > < < x > > < e > < f > g           '< e >'\nyan>            a < b > < c > < < x > > < e > < f > g           '< e >'\nyana            a < b > < c > < < x > > < e > < f > g           '< e >'\nyIn<            a < b > < c > < < x > > < e > < f > g           'e'\nyIn>            a < b > < c > < < x > > < e > < f > g           'e'\nyIna            a < b > < c > < < x > > < e > < f > g           'e'\nyAn<            a < b > < c > < < x > > < e > < f > g           '< e > '\nyAn>            a < b > < c > < < x > > < e > < f > g           '< e > '\nyAna            a < b > < c > < < x > > < e > < f > g           '< e > '\nyil<            a < b > < c > < < x > > < e > < f > g           ' c '\nyil>            a < b > < c > < < x > > < e > < f > g           ' c '\nyila            a < b > < c > < < x > > < e > < f > g           ' c '\nyal<            a < b > < c > < < x > > < e > < f > g           '< c >'\nyal>            a < b > < c > < < x > > < e > < f > g           '< c >'\nyala            a < b > < c > < < x > > < e > < f > g           '< c >'\nyIl<            a < b > < c > < < x > > < e > < f > g           'c'\nyIl>            a < b > < c > < < x > > < e > < f > g           'c'\nyIla            a < b > < c > < < x > > < e > < f > g           'c'\nyAl<            a < b > < c > < < x > > < e > < f > g           '< c > '\nyAl>            a < b > < c > < < x > > < e > < f > g           '< c > '\nyAla            a < b > < c > < < x > > < e > < f > g           '< c > '\ny1i<            a < b > < c > < < x > > < e > < f > g           ' x '\ny1i>            a < b > < c > < < x > > < e > < f > g           ' x '\ny1ia            a < b > < c > < < x > > < e > < f > g           ' x '\ny1a<            a < b > < c > < < x > > < e > < f > g           '< x >'\ny1a>            a < b > < c > < < x > > < e > < f > g           '< x >'\ny1aa            a < b > < c > < < x > > < e > < f > g           '< x >'\ny1I<            a < b > < c > < < x > > < e > < f > g           'x'\ny1I>            a < b > < c > < < x > > < e > < f > g           'x'\ny1Ia            a < b > < c > < < x > > < e > < f > g           'x'\ny1A<            a < b > < c > < < x > > < e > < f > g           '< x > '\ny1A>            a < b > < c > < < x > > < e > < f > g           '< x > '\ny1Aa            a < b > < c > < < x > > < e > < f > g           '< x > '\ny1in<           a < b > < c > < < x > > < e > < f > g           ' e '\ny1in>           a < b > < c > < < x > > < e > < f > g           ' e '\ny1ina           a < b > < c > < < x > > < e > < f > g           ' e '\ny1an<           a < b > < c > < < x > > < e > < f > g           '< e >'\ny1an>           a < b > < c > < < x > > < e > < f > g           '< e >'\ny1ana           a < b > < c > < < x > > < e > < f > g           '< e >'\ny1In<           a < b > < c > < < x > > < e > < f > g           'e'\ny1In>           a < b > < c > < < x > > < e > < f > g           'e'\ny1Ina           a < b > < c > < < x > > < e > < f > g           'e'\ny1An<           a < b > < c > < < x > > < e > < f > g           '< e > '\ny1An>           a < b > < c > < < x > > < e > < f > g           '< e > '\ny1Ana           a < b > < c > < < x > > < e > < f > g           '< e > '\ny1il<           a < b > < c > < < x > > < e > < f > g           ' c '\ny1il>           a < b > < c > < < x > > < e > < f > g           ' c '\ny1ila           a < b > < c > < < x > > < e > < f > g           ' c '\ny1al<           a < b > < c > < < x > > < e > < f > g           '< c >'\ny1al>           a < b > < c > < < x > > < e > < f > g           '< c >'\ny1ala           a < b > < c > < < x > > < e > < f > g           '< c >'\ny1Il<           a < b > < c > < < x > > < e > < f > g           'c'\ny1Il>           a < b > < c > < < x > > < e > < f > g           'c'\ny1Ila           a < b > < c > < < x > > < e > < f > g           'c'\ny1Al<           a < b > < c > < < x > > < e > < f > g           '< c > '\ny1Al>           a < b > < c > < < x > > < e > < f > g           '< c > '\ny1Ala           a < b > < c > < < x > > < e > < f > g           '< c > '\ny2i<            a < b > < c > < < x > > < e > < f > g           ' < x > '\ny2i>            a < b > < c > < < x > > < e > < f > g           ' < x > '\ny2ia            a < b > < c > < < x > > < e > < f > g           ' < x > '\ny2a<            a < b > < c > < < x > > < e > < f > g           '< < x > >'\ny2a>            a < b > < c > < < x > > < e > < f > g           '< < x > >'\ny2aa            a < b > < c > < < x > > < e > < f > g           '< < x > >'\ny2I<            a < b > < c > < < x > > < e > < f > g           '< x >'\ny2I>            a < b > < c > < < x > > < e > < f > g           '< x >'\ny2Ia            a < b > < c > < < x > > < e > < f > g           '< x >'\ny2A<            a < b > < c > < < x > > < e > < f > g           '< < x > > '\ny2A>            a < b > < c > < < x > > < e > < f > g           '< < x > > '\ny2Aa            a < b > < c > < < x > > < e > < f > g           '< < x > > '\ny2in<           a < b > < c > < < x > > < e > < f > g           ' f '\ny2in>           a < b > < c > < < x > > < e > < f > g           ' f '\ny2ina           a < b > < c > < < x > > < e > < f > g           ' f '\ny2an<           a < b > < c > < < x > > < e > < f > g           '< f >'\ny2an>           a < b > < c > < < x > > < e > < f > g           '< f >'\ny2ana           a < b > < c > < < x > > < e > < f > g           '< f >'\ny2In<           a < b > < c > < < x > > < e > < f > g           'f'\ny2In>           a < b > < c > < < x > > < e > < f > g           'f'\ny2Ina           a < b > < c > < < x > > < e > < f > g           'f'\ny2An<           a < b > < c > < < x > > < e > < f > g           '< f > '\ny2An>           a < b > < c > < < x > > < e > < f > g           '< f > '\ny2Ana           a < b > < c > < < x > > < e > < f > g           '< f > '\ny2il<           a < b > < c > < < x > > < e > < f > g           ' b '\ny2il>           a < b > < c > < < x > > < e > < f > g           ' b '\ny2ila           a < b > < c > < < x > > < e > < f > g           ' b '\ny2al<           a < b > < c > < < x > > < e > < f > g           '< b >'\ny2al>           a < b > < c > < < x > > < e > < f > g           '< b >'\ny2ala           a < b > < c > < < x > > < e > < f > g           '< b >'\ny2Il<           a < b > < c > < < x > > < e > < f > g           'b'\ny2Il>           a < b > < c > < < x > > < e > < f > g           'b'\ny2Ila           a < b > < c > < < x > > < e > < f > g           'b'\ny2Al<           a < b > < c > < < x > > < e > < f > g           '< b > '\ny2Al>           a < b > < c > < < x > > < e > < f > g           '< b > '\ny2Ala           a < b > < c > < < x > > < e > < f > g           '< b > '\nvi<             a < b > < c > < <___> > < e > < f > g\nvi>             a < b > < c > < <___> > < e > < f > g\nvia             a < b > < c > < <___> > < e > < f > g\nva<             a < b > < c > < _____ > < e > < f > g\nva>             a < b > < c > < _____ > < e > < f > g\nvaa             a < b > < c > < _____ > < e > < f > g\nvI<             a < b > < c > < < _ > > < e > < f > g\nvI>             a < b > < c > < < _ > > < e > < f > g\nvIa             a < b > < c > < < _ > > < e > < f > g\nvA<             a < b > < c > < ______> < e > < f > g\nvA>             a < b > < c > < ______> < e > < f > g\nvAa             a < b > < c > < ______> < e > < f > g\nvin<            a < b > < c > < < x > > <___> < f > g\nvin>            a < b > < c > < < x > > <___> < f > g\nvina            a < b > < c > < < x > > <___> < f > g\nvan<            a < b > < c > < < x > > _____ < f > g\nvan>            a < b > < c > < < x > > _____ < f > g\nvana            a < b > < c > < < x > > _____ < f > g\nvIn<            a < b > < c > < < x > > < _ > < f > g\nvIn>            a < b > < c > < < x > > < _ > < f > g\nvIna            a < b > < c > < < x > > < _ > < f > g\nvAn<            a < b > < c > < < x > > ______< f > g\nvAn>            a < b > < c > < < x > > ______< f > g\nvAna            a < b > < c > < < x > > ______< f > g\nvil<            a < b > <___> < < x > > < e > < f > g\nvil>            a < b > <___> < < x > > < e > < f > g\nvila            a < b > <___> < < x > > < e > < f > g\nval<            a < b > _____ < < x > > < e > < f > g\nval>            a < b > _____ < < x > > < e > < f > g\nvala            a < b > _____ < < x > > < e > < f > g\nvIl<            a < b > < _ > < < x > > < e > < f > g\nvIl>            a < b > < _ > < < x > > < e > < f > g\nvIla            a < b > < _ > < < x > > < e > < f > g\nvAl<            a < b > ______< < x > > < e > < f > g\nvAl>            a < b > ______< < x > > < e > < f > g\nvAla            a < b > ______< < x > > < e > < f > g\nv1i<            a < b > < c > < <___> > < e > < f > g\nv1i>            a < b > < c > < <___> > < e > < f > g\nv1ia            a < b > < c > < <___> > < e > < f > g\nv1a<            a < b > < c > < _____ > < e > < f > g\nv1a>            a < b > < c > < _____ > < e > < f > g\nv1aa            a < b > < c > < _____ > < e > < f > g\nv1I<            a < b > < c > < < _ > > < e > < f > g\nv1I>            a < b > < c > < < _ > > < e > < f > g\nv1Ia            a < b > < c > < < _ > > < e > < f > g\nv1A<            a < b > < c > < ______> < e > < f > g\nv1A>            a < b > < c > < ______> < e > < f > g\nv1Aa            a < b > < c > < ______> < e > < f > g\nv1in<           a < b > < c > < < x > > <___> < f > g\nv1in>           a < b > < c > < < x > > <___> < f > g\nv1ina           a < b > < c > < < x > > <___> < f > g\nv1an<           a < b > < c > < < x > > _____ < f > g\nv1an>           a < b > < c > < < x > > _____ < f > g\nv1ana           a < b > < c > < < x > > _____ < f > g\nv1In<           a < b > < c > < < x > > < _ > < f > g\nv1In>           a < b > < c > < < x > > < _ > < f > g\nv1Ina           a < b > < c > < < x > > < _ > < f > g\nv1An<           a < b > < c > < < x > > ______< f > g\nv1An>           a < b > < c > < < x > > ______< f > g\nv1Ana           a < b > < c > < < x > > ______< f > g\nv1il<           a < b > <___> < < x > > < e > < f > g\nv1il>           a < b > <___> < < x > > < e > < f > g\nv1ila           a < b > <___> < < x > > < e > < f > g\nv1al<           a < b > _____ < < x > > < e > < f > g\nv1al>           a < b > _____ < < x > > < e > < f > g\nv1ala           a < b > _____ < < x > > < e > < f > g\nv1Il<           a < b > < _ > < < x > > < e > < f > g\nv1Il>           a < b > < _ > < < x > > < e > < f > g\nv1Ila           a < b > < _ > < < x > > < e > < f > g\nv1Al<           a < b > ______< < x > > < e > < f > g\nv1Al>           a < b > ______< < x > > < e > < f > g\nv1Ala           a < b > ______< < x > > < e > < f > g\nv2i<            a < b > < c > <_______> < e > < f > g\nv2i>            a < b > < c > <_______> < e > < f > g\nv2ia            a < b > < c > <_______> < e > < f > g\nv2a<            a < b > < c > _________ < e > < f > g\nv2a>            a < b > < c > _________ < e > < f > g\nv2aa            a < b > < c > _________ < e > < f > g\nv2I<            a < b > < c > < _____ > < e > < f > g\nv2I>            a < b > < c > < _____ > < e > < f > g\nv2Ia            a < b > < c > < _____ > < e > < f > g\nv2A<            a < b > < c > __________< e > < f > g\nv2A>            a < b > < c > __________< e > < f > g\nv2Aa            a < b > < c > __________< e > < f > g\nv2in<           a < b > < c > < < x > > < e > <___> g\nv2in>           a < b > < c > < < x > > < e > <___> g\nv2ina           a < b > < c > < < x > > < e > <___> g\nv2an<           a < b > < c > < < x > > < e > _____ g\nv2an>           a < b > < c > < < x > > < e > _____ g\nv2ana           a < b > < c > < < x > > < e > _____ g\nv2In<           a < b > < c > < < x > > < e > < _ > g\nv2In>           a < b > < c > < < x > > < e > < _ > g\nv2Ina           a < b > < c > < < x > > < e > < _ > g\nv2An<           a < b > < c > < < x > > < e > ______g\nv2An>           a < b > < c > < < x > > < e > ______g\nv2Ana           a < b > < c > < < x > > < e > ______g\nv2il<           a <___> < c > < < x > > < e > < f > g\nv2il>           a <___> < c > < < x > > < e > < f > g\nv2ila           a <___> < c > < < x > > < e > < f > g\nv2al<           a _____ < c > < < x > > < e > < f > g\nv2al>           a _____ < c > < < x > > < e > < f > g\nv2ala           a _____ < c > < < x > > < e > < f > g\nv2Il<           a < _ > < c > < < x > > < e > < f > g\nv2Il>           a < _ > < c > < < x > > < e > < f > g\nv2Ila           a < _ > < c > < < x > > < e > < f > g\nv2Al<           a ______< c > < < x > > < e > < f > g\nv2Al>           a ______< c > < < x > > < e > < f > g\nv2Ala           a ______< c > < < x > > < e > < f > g\na <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\ncit             a <a> b </a> <b> c </b> <c> <d>_</d> </c> <e> e </e> <f> f </f> g\ncat             a <a> b </a> <b> c </b> <c> _ </c> <e> e </e> <f> f </f> g\ncIt             a <a> b </a> <b> c </b> <c> <d> _ </d> </c> <e> e </e> <f> f </f> g\ncAt             a <a> b </a> <b> c </b> <c> _</c> <e> e </e> <f> f </f> g\ncint            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e>_</e> <f> f </f> g\ncant            a <a> b </a> <b> c </b> <c> <d> x </d> </c> _ <f> f </f> g\ncInt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> _ </e> <f> f </f> g\ncAnt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <_> <f> f </f> g\ncilt            a <a> b </a> <b>_</b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\ncalt            a <a> b </a> _ <c> <d> x </d> </c> <e> e </e> <f> f </f> g\ncIlt            a <a> b </a> <b> _ </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\ncAlt            a <a> b </a> <_> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nc1it            a <a> b </a> <b> c </b> <c> <d>_</d> </c> <e> e </e> <f> f </f> g\nc1at            a <a> b </a> <b> c </b> <c> _ </c> <e> e </e> <f> f </f> g\nc1It            a <a> b </a> <b> c </b> <c> <d> _ </d> </c> <e> e </e> <f> f </f> g\nc1At            a <a> b </a> <b> c </b> <c> _</c> <e> e </e> <f> f </f> g\nc1int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e>_</e> <f> f </f> g\nc1ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> _ <f> f </f> g\nc1Int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> _ </e> <f> f </f> g\nc1Ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <_> <f> f </f> g\nc1ilt           a <a> b </a> <b>_</b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nc1alt           a <a> b </a> _ <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nc1Ilt           a <a> b </a> <b> _ </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nc1Alt           a <a> b </a> <_> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nc2it            a <a> b </a> <b> c </b> <c>_</c> <e> e </e> <f> f </f> g\nc2at            a <a> b </a> <b> c </b> _ <e> e </e> <f> f </f> g\nc2It            a <a> b </a> <b> c </b> <c> _ </c> <e> e </e> <f> f </f> g\nc2At            a <a> b </a> <b> c </b> _<e> e </e> <f> f </f> g\nc2int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f>_</f> g\nc2ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> _ g\nc2Int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> _ </f> g\nc2Ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <_> g\nc2ilt           a <a>_</a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nc2alt           a _ <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nc2Ilt           a <a> _ </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nc2Alt           a <_> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\ndit             a <a> b </a> <b> c </b> <c> <d></d> </c> <e> e </e> <f> f </f> g\ndat             a <a> b </a> <b> c </b> <c>  </c> <e> e </e> <f> f </f> g\ndIt             a <a> b </a> <b> c </b> <c> <d>  </d> </c> <e> e </e> <f> f </f> g\ndAt             a <a> b </a> <b> c </b> <c> </c> <e> e </e> <f> f </f> g\ndint            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e></e> <f> f </f> g\ndant            a <a> b </a> <b> c </b> <c> <d> x </d> </c>  <f> f </f> g\ndInt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e>  </e> <f> f </f> g\ndAnt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <> <f> f </f> g\ndilt            a <a> b </a> <b></b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\ndalt            a <a> b </a>  <c> <d> x </d> </c> <e> e </e> <f> f </f> g\ndIlt            a <a> b </a> <b>  </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\ndAlt            a <a> b </a> <> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nd1it            a <a> b </a> <b> c </b> <c> <d></d> </c> <e> e </e> <f> f </f> g\nd1at            a <a> b </a> <b> c </b> <c>  </c> <e> e </e> <f> f </f> g\nd1It            a <a> b </a> <b> c </b> <c> <d>  </d> </c> <e> e </e> <f> f </f> g\nd1At            a <a> b </a> <b> c </b> <c> </c> <e> e </e> <f> f </f> g\nd1int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e></e> <f> f </f> g\nd1ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c>  <f> f </f> g\nd1Int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e>  </e> <f> f </f> g\nd1Ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <> <f> f </f> g\nd1ilt           a <a> b </a> <b></b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nd1alt           a <a> b </a>  <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nd1Ilt           a <a> b </a> <b>  </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nd1Alt           a <a> b </a> <> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nd2it            a <a> b </a> <b> c </b> <c></c> <e> e </e> <f> f </f> g\nd2at            a <a> b </a> <b> c </b>  <e> e </e> <f> f </f> g\nd2It            a <a> b </a> <b> c </b> <c>  </c> <e> e </e> <f> f </f> g\nd2At            a <a> b </a> <b> c </b> <e> e </e> <f> f </f> g\nd2int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f></f> g\nd2ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e>  g\nd2Int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f>  </f> g\nd2Ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <> g\nd2ilt           a <a></a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nd2alt           a  <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nd2Ilt           a <a>  </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nd2Alt           a <> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nyit             a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' x '\nyat             a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<d> x </d>'\nyIt             a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'x'\nyAt             a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<d> x </d> '\nyint            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' e '\nyant            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<e> e </e>'\nyInt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'e'\nyAnt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'e> e </e'\nyilt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' c '\nyalt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<b> c </b>'\nyIlt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'c'\nyAlt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'b> c </b'\ny1it            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' x '\ny1at            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<d> x </d>'\ny1It            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'x'\ny1At            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<d> x </d> '\ny1int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' e '\ny1ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<e> e </e>'\ny1Int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'e'\ny1Ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'e> e </e'\ny1ilt           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' c '\ny1alt           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<b> c </b>'\ny1Ilt           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'c'\ny1Alt           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'b> c </b'\ny2it            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' <d> x </d> '\ny2at            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<c> <d> x </d> </c>'\ny2It            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<d> x </d>'\ny2At            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<c> <d> x </d> </c> '\ny2int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' f '\ny2ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<f> f </f>'\ny2Int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'f'\ny2Ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'f> f </f'\ny2ilt           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             ' b '\ny2alt           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             '<a> b </a>'\ny2Ilt           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'b'\ny2Alt           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g             'a> b </a'\nvit             a <a> b </a> <b> c </b> <c> <d>___</d> </c> <e> e </e> <f> f </f> g\nvat             a <a> b </a> <b> c </b> <c> __________ </c> <e> e </e> <f> f </f> g\nvIt             a <a> b </a> <b> c </b> <c> <d> _ </d> </c> <e> e </e> <f> f </f> g\nvAt             a <a> b </a> <b> c </b> <c> ___________</c> <e> e </e> <f> f </f> g\nvint            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e>___</e> <f> f </f> g\nvant            a <a> b </a> <b> c </b> <c> <d> x </d> </c> __________ <f> f </f> g\nvInt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> _ </e> <f> f </f> g\nvAnt            a <a> b </a> <b> c </b> <c> <d> x </d> </c> <________> <f> f </f> g\nvilt            a <a> b </a> <b>___</b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nvalt            a <a> b </a> __________ <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nvIlt            a <a> b </a> <b> _ </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nvAlt            a <a> b </a> <________> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nv1it            a <a> b </a> <b> c </b> <c> <d>___</d> </c> <e> e </e> <f> f </f> g\nv1at            a <a> b </a> <b> c </b> <c> __________ </c> <e> e </e> <f> f </f> g\nv1It            a <a> b </a> <b> c </b> <c> <d> _ </d> </c> <e> e </e> <f> f </f> g\nv1At            a <a> b </a> <b> c </b> <c> ___________</c> <e> e </e> <f> f </f> g\nv1int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e>___</e> <f> f </f> g\nv1ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> __________ <f> f </f> g\nv1Int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> _ </e> <f> f </f> g\nv1Ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <________> <f> f </f> g\nv1ilt           a <a> b </a> <b>___</b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nv1alt           a <a> b </a> __________ <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nv1Ilt           a <a> b </a> <b> _ </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nv1Alt           a <a> b </a> <________> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nv2it            a <a> b </a> <b> c </b> <c>____________</c> <e> e </e> <f> f </f> g\nv2at            a <a> b </a> <b> c </b> ___________________ <e> e </e> <f> f </f> g\nv2It            a <a> b </a> <b> c </b> <c> __________ </c> <e> e </e> <f> f </f> g\nv2At            a <a> b </a> <b> c </b> ____________________<e> e </e> <f> f </f> g\nv2int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f>___</f> g\nv2ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> __________ g\nv2Int           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> _ </f> g\nv2Ant           a <a> b </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <________> g\nv2ilt           a <a>___</a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nv2alt           a __________ <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nv2Ilt           a <a> _ </a> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\nv2Alt           a <________> <b> c </b> <c> <d> x </d> </c> <e> e </e> <f> f </f> g\n\na ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l\nci'             a ' b ' c ' d ' e '_' g ' h ' i ' k ' l\nca'             a ' b ' c ' d ' e _g ' h ' i ' k ' l\ncI'             a ' b ' c ' d ' e ' _ ' g ' h ' i ' k ' l\ncin'            a ' b ' c ' d ' e ' x '_' h ' i ' k ' l\ncan'            a ' b ' c ' d ' e ' x _h ' i ' k ' l\ncIn'            a ' b ' c ' d ' e ' x ' _ ' h ' i ' k ' l\ncil'            a ' b ' c ' d '_' x ' g ' h ' i ' k ' l\ncal'            a ' b ' c ' d _x ' g ' h ' i ' k ' l\ncIl'            a ' b ' c ' d ' _ ' x ' g ' h ' i ' k ' l\nciN'            a ' b ' c ' d ' e ' x ' g '_' i ' k ' l\ncaN'            a ' b ' c ' d ' e ' x ' g _i ' k ' l\ncIN'            a ' b ' c ' d ' e ' x ' g ' _ ' i ' k ' l\nciL'            a ' b ' c '_' e ' x ' g ' h ' i ' k ' l\ncaL'            a ' b ' c _e ' x ' g ' h ' i ' k ' l\ncIL'            a ' b ' c ' _ ' e ' x ' g ' h ' i ' k ' l\nc1i'            a ' b ' c ' d ' e '_' g ' h ' i ' k ' l\nc1a'            a ' b ' c ' d ' e _g ' h ' i ' k ' l\nc1I'            a ' b ' c ' d ' e ' _ ' g ' h ' i ' k ' l\nc1in'           a ' b ' c ' d ' e ' x '_' h ' i ' k ' l\nc1an'           a ' b ' c ' d ' e ' x _h ' i ' k ' l\nc1In'           a ' b ' c ' d ' e ' x ' _ ' h ' i ' k ' l\nc1il'           a ' b ' c ' d '_' x ' g ' h ' i ' k ' l\nc1al'           a ' b ' c ' d _x ' g ' h ' i ' k ' l\nc1Il'           a ' b ' c ' d ' _ ' x ' g ' h ' i ' k ' l\nc1iN'           a ' b ' c ' d ' e ' x ' g '_' i ' k ' l\nc1aN'           a ' b ' c ' d ' e ' x ' g _i ' k ' l\nc1IN'           a ' b ' c ' d ' e ' x ' g ' _ ' i ' k ' l\nc1iL'           a ' b ' c '_' e ' x ' g ' h ' i ' k ' l\nc1aL'           a ' b ' c _e ' x ' g ' h ' i ' k ' l\nc1IL'           a ' b ' c ' _ ' e ' x ' g ' h ' i ' k ' l\nc2i'            a ' b ' c ' d ' e '_' g ' h ' i ' k ' l\nc2a'            a ' b ' c ' d ' e _g ' h ' i ' k ' l\nc2I'            a ' b ' c ' d ' e ' _ ' g ' h ' i ' k ' l\nc2in'           a ' b ' c ' d ' e ' x ' g '_' i ' k ' l\nc2an'           a ' b ' c ' d ' e ' x ' g _i ' k ' l\nc2In'           a ' b ' c ' d ' e ' x ' g ' _ ' i ' k ' l\nc2il'           a ' b ' c '_' e ' x ' g ' h ' i ' k ' l\nc2al'           a ' b ' c _e ' x ' g ' h ' i ' k ' l\nc2Il'           a ' b ' c ' _ ' e ' x ' g ' h ' i ' k ' l\nc2iN'           a ' b ' c ' d ' e ' x ' g ' h ' i '_' l\nc2aN'           a ' b ' c ' d ' e ' x ' g ' h ' i _l\nc2IN'           a ' b ' c ' d ' e ' x ' g ' h ' i ' _ ' l\nc2iL'           a '_' c ' d ' e ' x ' g ' h ' i ' k ' l\nc2aL'           a _c ' d ' e ' x ' g ' h ' i ' k ' l\nc2IL'           a ' _ ' c ' d ' e ' x ' g ' h ' i ' k ' l\ndi'             a ' b ' c ' d ' e '' g ' h ' i ' k ' l\nda'             a ' b ' c ' d ' e g ' h ' i ' k ' l\ndI'             a ' b ' c ' d ' e '  ' g ' h ' i ' k ' l\ndin'            a ' b ' c ' d ' e ' x '' h ' i ' k ' l\ndan'            a ' b ' c ' d ' e ' x h ' i ' k ' l\ndIn'            a ' b ' c ' d ' e ' x '  ' h ' i ' k ' l\ndil'            a ' b ' c ' d '' x ' g ' h ' i ' k ' l\ndal'            a ' b ' c ' d x ' g ' h ' i ' k ' l\ndIl'            a ' b ' c ' d '  ' x ' g ' h ' i ' k ' l\ndiN'            a ' b ' c ' d ' e ' x ' g '' i ' k ' l\ndaN'            a ' b ' c ' d ' e ' x ' g i ' k ' l\ndIN'            a ' b ' c ' d ' e ' x ' g '  ' i ' k ' l\ndiL'            a ' b ' c '' e ' x ' g ' h ' i ' k ' l\ndaL'            a ' b ' c e ' x ' g ' h ' i ' k ' l\ndIL'            a ' b ' c '  ' e ' x ' g ' h ' i ' k ' l\nd1i'            a ' b ' c ' d ' e '' g ' h ' i ' k ' l\nd1a'            a ' b ' c ' d ' e g ' h ' i ' k ' l\nd1I'            a ' b ' c ' d ' e '  ' g ' h ' i ' k ' l\nd1in'           a ' b ' c ' d ' e ' x '' h ' i ' k ' l\nd1an'           a ' b ' c ' d ' e ' x h ' i ' k ' l\nd1In'           a ' b ' c ' d ' e ' x '  ' h ' i ' k ' l\nd1il'           a ' b ' c ' d '' x ' g ' h ' i ' k ' l\nd1al'           a ' b ' c ' d x ' g ' h ' i ' k ' l\nd1Il'           a ' b ' c ' d '  ' x ' g ' h ' i ' k ' l\nd1iN'           a ' b ' c ' d ' e ' x ' g '' i ' k ' l\nd1aN'           a ' b ' c ' d ' e ' x ' g i ' k ' l\nd1IN'           a ' b ' c ' d ' e ' x ' g '  ' i ' k ' l\nd1iL'           a ' b ' c '' e ' x ' g ' h ' i ' k ' l\nd1aL'           a ' b ' c e ' x ' g ' h ' i ' k ' l\nd1IL'           a ' b ' c '  ' e ' x ' g ' h ' i ' k ' l\nd2i'            a ' b ' c ' d ' e '' g ' h ' i ' k ' l\nd2a'            a ' b ' c ' d ' e g ' h ' i ' k ' l\nd2I'            a ' b ' c ' d ' e '  ' g ' h ' i ' k ' l\nd2in'           a ' b ' c ' d ' e ' x ' g '' i ' k ' l\nd2an'           a ' b ' c ' d ' e ' x ' g i ' k ' l\nd2In'           a ' b ' c ' d ' e ' x ' g '  ' i ' k ' l\nd2il'           a ' b ' c '' e ' x ' g ' h ' i ' k ' l\nd2al'           a ' b ' c e ' x ' g ' h ' i ' k ' l\nd2Il'           a ' b ' c '  ' e ' x ' g ' h ' i ' k ' l\nd2iN'           a ' b ' c ' d ' e ' x ' g ' h ' i '' l\nd2aN'           a ' b ' c ' d ' e ' x ' g ' h ' i l\nd2IN'           a ' b ' c ' d ' e ' x ' g ' h ' i '  ' l\nd2iL'           a '' c ' d ' e ' x ' g ' h ' i ' k ' l\nd2aL'           a c ' d ' e ' x ' g ' h ' i ' k ' l\nd2IL'           a '  ' c ' d ' e ' x ' g ' h ' i ' k ' l\nyi'             a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' x '\nya'             a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' x ' '\nyI'             a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'x'\nyin'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' g '\nyan'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' g ' '\nyIn'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'g'\nyil'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' e '\nyal'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' e ' '\nyIl'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'e'\nyiN'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' h '\nyaN'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' h ' '\nyIN'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'h'\nyiL'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' d '\nyaL'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' d ' '\nyIL'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'd'\ny1i'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' x '\ny1a'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' x ' '\ny1I'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'x'\ny1in'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' g '\ny1an'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' g ' '\ny1In'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'g'\ny1il'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' e '\ny1al'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' e ' '\ny1Il'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'e'\ny1iN'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' h '\ny1aN'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' h ' '\ny1IN'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'h'\ny1iL'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' d '\ny1aL'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' d ' '\ny1IL'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'd'\ny2i'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' x '\ny2a'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' x ' '\ny2I'            a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'x'\ny2in'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' h '\ny2an'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' h ' '\ny2In'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'h'\ny2il'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' d '\ny2al'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' d ' '\ny2Il'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'd'\ny2iN'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' k '\ny2aN'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' k ' '\ny2IN'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'k'\ny2iL'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       ' b '\ny2aL'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       '' b ' '\ny2IL'           a ' b ' c ' d ' e ' x ' g ' h ' i ' k ' l       'b'\nvi'             a ' b ' c ' d ' e '___' g ' h ' i ' k ' l\nva'             a ' b ' c ' d ' e ______g ' h ' i ' k ' l\nvI'             a ' b ' c ' d ' e ' _ ' g ' h ' i ' k ' l\nvin'            a ' b ' c ' d ' e ' x '___' h ' i ' k ' l\nvan'            a ' b ' c ' d ' e ' x ______h ' i ' k ' l\nvIn'            a ' b ' c ' d ' e ' x ' _ ' h ' i ' k ' l\nvil'            a ' b ' c ' d '___' x ' g ' h ' i ' k ' l\nval'            a ' b ' c ' d ______x ' g ' h ' i ' k ' l\nvIl'            a ' b ' c ' d ' _ ' x ' g ' h ' i ' k ' l\nviN'            a ' b ' c ' d ' e ' x ' g '___' i ' k ' l\nvaN'            a ' b ' c ' d ' e ' x ' g ______i ' k ' l\nvIN'            a ' b ' c ' d ' e ' x ' g ' _ ' i ' k ' l\nviL'            a ' b ' c '___' e ' x ' g ' h ' i ' k ' l\nvaL'            a ' b ' c ______e ' x ' g ' h ' i ' k ' l\nvIL'            a ' b ' c ' _ ' e ' x ' g ' h ' i ' k ' l\nv1i'            a ' b ' c ' d ' e '___' g ' h ' i ' k ' l\nv1a'            a ' b ' c ' d ' e ______g ' h ' i ' k ' l\nv1I'            a ' b ' c ' d ' e ' _ ' g ' h ' i ' k ' l\nv1in'           a ' b ' c ' d ' e ' x '___' h ' i ' k ' l\nv1an'           a ' b ' c ' d ' e ' x ______h ' i ' k ' l\nv1In'           a ' b ' c ' d ' e ' x ' _ ' h ' i ' k ' l\nv1il'           a ' b ' c ' d '___' x ' g ' h ' i ' k ' l\nv1al'           a ' b ' c ' d ______x ' g ' h ' i ' k ' l\nv1Il'           a ' b ' c ' d ' _ ' x ' g ' h ' i ' k ' l\nv1iN'           a ' b ' c ' d ' e ' x ' g '___' i ' k ' l\nv1aN'           a ' b ' c ' d ' e ' x ' g ______i ' k ' l\nv1IN'           a ' b ' c ' d ' e ' x ' g ' _ ' i ' k ' l\nv1iL'           a ' b ' c '___' e ' x ' g ' h ' i ' k ' l\nv1aL'           a ' b ' c ______e ' x ' g ' h ' i ' k ' l\nv1IL'           a ' b ' c ' _ ' e ' x ' g ' h ' i ' k ' l\nv2i'            a ' b ' c ' d ' e '___' g ' h ' i ' k ' l\nv2a'            a ' b ' c ' d ' e ______g ' h ' i ' k ' l\nv2I'            a ' b ' c ' d ' e ' _ ' g ' h ' i ' k ' l\nv2in'           a ' b ' c ' d ' e ' x ' g '___' i ' k ' l\nv2an'           a ' b ' c ' d ' e ' x ' g ______i ' k ' l\nv2In'           a ' b ' c ' d ' e ' x ' g ' _ ' i ' k ' l\nv2il'           a ' b ' c '___' e ' x ' g ' h ' i ' k ' l\nv2al'           a ' b ' c ______e ' x ' g ' h ' i ' k ' l\nv2Il'           a ' b ' c ' _ ' e ' x ' g ' h ' i ' k ' l\nv2iN'           a ' b ' c ' d ' e ' x ' g ' h ' i '___' l\nv2aN'           a ' b ' c ' d ' e ' x ' g ' h ' i ______l\nv2IN'           a ' b ' c ' d ' e ' x ' g ' h ' i ' _ ' l\nv2iL'           a '___' c ' d ' e ' x ' g ' h ' i ' k ' l\nv2aL'           a ______c ' d ' e ' x ' g ' h ' i ' k ' l\nv2IL'           a ' _ ' c ' d ' e ' x ' g ' h ' i ' k ' l\na \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l\nci\"             a \" b \" c \" d \" e \"_\" g \" h \" i \" k \" l\nca\"             a \" b \" c \" d \" e _g \" h \" i \" k \" l\ncI\"             a \" b \" c \" d \" e \" _ \" g \" h \" i \" k \" l\ncin\"            a \" b \" c \" d \" e \" x \"_\" h \" i \" k \" l\ncan\"            a \" b \" c \" d \" e \" x _h \" i \" k \" l\ncIn\"            a \" b \" c \" d \" e \" x \" _ \" h \" i \" k \" l\ncil\"            a \" b \" c \" d \"_\" x \" g \" h \" i \" k \" l\ncal\"            a \" b \" c \" d _x \" g \" h \" i \" k \" l\ncIl\"            a \" b \" c \" d \" _ \" x \" g \" h \" i \" k \" l\nciN\"            a \" b \" c \" d \" e \" x \" g \"_\" i \" k \" l\ncaN\"            a \" b \" c \" d \" e \" x \" g _i \" k \" l\ncIN\"            a \" b \" c \" d \" e \" x \" g \" _ \" i \" k \" l\nciL\"            a \" b \" c \"_\" e \" x \" g \" h \" i \" k \" l\ncaL\"            a \" b \" c _e \" x \" g \" h \" i \" k \" l\ncIL\"            a \" b \" c \" _ \" e \" x \" g \" h \" i \" k \" l\nc1i\"            a \" b \" c \" d \" e \"_\" g \" h \" i \" k \" l\nc1a\"            a \" b \" c \" d \" e _g \" h \" i \" k \" l\nc1I\"            a \" b \" c \" d \" e \" _ \" g \" h \" i \" k \" l\nc1in\"           a \" b \" c \" d \" e \" x \"_\" h \" i \" k \" l\nc1an\"           a \" b \" c \" d \" e \" x _h \" i \" k \" l\nc1In\"           a \" b \" c \" d \" e \" x \" _ \" h \" i \" k \" l\nc1il\"           a \" b \" c \" d \"_\" x \" g \" h \" i \" k \" l\nc1al\"           a \" b \" c \" d _x \" g \" h \" i \" k \" l\nc1Il\"           a \" b \" c \" d \" _ \" x \" g \" h \" i \" k \" l\nc1iN\"           a \" b \" c \" d \" e \" x \" g \"_\" i \" k \" l\nc1aN\"           a \" b \" c \" d \" e \" x \" g _i \" k \" l\nc1IN\"           a \" b \" c \" d \" e \" x \" g \" _ \" i \" k \" l\nc1iL\"           a \" b \" c \"_\" e \" x \" g \" h \" i \" k \" l\nc1aL\"           a \" b \" c _e \" x \" g \" h \" i \" k \" l\nc1IL\"           a \" b \" c \" _ \" e \" x \" g \" h \" i \" k \" l\nc2i\"            a \" b \" c \" d \" e \"_\" g \" h \" i \" k \" l\nc2a\"            a \" b \" c \" d \" e _g \" h \" i \" k \" l\nc2I\"            a \" b \" c \" d \" e \" _ \" g \" h \" i \" k \" l\nc2in\"           a \" b \" c \" d \" e \" x \" g \"_\" i \" k \" l\nc2an\"           a \" b \" c \" d \" e \" x \" g _i \" k \" l\nc2In\"           a \" b \" c \" d \" e \" x \" g \" _ \" i \" k \" l\nc2il\"           a \" b \" c \"_\" e \" x \" g \" h \" i \" k \" l\nc2al\"           a \" b \" c _e \" x \" g \" h \" i \" k \" l\nc2Il\"           a \" b \" c \" _ \" e \" x \" g \" h \" i \" k \" l\nc2iN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \"_\" l\nc2aN\"           a \" b \" c \" d \" e \" x \" g \" h \" i _l\nc2IN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" _ \" l\nc2iL\"           a \"_\" c \" d \" e \" x \" g \" h \" i \" k \" l\nc2aL\"           a _c \" d \" e \" x \" g \" h \" i \" k \" l\nc2IL\"           a \" _ \" c \" d \" e \" x \" g \" h \" i \" k \" l\ndi\"             a \" b \" c \" d \" e \"\" g \" h \" i \" k \" l\nda\"             a \" b \" c \" d \" e g \" h \" i \" k \" l\ndI\"             a \" b \" c \" d \" e \"  \" g \" h \" i \" k \" l\ndin\"            a \" b \" c \" d \" e \" x \"\" h \" i \" k \" l\ndan\"            a \" b \" c \" d \" e \" x h \" i \" k \" l\ndIn\"            a \" b \" c \" d \" e \" x \"  \" h \" i \" k \" l\ndil\"            a \" b \" c \" d \"\" x \" g \" h \" i \" k \" l\ndal\"            a \" b \" c \" d x \" g \" h \" i \" k \" l\ndIl\"            a \" b \" c \" d \"  \" x \" g \" h \" i \" k \" l\ndiN\"            a \" b \" c \" d \" e \" x \" g \"\" i \" k \" l\ndaN\"            a \" b \" c \" d \" e \" x \" g i \" k \" l\ndIN\"            a \" b \" c \" d \" e \" x \" g \"  \" i \" k \" l\ndiL\"            a \" b \" c \"\" e \" x \" g \" h \" i \" k \" l\ndaL\"            a \" b \" c e \" x \" g \" h \" i \" k \" l\ndIL\"            a \" b \" c \"  \" e \" x \" g \" h \" i \" k \" l\nd1i\"            a \" b \" c \" d \" e \"\" g \" h \" i \" k \" l\nd1a\"            a \" b \" c \" d \" e g \" h \" i \" k \" l\nd1I\"            a \" b \" c \" d \" e \"  \" g \" h \" i \" k \" l\nd1in\"           a \" b \" c \" d \" e \" x \"\" h \" i \" k \" l\nd1an\"           a \" b \" c \" d \" e \" x h \" i \" k \" l\nd1In\"           a \" b \" c \" d \" e \" x \"  \" h \" i \" k \" l\nd1il\"           a \" b \" c \" d \"\" x \" g \" h \" i \" k \" l\nd1al\"           a \" b \" c \" d x \" g \" h \" i \" k \" l\nd1Il\"           a \" b \" c \" d \"  \" x \" g \" h \" i \" k \" l\nd1iN\"           a \" b \" c \" d \" e \" x \" g \"\" i \" k \" l\nd1aN\"           a \" b \" c \" d \" e \" x \" g i \" k \" l\nd1IN\"           a \" b \" c \" d \" e \" x \" g \"  \" i \" k \" l\nd1iL\"           a \" b \" c \"\" e \" x \" g \" h \" i \" k \" l\nd1aL\"           a \" b \" c e \" x \" g \" h \" i \" k \" l\nd1IL\"           a \" b \" c \"  \" e \" x \" g \" h \" i \" k \" l\nd2i\"            a \" b \" c \" d \" e \"\" g \" h \" i \" k \" l\nd2a\"            a \" b \" c \" d \" e g \" h \" i \" k \" l\nd2I\"            a \" b \" c \" d \" e \"  \" g \" h \" i \" k \" l\nd2in\"           a \" b \" c \" d \" e \" x \" g \"\" i \" k \" l\nd2an\"           a \" b \" c \" d \" e \" x \" g i \" k \" l\nd2In\"           a \" b \" c \" d \" e \" x \" g \"  \" i \" k \" l\nd2il\"           a \" b \" c \"\" e \" x \" g \" h \" i \" k \" l\nd2al\"           a \" b \" c e \" x \" g \" h \" i \" k \" l\nd2Il\"           a \" b \" c \"  \" e \" x \" g \" h \" i \" k \" l\nd2iN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \"\" l\nd2aN\"           a \" b \" c \" d \" e \" x \" g \" h \" i l\nd2IN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \"  \" l\nd2iL\"           a \"\" c \" d \" e \" x \" g \" h \" i \" k \" l\nd2aL\"           a c \" d \" e \" x \" g \" h \" i \" k \" l\nd2IL\"           a \"  \" c \" d \" e \" x \" g \" h \" i \" k \" l\nyi\"             a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' x '\nya\"             a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" x \" '\nyI\"             a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'x'\nyin\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' g '\nyan\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" g \" '\nyIn\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'g'\nyil\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' e '\nyal\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" e \" '\nyIl\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'e'\nyiN\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' h '\nyaN\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" h \" '\nyIN\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'h'\nyiL\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' d '\nyaL\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" d \" '\nyIL\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'd'\ny1i\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' x '\ny1a\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" x \" '\ny1I\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'x'\ny1in\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' g '\ny1an\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" g \" '\ny1In\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'g'\ny1il\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' e '\ny1al\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" e \" '\ny1Il\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'e'\ny1iN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' h '\ny1aN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" h \" '\ny1IN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'h'\ny1iL\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' d '\ny1aL\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" d \" '\ny1IL\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'd'\ny2i\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' x '\ny2a\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" x \" '\ny2I\"            a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'x'\ny2in\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' h '\ny2an\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" h \" '\ny2In\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'h'\ny2il\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' d '\ny2al\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" d \" '\ny2Il\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'd'\ny2iN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' k '\ny2aN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" k \" '\ny2IN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'k'\ny2iL\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       ' b '\ny2aL\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       '\" b \" '\ny2IL\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" k \" l       'b'\nvi\"             a \" b \" c \" d \" e \"___\" g \" h \" i \" k \" l\nva\"             a \" b \" c \" d \" e ______g \" h \" i \" k \" l\nvI\"             a \" b \" c \" d \" e \" _ \" g \" h \" i \" k \" l\nvin\"            a \" b \" c \" d \" e \" x \"___\" h \" i \" k \" l\nvan\"            a \" b \" c \" d \" e \" x ______h \" i \" k \" l\nvIn\"            a \" b \" c \" d \" e \" x \" _ \" h \" i \" k \" l\nvil\"            a \" b \" c \" d \"___\" x \" g \" h \" i \" k \" l\nval\"            a \" b \" c \" d ______x \" g \" h \" i \" k \" l\nvIl\"            a \" b \" c \" d \" _ \" x \" g \" h \" i \" k \" l\nviN\"            a \" b \" c \" d \" e \" x \" g \"___\" i \" k \" l\nvaN\"            a \" b \" c \" d \" e \" x \" g ______i \" k \" l\nvIN\"            a \" b \" c \" d \" e \" x \" g \" _ \" i \" k \" l\nviL\"            a \" b \" c \"___\" e \" x \" g \" h \" i \" k \" l\nvaL\"            a \" b \" c ______e \" x \" g \" h \" i \" k \" l\nvIL\"            a \" b \" c \" _ \" e \" x \" g \" h \" i \" k \" l\nv1i\"            a \" b \" c \" d \" e \"___\" g \" h \" i \" k \" l\nv1a\"            a \" b \" c \" d \" e ______g \" h \" i \" k \" l\nv1I\"            a \" b \" c \" d \" e \" _ \" g \" h \" i \" k \" l\nv1in\"           a \" b \" c \" d \" e \" x \"___\" h \" i \" k \" l\nv1an\"           a \" b \" c \" d \" e \" x ______h \" i \" k \" l\nv1In\"           a \" b \" c \" d \" e \" x \" _ \" h \" i \" k \" l\nv1il\"           a \" b \" c \" d \"___\" x \" g \" h \" i \" k \" l\nv1al\"           a \" b \" c \" d ______x \" g \" h \" i \" k \" l\nv1Il\"           a \" b \" c \" d \" _ \" x \" g \" h \" i \" k \" l\nv1iN\"           a \" b \" c \" d \" e \" x \" g \"___\" i \" k \" l\nv1aN\"           a \" b \" c \" d \" e \" x \" g ______i \" k \" l\nv1IN\"           a \" b \" c \" d \" e \" x \" g \" _ \" i \" k \" l\nv1iL\"           a \" b \" c \"___\" e \" x \" g \" h \" i \" k \" l\nv1aL\"           a \" b \" c ______e \" x \" g \" h \" i \" k \" l\nv1IL\"           a \" b \" c \" _ \" e \" x \" g \" h \" i \" k \" l\nv2i\"            a \" b \" c \" d \" e \"___\" g \" h \" i \" k \" l\nv2a\"            a \" b \" c \" d \" e ______g \" h \" i \" k \" l\nv2I\"            a \" b \" c \" d \" e \" _ \" g \" h \" i \" k \" l\nv2in\"           a \" b \" c \" d \" e \" x \" g \"___\" i \" k \" l\nv2an\"           a \" b \" c \" d \" e \" x \" g ______i \" k \" l\nv2In\"           a \" b \" c \" d \" e \" x \" g \" _ \" i \" k \" l\nv2il\"           a \" b \" c \"___\" e \" x \" g \" h \" i \" k \" l\nv2al\"           a \" b \" c ______e \" x \" g \" h \" i \" k \" l\nv2Il\"           a \" b \" c \" _ \" e \" x \" g \" h \" i \" k \" l\nv2iN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \"___\" l\nv2aN\"           a \" b \" c \" d \" e \" x \" g \" h \" i ______l\nv2IN\"           a \" b \" c \" d \" e \" x \" g \" h \" i \" _ \" l\nv2iL\"           a \"___\" c \" d \" e \" x \" g \" h \" i \" k \" l\nv2aL\"           a ______c \" d \" e \" x \" g \" h \" i \" k \" l\nv2IL\"           a \" _ \" c \" d \" e \" x \" g \" h \" i \" k \" l\na ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l\nci`             a ` b ` c ` d ` e `_` g ` h ` i ` k ` l\nca`             a ` b ` c ` d ` e _g ` h ` i ` k ` l\ncI`             a ` b ` c ` d ` e ` _ ` g ` h ` i ` k ` l\ncin`            a ` b ` c ` d ` e ` x `_` h ` i ` k ` l\ncan`            a ` b ` c ` d ` e ` x _h ` i ` k ` l\ncIn`            a ` b ` c ` d ` e ` x ` _ ` h ` i ` k ` l\ncil`            a ` b ` c ` d `_` x ` g ` h ` i ` k ` l\ncal`            a ` b ` c ` d _x ` g ` h ` i ` k ` l\ncIl`            a ` b ` c ` d ` _ ` x ` g ` h ` i ` k ` l\nciN`            a ` b ` c ` d ` e ` x ` g `_` i ` k ` l\ncaN`            a ` b ` c ` d ` e ` x ` g _i ` k ` l\ncIN`            a ` b ` c ` d ` e ` x ` g ` _ ` i ` k ` l\nciL`            a ` b ` c `_` e ` x ` g ` h ` i ` k ` l\ncaL`            a ` b ` c _e ` x ` g ` h ` i ` k ` l\ncIL`            a ` b ` c ` _ ` e ` x ` g ` h ` i ` k ` l\nc1i`            a ` b ` c ` d ` e `_` g ` h ` i ` k ` l\nc1a`            a ` b ` c ` d ` e _g ` h ` i ` k ` l\nc1I`            a ` b ` c ` d ` e ` _ ` g ` h ` i ` k ` l\nc1in`           a ` b ` c ` d ` e ` x `_` h ` i ` k ` l\nc1an`           a ` b ` c ` d ` e ` x _h ` i ` k ` l\nc1In`           a ` b ` c ` d ` e ` x ` _ ` h ` i ` k ` l\nc1il`           a ` b ` c ` d `_` x ` g ` h ` i ` k ` l\nc1al`           a ` b ` c ` d _x ` g ` h ` i ` k ` l\nc1Il`           a ` b ` c ` d ` _ ` x ` g ` h ` i ` k ` l\nc1iN`           a ` b ` c ` d ` e ` x ` g `_` i ` k ` l\nc1aN`           a ` b ` c ` d ` e ` x ` g _i ` k ` l\nc1IN`           a ` b ` c ` d ` e ` x ` g ` _ ` i ` k ` l\nc1iL`           a ` b ` c `_` e ` x ` g ` h ` i ` k ` l\nc1aL`           a ` b ` c _e ` x ` g ` h ` i ` k ` l\nc1IL`           a ` b ` c ` _ ` e ` x ` g ` h ` i ` k ` l\nc2i`            a ` b ` c ` d ` e `_` g ` h ` i ` k ` l\nc2a`            a ` b ` c ` d ` e _g ` h ` i ` k ` l\nc2I`            a ` b ` c ` d ` e ` _ ` g ` h ` i ` k ` l\nc2in`           a ` b ` c ` d ` e ` x ` g `_` i ` k ` l\nc2an`           a ` b ` c ` d ` e ` x ` g _i ` k ` l\nc2In`           a ` b ` c ` d ` e ` x ` g ` _ ` i ` k ` l\nc2il`           a ` b ` c `_` e ` x ` g ` h ` i ` k ` l\nc2al`           a ` b ` c _e ` x ` g ` h ` i ` k ` l\nc2Il`           a ` b ` c ` _ ` e ` x ` g ` h ` i ` k ` l\nc2iN`           a ` b ` c ` d ` e ` x ` g ` h ` i `_` l\nc2aN`           a ` b ` c ` d ` e ` x ` g ` h ` i _l\nc2IN`           a ` b ` c ` d ` e ` x ` g ` h ` i ` _ ` l\nc2iL`           a `_` c ` d ` e ` x ` g ` h ` i ` k ` l\nc2aL`           a _c ` d ` e ` x ` g ` h ` i ` k ` l\nc2IL`           a ` _ ` c ` d ` e ` x ` g ` h ` i ` k ` l\ndi`             a ` b ` c ` d ` e `` g ` h ` i ` k ` l\nda`             a ` b ` c ` d ` e g ` h ` i ` k ` l\ndI`             a ` b ` c ` d ` e `  ` g ` h ` i ` k ` l\ndin`            a ` b ` c ` d ` e ` x `` h ` i ` k ` l\ndan`            a ` b ` c ` d ` e ` x h ` i ` k ` l\ndIn`            a ` b ` c ` d ` e ` x `  ` h ` i ` k ` l\ndil`            a ` b ` c ` d `` x ` g ` h ` i ` k ` l\ndal`            a ` b ` c ` d x ` g ` h ` i ` k ` l\ndIl`            a ` b ` c ` d `  ` x ` g ` h ` i ` k ` l\ndiN`            a ` b ` c ` d ` e ` x ` g `` i ` k ` l\ndaN`            a ` b ` c ` d ` e ` x ` g i ` k ` l\ndIN`            a ` b ` c ` d ` e ` x ` g `  ` i ` k ` l\ndiL`            a ` b ` c `` e ` x ` g ` h ` i ` k ` l\ndaL`            a ` b ` c e ` x ` g ` h ` i ` k ` l\ndIL`            a ` b ` c `  ` e ` x ` g ` h ` i ` k ` l\nd1i`            a ` b ` c ` d ` e `` g ` h ` i ` k ` l\nd1a`            a ` b ` c ` d ` e g ` h ` i ` k ` l\nd1I`            a ` b ` c ` d ` e `  ` g ` h ` i ` k ` l\nd1in`           a ` b ` c ` d ` e ` x `` h ` i ` k ` l\nd1an`           a ` b ` c ` d ` e ` x h ` i ` k ` l\nd1In`           a ` b ` c ` d ` e ` x `  ` h ` i ` k ` l\nd1il`           a ` b ` c ` d `` x ` g ` h ` i ` k ` l\nd1al`           a ` b ` c ` d x ` g ` h ` i ` k ` l\nd1Il`           a ` b ` c ` d `  ` x ` g ` h ` i ` k ` l\nd1iN`           a ` b ` c ` d ` e ` x ` g `` i ` k ` l\nd1aN`           a ` b ` c ` d ` e ` x ` g i ` k ` l\nd1IN`           a ` b ` c ` d ` e ` x ` g `  ` i ` k ` l\nd1iL`           a ` b ` c `` e ` x ` g ` h ` i ` k ` l\nd1aL`           a ` b ` c e ` x ` g ` h ` i ` k ` l\nd1IL`           a ` b ` c `  ` e ` x ` g ` h ` i ` k ` l\nd2i`            a ` b ` c ` d ` e `` g ` h ` i ` k ` l\nd2a`            a ` b ` c ` d ` e g ` h ` i ` k ` l\nd2I`            a ` b ` c ` d ` e `  ` g ` h ` i ` k ` l\nd2in`           a ` b ` c ` d ` e ` x ` g `` i ` k ` l\nd2an`           a ` b ` c ` d ` e ` x ` g i ` k ` l\nd2In`           a ` b ` c ` d ` e ` x ` g `  ` i ` k ` l\nd2il`           a ` b ` c `` e ` x ` g ` h ` i ` k ` l\nd2al`           a ` b ` c e ` x ` g ` h ` i ` k ` l\nd2Il`           a ` b ` c `  ` e ` x ` g ` h ` i ` k ` l\nd2iN`           a ` b ` c ` d ` e ` x ` g ` h ` i `` l\nd2aN`           a ` b ` c ` d ` e ` x ` g ` h ` i l\nd2IN`           a ` b ` c ` d ` e ` x ` g ` h ` i `  ` l\nd2iL`           a `` c ` d ` e ` x ` g ` h ` i ` k ` l\nd2aL`           a c ` d ` e ` x ` g ` h ` i ` k ` l\nd2IL`           a `  ` c ` d ` e ` x ` g ` h ` i ` k ` l\nyi`             a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' x '\nya`             a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` x ` '\nyI`             a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'x'\nyin`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' g '\nyan`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` g ` '\nyIn`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'g'\nyil`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' e '\nyal`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` e ` '\nyIl`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'e'\nyiN`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' h '\nyaN`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` h ` '\nyIN`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'h'\nyiL`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' d '\nyaL`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` d ` '\nyIL`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'd'\ny1i`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' x '\ny1a`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` x ` '\ny1I`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'x'\ny1in`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' g '\ny1an`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` g ` '\ny1In`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'g'\ny1il`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' e '\ny1al`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` e ` '\ny1Il`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'e'\ny1iN`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' h '\ny1aN`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` h ` '\ny1IN`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'h'\ny1iL`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' d '\ny1aL`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` d ` '\ny1IL`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'd'\ny2i`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' x '\ny2a`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` x ` '\ny2I`            a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'x'\ny2in`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' h '\ny2an`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` h ` '\ny2In`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'h'\ny2il`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' d '\ny2al`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` d ` '\ny2Il`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'd'\ny2iN`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' k '\ny2aN`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` k ` '\ny2IN`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'k'\ny2iL`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       ' b '\ny2aL`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       '` b ` '\ny2IL`           a ` b ` c ` d ` e ` x ` g ` h ` i ` k ` l       'b'\nvi`             a ` b ` c ` d ` e `___` g ` h ` i ` k ` l\nva`             a ` b ` c ` d ` e ______g ` h ` i ` k ` l\nvI`             a ` b ` c ` d ` e ` _ ` g ` h ` i ` k ` l\nvin`            a ` b ` c ` d ` e ` x `___` h ` i ` k ` l\nvan`            a ` b ` c ` d ` e ` x ______h ` i ` k ` l\nvIn`            a ` b ` c ` d ` e ` x ` _ ` h ` i ` k ` l\nvil`            a ` b ` c ` d `___` x ` g ` h ` i ` k ` l\nval`            a ` b ` c ` d ______x ` g ` h ` i ` k ` l\nvIl`            a ` b ` c ` d ` _ ` x ` g ` h ` i ` k ` l\nviN`            a ` b ` c ` d ` e ` x ` g `___` i ` k ` l\nvaN`            a ` b ` c ` d ` e ` x ` g ______i ` k ` l\nvIN`            a ` b ` c ` d ` e ` x ` g ` _ ` i ` k ` l\nviL`            a ` b ` c `___` e ` x ` g ` h ` i ` k ` l\nvaL`            a ` b ` c ______e ` x ` g ` h ` i ` k ` l\nvIL`            a ` b ` c ` _ ` e ` x ` g ` h ` i ` k ` l\nv1i`            a ` b ` c ` d ` e `___` g ` h ` i ` k ` l\nv1a`            a ` b ` c ` d ` e ______g ` h ` i ` k ` l\nv1I`            a ` b ` c ` d ` e ` _ ` g ` h ` i ` k ` l\nv1in`           a ` b ` c ` d ` e ` x `___` h ` i ` k ` l\nv1an`           a ` b ` c ` d ` e ` x ______h ` i ` k ` l\nv1In`           a ` b ` c ` d ` e ` x ` _ ` h ` i ` k ` l\nv1il`           a ` b ` c ` d `___` x ` g ` h ` i ` k ` l\nv1al`           a ` b ` c ` d ______x ` g ` h ` i ` k ` l\nv1Il`           a ` b ` c ` d ` _ ` x ` g ` h ` i ` k ` l\nv1iN`           a ` b ` c ` d ` e ` x ` g `___` i ` k ` l\nv1aN`           a ` b ` c ` d ` e ` x ` g ______i ` k ` l\nv1IN`           a ` b ` c ` d ` e ` x ` g ` _ ` i ` k ` l\nv1iL`           a ` b ` c `___` e ` x ` g ` h ` i ` k ` l\nv1aL`           a ` b ` c ______e ` x ` g ` h ` i ` k ` l\nv1IL`           a ` b ` c ` _ ` e ` x ` g ` h ` i ` k ` l\nv2i`            a ` b ` c ` d ` e `___` g ` h ` i ` k ` l\nv2a`            a ` b ` c ` d ` e ______g ` h ` i ` k ` l\nv2I`            a ` b ` c ` d ` e ` _ ` g ` h ` i ` k ` l\nv2in`           a ` b ` c ` d ` e ` x ` g `___` i ` k ` l\nv2an`           a ` b ` c ` d ` e ` x ` g ______i ` k ` l\nv2In`           a ` b ` c ` d ` e ` x ` g ` _ ` i ` k ` l\nv2il`           a ` b ` c `___` e ` x ` g ` h ` i ` k ` l\nv2al`           a ` b ` c ______e ` x ` g ` h ` i ` k ` l\nv2Il`           a ` b ` c ` _ ` e ` x ` g ` h ` i ` k ` l\nv2iN`           a ` b ` c ` d ` e ` x ` g ` h ` i `___` l\nv2aN`           a ` b ` c ` d ` e ` x ` g ` h ` i ______l\nv2IN`           a ` b ` c ` d ` e ` x ` g ` h ` i ` _ ` l\nv2iL`           a `___` c ` d ` e ` x ` g ` h ` i ` k ` l\nv2aL`           a ______c ` d ` e ` x ` g ` h ` i ` k ` l\nv2IL`           a ` _ ` c ` d ` e ` x ` g ` h ` i ` k ` l\n\na , b , c , d , e , x , g , h , i , k , l\nci,             a , b , c , d , e ,_, g , h , i , k , l\nca,             a , b , c , d , e _, g , h , i , k , l\ncI,             a , b , c , d , e , _ , g , h , i , k , l\ncA,             a , b , c , d , e _g , h , i , k , l\ncin,            a , b , c , d , e , x ,_, h , i , k , l\ncan,            a , b , c , d , e , x _, h , i , k , l\ncIn,            a , b , c , d , e , x , _ , h , i , k , l\ncAn,            a , b , c , d , e , x _h , i , k , l\ncil,            a , b , c , d ,_, x , g , h , i , k , l\ncal,            a , b , c , d _, x , g , h , i , k , l\ncIl,            a , b , c , d , _ , x , g , h , i , k , l\ncAl,            a , b , c , d _x , g , h , i , k , l\nciN,            a , b , c , d , e , x , g ,_, i , k , l\ncaN,            a , b , c , d , e , x , g _, i , k , l\ncIN,            a , b , c , d , e , x , g , _ , i , k , l\ncAN,            a , b , c , d , e , x , g _i , k , l\nciL,            a , b , c ,_, e , x , g , h , i , k , l\ncaL,            a , b , c _, e , x , g , h , i , k , l\ncIL,            a , b , c , _ , e , x , g , h , i , k , l\ncAL,            a , b , c _e , x , g , h , i , k , l\nc1i,            a , b , c , d , e ,_, g , h , i , k , l\nc1a,            a , b , c , d , e _, g , h , i , k , l\nc1I,            a , b , c , d , e , _ , g , h , i , k , l\nc1A,            a , b , c , d , e _g , h , i , k , l\nc1in,           a , b , c , d , e , x ,_, h , i , k , l\nc1an,           a , b , c , d , e , x _, h , i , k , l\nc1In,           a , b , c , d , e , x , _ , h , i , k , l\nc1An,           a , b , c , d , e , x _h , i , k , l\nc1il,           a , b , c , d ,_, x , g , h , i , k , l\nc1al,           a , b , c , d _, x , g , h , i , k , l\nc1Il,           a , b , c , d , _ , x , g , h , i , k , l\nc1Al,           a , b , c , d _x , g , h , i , k , l\nc1iN,           a , b , c , d , e , x , g ,_, i , k , l\nc1aN,           a , b , c , d , e , x , g _, i , k , l\nc1IN,           a , b , c , d , e , x , g , _ , i , k , l\nc1AN,           a , b , c , d , e , x , g _i , k , l\nc1iL,           a , b , c ,_, e , x , g , h , i , k , l\nc1aL,           a , b , c _, e , x , g , h , i , k , l\nc1IL,           a , b , c , _ , e , x , g , h , i , k , l\nc1AL,           a , b , c _e , x , g , h , i , k , l\nc2i,            a , b , c , d , e ,_, g , h , i , k , l\nc2a,            a , b , c , d , e _, g , h , i , k , l\nc2I,            a , b , c , d , e , _ , g , h , i , k , l\nc2A,            a , b , c , d , e _g , h , i , k , l\nc2in,           a , b , c , d , e , x , g ,_, i , k , l\nc2an,           a , b , c , d , e , x , g _, i , k , l\nc2In,           a , b , c , d , e , x , g , _ , i , k , l\nc2An,           a , b , c , d , e , x , g _i , k , l\nc2il,           a , b , c ,_, e , x , g , h , i , k , l\nc2al,           a , b , c _, e , x , g , h , i , k , l\nc2Il,           a , b , c , _ , e , x , g , h , i , k , l\nc2Al,           a , b , c _e , x , g , h , i , k , l\nc2iN,           a , b , c , d , e , x , g , h , i ,_, l\nc2aN,           a , b , c , d , e , x , g , h , i _, l\nc2IN,           a , b , c , d , e , x , g , h , i , _ , l\nc2AN,           a , b , c , d , e , x , g , h , i _l\nc2iL,           a ,_, c , d , e , x , g , h , i , k , l\nc2aL,           a _, c , d , e , x , g , h , i , k , l\nc2IL,           a , _ , c , d , e , x , g , h , i , k , l\nc2AL,           a _c , d , e , x , g , h , i , k , l\ndi,             a , b , c , d , e ,, g , h , i , k , l\nda,             a , b , c , d , e , g , h , i , k , l\ndI,             a , b , c , d , e ,  , g , h , i , k , l\ndA,             a , b , c , d , e g , h , i , k , l\ndin,            a , b , c , d , e , x ,, h , i , k , l\ndan,            a , b , c , d , e , x , h , i , k , l\ndIn,            a , b , c , d , e , x ,  , h , i , k , l\ndAn,            a , b , c , d , e , x h , i , k , l\ndil,            a , b , c , d ,, x , g , h , i , k , l\ndal,            a , b , c , d , x , g , h , i , k , l\ndIl,            a , b , c , d ,  , x , g , h , i , k , l\ndAl,            a , b , c , d x , g , h , i , k , l\ndiN,            a , b , c , d , e , x , g ,, i , k , l\ndaN,            a , b , c , d , e , x , g , i , k , l\ndIN,            a , b , c , d , e , x , g ,  , i , k , l\ndAN,            a , b , c , d , e , x , g i , k , l\ndiL,            a , b , c ,, e , x , g , h , i , k , l\ndaL,            a , b , c , e , x , g , h , i , k , l\ndIL,            a , b , c ,  , e , x , g , h , i , k , l\ndAL,            a , b , c e , x , g , h , i , k , l\nd1i,            a , b , c , d , e ,, g , h , i , k , l\nd1a,            a , b , c , d , e , g , h , i , k , l\nd1I,            a , b , c , d , e ,  , g , h , i , k , l\nd1A,            a , b , c , d , e g , h , i , k , l\nd1in,           a , b , c , d , e , x ,, h , i , k , l\nd1an,           a , b , c , d , e , x , h , i , k , l\nd1In,           a , b , c , d , e , x ,  , h , i , k , l\nd1An,           a , b , c , d , e , x h , i , k , l\nd1il,           a , b , c , d ,, x , g , h , i , k , l\nd1al,           a , b , c , d , x , g , h , i , k , l\nd1Il,           a , b , c , d ,  , x , g , h , i , k , l\nd1Al,           a , b , c , d x , g , h , i , k , l\nd1iN,           a , b , c , d , e , x , g ,, i , k , l\nd1aN,           a , b , c , d , e , x , g , i , k , l\nd1IN,           a , b , c , d , e , x , g ,  , i , k , l\nd1AN,           a , b , c , d , e , x , g i , k , l\nd1iL,           a , b , c ,, e , x , g , h , i , k , l\nd1aL,           a , b , c , e , x , g , h , i , k , l\nd1IL,           a , b , c ,  , e , x , g , h , i , k , l\nd1AL,           a , b , c e , x , g , h , i , k , l\nd2i,            a , b , c , d , e ,, g , h , i , k , l\nd2a,            a , b , c , d , e , g , h , i , k , l\nd2I,            a , b , c , d , e ,  , g , h , i , k , l\nd2A,            a , b , c , d , e g , h , i , k , l\nd2in,           a , b , c , d , e , x , g ,, i , k , l\nd2an,           a , b , c , d , e , x , g , i , k , l\nd2In,           a , b , c , d , e , x , g ,  , i , k , l\nd2An,           a , b , c , d , e , x , g i , k , l\nd2il,           a , b , c ,, e , x , g , h , i , k , l\nd2al,           a , b , c , e , x , g , h , i , k , l\nd2Il,           a , b , c ,  , e , x , g , h , i , k , l\nd2Al,           a , b , c e , x , g , h , i , k , l\nd2iN,           a , b , c , d , e , x , g , h , i ,, l\nd2aN,           a , b , c , d , e , x , g , h , i , l\nd2IN,           a , b , c , d , e , x , g , h , i ,  , l\nd2AN,           a , b , c , d , e , x , g , h , i l\nd2iL,           a ,, c , d , e , x , g , h , i , k , l\nd2aL,           a , c , d , e , x , g , h , i , k , l\nd2IL,           a ,  , c , d , e , x , g , h , i , k , l\nd2AL,           a c , d , e , x , g , h , i , k , l\nyi,             a , b , c , d , e , x , g , h , i , k , l       ' x '\nya,             a , b , c , d , e , x , g , h , i , k , l       ', x '\nyI,             a , b , c , d , e , x , g , h , i , k , l       'x'\nyA,             a , b , c , d , e , x , g , h , i , k , l       ', x , '\nyin,            a , b , c , d , e , x , g , h , i , k , l       ' g '\nyan,            a , b , c , d , e , x , g , h , i , k , l       ', g '\nyIn,            a , b , c , d , e , x , g , h , i , k , l       'g'\nyAn,            a , b , c , d , e , x , g , h , i , k , l       ', g , '\nyil,            a , b , c , d , e , x , g , h , i , k , l       ' e '\nyal,            a , b , c , d , e , x , g , h , i , k , l       ', e '\nyIl,            a , b , c , d , e , x , g , h , i , k , l       'e'\nyAl,            a , b , c , d , e , x , g , h , i , k , l       ', e , '\nyiN,            a , b , c , d , e , x , g , h , i , k , l       ' h '\nyaN,            a , b , c , d , e , x , g , h , i , k , l       ', h '\nyIN,            a , b , c , d , e , x , g , h , i , k , l       'h'\nyAN,            a , b , c , d , e , x , g , h , i , k , l       ', h , '\nyiL,            a , b , c , d , e , x , g , h , i , k , l       ' d '\nyaL,            a , b , c , d , e , x , g , h , i , k , l       ', d '\nyIL,            a , b , c , d , e , x , g , h , i , k , l       'd'\nyAL,            a , b , c , d , e , x , g , h , i , k , l       ', d , '\ny1i,            a , b , c , d , e , x , g , h , i , k , l       ' x '\ny1a,            a , b , c , d , e , x , g , h , i , k , l       ', x '\ny1I,            a , b , c , d , e , x , g , h , i , k , l       'x'\ny1A,            a , b , c , d , e , x , g , h , i , k , l       ', x , '\ny1in,           a , b , c , d , e , x , g , h , i , k , l       ' g '\ny1an,           a , b , c , d , e , x , g , h , i , k , l       ', g '\ny1In,           a , b , c , d , e , x , g , h , i , k , l       'g'\ny1An,           a , b , c , d , e , x , g , h , i , k , l       ', g , '\ny1il,           a , b , c , d , e , x , g , h , i , k , l       ' e '\ny1al,           a , b , c , d , e , x , g , h , i , k , l       ', e '\ny1Il,           a , b , c , d , e , x , g , h , i , k , l       'e'\ny1Al,           a , b , c , d , e , x , g , h , i , k , l       ', e , '\ny1iN,           a , b , c , d , e , x , g , h , i , k , l       ' h '\ny1aN,           a , b , c , d , e , x , g , h , i , k , l       ', h '\ny1IN,           a , b , c , d , e , x , g , h , i , k , l       'h'\ny1AN,           a , b , c , d , e , x , g , h , i , k , l       ', h , '\ny1iL,           a , b , c , d , e , x , g , h , i , k , l       ' d '\ny1aL,           a , b , c , d , e , x , g , h , i , k , l       ', d '\ny1IL,           a , b , c , d , e , x , g , h , i , k , l       'd'\ny1AL,           a , b , c , d , e , x , g , h , i , k , l       ', d , '\ny2i,            a , b , c , d , e , x , g , h , i , k , l       ' x '\ny2a,            a , b , c , d , e , x , g , h , i , k , l       ', x '\ny2I,            a , b , c , d , e , x , g , h , i , k , l       'x'\ny2A,            a , b , c , d , e , x , g , h , i , k , l       ', x , '\ny2in,           a , b , c , d , e , x , g , h , i , k , l       ' h '\ny2an,           a , b , c , d , e , x , g , h , i , k , l       ', h '\ny2In,           a , b , c , d , e , x , g , h , i , k , l       'h'\ny2An,           a , b , c , d , e , x , g , h , i , k , l       ', h , '\ny2il,           a , b , c , d , e , x , g , h , i , k , l       ' d '\ny2al,           a , b , c , d , e , x , g , h , i , k , l       ', d '\ny2Il,           a , b , c , d , e , x , g , h , i , k , l       'd'\ny2Al,           a , b , c , d , e , x , g , h , i , k , l       ', d , '\ny2iN,           a , b , c , d , e , x , g , h , i , k , l       ' k '\ny2aN,           a , b , c , d , e , x , g , h , i , k , l       ', k '\ny2IN,           a , b , c , d , e , x , g , h , i , k , l       'k'\ny2AN,           a , b , c , d , e , x , g , h , i , k , l       ', k , '\ny2iL,           a , b , c , d , e , x , g , h , i , k , l       ' b '\ny2aL,           a , b , c , d , e , x , g , h , i , k , l       ', b '\ny2IL,           a , b , c , d , e , x , g , h , i , k , l       'b'\ny2AL,           a , b , c , d , e , x , g , h , i , k , l       ', b , '\nvi,             a , b , c , d , e ,___, g , h , i , k , l\nva,             a , b , c , d , e ____, g , h , i , k , l\nvI,             a , b , c , d , e , _ , g , h , i , k , l\nvA,             a , b , c , d , e ______g , h , i , k , l\nvin,            a , b , c , d , e , x ,___, h , i , k , l\nvan,            a , b , c , d , e , x ____, h , i , k , l\nvIn,            a , b , c , d , e , x , _ , h , i , k , l\nvAn,            a , b , c , d , e , x ______h , i , k , l\nvil,            a , b , c , d ,___, x , g , h , i , k , l\nval,            a , b , c , d ____, x , g , h , i , k , l\nvIl,            a , b , c , d , _ , x , g , h , i , k , l\nvAl,            a , b , c , d ______x , g , h , i , k , l\nviN,            a , b , c , d , e , x , g ,___, i , k , l\nvaN,            a , b , c , d , e , x , g ____, i , k , l\nvIN,            a , b , c , d , e , x , g , _ , i , k , l\nvAN,            a , b , c , d , e , x , g ______i , k , l\nviL,            a , b , c ,___, e , x , g , h , i , k , l\nvaL,            a , b , c ____, e , x , g , h , i , k , l\nvIL,            a , b , c , _ , e , x , g , h , i , k , l\nvAL,            a , b , c ______e , x , g , h , i , k , l\nv1i,            a , b , c , d , e ,___, g , h , i , k , l\nv1a,            a , b , c , d , e ____, g , h , i , k , l\nv1I,            a , b , c , d , e , _ , g , h , i , k , l\nv1A,            a , b , c , d , e ______g , h , i , k , l\nv1in,           a , b , c , d , e , x ,___, h , i , k , l\nv1an,           a , b , c , d , e , x ____, h , i , k , l\nv1In,           a , b , c , d , e , x , _ , h , i , k , l\nv1An,           a , b , c , d , e , x ______h , i , k , l\nv1il,           a , b , c , d ,___, x , g , h , i , k , l\nv1al,           a , b , c , d ____, x , g , h , i , k , l\nv1Il,           a , b , c , d , _ , x , g , h , i , k , l\nv1Al,           a , b , c , d ______x , g , h , i , k , l\nv1iN,           a , b , c , d , e , x , g ,___, i , k , l\nv1aN,           a , b , c , d , e , x , g ____, i , k , l\nv1IN,           a , b , c , d , e , x , g , _ , i , k , l\nv1AN,           a , b , c , d , e , x , g ______i , k , l\nv1iL,           a , b , c ,___, e , x , g , h , i , k , l\nv1aL,           a , b , c ____, e , x , g , h , i , k , l\nv1IL,           a , b , c , _ , e , x , g , h , i , k , l\nv1AL,           a , b , c ______e , x , g , h , i , k , l\nv2i,            a , b , c , d , e ,___, g , h , i , k , l\nv2a,            a , b , c , d , e ____, g , h , i , k , l\nv2I,            a , b , c , d , e , _ , g , h , i , k , l\nv2A,            a , b , c , d , e ______g , h , i , k , l\nv2in,           a , b , c , d , e , x , g ,___, i , k , l\nv2an,           a , b , c , d , e , x , g ____, i , k , l\nv2In,           a , b , c , d , e , x , g , _ , i , k , l\nv2An,           a , b , c , d , e , x , g ______i , k , l\nv2il,           a , b , c ,___, e , x , g , h , i , k , l\nv2al,           a , b , c ____, e , x , g , h , i , k , l\nv2Il,           a , b , c , _ , e , x , g , h , i , k , l\nv2Al,           a , b , c ______e , x , g , h , i , k , l\nv2iN,           a , b , c , d , e , x , g , h , i ,___, l\nv2aN,           a , b , c , d , e , x , g , h , i ____, l\nv2IN,           a , b , c , d , e , x , g , h , i , _ , l\nv2AN,           a , b , c , d , e , x , g , h , i ______l\nv2iL,           a ,___, c , d , e , x , g , h , i , k , l\nv2aL,           a ____, c , d , e , x , g , h , i , k , l\nv2IL,           a , _ , c , d , e , x , g , h , i , k , l\nv2AL,           a ______c , d , e , x , g , h , i , k , l\na . b . c . d . e . x . g . h . i . k . l\nci.             a . b . c . d . e ._. g . h . i . k . l\nca.             a . b . c . d . e _. g . h . i . k . l\ncI.             a . b . c . d . e . _ . g . h . i . k . l\ncA.             a . b . c . d . e _g . h . i . k . l\ncin.            a . b . c . d . e . x ._. h . i . k . l\ncan.            a . b . c . d . e . x _. h . i . k . l\ncIn.            a . b . c . d . e . x . _ . h . i . k . l\ncAn.            a . b . c . d . e . x _h . i . k . l\ncil.            a . b . c . d ._. x . g . h . i . k . l\ncal.            a . b . c . d _. x . g . h . i . k . l\ncIl.            a . b . c . d . _ . x . g . h . i . k . l\ncAl.            a . b . c . d _x . g . h . i . k . l\nciN.            a . b . c . d . e . x . g ._. i . k . l\ncaN.            a . b . c . d . e . x . g _. i . k . l\ncIN.            a . b . c . d . e . x . g . _ . i . k . l\ncAN.            a . b . c . d . e . x . g _i . k . l\nciL.            a . b . c ._. e . x . g . h . i . k . l\ncaL.            a . b . c _. e . x . g . h . i . k . l\ncIL.            a . b . c . _ . e . x . g . h . i . k . l\ncAL.            a . b . c _e . x . g . h . i . k . l\nc1i.            a . b . c . d . e ._. g . h . i . k . l\nc1a.            a . b . c . d . e _. g . h . i . k . l\nc1I.            a . b . c . d . e . _ . g . h . i . k . l\nc1A.            a . b . c . d . e _g . h . i . k . l\nc1in.           a . b . c . d . e . x ._. h . i . k . l\nc1an.           a . b . c . d . e . x _. h . i . k . l\nc1In.           a . b . c . d . e . x . _ . h . i . k . l\nc1An.           a . b . c . d . e . x _h . i . k . l\nc1il.           a . b . c . d ._. x . g . h . i . k . l\nc1al.           a . b . c . d _. x . g . h . i . k . l\nc1Il.           a . b . c . d . _ . x . g . h . i . k . l\nc1Al.           a . b . c . d _x . g . h . i . k . l\nc1iN.           a . b . c . d . e . x . g ._. i . k . l\nc1aN.           a . b . c . d . e . x . g _. i . k . l\nc1IN.           a . b . c . d . e . x . g . _ . i . k . l\nc1AN.           a . b . c . d . e . x . g _i . k . l\nc1iL.           a . b . c ._. e . x . g . h . i . k . l\nc1aL.           a . b . c _. e . x . g . h . i . k . l\nc1IL.           a . b . c . _ . e . x . g . h . i . k . l\nc1AL.           a . b . c _e . x . g . h . i . k . l\nc2i.            a . b . c . d . e ._. g . h . i . k . l\nc2a.            a . b . c . d . e _. g . h . i . k . l\nc2I.            a . b . c . d . e . _ . g . h . i . k . l\nc2A.            a . b . c . d . e _g . h . i . k . l\nc2in.           a . b . c . d . e . x . g ._. i . k . l\nc2an.           a . b . c . d . e . x . g _. i . k . l\nc2In.           a . b . c . d . e . x . g . _ . i . k . l\nc2An.           a . b . c . d . e . x . g _i . k . l\nc2il.           a . b . c ._. e . x . g . h . i . k . l\nc2al.           a . b . c _. e . x . g . h . i . k . l\nc2Il.           a . b . c . _ . e . x . g . h . i . k . l\nc2Al.           a . b . c _e . x . g . h . i . k . l\nc2iN.           a . b . c . d . e . x . g . h . i ._. l\nc2aN.           a . b . c . d . e . x . g . h . i _. l\nc2IN.           a . b . c . d . e . x . g . h . i . _ . l\nc2AN.           a . b . c . d . e . x . g . h . i _l\nc2iL.           a ._. c . d . e . x . g . h . i . k . l\nc2aL.           a _. c . d . e . x . g . h . i . k . l\nc2IL.           a . _ . c . d . e . x . g . h . i . k . l\nc2AL.           a _c . d . e . x . g . h . i . k . l\ndi.             a . b . c . d . e .. g . h . i . k . l\nda.             a . b . c . d . e . g . h . i . k . l\ndI.             a . b . c . d . e .  . g . h . i . k . l\ndA.             a . b . c . d . e g . h . i . k . l\ndin.            a . b . c . d . e . x .. h . i . k . l\ndan.            a . b . c . d . e . x . h . i . k . l\ndIn.            a . b . c . d . e . x .  . h . i . k . l\ndAn.            a . b . c . d . e . x h . i . k . l\ndil.            a . b . c . d .. x . g . h . i . k . l\ndal.            a . b . c . d . x . g . h . i . k . l\ndIl.            a . b . c . d .  . x . g . h . i . k . l\ndAl.            a . b . c . d x . g . h . i . k . l\ndiN.            a . b . c . d . e . x . g .. i . k . l\ndaN.            a . b . c . d . e . x . g . i . k . l\ndIN.            a . b . c . d . e . x . g .  . i . k . l\ndAN.            a . b . c . d . e . x . g i . k . l\ndiL.            a . b . c .. e . x . g . h . i . k . l\ndaL.            a . b . c . e . x . g . h . i . k . l\ndIL.            a . b . c .  . e . x . g . h . i . k . l\ndAL.            a . b . c e . x . g . h . i . k . l\nd1i.            a . b . c . d . e .. g . h . i . k . l\nd1a.            a . b . c . d . e . g . h . i . k . l\nd1I.            a . b . c . d . e .  . g . h . i . k . l\nd1A.            a . b . c . d . e g . h . i . k . l\nd1in.           a . b . c . d . e . x .. h . i . k . l\nd1an.           a . b . c . d . e . x . h . i . k . l\nd1In.           a . b . c . d . e . x .  . h . i . k . l\nd1An.           a . b . c . d . e . x h . i . k . l\nd1il.           a . b . c . d .. x . g . h . i . k . l\nd1al.           a . b . c . d . x . g . h . i . k . l\nd1Il.           a . b . c . d .  . x . g . h . i . k . l\nd1Al.           a . b . c . d x . g . h . i . k . l\nd1iN.           a . b . c . d . e . x . g .. i . k . l\nd1aN.           a . b . c . d . e . x . g . i . k . l\nd1IN.           a . b . c . d . e . x . g .  . i . k . l\nd1AN.           a . b . c . d . e . x . g i . k . l\nd1iL.           a . b . c .. e . x . g . h . i . k . l\nd1aL.           a . b . c . e . x . g . h . i . k . l\nd1IL.           a . b . c .  . e . x . g . h . i . k . l\nd1AL.           a . b . c e . x . g . h . i . k . l\nd2i.            a . b . c . d . e .. g . h . i . k . l\nd2a.            a . b . c . d . e . g . h . i . k . l\nd2I.            a . b . c . d . e .  . g . h . i . k . l\nd2A.            a . b . c . d . e g . h . i . k . l\nd2in.           a . b . c . d . e . x . g .. i . k . l\nd2an.           a . b . c . d . e . x . g . i . k . l\nd2In.           a . b . c . d . e . x . g .  . i . k . l\nd2An.           a . b . c . d . e . x . g i . k . l\nd2il.           a . b . c .. e . x . g . h . i . k . l\nd2al.           a . b . c . e . x . g . h . i . k . l\nd2Il.           a . b . c .  . e . x . g . h . i . k . l\nd2Al.           a . b . c e . x . g . h . i . k . l\nd2iN.           a . b . c . d . e . x . g . h . i .. l\nd2aN.           a . b . c . d . e . x . g . h . i . l\nd2IN.           a . b . c . d . e . x . g . h . i .  . l\nd2AN.           a . b . c . d . e . x . g . h . i l\nd2iL.           a .. c . d . e . x . g . h . i . k . l\nd2aL.           a . c . d . e . x . g . h . i . k . l\nd2IL.           a .  . c . d . e . x . g . h . i . k . l\nd2AL.           a c . d . e . x . g . h . i . k . l\nyi.             a . b . c . d . e . x . g . h . i . k . l       ' x '\nya.             a . b . c . d . e . x . g . h . i . k . l       '. x '\nyI.             a . b . c . d . e . x . g . h . i . k . l       'x'\nyA.             a . b . c . d . e . x . g . h . i . k . l       '. x . '\nyin.            a . b . c . d . e . x . g . h . i . k . l       ' g '\nyan.            a . b . c . d . e . x . g . h . i . k . l       '. g '\nyIn.            a . b . c . d . e . x . g . h . i . k . l       'g'\nyAn.            a . b . c . d . e . x . g . h . i . k . l       '. g . '\nyil.            a . b . c . d . e . x . g . h . i . k . l       ' e '\nyal.            a . b . c . d . e . x . g . h . i . k . l       '. e '\nyIl.            a . b . c . d . e . x . g . h . i . k . l       'e'\nyAl.            a . b . c . d . e . x . g . h . i . k . l       '. e . '\nyiN.            a . b . c . d . e . x . g . h . i . k . l       ' h '\nyaN.            a . b . c . d . e . x . g . h . i . k . l       '. h '\nyIN.            a . b . c . d . e . x . g . h . i . k . l       'h'\nyAN.            a . b . c . d . e . x . g . h . i . k . l       '. h . '\nyiL.            a . b . c . d . e . x . g . h . i . k . l       ' d '\nyaL.            a . b . c . d . e . x . g . h . i . k . l       '. d '\nyIL.            a . b . c . d . e . x . g . h . i . k . l       'd'\nyAL.            a . b . c . d . e . x . g . h . i . k . l       '. d . '\ny1i.            a . b . c . d . e . x . g . h . i . k . l       ' x '\ny1a.            a . b . c . d . e . x . g . h . i . k . l       '. x '\ny1I.            a . b . c . d . e . x . g . h . i . k . l       'x'\ny1A.            a . b . c . d . e . x . g . h . i . k . l       '. x . '\ny1in.           a . b . c . d . e . x . g . h . i . k . l       ' g '\ny1an.           a . b . c . d . e . x . g . h . i . k . l       '. g '\ny1In.           a . b . c . d . e . x . g . h . i . k . l       'g'\ny1An.           a . b . c . d . e . x . g . h . i . k . l       '. g . '\ny1il.           a . b . c . d . e . x . g . h . i . k . l       ' e '\ny1al.           a . b . c . d . e . x . g . h . i . k . l       '. e '\ny1Il.           a . b . c . d . e . x . g . h . i . k . l       'e'\ny1Al.           a . b . c . d . e . x . g . h . i . k . l       '. e . '\ny1iN.           a . b . c . d . e . x . g . h . i . k . l       ' h '\ny1aN.           a . b . c . d . e . x . g . h . i . k . l       '. h '\ny1IN.           a . b . c . d . e . x . g . h . i . k . l       'h'\ny1AN.           a . b . c . d . e . x . g . h . i . k . l       '. h . '\ny1iL.           a . b . c . d . e . x . g . h . i . k . l       ' d '\ny1aL.           a . b . c . d . e . x . g . h . i . k . l       '. d '\ny1IL.           a . b . c . d . e . x . g . h . i . k . l       'd'\ny1AL.           a . b . c . d . e . x . g . h . i . k . l       '. d . '\ny2i.            a . b . c . d . e . x . g . h . i . k . l       ' x '\ny2a.            a . b . c . d . e . x . g . h . i . k . l       '. x '\ny2I.            a . b . c . d . e . x . g . h . i . k . l       'x'\ny2A.            a . b . c . d . e . x . g . h . i . k . l       '. x . '\ny2in.           a . b . c . d . e . x . g . h . i . k . l       ' h '\ny2an.           a . b . c . d . e . x . g . h . i . k . l       '. h '\ny2In.           a . b . c . d . e . x . g . h . i . k . l       'h'\ny2An.           a . b . c . d . e . x . g . h . i . k . l       '. h . '\ny2il.           a . b . c . d . e . x . g . h . i . k . l       ' d '\ny2al.           a . b . c . d . e . x . g . h . i . k . l       '. d '\ny2Il.           a . b . c . d . e . x . g . h . i . k . l       'd'\ny2Al.           a . b . c . d . e . x . g . h . i . k . l       '. d . '\ny2iN.           a . b . c . d . e . x . g . h . i . k . l       ' k '\ny2aN.           a . b . c . d . e . x . g . h . i . k . l       '. k '\ny2IN.           a . b . c . d . e . x . g . h . i . k . l       'k'\ny2AN.           a . b . c . d . e . x . g . h . i . k . l       '. k . '\ny2iL.           a . b . c . d . e . x . g . h . i . k . l       ' b '\ny2aL.           a . b . c . d . e . x . g . h . i . k . l       '. b '\ny2IL.           a . b . c . d . e . x . g . h . i . k . l       'b'\ny2AL.           a . b . c . d . e . x . g . h . i . k . l       '. b . '\nvi.             a . b . c . d . e .___. g . h . i . k . l\nva.             a . b . c . d . e ____. g . h . i . k . l\nvI.             a . b . c . d . e . _ . g . h . i . k . l\nvA.             a . b . c . d . e ______g . h . i . k . l\nvin.            a . b . c . d . e . x .___. h . i . k . l\nvan.            a . b . c . d . e . x ____. h . i . k . l\nvIn.            a . b . c . d . e . x . _ . h . i . k . l\nvAn.            a . b . c . d . e . x ______h . i . k . l\nvil.            a . b . c . d .___. x . g . h . i . k . l\nval.            a . b . c . d ____. x . g . h . i . k . l\nvIl.            a . b . c . d . _ . x . g . h . i . k . l\nvAl.            a . b . c . d ______x . g . h . i . k . l\nviN.            a . b . c . d . e . x . g .___. i . k . l\nvaN.            a . b . c . d . e . x . g ____. i . k . l\nvIN.            a . b . c . d . e . x . g . _ . i . k . l\nvAN.            a . b . c . d . e . x . g ______i . k . l\nviL.            a . b . c .___. e . x . g . h . i . k . l\nvaL.            a . b . c ____. e . x . g . h . i . k . l\nvIL.            a . b . c . _ . e . x . g . h . i . k . l\nvAL.            a . b . c ______e . x . g . h . i . k . l\nv1i.            a . b . c . d . e .___. g . h . i . k . l\nv1a.            a . b . c . d . e ____. g . h . i . k . l\nv1I.            a . b . c . d . e . _ . g . h . i . k . l\nv1A.            a . b . c . d . e ______g . h . i . k . l\nv1in.           a . b . c . d . e . x .___. h . i . k . l\nv1an.           a . b . c . d . e . x ____. h . i . k . l\nv1In.           a . b . c . d . e . x . _ . h . i . k . l\nv1An.           a . b . c . d . e . x ______h . i . k . l\nv1il.           a . b . c . d .___. x . g . h . i . k . l\nv1al.           a . b . c . d ____. x . g . h . i . k . l\nv1Il.           a . b . c . d . _ . x . g . h . i . k . l\nv1Al.           a . b . c . d ______x . g . h . i . k . l\nv1iN.           a . b . c . d . e . x . g .___. i . k . l\nv1aN.           a . b . c . d . e . x . g ____. i . k . l\nv1IN.           a . b . c . d . e . x . g . _ . i . k . l\nv1AN.           a . b . c . d . e . x . g ______i . k . l\nv1iL.           a . b . c .___. e . x . g . h . i . k . l\nv1aL.           a . b . c ____. e . x . g . h . i . k . l\nv1IL.           a . b . c . _ . e . x . g . h . i . k . l\nv1AL.           a . b . c ______e . x . g . h . i . k . l\nv2i.            a . b . c . d . e .___. g . h . i . k . l\nv2a.            a . b . c . d . e ____. g . h . i . k . l\nv2I.            a . b . c . d . e . _ . g . h . i . k . l\nv2A.            a . b . c . d . e ______g . h . i . k . l\nv2in.           a . b . c . d . e . x . g .___. i . k . l\nv2an.           a . b . c . d . e . x . g ____. i . k . l\nv2In.           a . b . c . d . e . x . g . _ . i . k . l\nv2An.           a . b . c . d . e . x . g ______i . k . l\nv2il.           a . b . c .___. e . x . g . h . i . k . l\nv2al.           a . b . c ____. e . x . g . h . i . k . l\nv2Il.           a . b . c . _ . e . x . g . h . i . k . l\nv2Al.           a . b . c ______e . x . g . h . i . k . l\nv2iN.           a . b . c . d . e . x . g . h . i .___. l\nv2aN.           a . b . c . d . e . x . g . h . i ____. l\nv2IN.           a . b . c . d . e . x . g . h . i . _ . l\nv2AN.           a . b . c . d . e . x . g . h . i ______l\nv2iL.           a .___. c . d . e . x . g . h . i . k . l\nv2aL.           a ____. c . d . e . x . g . h . i . k . l\nv2IL.           a . _ . c . d . e . x . g . h . i . k . l\nv2AL.           a ______c . d . e . x . g . h . i . k . l\na ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l\nci;             a ; b ; c ; d ; e ;_; g ; h ; i ; k ; l\nca;             a ; b ; c ; d ; e _; g ; h ; i ; k ; l\ncI;             a ; b ; c ; d ; e ; _ ; g ; h ; i ; k ; l\ncA;             a ; b ; c ; d ; e _g ; h ; i ; k ; l\ncin;            a ; b ; c ; d ; e ; x ;_; h ; i ; k ; l\ncan;            a ; b ; c ; d ; e ; x _; h ; i ; k ; l\ncIn;            a ; b ; c ; d ; e ; x ; _ ; h ; i ; k ; l\ncAn;            a ; b ; c ; d ; e ; x _h ; i ; k ; l\ncil;            a ; b ; c ; d ;_; x ; g ; h ; i ; k ; l\ncal;            a ; b ; c ; d _; x ; g ; h ; i ; k ; l\ncIl;            a ; b ; c ; d ; _ ; x ; g ; h ; i ; k ; l\ncAl;            a ; b ; c ; d _x ; g ; h ; i ; k ; l\nciN;            a ; b ; c ; d ; e ; x ; g ;_; i ; k ; l\ncaN;            a ; b ; c ; d ; e ; x ; g _; i ; k ; l\ncIN;            a ; b ; c ; d ; e ; x ; g ; _ ; i ; k ; l\ncAN;            a ; b ; c ; d ; e ; x ; g _i ; k ; l\nciL;            a ; b ; c ;_; e ; x ; g ; h ; i ; k ; l\ncaL;            a ; b ; c _; e ; x ; g ; h ; i ; k ; l\ncIL;            a ; b ; c ; _ ; e ; x ; g ; h ; i ; k ; l\ncAL;            a ; b ; c _e ; x ; g ; h ; i ; k ; l\nc1i;            a ; b ; c ; d ; e ;_; g ; h ; i ; k ; l\nc1a;            a ; b ; c ; d ; e _; g ; h ; i ; k ; l\nc1I;            a ; b ; c ; d ; e ; _ ; g ; h ; i ; k ; l\nc1A;            a ; b ; c ; d ; e _g ; h ; i ; k ; l\nc1in;           a ; b ; c ; d ; e ; x ;_; h ; i ; k ; l\nc1an;           a ; b ; c ; d ; e ; x _; h ; i ; k ; l\nc1In;           a ; b ; c ; d ; e ; x ; _ ; h ; i ; k ; l\nc1An;           a ; b ; c ; d ; e ; x _h ; i ; k ; l\nc1il;           a ; b ; c ; d ;_; x ; g ; h ; i ; k ; l\nc1al;           a ; b ; c ; d _; x ; g ; h ; i ; k ; l\nc1Il;           a ; b ; c ; d ; _ ; x ; g ; h ; i ; k ; l\nc1Al;           a ; b ; c ; d _x ; g ; h ; i ; k ; l\nc1iN;           a ; b ; c ; d ; e ; x ; g ;_; i ; k ; l\nc1aN;           a ; b ; c ; d ; e ; x ; g _; i ; k ; l\nc1IN;           a ; b ; c ; d ; e ; x ; g ; _ ; i ; k ; l\nc1AN;           a ; b ; c ; d ; e ; x ; g _i ; k ; l\nc1iL;           a ; b ; c ;_; e ; x ; g ; h ; i ; k ; l\nc1aL;           a ; b ; c _; e ; x ; g ; h ; i ; k ; l\nc1IL;           a ; b ; c ; _ ; e ; x ; g ; h ; i ; k ; l\nc1AL;           a ; b ; c _e ; x ; g ; h ; i ; k ; l\nc2i;            a ; b ; c ; d ; e ;_; g ; h ; i ; k ; l\nc2a;            a ; b ; c ; d ; e _; g ; h ; i ; k ; l\nc2I;            a ; b ; c ; d ; e ; _ ; g ; h ; i ; k ; l\nc2A;            a ; b ; c ; d ; e _g ; h ; i ; k ; l\nc2in;           a ; b ; c ; d ; e ; x ; g ;_; i ; k ; l\nc2an;           a ; b ; c ; d ; e ; x ; g _; i ; k ; l\nc2In;           a ; b ; c ; d ; e ; x ; g ; _ ; i ; k ; l\nc2An;           a ; b ; c ; d ; e ; x ; g _i ; k ; l\nc2il;           a ; b ; c ;_; e ; x ; g ; h ; i ; k ; l\nc2al;           a ; b ; c _; e ; x ; g ; h ; i ; k ; l\nc2Il;           a ; b ; c ; _ ; e ; x ; g ; h ; i ; k ; l\nc2Al;           a ; b ; c _e ; x ; g ; h ; i ; k ; l\nc2iN;           a ; b ; c ; d ; e ; x ; g ; h ; i ;_; l\nc2aN;           a ; b ; c ; d ; e ; x ; g ; h ; i _; l\nc2IN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; _ ; l\nc2AN;           a ; b ; c ; d ; e ; x ; g ; h ; i _l\nc2iL;           a ;_; c ; d ; e ; x ; g ; h ; i ; k ; l\nc2aL;           a _; c ; d ; e ; x ; g ; h ; i ; k ; l\nc2IL;           a ; _ ; c ; d ; e ; x ; g ; h ; i ; k ; l\nc2AL;           a _c ; d ; e ; x ; g ; h ; i ; k ; l\ndi;             a ; b ; c ; d ; e ;; g ; h ; i ; k ; l\nda;             a ; b ; c ; d ; e ; g ; h ; i ; k ; l\ndI;             a ; b ; c ; d ; e ;  ; g ; h ; i ; k ; l\ndA;             a ; b ; c ; d ; e g ; h ; i ; k ; l\ndin;            a ; b ; c ; d ; e ; x ;; h ; i ; k ; l\ndan;            a ; b ; c ; d ; e ; x ; h ; i ; k ; l\ndIn;            a ; b ; c ; d ; e ; x ;  ; h ; i ; k ; l\ndAn;            a ; b ; c ; d ; e ; x h ; i ; k ; l\ndil;            a ; b ; c ; d ;; x ; g ; h ; i ; k ; l\ndal;            a ; b ; c ; d ; x ; g ; h ; i ; k ; l\ndIl;            a ; b ; c ; d ;  ; x ; g ; h ; i ; k ; l\ndAl;            a ; b ; c ; d x ; g ; h ; i ; k ; l\ndiN;            a ; b ; c ; d ; e ; x ; g ;; i ; k ; l\ndaN;            a ; b ; c ; d ; e ; x ; g ; i ; k ; l\ndIN;            a ; b ; c ; d ; e ; x ; g ;  ; i ; k ; l\ndAN;            a ; b ; c ; d ; e ; x ; g i ; k ; l\ndiL;            a ; b ; c ;; e ; x ; g ; h ; i ; k ; l\ndaL;            a ; b ; c ; e ; x ; g ; h ; i ; k ; l\ndIL;            a ; b ; c ;  ; e ; x ; g ; h ; i ; k ; l\ndAL;            a ; b ; c e ; x ; g ; h ; i ; k ; l\nd1i;            a ; b ; c ; d ; e ;; g ; h ; i ; k ; l\nd1a;            a ; b ; c ; d ; e ; g ; h ; i ; k ; l\nd1I;            a ; b ; c ; d ; e ;  ; g ; h ; i ; k ; l\nd1A;            a ; b ; c ; d ; e g ; h ; i ; k ; l\nd1in;           a ; b ; c ; d ; e ; x ;; h ; i ; k ; l\nd1an;           a ; b ; c ; d ; e ; x ; h ; i ; k ; l\nd1In;           a ; b ; c ; d ; e ; x ;  ; h ; i ; k ; l\nd1An;           a ; b ; c ; d ; e ; x h ; i ; k ; l\nd1il;           a ; b ; c ; d ;; x ; g ; h ; i ; k ; l\nd1al;           a ; b ; c ; d ; x ; g ; h ; i ; k ; l\nd1Il;           a ; b ; c ; d ;  ; x ; g ; h ; i ; k ; l\nd1Al;           a ; b ; c ; d x ; g ; h ; i ; k ; l\nd1iN;           a ; b ; c ; d ; e ; x ; g ;; i ; k ; l\nd1aN;           a ; b ; c ; d ; e ; x ; g ; i ; k ; l\nd1IN;           a ; b ; c ; d ; e ; x ; g ;  ; i ; k ; l\nd1AN;           a ; b ; c ; d ; e ; x ; g i ; k ; l\nd1iL;           a ; b ; c ;; e ; x ; g ; h ; i ; k ; l\nd1aL;           a ; b ; c ; e ; x ; g ; h ; i ; k ; l\nd1IL;           a ; b ; c ;  ; e ; x ; g ; h ; i ; k ; l\nd1AL;           a ; b ; c e ; x ; g ; h ; i ; k ; l\nd2i;            a ; b ; c ; d ; e ;; g ; h ; i ; k ; l\nd2a;            a ; b ; c ; d ; e ; g ; h ; i ; k ; l\nd2I;            a ; b ; c ; d ; e ;  ; g ; h ; i ; k ; l\nd2A;            a ; b ; c ; d ; e g ; h ; i ; k ; l\nd2in;           a ; b ; c ; d ; e ; x ; g ;; i ; k ; l\nd2an;           a ; b ; c ; d ; e ; x ; g ; i ; k ; l\nd2In;           a ; b ; c ; d ; e ; x ; g ;  ; i ; k ; l\nd2An;           a ; b ; c ; d ; e ; x ; g i ; k ; l\nd2il;           a ; b ; c ;; e ; x ; g ; h ; i ; k ; l\nd2al;           a ; b ; c ; e ; x ; g ; h ; i ; k ; l\nd2Il;           a ; b ; c ;  ; e ; x ; g ; h ; i ; k ; l\nd2Al;           a ; b ; c e ; x ; g ; h ; i ; k ; l\nd2iN;           a ; b ; c ; d ; e ; x ; g ; h ; i ;; l\nd2aN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; l\nd2IN;           a ; b ; c ; d ; e ; x ; g ; h ; i ;  ; l\nd2AN;           a ; b ; c ; d ; e ; x ; g ; h ; i l\nd2iL;           a ;; c ; d ; e ; x ; g ; h ; i ; k ; l\nd2aL;           a ; c ; d ; e ; x ; g ; h ; i ; k ; l\nd2IL;           a ;  ; c ; d ; e ; x ; g ; h ; i ; k ; l\nd2AL;           a c ; d ; e ; x ; g ; h ; i ; k ; l\nyi;             a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' x '\nya;             a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; x '\nyI;             a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'x'\nyA;             a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; x ; '\nyin;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' g '\nyan;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; g '\nyIn;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'g'\nyAn;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; g ; '\nyil;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' e '\nyal;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; e '\nyIl;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'e'\nyAl;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; e ; '\nyiN;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' h '\nyaN;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; h '\nyIN;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'h'\nyAN;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; h ; '\nyiL;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' d '\nyaL;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; d '\nyIL;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'd'\nyAL;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; d ; '\ny1i;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' x '\ny1a;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; x '\ny1I;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'x'\ny1A;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; x ; '\ny1in;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' g '\ny1an;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; g '\ny1In;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'g'\ny1An;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; g ; '\ny1il;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' e '\ny1al;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; e '\ny1Il;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'e'\ny1Al;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; e ; '\ny1iN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' h '\ny1aN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; h '\ny1IN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'h'\ny1AN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; h ; '\ny1iL;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' d '\ny1aL;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; d '\ny1IL;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'd'\ny1AL;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; d ; '\ny2i;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' x '\ny2a;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; x '\ny2I;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'x'\ny2A;            a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; x ; '\ny2in;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' h '\ny2an;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; h '\ny2In;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'h'\ny2An;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; h ; '\ny2il;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' d '\ny2al;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; d '\ny2Il;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'd'\ny2Al;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; d ; '\ny2iN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' k '\ny2aN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; k '\ny2IN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'k'\ny2AN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; k ; '\ny2iL;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       ' b '\ny2aL;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; b '\ny2IL;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       'b'\ny2AL;           a ; b ; c ; d ; e ; x ; g ; h ; i ; k ; l       '; b ; '\nvi;             a ; b ; c ; d ; e ;___; g ; h ; i ; k ; l\nva;             a ; b ; c ; d ; e ____; g ; h ; i ; k ; l\nvI;             a ; b ; c ; d ; e ; _ ; g ; h ; i ; k ; l\nvA;             a ; b ; c ; d ; e ______g ; h ; i ; k ; l\nvin;            a ; b ; c ; d ; e ; x ;___; h ; i ; k ; l\nvan;            a ; b ; c ; d ; e ; x ____; h ; i ; k ; l\nvIn;            a ; b ; c ; d ; e ; x ; _ ; h ; i ; k ; l\nvAn;            a ; b ; c ; d ; e ; x ______h ; i ; k ; l\nvil;            a ; b ; c ; d ;___; x ; g ; h ; i ; k ; l\nval;            a ; b ; c ; d ____; x ; g ; h ; i ; k ; l\nvIl;            a ; b ; c ; d ; _ ; x ; g ; h ; i ; k ; l\nvAl;            a ; b ; c ; d ______x ; g ; h ; i ; k ; l\nviN;            a ; b ; c ; d ; e ; x ; g ;___; i ; k ; l\nvaN;            a ; b ; c ; d ; e ; x ; g ____; i ; k ; l\nvIN;            a ; b ; c ; d ; e ; x ; g ; _ ; i ; k ; l\nvAN;            a ; b ; c ; d ; e ; x ; g ______i ; k ; l\nviL;            a ; b ; c ;___; e ; x ; g ; h ; i ; k ; l\nvaL;            a ; b ; c ____; e ; x ; g ; h ; i ; k ; l\nvIL;            a ; b ; c ; _ ; e ; x ; g ; h ; i ; k ; l\nvAL;            a ; b ; c ______e ; x ; g ; h ; i ; k ; l\nv1i;            a ; b ; c ; d ; e ;___; g ; h ; i ; k ; l\nv1a;            a ; b ; c ; d ; e ____; g ; h ; i ; k ; l\nv1I;            a ; b ; c ; d ; e ; _ ; g ; h ; i ; k ; l\nv1A;            a ; b ; c ; d ; e ______g ; h ; i ; k ; l\nv1in;           a ; b ; c ; d ; e ; x ;___; h ; i ; k ; l\nv1an;           a ; b ; c ; d ; e ; x ____; h ; i ; k ; l\nv1In;           a ; b ; c ; d ; e ; x ; _ ; h ; i ; k ; l\nv1An;           a ; b ; c ; d ; e ; x ______h ; i ; k ; l\nv1il;           a ; b ; c ; d ;___; x ; g ; h ; i ; k ; l\nv1al;           a ; b ; c ; d ____; x ; g ; h ; i ; k ; l\nv1Il;           a ; b ; c ; d ; _ ; x ; g ; h ; i ; k ; l\nv1Al;           a ; b ; c ; d ______x ; g ; h ; i ; k ; l\nv1iN;           a ; b ; c ; d ; e ; x ; g ;___; i ; k ; l\nv1aN;           a ; b ; c ; d ; e ; x ; g ____; i ; k ; l\nv1IN;           a ; b ; c ; d ; e ; x ; g ; _ ; i ; k ; l\nv1AN;           a ; b ; c ; d ; e ; x ; g ______i ; k ; l\nv1iL;           a ; b ; c ;___; e ; x ; g ; h ; i ; k ; l\nv1aL;           a ; b ; c ____; e ; x ; g ; h ; i ; k ; l\nv1IL;           a ; b ; c ; _ ; e ; x ; g ; h ; i ; k ; l\nv1AL;           a ; b ; c ______e ; x ; g ; h ; i ; k ; l\nv2i;            a ; b ; c ; d ; e ;___; g ; h ; i ; k ; l\nv2a;            a ; b ; c ; d ; e ____; g ; h ; i ; k ; l\nv2I;            a ; b ; c ; d ; e ; _ ; g ; h ; i ; k ; l\nv2A;            a ; b ; c ; d ; e ______g ; h ; i ; k ; l\nv2in;           a ; b ; c ; d ; e ; x ; g ;___; i ; k ; l\nv2an;           a ; b ; c ; d ; e ; x ; g ____; i ; k ; l\nv2In;           a ; b ; c ; d ; e ; x ; g ; _ ; i ; k ; l\nv2An;           a ; b ; c ; d ; e ; x ; g ______i ; k ; l\nv2il;           a ; b ; c ;___; e ; x ; g ; h ; i ; k ; l\nv2al;           a ; b ; c ____; e ; x ; g ; h ; i ; k ; l\nv2Il;           a ; b ; c ; _ ; e ; x ; g ; h ; i ; k ; l\nv2Al;           a ; b ; c ______e ; x ; g ; h ; i ; k ; l\nv2iN;           a ; b ; c ; d ; e ; x ; g ; h ; i ;___; l\nv2aN;           a ; b ; c ; d ; e ; x ; g ; h ; i ____; l\nv2IN;           a ; b ; c ; d ; e ; x ; g ; h ; i ; _ ; l\nv2AN;           a ; b ; c ; d ; e ; x ; g ; h ; i ______l\nv2iL;           a ;___; c ; d ; e ; x ; g ; h ; i ; k ; l\nv2aL;           a ____; c ; d ; e ; x ; g ; h ; i ; k ; l\nv2IL;           a ; _ ; c ; d ; e ; x ; g ; h ; i ; k ; l\nv2AL;           a ______c ; d ; e ; x ; g ; h ; i ; k ; l\na : b : c : d : e : x : g : h : i : k : l\nci:             a : b : c : d : e :_: g : h : i : k : l\nca:             a : b : c : d : e _: g : h : i : k : l\ncI:             a : b : c : d : e : _ : g : h : i : k : l\ncA:             a : b : c : d : e _g : h : i : k : l\ncin:            a : b : c : d : e : x :_: h : i : k : l\ncan:            a : b : c : d : e : x _: h : i : k : l\ncIn:            a : b : c : d : e : x : _ : h : i : k : l\ncAn:            a : b : c : d : e : x _h : i : k : l\ncil:            a : b : c : d :_: x : g : h : i : k : l\ncal:            a : b : c : d _: x : g : h : i : k : l\ncIl:            a : b : c : d : _ : x : g : h : i : k : l\ncAl:            a : b : c : d _x : g : h : i : k : l\nciN:            a : b : c : d : e : x : g :_: i : k : l\ncaN:            a : b : c : d : e : x : g _: i : k : l\ncIN:            a : b : c : d : e : x : g : _ : i : k : l\ncAN:            a : b : c : d : e : x : g _i : k : l\nciL:            a : b : c :_: e : x : g : h : i : k : l\ncaL:            a : b : c _: e : x : g : h : i : k : l\ncIL:            a : b : c : _ : e : x : g : h : i : k : l\ncAL:            a : b : c _e : x : g : h : i : k : l\nc1i:            a : b : c : d : e :_: g : h : i : k : l\nc1a:            a : b : c : d : e _: g : h : i : k : l\nc1I:            a : b : c : d : e : _ : g : h : i : k : l\nc1A:            a : b : c : d : e _g : h : i : k : l\nc1in:           a : b : c : d : e : x :_: h : i : k : l\nc1an:           a : b : c : d : e : x _: h : i : k : l\nc1In:           a : b : c : d : e : x : _ : h : i : k : l\nc1An:           a : b : c : d : e : x _h : i : k : l\nc1il:           a : b : c : d :_: x : g : h : i : k : l\nc1al:           a : b : c : d _: x : g : h : i : k : l\nc1Il:           a : b : c : d : _ : x : g : h : i : k : l\nc1Al:           a : b : c : d _x : g : h : i : k : l\nc1iN:           a : b : c : d : e : x : g :_: i : k : l\nc1aN:           a : b : c : d : e : x : g _: i : k : l\nc1IN:           a : b : c : d : e : x : g : _ : i : k : l\nc1AN:           a : b : c : d : e : x : g _i : k : l\nc1iL:           a : b : c :_: e : x : g : h : i : k : l\nc1aL:           a : b : c _: e : x : g : h : i : k : l\nc1IL:           a : b : c : _ : e : x : g : h : i : k : l\nc1AL:           a : b : c _e : x : g : h : i : k : l\nc2i:            a : b : c : d : e :_: g : h : i : k : l\nc2a:            a : b : c : d : e _: g : h : i : k : l\nc2I:            a : b : c : d : e : _ : g : h : i : k : l\nc2A:            a : b : c : d : e _g : h : i : k : l\nc2in:           a : b : c : d : e : x : g :_: i : k : l\nc2an:           a : b : c : d : e : x : g _: i : k : l\nc2In:           a : b : c : d : e : x : g : _ : i : k : l\nc2An:           a : b : c : d : e : x : g _i : k : l\nc2il:           a : b : c :_: e : x : g : h : i : k : l\nc2al:           a : b : c _: e : x : g : h : i : k : l\nc2Il:           a : b : c : _ : e : x : g : h : i : k : l\nc2Al:           a : b : c _e : x : g : h : i : k : l\nc2iN:           a : b : c : d : e : x : g : h : i :_: l\nc2aN:           a : b : c : d : e : x : g : h : i _: l\nc2IN:           a : b : c : d : e : x : g : h : i : _ : l\nc2AN:           a : b : c : d : e : x : g : h : i _l\nc2iL:           a :_: c : d : e : x : g : h : i : k : l\nc2aL:           a _: c : d : e : x : g : h : i : k : l\nc2IL:           a : _ : c : d : e : x : g : h : i : k : l\nc2AL:           a _c : d : e : x : g : h : i : k : l\ndi:             a : b : c : d : e :: g : h : i : k : l\nda:             a : b : c : d : e : g : h : i : k : l\ndI:             a : b : c : d : e :  : g : h : i : k : l\ndA:             a : b : c : d : e g : h : i : k : l\ndin:            a : b : c : d : e : x :: h : i : k : l\ndan:            a : b : c : d : e : x : h : i : k : l\ndIn:            a : b : c : d : e : x :  : h : i : k : l\ndAn:            a : b : c : d : e : x h : i : k : l\ndil:            a : b : c : d :: x : g : h : i : k : l\ndal:            a : b : c : d : x : g : h : i : k : l\ndIl:            a : b : c : d :  : x : g : h : i : k : l\ndAl:            a : b : c : d x : g : h : i : k : l\ndiN:            a : b : c : d : e : x : g :: i : k : l\ndaN:            a : b : c : d : e : x : g : i : k : l\ndIN:            a : b : c : d : e : x : g :  : i : k : l\ndAN:            a : b : c : d : e : x : g i : k : l\ndiL:            a : b : c :: e : x : g : h : i : k : l\ndaL:            a : b : c : e : x : g : h : i : k : l\ndIL:            a : b : c :  : e : x : g : h : i : k : l\ndAL:            a : b : c e : x : g : h : i : k : l\nd1i:            a : b : c : d : e :: g : h : i : k : l\nd1a:            a : b : c : d : e : g : h : i : k : l\nd1I:            a : b : c : d : e :  : g : h : i : k : l\nd1A:            a : b : c : d : e g : h : i : k : l\nd1in:           a : b : c : d : e : x :: h : i : k : l\nd1an:           a : b : c : d : e : x : h : i : k : l\nd1In:           a : b : c : d : e : x :  : h : i : k : l\nd1An:           a : b : c : d : e : x h : i : k : l\nd1il:           a : b : c : d :: x : g : h : i : k : l\nd1al:           a : b : c : d : x : g : h : i : k : l\nd1Il:           a : b : c : d :  : x : g : h : i : k : l\nd1Al:           a : b : c : d x : g : h : i : k : l\nd1iN:           a : b : c : d : e : x : g :: i : k : l\nd1aN:           a : b : c : d : e : x : g : i : k : l\nd1IN:           a : b : c : d : e : x : g :  : i : k : l\nd1AN:           a : b : c : d : e : x : g i : k : l\nd1iL:           a : b : c :: e : x : g : h : i : k : l\nd1aL:           a : b : c : e : x : g : h : i : k : l\nd1IL:           a : b : c :  : e : x : g : h : i : k : l\nd1AL:           a : b : c e : x : g : h : i : k : l\nd2i:            a : b : c : d : e :: g : h : i : k : l\nd2a:            a : b : c : d : e : g : h : i : k : l\nd2I:            a : b : c : d : e :  : g : h : i : k : l\nd2A:            a : b : c : d : e g : h : i : k : l\nd2in:           a : b : c : d : e : x : g :: i : k : l\nd2an:           a : b : c : d : e : x : g : i : k : l\nd2In:           a : b : c : d : e : x : g :  : i : k : l\nd2An:           a : b : c : d : e : x : g i : k : l\nd2il:           a : b : c :: e : x : g : h : i : k : l\nd2al:           a : b : c : e : x : g : h : i : k : l\nd2Il:           a : b : c :  : e : x : g : h : i : k : l\nd2Al:           a : b : c e : x : g : h : i : k : l\nd2iN:           a : b : c : d : e : x : g : h : i :: l\nd2aN:           a : b : c : d : e : x : g : h : i : l\nd2IN:           a : b : c : d : e : x : g : h : i :  : l\nd2AN:           a : b : c : d : e : x : g : h : i l\nd2iL:           a :: c : d : e : x : g : h : i : k : l\nd2aL:           a : c : d : e : x : g : h : i : k : l\nd2IL:           a :  : c : d : e : x : g : h : i : k : l\nd2AL:           a c : d : e : x : g : h : i : k : l\nyi:             a : b : c : d : e : x : g : h : i : k : l       ' x '\nya:             a : b : c : d : e : x : g : h : i : k : l       ': x '\nyI:             a : b : c : d : e : x : g : h : i : k : l       'x'\nyA:             a : b : c : d : e : x : g : h : i : k : l       ': x : '\nyin:            a : b : c : d : e : x : g : h : i : k : l       ' g '\nyan:            a : b : c : d : e : x : g : h : i : k : l       ': g '\nyIn:            a : b : c : d : e : x : g : h : i : k : l       'g'\nyAn:            a : b : c : d : e : x : g : h : i : k : l       ': g : '\nyil:            a : b : c : d : e : x : g : h : i : k : l       ' e '\nyal:            a : b : c : d : e : x : g : h : i : k : l       ': e '\nyIl:            a : b : c : d : e : x : g : h : i : k : l       'e'\nyAl:            a : b : c : d : e : x : g : h : i : k : l       ': e : '\nyiN:            a : b : c : d : e : x : g : h : i : k : l       ' h '\nyaN:            a : b : c : d : e : x : g : h : i : k : l       ': h '\nyIN:            a : b : c : d : e : x : g : h : i : k : l       'h'\nyAN:            a : b : c : d : e : x : g : h : i : k : l       ': h : '\nyiL:            a : b : c : d : e : x : g : h : i : k : l       ' d '\nyaL:            a : b : c : d : e : x : g : h : i : k : l       ': d '\nyIL:            a : b : c : d : e : x : g : h : i : k : l       'd'\nyAL:            a : b : c : d : e : x : g : h : i : k : l       ': d : '\ny1i:            a : b : c : d : e : x : g : h : i : k : l       ' x '\ny1a:            a : b : c : d : e : x : g : h : i : k : l       ': x '\ny1I:            a : b : c : d : e : x : g : h : i : k : l       'x'\ny1A:            a : b : c : d : e : x : g : h : i : k : l       ': x : '\ny1in:           a : b : c : d : e : x : g : h : i : k : l       ' g '\ny1an:           a : b : c : d : e : x : g : h : i : k : l       ': g '\ny1In:           a : b : c : d : e : x : g : h : i : k : l       'g'\ny1An:           a : b : c : d : e : x : g : h : i : k : l       ': g : '\ny1il:           a : b : c : d : e : x : g : h : i : k : l       ' e '\ny1al:           a : b : c : d : e : x : g : h : i : k : l       ': e '\ny1Il:           a : b : c : d : e : x : g : h : i : k : l       'e'\ny1Al:           a : b : c : d : e : x : g : h : i : k : l       ': e : '\ny1iN:           a : b : c : d : e : x : g : h : i : k : l       ' h '\ny1aN:           a : b : c : d : e : x : g : h : i : k : l       ': h '\ny1IN:           a : b : c : d : e : x : g : h : i : k : l       'h'\ny1AN:           a : b : c : d : e : x : g : h : i : k : l       ': h : '\ny1iL:           a : b : c : d : e : x : g : h : i : k : l       ' d '\ny1aL:           a : b : c : d : e : x : g : h : i : k : l       ': d '\ny1IL:           a : b : c : d : e : x : g : h : i : k : l       'd'\ny1AL:           a : b : c : d : e : x : g : h : i : k : l       ': d : '\ny2i:            a : b : c : d : e : x : g : h : i : k : l       ' x '\ny2a:            a : b : c : d : e : x : g : h : i : k : l       ': x '\ny2I:            a : b : c : d : e : x : g : h : i : k : l       'x'\ny2A:            a : b : c : d : e : x : g : h : i : k : l       ': x : '\ny2in:           a : b : c : d : e : x : g : h : i : k : l       ' h '\ny2an:           a : b : c : d : e : x : g : h : i : k : l       ': h '\ny2In:           a : b : c : d : e : x : g : h : i : k : l       'h'\ny2An:           a : b : c : d : e : x : g : h : i : k : l       ': h : '\ny2il:           a : b : c : d : e : x : g : h : i : k : l       ' d '\ny2al:           a : b : c : d : e : x : g : h : i : k : l       ': d '\ny2Il:           a : b : c : d : e : x : g : h : i : k : l       'd'\ny2Al:           a : b : c : d : e : x : g : h : i : k : l       ': d : '\ny2iN:           a : b : c : d : e : x : g : h : i : k : l       ' k '\ny2aN:           a : b : c : d : e : x : g : h : i : k : l       ': k '\ny2IN:           a : b : c : d : e : x : g : h : i : k : l       'k'\ny2AN:           a : b : c : d : e : x : g : h : i : k : l       ': k : '\ny2iL:           a : b : c : d : e : x : g : h : i : k : l       ' b '\ny2aL:           a : b : c : d : e : x : g : h : i : k : l       ': b '\ny2IL:           a : b : c : d : e : x : g : h : i : k : l       'b'\ny2AL:           a : b : c : d : e : x : g : h : i : k : l       ': b : '\nvi:             a : b : c : d : e :___: g : h : i : k : l\nva:             a : b : c : d : e ____: g : h : i : k : l\nvI:             a : b : c : d : e : _ : g : h : i : k : l\nvA:             a : b : c : d : e ______g : h : i : k : l\nvin:            a : b : c : d : e : x :___: h : i : k : l\nvan:            a : b : c : d : e : x ____: h : i : k : l\nvIn:            a : b : c : d : e : x : _ : h : i : k : l\nvAn:            a : b : c : d : e : x ______h : i : k : l\nvil:            a : b : c : d :___: x : g : h : i : k : l\nval:            a : b : c : d ____: x : g : h : i : k : l\nvIl:            a : b : c : d : _ : x : g : h : i : k : l\nvAl:            a : b : c : d ______x : g : h : i : k : l\nviN:            a : b : c : d : e : x : g :___: i : k : l\nvaN:            a : b : c : d : e : x : g ____: i : k : l\nvIN:            a : b : c : d : e : x : g : _ : i : k : l\nvAN:            a : b : c : d : e : x : g ______i : k : l\nviL:            a : b : c :___: e : x : g : h : i : k : l\nvaL:            a : b : c ____: e : x : g : h : i : k : l\nvIL:            a : b : c : _ : e : x : g : h : i : k : l\nvAL:            a : b : c ______e : x : g : h : i : k : l\nv1i:            a : b : c : d : e :___: g : h : i : k : l\nv1a:            a : b : c : d : e ____: g : h : i : k : l\nv1I:            a : b : c : d : e : _ : g : h : i : k : l\nv1A:            a : b : c : d : e ______g : h : i : k : l\nv1in:           a : b : c : d : e : x :___: h : i : k : l\nv1an:           a : b : c : d : e : x ____: h : i : k : l\nv1In:           a : b : c : d : e : x : _ : h : i : k : l\nv1An:           a : b : c : d : e : x ______h : i : k : l\nv1il:           a : b : c : d :___: x : g : h : i : k : l\nv1al:           a : b : c : d ____: x : g : h : i : k : l\nv1Il:           a : b : c : d : _ : x : g : h : i : k : l\nv1Al:           a : b : c : d ______x : g : h : i : k : l\nv1iN:           a : b : c : d : e : x : g :___: i : k : l\nv1aN:           a : b : c : d : e : x : g ____: i : k : l\nv1IN:           a : b : c : d : e : x : g : _ : i : k : l\nv1AN:           a : b : c : d : e : x : g ______i : k : l\nv1iL:           a : b : c :___: e : x : g : h : i : k : l\nv1aL:           a : b : c ____: e : x : g : h : i : k : l\nv1IL:           a : b : c : _ : e : x : g : h : i : k : l\nv1AL:           a : b : c ______e : x : g : h : i : k : l\nv2i:            a : b : c : d : e :___: g : h : i : k : l\nv2a:            a : b : c : d : e ____: g : h : i : k : l\nv2I:            a : b : c : d : e : _ : g : h : i : k : l\nv2A:            a : b : c : d : e ______g : h : i : k : l\nv2in:           a : b : c : d : e : x : g :___: i : k : l\nv2an:           a : b : c : d : e : x : g ____: i : k : l\nv2In:           a : b : c : d : e : x : g : _ : i : k : l\nv2An:           a : b : c : d : e : x : g ______i : k : l\nv2il:           a : b : c :___: e : x : g : h : i : k : l\nv2al:           a : b : c ____: e : x : g : h : i : k : l\nv2Il:           a : b : c : _ : e : x : g : h : i : k : l\nv2Al:           a : b : c ______e : x : g : h : i : k : l\nv2iN:           a : b : c : d : e : x : g : h : i :___: l\nv2aN:           a : b : c : d : e : x : g : h : i ____: l\nv2IN:           a : b : c : d : e : x : g : h : i : _ : l\nv2AN:           a : b : c : d : e : x : g : h : i ______l\nv2iL:           a :___: c : d : e : x : g : h : i : k : l\nv2aL:           a ____: c : d : e : x : g : h : i : k : l\nv2IL:           a : _ : c : d : e : x : g : h : i : k : l\nv2AL:           a ______c : d : e : x : g : h : i : k : l\na + b + c + d + e + x + g + h + i + k + l\nci+             a + b + c + d + e +_+ g + h + i + k + l\nca+             a + b + c + d + e _+ g + h + i + k + l\ncI+             a + b + c + d + e + _ + g + h + i + k + l\ncA+             a + b + c + d + e _g + h + i + k + l\ncin+            a + b + c + d + e + x +_+ h + i + k + l\ncan+            a + b + c + d + e + x _+ h + i + k + l\ncIn+            a + b + c + d + e + x + _ + h + i + k + l\ncAn+            a + b + c + d + e + x _h + i + k + l\ncil+            a + b + c + d +_+ x + g + h + i + k + l\ncal+            a + b + c + d _+ x + g + h + i + k + l\ncIl+            a + b + c + d + _ + x + g + h + i + k + l\ncAl+            a + b + c + d _x + g + h + i + k + l\nciN+            a + b + c + d + e + x + g +_+ i + k + l\ncaN+            a + b + c + d + e + x + g _+ i + k + l\ncIN+            a + b + c + d + e + x + g + _ + i + k + l\ncAN+            a + b + c + d + e + x + g _i + k + l\nciL+            a + b + c +_+ e + x + g + h + i + k + l\ncaL+            a + b + c _+ e + x + g + h + i + k + l\ncIL+            a + b + c + _ + e + x + g + h + i + k + l\ncAL+            a + b + c _e + x + g + h + i + k + l\nc1i+            a + b + c + d + e +_+ g + h + i + k + l\nc1a+            a + b + c + d + e _+ g + h + i + k + l\nc1I+            a + b + c + d + e + _ + g + h + i + k + l\nc1A+            a + b + c + d + e _g + h + i + k + l\nc1in+           a + b + c + d + e + x +_+ h + i + k + l\nc1an+           a + b + c + d + e + x _+ h + i + k + l\nc1In+           a + b + c + d + e + x + _ + h + i + k + l\nc1An+           a + b + c + d + e + x _h + i + k + l\nc1il+           a + b + c + d +_+ x + g + h + i + k + l\nc1al+           a + b + c + d _+ x + g + h + i + k + l\nc1Il+           a + b + c + d + _ + x + g + h + i + k + l\nc1Al+           a + b + c + d _x + g + h + i + k + l\nc1iN+           a + b + c + d + e + x + g +_+ i + k + l\nc1aN+           a + b + c + d + e + x + g _+ i + k + l\nc1IN+           a + b + c + d + e + x + g + _ + i + k + l\nc1AN+           a + b + c + d + e + x + g _i + k + l\nc1iL+           a + b + c +_+ e + x + g + h + i + k + l\nc1aL+           a + b + c _+ e + x + g + h + i + k + l\nc1IL+           a + b + c + _ + e + x + g + h + i + k + l\nc1AL+           a + b + c _e + x + g + h + i + k + l\nc2i+            a + b + c + d + e +_+ g + h + i + k + l\nc2a+            a + b + c + d + e _+ g + h + i + k + l\nc2I+            a + b + c + d + e + _ + g + h + i + k + l\nc2A+            a + b + c + d + e _g + h + i + k + l\nc2in+           a + b + c + d + e + x + g +_+ i + k + l\nc2an+           a + b + c + d + e + x + g _+ i + k + l\nc2In+           a + b + c + d + e + x + g + _ + i + k + l\nc2An+           a + b + c + d + e + x + g _i + k + l\nc2il+           a + b + c +_+ e + x + g + h + i + k + l\nc2al+           a + b + c _+ e + x + g + h + i + k + l\nc2Il+           a + b + c + _ + e + x + g + h + i + k + l\nc2Al+           a + b + c _e + x + g + h + i + k + l\nc2iN+           a + b + c + d + e + x + g + h + i +_+ l\nc2aN+           a + b + c + d + e + x + g + h + i _+ l\nc2IN+           a + b + c + d + e + x + g + h + i + _ + l\nc2AN+           a + b + c + d + e + x + g + h + i _l\nc2iL+           a +_+ c + d + e + x + g + h + i + k + l\nc2aL+           a _+ c + d + e + x + g + h + i + k + l\nc2IL+           a + _ + c + d + e + x + g + h + i + k + l\nc2AL+           a _c + d + e + x + g + h + i + k + l\ndi+             a + b + c + d + e ++ g + h + i + k + l\nda+             a + b + c + d + e + g + h + i + k + l\ndI+             a + b + c + d + e +  + g + h + i + k + l\ndA+             a + b + c + d + e g + h + i + k + l\ndin+            a + b + c + d + e + x ++ h + i + k + l\ndan+            a + b + c + d + e + x + h + i + k + l\ndIn+            a + b + c + d + e + x +  + h + i + k + l\ndAn+            a + b + c + d + e + x h + i + k + l\ndil+            a + b + c + d ++ x + g + h + i + k + l\ndal+            a + b + c + d + x + g + h + i + k + l\ndIl+            a + b + c + d +  + x + g + h + i + k + l\ndAl+            a + b + c + d x + g + h + i + k + l\ndiN+            a + b + c + d + e + x + g ++ i + k + l\ndaN+            a + b + c + d + e + x + g + i + k + l\ndIN+            a + b + c + d + e + x + g +  + i + k + l\ndAN+            a + b + c + d + e + x + g i + k + l\ndiL+            a + b + c ++ e + x + g + h + i + k + l\ndaL+            a + b + c + e + x + g + h + i + k + l\ndIL+            a + b + c +  + e + x + g + h + i + k + l\ndAL+            a + b + c e + x + g + h + i + k + l\nd1i+            a + b + c + d + e ++ g + h + i + k + l\nd1a+            a + b + c + d + e + g + h + i + k + l\nd1I+            a + b + c + d + e +  + g + h + i + k + l\nd1A+            a + b + c + d + e g + h + i + k + l\nd1in+           a + b + c + d + e + x ++ h + i + k + l\nd1an+           a + b + c + d + e + x + h + i + k + l\nd1In+           a + b + c + d + e + x +  + h + i + k + l\nd1An+           a + b + c + d + e + x h + i + k + l\nd1il+           a + b + c + d ++ x + g + h + i + k + l\nd1al+           a + b + c + d + x + g + h + i + k + l\nd1Il+           a + b + c + d +  + x + g + h + i + k + l\nd1Al+           a + b + c + d x + g + h + i + k + l\nd1iN+           a + b + c + d + e + x + g ++ i + k + l\nd1aN+           a + b + c + d + e + x + g + i + k + l\nd1IN+           a + b + c + d + e + x + g +  + i + k + l\nd1AN+           a + b + c + d + e + x + g i + k + l\nd1iL+           a + b + c ++ e + x + g + h + i + k + l\nd1aL+           a + b + c + e + x + g + h + i + k + l\nd1IL+           a + b + c +  + e + x + g + h + i + k + l\nd1AL+           a + b + c e + x + g + h + i + k + l\nd2i+            a + b + c + d + e ++ g + h + i + k + l\nd2a+            a + b + c + d + e + g + h + i + k + l\nd2I+            a + b + c + d + e +  + g + h + i + k + l\nd2A+            a + b + c + d + e g + h + i + k + l\nd2in+           a + b + c + d + e + x + g ++ i + k + l\nd2an+           a + b + c + d + e + x + g + i + k + l\nd2In+           a + b + c + d + e + x + g +  + i + k + l\nd2An+           a + b + c + d + e + x + g i + k + l\nd2il+           a + b + c ++ e + x + g + h + i + k + l\nd2al+           a + b + c + e + x + g + h + i + k + l\nd2Il+           a + b + c +  + e + x + g + h + i + k + l\nd2Al+           a + b + c e + x + g + h + i + k + l\nd2iN+           a + b + c + d + e + x + g + h + i ++ l\nd2aN+           a + b + c + d + e + x + g + h + i + l\nd2IN+           a + b + c + d + e + x + g + h + i +  + l\nd2AN+           a + b + c + d + e + x + g + h + i l\nd2iL+           a ++ c + d + e + x + g + h + i + k + l\nd2aL+           a + c + d + e + x + g + h + i + k + l\nd2IL+           a +  + c + d + e + x + g + h + i + k + l\nd2AL+           a c + d + e + x + g + h + i + k + l\nyi+             a + b + c + d + e + x + g + h + i + k + l       ' x '\nya+             a + b + c + d + e + x + g + h + i + k + l       '+ x '\nyI+             a + b + c + d + e + x + g + h + i + k + l       'x'\nyA+             a + b + c + d + e + x + g + h + i + k + l       '+ x + '\nyin+            a + b + c + d + e + x + g + h + i + k + l       ' g '\nyan+            a + b + c + d + e + x + g + h + i + k + l       '+ g '\nyIn+            a + b + c + d + e + x + g + h + i + k + l       'g'\nyAn+            a + b + c + d + e + x + g + h + i + k + l       '+ g + '\nyil+            a + b + c + d + e + x + g + h + i + k + l       ' e '\nyal+            a + b + c + d + e + x + g + h + i + k + l       '+ e '\nyIl+            a + b + c + d + e + x + g + h + i + k + l       'e'\nyAl+            a + b + c + d + e + x + g + h + i + k + l       '+ e + '\nyiN+            a + b + c + d + e + x + g + h + i + k + l       ' h '\nyaN+            a + b + c + d + e + x + g + h + i + k + l       '+ h '\nyIN+            a + b + c + d + e + x + g + h + i + k + l       'h'\nyAN+            a + b + c + d + e + x + g + h + i + k + l       '+ h + '\nyiL+            a + b + c + d + e + x + g + h + i + k + l       ' d '\nyaL+            a + b + c + d + e + x + g + h + i + k + l       '+ d '\nyIL+            a + b + c + d + e + x + g + h + i + k + l       'd'\nyAL+            a + b + c + d + e + x + g + h + i + k + l       '+ d + '\ny1i+            a + b + c + d + e + x + g + h + i + k + l       ' x '\ny1a+            a + b + c + d + e + x + g + h + i + k + l       '+ x '\ny1I+            a + b + c + d + e + x + g + h + i + k + l       'x'\ny1A+            a + b + c + d + e + x + g + h + i + k + l       '+ x + '\ny1in+           a + b + c + d + e + x + g + h + i + k + l       ' g '\ny1an+           a + b + c + d + e + x + g + h + i + k + l       '+ g '\ny1In+           a + b + c + d + e + x + g + h + i + k + l       'g'\ny1An+           a + b + c + d + e + x + g + h + i + k + l       '+ g + '\ny1il+           a + b + c + d + e + x + g + h + i + k + l       ' e '\ny1al+           a + b + c + d + e + x + g + h + i + k + l       '+ e '\ny1Il+           a + b + c + d + e + x + g + h + i + k + l       'e'\ny1Al+           a + b + c + d + e + x + g + h + i + k + l       '+ e + '\ny1iN+           a + b + c + d + e + x + g + h + i + k + l       ' h '\ny1aN+           a + b + c + d + e + x + g + h + i + k + l       '+ h '\ny1IN+           a + b + c + d + e + x + g + h + i + k + l       'h'\ny1AN+           a + b + c + d + e + x + g + h + i + k + l       '+ h + '\ny1iL+           a + b + c + d + e + x + g + h + i + k + l       ' d '\ny1aL+           a + b + c + d + e + x + g + h + i + k + l       '+ d '\ny1IL+           a + b + c + d + e + x + g + h + i + k + l       'd'\ny1AL+           a + b + c + d + e + x + g + h + i + k + l       '+ d + '\ny2i+            a + b + c + d + e + x + g + h + i + k + l       ' x '\ny2a+            a + b + c + d + e + x + g + h + i + k + l       '+ x '\ny2I+            a + b + c + d + e + x + g + h + i + k + l       'x'\ny2A+            a + b + c + d + e + x + g + h + i + k + l       '+ x + '\ny2in+           a + b + c + d + e + x + g + h + i + k + l       ' h '\ny2an+           a + b + c + d + e + x + g + h + i + k + l       '+ h '\ny2In+           a + b + c + d + e + x + g + h + i + k + l       'h'\ny2An+           a + b + c + d + e + x + g + h + i + k + l       '+ h + '\ny2il+           a + b + c + d + e + x + g + h + i + k + l       ' d '\ny2al+           a + b + c + d + e + x + g + h + i + k + l       '+ d '\ny2Il+           a + b + c + d + e + x + g + h + i + k + l       'd'\ny2Al+           a + b + c + d + e + x + g + h + i + k + l       '+ d + '\ny2iN+           a + b + c + d + e + x + g + h + i + k + l       ' k '\ny2aN+           a + b + c + d + e + x + g + h + i + k + l       '+ k '\ny2IN+           a + b + c + d + e + x + g + h + i + k + l       'k'\ny2AN+           a + b + c + d + e + x + g + h + i + k + l       '+ k + '\ny2iL+           a + b + c + d + e + x + g + h + i + k + l       ' b '\ny2aL+           a + b + c + d + e + x + g + h + i + k + l       '+ b '\ny2IL+           a + b + c + d + e + x + g + h + i + k + l       'b'\ny2AL+           a + b + c + d + e + x + g + h + i + k + l       '+ b + '\nvi+             a + b + c + d + e +___+ g + h + i + k + l\nva+             a + b + c + d + e ____+ g + h + i + k + l\nvI+             a + b + c + d + e + _ + g + h + i + k + l\nvA+             a + b + c + d + e ______g + h + i + k + l\nvin+            a + b + c + d + e + x +___+ h + i + k + l\nvan+            a + b + c + d + e + x ____+ h + i + k + l\nvIn+            a + b + c + d + e + x + _ + h + i + k + l\nvAn+            a + b + c + d + e + x ______h + i + k + l\nvil+            a + b + c + d +___+ x + g + h + i + k + l\nval+            a + b + c + d ____+ x + g + h + i + k + l\nvIl+            a + b + c + d + _ + x + g + h + i + k + l\nvAl+            a + b + c + d ______x + g + h + i + k + l\nviN+            a + b + c + d + e + x + g +___+ i + k + l\nvaN+            a + b + c + d + e + x + g ____+ i + k + l\nvIN+            a + b + c + d + e + x + g + _ + i + k + l\nvAN+            a + b + c + d + e + x + g ______i + k + l\nviL+            a + b + c +___+ e + x + g + h + i + k + l\nvaL+            a + b + c ____+ e + x + g + h + i + k + l\nvIL+            a + b + c + _ + e + x + g + h + i + k + l\nvAL+            a + b + c ______e + x + g + h + i + k + l\nv1i+            a + b + c + d + e +___+ g + h + i + k + l\nv1a+            a + b + c + d + e ____+ g + h + i + k + l\nv1I+            a + b + c + d + e + _ + g + h + i + k + l\nv1A+            a + b + c + d + e ______g + h + i + k + l\nv1in+           a + b + c + d + e + x +___+ h + i + k + l\nv1an+           a + b + c + d + e + x ____+ h + i + k + l\nv1In+           a + b + c + d + e + x + _ + h + i + k + l\nv1An+           a + b + c + d + e + x ______h + i + k + l\nv1il+           a + b + c + d +___+ x + g + h + i + k + l\nv1al+           a + b + c + d ____+ x + g + h + i + k + l\nv1Il+           a + b + c + d + _ + x + g + h + i + k + l\nv1Al+           a + b + c + d ______x + g + h + i + k + l\nv1iN+           a + b + c + d + e + x + g +___+ i + k + l\nv1aN+           a + b + c + d + e + x + g ____+ i + k + l\nv1IN+           a + b + c + d + e + x + g + _ + i + k + l\nv1AN+           a + b + c + d + e + x + g ______i + k + l\nv1iL+           a + b + c +___+ e + x + g + h + i + k + l\nv1aL+           a + b + c ____+ e + x + g + h + i + k + l\nv1IL+           a + b + c + _ + e + x + g + h + i + k + l\nv1AL+           a + b + c ______e + x + g + h + i + k + l\nv2i+            a + b + c + d + e +___+ g + h + i + k + l\nv2a+            a + b + c + d + e ____+ g + h + i + k + l\nv2I+            a + b + c + d + e + _ + g + h + i + k + l\nv2A+            a + b + c + d + e ______g + h + i + k + l\nv2in+           a + b + c + d + e + x + g +___+ i + k + l\nv2an+           a + b + c + d + e + x + g ____+ i + k + l\nv2In+           a + b + c + d + e + x + g + _ + i + k + l\nv2An+           a + b + c + d + e + x + g ______i + k + l\nv2il+           a + b + c +___+ e + x + g + h + i + k + l\nv2al+           a + b + c ____+ e + x + g + h + i + k + l\nv2Il+           a + b + c + _ + e + x + g + h + i + k + l\nv2Al+           a + b + c ______e + x + g + h + i + k + l\nv2iN+           a + b + c + d + e + x + g + h + i +___+ l\nv2aN+           a + b + c + d + e + x + g + h + i ____+ l\nv2IN+           a + b + c + d + e + x + g + h + i + _ + l\nv2AN+           a + b + c + d + e + x + g + h + i ______l\nv2iL+           a +___+ c + d + e + x + g + h + i + k + l\nv2aL+           a ____+ c + d + e + x + g + h + i + k + l\nv2IL+           a + _ + c + d + e + x + g + h + i + k + l\nv2AL+           a ______c + d + e + x + g + h + i + k + l\na - b - c - d - e - x - g - h - i - k - l\nci-             a - b - c - d - e -_- g - h - i - k - l\nca-             a - b - c - d - e _- g - h - i - k - l\ncI-             a - b - c - d - e - _ - g - h - i - k - l\ncA-             a - b - c - d - e _g - h - i - k - l\ncin-            a - b - c - d - e - x -_- h - i - k - l\ncan-            a - b - c - d - e - x _- h - i - k - l\ncIn-            a - b - c - d - e - x - _ - h - i - k - l\ncAn-            a - b - c - d - e - x _h - i - k - l\ncil-            a - b - c - d -_- x - g - h - i - k - l\ncal-            a - b - c - d _- x - g - h - i - k - l\ncIl-            a - b - c - d - _ - x - g - h - i - k - l\ncAl-            a - b - c - d _x - g - h - i - k - l\nciN-            a - b - c - d - e - x - g -_- i - k - l\ncaN-            a - b - c - d - e - x - g _- i - k - l\ncIN-            a - b - c - d - e - x - g - _ - i - k - l\ncAN-            a - b - c - d - e - x - g _i - k - l\nciL-            a - b - c -_- e - x - g - h - i - k - l\ncaL-            a - b - c _- e - x - g - h - i - k - l\ncIL-            a - b - c - _ - e - x - g - h - i - k - l\ncAL-            a - b - c _e - x - g - h - i - k - l\nc1i-            a - b - c - d - e -_- g - h - i - k - l\nc1a-            a - b - c - d - e _- g - h - i - k - l\nc1I-            a - b - c - d - e - _ - g - h - i - k - l\nc1A-            a - b - c - d - e _g - h - i - k - l\nc1in-           a - b - c - d - e - x -_- h - i - k - l\nc1an-           a - b - c - d - e - x _- h - i - k - l\nc1In-           a - b - c - d - e - x - _ - h - i - k - l\nc1An-           a - b - c - d - e - x _h - i - k - l\nc1il-           a - b - c - d -_- x - g - h - i - k - l\nc1al-           a - b - c - d _- x - g - h - i - k - l\nc1Il-           a - b - c - d - _ - x - g - h - i - k - l\nc1Al-           a - b - c - d _x - g - h - i - k - l\nc1iN-           a - b - c - d - e - x - g -_- i - k - l\nc1aN-           a - b - c - d - e - x - g _- i - k - l\nc1IN-           a - b - c - d - e - x - g - _ - i - k - l\nc1AN-           a - b - c - d - e - x - g _i - k - l\nc1iL-           a - b - c -_- e - x - g - h - i - k - l\nc1aL-           a - b - c _- e - x - g - h - i - k - l\nc1IL-           a - b - c - _ - e - x - g - h - i - k - l\nc1AL-           a - b - c _e - x - g - h - i - k - l\nc2i-            a - b - c - d - e -_- g - h - i - k - l\nc2a-            a - b - c - d - e _- g - h - i - k - l\nc2I-            a - b - c - d - e - _ - g - h - i - k - l\nc2A-            a - b - c - d - e _g - h - i - k - l\nc2in-           a - b - c - d - e - x - g -_- i - k - l\nc2an-           a - b - c - d - e - x - g _- i - k - l\nc2In-           a - b - c - d - e - x - g - _ - i - k - l\nc2An-           a - b - c - d - e - x - g _i - k - l\nc2il-           a - b - c -_- e - x - g - h - i - k - l\nc2al-           a - b - c _- e - x - g - h - i - k - l\nc2Il-           a - b - c - _ - e - x - g - h - i - k - l\nc2Al-           a - b - c _e - x - g - h - i - k - l\nc2iN-           a - b - c - d - e - x - g - h - i -_- l\nc2aN-           a - b - c - d - e - x - g - h - i _- l\nc2IN-           a - b - c - d - e - x - g - h - i - _ - l\nc2AN-           a - b - c - d - e - x - g - h - i _l\nc2iL-           a -_- c - d - e - x - g - h - i - k - l\nc2aL-           a _- c - d - e - x - g - h - i - k - l\nc2IL-           a - _ - c - d - e - x - g - h - i - k - l\nc2AL-           a _c - d - e - x - g - h - i - k - l\ndi-             a - b - c - d - e -- g - h - i - k - l\nda-             a - b - c - d - e - g - h - i - k - l\ndI-             a - b - c - d - e -  - g - h - i - k - l\ndA-             a - b - c - d - e g - h - i - k - l\ndin-            a - b - c - d - e - x -- h - i - k - l\ndan-            a - b - c - d - e - x - h - i - k - l\ndIn-            a - b - c - d - e - x -  - h - i - k - l\ndAn-            a - b - c - d - e - x h - i - k - l\ndil-            a - b - c - d -- x - g - h - i - k - l\ndal-            a - b - c - d - x - g - h - i - k - l\ndIl-            a - b - c - d -  - x - g - h - i - k - l\ndAl-            a - b - c - d x - g - h - i - k - l\ndiN-            a - b - c - d - e - x - g -- i - k - l\ndaN-            a - b - c - d - e - x - g - i - k - l\ndIN-            a - b - c - d - e - x - g -  - i - k - l\ndAN-            a - b - c - d - e - x - g i - k - l\ndiL-            a - b - c -- e - x - g - h - i - k - l\ndaL-            a - b - c - e - x - g - h - i - k - l\ndIL-            a - b - c -  - e - x - g - h - i - k - l\ndAL-            a - b - c e - x - g - h - i - k - l\nd1i-            a - b - c - d - e -- g - h - i - k - l\nd1a-            a - b - c - d - e - g - h - i - k - l\nd1I-            a - b - c - d - e -  - g - h - i - k - l\nd1A-            a - b - c - d - e g - h - i - k - l\nd1in-           a - b - c - d - e - x -- h - i - k - l\nd1an-           a - b - c - d - e - x - h - i - k - l\nd1In-           a - b - c - d - e - x -  - h - i - k - l\nd1An-           a - b - c - d - e - x h - i - k - l\nd1il-           a - b - c - d -- x - g - h - i - k - l\nd1al-           a - b - c - d - x - g - h - i - k - l\nd1Il-           a - b - c - d -  - x - g - h - i - k - l\nd1Al-           a - b - c - d x - g - h - i - k - l\nd1iN-           a - b - c - d - e - x - g -- i - k - l\nd1aN-           a - b - c - d - e - x - g - i - k - l\nd1IN-           a - b - c - d - e - x - g -  - i - k - l\nd1AN-           a - b - c - d - e - x - g i - k - l\nd1iL-           a - b - c -- e - x - g - h - i - k - l\nd1aL-           a - b - c - e - x - g - h - i - k - l\nd1IL-           a - b - c -  - e - x - g - h - i - k - l\nd1AL-           a - b - c e - x - g - h - i - k - l\nd2i-            a - b - c - d - e -- g - h - i - k - l\nd2a-            a - b - c - d - e - g - h - i - k - l\nd2I-            a - b - c - d - e -  - g - h - i - k - l\nd2A-            a - b - c - d - e g - h - i - k - l\nd2in-           a - b - c - d - e - x - g -- i - k - l\nd2an-           a - b - c - d - e - x - g - i - k - l\nd2In-           a - b - c - d - e - x - g -  - i - k - l\nd2An-           a - b - c - d - e - x - g i - k - l\nd2il-           a - b - c -- e - x - g - h - i - k - l\nd2al-           a - b - c - e - x - g - h - i - k - l\nd2Il-           a - b - c -  - e - x - g - h - i - k - l\nd2Al-           a - b - c e - x - g - h - i - k - l\nd2iN-           a - b - c - d - e - x - g - h - i -- l\nd2aN-           a - b - c - d - e - x - g - h - i - l\nd2IN-           a - b - c - d - e - x - g - h - i -  - l\nd2AN-           a - b - c - d - e - x - g - h - i l\nd2iL-           a -- c - d - e - x - g - h - i - k - l\nd2aL-           a - c - d - e - x - g - h - i - k - l\nd2IL-           a -  - c - d - e - x - g - h - i - k - l\nd2AL-           a c - d - e - x - g - h - i - k - l\nyi-             a - b - c - d - e - x - g - h - i - k - l       ' x '\nya-             a - b - c - d - e - x - g - h - i - k - l       '- x '\nyI-             a - b - c - d - e - x - g - h - i - k - l       'x'\nyA-             a - b - c - d - e - x - g - h - i - k - l       '- x - '\nyin-            a - b - c - d - e - x - g - h - i - k - l       ' g '\nyan-            a - b - c - d - e - x - g - h - i - k - l       '- g '\nyIn-            a - b - c - d - e - x - g - h - i - k - l       'g'\nyAn-            a - b - c - d - e - x - g - h - i - k - l       '- g - '\nyil-            a - b - c - d - e - x - g - h - i - k - l       ' e '\nyal-            a - b - c - d - e - x - g - h - i - k - l       '- e '\nyIl-            a - b - c - d - e - x - g - h - i - k - l       'e'\nyAl-            a - b - c - d - e - x - g - h - i - k - l       '- e - '\nyiN-            a - b - c - d - e - x - g - h - i - k - l       ' h '\nyaN-            a - b - c - d - e - x - g - h - i - k - l       '- h '\nyIN-            a - b - c - d - e - x - g - h - i - k - l       'h'\nyAN-            a - b - c - d - e - x - g - h - i - k - l       '- h - '\nyiL-            a - b - c - d - e - x - g - h - i - k - l       ' d '\nyaL-            a - b - c - d - e - x - g - h - i - k - l       '- d '\nyIL-            a - b - c - d - e - x - g - h - i - k - l       'd'\nyAL-            a - b - c - d - e - x - g - h - i - k - l       '- d - '\ny1i-            a - b - c - d - e - x - g - h - i - k - l       ' x '\ny1a-            a - b - c - d - e - x - g - h - i - k - l       '- x '\ny1I-            a - b - c - d - e - x - g - h - i - k - l       'x'\ny1A-            a - b - c - d - e - x - g - h - i - k - l       '- x - '\ny1in-           a - b - c - d - e - x - g - h - i - k - l       ' g '\ny1an-           a - b - c - d - e - x - g - h - i - k - l       '- g '\ny1In-           a - b - c - d - e - x - g - h - i - k - l       'g'\ny1An-           a - b - c - d - e - x - g - h - i - k - l       '- g - '\ny1il-           a - b - c - d - e - x - g - h - i - k - l       ' e '\ny1al-           a - b - c - d - e - x - g - h - i - k - l       '- e '\ny1Il-           a - b - c - d - e - x - g - h - i - k - l       'e'\ny1Al-           a - b - c - d - e - x - g - h - i - k - l       '- e - '\ny1iN-           a - b - c - d - e - x - g - h - i - k - l       ' h '\ny1aN-           a - b - c - d - e - x - g - h - i - k - l       '- h '\ny1IN-           a - b - c - d - e - x - g - h - i - k - l       'h'\ny1AN-           a - b - c - d - e - x - g - h - i - k - l       '- h - '\ny1iL-           a - b - c - d - e - x - g - h - i - k - l       ' d '\ny1aL-           a - b - c - d - e - x - g - h - i - k - l       '- d '\ny1IL-           a - b - c - d - e - x - g - h - i - k - l       'd'\ny1AL-           a - b - c - d - e - x - g - h - i - k - l       '- d - '\ny2i-            a - b - c - d - e - x - g - h - i - k - l       ' x '\ny2a-            a - b - c - d - e - x - g - h - i - k - l       '- x '\ny2I-            a - b - c - d - e - x - g - h - i - k - l       'x'\ny2A-            a - b - c - d - e - x - g - h - i - k - l       '- x - '\ny2in-           a - b - c - d - e - x - g - h - i - k - l       ' h '\ny2an-           a - b - c - d - e - x - g - h - i - k - l       '- h '\ny2In-           a - b - c - d - e - x - g - h - i - k - l       'h'\ny2An-           a - b - c - d - e - x - g - h - i - k - l       '- h - '\ny2il-           a - b - c - d - e - x - g - h - i - k - l       ' d '\ny2al-           a - b - c - d - e - x - g - h - i - k - l       '- d '\ny2Il-           a - b - c - d - e - x - g - h - i - k - l       'd'\ny2Al-           a - b - c - d - e - x - g - h - i - k - l       '- d - '\ny2iN-           a - b - c - d - e - x - g - h - i - k - l       ' k '\ny2aN-           a - b - c - d - e - x - g - h - i - k - l       '- k '\ny2IN-           a - b - c - d - e - x - g - h - i - k - l       'k'\ny2AN-           a - b - c - d - e - x - g - h - i - k - l       '- k - '\ny2iL-           a - b - c - d - e - x - g - h - i - k - l       ' b '\ny2aL-           a - b - c - d - e - x - g - h - i - k - l       '- b '\ny2IL-           a - b - c - d - e - x - g - h - i - k - l       'b'\ny2AL-           a - b - c - d - e - x - g - h - i - k - l       '- b - '\nvi-             a - b - c - d - e -___- g - h - i - k - l\nva-             a - b - c - d - e ____- g - h - i - k - l\nvI-             a - b - c - d - e - _ - g - h - i - k - l\nvA-             a - b - c - d - e ______g - h - i - k - l\nvin-            a - b - c - d - e - x -___- h - i - k - l\nvan-            a - b - c - d - e - x ____- h - i - k - l\nvIn-            a - b - c - d - e - x - _ - h - i - k - l\nvAn-            a - b - c - d - e - x ______h - i - k - l\nvil-            a - b - c - d -___- x - g - h - i - k - l\nval-            a - b - c - d ____- x - g - h - i - k - l\nvIl-            a - b - c - d - _ - x - g - h - i - k - l\nvAl-            a - b - c - d ______x - g - h - i - k - l\nviN-            a - b - c - d - e - x - g -___- i - k - l\nvaN-            a - b - c - d - e - x - g ____- i - k - l\nvIN-            a - b - c - d - e - x - g - _ - i - k - l\nvAN-            a - b - c - d - e - x - g ______i - k - l\nviL-            a - b - c -___- e - x - g - h - i - k - l\nvaL-            a - b - c ____- e - x - g - h - i - k - l\nvIL-            a - b - c - _ - e - x - g - h - i - k - l\nvAL-            a - b - c ______e - x - g - h - i - k - l\nv1i-            a - b - c - d - e -___- g - h - i - k - l\nv1a-            a - b - c - d - e ____- g - h - i - k - l\nv1I-            a - b - c - d - e - _ - g - h - i - k - l\nv1A-            a - b - c - d - e ______g - h - i - k - l\nv1in-           a - b - c - d - e - x -___- h - i - k - l\nv1an-           a - b - c - d - e - x ____- h - i - k - l\nv1In-           a - b - c - d - e - x - _ - h - i - k - l\nv1An-           a - b - c - d - e - x ______h - i - k - l\nv1il-           a - b - c - d -___- x - g - h - i - k - l\nv1al-           a - b - c - d ____- x - g - h - i - k - l\nv1Il-           a - b - c - d - _ - x - g - h - i - k - l\nv1Al-           a - b - c - d ______x - g - h - i - k - l\nv1iN-           a - b - c - d - e - x - g -___- i - k - l\nv1aN-           a - b - c - d - e - x - g ____- i - k - l\nv1IN-           a - b - c - d - e - x - g - _ - i - k - l\nv1AN-           a - b - c - d - e - x - g ______i - k - l\nv1iL-           a - b - c -___- e - x - g - h - i - k - l\nv1aL-           a - b - c ____- e - x - g - h - i - k - l\nv1IL-           a - b - c - _ - e - x - g - h - i - k - l\nv1AL-           a - b - c ______e - x - g - h - i - k - l\nv2i-            a - b - c - d - e -___- g - h - i - k - l\nv2a-            a - b - c - d - e ____- g - h - i - k - l\nv2I-            a - b - c - d - e - _ - g - h - i - k - l\nv2A-            a - b - c - d - e ______g - h - i - k - l\nv2in-           a - b - c - d - e - x - g -___- i - k - l\nv2an-           a - b - c - d - e - x - g ____- i - k - l\nv2In-           a - b - c - d - e - x - g - _ - i - k - l\nv2An-           a - b - c - d - e - x - g ______i - k - l\nv2il-           a - b - c -___- e - x - g - h - i - k - l\nv2al-           a - b - c ____- e - x - g - h - i - k - l\nv2Il-           a - b - c - _ - e - x - g - h - i - k - l\nv2Al-           a - b - c ______e - x - g - h - i - k - l\nv2iN-           a - b - c - d - e - x - g - h - i -___- l\nv2aN-           a - b - c - d - e - x - g - h - i ____- l\nv2IN-           a - b - c - d - e - x - g - h - i - _ - l\nv2AN-           a - b - c - d - e - x - g - h - i ______l\nv2iL-           a -___- c - d - e - x - g - h - i - k - l\nv2aL-           a ____- c - d - e - x - g - h - i - k - l\nv2IL-           a - _ - c - d - e - x - g - h - i - k - l\nv2AL-           a ______c - d - e - x - g - h - i - k - l\na = b = c = d = e = x = g = h = i = k = l\nci=             a = b = c = d = e =_= g = h = i = k = l\nca=             a = b = c = d = e _= g = h = i = k = l\ncI=             a = b = c = d = e = _ = g = h = i = k = l\ncA=             a = b = c = d = e _g = h = i = k = l\ncin=            a = b = c = d = e = x =_= h = i = k = l\ncan=            a = b = c = d = e = x _= h = i = k = l\ncIn=            a = b = c = d = e = x = _ = h = i = k = l\ncAn=            a = b = c = d = e = x _h = i = k = l\ncil=            a = b = c = d =_= x = g = h = i = k = l\ncal=            a = b = c = d _= x = g = h = i = k = l\ncIl=            a = b = c = d = _ = x = g = h = i = k = l\ncAl=            a = b = c = d _x = g = h = i = k = l\nciN=            a = b = c = d = e = x = g =_= i = k = l\ncaN=            a = b = c = d = e = x = g _= i = k = l\ncIN=            a = b = c = d = e = x = g = _ = i = k = l\ncAN=            a = b = c = d = e = x = g _i = k = l\nciL=            a = b = c =_= e = x = g = h = i = k = l\ncaL=            a = b = c _= e = x = g = h = i = k = l\ncIL=            a = b = c = _ = e = x = g = h = i = k = l\ncAL=            a = b = c _e = x = g = h = i = k = l\nc1i=            a = b = c = d = e =_= g = h = i = k = l\nc1a=            a = b = c = d = e _= g = h = i = k = l\nc1I=            a = b = c = d = e = _ = g = h = i = k = l\nc1A=            a = b = c = d = e _g = h = i = k = l\nc1in=           a = b = c = d = e = x =_= h = i = k = l\nc1an=           a = b = c = d = e = x _= h = i = k = l\nc1In=           a = b = c = d = e = x = _ = h = i = k = l\nc1An=           a = b = c = d = e = x _h = i = k = l\nc1il=           a = b = c = d =_= x = g = h = i = k = l\nc1al=           a = b = c = d _= x = g = h = i = k = l\nc1Il=           a = b = c = d = _ = x = g = h = i = k = l\nc1Al=           a = b = c = d _x = g = h = i = k = l\nc1iN=           a = b = c = d = e = x = g =_= i = k = l\nc1aN=           a = b = c = d = e = x = g _= i = k = l\nc1IN=           a = b = c = d = e = x = g = _ = i = k = l\nc1AN=           a = b = c = d = e = x = g _i = k = l\nc1iL=           a = b = c =_= e = x = g = h = i = k = l\nc1aL=           a = b = c _= e = x = g = h = i = k = l\nc1IL=           a = b = c = _ = e = x = g = h = i = k = l\nc1AL=           a = b = c _e = x = g = h = i = k = l\nc2i=            a = b = c = d = e =_= g = h = i = k = l\nc2a=            a = b = c = d = e _= g = h = i = k = l\nc2I=            a = b = c = d = e = _ = g = h = i = k = l\nc2A=            a = b = c = d = e _g = h = i = k = l\nc2in=           a = b = c = d = e = x = g =_= i = k = l\nc2an=           a = b = c = d = e = x = g _= i = k = l\nc2In=           a = b = c = d = e = x = g = _ = i = k = l\nc2An=           a = b = c = d = e = x = g _i = k = l\nc2il=           a = b = c =_= e = x = g = h = i = k = l\nc2al=           a = b = c _= e = x = g = h = i = k = l\nc2Il=           a = b = c = _ = e = x = g = h = i = k = l\nc2Al=           a = b = c _e = x = g = h = i = k = l\nc2iN=           a = b = c = d = e = x = g = h = i =_= l\nc2aN=           a = b = c = d = e = x = g = h = i _= l\nc2IN=           a = b = c = d = e = x = g = h = i = _ = l\nc2AN=           a = b = c = d = e = x = g = h = i _l\nc2iL=           a =_= c = d = e = x = g = h = i = k = l\nc2aL=           a _= c = d = e = x = g = h = i = k = l\nc2IL=           a = _ = c = d = e = x = g = h = i = k = l\nc2AL=           a _c = d = e = x = g = h = i = k = l\ndi=             a = b = c = d = e == g = h = i = k = l\nda=             a = b = c = d = e = g = h = i = k = l\ndI=             a = b = c = d = e =  = g = h = i = k = l\ndA=             a = b = c = d = e g = h = i = k = l\ndin=            a = b = c = d = e = x == h = i = k = l\ndan=            a = b = c = d = e = x = h = i = k = l\ndIn=            a = b = c = d = e = x =  = h = i = k = l\ndAn=            a = b = c = d = e = x h = i = k = l\ndil=            a = b = c = d == x = g = h = i = k = l\ndal=            a = b = c = d = x = g = h = i = k = l\ndIl=            a = b = c = d =  = x = g = h = i = k = l\ndAl=            a = b = c = d x = g = h = i = k = l\ndiN=            a = b = c = d = e = x = g == i = k = l\ndaN=            a = b = c = d = e = x = g = i = k = l\ndIN=            a = b = c = d = e = x = g =  = i = k = l\ndAN=            a = b = c = d = e = x = g i = k = l\ndiL=            a = b = c == e = x = g = h = i = k = l\ndaL=            a = b = c = e = x = g = h = i = k = l\ndIL=            a = b = c =  = e = x = g = h = i = k = l\ndAL=            a = b = c e = x = g = h = i = k = l\nd1i=            a = b = c = d = e == g = h = i = k = l\nd1a=            a = b = c = d = e = g = h = i = k = l\nd1I=            a = b = c = d = e =  = g = h = i = k = l\nd1A=            a = b = c = d = e g = h = i = k = l\nd1in=           a = b = c = d = e = x == h = i = k = l\nd1an=           a = b = c = d = e = x = h = i = k = l\nd1In=           a = b = c = d = e = x =  = h = i = k = l\nd1An=           a = b = c = d = e = x h = i = k = l\nd1il=           a = b = c = d == x = g = h = i = k = l\nd1al=           a = b = c = d = x = g = h = i = k = l\nd1Il=           a = b = c = d =  = x = g = h = i = k = l\nd1Al=           a = b = c = d x = g = h = i = k = l\nd1iN=           a = b = c = d = e = x = g == i = k = l\nd1aN=           a = b = c = d = e = x = g = i = k = l\nd1IN=           a = b = c = d = e = x = g =  = i = k = l\nd1AN=           a = b = c = d = e = x = g i = k = l\nd1iL=           a = b = c == e = x = g = h = i = k = l\nd1aL=           a = b = c = e = x = g = h = i = k = l\nd1IL=           a = b = c =  = e = x = g = h = i = k = l\nd1AL=           a = b = c e = x = g = h = i = k = l\nd2i=            a = b = c = d = e == g = h = i = k = l\nd2a=            a = b = c = d = e = g = h = i = k = l\nd2I=            a = b = c = d = e =  = g = h = i = k = l\nd2A=            a = b = c = d = e g = h = i = k = l\nd2in=           a = b = c = d = e = x = g == i = k = l\nd2an=           a = b = c = d = e = x = g = i = k = l\nd2In=           a = b = c = d = e = x = g =  = i = k = l\nd2An=           a = b = c = d = e = x = g i = k = l\nd2il=           a = b = c == e = x = g = h = i = k = l\nd2al=           a = b = c = e = x = g = h = i = k = l\nd2Il=           a = b = c =  = e = x = g = h = i = k = l\nd2Al=           a = b = c e = x = g = h = i = k = l\nd2iN=           a = b = c = d = e = x = g = h = i == l\nd2aN=           a = b = c = d = e = x = g = h = i = l\nd2IN=           a = b = c = d = e = x = g = h = i =  = l\nd2AN=           a = b = c = d = e = x = g = h = i l\nd2iL=           a == c = d = e = x = g = h = i = k = l\nd2aL=           a = c = d = e = x = g = h = i = k = l\nd2IL=           a =  = c = d = e = x = g = h = i = k = l\nd2AL=           a c = d = e = x = g = h = i = k = l\nyi=             a = b = c = d = e = x = g = h = i = k = l       ' x '\nya=             a = b = c = d = e = x = g = h = i = k = l       '= x '\nyI=             a = b = c = d = e = x = g = h = i = k = l       'x'\nyA=             a = b = c = d = e = x = g = h = i = k = l       '= x = '\nyin=            a = b = c = d = e = x = g = h = i = k = l       ' g '\nyan=            a = b = c = d = e = x = g = h = i = k = l       '= g '\nyIn=            a = b = c = d = e = x = g = h = i = k = l       'g'\nyAn=            a = b = c = d = e = x = g = h = i = k = l       '= g = '\nyil=            a = b = c = d = e = x = g = h = i = k = l       ' e '\nyal=            a = b = c = d = e = x = g = h = i = k = l       '= e '\nyIl=            a = b = c = d = e = x = g = h = i = k = l       'e'\nyAl=            a = b = c = d = e = x = g = h = i = k = l       '= e = '\nyiN=            a = b = c = d = e = x = g = h = i = k = l       ' h '\nyaN=            a = b = c = d = e = x = g = h = i = k = l       '= h '\nyIN=            a = b = c = d = e = x = g = h = i = k = l       'h'\nyAN=            a = b = c = d = e = x = g = h = i = k = l       '= h = '\nyiL=            a = b = c = d = e = x = g = h = i = k = l       ' d '\nyaL=            a = b = c = d = e = x = g = h = i = k = l       '= d '\nyIL=            a = b = c = d = e = x = g = h = i = k = l       'd'\nyAL=            a = b = c = d = e = x = g = h = i = k = l       '= d = '\ny1i=            a = b = c = d = e = x = g = h = i = k = l       ' x '\ny1a=            a = b = c = d = e = x = g = h = i = k = l       '= x '\ny1I=            a = b = c = d = e = x = g = h = i = k = l       'x'\ny1A=            a = b = c = d = e = x = g = h = i = k = l       '= x = '\ny1in=           a = b = c = d = e = x = g = h = i = k = l       ' g '\ny1an=           a = b = c = d = e = x = g = h = i = k = l       '= g '\ny1In=           a = b = c = d = e = x = g = h = i = k = l       'g'\ny1An=           a = b = c = d = e = x = g = h = i = k = l       '= g = '\ny1il=           a = b = c = d = e = x = g = h = i = k = l       ' e '\ny1al=           a = b = c = d = e = x = g = h = i = k = l       '= e '\ny1Il=           a = b = c = d = e = x = g = h = i = k = l       'e'\ny1Al=           a = b = c = d = e = x = g = h = i = k = l       '= e = '\ny1iN=           a = b = c = d = e = x = g = h = i = k = l       ' h '\ny1aN=           a = b = c = d = e = x = g = h = i = k = l       '= h '\ny1IN=           a = b = c = d = e = x = g = h = i = k = l       'h'\ny1AN=           a = b = c = d = e = x = g = h = i = k = l       '= h = '\ny1iL=           a = b = c = d = e = x = g = h = i = k = l       ' d '\ny1aL=           a = b = c = d = e = x = g = h = i = k = l       '= d '\ny1IL=           a = b = c = d = e = x = g = h = i = k = l       'd'\ny1AL=           a = b = c = d = e = x = g = h = i = k = l       '= d = '\ny2i=            a = b = c = d = e = x = g = h = i = k = l       ' x '\ny2a=            a = b = c = d = e = x = g = h = i = k = l       '= x '\ny2I=            a = b = c = d = e = x = g = h = i = k = l       'x'\ny2A=            a = b = c = d = e = x = g = h = i = k = l       '= x = '\ny2in=           a = b = c = d = e = x = g = h = i = k = l       ' h '\ny2an=           a = b = c = d = e = x = g = h = i = k = l       '= h '\ny2In=           a = b = c = d = e = x = g = h = i = k = l       'h'\ny2An=           a = b = c = d = e = x = g = h = i = k = l       '= h = '\ny2il=           a = b = c = d = e = x = g = h = i = k = l       ' d '\ny2al=           a = b = c = d = e = x = g = h = i = k = l       '= d '\ny2Il=           a = b = c = d = e = x = g = h = i = k = l       'd'\ny2Al=           a = b = c = d = e = x = g = h = i = k = l       '= d = '\ny2iN=           a = b = c = d = e = x = g = h = i = k = l       ' k '\ny2aN=           a = b = c = d = e = x = g = h = i = k = l       '= k '\ny2IN=           a = b = c = d = e = x = g = h = i = k = l       'k'\ny2AN=           a = b = c = d = e = x = g = h = i = k = l       '= k = '\ny2iL=           a = b = c = d = e = x = g = h = i = k = l       ' b '\ny2aL=           a = b = c = d = e = x = g = h = i = k = l       '= b '\ny2IL=           a = b = c = d = e = x = g = h = i = k = l       'b'\ny2AL=           a = b = c = d = e = x = g = h = i = k = l       '= b = '\nvi=             a = b = c = d = e =___= g = h = i = k = l\nva=             a = b = c = d = e ____= g = h = i = k = l\nvI=             a = b = c = d = e = _ = g = h = i = k = l\nvA=             a = b = c = d = e ______g = h = i = k = l\nvin=            a = b = c = d = e = x =___= h = i = k = l\nvan=            a = b = c = d = e = x ____= h = i = k = l\nvIn=            a = b = c = d = e = x = _ = h = i = k = l\nvAn=            a = b = c = d = e = x ______h = i = k = l\nvil=            a = b = c = d =___= x = g = h = i = k = l\nval=            a = b = c = d ____= x = g = h = i = k = l\nvIl=            a = b = c = d = _ = x = g = h = i = k = l\nvAl=            a = b = c = d ______x = g = h = i = k = l\nviN=            a = b = c = d = e = x = g =___= i = k = l\nvaN=            a = b = c = d = e = x = g ____= i = k = l\nvIN=            a = b = c = d = e = x = g = _ = i = k = l\nvAN=            a = b = c = d = e = x = g ______i = k = l\nviL=            a = b = c =___= e = x = g = h = i = k = l\nvaL=            a = b = c ____= e = x = g = h = i = k = l\nvIL=            a = b = c = _ = e = x = g = h = i = k = l\nvAL=            a = b = c ______e = x = g = h = i = k = l\nv1i=            a = b = c = d = e =___= g = h = i = k = l\nv1a=            a = b = c = d = e ____= g = h = i = k = l\nv1I=            a = b = c = d = e = _ = g = h = i = k = l\nv1A=            a = b = c = d = e ______g = h = i = k = l\nv1in=           a = b = c = d = e = x =___= h = i = k = l\nv1an=           a = b = c = d = e = x ____= h = i = k = l\nv1In=           a = b = c = d = e = x = _ = h = i = k = l\nv1An=           a = b = c = d = e = x ______h = i = k = l\nv1il=           a = b = c = d =___= x = g = h = i = k = l\nv1al=           a = b = c = d ____= x = g = h = i = k = l\nv1Il=           a = b = c = d = _ = x = g = h = i = k = l\nv1Al=           a = b = c = d ______x = g = h = i = k = l\nv1iN=           a = b = c = d = e = x = g =___= i = k = l\nv1aN=           a = b = c = d = e = x = g ____= i = k = l\nv1IN=           a = b = c = d = e = x = g = _ = i = k = l\nv1AN=           a = b = c = d = e = x = g ______i = k = l\nv1iL=           a = b = c =___= e = x = g = h = i = k = l\nv1aL=           a = b = c ____= e = x = g = h = i = k = l\nv1IL=           a = b = c = _ = e = x = g = h = i = k = l\nv1AL=           a = b = c ______e = x = g = h = i = k = l\nv2i=            a = b = c = d = e =___= g = h = i = k = l\nv2a=            a = b = c = d = e ____= g = h = i = k = l\nv2I=            a = b = c = d = e = _ = g = h = i = k = l\nv2A=            a = b = c = d = e ______g = h = i = k = l\nv2in=           a = b = c = d = e = x = g =___= i = k = l\nv2an=           a = b = c = d = e = x = g ____= i = k = l\nv2In=           a = b = c = d = e = x = g = _ = i = k = l\nv2An=           a = b = c = d = e = x = g ______i = k = l\nv2il=           a = b = c =___= e = x = g = h = i = k = l\nv2al=           a = b = c ____= e = x = g = h = i = k = l\nv2Il=           a = b = c = _ = e = x = g = h = i = k = l\nv2Al=           a = b = c ______e = x = g = h = i = k = l\nv2iN=           a = b = c = d = e = x = g = h = i =___= l\nv2aN=           a = b = c = d = e = x = g = h = i ____= l\nv2IN=           a = b = c = d = e = x = g = h = i = _ = l\nv2AN=           a = b = c = d = e = x = g = h = i ______l\nv2iL=           a =___= c = d = e = x = g = h = i = k = l\nv2aL=           a ____= c = d = e = x = g = h = i = k = l\nv2IL=           a = _ = c = d = e = x = g = h = i = k = l\nv2AL=           a ______c = d = e = x = g = h = i = k = l\na ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nci~             a ~ b ~ c ~ d ~ e ~_~ g ~ h ~ i ~ k ~ l\nca~             a ~ b ~ c ~ d ~ e _~ g ~ h ~ i ~ k ~ l\ncI~             a ~ b ~ c ~ d ~ e ~ _ ~ g ~ h ~ i ~ k ~ l\ncA~             a ~ b ~ c ~ d ~ e _g ~ h ~ i ~ k ~ l\ncin~            a ~ b ~ c ~ d ~ e ~ x ~_~ h ~ i ~ k ~ l\ncan~            a ~ b ~ c ~ d ~ e ~ x _~ h ~ i ~ k ~ l\ncIn~            a ~ b ~ c ~ d ~ e ~ x ~ _ ~ h ~ i ~ k ~ l\ncAn~            a ~ b ~ c ~ d ~ e ~ x _h ~ i ~ k ~ l\ncil~            a ~ b ~ c ~ d ~_~ x ~ g ~ h ~ i ~ k ~ l\ncal~            a ~ b ~ c ~ d _~ x ~ g ~ h ~ i ~ k ~ l\ncIl~            a ~ b ~ c ~ d ~ _ ~ x ~ g ~ h ~ i ~ k ~ l\ncAl~            a ~ b ~ c ~ d _x ~ g ~ h ~ i ~ k ~ l\nciN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~_~ i ~ k ~ l\ncaN~            a ~ b ~ c ~ d ~ e ~ x ~ g _~ i ~ k ~ l\ncIN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ _ ~ i ~ k ~ l\ncAN~            a ~ b ~ c ~ d ~ e ~ x ~ g _i ~ k ~ l\nciL~            a ~ b ~ c ~_~ e ~ x ~ g ~ h ~ i ~ k ~ l\ncaL~            a ~ b ~ c _~ e ~ x ~ g ~ h ~ i ~ k ~ l\ncIL~            a ~ b ~ c ~ _ ~ e ~ x ~ g ~ h ~ i ~ k ~ l\ncAL~            a ~ b ~ c _e ~ x ~ g ~ h ~ i ~ k ~ l\nc1i~            a ~ b ~ c ~ d ~ e ~_~ g ~ h ~ i ~ k ~ l\nc1a~            a ~ b ~ c ~ d ~ e _~ g ~ h ~ i ~ k ~ l\nc1I~            a ~ b ~ c ~ d ~ e ~ _ ~ g ~ h ~ i ~ k ~ l\nc1A~            a ~ b ~ c ~ d ~ e _g ~ h ~ i ~ k ~ l\nc1in~           a ~ b ~ c ~ d ~ e ~ x ~_~ h ~ i ~ k ~ l\nc1an~           a ~ b ~ c ~ d ~ e ~ x _~ h ~ i ~ k ~ l\nc1In~           a ~ b ~ c ~ d ~ e ~ x ~ _ ~ h ~ i ~ k ~ l\nc1An~           a ~ b ~ c ~ d ~ e ~ x _h ~ i ~ k ~ l\nc1il~           a ~ b ~ c ~ d ~_~ x ~ g ~ h ~ i ~ k ~ l\nc1al~           a ~ b ~ c ~ d _~ x ~ g ~ h ~ i ~ k ~ l\nc1Il~           a ~ b ~ c ~ d ~ _ ~ x ~ g ~ h ~ i ~ k ~ l\nc1Al~           a ~ b ~ c ~ d _x ~ g ~ h ~ i ~ k ~ l\nc1iN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~_~ i ~ k ~ l\nc1aN~           a ~ b ~ c ~ d ~ e ~ x ~ g _~ i ~ k ~ l\nc1IN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ _ ~ i ~ k ~ l\nc1AN~           a ~ b ~ c ~ d ~ e ~ x ~ g _i ~ k ~ l\nc1iL~           a ~ b ~ c ~_~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc1aL~           a ~ b ~ c _~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc1IL~           a ~ b ~ c ~ _ ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc1AL~           a ~ b ~ c _e ~ x ~ g ~ h ~ i ~ k ~ l\nc2i~            a ~ b ~ c ~ d ~ e ~_~ g ~ h ~ i ~ k ~ l\nc2a~            a ~ b ~ c ~ d ~ e _~ g ~ h ~ i ~ k ~ l\nc2I~            a ~ b ~ c ~ d ~ e ~ _ ~ g ~ h ~ i ~ k ~ l\nc2A~            a ~ b ~ c ~ d ~ e _g ~ h ~ i ~ k ~ l\nc2in~           a ~ b ~ c ~ d ~ e ~ x ~ g ~_~ i ~ k ~ l\nc2an~           a ~ b ~ c ~ d ~ e ~ x ~ g _~ i ~ k ~ l\nc2In~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ _ ~ i ~ k ~ l\nc2An~           a ~ b ~ c ~ d ~ e ~ x ~ g _i ~ k ~ l\nc2il~           a ~ b ~ c ~_~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc2al~           a ~ b ~ c _~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc2Il~           a ~ b ~ c ~ _ ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc2Al~           a ~ b ~ c _e ~ x ~ g ~ h ~ i ~ k ~ l\nc2iN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~_~ l\nc2aN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i _~ l\nc2IN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ _ ~ l\nc2AN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i _l\nc2iL~           a ~_~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc2aL~           a _~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc2IL~           a ~ _ ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nc2AL~           a _c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\ndi~             a ~ b ~ c ~ d ~ e ~~ g ~ h ~ i ~ k ~ l\nda~             a ~ b ~ c ~ d ~ e ~ g ~ h ~ i ~ k ~ l\ndI~             a ~ b ~ c ~ d ~ e ~  ~ g ~ h ~ i ~ k ~ l\ndA~             a ~ b ~ c ~ d ~ e g ~ h ~ i ~ k ~ l\ndin~            a ~ b ~ c ~ d ~ e ~ x ~~ h ~ i ~ k ~ l\ndan~            a ~ b ~ c ~ d ~ e ~ x ~ h ~ i ~ k ~ l\ndIn~            a ~ b ~ c ~ d ~ e ~ x ~  ~ h ~ i ~ k ~ l\ndAn~            a ~ b ~ c ~ d ~ e ~ x h ~ i ~ k ~ l\ndil~            a ~ b ~ c ~ d ~~ x ~ g ~ h ~ i ~ k ~ l\ndal~            a ~ b ~ c ~ d ~ x ~ g ~ h ~ i ~ k ~ l\ndIl~            a ~ b ~ c ~ d ~  ~ x ~ g ~ h ~ i ~ k ~ l\ndAl~            a ~ b ~ c ~ d x ~ g ~ h ~ i ~ k ~ l\ndiN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~~ i ~ k ~ l\ndaN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ i ~ k ~ l\ndIN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~  ~ i ~ k ~ l\ndAN~            a ~ b ~ c ~ d ~ e ~ x ~ g i ~ k ~ l\ndiL~            a ~ b ~ c ~~ e ~ x ~ g ~ h ~ i ~ k ~ l\ndaL~            a ~ b ~ c ~ e ~ x ~ g ~ h ~ i ~ k ~ l\ndIL~            a ~ b ~ c ~  ~ e ~ x ~ g ~ h ~ i ~ k ~ l\ndAL~            a ~ b ~ c e ~ x ~ g ~ h ~ i ~ k ~ l\nd1i~            a ~ b ~ c ~ d ~ e ~~ g ~ h ~ i ~ k ~ l\nd1a~            a ~ b ~ c ~ d ~ e ~ g ~ h ~ i ~ k ~ l\nd1I~            a ~ b ~ c ~ d ~ e ~  ~ g ~ h ~ i ~ k ~ l\nd1A~            a ~ b ~ c ~ d ~ e g ~ h ~ i ~ k ~ l\nd1in~           a ~ b ~ c ~ d ~ e ~ x ~~ h ~ i ~ k ~ l\nd1an~           a ~ b ~ c ~ d ~ e ~ x ~ h ~ i ~ k ~ l\nd1In~           a ~ b ~ c ~ d ~ e ~ x ~  ~ h ~ i ~ k ~ l\nd1An~           a ~ b ~ c ~ d ~ e ~ x h ~ i ~ k ~ l\nd1il~           a ~ b ~ c ~ d ~~ x ~ g ~ h ~ i ~ k ~ l\nd1al~           a ~ b ~ c ~ d ~ x ~ g ~ h ~ i ~ k ~ l\nd1Il~           a ~ b ~ c ~ d ~  ~ x ~ g ~ h ~ i ~ k ~ l\nd1Al~           a ~ b ~ c ~ d x ~ g ~ h ~ i ~ k ~ l\nd1iN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~~ i ~ k ~ l\nd1aN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ i ~ k ~ l\nd1IN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~  ~ i ~ k ~ l\nd1AN~           a ~ b ~ c ~ d ~ e ~ x ~ g i ~ k ~ l\nd1iL~           a ~ b ~ c ~~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd1aL~           a ~ b ~ c ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd1IL~           a ~ b ~ c ~  ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd1AL~           a ~ b ~ c e ~ x ~ g ~ h ~ i ~ k ~ l\nd2i~            a ~ b ~ c ~ d ~ e ~~ g ~ h ~ i ~ k ~ l\nd2a~            a ~ b ~ c ~ d ~ e ~ g ~ h ~ i ~ k ~ l\nd2I~            a ~ b ~ c ~ d ~ e ~  ~ g ~ h ~ i ~ k ~ l\nd2A~            a ~ b ~ c ~ d ~ e g ~ h ~ i ~ k ~ l\nd2in~           a ~ b ~ c ~ d ~ e ~ x ~ g ~~ i ~ k ~ l\nd2an~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ i ~ k ~ l\nd2In~           a ~ b ~ c ~ d ~ e ~ x ~ g ~  ~ i ~ k ~ l\nd2An~           a ~ b ~ c ~ d ~ e ~ x ~ g i ~ k ~ l\nd2il~           a ~ b ~ c ~~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd2al~           a ~ b ~ c ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd2Il~           a ~ b ~ c ~  ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd2Al~           a ~ b ~ c e ~ x ~ g ~ h ~ i ~ k ~ l\nd2iN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~~ l\nd2aN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ l\nd2IN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~  ~ l\nd2AN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i l\nd2iL~           a ~~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd2aL~           a ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd2IL~           a ~  ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nd2AL~           a c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nyi~             a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' x '\nya~             a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ x '\nyI~             a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'x'\nyA~             a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ x ~ '\nyin~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' g '\nyan~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ g '\nyIn~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'g'\nyAn~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ g ~ '\nyil~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' e '\nyal~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ e '\nyIl~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'e'\nyAl~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ e ~ '\nyiN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' h '\nyaN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ h '\nyIN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'h'\nyAN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ h ~ '\nyiL~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' d '\nyaL~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ d '\nyIL~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'd'\nyAL~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ d ~ '\ny1i~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' x '\ny1a~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ x '\ny1I~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'x'\ny1A~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ x ~ '\ny1in~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' g '\ny1an~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ g '\ny1In~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'g'\ny1An~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ g ~ '\ny1il~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' e '\ny1al~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ e '\ny1Il~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'e'\ny1Al~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ e ~ '\ny1iN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' h '\ny1aN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ h '\ny1IN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'h'\ny1AN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ h ~ '\ny1iL~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' d '\ny1aL~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ d '\ny1IL~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'd'\ny1AL~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ d ~ '\ny2i~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' x '\ny2a~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ x '\ny2I~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'x'\ny2A~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ x ~ '\ny2in~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' h '\ny2an~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ h '\ny2In~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'h'\ny2An~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ h ~ '\ny2il~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' d '\ny2al~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ d '\ny2Il~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'd'\ny2Al~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ d ~ '\ny2iN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' k '\ny2aN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ k '\ny2IN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'k'\ny2AN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ k ~ '\ny2iL~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       ' b '\ny2aL~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ b '\ny2IL~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       'b'\ny2AL~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l       '~ b ~ '\nvi~             a ~ b ~ c ~ d ~ e ~___~ g ~ h ~ i ~ k ~ l\nva~             a ~ b ~ c ~ d ~ e ____~ g ~ h ~ i ~ k ~ l\nvI~             a ~ b ~ c ~ d ~ e ~ _ ~ g ~ h ~ i ~ k ~ l\nvA~             a ~ b ~ c ~ d ~ e ______g ~ h ~ i ~ k ~ l\nvin~            a ~ b ~ c ~ d ~ e ~ x ~___~ h ~ i ~ k ~ l\nvan~            a ~ b ~ c ~ d ~ e ~ x ____~ h ~ i ~ k ~ l\nvIn~            a ~ b ~ c ~ d ~ e ~ x ~ _ ~ h ~ i ~ k ~ l\nvAn~            a ~ b ~ c ~ d ~ e ~ x ______h ~ i ~ k ~ l\nvil~            a ~ b ~ c ~ d ~___~ x ~ g ~ h ~ i ~ k ~ l\nval~            a ~ b ~ c ~ d ____~ x ~ g ~ h ~ i ~ k ~ l\nvIl~            a ~ b ~ c ~ d ~ _ ~ x ~ g ~ h ~ i ~ k ~ l\nvAl~            a ~ b ~ c ~ d ______x ~ g ~ h ~ i ~ k ~ l\nviN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~___~ i ~ k ~ l\nvaN~            a ~ b ~ c ~ d ~ e ~ x ~ g ____~ i ~ k ~ l\nvIN~            a ~ b ~ c ~ d ~ e ~ x ~ g ~ _ ~ i ~ k ~ l\nvAN~            a ~ b ~ c ~ d ~ e ~ x ~ g ______i ~ k ~ l\nviL~            a ~ b ~ c ~___~ e ~ x ~ g ~ h ~ i ~ k ~ l\nvaL~            a ~ b ~ c ____~ e ~ x ~ g ~ h ~ i ~ k ~ l\nvIL~            a ~ b ~ c ~ _ ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nvAL~            a ~ b ~ c ______e ~ x ~ g ~ h ~ i ~ k ~ l\nv1i~            a ~ b ~ c ~ d ~ e ~___~ g ~ h ~ i ~ k ~ l\nv1a~            a ~ b ~ c ~ d ~ e ____~ g ~ h ~ i ~ k ~ l\nv1I~            a ~ b ~ c ~ d ~ e ~ _ ~ g ~ h ~ i ~ k ~ l\nv1A~            a ~ b ~ c ~ d ~ e ______g ~ h ~ i ~ k ~ l\nv1in~           a ~ b ~ c ~ d ~ e ~ x ~___~ h ~ i ~ k ~ l\nv1an~           a ~ b ~ c ~ d ~ e ~ x ____~ h ~ i ~ k ~ l\nv1In~           a ~ b ~ c ~ d ~ e ~ x ~ _ ~ h ~ i ~ k ~ l\nv1An~           a ~ b ~ c ~ d ~ e ~ x ______h ~ i ~ k ~ l\nv1il~           a ~ b ~ c ~ d ~___~ x ~ g ~ h ~ i ~ k ~ l\nv1al~           a ~ b ~ c ~ d ____~ x ~ g ~ h ~ i ~ k ~ l\nv1Il~           a ~ b ~ c ~ d ~ _ ~ x ~ g ~ h ~ i ~ k ~ l\nv1Al~           a ~ b ~ c ~ d ______x ~ g ~ h ~ i ~ k ~ l\nv1iN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~___~ i ~ k ~ l\nv1aN~           a ~ b ~ c ~ d ~ e ~ x ~ g ____~ i ~ k ~ l\nv1IN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ _ ~ i ~ k ~ l\nv1AN~           a ~ b ~ c ~ d ~ e ~ x ~ g ______i ~ k ~ l\nv1iL~           a ~ b ~ c ~___~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv1aL~           a ~ b ~ c ____~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv1IL~           a ~ b ~ c ~ _ ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv1AL~           a ~ b ~ c ______e ~ x ~ g ~ h ~ i ~ k ~ l\nv2i~            a ~ b ~ c ~ d ~ e ~___~ g ~ h ~ i ~ k ~ l\nv2a~            a ~ b ~ c ~ d ~ e ____~ g ~ h ~ i ~ k ~ l\nv2I~            a ~ b ~ c ~ d ~ e ~ _ ~ g ~ h ~ i ~ k ~ l\nv2A~            a ~ b ~ c ~ d ~ e ______g ~ h ~ i ~ k ~ l\nv2in~           a ~ b ~ c ~ d ~ e ~ x ~ g ~___~ i ~ k ~ l\nv2an~           a ~ b ~ c ~ d ~ e ~ x ~ g ____~ i ~ k ~ l\nv2In~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ _ ~ i ~ k ~ l\nv2An~           a ~ b ~ c ~ d ~ e ~ x ~ g ______i ~ k ~ l\nv2il~           a ~ b ~ c ~___~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv2al~           a ~ b ~ c ____~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv2Il~           a ~ b ~ c ~ _ ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv2Al~           a ~ b ~ c ______e ~ x ~ g ~ h ~ i ~ k ~ l\nv2iN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~___~ l\nv2aN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ____~ l\nv2IN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ _ ~ l\nv2AN~           a ~ b ~ c ~ d ~ e ~ x ~ g ~ h ~ i ______l\nv2iL~           a ~___~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv2aL~           a ____~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv2IL~           a ~ _ ~ c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\nv2AL~           a ______c ~ d ~ e ~ x ~ g ~ h ~ i ~ k ~ l\na _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l\nci_             a _ b _ c _ d _ e ___ g _ h _ i _ k _ l\nca_             a _ b _ c _ d _ e __ g _ h _ i _ k _ l\ncI_             a _ b _ c _ d _ e _ _ _ g _ h _ i _ k _ l\ncA_             a _ b _ c _ d _ e _g _ h _ i _ k _ l\ncin_            a _ b _ c _ d _ e _ x ___ h _ i _ k _ l\ncan_            a _ b _ c _ d _ e _ x __ h _ i _ k _ l\ncIn_            a _ b _ c _ d _ e _ x _ _ _ h _ i _ k _ l\ncAn_            a _ b _ c _ d _ e _ x _h _ i _ k _ l\ncil_            a _ b _ c _ d ___ x _ g _ h _ i _ k _ l\ncal_            a _ b _ c _ d __ x _ g _ h _ i _ k _ l\ncIl_            a _ b _ c _ d _ _ _ x _ g _ h _ i _ k _ l\ncAl_            a _ b _ c _ d _x _ g _ h _ i _ k _ l\nciN_            a _ b _ c _ d _ e _ x _ g ___ i _ k _ l\ncaN_            a _ b _ c _ d _ e _ x _ g __ i _ k _ l\ncIN_            a _ b _ c _ d _ e _ x _ g _ _ _ i _ k _ l\ncAN_            a _ b _ c _ d _ e _ x _ g _i _ k _ l\nciL_            a _ b _ c ___ e _ x _ g _ h _ i _ k _ l\ncaL_            a _ b _ c __ e _ x _ g _ h _ i _ k _ l\ncIL_            a _ b _ c _ _ _ e _ x _ g _ h _ i _ k _ l\ncAL_            a _ b _ c _e _ x _ g _ h _ i _ k _ l\nc1i_            a _ b _ c _ d _ e ___ g _ h _ i _ k _ l\nc1a_            a _ b _ c _ d _ e __ g _ h _ i _ k _ l\nc1I_            a _ b _ c _ d _ e _ _ _ g _ h _ i _ k _ l\nc1A_            a _ b _ c _ d _ e _g _ h _ i _ k _ l\nc1in_           a _ b _ c _ d _ e _ x ___ h _ i _ k _ l\nc1an_           a _ b _ c _ d _ e _ x __ h _ i _ k _ l\nc1In_           a _ b _ c _ d _ e _ x _ _ _ h _ i _ k _ l\nc1An_           a _ b _ c _ d _ e _ x _h _ i _ k _ l\nc1il_           a _ b _ c _ d ___ x _ g _ h _ i _ k _ l\nc1al_           a _ b _ c _ d __ x _ g _ h _ i _ k _ l\nc1Il_           a _ b _ c _ d _ _ _ x _ g _ h _ i _ k _ l\nc1Al_           a _ b _ c _ d _x _ g _ h _ i _ k _ l\nc1iN_           a _ b _ c _ d _ e _ x _ g ___ i _ k _ l\nc1aN_           a _ b _ c _ d _ e _ x _ g __ i _ k _ l\nc1IN_           a _ b _ c _ d _ e _ x _ g _ _ _ i _ k _ l\nc1AN_           a _ b _ c _ d _ e _ x _ g _i _ k _ l\nc1iL_           a _ b _ c ___ e _ x _ g _ h _ i _ k _ l\nc1aL_           a _ b _ c __ e _ x _ g _ h _ i _ k _ l\nc1IL_           a _ b _ c _ _ _ e _ x _ g _ h _ i _ k _ l\nc1AL_           a _ b _ c _e _ x _ g _ h _ i _ k _ l\nc2i_            a _ b _ c _ d _ e ___ g _ h _ i _ k _ l\nc2a_            a _ b _ c _ d _ e __ g _ h _ i _ k _ l\nc2I_            a _ b _ c _ d _ e _ _ _ g _ h _ i _ k _ l\nc2A_            a _ b _ c _ d _ e _g _ h _ i _ k _ l\nc2in_           a _ b _ c _ d _ e _ x _ g ___ i _ k _ l\nc2an_           a _ b _ c _ d _ e _ x _ g __ i _ k _ l\nc2In_           a _ b _ c _ d _ e _ x _ g _ _ _ i _ k _ l\nc2An_           a _ b _ c _ d _ e _ x _ g _i _ k _ l\nc2il_           a _ b _ c ___ e _ x _ g _ h _ i _ k _ l\nc2al_           a _ b _ c __ e _ x _ g _ h _ i _ k _ l\nc2Il_           a _ b _ c _ _ _ e _ x _ g _ h _ i _ k _ l\nc2Al_           a _ b _ c _e _ x _ g _ h _ i _ k _ l\nc2iN_           a _ b _ c _ d _ e _ x _ g _ h _ i ___ l\nc2aN_           a _ b _ c _ d _ e _ x _ g _ h _ i __ l\nc2IN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ _ _ l\nc2AN_           a _ b _ c _ d _ e _ x _ g _ h _ i _l\nc2iL_           a ___ c _ d _ e _ x _ g _ h _ i _ k _ l\nc2aL_           a __ c _ d _ e _ x _ g _ h _ i _ k _ l\nc2IL_           a _ _ _ c _ d _ e _ x _ g _ h _ i _ k _ l\nc2AL_           a _c _ d _ e _ x _ g _ h _ i _ k _ l\ndi_             a _ b _ c _ d _ e __ g _ h _ i _ k _ l\nda_             a _ b _ c _ d _ e _ g _ h _ i _ k _ l\ndI_             a _ b _ c _ d _ e _  _ g _ h _ i _ k _ l\ndA_             a _ b _ c _ d _ e g _ h _ i _ k _ l\ndin_            a _ b _ c _ d _ e _ x __ h _ i _ k _ l\ndan_            a _ b _ c _ d _ e _ x _ h _ i _ k _ l\ndIn_            a _ b _ c _ d _ e _ x _  _ h _ i _ k _ l\ndAn_            a _ b _ c _ d _ e _ x h _ i _ k _ l\ndil_            a _ b _ c _ d __ x _ g _ h _ i _ k _ l\ndal_            a _ b _ c _ d _ x _ g _ h _ i _ k _ l\ndIl_            a _ b _ c _ d _  _ x _ g _ h _ i _ k _ l\ndAl_            a _ b _ c _ d x _ g _ h _ i _ k _ l\ndiN_            a _ b _ c _ d _ e _ x _ g __ i _ k _ l\ndaN_            a _ b _ c _ d _ e _ x _ g _ i _ k _ l\ndIN_            a _ b _ c _ d _ e _ x _ g _  _ i _ k _ l\ndAN_            a _ b _ c _ d _ e _ x _ g i _ k _ l\ndiL_            a _ b _ c __ e _ x _ g _ h _ i _ k _ l\ndaL_            a _ b _ c _ e _ x _ g _ h _ i _ k _ l\ndIL_            a _ b _ c _  _ e _ x _ g _ h _ i _ k _ l\ndAL_            a _ b _ c e _ x _ g _ h _ i _ k _ l\nd1i_            a _ b _ c _ d _ e __ g _ h _ i _ k _ l\nd1a_            a _ b _ c _ d _ e _ g _ h _ i _ k _ l\nd1I_            a _ b _ c _ d _ e _  _ g _ h _ i _ k _ l\nd1A_            a _ b _ c _ d _ e g _ h _ i _ k _ l\nd1in_           a _ b _ c _ d _ e _ x __ h _ i _ k _ l\nd1an_           a _ b _ c _ d _ e _ x _ h _ i _ k _ l\nd1In_           a _ b _ c _ d _ e _ x _  _ h _ i _ k _ l\nd1An_           a _ b _ c _ d _ e _ x h _ i _ k _ l\nd1il_           a _ b _ c _ d __ x _ g _ h _ i _ k _ l\nd1al_           a _ b _ c _ d _ x _ g _ h _ i _ k _ l\nd1Il_           a _ b _ c _ d _  _ x _ g _ h _ i _ k _ l\nd1Al_           a _ b _ c _ d x _ g _ h _ i _ k _ l\nd1iN_           a _ b _ c _ d _ e _ x _ g __ i _ k _ l\nd1aN_           a _ b _ c _ d _ e _ x _ g _ i _ k _ l\nd1IN_           a _ b _ c _ d _ e _ x _ g _  _ i _ k _ l\nd1AN_           a _ b _ c _ d _ e _ x _ g i _ k _ l\nd1iL_           a _ b _ c __ e _ x _ g _ h _ i _ k _ l\nd1aL_           a _ b _ c _ e _ x _ g _ h _ i _ k _ l\nd1IL_           a _ b _ c _  _ e _ x _ g _ h _ i _ k _ l\nd1AL_           a _ b _ c e _ x _ g _ h _ i _ k _ l\nd2i_            a _ b _ c _ d _ e __ g _ h _ i _ k _ l\nd2a_            a _ b _ c _ d _ e _ g _ h _ i _ k _ l\nd2I_            a _ b _ c _ d _ e _  _ g _ h _ i _ k _ l\nd2A_            a _ b _ c _ d _ e g _ h _ i _ k _ l\nd2in_           a _ b _ c _ d _ e _ x _ g __ i _ k _ l\nd2an_           a _ b _ c _ d _ e _ x _ g _ i _ k _ l\nd2In_           a _ b _ c _ d _ e _ x _ g _  _ i _ k _ l\nd2An_           a _ b _ c _ d _ e _ x _ g i _ k _ l\nd2il_           a _ b _ c __ e _ x _ g _ h _ i _ k _ l\nd2al_           a _ b _ c _ e _ x _ g _ h _ i _ k _ l\nd2Il_           a _ b _ c _  _ e _ x _ g _ h _ i _ k _ l\nd2Al_           a _ b _ c e _ x _ g _ h _ i _ k _ l\nd2iN_           a _ b _ c _ d _ e _ x _ g _ h _ i __ l\nd2aN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ l\nd2IN_           a _ b _ c _ d _ e _ x _ g _ h _ i _  _ l\nd2AN_           a _ b _ c _ d _ e _ x _ g _ h _ i l\nd2iL_           a __ c _ d _ e _ x _ g _ h _ i _ k _ l\nd2aL_           a _ c _ d _ e _ x _ g _ h _ i _ k _ l\nd2IL_           a _  _ c _ d _ e _ x _ g _ h _ i _ k _ l\nd2AL_           a c _ d _ e _ x _ g _ h _ i _ k _ l\nyi_             a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' x '\nya_             a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ x '\nyI_             a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'x'\nyA_             a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ x _ '\nyin_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' g '\nyan_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ g '\nyIn_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'g'\nyAn_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ g _ '\nyil_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' e '\nyal_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ e '\nyIl_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'e'\nyAl_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ e _ '\nyiN_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' h '\nyaN_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ h '\nyIN_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'h'\nyAN_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ h _ '\nyiL_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' d '\nyaL_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ d '\nyIL_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'd'\nyAL_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ d _ '\ny1i_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' x '\ny1a_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ x '\ny1I_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'x'\ny1A_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ x _ '\ny1in_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' g '\ny1an_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ g '\ny1In_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'g'\ny1An_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ g _ '\ny1il_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' e '\ny1al_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ e '\ny1Il_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'e'\ny1Al_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ e _ '\ny1iN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' h '\ny1aN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ h '\ny1IN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'h'\ny1AN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ h _ '\ny1iL_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' d '\ny1aL_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ d '\ny1IL_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'd'\ny1AL_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ d _ '\ny2i_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' x '\ny2a_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ x '\ny2I_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'x'\ny2A_            a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ x _ '\ny2in_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' h '\ny2an_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ h '\ny2In_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'h'\ny2An_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ h _ '\ny2il_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' d '\ny2al_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ d '\ny2Il_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'd'\ny2Al_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ d _ '\ny2iN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' k '\ny2aN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ k '\ny2IN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'k'\ny2AN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ k _ '\ny2iL_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       ' b '\ny2aL_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ b '\ny2IL_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       'b'\ny2AL_           a _ b _ c _ d _ e _ x _ g _ h _ i _ k _ l       '_ b _ '\nvi_             a _ b _ c _ d _ e _____ g _ h _ i _ k _ l\nva_             a _ b _ c _ d _ e _____ g _ h _ i _ k _ l\nvI_             a _ b _ c _ d _ e _ _ _ g _ h _ i _ k _ l\nvA_             a _ b _ c _ d _ e ______g _ h _ i _ k _ l\nvin_            a _ b _ c _ d _ e _ x _____ h _ i _ k _ l\nvan_            a _ b _ c _ d _ e _ x _____ h _ i _ k _ l\nvIn_            a _ b _ c _ d _ e _ x _ _ _ h _ i _ k _ l\nvAn_            a _ b _ c _ d _ e _ x ______h _ i _ k _ l\nvil_            a _ b _ c _ d _____ x _ g _ h _ i _ k _ l\nval_            a _ b _ c _ d _____ x _ g _ h _ i _ k _ l\nvIl_            a _ b _ c _ d _ _ _ x _ g _ h _ i _ k _ l\nvAl_            a _ b _ c _ d ______x _ g _ h _ i _ k _ l\nviN_            a _ b _ c _ d _ e _ x _ g _____ i _ k _ l\nvaN_            a _ b _ c _ d _ e _ x _ g _____ i _ k _ l\nvIN_            a _ b _ c _ d _ e _ x _ g _ _ _ i _ k _ l\nvAN_            a _ b _ c _ d _ e _ x _ g ______i _ k _ l\nviL_            a _ b _ c _____ e _ x _ g _ h _ i _ k _ l\nvaL_            a _ b _ c _____ e _ x _ g _ h _ i _ k _ l\nvIL_            a _ b _ c _ _ _ e _ x _ g _ h _ i _ k _ l\nvAL_            a _ b _ c ______e _ x _ g _ h _ i _ k _ l\nv1i_            a _ b _ c _ d _ e _____ g _ h _ i _ k _ l\nv1a_            a _ b _ c _ d _ e _____ g _ h _ i _ k _ l\nv1I_            a _ b _ c _ d _ e _ _ _ g _ h _ i _ k _ l\nv1A_            a _ b _ c _ d _ e ______g _ h _ i _ k _ l\nv1in_           a _ b _ c _ d _ e _ x _____ h _ i _ k _ l\nv1an_           a _ b _ c _ d _ e _ x _____ h _ i _ k _ l\nv1In_           a _ b _ c _ d _ e _ x _ _ _ h _ i _ k _ l\nv1An_           a _ b _ c _ d _ e _ x ______h _ i _ k _ l\nv1il_           a _ b _ c _ d _____ x _ g _ h _ i _ k _ l\nv1al_           a _ b _ c _ d _____ x _ g _ h _ i _ k _ l\nv1Il_           a _ b _ c _ d _ _ _ x _ g _ h _ i _ k _ l\nv1Al_           a _ b _ c _ d ______x _ g _ h _ i _ k _ l\nv1iN_           a _ b _ c _ d _ e _ x _ g _____ i _ k _ l\nv1aN_           a _ b _ c _ d _ e _ x _ g _____ i _ k _ l\nv1IN_           a _ b _ c _ d _ e _ x _ g _ _ _ i _ k _ l\nv1AN_           a _ b _ c _ d _ e _ x _ g ______i _ k _ l\nv1iL_           a _ b _ c _____ e _ x _ g _ h _ i _ k _ l\nv1aL_           a _ b _ c _____ e _ x _ g _ h _ i _ k _ l\nv1IL_           a _ b _ c _ _ _ e _ x _ g _ h _ i _ k _ l\nv1AL_           a _ b _ c ______e _ x _ g _ h _ i _ k _ l\nv2i_            a _ b _ c _ d _ e _____ g _ h _ i _ k _ l\nv2a_            a _ b _ c _ d _ e _____ g _ h _ i _ k _ l\nv2I_            a _ b _ c _ d _ e _ _ _ g _ h _ i _ k _ l\nv2A_            a _ b _ c _ d _ e ______g _ h _ i _ k _ l\nv2in_           a _ b _ c _ d _ e _ x _ g _____ i _ k _ l\nv2an_           a _ b _ c _ d _ e _ x _ g _____ i _ k _ l\nv2In_           a _ b _ c _ d _ e _ x _ g _ _ _ i _ k _ l\nv2An_           a _ b _ c _ d _ e _ x _ g ______i _ k _ l\nv2il_           a _ b _ c _____ e _ x _ g _ h _ i _ k _ l\nv2al_           a _ b _ c _____ e _ x _ g _ h _ i _ k _ l\nv2Il_           a _ b _ c _ _ _ e _ x _ g _ h _ i _ k _ l\nv2Al_           a _ b _ c ______e _ x _ g _ h _ i _ k _ l\nv2iN_           a _ b _ c _ d _ e _ x _ g _ h _ i _____ l\nv2aN_           a _ b _ c _ d _ e _ x _ g _ h _ i _____ l\nv2IN_           a _ b _ c _ d _ e _ x _ g _ h _ i _ _ _ l\nv2AN_           a _ b _ c _ d _ e _ x _ g _ h _ i ______l\nv2iL_           a _____ c _ d _ e _ x _ g _ h _ i _ k _ l\nv2aL_           a _____ c _ d _ e _ x _ g _ h _ i _ k _ l\nv2IL_           a _ _ _ c _ d _ e _ x _ g _ h _ i _ k _ l\nv2AL_           a ______c _ d _ e _ x _ g _ h _ i _ k _ l\na * b * c * d * e * x * g * h * i * k * l\nci*             a * b * c * d * e *_* g * h * i * k * l\nca*             a * b * c * d * e _* g * h * i * k * l\ncI*             a * b * c * d * e * _ * g * h * i * k * l\ncA*             a * b * c * d * e _g * h * i * k * l\ncin*            a * b * c * d * e * x *_* h * i * k * l\ncan*            a * b * c * d * e * x _* h * i * k * l\ncIn*            a * b * c * d * e * x * _ * h * i * k * l\ncAn*            a * b * c * d * e * x _h * i * k * l\ncil*            a * b * c * d *_* x * g * h * i * k * l\ncal*            a * b * c * d _* x * g * h * i * k * l\ncIl*            a * b * c * d * _ * x * g * h * i * k * l\ncAl*            a * b * c * d _x * g * h * i * k * l\nciN*            a * b * c * d * e * x * g *_* i * k * l\ncaN*            a * b * c * d * e * x * g _* i * k * l\ncIN*            a * b * c * d * e * x * g * _ * i * k * l\ncAN*            a * b * c * d * e * x * g _i * k * l\nciL*            a * b * c *_* e * x * g * h * i * k * l\ncaL*            a * b * c _* e * x * g * h * i * k * l\ncIL*            a * b * c * _ * e * x * g * h * i * k * l\ncAL*            a * b * c _e * x * g * h * i * k * l\nc1i*            a * b * c * d * e *_* g * h * i * k * l\nc1a*            a * b * c * d * e _* g * h * i * k * l\nc1I*            a * b * c * d * e * _ * g * h * i * k * l\nc1A*            a * b * c * d * e _g * h * i * k * l\nc1in*           a * b * c * d * e * x *_* h * i * k * l\nc1an*           a * b * c * d * e * x _* h * i * k * l\nc1In*           a * b * c * d * e * x * _ * h * i * k * l\nc1An*           a * b * c * d * e * x _h * i * k * l\nc1il*           a * b * c * d *_* x * g * h * i * k * l\nc1al*           a * b * c * d _* x * g * h * i * k * l\nc1Il*           a * b * c * d * _ * x * g * h * i * k * l\nc1Al*           a * b * c * d _x * g * h * i * k * l\nc1iN*           a * b * c * d * e * x * g *_* i * k * l\nc1aN*           a * b * c * d * e * x * g _* i * k * l\nc1IN*           a * b * c * d * e * x * g * _ * i * k * l\nc1AN*           a * b * c * d * e * x * g _i * k * l\nc1iL*           a * b * c *_* e * x * g * h * i * k * l\nc1aL*           a * b * c _* e * x * g * h * i * k * l\nc1IL*           a * b * c * _ * e * x * g * h * i * k * l\nc1AL*           a * b * c _e * x * g * h * i * k * l\nc2i*            a * b * c * d * e *_* g * h * i * k * l\nc2a*            a * b * c * d * e _* g * h * i * k * l\nc2I*            a * b * c * d * e * _ * g * h * i * k * l\nc2A*            a * b * c * d * e _g * h * i * k * l\nc2in*           a * b * c * d * e * x * g *_* i * k * l\nc2an*           a * b * c * d * e * x * g _* i * k * l\nc2In*           a * b * c * d * e * x * g * _ * i * k * l\nc2An*           a * b * c * d * e * x * g _i * k * l\nc2il*           a * b * c *_* e * x * g * h * i * k * l\nc2al*           a * b * c _* e * x * g * h * i * k * l\nc2Il*           a * b * c * _ * e * x * g * h * i * k * l\nc2Al*           a * b * c _e * x * g * h * i * k * l\nc2iN*           a * b * c * d * e * x * g * h * i *_* l\nc2aN*           a * b * c * d * e * x * g * h * i _* l\nc2IN*           a * b * c * d * e * x * g * h * i * _ * l\nc2AN*           a * b * c * d * e * x * g * h * i _l\nc2iL*           a *_* c * d * e * x * g * h * i * k * l\nc2aL*           a _* c * d * e * x * g * h * i * k * l\nc2IL*           a * _ * c * d * e * x * g * h * i * k * l\nc2AL*           a _c * d * e * x * g * h * i * k * l\ndi*             a * b * c * d * e ** g * h * i * k * l\nda*             a * b * c * d * e * g * h * i * k * l\ndI*             a * b * c * d * e *  * g * h * i * k * l\ndA*             a * b * c * d * e g * h * i * k * l\ndin*            a * b * c * d * e * x ** h * i * k * l\ndan*            a * b * c * d * e * x * h * i * k * l\ndIn*            a * b * c * d * e * x *  * h * i * k * l\ndAn*            a * b * c * d * e * x h * i * k * l\ndil*            a * b * c * d ** x * g * h * i * k * l\ndal*            a * b * c * d * x * g * h * i * k * l\ndIl*            a * b * c * d *  * x * g * h * i * k * l\ndAl*            a * b * c * d x * g * h * i * k * l\ndiN*            a * b * c * d * e * x * g ** i * k * l\ndaN*            a * b * c * d * e * x * g * i * k * l\ndIN*            a * b * c * d * e * x * g *  * i * k * l\ndAN*            a * b * c * d * e * x * g i * k * l\ndiL*            a * b * c ** e * x * g * h * i * k * l\ndaL*            a * b * c * e * x * g * h * i * k * l\ndIL*            a * b * c *  * e * x * g * h * i * k * l\ndAL*            a * b * c e * x * g * h * i * k * l\nd1i*            a * b * c * d * e ** g * h * i * k * l\nd1a*            a * b * c * d * e * g * h * i * k * l\nd1I*            a * b * c * d * e *  * g * h * i * k * l\nd1A*            a * b * c * d * e g * h * i * k * l\nd1in*           a * b * c * d * e * x ** h * i * k * l\nd1an*           a * b * c * d * e * x * h * i * k * l\nd1In*           a * b * c * d * e * x *  * h * i * k * l\nd1An*           a * b * c * d * e * x h * i * k * l\nd1il*           a * b * c * d ** x * g * h * i * k * l\nd1al*           a * b * c * d * x * g * h * i * k * l\nd1Il*           a * b * c * d *  * x * g * h * i * k * l\nd1Al*           a * b * c * d x * g * h * i * k * l\nd1iN*           a * b * c * d * e * x * g ** i * k * l\nd1aN*           a * b * c * d * e * x * g * i * k * l\nd1IN*           a * b * c * d * e * x * g *  * i * k * l\nd1AN*           a * b * c * d * e * x * g i * k * l\nd1iL*           a * b * c ** e * x * g * h * i * k * l\nd1aL*           a * b * c * e * x * g * h * i * k * l\nd1IL*           a * b * c *  * e * x * g * h * i * k * l\nd1AL*           a * b * c e * x * g * h * i * k * l\nd2i*            a * b * c * d * e ** g * h * i * k * l\nd2a*            a * b * c * d * e * g * h * i * k * l\nd2I*            a * b * c * d * e *  * g * h * i * k * l\nd2A*            a * b * c * d * e g * h * i * k * l\nd2in*           a * b * c * d * e * x * g ** i * k * l\nd2an*           a * b * c * d * e * x * g * i * k * l\nd2In*           a * b * c * d * e * x * g *  * i * k * l\nd2An*           a * b * c * d * e * x * g i * k * l\nd2il*           a * b * c ** e * x * g * h * i * k * l\nd2al*           a * b * c * e * x * g * h * i * k * l\nd2Il*           a * b * c *  * e * x * g * h * i * k * l\nd2Al*           a * b * c e * x * g * h * i * k * l\nd2iN*           a * b * c * d * e * x * g * h * i ** l\nd2aN*           a * b * c * d * e * x * g * h * i * l\nd2IN*           a * b * c * d * e * x * g * h * i *  * l\nd2AN*           a * b * c * d * e * x * g * h * i l\nd2iL*           a ** c * d * e * x * g * h * i * k * l\nd2aL*           a * c * d * e * x * g * h * i * k * l\nd2IL*           a *  * c * d * e * x * g * h * i * k * l\nd2AL*           a c * d * e * x * g * h * i * k * l\nyi*             a * b * c * d * e * x * g * h * i * k * l       ' x '\nya*             a * b * c * d * e * x * g * h * i * k * l       '* x '\nyI*             a * b * c * d * e * x * g * h * i * k * l       'x'\nyA*             a * b * c * d * e * x * g * h * i * k * l       '* x * '\nyin*            a * b * c * d * e * x * g * h * i * k * l       ' g '\nyan*            a * b * c * d * e * x * g * h * i * k * l       '* g '\nyIn*            a * b * c * d * e * x * g * h * i * k * l       'g'\nyAn*            a * b * c * d * e * x * g * h * i * k * l       '* g * '\nyil*            a * b * c * d * e * x * g * h * i * k * l       ' e '\nyal*            a * b * c * d * e * x * g * h * i * k * l       '* e '\nyIl*            a * b * c * d * e * x * g * h * i * k * l       'e'\nyAl*            a * b * c * d * e * x * g * h * i * k * l       '* e * '\nyiN*            a * b * c * d * e * x * g * h * i * k * l       ' h '\nyaN*            a * b * c * d * e * x * g * h * i * k * l       '* h '\nyIN*            a * b * c * d * e * x * g * h * i * k * l       'h'\nyAN*            a * b * c * d * e * x * g * h * i * k * l       '* h * '\nyiL*            a * b * c * d * e * x * g * h * i * k * l       ' d '\nyaL*            a * b * c * d * e * x * g * h * i * k * l       '* d '\nyIL*            a * b * c * d * e * x * g * h * i * k * l       'd'\nyAL*            a * b * c * d * e * x * g * h * i * k * l       '* d * '\ny1i*            a * b * c * d * e * x * g * h * i * k * l       ' x '\ny1a*            a * b * c * d * e * x * g * h * i * k * l       '* x '\ny1I*            a * b * c * d * e * x * g * h * i * k * l       'x'\ny1A*            a * b * c * d * e * x * g * h * i * k * l       '* x * '\ny1in*           a * b * c * d * e * x * g * h * i * k * l       ' g '\ny1an*           a * b * c * d * e * x * g * h * i * k * l       '* g '\ny1In*           a * b * c * d * e * x * g * h * i * k * l       'g'\ny1An*           a * b * c * d * e * x * g * h * i * k * l       '* g * '\ny1il*           a * b * c * d * e * x * g * h * i * k * l       ' e '\ny1al*           a * b * c * d * e * x * g * h * i * k * l       '* e '\ny1Il*           a * b * c * d * e * x * g * h * i * k * l       'e'\ny1Al*           a * b * c * d * e * x * g * h * i * k * l       '* e * '\ny1iN*           a * b * c * d * e * x * g * h * i * k * l       ' h '\ny1aN*           a * b * c * d * e * x * g * h * i * k * l       '* h '\ny1IN*           a * b * c * d * e * x * g * h * i * k * l       'h'\ny1AN*           a * b * c * d * e * x * g * h * i * k * l       '* h * '\ny1iL*           a * b * c * d * e * x * g * h * i * k * l       ' d '\ny1aL*           a * b * c * d * e * x * g * h * i * k * l       '* d '\ny1IL*           a * b * c * d * e * x * g * h * i * k * l       'd'\ny1AL*           a * b * c * d * e * x * g * h * i * k * l       '* d * '\ny2i*            a * b * c * d * e * x * g * h * i * k * l       ' x '\ny2a*            a * b * c * d * e * x * g * h * i * k * l       '* x '\ny2I*            a * b * c * d * e * x * g * h * i * k * l       'x'\ny2A*            a * b * c * d * e * x * g * h * i * k * l       '* x * '\ny2in*           a * b * c * d * e * x * g * h * i * k * l       ' h '\ny2an*           a * b * c * d * e * x * g * h * i * k * l       '* h '\ny2In*           a * b * c * d * e * x * g * h * i * k * l       'h'\ny2An*           a * b * c * d * e * x * g * h * i * k * l       '* h * '\ny2il*           a * b * c * d * e * x * g * h * i * k * l       ' d '\ny2al*           a * b * c * d * e * x * g * h * i * k * l       '* d '\ny2Il*           a * b * c * d * e * x * g * h * i * k * l       'd'\ny2Al*           a * b * c * d * e * x * g * h * i * k * l       '* d * '\ny2iN*           a * b * c * d * e * x * g * h * i * k * l       ' k '\ny2aN*           a * b * c * d * e * x * g * h * i * k * l       '* k '\ny2IN*           a * b * c * d * e * x * g * h * i * k * l       'k'\ny2AN*           a * b * c * d * e * x * g * h * i * k * l       '* k * '\ny2iL*           a * b * c * d * e * x * g * h * i * k * l       ' b '\ny2aL*           a * b * c * d * e * x * g * h * i * k * l       '* b '\ny2IL*           a * b * c * d * e * x * g * h * i * k * l       'b'\ny2AL*           a * b * c * d * e * x * g * h * i * k * l       '* b * '\nvi*             a * b * c * d * e *___* g * h * i * k * l\nva*             a * b * c * d * e ____* g * h * i * k * l\nvI*             a * b * c * d * e * _ * g * h * i * k * l\nvA*             a * b * c * d * e ______g * h * i * k * l\nvin*            a * b * c * d * e * x *___* h * i * k * l\nvan*            a * b * c * d * e * x ____* h * i * k * l\nvIn*            a * b * c * d * e * x * _ * h * i * k * l\nvAn*            a * b * c * d * e * x ______h * i * k * l\nvil*            a * b * c * d *___* x * g * h * i * k * l\nval*            a * b * c * d ____* x * g * h * i * k * l\nvIl*            a * b * c * d * _ * x * g * h * i * k * l\nvAl*            a * b * c * d ______x * g * h * i * k * l\nviN*            a * b * c * d * e * x * g *___* i * k * l\nvaN*            a * b * c * d * e * x * g ____* i * k * l\nvIN*            a * b * c * d * e * x * g * _ * i * k * l\nvAN*            a * b * c * d * e * x * g ______i * k * l\nviL*            a * b * c *___* e * x * g * h * i * k * l\nvaL*            a * b * c ____* e * x * g * h * i * k * l\nvIL*            a * b * c * _ * e * x * g * h * i * k * l\nvAL*            a * b * c ______e * x * g * h * i * k * l\nv1i*            a * b * c * d * e *___* g * h * i * k * l\nv1a*            a * b * c * d * e ____* g * h * i * k * l\nv1I*            a * b * c * d * e * _ * g * h * i * k * l\nv1A*            a * b * c * d * e ______g * h * i * k * l\nv1in*           a * b * c * d * e * x *___* h * i * k * l\nv1an*           a * b * c * d * e * x ____* h * i * k * l\nv1In*           a * b * c * d * e * x * _ * h * i * k * l\nv1An*           a * b * c * d * e * x ______h * i * k * l\nv1il*           a * b * c * d *___* x * g * h * i * k * l\nv1al*           a * b * c * d ____* x * g * h * i * k * l\nv1Il*           a * b * c * d * _ * x * g * h * i * k * l\nv1Al*           a * b * c * d ______x * g * h * i * k * l\nv1iN*           a * b * c * d * e * x * g *___* i * k * l\nv1aN*           a * b * c * d * e * x * g ____* i * k * l\nv1IN*           a * b * c * d * e * x * g * _ * i * k * l\nv1AN*           a * b * c * d * e * x * g ______i * k * l\nv1iL*           a * b * c *___* e * x * g * h * i * k * l\nv1aL*           a * b * c ____* e * x * g * h * i * k * l\nv1IL*           a * b * c * _ * e * x * g * h * i * k * l\nv1AL*           a * b * c ______e * x * g * h * i * k * l\nv2i*            a * b * c * d * e *___* g * h * i * k * l\nv2a*            a * b * c * d * e ____* g * h * i * k * l\nv2I*            a * b * c * d * e * _ * g * h * i * k * l\nv2A*            a * b * c * d * e ______g * h * i * k * l\nv2in*           a * b * c * d * e * x * g *___* i * k * l\nv2an*           a * b * c * d * e * x * g ____* i * k * l\nv2In*           a * b * c * d * e * x * g * _ * i * k * l\nv2An*           a * b * c * d * e * x * g ______i * k * l\nv2il*           a * b * c *___* e * x * g * h * i * k * l\nv2al*           a * b * c ____* e * x * g * h * i * k * l\nv2Il*           a * b * c * _ * e * x * g * h * i * k * l\nv2Al*           a * b * c ______e * x * g * h * i * k * l\nv2iN*           a * b * c * d * e * x * g * h * i *___* l\nv2aN*           a * b * c * d * e * x * g * h * i ____* l\nv2IN*           a * b * c * d * e * x * g * h * i * _ * l\nv2AN*           a * b * c * d * e * x * g * h * i ______l\nv2iL*           a *___* c * d * e * x * g * h * i * k * l\nv2aL*           a ____* c * d * e * x * g * h * i * k * l\nv2IL*           a * _ * c * d * e * x * g * h * i * k * l\nv2AL*           a ______c * d * e * x * g * h * i * k * l\na / b / c / d / e / x / g / h / i / k / l\nci/             a / b / c / d / e /_/ g / h / i / k / l\nca/             a / b / c / d / e _/ g / h / i / k / l\ncI/             a / b / c / d / e / _ / g / h / i / k / l\ncA/             a / b / c / d / e _g / h / i / k / l\ncin/            a / b / c / d / e / x /_/ h / i / k / l\ncan/            a / b / c / d / e / x _/ h / i / k / l\ncIn/            a / b / c / d / e / x / _ / h / i / k / l\ncAn/            a / b / c / d / e / x _h / i / k / l\ncil/            a / b / c / d /_/ x / g / h / i / k / l\ncal/            a / b / c / d _/ x / g / h / i / k / l\ncIl/            a / b / c / d / _ / x / g / h / i / k / l\ncAl/            a / b / c / d _x / g / h / i / k / l\nciN/            a / b / c / d / e / x / g /_/ i / k / l\ncaN/            a / b / c / d / e / x / g _/ i / k / l\ncIN/            a / b / c / d / e / x / g / _ / i / k / l\ncAN/            a / b / c / d / e / x / g _i / k / l\nciL/            a / b / c /_/ e / x / g / h / i / k / l\ncaL/            a / b / c _/ e / x / g / h / i / k / l\ncIL/            a / b / c / _ / e / x / g / h / i / k / l\ncAL/            a / b / c _e / x / g / h / i / k / l\nc1i/            a / b / c / d / e /_/ g / h / i / k / l\nc1a/            a / b / c / d / e _/ g / h / i / k / l\nc1I/            a / b / c / d / e / _ / g / h / i / k / l\nc1A/            a / b / c / d / e _g / h / i / k / l\nc1in/           a / b / c / d / e / x /_/ h / i / k / l\nc1an/           a / b / c / d / e / x _/ h / i / k / l\nc1In/           a / b / c / d / e / x / _ / h / i / k / l\nc1An/           a / b / c / d / e / x _h / i / k / l\nc1il/           a / b / c / d /_/ x / g / h / i / k / l\nc1al/           a / b / c / d _/ x / g / h / i / k / l\nc1Il/           a / b / c / d / _ / x / g / h / i / k / l\nc1Al/           a / b / c / d _x / g / h / i / k / l\nc1iN/           a / b / c / d / e / x / g /_/ i / k / l\nc1aN/           a / b / c / d / e / x / g _/ i / k / l\nc1IN/           a / b / c / d / e / x / g / _ / i / k / l\nc1AN/           a / b / c / d / e / x / g _i / k / l\nc1iL/           a / b / c /_/ e / x / g / h / i / k / l\nc1aL/           a / b / c _/ e / x / g / h / i / k / l\nc1IL/           a / b / c / _ / e / x / g / h / i / k / l\nc1AL/           a / b / c _e / x / g / h / i / k / l\nc2i/            a / b / c / d / e /_/ g / h / i / k / l\nc2a/            a / b / c / d / e _/ g / h / i / k / l\nc2I/            a / b / c / d / e / _ / g / h / i / k / l\nc2A/            a / b / c / d / e _g / h / i / k / l\nc2in/           a / b / c / d / e / x / g /_/ i / k / l\nc2an/           a / b / c / d / e / x / g _/ i / k / l\nc2In/           a / b / c / d / e / x / g / _ / i / k / l\nc2An/           a / b / c / d / e / x / g _i / k / l\nc2il/           a / b / c /_/ e / x / g / h / i / k / l\nc2al/           a / b / c _/ e / x / g / h / i / k / l\nc2Il/           a / b / c / _ / e / x / g / h / i / k / l\nc2Al/           a / b / c _e / x / g / h / i / k / l\nc2iN/           a / b / c / d / e / x / g / h / i /_/ l\nc2aN/           a / b / c / d / e / x / g / h / i _/ l\nc2IN/           a / b / c / d / e / x / g / h / i / _ / l\nc2AN/           a / b / c / d / e / x / g / h / i _l\nc2iL/           a /_/ c / d / e / x / g / h / i / k / l\nc2aL/           a _/ c / d / e / x / g / h / i / k / l\nc2IL/           a / _ / c / d / e / x / g / h / i / k / l\nc2AL/           a _c / d / e / x / g / h / i / k / l\ndi/             a / b / c / d / e // g / h / i / k / l\nda/             a / b / c / d / e / g / h / i / k / l\ndI/             a / b / c / d / e /  / g / h / i / k / l\ndA/             a / b / c / d / e g / h / i / k / l\ndin/            a / b / c / d / e / x // h / i / k / l\ndan/            a / b / c / d / e / x / h / i / k / l\ndIn/            a / b / c / d / e / x /  / h / i / k / l\ndAn/            a / b / c / d / e / x h / i / k / l\ndil/            a / b / c / d // x / g / h / i / k / l\ndal/            a / b / c / d / x / g / h / i / k / l\ndIl/            a / b / c / d /  / x / g / h / i / k / l\ndAl/            a / b / c / d x / g / h / i / k / l\ndiN/            a / b / c / d / e / x / g // i / k / l\ndaN/            a / b / c / d / e / x / g / i / k / l\ndIN/            a / b / c / d / e / x / g /  / i / k / l\ndAN/            a / b / c / d / e / x / g i / k / l\ndiL/            a / b / c // e / x / g / h / i / k / l\ndaL/            a / b / c / e / x / g / h / i / k / l\ndIL/            a / b / c /  / e / x / g / h / i / k / l\ndAL/            a / b / c e / x / g / h / i / k / l\nd1i/            a / b / c / d / e // g / h / i / k / l\nd1a/            a / b / c / d / e / g / h / i / k / l\nd1I/            a / b / c / d / e /  / g / h / i / k / l\nd1A/            a / b / c / d / e g / h / i / k / l\nd1in/           a / b / c / d / e / x // h / i / k / l\nd1an/           a / b / c / d / e / x / h / i / k / l\nd1In/           a / b / c / d / e / x /  / h / i / k / l\nd1An/           a / b / c / d / e / x h / i / k / l\nd1il/           a / b / c / d // x / g / h / i / k / l\nd1al/           a / b / c / d / x / g / h / i / k / l\nd1Il/           a / b / c / d /  / x / g / h / i / k / l\nd1Al/           a / b / c / d x / g / h / i / k / l\nd1iN/           a / b / c / d / e / x / g // i / k / l\nd1aN/           a / b / c / d / e / x / g / i / k / l\nd1IN/           a / b / c / d / e / x / g /  / i / k / l\nd1AN/           a / b / c / d / e / x / g i / k / l\nd1iL/           a / b / c // e / x / g / h / i / k / l\nd1aL/           a / b / c / e / x / g / h / i / k / l\nd1IL/           a / b / c /  / e / x / g / h / i / k / l\nd1AL/           a / b / c e / x / g / h / i / k / l\nd2i/            a / b / c / d / e // g / h / i / k / l\nd2a/            a / b / c / d / e / g / h / i / k / l\nd2I/            a / b / c / d / e /  / g / h / i / k / l\nd2A/            a / b / c / d / e g / h / i / k / l\nd2in/           a / b / c / d / e / x / g // i / k / l\nd2an/           a / b / c / d / e / x / g / i / k / l\nd2In/           a / b / c / d / e / x / g /  / i / k / l\nd2An/           a / b / c / d / e / x / g i / k / l\nd2il/           a / b / c // e / x / g / h / i / k / l\nd2al/           a / b / c / e / x / g / h / i / k / l\nd2Il/           a / b / c /  / e / x / g / h / i / k / l\nd2Al/           a / b / c e / x / g / h / i / k / l\nd2iN/           a / b / c / d / e / x / g / h / i // l\nd2aN/           a / b / c / d / e / x / g / h / i / l\nd2IN/           a / b / c / d / e / x / g / h / i /  / l\nd2AN/           a / b / c / d / e / x / g / h / i l\nd2iL/           a // c / d / e / x / g / h / i / k / l\nd2aL/           a / c / d / e / x / g / h / i / k / l\nd2IL/           a /  / c / d / e / x / g / h / i / k / l\nd2AL/           a c / d / e / x / g / h / i / k / l\nyi/             a / b / c / d / e / x / g / h / i / k / l       ' x '\nya/             a / b / c / d / e / x / g / h / i / k / l       '/ x '\nyI/             a / b / c / d / e / x / g / h / i / k / l       'x'\nyA/             a / b / c / d / e / x / g / h / i / k / l       '/ x / '\nyin/            a / b / c / d / e / x / g / h / i / k / l       ' g '\nyan/            a / b / c / d / e / x / g / h / i / k / l       '/ g '\nyIn/            a / b / c / d / e / x / g / h / i / k / l       'g'\nyAn/            a / b / c / d / e / x / g / h / i / k / l       '/ g / '\nyil/            a / b / c / d / e / x / g / h / i / k / l       ' e '\nyal/            a / b / c / d / e / x / g / h / i / k / l       '/ e '\nyIl/            a / b / c / d / e / x / g / h / i / k / l       'e'\nyAl/            a / b / c / d / e / x / g / h / i / k / l       '/ e / '\nyiN/            a / b / c / d / e / x / g / h / i / k / l       ' h '\nyaN/            a / b / c / d / e / x / g / h / i / k / l       '/ h '\nyIN/            a / b / c / d / e / x / g / h / i / k / l       'h'\nyAN/            a / b / c / d / e / x / g / h / i / k / l       '/ h / '\nyiL/            a / b / c / d / e / x / g / h / i / k / l       ' d '\nyaL/            a / b / c / d / e / x / g / h / i / k / l       '/ d '\nyIL/            a / b / c / d / e / x / g / h / i / k / l       'd'\nyAL/            a / b / c / d / e / x / g / h / i / k / l       '/ d / '\ny1i/            a / b / c / d / e / x / g / h / i / k / l       ' x '\ny1a/            a / b / c / d / e / x / g / h / i / k / l       '/ x '\ny1I/            a / b / c / d / e / x / g / h / i / k / l       'x'\ny1A/            a / b / c / d / e / x / g / h / i / k / l       '/ x / '\ny1in/           a / b / c / d / e / x / g / h / i / k / l       ' g '\ny1an/           a / b / c / d / e / x / g / h / i / k / l       '/ g '\ny1In/           a / b / c / d / e / x / g / h / i / k / l       'g'\ny1An/           a / b / c / d / e / x / g / h / i / k / l       '/ g / '\ny1il/           a / b / c / d / e / x / g / h / i / k / l       ' e '\ny1al/           a / b / c / d / e / x / g / h / i / k / l       '/ e '\ny1Il/           a / b / c / d / e / x / g / h / i / k / l       'e'\ny1Al/           a / b / c / d / e / x / g / h / i / k / l       '/ e / '\ny1iN/           a / b / c / d / e / x / g / h / i / k / l       ' h '\ny1aN/           a / b / c / d / e / x / g / h / i / k / l       '/ h '\ny1IN/           a / b / c / d / e / x / g / h / i / k / l       'h'\ny1AN/           a / b / c / d / e / x / g / h / i / k / l       '/ h / '\ny1iL/           a / b / c / d / e / x / g / h / i / k / l       ' d '\ny1aL/           a / b / c / d / e / x / g / h / i / k / l       '/ d '\ny1IL/           a / b / c / d / e / x / g / h / i / k / l       'd'\ny1AL/           a / b / c / d / e / x / g / h / i / k / l       '/ d / '\ny2i/            a / b / c / d / e / x / g / h / i / k / l       ' x '\ny2a/            a / b / c / d / e / x / g / h / i / k / l       '/ x '\ny2I/            a / b / c / d / e / x / g / h / i / k / l       'x'\ny2A/            a / b / c / d / e / x / g / h / i / k / l       '/ x / '\ny2in/           a / b / c / d / e / x / g / h / i / k / l       ' h '\ny2an/           a / b / c / d / e / x / g / h / i / k / l       '/ h '\ny2In/           a / b / c / d / e / x / g / h / i / k / l       'h'\ny2An/           a / b / c / d / e / x / g / h / i / k / l       '/ h / '\ny2il/           a / b / c / d / e / x / g / h / i / k / l       ' d '\ny2al/           a / b / c / d / e / x / g / h / i / k / l       '/ d '\ny2Il/           a / b / c / d / e / x / g / h / i / k / l       'd'\ny2Al/           a / b / c / d / e / x / g / h / i / k / l       '/ d / '\ny2iN/           a / b / c / d / e / x / g / h / i / k / l       ' k '\ny2aN/           a / b / c / d / e / x / g / h / i / k / l       '/ k '\ny2IN/           a / b / c / d / e / x / g / h / i / k / l       'k'\ny2AN/           a / b / c / d / e / x / g / h / i / k / l       '/ k / '\ny2iL/           a / b / c / d / e / x / g / h / i / k / l       ' b '\ny2aL/           a / b / c / d / e / x / g / h / i / k / l       '/ b '\ny2IL/           a / b / c / d / e / x / g / h / i / k / l       'b'\ny2AL/           a / b / c / d / e / x / g / h / i / k / l       '/ b / '\nvi/             a / b / c / d / e /___/ g / h / i / k / l\nva/             a / b / c / d / e ____/ g / h / i / k / l\nvI/             a / b / c / d / e / _ / g / h / i / k / l\nvA/             a / b / c / d / e ______g / h / i / k / l\nvin/            a / b / c / d / e / x /___/ h / i / k / l\nvan/            a / b / c / d / e / x ____/ h / i / k / l\nvIn/            a / b / c / d / e / x / _ / h / i / k / l\nvAn/            a / b / c / d / e / x ______h / i / k / l\nvil/            a / b / c / d /___/ x / g / h / i / k / l\nval/            a / b / c / d ____/ x / g / h / i / k / l\nvIl/            a / b / c / d / _ / x / g / h / i / k / l\nvAl/            a / b / c / d ______x / g / h / i / k / l\nviN/            a / b / c / d / e / x / g /___/ i / k / l\nvaN/            a / b / c / d / e / x / g ____/ i / k / l\nvIN/            a / b / c / d / e / x / g / _ / i / k / l\nvAN/            a / b / c / d / e / x / g ______i / k / l\nviL/            a / b / c /___/ e / x / g / h / i / k / l\nvaL/            a / b / c ____/ e / x / g / h / i / k / l\nvIL/            a / b / c / _ / e / x / g / h / i / k / l\nvAL/            a / b / c ______e / x / g / h / i / k / l\nv1i/            a / b / c / d / e /___/ g / h / i / k / l\nv1a/            a / b / c / d / e ____/ g / h / i / k / l\nv1I/            a / b / c / d / e / _ / g / h / i / k / l\nv1A/            a / b / c / d / e ______g / h / i / k / l\nv1in/           a / b / c / d / e / x /___/ h / i / k / l\nv1an/           a / b / c / d / e / x ____/ h / i / k / l\nv1In/           a / b / c / d / e / x / _ / h / i / k / l\nv1An/           a / b / c / d / e / x ______h / i / k / l\nv1il/           a / b / c / d /___/ x / g / h / i / k / l\nv1al/           a / b / c / d ____/ x / g / h / i / k / l\nv1Il/           a / b / c / d / _ / x / g / h / i / k / l\nv1Al/           a / b / c / d ______x / g / h / i / k / l\nv1iN/           a / b / c / d / e / x / g /___/ i / k / l\nv1aN/           a / b / c / d / e / x / g ____/ i / k / l\nv1IN/           a / b / c / d / e / x / g / _ / i / k / l\nv1AN/           a / b / c / d / e / x / g ______i / k / l\nv1iL/           a / b / c /___/ e / x / g / h / i / k / l\nv1aL/           a / b / c ____/ e / x / g / h / i / k / l\nv1IL/           a / b / c / _ / e / x / g / h / i / k / l\nv1AL/           a / b / c ______e / x / g / h / i / k / l\nv2i/            a / b / c / d / e /___/ g / h / i / k / l\nv2a/            a / b / c / d / e ____/ g / h / i / k / l\nv2I/            a / b / c / d / e / _ / g / h / i / k / l\nv2A/            a / b / c / d / e ______g / h / i / k / l\nv2in/           a / b / c / d / e / x / g /___/ i / k / l\nv2an/           a / b / c / d / e / x / g ____/ i / k / l\nv2In/           a / b / c / d / e / x / g / _ / i / k / l\nv2An/           a / b / c / d / e / x / g ______i / k / l\nv2il/           a / b / c /___/ e / x / g / h / i / k / l\nv2al/           a / b / c ____/ e / x / g / h / i / k / l\nv2Il/           a / b / c / _ / e / x / g / h / i / k / l\nv2Al/           a / b / c ______e / x / g / h / i / k / l\nv2iN/           a / b / c / d / e / x / g / h / i /___/ l\nv2aN/           a / b / c / d / e / x / g / h / i ____/ l\nv2IN/           a / b / c / d / e / x / g / h / i / _ / l\nv2AN/           a / b / c / d / e / x / g / h / i ______l\nv2iL/           a /___/ c / d / e / x / g / h / i / k / l\nv2aL/           a ____/ c / d / e / x / g / h / i / k / l\nv2IL/           a / _ / c / d / e / x / g / h / i / k / l\nv2AL/           a ______c / d / e / x / g / h / i / k / l\na | b | c | d | e | x | g | h | i | k | l\nci|             a | b | c | d | e |_| g | h | i | k | l\nca|             a | b | c | d | e _| g | h | i | k | l\ncI|             a | b | c | d | e | _ | g | h | i | k | l\ncA|             a | b | c | d | e _g | h | i | k | l\ncin|            a | b | c | d | e | x |_| h | i | k | l\ncan|            a | b | c | d | e | x _| h | i | k | l\ncIn|            a | b | c | d | e | x | _ | h | i | k | l\ncAn|            a | b | c | d | e | x _h | i | k | l\ncil|            a | b | c | d |_| x | g | h | i | k | l\ncal|            a | b | c | d _| x | g | h | i | k | l\ncIl|            a | b | c | d | _ | x | g | h | i | k | l\ncAl|            a | b | c | d _x | g | h | i | k | l\nciN|            a | b | c | d | e | x | g |_| i | k | l\ncaN|            a | b | c | d | e | x | g _| i | k | l\ncIN|            a | b | c | d | e | x | g | _ | i | k | l\ncAN|            a | b | c | d | e | x | g _i | k | l\nciL|            a | b | c |_| e | x | g | h | i | k | l\ncaL|            a | b | c _| e | x | g | h | i | k | l\ncIL|            a | b | c | _ | e | x | g | h | i | k | l\ncAL|            a | b | c _e | x | g | h | i | k | l\nc1i|            a | b | c | d | e |_| g | h | i | k | l\nc1a|            a | b | c | d | e _| g | h | i | k | l\nc1I|            a | b | c | d | e | _ | g | h | i | k | l\nc1A|            a | b | c | d | e _g | h | i | k | l\nc1in|           a | b | c | d | e | x |_| h | i | k | l\nc1an|           a | b | c | d | e | x _| h | i | k | l\nc1In|           a | b | c | d | e | x | _ | h | i | k | l\nc1An|           a | b | c | d | e | x _h | i | k | l\nc1il|           a | b | c | d |_| x | g | h | i | k | l\nc1al|           a | b | c | d _| x | g | h | i | k | l\nc1Il|           a | b | c | d | _ | x | g | h | i | k | l\nc1Al|           a | b | c | d _x | g | h | i | k | l\nc1iN|           a | b | c | d | e | x | g |_| i | k | l\nc1aN|           a | b | c | d | e | x | g _| i | k | l\nc1IN|           a | b | c | d | e | x | g | _ | i | k | l\nc1AN|           a | b | c | d | e | x | g _i | k | l\nc1iL|           a | b | c |_| e | x | g | h | i | k | l\nc1aL|           a | b | c _| e | x | g | h | i | k | l\nc1IL|           a | b | c | _ | e | x | g | h | i | k | l\nc1AL|           a | b | c _e | x | g | h | i | k | l\nc2i|            a | b | c | d | e |_| g | h | i | k | l\nc2a|            a | b | c | d | e _| g | h | i | k | l\nc2I|            a | b | c | d | e | _ | g | h | i | k | l\nc2A|            a | b | c | d | e _g | h | i | k | l\nc2in|           a | b | c | d | e | x | g |_| i | k | l\nc2an|           a | b | c | d | e | x | g _| i | k | l\nc2In|           a | b | c | d | e | x | g | _ | i | k | l\nc2An|           a | b | c | d | e | x | g _i | k | l\nc2il|           a | b | c |_| e | x | g | h | i | k | l\nc2al|           a | b | c _| e | x | g | h | i | k | l\nc2Il|           a | b | c | _ | e | x | g | h | i | k | l\nc2Al|           a | b | c _e | x | g | h | i | k | l\nc2iN|           a | b | c | d | e | x | g | h | i |_| l\nc2aN|           a | b | c | d | e | x | g | h | i _| l\nc2IN|           a | b | c | d | e | x | g | h | i | _ | l\nc2AN|           a | b | c | d | e | x | g | h | i _l\nc2iL|           a |_| c | d | e | x | g | h | i | k | l\nc2aL|           a _| c | d | e | x | g | h | i | k | l\nc2IL|           a | _ | c | d | e | x | g | h | i | k | l\nc2AL|           a _c | d | e | x | g | h | i | k | l\ndi|             a | b | c | d | e || g | h | i | k | l\nda|             a | b | c | d | e | g | h | i | k | l\ndI|             a | b | c | d | e |  | g | h | i | k | l\ndA|             a | b | c | d | e g | h | i | k | l\ndin|            a | b | c | d | e | x || h | i | k | l\ndan|            a | b | c | d | e | x | h | i | k | l\ndIn|            a | b | c | d | e | x |  | h | i | k | l\ndAn|            a | b | c | d | e | x h | i | k | l\ndil|            a | b | c | d || x | g | h | i | k | l\ndal|            a | b | c | d | x | g | h | i | k | l\ndIl|            a | b | c | d |  | x | g | h | i | k | l\ndAl|            a | b | c | d x | g | h | i | k | l\ndiN|            a | b | c | d | e | x | g || i | k | l\ndaN|            a | b | c | d | e | x | g | i | k | l\ndIN|            a | b | c | d | e | x | g |  | i | k | l\ndAN|            a | b | c | d | e | x | g i | k | l\ndiL|            a | b | c || e | x | g | h | i | k | l\ndaL|            a | b | c | e | x | g | h | i | k | l\ndIL|            a | b | c |  | e | x | g | h | i | k | l\ndAL|            a | b | c e | x | g | h | i | k | l\nd1i|            a | b | c | d | e || g | h | i | k | l\nd1a|            a | b | c | d | e | g | h | i | k | l\nd1I|            a | b | c | d | e |  | g | h | i | k | l\nd1A|            a | b | c | d | e g | h | i | k | l\nd1in|           a | b | c | d | e | x || h | i | k | l\nd1an|           a | b | c | d | e | x | h | i | k | l\nd1In|           a | b | c | d | e | x |  | h | i | k | l\nd1An|           a | b | c | d | e | x h | i | k | l\nd1il|           a | b | c | d || x | g | h | i | k | l\nd1al|           a | b | c | d | x | g | h | i | k | l\nd1Il|           a | b | c | d |  | x | g | h | i | k | l\nd1Al|           a | b | c | d x | g | h | i | k | l\nd1iN|           a | b | c | d | e | x | g || i | k | l\nd1aN|           a | b | c | d | e | x | g | i | k | l\nd1IN|           a | b | c | d | e | x | g |  | i | k | l\nd1AN|           a | b | c | d | e | x | g i | k | l\nd1iL|           a | b | c || e | x | g | h | i | k | l\nd1aL|           a | b | c | e | x | g | h | i | k | l\nd1IL|           a | b | c |  | e | x | g | h | i | k | l\nd1AL|           a | b | c e | x | g | h | i | k | l\nd2i|            a | b | c | d | e || g | h | i | k | l\nd2a|            a | b | c | d | e | g | h | i | k | l\nd2I|            a | b | c | d | e |  | g | h | i | k | l\nd2A|            a | b | c | d | e g | h | i | k | l\nd2in|           a | b | c | d | e | x | g || i | k | l\nd2an|           a | b | c | d | e | x | g | i | k | l\nd2In|           a | b | c | d | e | x | g |  | i | k | l\nd2An|           a | b | c | d | e | x | g i | k | l\nd2il|           a | b | c || e | x | g | h | i | k | l\nd2al|           a | b | c | e | x | g | h | i | k | l\nd2Il|           a | b | c |  | e | x | g | h | i | k | l\nd2Al|           a | b | c e | x | g | h | i | k | l\nd2iN|           a | b | c | d | e | x | g | h | i || l\nd2aN|           a | b | c | d | e | x | g | h | i | l\nd2IN|           a | b | c | d | e | x | g | h | i |  | l\nd2AN|           a | b | c | d | e | x | g | h | i l\nd2iL|           a || c | d | e | x | g | h | i | k | l\nd2aL|           a | c | d | e | x | g | h | i | k | l\nd2IL|           a |  | c | d | e | x | g | h | i | k | l\nd2AL|           a c | d | e | x | g | h | i | k | l\nyi|             a | b | c | d | e | x | g | h | i | k | l       ' x '\nya|             a | b | c | d | e | x | g | h | i | k | l       '| x '\nyI|             a | b | c | d | e | x | g | h | i | k | l       'x'\nyA|             a | b | c | d | e | x | g | h | i | k | l       '| x | '\nyin|            a | b | c | d | e | x | g | h | i | k | l       ' g '\nyan|            a | b | c | d | e | x | g | h | i | k | l       '| g '\nyIn|            a | b | c | d | e | x | g | h | i | k | l       'g'\nyAn|            a | b | c | d | e | x | g | h | i | k | l       '| g | '\nyil|            a | b | c | d | e | x | g | h | i | k | l       ' e '\nyal|            a | b | c | d | e | x | g | h | i | k | l       '| e '\nyIl|            a | b | c | d | e | x | g | h | i | k | l       'e'\nyAl|            a | b | c | d | e | x | g | h | i | k | l       '| e | '\nyiN|            a | b | c | d | e | x | g | h | i | k | l       ' h '\nyaN|            a | b | c | d | e | x | g | h | i | k | l       '| h '\nyIN|            a | b | c | d | e | x | g | h | i | k | l       'h'\nyAN|            a | b | c | d | e | x | g | h | i | k | l       '| h | '\nyiL|            a | b | c | d | e | x | g | h | i | k | l       ' d '\nyaL|            a | b | c | d | e | x | g | h | i | k | l       '| d '\nyIL|            a | b | c | d | e | x | g | h | i | k | l       'd'\nyAL|            a | b | c | d | e | x | g | h | i | k | l       '| d | '\ny1i|            a | b | c | d | e | x | g | h | i | k | l       ' x '\ny1a|            a | b | c | d | e | x | g | h | i | k | l       '| x '\ny1I|            a | b | c | d | e | x | g | h | i | k | l       'x'\ny1A|            a | b | c | d | e | x | g | h | i | k | l       '| x | '\ny1in|           a | b | c | d | e | x | g | h | i | k | l       ' g '\ny1an|           a | b | c | d | e | x | g | h | i | k | l       '| g '\ny1In|           a | b | c | d | e | x | g | h | i | k | l       'g'\ny1An|           a | b | c | d | e | x | g | h | i | k | l       '| g | '\ny1il|           a | b | c | d | e | x | g | h | i | k | l       ' e '\ny1al|           a | b | c | d | e | x | g | h | i | k | l       '| e '\ny1Il|           a | b | c | d | e | x | g | h | i | k | l       'e'\ny1Al|           a | b | c | d | e | x | g | h | i | k | l       '| e | '\ny1iN|           a | b | c | d | e | x | g | h | i | k | l       ' h '\ny1aN|           a | b | c | d | e | x | g | h | i | k | l       '| h '\ny1IN|           a | b | c | d | e | x | g | h | i | k | l       'h'\ny1AN|           a | b | c | d | e | x | g | h | i | k | l       '| h | '\ny1iL|           a | b | c | d | e | x | g | h | i | k | l       ' d '\ny1aL|           a | b | c | d | e | x | g | h | i | k | l       '| d '\ny1IL|           a | b | c | d | e | x | g | h | i | k | l       'd'\ny1AL|           a | b | c | d | e | x | g | h | i | k | l       '| d | '\ny2i|            a | b | c | d | e | x | g | h | i | k | l       ' x '\ny2a|            a | b | c | d | e | x | g | h | i | k | l       '| x '\ny2I|            a | b | c | d | e | x | g | h | i | k | l       'x'\ny2A|            a | b | c | d | e | x | g | h | i | k | l       '| x | '\ny2in|           a | b | c | d | e | x | g | h | i | k | l       ' h '\ny2an|           a | b | c | d | e | x | g | h | i | k | l       '| h '\ny2In|           a | b | c | d | e | x | g | h | i | k | l       'h'\ny2An|           a | b | c | d | e | x | g | h | i | k | l       '| h | '\ny2il|           a | b | c | d | e | x | g | h | i | k | l       ' d '\ny2al|           a | b | c | d | e | x | g | h | i | k | l       '| d '\ny2Il|           a | b | c | d | e | x | g | h | i | k | l       'd'\ny2Al|           a | b | c | d | e | x | g | h | i | k | l       '| d | '\ny2iN|           a | b | c | d | e | x | g | h | i | k | l       ' k '\ny2aN|           a | b | c | d | e | x | g | h | i | k | l       '| k '\ny2IN|           a | b | c | d | e | x | g | h | i | k | l       'k'\ny2AN|           a | b | c | d | e | x | g | h | i | k | l       '| k | '\ny2iL|           a | b | c | d | e | x | g | h | i | k | l       ' b '\ny2aL|           a | b | c | d | e | x | g | h | i | k | l       '| b '\ny2IL|           a | b | c | d | e | x | g | h | i | k | l       'b'\ny2AL|           a | b | c | d | e | x | g | h | i | k | l       '| b | '\nvi|             a | b | c | d | e |___| g | h | i | k | l\nva|             a | b | c | d | e ____| g | h | i | k | l\nvI|             a | b | c | d | e | _ | g | h | i | k | l\nvA|             a | b | c | d | e ______g | h | i | k | l\nvin|            a | b | c | d | e | x |___| h | i | k | l\nvan|            a | b | c | d | e | x ____| h | i | k | l\nvIn|            a | b | c | d | e | x | _ | h | i | k | l\nvAn|            a | b | c | d | e | x ______h | i | k | l\nvil|            a | b | c | d |___| x | g | h | i | k | l\nval|            a | b | c | d ____| x | g | h | i | k | l\nvIl|            a | b | c | d | _ | x | g | h | i | k | l\nvAl|            a | b | c | d ______x | g | h | i | k | l\nviN|            a | b | c | d | e | x | g |___| i | k | l\nvaN|            a | b | c | d | e | x | g ____| i | k | l\nvIN|            a | b | c | d | e | x | g | _ | i | k | l\nvAN|            a | b | c | d | e | x | g ______i | k | l\nviL|            a | b | c |___| e | x | g | h | i | k | l\nvaL|            a | b | c ____| e | x | g | h | i | k | l\nvIL|            a | b | c | _ | e | x | g | h | i | k | l\nvAL|            a | b | c ______e | x | g | h | i | k | l\nv1i|            a | b | c | d | e |___| g | h | i | k | l\nv1a|            a | b | c | d | e ____| g | h | i | k | l\nv1I|            a | b | c | d | e | _ | g | h | i | k | l\nv1A|            a | b | c | d | e ______g | h | i | k | l\nv1in|           a | b | c | d | e | x |___| h | i | k | l\nv1an|           a | b | c | d | e | x ____| h | i | k | l\nv1In|           a | b | c | d | e | x | _ | h | i | k | l\nv1An|           a | b | c | d | e | x ______h | i | k | l\nv1il|           a | b | c | d |___| x | g | h | i | k | l\nv1al|           a | b | c | d ____| x | g | h | i | k | l\nv1Il|           a | b | c | d | _ | x | g | h | i | k | l\nv1Al|           a | b | c | d ______x | g | h | i | k | l\nv1iN|           a | b | c | d | e | x | g |___| i | k | l\nv1aN|           a | b | c | d | e | x | g ____| i | k | l\nv1IN|           a | b | c | d | e | x | g | _ | i | k | l\nv1AN|           a | b | c | d | e | x | g ______i | k | l\nv1iL|           a | b | c |___| e | x | g | h | i | k | l\nv1aL|           a | b | c ____| e | x | g | h | i | k | l\nv1IL|           a | b | c | _ | e | x | g | h | i | k | l\nv1AL|           a | b | c ______e | x | g | h | i | k | l\nv2i|            a | b | c | d | e |___| g | h | i | k | l\nv2a|            a | b | c | d | e ____| g | h | i | k | l\nv2I|            a | b | c | d | e | _ | g | h | i | k | l\nv2A|            a | b | c | d | e ______g | h | i | k | l\nv2in|           a | b | c | d | e | x | g |___| i | k | l\nv2an|           a | b | c | d | e | x | g ____| i | k | l\nv2In|           a | b | c | d | e | x | g | _ | i | k | l\nv2An|           a | b | c | d | e | x | g ______i | k | l\nv2il|           a | b | c |___| e | x | g | h | i | k | l\nv2al|           a | b | c ____| e | x | g | h | i | k | l\nv2Il|           a | b | c | _ | e | x | g | h | i | k | l\nv2Al|           a | b | c ______e | x | g | h | i | k | l\nv2iN|           a | b | c | d | e | x | g | h | i |___| l\nv2aN|           a | b | c | d | e | x | g | h | i ____| l\nv2IN|           a | b | c | d | e | x | g | h | i | _ | l\nv2AN|           a | b | c | d | e | x | g | h | i ______l\nv2iL|           a |___| c | d | e | x | g | h | i | k | l\nv2aL|           a ____| c | d | e | x | g | h | i | k | l\nv2IL|           a | _ | c | d | e | x | g | h | i | k | l\nv2AL|           a ______c | d | e | x | g | h | i | k | l\na \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nci\\             a \\ b \\ c \\ d \\ e \\_\\ g \\ h \\ i \\ k \\ l\nca\\             a \\ b \\ c \\ d \\ e _\\ g \\ h \\ i \\ k \\ l\ncI\\             a \\ b \\ c \\ d \\ e \\ _ \\ g \\ h \\ i \\ k \\ l\ncA\\             a \\ b \\ c \\ d \\ e _g \\ h \\ i \\ k \\ l\ncin\\            a \\ b \\ c \\ d \\ e \\ x \\_\\ h \\ i \\ k \\ l\ncan\\            a \\ b \\ c \\ d \\ e \\ x _\\ h \\ i \\ k \\ l\ncIn\\            a \\ b \\ c \\ d \\ e \\ x \\ _ \\ h \\ i \\ k \\ l\ncAn\\            a \\ b \\ c \\ d \\ e \\ x _h \\ i \\ k \\ l\ncil\\            a \\ b \\ c \\ d \\_\\ x \\ g \\ h \\ i \\ k \\ l\ncal\\            a \\ b \\ c \\ d _\\ x \\ g \\ h \\ i \\ k \\ l\ncIl\\            a \\ b \\ c \\ d \\ _ \\ x \\ g \\ h \\ i \\ k \\ l\ncAl\\            a \\ b \\ c \\ d _x \\ g \\ h \\ i \\ k \\ l\nciN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\_\\ i \\ k \\ l\ncaN\\            a \\ b \\ c \\ d \\ e \\ x \\ g _\\ i \\ k \\ l\ncIN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ _ \\ i \\ k \\ l\ncAN\\            a \\ b \\ c \\ d \\ e \\ x \\ g _i \\ k \\ l\nciL\\            a \\ b \\ c \\_\\ e \\ x \\ g \\ h \\ i \\ k \\ l\ncaL\\            a \\ b \\ c _\\ e \\ x \\ g \\ h \\ i \\ k \\ l\ncIL\\            a \\ b \\ c \\ _ \\ e \\ x \\ g \\ h \\ i \\ k \\ l\ncAL\\            a \\ b \\ c _e \\ x \\ g \\ h \\ i \\ k \\ l\nc1i\\            a \\ b \\ c \\ d \\ e \\_\\ g \\ h \\ i \\ k \\ l\nc1a\\            a \\ b \\ c \\ d \\ e _\\ g \\ h \\ i \\ k \\ l\nc1I\\            a \\ b \\ c \\ d \\ e \\ _ \\ g \\ h \\ i \\ k \\ l\nc1A\\            a \\ b \\ c \\ d \\ e _g \\ h \\ i \\ k \\ l\nc1in\\           a \\ b \\ c \\ d \\ e \\ x \\_\\ h \\ i \\ k \\ l\nc1an\\           a \\ b \\ c \\ d \\ e \\ x _\\ h \\ i \\ k \\ l\nc1In\\           a \\ b \\ c \\ d \\ e \\ x \\ _ \\ h \\ i \\ k \\ l\nc1An\\           a \\ b \\ c \\ d \\ e \\ x _h \\ i \\ k \\ l\nc1il\\           a \\ b \\ c \\ d \\_\\ x \\ g \\ h \\ i \\ k \\ l\nc1al\\           a \\ b \\ c \\ d _\\ x \\ g \\ h \\ i \\ k \\ l\nc1Il\\           a \\ b \\ c \\ d \\ _ \\ x \\ g \\ h \\ i \\ k \\ l\nc1Al\\           a \\ b \\ c \\ d _x \\ g \\ h \\ i \\ k \\ l\nc1iN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\_\\ i \\ k \\ l\nc1aN\\           a \\ b \\ c \\ d \\ e \\ x \\ g _\\ i \\ k \\ l\nc1IN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ _ \\ i \\ k \\ l\nc1AN\\           a \\ b \\ c \\ d \\ e \\ x \\ g _i \\ k \\ l\nc1iL\\           a \\ b \\ c \\_\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc1aL\\           a \\ b \\ c _\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc1IL\\           a \\ b \\ c \\ _ \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc1AL\\           a \\ b \\ c _e \\ x \\ g \\ h \\ i \\ k \\ l\nc2i\\            a \\ b \\ c \\ d \\ e \\_\\ g \\ h \\ i \\ k \\ l\nc2a\\            a \\ b \\ c \\ d \\ e _\\ g \\ h \\ i \\ k \\ l\nc2I\\            a \\ b \\ c \\ d \\ e \\ _ \\ g \\ h \\ i \\ k \\ l\nc2A\\            a \\ b \\ c \\ d \\ e _g \\ h \\ i \\ k \\ l\nc2in\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\_\\ i \\ k \\ l\nc2an\\           a \\ b \\ c \\ d \\ e \\ x \\ g _\\ i \\ k \\ l\nc2In\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ _ \\ i \\ k \\ l\nc2An\\           a \\ b \\ c \\ d \\ e \\ x \\ g _i \\ k \\ l\nc2il\\           a \\ b \\ c \\_\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc2al\\           a \\ b \\ c _\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc2Il\\           a \\ b \\ c \\ _ \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc2Al\\           a \\ b \\ c _e \\ x \\ g \\ h \\ i \\ k \\ l\nc2iN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\_\\ l\nc2aN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i _\\ l\nc2IN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ _ \\ l\nc2AN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i _l\nc2iL\\           a \\_\\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc2aL\\           a _\\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc2IL\\           a \\ _ \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nc2AL\\           a _c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\ndi\\             a \\ b \\ c \\ d \\ e \\\\ g \\ h \\ i \\ k \\ l\nda\\             a \\ b \\ c \\ d \\ e \\ g \\ h \\ i \\ k \\ l\ndI\\             a \\ b \\ c \\ d \\ e \\  \\ g \\ h \\ i \\ k \\ l\ndA\\             a \\ b \\ c \\ d \\ e g \\ h \\ i \\ k \\ l\ndin\\            a \\ b \\ c \\ d \\ e \\ x \\\\ h \\ i \\ k \\ l\ndan\\            a \\ b \\ c \\ d \\ e \\ x \\ h \\ i \\ k \\ l\ndIn\\            a \\ b \\ c \\ d \\ e \\ x \\  \\ h \\ i \\ k \\ l\ndAn\\            a \\ b \\ c \\ d \\ e \\ x h \\ i \\ k \\ l\ndil\\            a \\ b \\ c \\ d \\\\ x \\ g \\ h \\ i \\ k \\ l\ndal\\            a \\ b \\ c \\ d \\ x \\ g \\ h \\ i \\ k \\ l\ndIl\\            a \\ b \\ c \\ d \\  \\ x \\ g \\ h \\ i \\ k \\ l\ndAl\\            a \\ b \\ c \\ d x \\ g \\ h \\ i \\ k \\ l\ndiN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\\\ i \\ k \\ l\ndaN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ i \\ k \\ l\ndIN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\  \\ i \\ k \\ l\ndAN\\            a \\ b \\ c \\ d \\ e \\ x \\ g i \\ k \\ l\ndiL\\            a \\ b \\ c \\\\ e \\ x \\ g \\ h \\ i \\ k \\ l\ndaL\\            a \\ b \\ c \\ e \\ x \\ g \\ h \\ i \\ k \\ l\ndIL\\            a \\ b \\ c \\  \\ e \\ x \\ g \\ h \\ i \\ k \\ l\ndAL\\            a \\ b \\ c e \\ x \\ g \\ h \\ i \\ k \\ l\nd1i\\            a \\ b \\ c \\ d \\ e \\\\ g \\ h \\ i \\ k \\ l\nd1a\\            a \\ b \\ c \\ d \\ e \\ g \\ h \\ i \\ k \\ l\nd1I\\            a \\ b \\ c \\ d \\ e \\  \\ g \\ h \\ i \\ k \\ l\nd1A\\            a \\ b \\ c \\ d \\ e g \\ h \\ i \\ k \\ l\nd1in\\           a \\ b \\ c \\ d \\ e \\ x \\\\ h \\ i \\ k \\ l\nd1an\\           a \\ b \\ c \\ d \\ e \\ x \\ h \\ i \\ k \\ l\nd1In\\           a \\ b \\ c \\ d \\ e \\ x \\  \\ h \\ i \\ k \\ l\nd1An\\           a \\ b \\ c \\ d \\ e \\ x h \\ i \\ k \\ l\nd1il\\           a \\ b \\ c \\ d \\\\ x \\ g \\ h \\ i \\ k \\ l\nd1al\\           a \\ b \\ c \\ d \\ x \\ g \\ h \\ i \\ k \\ l\nd1Il\\           a \\ b \\ c \\ d \\  \\ x \\ g \\ h \\ i \\ k \\ l\nd1Al\\           a \\ b \\ c \\ d x \\ g \\ h \\ i \\ k \\ l\nd1iN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\\\ i \\ k \\ l\nd1aN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ i \\ k \\ l\nd1IN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\  \\ i \\ k \\ l\nd1AN\\           a \\ b \\ c \\ d \\ e \\ x \\ g i \\ k \\ l\nd1iL\\           a \\ b \\ c \\\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd1aL\\           a \\ b \\ c \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd1IL\\           a \\ b \\ c \\  \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd1AL\\           a \\ b \\ c e \\ x \\ g \\ h \\ i \\ k \\ l\nd2i\\            a \\ b \\ c \\ d \\ e \\\\ g \\ h \\ i \\ k \\ l\nd2a\\            a \\ b \\ c \\ d \\ e \\ g \\ h \\ i \\ k \\ l\nd2I\\            a \\ b \\ c \\ d \\ e \\  \\ g \\ h \\ i \\ k \\ l\nd2A\\            a \\ b \\ c \\ d \\ e g \\ h \\ i \\ k \\ l\nd2in\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\\\ i \\ k \\ l\nd2an\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ i \\ k \\ l\nd2In\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\  \\ i \\ k \\ l\nd2An\\           a \\ b \\ c \\ d \\ e \\ x \\ g i \\ k \\ l\nd2il\\           a \\ b \\ c \\\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd2al\\           a \\ b \\ c \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd2Il\\           a \\ b \\ c \\  \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd2Al\\           a \\ b \\ c e \\ x \\ g \\ h \\ i \\ k \\ l\nd2iN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\\\ l\nd2aN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ l\nd2IN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\  \\ l\nd2AN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i l\nd2iL\\           a \\\\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd2aL\\           a \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd2IL\\           a \\  \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nd2AL\\           a c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nyi\\             a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' x '\nya\\             a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ x '\nyI\\             a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'x'\nyA\\             a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ x \\ '\nyin\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' g '\nyan\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ g '\nyIn\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'g'\nyAn\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ g \\ '\nyil\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' e '\nyal\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ e '\nyIl\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'e'\nyAl\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ e \\ '\nyiN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' h '\nyaN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ h '\nyIN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'h'\nyAN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ h \\ '\nyiL\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' d '\nyaL\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ d '\nyIL\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'd'\nyAL\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ d \\ '\ny1i\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' x '\ny1a\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ x '\ny1I\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'x'\ny1A\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ x \\ '\ny1in\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' g '\ny1an\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ g '\ny1In\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'g'\ny1An\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ g \\ '\ny1il\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' e '\ny1al\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ e '\ny1Il\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'e'\ny1Al\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ e \\ '\ny1iN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' h '\ny1aN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ h '\ny1IN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'h'\ny1AN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ h \\ '\ny1iL\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' d '\ny1aL\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ d '\ny1IL\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'd'\ny1AL\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ d \\ '\ny2i\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' x '\ny2a\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ x '\ny2I\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'x'\ny2A\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ x \\ '\ny2in\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' h '\ny2an\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ h '\ny2In\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'h'\ny2An\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ h \\ '\ny2il\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' d '\ny2al\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ d '\ny2Il\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'd'\ny2Al\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ d \\ '\ny2iN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' k '\ny2aN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ k '\ny2IN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'k'\ny2AN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ k \\ '\ny2iL\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       ' b '\ny2aL\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ b '\ny2IL\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       'b'\ny2AL\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l       '\\ b \\ '\nvi\\             a \\ b \\ c \\ d \\ e \\___\\ g \\ h \\ i \\ k \\ l\nva\\             a \\ b \\ c \\ d \\ e ____\\ g \\ h \\ i \\ k \\ l\nvI\\             a \\ b \\ c \\ d \\ e \\ _ \\ g \\ h \\ i \\ k \\ l\nvA\\             a \\ b \\ c \\ d \\ e ______g \\ h \\ i \\ k \\ l\nvin\\            a \\ b \\ c \\ d \\ e \\ x \\___\\ h \\ i \\ k \\ l\nvan\\            a \\ b \\ c \\ d \\ e \\ x ____\\ h \\ i \\ k \\ l\nvIn\\            a \\ b \\ c \\ d \\ e \\ x \\ _ \\ h \\ i \\ k \\ l\nvAn\\            a \\ b \\ c \\ d \\ e \\ x ______h \\ i \\ k \\ l\nvil\\            a \\ b \\ c \\ d \\___\\ x \\ g \\ h \\ i \\ k \\ l\nval\\            a \\ b \\ c \\ d ____\\ x \\ g \\ h \\ i \\ k \\ l\nvIl\\            a \\ b \\ c \\ d \\ _ \\ x \\ g \\ h \\ i \\ k \\ l\nvAl\\            a \\ b \\ c \\ d ______x \\ g \\ h \\ i \\ k \\ l\nviN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\___\\ i \\ k \\ l\nvaN\\            a \\ b \\ c \\ d \\ e \\ x \\ g ____\\ i \\ k \\ l\nvIN\\            a \\ b \\ c \\ d \\ e \\ x \\ g \\ _ \\ i \\ k \\ l\nvAN\\            a \\ b \\ c \\ d \\ e \\ x \\ g ______i \\ k \\ l\nviL\\            a \\ b \\ c \\___\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nvaL\\            a \\ b \\ c ____\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nvIL\\            a \\ b \\ c \\ _ \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nvAL\\            a \\ b \\ c ______e \\ x \\ g \\ h \\ i \\ k \\ l\nv1i\\            a \\ b \\ c \\ d \\ e \\___\\ g \\ h \\ i \\ k \\ l\nv1a\\            a \\ b \\ c \\ d \\ e ____\\ g \\ h \\ i \\ k \\ l\nv1I\\            a \\ b \\ c \\ d \\ e \\ _ \\ g \\ h \\ i \\ k \\ l\nv1A\\            a \\ b \\ c \\ d \\ e ______g \\ h \\ i \\ k \\ l\nv1in\\           a \\ b \\ c \\ d \\ e \\ x \\___\\ h \\ i \\ k \\ l\nv1an\\           a \\ b \\ c \\ d \\ e \\ x ____\\ h \\ i \\ k \\ l\nv1In\\           a \\ b \\ c \\ d \\ e \\ x \\ _ \\ h \\ i \\ k \\ l\nv1An\\           a \\ b \\ c \\ d \\ e \\ x ______h \\ i \\ k \\ l\nv1il\\           a \\ b \\ c \\ d \\___\\ x \\ g \\ h \\ i \\ k \\ l\nv1al\\           a \\ b \\ c \\ d ____\\ x \\ g \\ h \\ i \\ k \\ l\nv1Il\\           a \\ b \\ c \\ d \\ _ \\ x \\ g \\ h \\ i \\ k \\ l\nv1Al\\           a \\ b \\ c \\ d ______x \\ g \\ h \\ i \\ k \\ l\nv1iN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\___\\ i \\ k \\ l\nv1aN\\           a \\ b \\ c \\ d \\ e \\ x \\ g ____\\ i \\ k \\ l\nv1IN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ _ \\ i \\ k \\ l\nv1AN\\           a \\ b \\ c \\ d \\ e \\ x \\ g ______i \\ k \\ l\nv1iL\\           a \\ b \\ c \\___\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv1aL\\           a \\ b \\ c ____\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv1IL\\           a \\ b \\ c \\ _ \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv1AL\\           a \\ b \\ c ______e \\ x \\ g \\ h \\ i \\ k \\ l\nv2i\\            a \\ b \\ c \\ d \\ e \\___\\ g \\ h \\ i \\ k \\ l\nv2a\\            a \\ b \\ c \\ d \\ e ____\\ g \\ h \\ i \\ k \\ l\nv2I\\            a \\ b \\ c \\ d \\ e \\ _ \\ g \\ h \\ i \\ k \\ l\nv2A\\            a \\ b \\ c \\ d \\ e ______g \\ h \\ i \\ k \\ l\nv2in\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\___\\ i \\ k \\ l\nv2an\\           a \\ b \\ c \\ d \\ e \\ x \\ g ____\\ i \\ k \\ l\nv2In\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ _ \\ i \\ k \\ l\nv2An\\           a \\ b \\ c \\ d \\ e \\ x \\ g ______i \\ k \\ l\nv2il\\           a \\ b \\ c \\___\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv2al\\           a \\ b \\ c ____\\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv2Il\\           a \\ b \\ c \\ _ \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv2Al\\           a \\ b \\ c ______e \\ x \\ g \\ h \\ i \\ k \\ l\nv2iN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\___\\ l\nv2aN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i ____\\ l\nv2IN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ _ \\ l\nv2AN\\           a \\ b \\ c \\ d \\ e \\ x \\ g \\ h \\ i ______l\nv2iL\\           a \\___\\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv2aL\\           a ____\\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv2IL\\           a \\ _ \\ c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\nv2AL\\           a ______c \\ d \\ e \\ x \\ g \\ h \\ i \\ k \\ l\na & b & c & d & e & x & g & h & i & k & l\nci&             a & b & c & d & e &_& g & h & i & k & l\nca&             a & b & c & d & e _& g & h & i & k & l\ncI&             a & b & c & d & e & _ & g & h & i & k & l\ncA&             a & b & c & d & e _g & h & i & k & l\ncin&            a & b & c & d & e & x &_& h & i & k & l\ncan&            a & b & c & d & e & x _& h & i & k & l\ncIn&            a & b & c & d & e & x & _ & h & i & k & l\ncAn&            a & b & c & d & e & x _h & i & k & l\ncil&            a & b & c & d &_& x & g & h & i & k & l\ncal&            a & b & c & d _& x & g & h & i & k & l\ncIl&            a & b & c & d & _ & x & g & h & i & k & l\ncAl&            a & b & c & d _x & g & h & i & k & l\nciN&            a & b & c & d & e & x & g &_& i & k & l\ncaN&            a & b & c & d & e & x & g _& i & k & l\ncIN&            a & b & c & d & e & x & g & _ & i & k & l\ncAN&            a & b & c & d & e & x & g _i & k & l\nciL&            a & b & c &_& e & x & g & h & i & k & l\ncaL&            a & b & c _& e & x & g & h & i & k & l\ncIL&            a & b & c & _ & e & x & g & h & i & k & l\ncAL&            a & b & c _e & x & g & h & i & k & l\nc1i&            a & b & c & d & e &_& g & h & i & k & l\nc1a&            a & b & c & d & e _& g & h & i & k & l\nc1I&            a & b & c & d & e & _ & g & h & i & k & l\nc1A&            a & b & c & d & e _g & h & i & k & l\nc1in&           a & b & c & d & e & x &_& h & i & k & l\nc1an&           a & b & c & d & e & x _& h & i & k & l\nc1In&           a & b & c & d & e & x & _ & h & i & k & l\nc1An&           a & b & c & d & e & x _h & i & k & l\nc1il&           a & b & c & d &_& x & g & h & i & k & l\nc1al&           a & b & c & d _& x & g & h & i & k & l\nc1Il&           a & b & c & d & _ & x & g & h & i & k & l\nc1Al&           a & b & c & d _x & g & h & i & k & l\nc1iN&           a & b & c & d & e & x & g &_& i & k & l\nc1aN&           a & b & c & d & e & x & g _& i & k & l\nc1IN&           a & b & c & d & e & x & g & _ & i & k & l\nc1AN&           a & b & c & d & e & x & g _i & k & l\nc1iL&           a & b & c &_& e & x & g & h & i & k & l\nc1aL&           a & b & c _& e & x & g & h & i & k & l\nc1IL&           a & b & c & _ & e & x & g & h & i & k & l\nc1AL&           a & b & c _e & x & g & h & i & k & l\nc2i&            a & b & c & d & e &_& g & h & i & k & l\nc2a&            a & b & c & d & e _& g & h & i & k & l\nc2I&            a & b & c & d & e & _ & g & h & i & k & l\nc2A&            a & b & c & d & e _g & h & i & k & l\nc2in&           a & b & c & d & e & x & g &_& i & k & l\nc2an&           a & b & c & d & e & x & g _& i & k & l\nc2In&           a & b & c & d & e & x & g & _ & i & k & l\nc2An&           a & b & c & d & e & x & g _i & k & l\nc2il&           a & b & c &_& e & x & g & h & i & k & l\nc2al&           a & b & c _& e & x & g & h & i & k & l\nc2Il&           a & b & c & _ & e & x & g & h & i & k & l\nc2Al&           a & b & c _e & x & g & h & i & k & l\nc2iN&           a & b & c & d & e & x & g & h & i &_& l\nc2aN&           a & b & c & d & e & x & g & h & i _& l\nc2IN&           a & b & c & d & e & x & g & h & i & _ & l\nc2AN&           a & b & c & d & e & x & g & h & i _l\nc2iL&           a &_& c & d & e & x & g & h & i & k & l\nc2aL&           a _& c & d & e & x & g & h & i & k & l\nc2IL&           a & _ & c & d & e & x & g & h & i & k & l\nc2AL&           a _c & d & e & x & g & h & i & k & l\ndi&             a & b & c & d & e && g & h & i & k & l\nda&             a & b & c & d & e & g & h & i & k & l\ndI&             a & b & c & d & e &  & g & h & i & k & l\ndA&             a & b & c & d & e g & h & i & k & l\ndin&            a & b & c & d & e & x && h & i & k & l\ndan&            a & b & c & d & e & x & h & i & k & l\ndIn&            a & b & c & d & e & x &  & h & i & k & l\ndAn&            a & b & c & d & e & x h & i & k & l\ndil&            a & b & c & d && x & g & h & i & k & l\ndal&            a & b & c & d & x & g & h & i & k & l\ndIl&            a & b & c & d &  & x & g & h & i & k & l\ndAl&            a & b & c & d x & g & h & i & k & l\ndiN&            a & b & c & d & e & x & g && i & k & l\ndaN&            a & b & c & d & e & x & g & i & k & l\ndIN&            a & b & c & d & e & x & g &  & i & k & l\ndAN&            a & b & c & d & e & x & g i & k & l\ndiL&            a & b & c && e & x & g & h & i & k & l\ndaL&            a & b & c & e & x & g & h & i & k & l\ndIL&            a & b & c &  & e & x & g & h & i & k & l\ndAL&            a & b & c e & x & g & h & i & k & l\nd1i&            a & b & c & d & e && g & h & i & k & l\nd1a&            a & b & c & d & e & g & h & i & k & l\nd1I&            a & b & c & d & e &  & g & h & i & k & l\nd1A&            a & b & c & d & e g & h & i & k & l\nd1in&           a & b & c & d & e & x && h & i & k & l\nd1an&           a & b & c & d & e & x & h & i & k & l\nd1In&           a & b & c & d & e & x &  & h & i & k & l\nd1An&           a & b & c & d & e & x h & i & k & l\nd1il&           a & b & c & d && x & g & h & i & k & l\nd1al&           a & b & c & d & x & g & h & i & k & l\nd1Il&           a & b & c & d &  & x & g & h & i & k & l\nd1Al&           a & b & c & d x & g & h & i & k & l\nd1iN&           a & b & c & d & e & x & g && i & k & l\nd1aN&           a & b & c & d & e & x & g & i & k & l\nd1IN&           a & b & c & d & e & x & g &  & i & k & l\nd1AN&           a & b & c & d & e & x & g i & k & l\nd1iL&           a & b & c && e & x & g & h & i & k & l\nd1aL&           a & b & c & e & x & g & h & i & k & l\nd1IL&           a & b & c &  & e & x & g & h & i & k & l\nd1AL&           a & b & c e & x & g & h & i & k & l\nd2i&            a & b & c & d & e && g & h & i & k & l\nd2a&            a & b & c & d & e & g & h & i & k & l\nd2I&            a & b & c & d & e &  & g & h & i & k & l\nd2A&            a & b & c & d & e g & h & i & k & l\nd2in&           a & b & c & d & e & x & g && i & k & l\nd2an&           a & b & c & d & e & x & g & i & k & l\nd2In&           a & b & c & d & e & x & g &  & i & k & l\nd2An&           a & b & c & d & e & x & g i & k & l\nd2il&           a & b & c && e & x & g & h & i & k & l\nd2al&           a & b & c & e & x & g & h & i & k & l\nd2Il&           a & b & c &  & e & x & g & h & i & k & l\nd2Al&           a & b & c e & x & g & h & i & k & l\nd2iN&           a & b & c & d & e & x & g & h & i && l\nd2aN&           a & b & c & d & e & x & g & h & i & l\nd2IN&           a & b & c & d & e & x & g & h & i &  & l\nd2AN&           a & b & c & d & e & x & g & h & i l\nd2iL&           a && c & d & e & x & g & h & i & k & l\nd2aL&           a & c & d & e & x & g & h & i & k & l\nd2IL&           a &  & c & d & e & x & g & h & i & k & l\nd2AL&           a c & d & e & x & g & h & i & k & l\nyi&             a & b & c & d & e & x & g & h & i & k & l       ' x '\nya&             a & b & c & d & e & x & g & h & i & k & l       '& x '\nyI&             a & b & c & d & e & x & g & h & i & k & l       'x'\nyA&             a & b & c & d & e & x & g & h & i & k & l       '& x & '\nyin&            a & b & c & d & e & x & g & h & i & k & l       ' g '\nyan&            a & b & c & d & e & x & g & h & i & k & l       '& g '\nyIn&            a & b & c & d & e & x & g & h & i & k & l       'g'\nyAn&            a & b & c & d & e & x & g & h & i & k & l       '& g & '\nyil&            a & b & c & d & e & x & g & h & i & k & l       ' e '\nyal&            a & b & c & d & e & x & g & h & i & k & l       '& e '\nyIl&            a & b & c & d & e & x & g & h & i & k & l       'e'\nyAl&            a & b & c & d & e & x & g & h & i & k & l       '& e & '\nyiN&            a & b & c & d & e & x & g & h & i & k & l       ' h '\nyaN&            a & b & c & d & e & x & g & h & i & k & l       '& h '\nyIN&            a & b & c & d & e & x & g & h & i & k & l       'h'\nyAN&            a & b & c & d & e & x & g & h & i & k & l       '& h & '\nyiL&            a & b & c & d & e & x & g & h & i & k & l       ' d '\nyaL&            a & b & c & d & e & x & g & h & i & k & l       '& d '\nyIL&            a & b & c & d & e & x & g & h & i & k & l       'd'\nyAL&            a & b & c & d & e & x & g & h & i & k & l       '& d & '\ny1i&            a & b & c & d & e & x & g & h & i & k & l       ' x '\ny1a&            a & b & c & d & e & x & g & h & i & k & l       '& x '\ny1I&            a & b & c & d & e & x & g & h & i & k & l       'x'\ny1A&            a & b & c & d & e & x & g & h & i & k & l       '& x & '\ny1in&           a & b & c & d & e & x & g & h & i & k & l       ' g '\ny1an&           a & b & c & d & e & x & g & h & i & k & l       '& g '\ny1In&           a & b & c & d & e & x & g & h & i & k & l       'g'\ny1An&           a & b & c & d & e & x & g & h & i & k & l       '& g & '\ny1il&           a & b & c & d & e & x & g & h & i & k & l       ' e '\ny1al&           a & b & c & d & e & x & g & h & i & k & l       '& e '\ny1Il&           a & b & c & d & e & x & g & h & i & k & l       'e'\ny1Al&           a & b & c & d & e & x & g & h & i & k & l       '& e & '\ny1iN&           a & b & c & d & e & x & g & h & i & k & l       ' h '\ny1aN&           a & b & c & d & e & x & g & h & i & k & l       '& h '\ny1IN&           a & b & c & d & e & x & g & h & i & k & l       'h'\ny1AN&           a & b & c & d & e & x & g & h & i & k & l       '& h & '\ny1iL&           a & b & c & d & e & x & g & h & i & k & l       ' d '\ny1aL&           a & b & c & d & e & x & g & h & i & k & l       '& d '\ny1IL&           a & b & c & d & e & x & g & h & i & k & l       'd'\ny1AL&           a & b & c & d & e & x & g & h & i & k & l       '& d & '\ny2i&            a & b & c & d & e & x & g & h & i & k & l       ' x '\ny2a&            a & b & c & d & e & x & g & h & i & k & l       '& x '\ny2I&            a & b & c & d & e & x & g & h & i & k & l       'x'\ny2A&            a & b & c & d & e & x & g & h & i & k & l       '& x & '\ny2in&           a & b & c & d & e & x & g & h & i & k & l       ' h '\ny2an&           a & b & c & d & e & x & g & h & i & k & l       '& h '\ny2In&           a & b & c & d & e & x & g & h & i & k & l       'h'\ny2An&           a & b & c & d & e & x & g & h & i & k & l       '& h & '\ny2il&           a & b & c & d & e & x & g & h & i & k & l       ' d '\ny2al&           a & b & c & d & e & x & g & h & i & k & l       '& d '\ny2Il&           a & b & c & d & e & x & g & h & i & k & l       'd'\ny2Al&           a & b & c & d & e & x & g & h & i & k & l       '& d & '\ny2iN&           a & b & c & d & e & x & g & h & i & k & l       ' k '\ny2aN&           a & b & c & d & e & x & g & h & i & k & l       '& k '\ny2IN&           a & b & c & d & e & x & g & h & i & k & l       'k'\ny2AN&           a & b & c & d & e & x & g & h & i & k & l       '& k & '\ny2iL&           a & b & c & d & e & x & g & h & i & k & l       ' b '\ny2aL&           a & b & c & d & e & x & g & h & i & k & l       '& b '\ny2IL&           a & b & c & d & e & x & g & h & i & k & l       'b'\ny2AL&           a & b & c & d & e & x & g & h & i & k & l       '& b & '\nvi&             a & b & c & d & e &___& g & h & i & k & l\nva&             a & b & c & d & e ____& g & h & i & k & l\nvI&             a & b & c & d & e & _ & g & h & i & k & l\nvA&             a & b & c & d & e ______g & h & i & k & l\nvin&            a & b & c & d & e & x &___& h & i & k & l\nvan&            a & b & c & d & e & x ____& h & i & k & l\nvIn&            a & b & c & d & e & x & _ & h & i & k & l\nvAn&            a & b & c & d & e & x ______h & i & k & l\nvil&            a & b & c & d &___& x & g & h & i & k & l\nval&            a & b & c & d ____& x & g & h & i & k & l\nvIl&            a & b & c & d & _ & x & g & h & i & k & l\nvAl&            a & b & c & d ______x & g & h & i & k & l\nviN&            a & b & c & d & e & x & g &___& i & k & l\nvaN&            a & b & c & d & e & x & g ____& i & k & l\nvIN&            a & b & c & d & e & x & g & _ & i & k & l\nvAN&            a & b & c & d & e & x & g ______i & k & l\nviL&            a & b & c &___& e & x & g & h & i & k & l\nvaL&            a & b & c ____& e & x & g & h & i & k & l\nvIL&            a & b & c & _ & e & x & g & h & i & k & l\nvAL&            a & b & c ______e & x & g & h & i & k & l\nv1i&            a & b & c & d & e &___& g & h & i & k & l\nv1a&            a & b & c & d & e ____& g & h & i & k & l\nv1I&            a & b & c & d & e & _ & g & h & i & k & l\nv1A&            a & b & c & d & e ______g & h & i & k & l\nv1in&           a & b & c & d & e & x &___& h & i & k & l\nv1an&           a & b & c & d & e & x ____& h & i & k & l\nv1In&           a & b & c & d & e & x & _ & h & i & k & l\nv1An&           a & b & c & d & e & x ______h & i & k & l\nv1il&           a & b & c & d &___& x & g & h & i & k & l\nv1al&           a & b & c & d ____& x & g & h & i & k & l\nv1Il&           a & b & c & d & _ & x & g & h & i & k & l\nv1Al&           a & b & c & d ______x & g & h & i & k & l\nv1iN&           a & b & c & d & e & x & g &___& i & k & l\nv1aN&           a & b & c & d & e & x & g ____& i & k & l\nv1IN&           a & b & c & d & e & x & g & _ & i & k & l\nv1AN&           a & b & c & d & e & x & g ______i & k & l\nv1iL&           a & b & c &___& e & x & g & h & i & k & l\nv1aL&           a & b & c ____& e & x & g & h & i & k & l\nv1IL&           a & b & c & _ & e & x & g & h & i & k & l\nv1AL&           a & b & c ______e & x & g & h & i & k & l\nv2i&            a & b & c & d & e &___& g & h & i & k & l\nv2a&            a & b & c & d & e ____& g & h & i & k & l\nv2I&            a & b & c & d & e & _ & g & h & i & k & l\nv2A&            a & b & c & d & e ______g & h & i & k & l\nv2in&           a & b & c & d & e & x & g &___& i & k & l\nv2an&           a & b & c & d & e & x & g ____& i & k & l\nv2In&           a & b & c & d & e & x & g & _ & i & k & l\nv2An&           a & b & c & d & e & x & g ______i & k & l\nv2il&           a & b & c &___& e & x & g & h & i & k & l\nv2al&           a & b & c ____& e & x & g & h & i & k & l\nv2Il&           a & b & c & _ & e & x & g & h & i & k & l\nv2Al&           a & b & c ______e & x & g & h & i & k & l\nv2iN&           a & b & c & d & e & x & g & h & i &___& l\nv2aN&           a & b & c & d & e & x & g & h & i ____& l\nv2IN&           a & b & c & d & e & x & g & h & i & _ & l\nv2AN&           a & b & c & d & e & x & g & h & i ______l\nv2iL&           a &___& c & d & e & x & g & h & i & k & l\nv2aL&           a ____& c & d & e & x & g & h & i & k & l\nv2IL&           a & _ & c & d & e & x & g & h & i & k & l\nv2AL&           a ______c & d & e & x & g & h & i & k & l\n\n"
  },
  {
    "path": ".vim/bundle/targets.vim/test/test2.in",
    "content": "// comment 1\nfunction f() {\n    return 4;\n}\n\n// comment 2\nint a = 5;\nint b = a > 0\n        ? 1\n        : 2;\n\n// comment 3\nstring x = `line 1\nline 2\nline 3`;\n\n"
  },
  {
    "path": ".vim/bundle/targets.vim/test/test2.ok",
    "content": "// comment 1\nfunction f() {\nfoo\n}\n\n// comment 2\nint a = 5;\nfoo;\n\n// comment 3\nstring x = `foo`;\n\n"
  },
  {
    "path": ".vim/bundle/targets.vim/test/test2.out",
    "content": "// comment 1\nfunction f() {\nfoo\n}\n\n// comment 2\nint a = 5;\nfoo;\n\n// comment 3\nstring x = `foo`;\n\n"
  },
  {
    "path": ".vim/bundle/targets.vim/test/test3.in",
    "content": "A\na ( b ) c\n\nB ( a ) b\na ( b ) C\n\nD ( a\nb ) c\n\na ( b\nc ) E\n\na ( b\nF ( ) c\nd ) e\n\na ( b\nc ( ) G\nd ) e\n\na ( b ) H ( c ) d\n\na ( b ) c\nI \" this must be the last pair test\n\nJ\na 'b' c\n\nK 'a' b\na 'b' L\n\na ' b\nM ' c\nd ' e\n\na ' b\nc ' N\nd ' e\n\na ' b ' c\nO \" this must be the last quote test\n\n"
  },
  {
    "path": ".vim/bundle/targets.vim/test/test3.ok",
    "content": "A\na (A) c\n\nB (B) b\na (C) C\n\nD (D) c\n\na (E) E\n\na (F) e\n\na (G) e\n\na ( b ) H (H) d\n\na (I) c\nI \" this must be the last pair test\n\nJ\na 'J' c\n\nK 'K' b\na 'L' L\n\na 'M' c\nd ' e\n\na ' b\nc 'N' e\n\na 'O' c\nO \" this must be the last quote test\n\n"
  },
  {
    "path": ".vim/bundle/targets.vim/test/test3.out",
    "content": "A\na (A) c\n\nB (B) b\na (C) C\n\nD (D) c\n\na (E) E\n\na (F) e\n\na (G) e\n\na ( b ) H (H) d\n\na (I) c\nI \" this must be the last pair test\n\nJ\na 'J' c\n\nK 'K' b\na 'L' L\n\na 'M' c\nd ' e\n\na ' b\nc 'N' e\n\na 'O' c\nO \" this must be the last quote test\n\n"
  },
  {
    "path": ".vim/bundle/targets.vim/test/test4.in",
    "content": "a ( b ( x ) c ) d\na { b { x } c } d\na [ b [ x ] c ] d\na < b < x > c > d\na <a> b <b> x </b> c </a> d\n\n"
  },
  {
    "path": ".vim/bundle/targets.vim/test/test4.ok",
    "content": "a ( b ( x ) c ) d\na (___________) d\na (___________) d\na (___________) d\na _____________ d\na _____________ d\na _____________ d\na { b { x } c } d\na {___________} d\na {___________} d\na {___________} d\na _____________ d\na _____________ d\na _____________ d\na [ b [ x ] c ] d\na [___________] d\na [___________] d\na [___________] d\na _____________ d\na _____________ d\na _____________ d\na < b < x > c > d\na <___________> d\na <___________> d\na <___________> d\na _____________ d\na _____________ d\na _____________ d\na <a> b <b> x </b> c </a> d\na <a>________________</a> d\na _______________________ d\n\n"
  },
  {
    "path": ".vim/bundle/targets.vim/test/test4.out",
    "content": "a ( b ( x ) c ) d\na (___________) d\na (___________) d\na (___________) d\na _____________ d\na _____________ d\na _____________ d\na { b { x } c } d\na {___________} d\na {___________} d\na {___________} d\na _____________ d\na _____________ d\na _____________ d\na [ b [ x ] c ] d\na [___________] d\na [___________] d\na [___________] d\na _____________ d\na _____________ d\na _____________ d\na < b < x > c > d\na <___________> d\na <___________> d\na <___________> d\na _____________ d\na _____________ d\na _____________ d\na <a> b <b> x </b> c </a> d\na <a>________________</a> d\na _______________________ d\n\n"
  },
  {
    "path": ".vim/bundle/textutil.vim/README",
    "content": "This is a mirror of http://www.vim.org/scripts/script.php?script_id=1432\n\n\n Usage:\n    When you open rtf, rtfd, doc or wordml file with Vim,\n    editing file format is automatically converted to plain text.\n    And when you write file, file format is automatically converted to\n    rtf, rtfd, doc or wordml file format.\n\n Configuration:\n    When this script convert rtf, rtfd, doc or wordml file to plain text with textutil command,\n    this script use \"g:textutil_txt_encoding\" encoding.\n    Default value of \"g:textutil_txt_encoding\" is 'utf-8'.\n    You want to change text encoding, set \"g:textutil_txt_encoding\" in your $HOME/.vimrc file.\n    for example,\n\n        :let g:textutil_txt_encoding='Shift_JIS'\n\n Note:\n    This script is based on 'textutil' command.\n    So this script will only run on MacOS 10.4 or later.\n\n\n"
  },
  {
    "path": ".vim/bundle/textutil.vim/plugin/textutil.vim",
    "content": "\" textutil.vim : Vim plugin for editing rtf,rtfd,doc,wordml files.\n\"\n\" Name Of File: textutil.vim\n\" Maintainer:   omi taku <advweb@jcom.home.ne.jp>\n\" URL:          http://members.jcom.home.ne.jp/advweb/\n\" Script URL:   http://www.vim.org/scripts/script.php?script_id=1432\n\" Last Change:  2005/12/16\n\" Version:      0.1.1\n\"\n\" Installation:\n\"    1. Copy the textutil.vim script to the $HOME/.vim/plugin directory.\n\"       Refer to ':help add-plugin', ':help add-global-plugin' and ':help runtimepath'\n\"       for more details about Vim plugins.\n\"    2. Restart Vim.\n\"\n\" Usage:\n\"    When you open rtf, rtfd, doc or wordml file with Vim,\n\"    editing file format is automatically converted to plain text.\n\"    And when you write file, file format is automatically converted to\n\"    rtf, rtfd, doc or wordml file format.\n\"\n\" Configuration:\n\"    When this script convert rtf, rtfd, doc or wordml file to plain text with textutil command,\n\"    this script use \"g:textutil_txt_encoding\" encoding.\n\"    Default value of \"g:textutil_txt_encoding\" is 'utf-8'.\n\"    You want to change text encoding, set \"g:textutil_txt_encoding\" in your $HOME/.vimrc file.\n\"    for example,\n\"\n\"        :let g:textutil_txt_encoding='Shift_JIS'\n\"\n\" Note:\n\"    This script is based on 'textutil' command.\n\"    So this script will only run on MacOS 10.4 or later.\n\"\n\" History:\n\"    0.1.1 o Add \"inputencoding\" textutil command option.\n\"    0.1   o Initial upload.\n\n\n\" if plugin is already loaded then, not load plugin.\nif exists(\"loaded_textutil\") || &cp || exists(\"#BufReadPre#*.rtf\")\n\tfinish\nendif\nlet loaded_textutil = 1\n\n\" configuration\nif !exists('g:textutil_txt_encoding')\n\tlet g:textutil_txt_encoding = 'utf-8'\nendif\n\n\" set autocmd\naugroup textutil\n\t\" Remove all textutil autocommands\n\tau!\n\n\t\" rtf\n\tautocmd BufReadPre,FileReadPre\t\t*.rtf    setlocal bin\n\tautocmd BufReadPost,FileReadPost\t*.rtf    call s:read(s:read_cmd(\"txt\"))\n\tautocmd BufWritePost,FileWritePost\t*.rtf    call s:write(s:write_cmd(\"rtf\"))\n\n\t\" rtfd\n\tautocmd BufReadPre,FileReadPre\t\t*.rtfd   setlocal bin\n\tautocmd BufReadPost,FileReadPost\t*.rtfd   call s:read(s:read_cmd(\"txt\"))\n\tautocmd BufWritePost,FileWritePost\t*.rtfd   call s:write(s:write_cmd(\"rtfd\"))\n\n\t\" doc\n\tautocmd BufReadPre,FileReadPre\t\t*.doc    setlocal bin\n\tautocmd BufReadPost,FileReadPost\t*.doc    call s:read(s:read_cmd(\"txt\"))\n\tautocmd BufWritePost,FileWritePost\t*.doc    call s:write(s:write_cmd(\"doc\"))\n\n\t\" wordml\n\tautocmd BufReadPre,FileReadPre\t\t*.wordml setlocal bin\n\tautocmd BufReadPost,FileReadPost\t*.wordml call s:read(s:read_cmd(\"txt\"))\n\tautocmd BufWritePost,FileWritePost\t*.wordml call s:write(s:write_cmd(\"wordml\"))\naugroup END\n\n\" return read command and option\nfun s:read_cmd(ft)\n\treturn \"textutil -convert \" . a:ft . \" -encoding \" . g:textutil_txt_encoding\nendfun\n\" return write command and option\nfun s:write_cmd(ft)\n\treturn \"textutil -convert \" . a:ft . \" -inputencoding \" . g:textutil_txt_encoding\nendfun\n\n\" Function to check that executing \"cmd [-f]\" works.\n\" The result is cached in s:have_\"cmd\" for speed.\nfun s:check(cmd)\n\tlet name = substitute(a:cmd, '\\(\\S*\\).*', '\\1', '')\n\tif !exists(\"s:have_\" . name)\n\t\tlet e = executable(name)\n\t\tif e < 0\n\t\t\tlet r = system(name);\n\t\t\tlet e = (r !~ \"not found\" && r != \"\")\n\t\tendif\n\t\texe \"let s:have_\" . name . \"=\" . e\n\tendif\n\texe \"return s:have_\" . name\nendfun\n\n\" after reading file, convert file format.\nfun s:read(cmd)\n\t\" don't do anything if the cmd is not supported\n\tif !s:check(a:cmd)\n\t\treturn\n\tendif\n\t\" make 'patchmode' empty, we don't want a copy of the written file\n\tlet pm_save = &pm\n\tset pm=\n\t\" remove 'a' and 'A' from 'cpo' to avoid the alternate file changes\n\tlet cpo_save = &cpo\n\tset cpo-=a cpo-=A\n\t\" set 'modifiable'\n\tlet ma_save = &ma\n\tsetlocal ma\n\n\t\" when filtering the whole buffer, it will become empty\n\tlet empty = line(\"'[\") == 1 && line(\"']\") == line(\"$\")\n\n\tlet tmp = tempname()\n\tlet tmpe = tmp . \".\" . expand(\"<afile>:e\")\n\n\t\" write the just read lines to a temp file\n\texecute \"silent '[,']w \" . tmpe\n\n\t\" convert tmpe to text file\n\tcall system(a:cmd . \" \\\"\" . tmpe . \"\\\" -output \\\"\" . tmp . \"\\\"\")\n\n\t\" delete the compressed lines; remember the line number\n\tlet l = line(\"'[\") - 1\n\tif exists(\":lockmarks\")\n\t\tlockmarks '[,']d _\n\telse\n\t\t'[,']d _\n\tendif\n\n\t\" read in the uncompressed lines \"'[-1r tmp\"\n\tsetlocal bin\n\tif exists(\":lockmarks\")\n\t\texecute \"silent lockmarks \" . l . \"r \" . tmp\n\telse\n\t\texecute \"silent \" . l . \"r \" . tmp\n\tendif\n\n\t\" if buffer became empty, delete trailing blank line\n\tif empty\n\t\tsilent $delete _\n\t\t1\n\tendif\n\t\" delete the temp file and the used buffers\n\tcall delete(tmp)\n\tcall delete(tmpe)\n\tsilent! exe \"bwipe \" . tmp\n\tsilent! exe \"bwipe \" . tmpe\n\tlet &pm = pm_save\n\tlet &cpo = cpo_save\n\tlet &l:ma = ma_save\n\t\" When uncompressed the whole buffer, do autocommands\n\tif empty\n\t\tif &verbose >= 8\n\t\t\texecute \"doau BufReadPost \" . expand(\"%:r\")\n\t\telse\n\t\t\texecute \"silent! doau BufReadPost \" . expand(\"%:r\")\n\t\tendif\n\tendif\nendfun\n\n\" after writing file, convert file format.\nfun s:write(cmd)\n\t\" don't do anything if the cmd is not supported\n\tif s:check(a:cmd)\n\t\t\" Rename the file before compressing it.\n\t\tlet nm = expand(\"<afile>\")\n\t\tlet nmt = tempname()\n\t\tif rename(nm, nmt) == 0\n\t\t\tcall system(a:cmd . \" \\\"\" . nmt . \"\\\"\")\n\t\t\tcall rename(nmt . \".\" . expand(\"<afile>:e\"), nm)\n\t\tendif\n\tendif\nendfun\n\n\" vim: set sw=4 :\n"
  },
  {
    "path": ".vim/bundle/tomorrow-night-vim/colors/Tomorrow-Night-Blue.vim",
    "content": "\" Tomorrow Night Blue - Full Colour and 256 Colour\n\" http://chriskempson.com\n\"\n\" Hex colour conversion functions borrowed from the theme \"Desert256\"\"\n\n\" Default GUI Colours\nlet s:foreground = \"ffffff\"\nlet s:background = \"002451\"\nlet s:selection = \"003f8e\"\nlet s:line = \"00346e\"\nlet s:comment = \"7285b7\"\nlet s:red = \"ff9da4\"\nlet s:orange = \"ffc58f\"\nlet s:yellow = \"ffeead\"\nlet s:green = \"d1f1a9\"\nlet s:aqua = \"99ffff\"\nlet s:blue = \"bbdaff\"\nlet s:purple = \"ebbbff\"\nlet s:window = \"4d5057\"\n\nhi clear\nsyntax reset\n\nlet g:colors_name = \"Tomorrow-Night-Blue\"\n\nif has(\"gui_running\") || &t_Co == 88 || &t_Co == 256\n\t\" Returns an approximate grey index for the given grey level\n\tfun <SID>grey_number(x)\n\t\tif &t_Co == 88\n\t\t\tif a:x < 23\n\t\t\t\treturn 0\n\t\t\telseif a:x < 69\n\t\t\t\treturn 1\n\t\t\telseif a:x < 103\n\t\t\t\treturn 2\n\t\t\telseif a:x < 127\n\t\t\t\treturn 3\n\t\t\telseif a:x < 150\n\t\t\t\treturn 4\n\t\t\telseif a:x < 173\n\t\t\t\treturn 5\n\t\t\telseif a:x < 196\n\t\t\t\treturn 6\n\t\t\telseif a:x < 219\n\t\t\t\treturn 7\n\t\t\telseif a:x < 243\n\t\t\t\treturn 8\n\t\t\telse\n\t\t\t\treturn 9\n\t\t\tendif\n\t\telse\n\t\t\tif a:x < 14\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\tlet l:n = (a:x - 8) / 10\n\t\t\t\tlet l:m = (a:x - 8) % 10\n\t\t\t\tif l:m < 5\n\t\t\t\t\treturn l:n\n\t\t\t\telse\n\t\t\t\t\treturn l:n + 1\n\t\t\t\tendif\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the actual grey level represented by the grey index\n\tfun <SID>grey_level(n)\n\t\tif &t_Co == 88\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telseif a:n == 1\n\t\t\t\treturn 46\n\t\t\telseif a:n == 2\n\t\t\t\treturn 92\n\t\t\telseif a:n == 3\n\t\t\t\treturn 115\n\t\t\telseif a:n == 4\n\t\t\t\treturn 139\n\t\t\telseif a:n == 5\n\t\t\t\treturn 162\n\t\t\telseif a:n == 6\n\t\t\t\treturn 185\n\t\t\telseif a:n == 7\n\t\t\t\treturn 208\n\t\t\telseif a:n == 8\n\t\t\t\treturn 231\n\t\t\telse\n\t\t\t\treturn 255\n\t\t\tendif\n\t\telse\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\treturn 8 + (a:n * 10)\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index for the given grey index\n\tfun <SID>grey_colour(n)\n\t\tif &t_Co == 88\n\t\t\tif a:n == 0\n\t\t\t\treturn 16\n\t\t\telseif a:n == 9\n\t\t\t\treturn 79\n\t\t\telse\n\t\t\t\treturn 79 + a:n\n\t\t\tendif\n\t\telse\n\t\t\tif a:n == 0\n\t\t\t\treturn 16\n\t\t\telseif a:n == 25\n\t\t\t\treturn 231\n\t\t\telse\n\t\t\t\treturn 231 + a:n\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns an approximate colour index for the given colour level\n\tfun <SID>rgb_number(x)\n\t\tif &t_Co == 88\n\t\t\tif a:x < 69\n\t\t\t\treturn 0\n\t\t\telseif a:x < 172\n\t\t\t\treturn 1\n\t\t\telseif a:x < 230\n\t\t\t\treturn 2\n\t\t\telse\n\t\t\t\treturn 3\n\t\t\tendif\n\t\telse\n\t\t\tif a:x < 75\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\tlet l:n = (a:x - 55) / 40\n\t\t\t\tlet l:m = (a:x - 55) % 40\n\t\t\t\tif l:m < 20\n\t\t\t\t\treturn l:n\n\t\t\t\telse\n\t\t\t\t\treturn l:n + 1\n\t\t\t\tendif\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the actual colour level for the given colour index\n\tfun <SID>rgb_level(n)\n\t\tif &t_Co == 88\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telseif a:n == 1\n\t\t\t\treturn 139\n\t\t\telseif a:n == 2\n\t\t\t\treturn 205\n\t\t\telse\n\t\t\t\treturn 255\n\t\t\tendif\n\t\telse\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\treturn 55 + (a:n * 40)\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index for the given R/G/B colour indices\n\tfun <SID>rgb_colour(x, y, z)\n\t\tif &t_Co == 88\n\t\t\treturn 16 + (a:x * 16) + (a:y * 4) + a:z\n\t\telse\n\t\t\treturn 16 + (a:x * 36) + (a:y * 6) + a:z\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index to approximate the given R/G/B colour levels\n\tfun <SID>colour(r, g, b)\n\t\t\" Get the closest grey\n\t\tlet l:gx = <SID>grey_number(a:r)\n\t\tlet l:gy = <SID>grey_number(a:g)\n\t\tlet l:gz = <SID>grey_number(a:b)\n\n\t\t\" Get the closest colour\n\t\tlet l:x = <SID>rgb_number(a:r)\n\t\tlet l:y = <SID>rgb_number(a:g)\n\t\tlet l:z = <SID>rgb_number(a:b)\n\n\t\tif l:gx == l:gy && l:gy == l:gz\n\t\t\t\" There are two possibilities\n\t\t\tlet l:dgr = <SID>grey_level(l:gx) - a:r\n\t\t\tlet l:dgg = <SID>grey_level(l:gy) - a:g\n\t\t\tlet l:dgb = <SID>grey_level(l:gz) - a:b\n\t\t\tlet l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)\n\t\t\tlet l:dr = <SID>rgb_level(l:gx) - a:r\n\t\t\tlet l:dg = <SID>rgb_level(l:gy) - a:g\n\t\t\tlet l:db = <SID>rgb_level(l:gz) - a:b\n\t\t\tlet l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db)\n\t\t\tif l:dgrey < l:drgb\n\t\t\t\t\" Use the grey\n\t\t\t\treturn <SID>grey_colour(l:gx)\n\t\t\telse\n\t\t\t\t\" Use the colour\n\t\t\t\treturn <SID>rgb_colour(l:x, l:y, l:z)\n\t\t\tendif\n\t\telse\n\t\t\t\" Only one possibility\n\t\t\treturn <SID>rgb_colour(l:x, l:y, l:z)\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index to approximate the 'rrggbb' hex string\n\tfun <SID>rgb(rgb)\n\t\tlet l:r = (\"0x\" . strpart(a:rgb, 0, 2)) + 0\n\t\tlet l:g = (\"0x\" . strpart(a:rgb, 2, 2)) + 0\n\t\tlet l:b = (\"0x\" . strpart(a:rgb, 4, 2)) + 0\n\n\t\treturn <SID>colour(l:r, l:g, l:b)\n\tendfun\n\n\t\" Sets the highlighting for the given group\n\tfun <SID>X(group, fg, bg, attr)\n\t\tif a:fg != \"\"\n\t\t\texec \"hi \" . a:group . \" guifg=#\" . a:fg . \" ctermfg=\" . <SID>rgb(a:fg)\n\t\tendif\n\t\tif a:bg != \"\"\n\t\t\texec \"hi \" . a:group . \" guibg=#\" . a:bg . \" ctermbg=\" . <SID>rgb(a:bg)\n\t\tendif\n\t\tif a:attr != \"\"\n\t\t\texec \"hi \" . a:group . \" gui=\" . a:attr . \" cterm=\" . a:attr\n\t\tendif\n\tendfun\n\n\t\" Vim Highlighting\n\tcall <SID>X(\"Normal\", s:foreground, s:background, \"\")\n\tcall <SID>X(\"LineNr\", s:selection, \"\", \"\")\n\tcall <SID>X(\"NonText\", s:selection, \"\", \"\")\n\tcall <SID>X(\"SpecialKey\", s:selection, \"\", \"\")\n\tcall <SID>X(\"Search\", s:background, s:yellow, \"\")\n\tcall <SID>X(\"TabLine\", s:foreground, s:background, \"reverse\")\n\tcall <SID>X(\"StatusLine\", s:window, s:yellow, \"reverse\")\n\tcall <SID>X(\"StatusLineNC\", s:window, s:foreground, \"reverse\")\n\tcall <SID>X(\"VertSplit\", s:window, s:window, \"none\")\n\tcall <SID>X(\"Visual\", \"\", s:selection, \"\")\n\tcall <SID>X(\"Directory\", s:blue, \"\", \"\")\n\tcall <SID>X(\"ModeMsg\", s:green, \"\", \"\")\n\tcall <SID>X(\"MoreMsg\", s:green, \"\", \"\")\n\tcall <SID>X(\"Question\", s:green, \"\", \"\")\n\tcall <SID>X(\"WarningMsg\", s:red, \"\", \"\")\n\tcall <SID>X(\"MatchParen\", \"\", s:selection, \"\")\n\tcall <SID>X(\"Folded\", s:comment, s:background, \"\")\n\tcall <SID>X(\"FoldColumn\", \"\", s:background, \"\")\n\tif version >= 700\n\t\tcall <SID>X(\"CursorLine\", \"\", s:line, \"none\")\n\t\tcall <SID>X(\"CursorColumn\", \"\", s:line, \"none\")\n\t\tcall <SID>X(\"PMenu\", s:foreground, s:selection, \"none\")\n\t\tcall <SID>X(\"PMenuSel\", s:foreground, s:selection, \"reverse\")\n\tend\n\tif version >= 703\n\t\tcall <SID>X(\"ColorColumn\", \"\", s:line, \"none\")\n\tend\n\n\t\" Standard Highlighting\n\tcall <SID>X(\"Comment\", s:comment, \"\", \"\")\n\tcall <SID>X(\"Todo\", s:comment, s:background, \"\")\n\tcall <SID>X(\"Title\", s:comment, \"\", \"\")\n\tcall <SID>X(\"Identifier\", s:red, \"\", \"none\")\n\tcall <SID>X(\"Statement\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"Conditional\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"Repeat\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"Structure\", s:purple, \"\", \"\")\n\tcall <SID>X(\"Function\", s:blue, \"\", \"\")\n\tcall <SID>X(\"Constant\", s:orange, \"\", \"\")\n\tcall <SID>X(\"String\", s:green, \"\", \"\")\n\tcall <SID>X(\"Special\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"PreProc\", s:purple, \"\", \"\")\n\tcall <SID>X(\"Operator\", s:aqua, \"\", \"none\")\n\tcall <SID>X(\"Type\", s:blue, \"\", \"none\")\n\tcall <SID>X(\"Define\", s:purple, \"\", \"none\")\n\tcall <SID>X(\"Include\", s:blue, \"\", \"\")\n\t\"call <SID>X(\"Ignore\", \"666666\", \"\", \"\")\n\n\t\" Vim Highlighting\n\tcall <SID>X(\"vimCommand\", s:red, \"\", \"none\")\n\n\t\" C Highlighting\n\tcall <SID>X(\"cType\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"cStorageClass\", s:purple, \"\", \"\")\n\tcall <SID>X(\"cConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"cRepeat\", s:purple, \"\", \"\")\n\n\t\" PHP Highlighting\n\tcall <SID>X(\"phpVarSelector\", s:red, \"\", \"\")\n\tcall <SID>X(\"phpKeyword\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpMemberSelector\", s:foreground, \"\", \"\")\n\n\t\" Ruby Highlighting\n\tcall <SID>X(\"rubySymbol\", s:green, \"\", \"\")\n\tcall <SID>X(\"rubyConstant\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"rubyAccess\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"rubyAttribute\", s:blue, \"\", \"\")\n\tcall <SID>X(\"rubyInclude\", s:blue, \"\", \"\")\n\tcall <SID>X(\"rubyLocalVariableOrMethod\", s:orange, \"\", \"\")\n\tcall <SID>X(\"rubyCurlyBlock\", s:orange, \"\", \"\")\n\tcall <SID>X(\"rubyStringDelimiter\", s:green, \"\", \"\")\n\tcall <SID>X(\"rubyInterpolationDelimiter\", s:orange, \"\", \"\")\n\tcall <SID>X(\"rubyConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"rubyRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"rubyControl\", s:purple, \"\", \"\")\n\tcall <SID>X(\"rubyException\", s:purple, \"\", \"\")\n\n\t\" Python Highlighting\n\tcall <SID>X(\"pythonInclude\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonException\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonFunction\", s:blue, \"\", \"\")\n\tcall <SID>X(\"pythonPreCondit\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonRepeat\", s:aqua, \"\", \"\")\n\tcall <SID>X(\"pythonExClass\", s:orange, \"\", \"\")\n\n\t\" JavaScript Highlighting\n\tcall <SID>X(\"javaScriptBraces\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"javaScriptFunction\", s:purple, \"\", \"\")\n\tcall <SID>X(\"javaScriptConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"javaScriptRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"javaScriptNumber\", s:orange, \"\", \"\")\n\tcall <SID>X(\"javaScriptMember\", s:orange, \"\", \"\")\n\n\t\" HTML Highlighting\n\tcall <SID>X(\"htmlTag\", s:red, \"\", \"\")\n\tcall <SID>X(\"htmlTagName\", s:red, \"\", \"\")\n\tcall <SID>X(\"htmlArg\", s:red, \"\", \"\")\n\tcall <SID>X(\"htmlScriptTag\", s:red, \"\", \"\")\n\n\t\" Diff Highlighting\n\tcall <SID>X(\"diffAdded\", s:green, \"\", \"\")\n\tcall <SID>X(\"diffRemoved\", s:red, \"\", \"\")\n\n\t\" Lua Highlighting\n\tcall <SID>X(\"luaStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCondStart\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCondElseif\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCond\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCondEnd\", s:purple, \"\", \"\")\n\n\t\" Cucumber Highlighting\n\tcall <SID>X(\"cucumberGiven\", s:blue, \"\", \"\")\n\tcall <SID>X(\"cucumberGivenAnd\", s:blue, \"\", \"\")\n\n\t\" Go Highlighting\n\tcall <SID>X(\"goDirective\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goDeclaration\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goConstants\", s:orange, \"\", \"\")\n\tcall <SID>X(\"goTodo\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"goDeclType\", s:blue, \"\", \"\")\n\tcall <SID>X(\"goBuiltins\", s:purple, \"\", \"\")\n\n\t\" Delete Functions\n\tdelf <SID>X\n\tdelf <SID>rgb\n\tdelf <SID>colour\n\tdelf <SID>rgb_colour\n\tdelf <SID>rgb_level\n\tdelf <SID>rgb_number\n\tdelf <SID>grey_colour\n\tdelf <SID>grey_level\n\tdelf <SID>grey_number\nendif\n\nset background=dark\n"
  },
  {
    "path": ".vim/bundle/tomorrow-night-vim/colors/Tomorrow-Night-Bright.vim",
    "content": "\" Tomorrow Night Bright - Full Colour and 256 Colour\n\" http://chriskempson.com\n\"\n\" Hex colour conversion functions borrowed from the theme \"Desert256\"\"\n\n\" Default GUI Colours\nlet s:foreground = \"eaeaea\"\nlet s:background = \"000000\"\nlet s:selection = \"424242\"\nlet s:line = \"2a2a2a\"\nlet s:comment = \"969896\"\nlet s:red = \"d54e53\"\nlet s:orange = \"e78c45\"\nlet s:yellow = \"e7c547\"\nlet s:green = \"b9ca4a\"\nlet s:aqua = \"70c0b1\"\nlet s:blue = \"7aa6da\"\nlet s:purple = \"c397d8\"\nlet s:window = \"4d5057\"\n\nhi clear\nsyntax reset\n\nlet g:colors_name = \"Tomorrow-Night-Bright\"\n\nif has(\"gui_running\") || &t_Co == 88 || &t_Co == 256\n\t\" Returns an approximate grey index for the given grey level\n\tfun <SID>grey_number(x)\n\t\tif &t_Co == 88\n\t\t\tif a:x < 23\n\t\t\t\treturn 0\n\t\t\telseif a:x < 69\n\t\t\t\treturn 1\n\t\t\telseif a:x < 103\n\t\t\t\treturn 2\n\t\t\telseif a:x < 127\n\t\t\t\treturn 3\n\t\t\telseif a:x < 150\n\t\t\t\treturn 4\n\t\t\telseif a:x < 173\n\t\t\t\treturn 5\n\t\t\telseif a:x < 196\n\t\t\t\treturn 6\n\t\t\telseif a:x < 219\n\t\t\t\treturn 7\n\t\t\telseif a:x < 243\n\t\t\t\treturn 8\n\t\t\telse\n\t\t\t\treturn 9\n\t\t\tendif\n\t\telse\n\t\t\tif a:x < 14\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\tlet l:n = (a:x - 8) / 10\n\t\t\t\tlet l:m = (a:x - 8) % 10\n\t\t\t\tif l:m < 5\n\t\t\t\t\treturn l:n\n\t\t\t\telse\n\t\t\t\t\treturn l:n + 1\n\t\t\t\tendif\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the actual grey level represented by the grey index\n\tfun <SID>grey_level(n)\n\t\tif &t_Co == 88\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telseif a:n == 1\n\t\t\t\treturn 46\n\t\t\telseif a:n == 2\n\t\t\t\treturn 92\n\t\t\telseif a:n == 3\n\t\t\t\treturn 115\n\t\t\telseif a:n == 4\n\t\t\t\treturn 139\n\t\t\telseif a:n == 5\n\t\t\t\treturn 162\n\t\t\telseif a:n == 6\n\t\t\t\treturn 185\n\t\t\telseif a:n == 7\n\t\t\t\treturn 208\n\t\t\telseif a:n == 8\n\t\t\t\treturn 231\n\t\t\telse\n\t\t\t\treturn 255\n\t\t\tendif\n\t\telse\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\treturn 8 + (a:n * 10)\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index for the given grey index\n\tfun <SID>grey_colour(n)\n\t\tif &t_Co == 88\n\t\t\tif a:n == 0\n\t\t\t\treturn 16\n\t\t\telseif a:n == 9\n\t\t\t\treturn 79\n\t\t\telse\n\t\t\t\treturn 79 + a:n\n\t\t\tendif\n\t\telse\n\t\t\tif a:n == 0\n\t\t\t\treturn 16\n\t\t\telseif a:n == 25\n\t\t\t\treturn 231\n\t\t\telse\n\t\t\t\treturn 231 + a:n\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns an approximate colour index for the given colour level\n\tfun <SID>rgb_number(x)\n\t\tif &t_Co == 88\n\t\t\tif a:x < 69\n\t\t\t\treturn 0\n\t\t\telseif a:x < 172\n\t\t\t\treturn 1\n\t\t\telseif a:x < 230\n\t\t\t\treturn 2\n\t\t\telse\n\t\t\t\treturn 3\n\t\t\tendif\n\t\telse\n\t\t\tif a:x < 75\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\tlet l:n = (a:x - 55) / 40\n\t\t\t\tlet l:m = (a:x - 55) % 40\n\t\t\t\tif l:m < 20\n\t\t\t\t\treturn l:n\n\t\t\t\telse\n\t\t\t\t\treturn l:n + 1\n\t\t\t\tendif\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the actual colour level for the given colour index\n\tfun <SID>rgb_level(n)\n\t\tif &t_Co == 88\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telseif a:n == 1\n\t\t\t\treturn 139\n\t\t\telseif a:n == 2\n\t\t\t\treturn 205\n\t\t\telse\n\t\t\t\treturn 255\n\t\t\tendif\n\t\telse\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\treturn 55 + (a:n * 40)\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index for the given R/G/B colour indices\n\tfun <SID>rgb_colour(x, y, z)\n\t\tif &t_Co == 88\n\t\t\treturn 16 + (a:x * 16) + (a:y * 4) + a:z\n\t\telse\n\t\t\treturn 16 + (a:x * 36) + (a:y * 6) + a:z\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index to approximate the given R/G/B colour levels\n\tfun <SID>colour(r, g, b)\n\t\t\" Get the closest grey\n\t\tlet l:gx = <SID>grey_number(a:r)\n\t\tlet l:gy = <SID>grey_number(a:g)\n\t\tlet l:gz = <SID>grey_number(a:b)\n\n\t\t\" Get the closest colour\n\t\tlet l:x = <SID>rgb_number(a:r)\n\t\tlet l:y = <SID>rgb_number(a:g)\n\t\tlet l:z = <SID>rgb_number(a:b)\n\n\t\tif l:gx == l:gy && l:gy == l:gz\n\t\t\t\" There are two possibilities\n\t\t\tlet l:dgr = <SID>grey_level(l:gx) - a:r\n\t\t\tlet l:dgg = <SID>grey_level(l:gy) - a:g\n\t\t\tlet l:dgb = <SID>grey_level(l:gz) - a:b\n\t\t\tlet l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)\n\t\t\tlet l:dr = <SID>rgb_level(l:gx) - a:r\n\t\t\tlet l:dg = <SID>rgb_level(l:gy) - a:g\n\t\t\tlet l:db = <SID>rgb_level(l:gz) - a:b\n\t\t\tlet l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db)\n\t\t\tif l:dgrey < l:drgb\n\t\t\t\t\" Use the grey\n\t\t\t\treturn <SID>grey_colour(l:gx)\n\t\t\telse\n\t\t\t\t\" Use the colour\n\t\t\t\treturn <SID>rgb_colour(l:x, l:y, l:z)\n\t\t\tendif\n\t\telse\n\t\t\t\" Only one possibility\n\t\t\treturn <SID>rgb_colour(l:x, l:y, l:z)\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index to approximate the 'rrggbb' hex string\n\tfun <SID>rgb(rgb)\n\t\tlet l:r = (\"0x\" . strpart(a:rgb, 0, 2)) + 0\n\t\tlet l:g = (\"0x\" . strpart(a:rgb, 2, 2)) + 0\n\t\tlet l:b = (\"0x\" . strpart(a:rgb, 4, 2)) + 0\n\n\t\treturn <SID>colour(l:r, l:g, l:b)\n\tendfun\n\n\t\" Sets the highlighting for the given group\n\tfun <SID>X(group, fg, bg, attr)\n\t\tif a:fg != \"\"\n\t\t\texec \"hi \" . a:group . \" guifg=#\" . a:fg . \" ctermfg=\" . <SID>rgb(a:fg)\n\t\tendif\n\t\tif a:bg != \"\"\n\t\t\texec \"hi \" . a:group . \" guibg=#\" . a:bg . \" ctermbg=\" . <SID>rgb(a:bg)\n\t\tendif\n\t\tif a:attr != \"\"\n\t\t\texec \"hi \" . a:group . \" gui=\" . a:attr . \" cterm=\" . a:attr\n\t\tendif\n\tendfun\n\n\t\" Vim Highlighting\n\tcall <SID>X(\"Normal\", s:foreground, s:background, \"\")\n\tcall <SID>X(\"LineNr\", s:selection, \"\", \"\")\n\tcall <SID>X(\"NonText\", s:selection, \"\", \"\")\n\tcall <SID>X(\"SpecialKey\", s:selection, \"\", \"\")\n\tcall <SID>X(\"Search\", s:background, s:yellow, \"\")\n\tcall <SID>X(\"TabLine\", s:foreground, s:background, \"reverse\")\n\tcall <SID>X(\"StatusLine\", s:window, s:yellow, \"reverse\")\n\tcall <SID>X(\"StatusLineNC\", s:window, s:foreground, \"reverse\")\n\tcall <SID>X(\"VertSplit\", s:window, s:window, \"none\")\n\tcall <SID>X(\"Visual\", \"\", s:selection, \"\")\n\tcall <SID>X(\"Directory\", s:blue, \"\", \"\")\n\tcall <SID>X(\"ModeMsg\", s:green, \"\", \"\")\n\tcall <SID>X(\"MoreMsg\", s:green, \"\", \"\")\n\tcall <SID>X(\"Question\", s:green, \"\", \"\")\n\tcall <SID>X(\"WarningMsg\", s:red, \"\", \"\")\n\tcall <SID>X(\"MatchParen\", \"\", s:selection, \"\")\n\tcall <SID>X(\"Folded\", s:comment, s:background, \"\")\n\tcall <SID>X(\"FoldColumn\", \"\", s:background, \"\")\n\tif version >= 700\n\t\tcall <SID>X(\"CursorLine\", \"\", s:line, \"none\")\n\t\tcall <SID>X(\"CursorColumn\", \"\", s:line, \"none\")\n\t\tcall <SID>X(\"PMenu\", s:foreground, s:selection, \"none\")\n\t\tcall <SID>X(\"PMenuSel\", s:foreground, s:selection, \"reverse\")\n\tend\n\tif version >= 703\n\t\tcall <SID>X(\"ColorColumn\", \"\", s:line, \"none\")\n\tend\n\n\t\" Standard Highlighting\n\tcall <SID>X(\"Comment\", s:comment, \"\", \"\")\n\tcall <SID>X(\"Todo\", s:comment, s:background, \"\")\n\tcall <SID>X(\"Title\", s:comment, \"\", \"\")\n\tcall <SID>X(\"Identifier\", s:red, \"\", \"none\")\n\tcall <SID>X(\"Statement\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"Conditional\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"Repeat\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"Structure\", s:purple, \"\", \"\")\n\tcall <SID>X(\"Function\", s:blue, \"\", \"\")\n\tcall <SID>X(\"Constant\", s:orange, \"\", \"\")\n\tcall <SID>X(\"String\", s:green, \"\", \"\")\n\tcall <SID>X(\"Special\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"PreProc\", s:purple, \"\", \"\")\n\tcall <SID>X(\"Operator\", s:aqua, \"\", \"none\")\n\tcall <SID>X(\"Type\", s:blue, \"\", \"none\")\n\tcall <SID>X(\"Define\", s:purple, \"\", \"none\")\n\tcall <SID>X(\"Include\", s:blue, \"\", \"\")\n\t\"call <SID>X(\"Ignore\", \"666666\", \"\", \"\")\n\n\t\" Vim Highlighting\n\tcall <SID>X(\"vimCommand\", s:red, \"\", \"none\")\n\n\t\" C Highlighting\n\tcall <SID>X(\"cType\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"cStorageClass\", s:purple, \"\", \"\")\n\tcall <SID>X(\"cConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"cRepeat\", s:purple, \"\", \"\")\n\n\t\" PHP Highlighting\n\tcall <SID>X(\"phpVarSelector\", s:red, \"\", \"\")\n\tcall <SID>X(\"phpKeyword\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpMemberSelector\", s:foreground, \"\", \"\")\n\n\t\" Ruby Highlighting\n\tcall <SID>X(\"rubySymbol\", s:green, \"\", \"\")\n\tcall <SID>X(\"rubyConstant\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"rubyAccess\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"rubyAttribute\", s:blue, \"\", \"\")\n\tcall <SID>X(\"rubyInclude\", s:blue, \"\", \"\")\n\tcall <SID>X(\"rubyLocalVariableOrMethod\", s:orange, \"\", \"\")\n\tcall <SID>X(\"rubyCurlyBlock\", s:orange, \"\", \"\")\n\tcall <SID>X(\"rubyStringDelimiter\", s:green, \"\", \"\")\n\tcall <SID>X(\"rubyInterpolationDelimiter\", s:orange, \"\", \"\")\n\tcall <SID>X(\"rubyConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"rubyRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"rubyControl\", s:purple, \"\", \"\")\n\tcall <SID>X(\"rubyException\", s:purple, \"\", \"\")\n\n\t\" Python Highlighting\n\tcall <SID>X(\"pythonInclude\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonException\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonFunction\", s:blue, \"\", \"\")\n\tcall <SID>X(\"pythonPreCondit\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonRepeat\", s:aqua, \"\", \"\")\n\tcall <SID>X(\"pythonExClass\", s:orange, \"\", \"\")\n\n\t\" JavaScript Highlighting\n\tcall <SID>X(\"javaScriptBraces\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"javaScriptFunction\", s:purple, \"\", \"\")\n\tcall <SID>X(\"javaScriptConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"javaScriptRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"javaScriptNumber\", s:orange, \"\", \"\")\n\tcall <SID>X(\"javaScriptMember\", s:orange, \"\", \"\")\n\n\t\" HTML Highlighting\n\tcall <SID>X(\"htmlTag\", s:red, \"\", \"\")\n\tcall <SID>X(\"htmlTagName\", s:red, \"\", \"\")\n\tcall <SID>X(\"htmlArg\", s:red, \"\", \"\")\n\tcall <SID>X(\"htmlScriptTag\", s:red, \"\", \"\")\n\n\t\" Diff Highlighting\n\tcall <SID>X(\"diffAdded\", s:green, \"\", \"\")\n\tcall <SID>X(\"diffRemoved\", s:red, \"\", \"\")\n\n\t\" Lua Highlighting\n\tcall <SID>X(\"luaStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCondStart\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCondElseif\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCond\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCondEnd\", s:purple, \"\", \"\")\n\n\t\" Cucumber Highlighting\n\tcall <SID>X(\"cucumberGiven\", s:blue, \"\", \"\")\n\tcall <SID>X(\"cucumberGivenAnd\", s:blue, \"\", \"\")\n\n\t\" Go Highlighting\n\tcall <SID>X(\"goDirective\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goDeclaration\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goConstants\", s:orange, \"\", \"\")\n\tcall <SID>X(\"goTodo\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"goDeclType\", s:blue, \"\", \"\")\n\tcall <SID>X(\"goBuiltins\", s:purple, \"\", \"\")\n\n\t\" Delete Functions\n\tdelf <SID>X\n\tdelf <SID>rgb\n\tdelf <SID>colour\n\tdelf <SID>rgb_colour\n\tdelf <SID>rgb_level\n\tdelf <SID>rgb_number\n\tdelf <SID>grey_colour\n\tdelf <SID>grey_level\n\tdelf <SID>grey_number\nendif\n\nset background=dark\n"
  },
  {
    "path": ".vim/bundle/tomorrow-night-vim/colors/Tomorrow-Night-Eighties.vim",
    "content": "\" Tomorrow Night Eighties - Full Colour and 256 Colour\n\" http://chriskempson.com\n\"\n\" Hex colour conversion functions borrowed from the theme \"Desert256\"\"\n\n\" Default GUI Colours\nlet s:foreground = \"cccccc\"\nlet s:background = \"2d2d2d\"\nlet s:selection = \"515151\"\nlet s:line = \"393939\"\nlet s:comment = \"999999\"\nlet s:red = \"f2777a\"\nlet s:orange = \"f99157\"\nlet s:yellow = \"ffcc66\"\nlet s:green = \"99cc99\"\nlet s:aqua = \"009999\"\nlet s:blue = \"99cccc\"\nlet s:purple = \"cc99cc\"\nlet s:window = \"4d5057\"\n\nhi clear\nsyntax reset\n\nlet g:colors_name = \"Tomorrow-Night-Eighties\"\n\nif has(\"gui_running\") || &t_Co == 88 || &t_Co == 256\n\t\" Returns an approximate grey index for the given grey level\n\tfun <SID>grey_number(x)\n\t\tif &t_Co == 88\n\t\t\tif a:x < 23\n\t\t\t\treturn 0\n\t\t\telseif a:x < 69\n\t\t\t\treturn 1\n\t\t\telseif a:x < 103\n\t\t\t\treturn 2\n\t\t\telseif a:x < 127\n\t\t\t\treturn 3\n\t\t\telseif a:x < 150\n\t\t\t\treturn 4\n\t\t\telseif a:x < 173\n\t\t\t\treturn 5\n\t\t\telseif a:x < 196\n\t\t\t\treturn 6\n\t\t\telseif a:x < 219\n\t\t\t\treturn 7\n\t\t\telseif a:x < 243\n\t\t\t\treturn 8\n\t\t\telse\n\t\t\t\treturn 9\n\t\t\tendif\n\t\telse\n\t\t\tif a:x < 14\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\tlet l:n = (a:x - 8) / 10\n\t\t\t\tlet l:m = (a:x - 8) % 10\n\t\t\t\tif l:m < 5\n\t\t\t\t\treturn l:n\n\t\t\t\telse\n\t\t\t\t\treturn l:n + 1\n\t\t\t\tendif\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the actual grey level represented by the grey index\n\tfun <SID>grey_level(n)\n\t\tif &t_Co == 88\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telseif a:n == 1\n\t\t\t\treturn 46\n\t\t\telseif a:n == 2\n\t\t\t\treturn 92\n\t\t\telseif a:n == 3\n\t\t\t\treturn 115\n\t\t\telseif a:n == 4\n\t\t\t\treturn 139\n\t\t\telseif a:n == 5\n\t\t\t\treturn 162\n\t\t\telseif a:n == 6\n\t\t\t\treturn 185\n\t\t\telseif a:n == 7\n\t\t\t\treturn 208\n\t\t\telseif a:n == 8\n\t\t\t\treturn 231\n\t\t\telse\n\t\t\t\treturn 255\n\t\t\tendif\n\t\telse\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\treturn 8 + (a:n * 10)\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index for the given grey index\n\tfun <SID>grey_colour(n)\n\t\tif &t_Co == 88\n\t\t\tif a:n == 0\n\t\t\t\treturn 16\n\t\t\telseif a:n == 9\n\t\t\t\treturn 79\n\t\t\telse\n\t\t\t\treturn 79 + a:n\n\t\t\tendif\n\t\telse\n\t\t\tif a:n == 0\n\t\t\t\treturn 16\n\t\t\telseif a:n == 25\n\t\t\t\treturn 231\n\t\t\telse\n\t\t\t\treturn 231 + a:n\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns an approximate colour index for the given colour level\n\tfun <SID>rgb_number(x)\n\t\tif &t_Co == 88\n\t\t\tif a:x < 69\n\t\t\t\treturn 0\n\t\t\telseif a:x < 172\n\t\t\t\treturn 1\n\t\t\telseif a:x < 230\n\t\t\t\treturn 2\n\t\t\telse\n\t\t\t\treturn 3\n\t\t\tendif\n\t\telse\n\t\t\tif a:x < 75\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\tlet l:n = (a:x - 55) / 40\n\t\t\t\tlet l:m = (a:x - 55) % 40\n\t\t\t\tif l:m < 20\n\t\t\t\t\treturn l:n\n\t\t\t\telse\n\t\t\t\t\treturn l:n + 1\n\t\t\t\tendif\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the actual colour level for the given colour index\n\tfun <SID>rgb_level(n)\n\t\tif &t_Co == 88\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telseif a:n == 1\n\t\t\t\treturn 139\n\t\t\telseif a:n == 2\n\t\t\t\treturn 205\n\t\t\telse\n\t\t\t\treturn 255\n\t\t\tendif\n\t\telse\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\treturn 55 + (a:n * 40)\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index for the given R/G/B colour indices\n\tfun <SID>rgb_colour(x, y, z)\n\t\tif &t_Co == 88\n\t\t\treturn 16 + (a:x * 16) + (a:y * 4) + a:z\n\t\telse\n\t\t\treturn 16 + (a:x * 36) + (a:y * 6) + a:z\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index to approximate the given R/G/B colour levels\n\tfun <SID>colour(r, g, b)\n\t\t\" Get the closest grey\n\t\tlet l:gx = <SID>grey_number(a:r)\n\t\tlet l:gy = <SID>grey_number(a:g)\n\t\tlet l:gz = <SID>grey_number(a:b)\n\n\t\t\" Get the closest colour\n\t\tlet l:x = <SID>rgb_number(a:r)\n\t\tlet l:y = <SID>rgb_number(a:g)\n\t\tlet l:z = <SID>rgb_number(a:b)\n\n\t\tif l:gx == l:gy && l:gy == l:gz\n\t\t\t\" There are two possibilities\n\t\t\tlet l:dgr = <SID>grey_level(l:gx) - a:r\n\t\t\tlet l:dgg = <SID>grey_level(l:gy) - a:g\n\t\t\tlet l:dgb = <SID>grey_level(l:gz) - a:b\n\t\t\tlet l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)\n\t\t\tlet l:dr = <SID>rgb_level(l:gx) - a:r\n\t\t\tlet l:dg = <SID>rgb_level(l:gy) - a:g\n\t\t\tlet l:db = <SID>rgb_level(l:gz) - a:b\n\t\t\tlet l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db)\n\t\t\tif l:dgrey < l:drgb\n\t\t\t\t\" Use the grey\n\t\t\t\treturn <SID>grey_colour(l:gx)\n\t\t\telse\n\t\t\t\t\" Use the colour\n\t\t\t\treturn <SID>rgb_colour(l:x, l:y, l:z)\n\t\t\tendif\n\t\telse\n\t\t\t\" Only one possibility\n\t\t\treturn <SID>rgb_colour(l:x, l:y, l:z)\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index to approximate the 'rrggbb' hex string\n\tfun <SID>rgb(rgb)\n\t\tlet l:r = (\"0x\" . strpart(a:rgb, 0, 2)) + 0\n\t\tlet l:g = (\"0x\" . strpart(a:rgb, 2, 2)) + 0\n\t\tlet l:b = (\"0x\" . strpart(a:rgb, 4, 2)) + 0\n\n\t\treturn <SID>colour(l:r, l:g, l:b)\n\tendfun\n\n\t\" Sets the highlighting for the given group\n\tfun <SID>X(group, fg, bg, attr)\n\t\tif a:fg != \"\"\n\t\t\texec \"hi \" . a:group . \" guifg=#\" . a:fg . \" ctermfg=\" . <SID>rgb(a:fg)\n\t\tendif\n\t\tif a:bg != \"\"\n\t\t\texec \"hi \" . a:group . \" guibg=#\" . a:bg . \" ctermbg=\" . <SID>rgb(a:bg)\n\t\tendif\n\t\tif a:attr != \"\"\n\t\t\texec \"hi \" . a:group . \" gui=\" . a:attr . \" cterm=\" . a:attr\n\t\tendif\n\tendfun\n\n\t\" Vim Highlighting\n\tcall <SID>X(\"Normal\", s:foreground, s:background, \"\")\n\tcall <SID>X(\"LineNr\", s:selection, \"\", \"\")\n\tcall <SID>X(\"NonText\", s:selection, \"\", \"\")\n\tcall <SID>X(\"SpecialKey\", s:selection, \"\", \"\")\n\tcall <SID>X(\"Search\", s:background, s:yellow, \"\")\n\tcall <SID>X(\"TabLine\", s:foreground, s:background, \"reverse\")\n\tcall <SID>X(\"StatusLine\", s:window, s:yellow, \"reverse\")\n\tcall <SID>X(\"StatusLineNC\", s:window, s:foreground, \"reverse\")\n\tcall <SID>X(\"VertSplit\", s:window, s:window, \"none\")\n\tcall <SID>X(\"Visual\", \"\", s:selection, \"\")\n\tcall <SID>X(\"Directory\", s:blue, \"\", \"\")\n\tcall <SID>X(\"ModeMsg\", s:green, \"\", \"\")\n\tcall <SID>X(\"MoreMsg\", s:green, \"\", \"\")\n\tcall <SID>X(\"Question\", s:green, \"\", \"\")\n\tcall <SID>X(\"WarningMsg\", s:red, \"\", \"\")\n\tcall <SID>X(\"MatchParen\", \"\", s:selection, \"\")\n\tcall <SID>X(\"Folded\", s:comment, s:background, \"\")\n\tcall <SID>X(\"FoldColumn\", \"\", s:background, \"\")\n\tif version >= 700\n\t\tcall <SID>X(\"CursorLine\", \"\", s:line, \"none\")\n\t\tcall <SID>X(\"CursorColumn\", \"\", s:line, \"none\")\n\t\tcall <SID>X(\"PMenu\", s:foreground, s:selection, \"none\")\n\t\tcall <SID>X(\"PMenuSel\", s:foreground, s:selection, \"reverse\")\n\tend\n\tif version >= 703\n\t\tcall <SID>X(\"ColorColumn\", \"\", s:line, \"none\")\n\tend\n\n\t\" Standard Highlighting\n\tcall <SID>X(\"Comment\", s:comment, \"\", \"\")\n\tcall <SID>X(\"Todo\", s:comment, s:background, \"\")\n\tcall <SID>X(\"Title\", s:comment, \"\", \"\")\n\tcall <SID>X(\"Identifier\", s:red, \"\", \"none\")\n\tcall <SID>X(\"Statement\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"Conditional\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"Repeat\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"Structure\", s:purple, \"\", \"\")\n\tcall <SID>X(\"Function\", s:blue, \"\", \"\")\n\tcall <SID>X(\"Constant\", s:orange, \"\", \"\")\n\tcall <SID>X(\"String\", s:green, \"\", \"\")\n\tcall <SID>X(\"Special\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"PreProc\", s:purple, \"\", \"\")\n\tcall <SID>X(\"Operator\", s:aqua, \"\", \"none\")\n\tcall <SID>X(\"Type\", s:blue, \"\", \"none\")\n\tcall <SID>X(\"Define\", s:purple, \"\", \"none\")\n\tcall <SID>X(\"Include\", s:blue, \"\", \"\")\n\t\"call <SID>X(\"Ignore\", \"666666\", \"\", \"\")\n\n\t\" Vim Highlighting\n\tcall <SID>X(\"vimCommand\", s:red, \"\", \"none\")\n\n\t\" C Highlighting\n\tcall <SID>X(\"cType\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"cStorageClass\", s:purple, \"\", \"\")\n\tcall <SID>X(\"cConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"cRepeat\", s:purple, \"\", \"\")\n\n\t\" PHP Highlighting\n\tcall <SID>X(\"phpVarSelector\", s:red, \"\", \"\")\n\tcall <SID>X(\"phpKeyword\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpMemberSelector\", s:foreground, \"\", \"\")\n\n\t\" Ruby Highlighting\n\tcall <SID>X(\"rubySymbol\", s:green, \"\", \"\")\n\tcall <SID>X(\"rubyConstant\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"rubyAccess\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"rubyAttribute\", s:blue, \"\", \"\")\n\tcall <SID>X(\"rubyInclude\", s:blue, \"\", \"\")\n\tcall <SID>X(\"rubyLocalVariableOrMethod\", s:orange, \"\", \"\")\n\tcall <SID>X(\"rubyCurlyBlock\", s:orange, \"\", \"\")\n\tcall <SID>X(\"rubyStringDelimiter\", s:green, \"\", \"\")\n\tcall <SID>X(\"rubyInterpolationDelimiter\", s:orange, \"\", \"\")\n\tcall <SID>X(\"rubyConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"rubyRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"rubyControl\", s:purple, \"\", \"\")\n\tcall <SID>X(\"rubyException\", s:purple, \"\", \"\")\n\n\t\" Python Highlighting\n\tcall <SID>X(\"pythonInclude\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonException\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonFunction\", s:blue, \"\", \"\")\n\tcall <SID>X(\"pythonPreCondit\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonRepeat\", s:aqua, \"\", \"\")\n\tcall <SID>X(\"pythonExClass\", s:orange, \"\", \"\")\n\n\t\" JavaScript Highlighting\n\tcall <SID>X(\"javaScriptBraces\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"javaScriptFunction\", s:purple, \"\", \"\")\n\tcall <SID>X(\"javaScriptConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"javaScriptRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"javaScriptNumber\", s:orange, \"\", \"\")\n\tcall <SID>X(\"javaScriptMember\", s:orange, \"\", \"\")\n\n\t\" HTML Highlighting\n\tcall <SID>X(\"htmlTag\", s:red, \"\", \"\")\n\tcall <SID>X(\"htmlTagName\", s:red, \"\", \"\")\n\tcall <SID>X(\"htmlArg\", s:red, \"\", \"\")\n\tcall <SID>X(\"htmlScriptTag\", s:red, \"\", \"\")\n\n\t\" Diff Highlighting\n\tcall <SID>X(\"diffAdded\", s:green, \"\", \"\")\n\tcall <SID>X(\"diffRemoved\", s:red, \"\", \"\")\n\n\t\" Lua Highlighting\n\tcall <SID>X(\"luaStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCondStart\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCondElseif\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCond\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCondEnd\", s:purple, \"\", \"\")\n\n\t\" Cucumber Highlighting\n\tcall <SID>X(\"cucumberGiven\", s:blue, \"\", \"\")\n\tcall <SID>X(\"cucumberGivenAnd\", s:blue, \"\", \"\")\n\n\t\" Go Highlighting\n\tcall <SID>X(\"goDirective\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goDeclaration\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goConstants\", s:orange, \"\", \"\")\n\tcall <SID>X(\"goTodo\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"goDeclType\", s:blue, \"\", \"\")\n\tcall <SID>X(\"goBuiltins\", s:purple, \"\", \"\")\n\n\t\" Delete Functions\n\tdelf <SID>X\n\tdelf <SID>rgb\n\tdelf <SID>colour\n\tdelf <SID>rgb_colour\n\tdelf <SID>rgb_level\n\tdelf <SID>rgb_number\n\tdelf <SID>grey_colour\n\tdelf <SID>grey_level\n\tdelf <SID>grey_number\nendif\n\nset background=dark\n"
  },
  {
    "path": ".vim/bundle/tomorrow-night-vim/colors/Tomorrow-Night.vim",
    "content": "\" Tomorrow Night - Full Colour and 256 Colour\n\" http://chriskempson.com\n\"\n\" Hex colour conversion functions borrowed from the theme \"Desert256\"\"\n\n\" Default GUI Colours\nlet s:foreground = \"c5c8c6\"\nlet s:background = \"1d1f21\"\nlet s:selection = \"373b41\"\nlet s:line = \"282a2e\"\nlet s:comment = \"969896\"\nlet s:red = \"cc6666\"\nlet s:orange = \"de935f\"\nlet s:yellow = \"f0c674\"\nlet s:green = \"b5bd68\"\nlet s:aqua = \"8abeb7\"\nlet s:blue = \"81a2be\"\nlet s:purple = \"b294bb\"\nlet s:window = \"4d5057\"\n\n\" Console 256 Colours\nif !has(\"gui_running\")\n\tlet s:background = \"303030\"\n\tlet s:window = \"5e5e5e\"\n\tlet s:line = \"3a3a3a\"\n\tlet s:selection = \"585858\"\nend\n\nhi clear\nsyntax reset\n\nlet g:colors_name = \"Tomorrow-Night\"\n\nif has(\"gui_running\") || &t_Co == 88 || &t_Co == 256\n\t\" Returns an approximate grey index for the given grey level\n\tfun <SID>grey_number(x)\n\t\tif &t_Co == 88\n\t\t\tif a:x < 23\n\t\t\t\treturn 0\n\t\t\telseif a:x < 69\n\t\t\t\treturn 1\n\t\t\telseif a:x < 103\n\t\t\t\treturn 2\n\t\t\telseif a:x < 127\n\t\t\t\treturn 3\n\t\t\telseif a:x < 150\n\t\t\t\treturn 4\n\t\t\telseif a:x < 173\n\t\t\t\treturn 5\n\t\t\telseif a:x < 196\n\t\t\t\treturn 6\n\t\t\telseif a:x < 219\n\t\t\t\treturn 7\n\t\t\telseif a:x < 243\n\t\t\t\treturn 8\n\t\t\telse\n\t\t\t\treturn 9\n\t\t\tendif\n\t\telse\n\t\t\tif a:x < 14\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\tlet l:n = (a:x - 8) / 10\n\t\t\t\tlet l:m = (a:x - 8) % 10\n\t\t\t\tif l:m < 5\n\t\t\t\t\treturn l:n\n\t\t\t\telse\n\t\t\t\t\treturn l:n + 1\n\t\t\t\tendif\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the actual grey level represented by the grey index\n\tfun <SID>grey_level(n)\n\t\tif &t_Co == 88\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telseif a:n == 1\n\t\t\t\treturn 46\n\t\t\telseif a:n == 2\n\t\t\t\treturn 92\n\t\t\telseif a:n == 3\n\t\t\t\treturn 115\n\t\t\telseif a:n == 4\n\t\t\t\treturn 139\n\t\t\telseif a:n == 5\n\t\t\t\treturn 162\n\t\t\telseif a:n == 6\n\t\t\t\treturn 185\n\t\t\telseif a:n == 7\n\t\t\t\treturn 208\n\t\t\telseif a:n == 8\n\t\t\t\treturn 231\n\t\t\telse\n\t\t\t\treturn 255\n\t\t\tendif\n\t\telse\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\treturn 8 + (a:n * 10)\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index for the given grey index\n\tfun <SID>grey_colour(n)\n\t\tif &t_Co == 88\n\t\t\tif a:n == 0\n\t\t\t\treturn 16\n\t\t\telseif a:n == 9\n\t\t\t\treturn 79\n\t\t\telse\n\t\t\t\treturn 79 + a:n\n\t\t\tendif\n\t\telse\n\t\t\tif a:n == 0\n\t\t\t\treturn 16\n\t\t\telseif a:n == 25\n\t\t\t\treturn 231\n\t\t\telse\n\t\t\t\treturn 231 + a:n\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns an approximate colour index for the given colour level\n\tfun <SID>rgb_number(x)\n\t\tif &t_Co == 88\n\t\t\tif a:x < 69\n\t\t\t\treturn 0\n\t\t\telseif a:x < 172\n\t\t\t\treturn 1\n\t\t\telseif a:x < 230\n\t\t\t\treturn 2\n\t\t\telse\n\t\t\t\treturn 3\n\t\t\tendif\n\t\telse\n\t\t\tif a:x < 75\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\tlet l:n = (a:x - 55) / 40\n\t\t\t\tlet l:m = (a:x - 55) % 40\n\t\t\t\tif l:m < 20\n\t\t\t\t\treturn l:n\n\t\t\t\telse\n\t\t\t\t\treturn l:n + 1\n\t\t\t\tendif\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the actual colour level for the given colour index\n\tfun <SID>rgb_level(n)\n\t\tif &t_Co == 88\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telseif a:n == 1\n\t\t\t\treturn 139\n\t\t\telseif a:n == 2\n\t\t\t\treturn 205\n\t\t\telse\n\t\t\t\treturn 255\n\t\t\tendif\n\t\telse\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\treturn 55 + (a:n * 40)\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index for the given R/G/B colour indices\n\tfun <SID>rgb_colour(x, y, z)\n\t\tif &t_Co == 88\n\t\t\treturn 16 + (a:x * 16) + (a:y * 4) + a:z\n\t\telse\n\t\t\treturn 16 + (a:x * 36) + (a:y * 6) + a:z\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index to approximate the given R/G/B colour levels\n\tfun <SID>colour(r, g, b)\n\t\t\" Get the closest grey\n\t\tlet l:gx = <SID>grey_number(a:r)\n\t\tlet l:gy = <SID>grey_number(a:g)\n\t\tlet l:gz = <SID>grey_number(a:b)\n\n\t\t\" Get the closest colour\n\t\tlet l:x = <SID>rgb_number(a:r)\n\t\tlet l:y = <SID>rgb_number(a:g)\n\t\tlet l:z = <SID>rgb_number(a:b)\n\n\t\tif l:gx == l:gy && l:gy == l:gz\n\t\t\t\" There are two possibilities\n\t\t\tlet l:dgr = <SID>grey_level(l:gx) - a:r\n\t\t\tlet l:dgg = <SID>grey_level(l:gy) - a:g\n\t\t\tlet l:dgb = <SID>grey_level(l:gz) - a:b\n\t\t\tlet l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)\n\t\t\tlet l:dr = <SID>rgb_level(l:gx) - a:r\n\t\t\tlet l:dg = <SID>rgb_level(l:gy) - a:g\n\t\t\tlet l:db = <SID>rgb_level(l:gz) - a:b\n\t\t\tlet l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db)\n\t\t\tif l:dgrey < l:drgb\n\t\t\t\t\" Use the grey\n\t\t\t\treturn <SID>grey_colour(l:gx)\n\t\t\telse\n\t\t\t\t\" Use the colour\n\t\t\t\treturn <SID>rgb_colour(l:x, l:y, l:z)\n\t\t\tendif\n\t\telse\n\t\t\t\" Only one possibility\n\t\t\treturn <SID>rgb_colour(l:x, l:y, l:z)\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index to approximate the 'rrggbb' hex string\n\tfun <SID>rgb(rgb)\n\t\tlet l:r = (\"0x\" . strpart(a:rgb, 0, 2)) + 0\n\t\tlet l:g = (\"0x\" . strpart(a:rgb, 2, 2)) + 0\n\t\tlet l:b = (\"0x\" . strpart(a:rgb, 4, 2)) + 0\n\n\t\treturn <SID>colour(l:r, l:g, l:b)\n\tendfun\n\n\t\" Sets the highlighting for the given group\n\tfun <SID>X(group, fg, bg, attr)\n\t\tif a:fg != \"\"\n\t\t\texec \"hi \" . a:group . \" guifg=#\" . a:fg . \" ctermfg=\" . <SID>rgb(a:fg)\n\t\tendif\n\t\tif a:bg != \"\"\n\t\t\texec \"hi \" . a:group . \" guibg=#\" . a:bg . \" ctermbg=\" . <SID>rgb(a:bg)\n\t\tendif\n\t\tif a:attr != \"\"\n\t\t\texec \"hi \" . a:group . \" gui=\" . a:attr . \" cterm=\" . a:attr\n\t\tendif\n\tendfun\n\n\t\" Vim Highlighting\n\tcall <SID>X(\"Normal\", s:foreground, s:background, \"\")\n\tcall <SID>X(\"LineNr\", s:selection, \"\", \"\")\n\tcall <SID>X(\"NonText\", s:selection, \"\", \"\")\n\tcall <SID>X(\"SpecialKey\", s:selection, \"\", \"\")\n\tcall <SID>X(\"Search\", s:background, s:yellow, \"\")\n\tcall <SID>X(\"TabLine\", s:window, s:foreground, \"reverse\")\n\tcall <SID>X(\"TabLineFill\", s:window, s:foreground, \"reverse\")\n\tcall <SID>X(\"StatusLine\", s:window, s:yellow, \"reverse\")\n\tcall <SID>X(\"StatusLineNC\", s:window, s:foreground, \"reverse\")\n\tcall <SID>X(\"VertSplit\", s:window, s:window, \"none\")\n\tcall <SID>X(\"Visual\", \"\", s:selection, \"\")\n\tcall <SID>X(\"Directory\", s:blue, \"\", \"\")\n\tcall <SID>X(\"ModeMsg\", s:green, \"\", \"\")\n\tcall <SID>X(\"MoreMsg\", s:green, \"\", \"\")\n\tcall <SID>X(\"Question\", s:green, \"\", \"\")\n\tcall <SID>X(\"WarningMsg\", s:red, \"\", \"\")\n\tcall <SID>X(\"MatchParen\", \"\", s:selection, \"\")\n\tcall <SID>X(\"Folded\", s:comment, s:background, \"\")\n\tcall <SID>X(\"FoldColumn\", \"\", s:background, \"\")\n\tif version >= 700\n\t\tcall <SID>X(\"CursorLine\", \"\", s:line, \"none\")\n\t\tcall <SID>X(\"CursorColumn\", \"\", s:line, \"none\")\n\t\tcall <SID>X(\"PMenu\", s:foreground, s:selection, \"none\")\n\t\tcall <SID>X(\"PMenuSel\", s:foreground, s:selection, \"reverse\")\n\t\tcall <SID>X(\"SignColumn\", \"\", s:background, \"none\")\n\tend\n\tif version >= 703\n\t\tcall <SID>X(\"ColorColumn\", \"\", s:line, \"none\")\n\tend\n\n\t\" Standard Highlighting\n\tcall <SID>X(\"Comment\", s:comment, \"\", \"\")\n\tcall <SID>X(\"Todo\", s:comment, s:background, \"\")\n\tcall <SID>X(\"Title\", s:comment, \"\", \"\")\n\tcall <SID>X(\"Identifier\", s:red, \"\", \"none\")\n\tcall <SID>X(\"Statement\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"Conditional\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"Repeat\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"Structure\", s:purple, \"\", \"\")\n\tcall <SID>X(\"Function\", s:blue, \"\", \"\")\n\tcall <SID>X(\"Constant\", s:orange, \"\", \"\")\n\tcall <SID>X(\"String\", s:green, \"\", \"\")\n\tcall <SID>X(\"Special\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"PreProc\", s:purple, \"\", \"\")\n\tcall <SID>X(\"Operator\", s:aqua, \"\", \"none\")\n\tcall <SID>X(\"Type\", s:blue, \"\", \"none\")\n\tcall <SID>X(\"Define\", s:purple, \"\", \"none\")\n\tcall <SID>X(\"Include\", s:blue, \"\", \"\")\n\t\"call <SID>X(\"Ignore\", \"666666\", \"\", \"\")\n\n\t\" Vim Highlighting\n\tcall <SID>X(\"vimCommand\", s:red, \"\", \"none\")\n\n\t\" C Highlighting\n\tcall <SID>X(\"cType\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"cStorageClass\", s:purple, \"\", \"\")\n\tcall <SID>X(\"cConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"cRepeat\", s:purple, \"\", \"\")\n\n\t\" PHP Highlighting\n\tcall <SID>X(\"phpVarSelector\", s:red, \"\", \"\")\n\tcall <SID>X(\"phpKeyword\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpMemberSelector\", s:foreground, \"\", \"\")\n\n\t\" Ruby Highlighting\n\tcall <SID>X(\"rubySymbol\", s:green, \"\", \"\")\n\tcall <SID>X(\"rubyConstant\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"rubyAccess\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"rubyAttribute\", s:blue, \"\", \"\")\n\tcall <SID>X(\"rubyInclude\", s:blue, \"\", \"\")\n\tcall <SID>X(\"rubyLocalVariableOrMethod\", s:orange, \"\", \"\")\n\tcall <SID>X(\"rubyCurlyBlock\", s:orange, \"\", \"\")\n\tcall <SID>X(\"rubyStringDelimiter\", s:green, \"\", \"\")\n\tcall <SID>X(\"rubyInterpolationDelimiter\", s:orange, \"\", \"\")\n\tcall <SID>X(\"rubyConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"rubyRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"rubyControl\", s:purple, \"\", \"\")\n\tcall <SID>X(\"rubyException\", s:purple, \"\", \"\")\n\n\t\" Python Highlighting\n\tcall <SID>X(\"pythonInclude\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonException\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonFunction\", s:blue, \"\", \"\")\n\tcall <SID>X(\"pythonPreCondit\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonRepeat\", s:aqua, \"\", \"\")\n\tcall <SID>X(\"pythonExClass\", s:orange, \"\", \"\")\n\n\t\" JavaScript Highlighting\n\tcall <SID>X(\"javaScriptBraces\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"javaScriptFunction\", s:purple, \"\", \"\")\n\tcall <SID>X(\"javaScriptConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"javaScriptRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"javaScriptNumber\", s:orange, \"\", \"\")\n\tcall <SID>X(\"javaScriptMember\", s:orange, \"\", \"\")\n\n\t\" HTML Highlighting\n\tcall <SID>X(\"htmlTag\", s:red, \"\", \"\")\n\tcall <SID>X(\"htmlTagName\", s:red, \"\", \"\")\n\tcall <SID>X(\"htmlArg\", s:red, \"\", \"\")\n\tcall <SID>X(\"htmlScriptTag\", s:red, \"\", \"\")\n\n\t\" Diff Highlighting\n\tcall <SID>X(\"diffAdded\", s:green, \"\", \"\")\n\tcall <SID>X(\"diffRemoved\", s:red, \"\", \"\")\n\n\t\" ShowMarks Highlighting\n\tcall <SID>X(\"ShowMarksHLl\", s:orange, s:background, \"none\")\n\tcall <SID>X(\"ShowMarksHLo\", s:purple, s:background, \"none\")\n\tcall <SID>X(\"ShowMarksHLu\", s:yellow, s:background, \"none\")\n\tcall <SID>X(\"ShowMarksHLm\", s:aqua, s:background, \"none\")\n\n\t\" Cucumber Highlighting\n\tcall <SID>X(\"cucumberGiven\", s:blue, \"\", \"\")\n\tcall <SID>X(\"cucumberGivenAnd\", s:blue, \"\", \"\")\n\n\t\" Go Highlighting\n\tcall <SID>X(\"goDirective\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goDeclaration\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goConstants\", s:orange, \"\", \"\")\n\tcall <SID>X(\"goTodo\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"goDeclType\", s:blue, \"\", \"\")\n\tcall <SID>X(\"goBuiltins\", s:purple, \"\", \"\")\n\n\t\" Lua Highlighting\n\tcall <SID>X(\"luaStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCondStart\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCondElseif\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCond\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCondEnd\", s:purple, \"\", \"\")\n\n\t\" Delete Functions\n\tdelf <SID>X\n\tdelf <SID>rgb\n\tdelf <SID>colour\n\tdelf <SID>rgb_colour\n\tdelf <SID>rgb_level\n\tdelf <SID>rgb_number\n\tdelf <SID>grey_colour\n\tdelf <SID>grey_level\n\tdelf <SID>grey_number\nendif\n\nset background=dark\n"
  },
  {
    "path": ".vim/bundle/tomorrow-night-vim/colors/Tomorrow.vim",
    "content": "\" Tomorrow - Full Colour and 256 Colour\n\" http://chriskempson.com\n\"\n\" Hex colour conversion functions borrowed from the theme \"Desert256\"\"\n\n\" Default GUI Colours\nlet s:foreground = \"4d4d4c\"\nlet s:background = \"fafafa\"\nlet s:selection = \"d6d6d6\"\nlet s:line = \"efefef\"\nlet s:comment = \"8e908c\"\nlet s:red = \"c82829\"\nlet s:orange = \"f5871f\"\nlet s:yellow = \"eab700\"\nlet s:green = \"718c00\"\nlet s:aqua = \"3e999f\"\nlet s:blue = \"4271ae\"\nlet s:purple = \"8959a8\"\nlet s:window = \"efefef\"\n\nset background=light\nhi clear\nsyntax reset\n\nlet g:colors_name = \"Tomorrow\"\n\nif has(\"gui_running\") || &t_Co == 88 || &t_Co == 256\n\t\" Returns an approximate grey index for the given grey level\n\tfun <SID>grey_number(x)\n\t\tif &t_Co == 88\n\t\t\tif a:x < 23\n\t\t\t\treturn 0\n\t\t\telseif a:x < 69\n\t\t\t\treturn 1\n\t\t\telseif a:x < 103\n\t\t\t\treturn 2\n\t\t\telseif a:x < 127\n\t\t\t\treturn 3\n\t\t\telseif a:x < 150\n\t\t\t\treturn 4\n\t\t\telseif a:x < 173\n\t\t\t\treturn 5\n\t\t\telseif a:x < 196\n\t\t\t\treturn 6\n\t\t\telseif a:x < 219\n\t\t\t\treturn 7\n\t\t\telseif a:x < 243\n\t\t\t\treturn 8\n\t\t\telse\n\t\t\t\treturn 9\n\t\t\tendif\n\t\telse\n\t\t\tif a:x < 14\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\tlet l:n = (a:x - 8) / 10\n\t\t\t\tlet l:m = (a:x - 8) % 10\n\t\t\t\tif l:m < 5\n\t\t\t\t\treturn l:n\n\t\t\t\telse\n\t\t\t\t\treturn l:n + 1\n\t\t\t\tendif\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the actual grey level represented by the grey index\n\tfun <SID>grey_level(n)\n\t\tif &t_Co == 88\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telseif a:n == 1\n\t\t\t\treturn 46\n\t\t\telseif a:n == 2\n\t\t\t\treturn 92\n\t\t\telseif a:n == 3\n\t\t\t\treturn 115\n\t\t\telseif a:n == 4\n\t\t\t\treturn 139\n\t\t\telseif a:n == 5\n\t\t\t\treturn 162\n\t\t\telseif a:n == 6\n\t\t\t\treturn 185\n\t\t\telseif a:n == 7\n\t\t\t\treturn 208\n\t\t\telseif a:n == 8\n\t\t\t\treturn 231\n\t\t\telse\n\t\t\t\treturn 255\n\t\t\tendif\n\t\telse\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\treturn 8 + (a:n * 10)\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index for the given grey index\n\tfun <SID>grey_colour(n)\n\t\tif &t_Co == 88\n\t\t\tif a:n == 0\n\t\t\t\treturn 16\n\t\t\telseif a:n == 9\n\t\t\t\treturn 79\n\t\t\telse\n\t\t\t\treturn 79 + a:n\n\t\t\tendif\n\t\telse\n\t\t\tif a:n == 0\n\t\t\t\treturn 16\n\t\t\telseif a:n == 25\n\t\t\t\treturn 231\n\t\t\telse\n\t\t\t\treturn 231 + a:n\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns an approximate colour index for the given colour level\n\tfun <SID>rgb_number(x)\n\t\tif &t_Co == 88\n\t\t\tif a:x < 69\n\t\t\t\treturn 0\n\t\t\telseif a:x < 172\n\t\t\t\treturn 1\n\t\t\telseif a:x < 230\n\t\t\t\treturn 2\n\t\t\telse\n\t\t\t\treturn 3\n\t\t\tendif\n\t\telse\n\t\t\tif a:x < 75\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\tlet l:n = (a:x - 55) / 40\n\t\t\t\tlet l:m = (a:x - 55) % 40\n\t\t\t\tif l:m < 20\n\t\t\t\t\treturn l:n\n\t\t\t\telse\n\t\t\t\t\treturn l:n + 1\n\t\t\t\tendif\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the actual colour level for the given colour index\n\tfun <SID>rgb_level(n)\n\t\tif &t_Co == 88\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telseif a:n == 1\n\t\t\t\treturn 139\n\t\t\telseif a:n == 2\n\t\t\t\treturn 205\n\t\t\telse\n\t\t\t\treturn 255\n\t\t\tendif\n\t\telse\n\t\t\tif a:n == 0\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\treturn 55 + (a:n * 40)\n\t\t\tendif\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index for the given R/G/B colour indices\n\tfun <SID>rgb_colour(x, y, z)\n\t\tif &t_Co == 88\n\t\t\treturn 16 + (a:x * 16) + (a:y * 4) + a:z\n\t\telse\n\t\t\treturn 16 + (a:x * 36) + (a:y * 6) + a:z\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index to approximate the given R/G/B colour levels\n\tfun <SID>colour(r, g, b)\n\t\t\" Get the closest grey\n\t\tlet l:gx = <SID>grey_number(a:r)\n\t\tlet l:gy = <SID>grey_number(a:g)\n\t\tlet l:gz = <SID>grey_number(a:b)\n\n\t\t\" Get the closest colour\n\t\tlet l:x = <SID>rgb_number(a:r)\n\t\tlet l:y = <SID>rgb_number(a:g)\n\t\tlet l:z = <SID>rgb_number(a:b)\n\n\t\tif l:gx == l:gy && l:gy == l:gz\n\t\t\t\" There are two possibilities\n\t\t\tlet l:dgr = <SID>grey_level(l:gx) - a:r\n\t\t\tlet l:dgg = <SID>grey_level(l:gy) - a:g\n\t\t\tlet l:dgb = <SID>grey_level(l:gz) - a:b\n\t\t\tlet l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)\n\t\t\tlet l:dr = <SID>rgb_level(l:gx) - a:r\n\t\t\tlet l:dg = <SID>rgb_level(l:gy) - a:g\n\t\t\tlet l:db = <SID>rgb_level(l:gz) - a:b\n\t\t\tlet l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db)\n\t\t\tif l:dgrey < l:drgb\n\t\t\t\t\" Use the grey\n\t\t\t\treturn <SID>grey_colour(l:gx)\n\t\t\telse\n\t\t\t\t\" Use the colour\n\t\t\t\treturn <SID>rgb_colour(l:x, l:y, l:z)\n\t\t\tendif\n\t\telse\n\t\t\t\" Only one possibility\n\t\t\treturn <SID>rgb_colour(l:x, l:y, l:z)\n\t\tendif\n\tendfun\n\n\t\" Returns the palette index to approximate the 'rrggbb' hex string\n\tfun <SID>rgb(rgb)\n\t\tlet l:r = (\"0x\" . strpart(a:rgb, 0, 2)) + 0\n\t\tlet l:g = (\"0x\" . strpart(a:rgb, 2, 2)) + 0\n\t\tlet l:b = (\"0x\" . strpart(a:rgb, 4, 2)) + 0\n\n\t\treturn <SID>colour(l:r, l:g, l:b)\n\tendfun\n\n\t\" Sets the highlighting for the given group\n\tfun <SID>X(group, fg, bg, attr)\n\t\tif a:fg != \"\"\n\t\t\texec \"hi \" . a:group . \" guifg=#\" . a:fg . \" ctermfg=\" . <SID>rgb(a:fg)\n\t\tendif\n\t\tif a:bg != \"\"\n\t\t\texec \"hi \" . a:group . \" guibg=#\" . a:bg . \" ctermbg=\" . <SID>rgb(a:bg)\n\t\tendif\n\t\tif a:attr != \"\"\n\t\t\texec \"hi \" . a:group . \" gui=\" . a:attr . \" cterm=\" . a:attr\n\t\tendif\n\tendfun\n\n\t\" Vim Highlighting\n\tcall <SID>X(\"Normal\", s:foreground, s:background, \"\")\n  highlight LineNr term=bold cterm=NONE ctermfg=DarkGrey ctermbg=NONE gui=NONE guifg=DarkGrey guibg=NONE\n\tcall <SID>X(\"NonText\", s:selection, \"\", \"\")\n\tcall <SID>X(\"SpecialKey\", s:selection, \"\", \"\")\n\tcall <SID>X(\"Search\", s:foreground, s:yellow, \"\")\n\tcall <SID>X(\"TabLine\", s:foreground, s:background, \"reverse\")\n\tcall <SID>X(\"StatusLine\", s:window, s:yellow, \"reverse\")\n\tcall <SID>X(\"StatusLineNC\", s:window, s:foreground, \"reverse\")\n\tcall <SID>X(\"VertSplit\", s:window, s:window, \"none\")\n\tcall <SID>X(\"Visual\", \"\", s:selection, \"\")\n\tcall <SID>X(\"Directory\", s:blue, \"\", \"\")\n\tcall <SID>X(\"ModeMsg\", s:green, \"\", \"\")\n\tcall <SID>X(\"MoreMsg\", s:green, \"\", \"\")\n\tcall <SID>X(\"Question\", s:green, \"\", \"\")\n\tcall <SID>X(\"WarningMsg\", s:red, \"\", \"\")\n\tcall <SID>X(\"MatchParen\", \"\", s:selection, \"\")\n\tcall <SID>X(\"Folded\", s:comment, s:background, \"\")\n\tcall <SID>X(\"FoldColumn\", \"\", s:background, \"\")\n\tif version >= 700\n\t\tcall <SID>X(\"CursorLine\", \"\", s:line, \"none\")\n\t\tcall <SID>X(\"CursorColumn\", \"\", s:line, \"none\")\n\t\tcall <SID>X(\"PMenu\", s:foreground, s:selection, \"none\")\n\t\tcall <SID>X(\"PMenuSel\", s:foreground, s:selection, \"reverse\")\n\tend\n\tif version >= 703\n\t\tcall <SID>X(\"ColorColumn\", \"\", s:line, \"none\")\n\tend\n\n\t\" Standard Highlighting\n\tcall <SID>X(\"Comment\", s:comment, \"\", \"\")\n\tcall <SID>X(\"Todo\", s:comment, s:background, \"\")\n\tcall <SID>X(\"Title\", s:comment, \"\", \"\")\n\tcall <SID>X(\"Identifier\", s:red, \"\", \"none\")\n\tcall <SID>X(\"Statement\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"Conditional\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"Repeat\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"Structure\", s:purple, \"\", \"\")\n\tcall <SID>X(\"Function\", s:blue, \"\", \"\")\n\tcall <SID>X(\"Constant\", s:orange, \"\", \"\")\n\tcall <SID>X(\"String\", s:green, \"\", \"\")\n\tcall <SID>X(\"Special\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"PreProc\", s:purple, \"\", \"\")\n\tcall <SID>X(\"Operator\", s:aqua, \"\", \"none\")\n\tcall <SID>X(\"Type\", s:blue, \"\", \"none\")\n\tcall <SID>X(\"Define\", s:purple, \"\", \"none\")\n\tcall <SID>X(\"Include\", s:blue, \"\", \"\")\n\t\"call <SID>X(\"Ignore\", \"666666\", \"\", \"\")\n\n\t\" Vim Highlighting\n\tcall <SID>X(\"vimCommand\", s:red, \"\", \"none\")\n\n\t\" C Highlighting\n\tcall <SID>X(\"cType\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"cStorageClass\", s:purple, \"\", \"\")\n\tcall <SID>X(\"cConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"cRepeat\", s:purple, \"\", \"\")\n\n\t\" PHP Highlighting\n\tcall <SID>X(\"phpVarSelector\", s:red, \"\", \"\")\n\tcall <SID>X(\"phpKeyword\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"phpMemberSelector\", s:foreground, \"\", \"\")\n\n\t\" Ruby Highlighting\n\tcall <SID>X(\"rubySymbol\", s:green, \"\", \"\")\n\tcall <SID>X(\"rubyConstant\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"rubyAccess\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"rubyAttribute\", s:blue, \"\", \"\")\n\tcall <SID>X(\"rubyInclude\", s:blue, \"\", \"\")\n\tcall <SID>X(\"rubyLocalVariableOrMethod\", s:orange, \"\", \"\")\n\tcall <SID>X(\"rubyCurlyBlock\", s:orange, \"\", \"\")\n\tcall <SID>X(\"rubyStringDelimiter\", s:green, \"\", \"\")\n\tcall <SID>X(\"rubyInterpolationDelimiter\", s:orange, \"\", \"\")\n\tcall <SID>X(\"rubyConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"rubyRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"rubyControl\", s:purple, \"\", \"\")\n\tcall <SID>X(\"rubyException\", s:purple, \"\", \"\")\n\n\t\" Python Highlighting\n\tcall <SID>X(\"pythonInclude\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonException\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonFunction\", s:blue, \"\", \"\")\n\tcall <SID>X(\"pythonPreCondit\", s:purple, \"\", \"\")\n\tcall <SID>X(\"pythonRepeat\", s:aqua, \"\", \"\")\n\tcall <SID>X(\"pythonExClass\", s:orange, \"\", \"\")\n\n\t\" JavaScript Highlighting\n\tcall <SID>X(\"javaScriptBraces\", s:foreground, \"\", \"\")\n\tcall <SID>X(\"javaScriptFunction\", s:purple, \"\", \"\")\n\tcall <SID>X(\"javaScriptConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"javaScriptRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"javaScriptNumber\", s:orange, \"\", \"\")\n\tcall <SID>X(\"javaScriptMember\", s:orange, \"\", \"\")\n\n\t\" HTML Highlighting\n\tcall <SID>X(\"htmlTag\", s:red, \"\", \"\")\n\tcall <SID>X(\"htmlTagName\", s:red, \"\", \"\")\n\tcall <SID>X(\"htmlArg\", s:red, \"\", \"\")\n\tcall <SID>X(\"htmlScriptTag\", s:red, \"\", \"\")\n\n\t\" Diff Highlighting\n\tcall <SID>X(\"diffAdded\", s:green, \"\", \"\")\n\tcall <SID>X(\"diffRemoved\", s:red, \"\", \"\")\n\n\t\" Lua Highlighting\n\tcall <SID>X(\"luaStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaRepeat\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCondStart\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCondElseif\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCond\", s:purple, \"\", \"\")\n\tcall <SID>X(\"luaCondEnd\", s:purple, \"\", \"\")\n\n\t\" Cucumber Highlighting\n\tcall <SID>X(\"cucumberGiven\", s:blue, \"\", \"\")\n\tcall <SID>X(\"cucumberGivenAnd\", s:blue, \"\", \"\")\n\n\t\" Go Highlighting\n\tcall <SID>X(\"goDirective\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goDeclaration\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goStatement\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goConditional\", s:purple, \"\", \"\")\n\tcall <SID>X(\"goConstants\", s:orange, \"\", \"\")\n\tcall <SID>X(\"goTodo\", s:yellow, \"\", \"\")\n\tcall <SID>X(\"goDeclType\", s:blue, \"\", \"\")\n\tcall <SID>X(\"goBuiltins\", s:purple, \"\", \"\")\n\n\t\" Delete Functions\n\tdelf <SID>X\n\tdelf <SID>rgb\n\tdelf <SID>colour\n\tdelf <SID>rgb_colour\n\tdelf <SID>rgb_level\n\tdelf <SID>rgb_number\n\tdelf <SID>grey_colour\n\tdelf <SID>grey_level\n\tdelf <SID>grey_number\nendif\n"
  },
  {
    "path": ".vim/bundle/vim-airline/.travis.yml",
    "content": "language: ruby\nrvm:\n  - 1.9.3\nscript: rake ci\n"
  },
  {
    "path": ".vim/bundle/vim-airline/Gemfile",
    "content": "source 'https://rubygems.org'\ngem 'vim-flavor', '~> 1.1'\n"
  },
  {
    "path": ".vim/bundle/vim-airline/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (C) 2013-2014 Bailey Ling\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the \"Software\"),\nto deal in the Software without restriction, including without limitation\nthe rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included\nin all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\nDAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\nOR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": ".vim/bundle/vim-airline/README.md",
    "content": "# vim-airline [![Build Status](https://travis-ci.org/bling/vim-airline.png)](https://travis-ci.org/bling/vim-airline)\n\nLean &amp; mean status/tabline for vim that's light as air.\n\n![img](https://github.com/bling/vim-airline/wiki/screenshots/demo.gif)\n\n# Features\n\n*  Tiny core written with extensibility in mind ([open/closed principle][8]).\n*  Integrates with a variety of plugins, including: [vim-bufferline][6], [fugitive][4], [unite][9], [ctrlp][10], [minibufexpl][15], [gundo][16], [undotree][17], [nerdtree][18], [tagbar][19], [vim-gitgutter][29], [vim-signify][30], [syntastic][5], [eclim][34], [lawrencium][21], [virtualenv][31], [tmuxline][35].\n*  Looks good with regular fonts and provides configuration points so you can use unicode or powerline symbols.\n*  Optimized for speed; it loads in under a millisecond.\n*  Extensive suite of themes for popular color schemes including [solarized][23] (dark and light), [tomorrow][24] (all variants), [base16][32] (all variants), [molokai][25], [jellybeans][26] and others; have a look at the [screenshots][14] in the wiki.\n*  Supports 7.2 as the minimum Vim version.\n*  The master branch tries to be as stable as possible, and new features are merged in only after they have gone through a [full regression test][33].\n*  Unit testing suite.\n\n## Straightforward customization\n\nIf you don't like the defaults, you can replace all sections with standard `statusline` syntax.  Give your statusline that you've built over the years a face lift.\n\n![image](https://f.cloud.github.com/assets/306502/1009429/d69306da-0b38-11e3-94bf-7c6e3eef41e9.png)\n\n## Automatic truncation\n\nSections and parts within sections can be configured to automatically hide when the window size shrinks.\n\n![image](https://f.cloud.github.com/assets/306502/1060831/05c08aac-11bc-11e3-8470-a506a3037f45.png)\n\n## Smarter tab line\n\nAutomatically displays all buffers when there's only one tab open.\n\n![tabline](https://f.cloud.github.com/assets/306502/1072623/44c292a0-1495-11e3-9ce6-dcada3f1c536.gif)\n\nThis is disabled by default; add the following to your vimrc to enable the extension:\n\n    let g:airline#extensions#tabline#enabled = 1\n\nSeparators can be configured independently for the tabline, so here is how you can define \"straight\" tabs:\n\n    let g:airline#extensions#tabline#left_sep = ' '\n    let g:airline#extensions#tabline#left_alt_sep = '|'\n\n## Seamless integration\n\nvim-airline integrates with a variety of plugins out of the box.  These extensions will be lazily loaded if and only if you have the other plugins installed (and of course you can turn them off).\n\n#### [ctrlp.vim][10]\n![image](https://f.cloud.github.com/assets/306502/962258/7345a224-04ec-11e3-8b5a-f11724a47437.png)\n\n#### [unite.vim][9]\n![image](https://f.cloud.github.com/assets/306502/962319/4d7d3a7e-04ed-11e3-9d59-ab29cb310ff8.png)\n\n#### [tagbar][19]\n![image](https://f.cloud.github.com/assets/306502/962150/7e7bfae6-04ea-11e3-9e28-32af206aed80.png)\n\n#### [csv.vim][28]\n![image](https://f.cloud.github.com/assets/306502/962204/cfc1210a-04eb-11e3-8a93-42e6bcd21efa.png)\n\n#### [syntastic][5]\n![image](https://f.cloud.github.com/assets/306502/962864/9824c484-04f7-11e3-9928-da94f8c7da5a.png)\n\n#### hunks ([vim-gitgutter][29] & [vim-signify][30])\n![image](https://f.cloud.github.com/assets/306502/995185/73fc7054-09b9-11e3-9d45-618406c6ed98.png)\n\n#### [virtualenv][31]\n![image](https://f.cloud.github.com/assets/390964/1022566/cf81f830-0d98-11e3-904f-cf4fe3ce201e.png)\n\n#### [tmuxline][35]\n![image](https://f.cloud.github.com/assets/1532071/1559276/4c28fbac-4fc7-11e3-90ef-7e833d980f98.gif)\n\n#### [promptline][36]\n![airline-promptline-sc](https://f.cloud.github.com/assets/1532071/1871900/7d4b28a0-789d-11e3-90e4-16f37269981b.gif)\n\n## Extras\n\nvim-airline also supplies some supplementary stand-alone extensions.  In addition to the tabline extension mentioned earlier, there is also:\n\n#### whitespace\n![image](https://f.cloud.github.com/assets/306502/962401/2a75385e-04ef-11e3-935c-e3b9f0e954cc.png)\n\n## Configurable and extensible\n\n#### Fine-tuned configuration\n\nEvery section is composed of parts, and you can reorder and reconfigure them at will.\n\n![image](https://f.cloud.github.com/assets/306502/1073278/f291dd4c-14a3-11e3-8a83-268e2753f97d.png)\n\nSections can contain accents, which allows for very granular control of visuals (see configuration [here](https://github.com/bling/vim-airline/issues/299#issuecomment-25772886)).\n\n![image](https://f.cloud.github.com/assets/306502/1195815/4bfa38d0-249d-11e3-823e-773cfc2ca894.png)\n\n#### Extensible pipeline\n\nCompletely transform the statusline to your liking.  Build out the statusline as you see fit by extracting colors from the current colorscheme's highlight groups.\n\n![allyourbase](https://f.cloud.github.com/assets/306502/1022714/e150034a-0da7-11e3-94a5-ca9d58a297e8.png)\n\n# Rationale\n\nThere's already [powerline][2], why yet another statusline?\n\n*  100% vimscript; no python needed.\n\nWhat about [vim-powerline][1]?\n\n*  vim-powerline has been deprecated in favor of the newer, unifying powerline, which is under active development; the new version is written in python at the core and exposes various bindings such that it can style statuslines not only in vim, but also tmux, bash, zsh, and others.\n\n# Where did the name come from?\n\nI wrote the initial version on an airplane, and since it's light as air it turned out to be a good name.  Thanks for flying vim!\n\n# Installation\n\nThis plugin follows the standard runtime path structure, and as such it can be installed with a variety of plugin managers:\n\n*  [Pathogen][11]\n  *  `git clone https://github.com/bling/vim-airline ~/.vim/bundle/vim-airline`\n*  [NeoBundle][12]\n  *  `NeoBundle 'bling/vim-airline'`\n*  [Vundle][13]\n  *  `Bundle 'bling/vim-airline'`\n*  [VAM][22]\n  *  `call vam#ActivateAddons([ 'vim-airline' ])`\n*  manual\n  *  copy all of the files into your `~/.vim` directory\n\n# Configuration\n\n`:help airline`\n\nThe default setting of 'laststatus' is for the statusline to not appear until a split is created. If you want it to appear all the time, add the following to your vimrc:\n`set laststatus=2`\n\n# Integrating with powerline fonts\n\nFor the nice looking powerline symbols to appear, you will need to install a patched font.  Instructions can be found in the official powerline [documentation][20].  Prepatched fonts can be found in the [powerline-fonts][3] repository.\n\nFinally, you can add the convenience variable `let g:airline_powerline_fonts = 1` to your vimrc which will automatically populate the `g:airline_symbols` dictionary with the powerline symbols.\n\n# FAQ\n\nSolutions to common problems can be found in the [Wiki][27].\n\n# Screenshots\n\nA full list of screenshots for various themes can be found in the [Wiki][14].\n\n# Bugs\n\nTracking down bugs can take a very long time due to different configurations, versions, and operating systems.  To ensure a timely response, please help me out by doing the following:\n\n*  Reproduce it with this [minivimrc][7] repository to rule out any configuration conflicts.\n*  A link to your vimrc or a gist which shows how you configured the plugin(s).\n*  And so I can reproduce; your `:version` of vim, and the commit of vim-airline you're using.\n\n# Contributions\n\nContributions and pull requests are welcome.  Please take note of the following guidelines:\n\n*  Adhere to the existing style as much as possible; notably, 2 space indents and long-form keywords.\n*  Keep the history clean! squash your branches before you submit a pull request. `pull --rebase` is your friend.\n*  Any changes to the core should be tested against Vim 7.2.\n*  If you submit a theme, please create a screenshot so it can be added to the [Wiki][14].\n\n# License\n\nMIT License. Copyright (c) 2013-2014 Bailey Ling.\n\n\n[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/bling/vim-airline/trend.png)](https://bitdeli.com/free \"Bitdeli Badge\")\n\n[1]: https://github.com/Lokaltog/vim-powerline\n[2]: https://github.com/Lokaltog/powerline\n[3]: https://github.com/Lokaltog/powerline-fonts\n[4]: https://github.com/tpope/vim-fugitive\n[5]: https://github.com/scrooloose/syntastic\n[6]: https://github.com/bling/vim-bufferline\n[7]: https://github.com/bling/minivimrc\n[8]: http://en.wikipedia.org/wiki/Open/closed_principle\n[9]: https://github.com/Shougo/unite.vim\n[10]: https://github.com/kien/ctrlp.vim\n[11]: https://github.com/tpope/vim-pathogen\n[12]: https://github.com/Shougo/neobundle.vim\n[13]: https://github.com/gmarik/vundle\n[14]: https://github.com/bling/vim-airline/wiki/Screenshots\n[15]: https://github.com/techlivezheng/vim-plugin-minibufexpl\n[16]: https://github.com/sjl/gundo.vim\n[17]: https://github.com/mbbill/undotree\n[18]: https://github.com/scrooloose/nerdtree\n[19]: https://github.com/majutsushi/tagbar\n[20]: https://powerline.readthedocs.org/en/latest/fontpatching.html\n[21]: https://bitbucket.org/ludovicchabant/vim-lawrencium\n[22]: https://github.com/MarcWeber/vim-addon-manager\n[23]: https://github.com/altercation/solarized\n[24]: https://github.com/chriskempson/tomorrow-theme\n[25]: https://github.com/tomasr/molokai\n[26]: https://github.com/nanotech/jellybeans.vim\n[27]: https://github.com/bling/vim-airline/wiki/FAQ\n[28]: https://github.com/chrisbra/csv.vim\n[29]: https://github.com/airblade/vim-gitgutter\n[30]: https://github.com/mhinz/vim-signify\n[31]: https://github.com/jmcantrell/vim-virtualenv\n[32]: https://github.com/chriskempson/base16-vim\n[33]: https://github.com/bling/vim-airline/wiki/Test-Plan\n[34]: http://eclim.org\n[35]: https://github.com/edkolev/tmuxline.vim\n[36]: https://github.com/edkolev/promptline.vim\n"
  },
  {
    "path": ".vim/bundle/vim-airline/Rakefile",
    "content": "#!/usr/bin/env rake\n\ntask :default => [:test]\n\ntask :ci => [:dump, :test]\n\ntask :dump do\n  sh 'vim --version'\nend\n\ntask :test do\n  sh 'bundle exec vim-flavor test'\nend\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/builder.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nlet s:prototype = {}\n\nfunction! s:prototype.split(...)\n  let self._side = 0\n  let self._line .= '%#'.self._curgroup.'#'.(a:0 ? a:1 : '%=')\nendfunction\n\nfunction! s:prototype.add_section_spaced(group, contents)\n  call self.add_section(a:group, (g:airline_symbols.space).a:contents.(g:airline_symbols.space))\nendfunction\n\nfunction! s:prototype.add_section(group, contents)\n  if self._curgroup != ''\n    if self._curgroup == a:group\n      let self._line .= self._side ? self._context.left_alt_sep : self._context.right_alt_sep\n    else\n      call airline#highlighter#add_separator(self._curgroup, a:group, self._side)\n      let self._line .= '%#'.self._curgroup.'_to_'.a:group.'#'\n      let self._line .= self._side ? self._context.left_sep : self._context.right_sep\n    endif\n  endif\n\n  if self._curgroup != a:group\n    let self._line .= '%#'.a:group.'#'\n  endif\n\n  if self._context.active\n    let contents = []\n    let content_parts = split(a:contents, '__accent')\n    for cpart in content_parts\n      let accent = matchstr(cpart, '_\\zs[^#]*\\ze')\n      call add(contents, cpart)\n    endfor\n    let line = join(contents, a:group)\n    let line = substitute(line, '__restore__', a:group, 'g')\n  else\n    let line = substitute(a:contents, '%#__accent[^#]*#', '', 'g')\n    let line = substitute(line, '%#__restore__#', '', 'g')\n  endif\n\n  let self._line .= line\n  let self._curgroup = a:group\nendfunction\n\nfunction! s:prototype.add_raw(text)\n  let self._line .= a:text\nendfunction\n\nfunction! s:prototype.build()\n  if !self._context.active\n    let self._line = substitute(self._line, '%#.\\{-}\\ze#', '\\0_inactive', 'g')\n  endif\n  return self._line\nendfunction\n\nfunction! airline#builder#new(context)\n  let builder = copy(s:prototype)\n  let builder._context = a:context\n  let builder._side = 1\n  let builder._curgroup = ''\n  let builder._line = ''\n\n  call extend(builder._context, {\n        \\ 'left_sep': g:airline_left_sep,\n        \\ 'left_alt_sep': g:airline_left_alt_sep,\n        \\ 'right_sep': g:airline_right_sep,\n        \\ 'right_alt_sep': g:airline_right_alt_sep,\n        \\ }, 'keep')\n  return builder\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/debug.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nfunction! airline#debug#profile1()\n  profile start airline-profile-switch.log\n  profile func *\n  profile file *\n  split\n  for i in range(1, 1000)\n    wincmd w\n    redrawstatus\n  endfor\n  profile pause\n  noautocmd qall!\nendfunction\n\nfunction! airline#debug#profile2()\n  profile start airline-profile-cursor.log\n  profile func *\n  profile file *\n  edit blank\n  call setline(1, 'all your base are belong to us')\n  call setline(2, 'all your base are belong to us')\n  let positions = [[1,2], [2,2], [1,2], [1,1]]\n  for i in range(1, 1000)\n    for pos in positions\n      call cursor(pos[0], pos[1])\n      redrawstatus\n    endfor\n  endfor\n  profile pause\n  noautocmd qall!\nendfunction\n\nfunction! airline#debug#profile3()\n  profile start airline-profile-mode.log\n  profile func *\n  profile file *\n\n  for i in range(1000)\n    startinsert\n    redrawstatus\n    stopinsert\n    redrawstatus\n  endfor\n\n  profile pause\n  noautocmd qall!\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/deprecation.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nfunction! airline#deprecation#check()\n  if exists('g:airline_enable_fugitive') || exists('g:airline_fugitive_prefix')\n    echom 'The g:airline_enable_fugitive and g:airline_fugitive_prefix variables are obsolete. Please read the documentation about the branch extension.'\n  endif\n\n  let tests = [\n        \\ [ 'g:airline_paste_symbol', 'g:airline_symbols.paste' ],\n        \\ [ 'g:airline_readonly_symbol', 'g:airline_symbols.readonly' ],\n        \\ [ 'g:airline_linecolumn_prefix', 'g:airline_symbols.linenr' ],\n        \\ [ 'g:airline_branch_prefix', 'g:airline_symbols.branch' ],\n        \\ [ 'g:airline_branch_empty_message', 'g:airline#extensions#branch#empty_message' ],\n        \\ [ 'g:airline_detect_whitespace', 'g:airline#extensions#whitespace#enabled|show_message' ],\n        \\ [ 'g:airline_enable_hunks', 'g:airline#extensions#hunks#enabled' ],\n        \\ [ 'g:airline_enable_tagbar', 'g:airline#extensions#tagbar#enabled' ],\n        \\ [ 'g:airline_enable_csv', 'g:airline#extensions#csv#enabled' ],\n        \\ [ 'g:airline_enable_branch', 'g:airline#extensions#branch#enabled' ],\n        \\ [ 'g:airline_enable_bufferline', 'g:airline#extensions#bufferline#enabled' ],\n        \\ [ 'g:airline_enable_syntastic', 'g:airline#extensions#syntastic#enabled' ],\n        \\ [ 'g:airline_enable_eclim', 'g:airline#extensions#eclim#enabled' ],\n        \\ ]\n  for test in tests\n    if exists(test[0])\n      let max = winwidth(0) - 16\n      let msg = printf('The variable %s is deprecated and may not work in the future. It has been replaced with %s. Please read the documentation.', test[0], test[1])\n      echom msg[:max].'...'\n    endif\n  endfor\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/branch.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nlet s:has_fugitive = exists('*fugitive#head')\nlet s:has_fugitive_detect = exists('*fugitive#detect')\nlet s:has_lawrencium = exists('*lawrencium#statusline')\nlet s:has_vcscommand = get(g:, 'airline#extensions#branch#use_vcscommand', 0) && exists('*VCSCommandGetStatusLine')\n\nif !s:has_fugitive && !s:has_lawrencium && !s:has_vcscommand\n  finish\nendif\n\nfunction! airline#extensions#branch#head()\n  let head = ''\n\n  if s:has_fugitive && !exists('b:mercurial_dir')\n    let head = fugitive#head()\n\n    if empty(head) && s:has_fugitive_detect && !exists('b:git_dir')\n      call fugitive#detect(getcwd())\n      let head = fugitive#head()\n    endif\n  endif\n\n  if empty(head)\n    if s:has_lawrencium\n      let head = lawrencium#statusline()\n    endif\n  endif\n\n  if empty(head)\n    if s:has_vcscommand\n      call VCSCommandEnableBufferSetup()\n      if exists('b:VCSCommandBufferInfo')\n        let head = get(b:VCSCommandBufferInfo, 0, '')\n      endif\n    endif\n  endif\n\n  return empty(head) || !s:check_in_path()\n        \\ ? ''\n        \\ : head\nendfunction\n\nfunction! airline#extensions#branch#get_head()\n  let head = airline#extensions#branch#head()\n  let empty_message = get(g:, 'airline#extensions#branch#empty_message',\n      \\ get(g:, 'airline_branch_empty_message', ''))\n  let symbol = get(g:, 'airline#extensions#branch#symbol', g:airline_symbols.branch)\n  return empty(head)\n        \\ ? empty_message\n        \\ : printf('%s%s', empty(symbol) ? '' : symbol.(g:airline_symbols.space), head)\nendfunction\n\nfunction! s:check_in_path()\n  if !exists('b:airline_branch_path')\n    let root = get(b:, 'git_dir', get(b:, 'mercurial_dir', ''))\n    let bufferpath = resolve(fnamemodify(expand('%'), ':p'))\n\n    if !filereadable(root) \"not a file\n      \" if .git is a directory, it's the old submodule format\n      if match(root, '\\.git$') >= 0\n        let root = expand(fnamemodify(root, ':h'))\n      else\n        \" else it's the newer format, and we need to guesstimate\n        let pattern = '\\.git\\(\\\\\\|\\/\\)modules\\(\\\\\\|\\/\\)'\n        if match(root, pattern) >= 0\n          let root = substitute(root, pattern, '', '')\n        endif\n    endif\n\n    let b:airline_file_in_root = stridx(bufferpath, root) > -1\n  endif\n  return b:airline_file_in_root\nendfunction\n\nfunction! airline#extensions#branch#init(ext)\n  call airline#parts#define_function('branch', 'airline#extensions#branch#get_head')\n\n  autocmd BufReadPost * unlet! b:airline_file_in_root\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/bufferline.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nif !exists('*bufferline#get_status_string')\n  finish\nendif\n\nlet s:overwrite = get(g:, 'airline#extensions#bufferline#overwrite_variables', 1)\n\nfunction! airline#extensions#bufferline#init(ext)\n  if s:overwrite\n    highlight bufferline_selected gui=bold cterm=bold term=bold\n    highlight link bufferline_selected_inactive airline_c_inactive\n    let g:bufferline_inactive_highlight = 'airline_c'\n    let g:bufferline_active_highlight = 'bufferline_selected'\n    let g:bufferline_active_buffer_left = ''\n    let g:bufferline_active_buffer_right = ''\n    let g:bufferline_separator = g:airline_symbols.space\n  endif\n\n  call airline#parts#define_raw('file', '%{bufferline#refresh_status()}'.bufferline#get_status_string())\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/commandt.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nif !get(g:, 'command_t_loaded', 0)\n  finish\nendif\n\nfunction! airline#extensions#commandt#apply(...)\n  if bufname('%') ==# 'GoToFile'\n    call airline#extensions#apply_left_override('CommandT', '')\n  endif\nendfunction\n\nfunction! airline#extensions#commandt#init(ext)\n  call a:ext.add_statusline_func('airline#extensions#commandt#apply')\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/csv.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nif !get(g:, 'loaded_csv', 0) && !exists(':Table')\n  finish\nendif\n\nlet s:column_display = get(g:, 'airline#extensions#csv#column_display', 'Number')\n\nfunction! airline#extensions#csv#get_column()\n  if exists('*CSV_WCol')\n    if s:column_display ==# 'Name'\n      return '['.CSV_WCol('Name').CSV_WCol().']'\n    else\n      return '['.CSV_WCol().']'\n    endif\n  endif\n  return ''\nendfunction\n\nfunction! airline#extensions#csv#apply(...)\n  if &ft ==# \"csv\"\n    call airline#extensions#prepend_to_section('gutter',\n          \\ g:airline_left_alt_sep.' %{airline#extensions#csv#get_column()}')\n  endif\nendfunction\n\nfunction! airline#extensions#csv#init(ext)\n  call a:ext.add_statusline_func('airline#extensions#csv#apply')\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/ctrlp.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nif !get(g:, 'loaded_ctrlp', 0)\n  finish\nendif\n\nlet s:color_template = get(g:, 'airline#extensions#ctrlp#color_template', 'insert')\n\nfunction! airline#extensions#ctrlp#generate_color_map(dark, light, white)\n  return {\n        \\ 'CtrlPdark'   : a:dark,\n        \\ 'CtrlPlight'  : a:light,\n        \\ 'CtrlPwhite'  : a:white,\n        \\ 'CtrlParrow1' : [ a:light[1] , a:white[1] , a:light[3] , a:white[3] , ''     ] ,\n        \\ 'CtrlParrow2' : [ a:white[1] , a:light[1] , a:white[3] , a:light[3] , ''     ] ,\n        \\ 'CtrlParrow3' : [ a:light[1] , a:dark[1]  , a:light[3] , a:dark[3]  , ''     ] ,\n        \\ }\nendfunction\n\nfunction! airline#extensions#ctrlp#load_theme(palette)\n  if exists('a:palette.ctrlp')\n    let theme = a:palette.ctrlp\n  else\n    let s:color_template = has_key(a:palette, s:color_template) ? s:color_template : 'insert'\n    let theme = airline#extensions#ctrlp#generate_color_map(\n          \\ a:palette[s:color_template]['airline_c'],\n          \\ a:palette[s:color_template]['airline_b'],\n          \\ a:palette[s:color_template]['airline_a'])\n  endif\n  for key in keys(theme)\n    call airline#highlighter#exec(key, theme[key])\n  endfor\nendfunction\n\n\" Arguments: focus, byfname, regexp, prv, item, nxt, marked\nfunction! airline#extensions#ctrlp#ctrlp_airline(...)\n  let b = airline#builder#new({'active': 1})\n  if a:3\n    call b.add_section_spaced('CtrlPlight', 'regex')\n  endif\n  if get(g:, 'airline#extensions#ctrlp#show_adjacent_modes', 1)\n    call b.add_section_spaced('CtrlPlight', a:4)\n    call b.add_section_spaced('CtrlPwhite', a:5)\n    call b.add_section_spaced('CtrlPlight', a:6)\n  else\n    call b.add_section_spaced('CtrlPwhite', a:5)\n  endif\n  call b.add_section_spaced('CtrlPdark', a:7)\n  call b.split()\n  call b.add_raw('%#CtrlPdark#'.a:1.(g:airline_symbols.space))\n  call b.add_section_spaced('CtrlPdark', a:2)\n  call b.add_section_spaced('CtrlPlight', '%{getcwd()}')\n  return b.build()\nendfunction\n\n\" Argument: len\nfunction! airline#extensions#ctrlp#ctrlp_airline_status(...)\n  let len = '%#CtrlPdark# '.a:1\n  let dir = '%=%<%#CtrlParrow3#'.g:airline_right_sep.'%#CtrlPlight# '.getcwd().' %*'\n  return len.dir\nendfunction\n\nfunction! airline#extensions#ctrlp#apply(...)\n  \" disable statusline overwrite if ctrlp already did it\n  return match(&statusline, 'CtrlPwhite') >= 0 ? -1 : 0\nendfunction\n\nfunction! airline#extensions#ctrlp#init(ext)\n  let g:ctrlp_status_func = {\n        \\ 'main': 'airline#extensions#ctrlp#ctrlp_airline',\n        \\ 'prog': 'airline#extensions#ctrlp#ctrlp_airline_status',\n        \\ }\n  call a:ext.add_statusline_func('airline#extensions#ctrlp#apply')\n  call a:ext.add_theme_func('airline#extensions#ctrlp#load_theme')\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/default.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nlet s:section_truncate_width = get(g:, 'airline#extensions#default#section_truncate_width', {\n      \\ 'b': 79,\n      \\ 'x': 60,\n      \\ 'y': 88,\n      \\ 'z': 45,\n      \\ })\nlet s:layout = get(g:, 'airline#extensions#default#layout', [\n      \\ [ 'a', 'b', 'c' ],\n      \\ [ 'x', 'y', 'z', 'warning' ]\n      \\ ])\n\nfunction! s:get_section(winnr, key, ...)\n  if has_key(s:section_truncate_width, a:key)\n    if winwidth(a:winnr) < s:section_truncate_width[a:key]\n      return ''\n    endif\n  endif\n  let spc = g:airline_symbols.space\n  let text = airline#util#getwinvar(a:winnr, 'airline_section_'.a:key, g:airline_section_{a:key})\n  let [prefix, suffix] = [get(a:000, 0, '%('.spc), get(a:000, 1, spc.'%)')]\n  return empty(text) ? '' : prefix.text.suffix\nendfunction\n\nfunction! s:build_sections(builder, context, keys)\n  for key in a:keys\n    if key == 'warning' && !a:context.active\n      continue\n    endif\n    call s:add_section(a:builder, a:context, key)\n  endfor\nendfunction\n\nif v:version >= 704 || (v:version >= 703 && has('patch81'))\n  function s:add_section(builder, context, key)\n    \" i have no idea why the warning section needs special treatment, but it's\n    \" needed to prevent separators from showing up\n    if a:key == 'warning'\n      call a:builder.add_raw('%(')\n    endif\n    call a:builder.add_section('airline_'.a:key, s:get_section(a:context.winnr, a:key))\n    if a:key == 'warning'\n      call a:builder.add_raw('%)')\n    endif\n  endfunction\nelse\n  \" older version don't like the use of %(%)\n  function s:add_section(builder, context, key)\n    if a:key == 'warning'\n      call a:builder.add_raw('%#airline_warning#'.s:get_section(a:context.winnr, a:key))\n    else\n      call a:builder.add_section('airline_'.a:key, s:get_section(a:context.winnr, a:key))\n    endif\n  endfunction\nendif\n\nfunction! airline#extensions#default#apply(builder, context)\n  let winnr = a:context.winnr\n  let active = a:context.active\n\n  if airline#util#getwinvar(winnr, 'airline_render_left', active || (!active && !g:airline_inactive_collapse))\n    call <sid>build_sections(a:builder, a:context, s:layout[0])\n  else\n    call a:builder.add_section('airline_c'.(a:context.bufnr), ' %f%m ')\n  endif\n\n  call a:builder.split(s:get_section(winnr, 'gutter', '', ''))\n\n  if airline#util#getwinvar(winnr, 'airline_render_right', 1)\n    call <sid>build_sections(a:builder, a:context, s:layout[1])\n  endif\n\n  return 1\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/eclim.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nif !exists(':ProjectCreate')\n  finish\nendif\n\nfunction! airline#extensions#eclim#creat_line(...)\n  if &filetype == \"tree\"\n    let builder = a:1\n    call builder.add_section('airline_a', ' Project ')\n    call builder.add_section('airline_b', ' %f ')\n    call builder.add_section('airline_c', '')\n  return 1\n  endif\nendfunction\n\nfunction! airline#extensions#eclim#get_warnings()\n  let eclimList = eclim#display#signs#GetExisting()\n\n  if !empty(eclimList)\n    \" Remove any non-eclim signs (see eclim#display#signs#Update)\n    call filter(eclimList, \"v:val.name =~ '^\\(qf_\\)\\?\\(error\\|info\\|warning\\)$'\")\n\n    if !empty(eclimList)\n      let errorsLine = eclimList[0]['line']\n      let errorsNumber = len(eclimList)\n      let errors = \"[Eclim: line:\".string(errorsLine).\" (\".string(errorsNumber).\")]\"\n      if !exists(':SyntasticCheck') || SyntasticStatuslineFlag() == ''\n        return errors.(g:airline_symbols.space)\n      endif\n    endif\n  endif\n  return ''\nendfunction\n\nfunction! airline#extensions#eclim#init(ext)\n  call airline#parts#define_function('eclim', 'airline#extensions#eclim#get_warnings')\n  call a:ext.add_statusline_func('airline#extensions#eclim#creat_line')\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/example.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\n\" we don't actually want this loaded :P\nfinish\n\n\" Due to some potential rendering issues, the use of the `space` variable is\n\" recommended.\nlet s:spc = g:airline_symbols.space\n\n\" Extension specific variables can be defined the usual fashion.\nif !exists('g:airline#extensions#example#number_of_cats')\n  let g:airline#extensions#example#number_of_cats = 42\nendif\n\n\" First we define an init function that will be invoked from extensions.vim\nfunction! airline#extensions#example#init(ext)\n\n  \" Here we define a new part for the plugin.  This allows users to place this\n  \" extension in arbitrary locations.\n  call airline#parts#define_raw('cats', '%{airline#extensions#example#get_cats()}')\n\n  \" Next up we add a funcref so that we can run some code prior to the\n  \" statusline getting modifed.\n  call a:ext.add_statusline_func('airline#extensions#example#apply')\n\n  \" You can also add a funcref for inactive statuslines.\n  \" call a:ext.add_inactive_statusline_func('airline#extensions#example#unapply')\nendfunction\n\n\" This function will be invoked just prior to the statusline getting modified.\nfunction! airline#extensions#example#apply(...)\n  \" First we check for the filetype.\n  if &filetype == \"nyancat\"\n\n    \" Let's say we want to append to section_c, first we check if there's\n    \" already a window-local override, and if not, create it off of the global\n    \" section_c.\n    let w:airline_section_c = get(w:, 'airline_section_c', g:airline_section_c)\n\n    \" Then we just append this extenion to it, optionally using separators.\n    let w:airline_section_c .= s:spc.g:airline_left_alt_sep.s:spc.'%{airline#extensions#example#get_cats()}'\n  endif\nendfunction\n\n\" Finally, this function will be invoked from the statusline.\nfunction! airline#extensions#example#get_cats()\n  let cats = ''\n  for i in range(1, g:airline#extensions#example#number_of_cats)\n    let cats .= ' (,,,)=(^.^)=(,,,) '\n  endfor\n  return cats\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/hunks.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nif !get(g:, 'loaded_signify', 0) && !get(g:, 'loaded_gitgutter', 0)\n  finish\nendif\n\nlet s:non_zero_only = get(g:, 'airline#extensions#hunks#non_zero_only', 0)\nlet s:hunk_symbols = get(g:, 'airline#extensions#hunks#hunk_symbols', ['+', '~', '-'])\n\nfunction! s:get_hunks_signify()\n  let hunks = sy#repo#get_stats()\n  if hunks[0] >= 0\n    return hunks\n  endif\n  return []\nendfunction\n\nfunction! s:is_branch_empty()\n  return exists('*airline#extensions#branch#head') && empty(airline#extensions#branch#head())\nendfunction\n\nfunction! s:get_hunks_gitgutter()\n  if !get(g:, 'gitgutter_enabled', 0) || s:is_branch_empty()\n    return ''\n  endif\n  return GitGutterGetHunkSummary()\nendfunction\n\nfunction! s:get_hunks_empty()\n  return ''\nendfunction\n\nlet s:source_func = ''\nfunction! s:get_hunks()\n  if empty(s:source_func)\n    if get(g:, 'loaded_signify', 0)\n      let s:source_func = 's:get_hunks_signify'\n    elseif exists('*GitGutterGetHunkSummary')\n      let s:source_func = 's:get_hunks_gitgutter'\n    else\n      let s:source_func = 's:get_hunks_empty'\n    endif\n  endif\n  return {s:source_func}()\nendfunction\n\nfunction! airline#extensions#hunks#get_hunks()\n  if !get(w:, 'airline_active', 0)\n    return ''\n  endif\n  let hunks = s:get_hunks()\n  let string = ''\n  if !empty(hunks)\n    for i in [0, 1, 2]\n      if s:non_zero_only == 0 || hunks[i] > 0\n        let string .= printf('%s%s ', s:hunk_symbols[i], hunks[i])\n      endif\n    endfor\n  endif\n  return string\nendfunction\n\nfunction! airline#extensions#hunks#init(ext)\n  call airline#parts#define_function('hunks', 'airline#extensions#hunks#get_hunks')\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/netrw.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nif !exists(':NetrwSettings')\n  finish\nendif\n\nfunction! airline#extensions#netrw#apply(...)\n  if &ft == 'netrw'\n    let spc = g:airline_symbols.space\n\n    call a:1.add_section('airline_a', spc.'netrw'.spc)\n    if exists('*airline#extensions#branch#get_head')\n      call a:1.add_section('airline_b', spc.'%{airline#extensions#branch#get_head()}'.spc)\n    endif\n    call a:1.add_section('airline_c', spc.'%f'.spc)\n    call a:1.split()\n    call a:1.add_section('airline_y', spc.'%{airline#extensions#netrw#sortstring()}'.spc)\n    return 1\n  endif\nendfunction\n\nfunction! airline#extensions#netrw#init(ext)\n  let g:netrw_force_overwrite_statusline = 0\n  call a:ext.add_statusline_func('airline#extensions#netrw#apply')\nendfunction\n\n\nfunction! airline#extensions#netrw#sortstring()\n  let order = (g:netrw_sort_direction =~ 'n') ? '+' : '-'\n  return g:netrw_sort_by . (g:airline_symbols.space) . '[' . order . ']'\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/promptline.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nif !exists(':PromptlineSnapshot')\n  finish\nendif\n\nif !exists('airline#extensions#promptline#snapshot_file') || !len('airline#extensions#promptline#snapshot_file')\n  finish\nendif\n\nlet s:prompt_snapshot_file = get(g:, 'airline#extensions#promptline#snapshot_file', '')\nlet s:color_template = get(g:, 'airline#extensions#promptline#color_template', 'normal')\n\nfunction! airline#extensions#promptline#init(ext)\n  call a:ext.add_theme_func('airline#extensions#promptline#set_prompt_colors')\nendfunction\n\nfunction! airline#extensions#promptline#set_prompt_colors(palette)\n  let color_template = has_key(a:palette, s:color_template) ? s:color_template : 'normal'\n  let mode_palette = a:palette[color_template]\n\n  if !has_key(g:, 'promptline_symbols')\n    let g:promptline_symbols = {\n          \\ 'left'           : g:airline_left_sep,\n          \\ 'right'          : g:airline_right_sep,\n          \\ 'left_alt'       : g:airline_left_alt_sep,\n          \\ 'right_alt'      : g:airline_right_alt_sep}\n  endif\n\n  let promptline_theme = promptline#api#create_theme_from_airline(mode_palette)\n  call promptline#api#create_snapshot_with_theme(s:prompt_snapshot_file, promptline_theme)\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/quickfix.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nlet g:airline#extensions#quickfix#quickfix_text = 'Quickfix'\nlet g:airline#extensions#quickfix#location_text = 'Location'\n\nfunction! airline#extensions#quickfix#apply(...)\n  if &buftype == 'quickfix'\n    let w:airline_section_a = s:get_text()\n    let w:airline_section_b = '%{get(w:, \"quickfix_title\", \"\")}'\n    let w:airline_section_c = ''\n    let w:airline_section_x = ''\n  endif\nendfunction\n\nfunction! airline#extensions#quickfix#init(ext)\n  call a:ext.add_statusline_func('airline#extensions#quickfix#apply')\nendfunction\n\nfunction! s:get_text()\n  redir => buffers\n  silent ls\n  redir END\n\n  let nr = bufnr('%')\n  for buf in split(buffers, '\\n')\n    if match(buf, '\\v^\\s*'.nr) > -1\n      if match(buf, '\\[Quickfix List\\]') > -1\n        return g:airline#extensions#quickfix#quickfix_text\n      else\n        return g:airline#extensions#quickfix#location_text\n      endif\n    endif\n  endfor\n  return ''\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/syntastic.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nif !exists(':SyntasticCheck')\n  finish\nendif\n\nfunction! airline#extensions#syntastic#get_warnings()\n  let errors = SyntasticStatuslineFlag()\n  if strlen(errors) > 0\n    return errors.(g:airline_symbols.space)\n  endif\n  return ''\nendfunction\n\nfunction! airline#extensions#syntastic#init(ext)\n  call airline#parts#define_function('syntastic', 'airline#extensions#syntastic#get_warnings')\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/tabline/default.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nlet s:fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':~:.')\nlet s:fnamecollapse = get(g:, 'airline#extensions#tabline#fnamecollapse', 1)\nlet s:buf_nr_format = get(g:, 'airline#extensions#tabline#buffer_nr_format', '%s: ')\nlet s:buf_nr_show = get(g:, 'airline#extensions#tabline#buffer_nr_show', 0)\nlet s:buf_modified_symbol = g:airline_symbols.modified\n\nfunction! airline#extensions#tabline#default#format(bufnr, buffers)\n  let _ = ''\n\n  let name = bufname(a:bufnr)\n  if empty(name)\n    let _ .= '[No Name]'\n  else\n    if s:fnamecollapse\n      let _ .= substitute(fnamemodify(name, s:fmod), '\\v\\w\\zs.{-}\\ze(\\\\|/)', '', 'g')\n    else\n      let _ .= fnamemodify(name, s:fmod)\n    endif\n  endif\n\n  return airline#extensions#tabline#default#wrap_name(a:bufnr, _)\nendfunction\n\nfunction! airline#extensions#tabline#default#wrap_name(bufnr, buffer_name)\n  let _ = s:buf_nr_show ? printf(s:buf_nr_format, a:bufnr) : ''\n  let _ .= substitute(a:buffer_name, '\\\\', '/', 'g')\n\n  if getbufvar(a:bufnr, '&modified') == 1\n    let _ .= s:buf_modified_symbol\n  endif\n  return _\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/tabline/unique_tail.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nfunction! airline#extensions#tabline#unique_tail#format(bufnr, buffers)\n  let duplicates = {}\n  let tails = {}\n  let map = {}\n  for nr in a:buffers\n    let name = bufname(nr)\n    if empty(name)\n      let map[nr] = '[No Name]'\n    else\n      let tail = fnamemodify(name, ':t')\n      if has_key(tails, tail)\n        let duplicates[nr] = nr\n      endif\n      let tails[tail] = 1\n      let map[nr] = airline#extensions#tabline#default#wrap_name(nr, tail)\n    endif\n  endfor\n\n  for nr in values(duplicates)\n    let map[nr] = airline#extensions#tabline#default#wrap_name(nr, fnamemodify(bufname(nr), ':p:.'))\n  endfor\n\n  return map[a:bufnr]\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/tabline/unique_tail_improved.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nlet s:skip_symbol = '…'\n\nfunction! airline#extensions#tabline#unique_tail_improved#format(bufnr, buffers)\n  if len(a:buffers) <= 1 \" don't need to compare bufnames if has less than one buffer opened\n    return airline#extensions#tabline#default#format(a:bufnr, a:buffers)\n  endif\n\n  let curbuf_tail = fnamemodify(bufname(a:bufnr), ':t')\n  let do_deduplicate = 0\n  let path_tokens = {}\n\n  for nr in a:buffers\n    let name = bufname(nr)\n    if !empty(name) && nr != a:bufnr && fnamemodify(name, ':t') == curbuf_tail\n      let do_deduplicate = 1\n      let tokens = reverse(split(substitute(fnamemodify(name, ':p:.:h'), '\\\\', '/', 'g'), '/'))\n      let token_index = 0\n      for token in tokens\n        if token == '.' | break | endif\n        if !has_key(path_tokens, token_index)\n          let path_tokens[token_index] = {}\n        endif\n        let path_tokens[token_index][token] = 1\n        let token_index += 1\n      endfor\n    endif\n  endfor\n\n  if do_deduplicate == 1\n    let path = []\n    let token_index = 0\n    for token in reverse(split(substitute(fnamemodify(bufname(a:bufnr), ':p:.:h'), '\\\\', '/', 'g'), '/'))\n      if token == '.' | break | endif\n      let duplicated = 0\n      let uniq = 1\n      let single = 1\n      if has_key(path_tokens, token_index)\n        let duplicated = 1\n        if len(keys(path_tokens[token_index])) > 1 | let single = 0 | endif\n        if has_key(path_tokens[token_index], token) | let uniq = 0 | endif\n      endif\n      call insert(path, {'token': token, 'duplicated': duplicated, 'uniq': uniq, 'single': single})\n      let token_index += 1\n    endfor\n\n    let buf_name = [curbuf_tail]\n    let has_uniq = 0\n    let has_skipped = 0\n    for token1 in reverse(path)\n      if !token1['duplicated'] && len(buf_name) > 1\n        call insert(buf_name, s:skip_symbol)\n        let has_skipped = 0\n        break\n      endif\n\n      if has_uniq == 1\n        call insert(buf_name, s:skip_symbol)\n        let has_skipped = 0\n        break\n      endif\n\n      if token1['uniq'] == 0 && token1['single'] == 1\n        let has_skipped = 1\n      else\n        if has_skipped == 1\n          call insert(buf_name, s:skip_symbol)\n          let has_skipped = 0\n        endif\n        call insert(buf_name, token1['token'])\n      endif\n\n      if token1['uniq'] == 1\n        let has_uniq = 1\n      endif\n    endfor\n\n    if has_skipped == 1\n      call insert(buf_name, s:skip_symbol)\n    endif\n\n    return airline#extensions#tabline#default#wrap_name(a:bufnr, join(buf_name, '/'))\n  else\n    return airline#extensions#tabline#default#format(a:bufnr, a:buffers)\n  endif\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/tabline.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nlet s:formatter = get(g:, 'airline#extensions#tabline#formatter', 'default')\nlet s:excludes = get(g:, 'airline#extensions#tabline#excludes', [])\nlet s:tab_nr_type = get(g:, 'airline#extensions#tabline#tab_nr_type', 0)\nlet s:show_buffers = get(g:, 'airline#extensions#tabline#show_buffers', 1)\nlet s:show_tab_nr = get(g:, 'airline#extensions#tabline#show_tab_nr', 1)\n\nlet s:builder_context = {\n      \\ 'active'        : 1,\n      \\ 'right_sep'     : get(g:, 'airline#extensions#tabline#right_sep'    , g:airline_right_sep),\n      \\ 'right_alt_sep' : get(g:, 'airline#extensions#tabline#right_alt_sep', g:airline_right_alt_sep),\n      \\ }\nif get(g:, 'airline_powerline_fonts', 0)\n  let s:builder_context.left_sep     = get(g:, 'airline#extensions#tabline#left_sep'     , \"\\ue0b0\")\n  let s:builder_context.left_alt_sep = get(g:, 'airline#extensions#tabline#left_alt_sep' , \"\\ue0b1\")\nelse\n  let s:builder_context.left_sep     = get(g:, 'airline#extensions#tabline#left_sep'     , ' ')\n  let s:builder_context.left_alt_sep = get(g:, 'airline#extensions#tabline#left_alt_sep' , '|')\nendif\n\nlet s:buf_min_count = get(g:, 'airline#extensions#tabline#buffer_min_count', 0)\nlet s:tab_min_count = get(g:, 'airline#extensions#tabline#tab_min_count', 0)\nlet s:spc = g:airline_symbols.space\n\nfunction! airline#extensions#tabline#init(ext)\n  if has('gui_running')\n    set guioptions-=e\n  endif\n\n  autocmd User AirlineToggledOn call s:toggle_on()\n  autocmd User AirlineToggledOff call s:toggle_off()\n  autocmd BufDelete * let s:current_bufnr = -1\n\n  call s:toggle_on()\n  call a:ext.add_theme_func('airline#extensions#tabline#load_theme')\nendfunction\n\nfunction! s:toggle_off()\n  if exists('s:original_tabline')\n    let &tabline = s:original_tabline\n    let &showtabline = s:original_showtabline\n  endif\nendfunction\n\nfunction! s:toggle_on()\n  let [ s:original_tabline, s:original_showtabline ] = [ &tabline, &showtabline ]\n\n  set tabline=%!airline#extensions#tabline#get()\n  if s:buf_min_count <= 0 && s:tab_min_count <= 1\n    set showtabline=2\n  else\n    augroup airline_tabline\n      autocmd!\n      if s:show_buffers == 1\n        autocmd CursorMoved * call <sid>on_cursormove(s:buf_min_count, len(s:get_buffer_list()))\n      else\n        autocmd TabEnter * call <sid>on_cursormove(s:tab_min_count, tabpagenr('$'))\n      endif\n    augroup END\n  endif\nendfunction\n\nfunction! airline#extensions#tabline#load_theme(palette)\n  let colors    = get(a:palette, 'tabline', {})\n  let l:tab     = get(colors, 'airline_tab', a:palette.normal.airline_b)\n  let l:tabsel  = get(colors, 'airline_tabsel', a:palette.normal.airline_a)\n  let l:tabtype = get(colors, 'airline_tabtype', a:palette.visual.airline_a)\n  let l:tabfill = get(colors, 'airline_tabfill', a:palette.normal.airline_c)\n  let l:tabmod  = get(colors, 'airline_tabmod', a:palette.insert.airline_a)\n  let l:tabhid  = get(colors, 'airline_tabhid', a:palette.normal.airline_c)\n  call airline#highlighter#exec('airline_tab', l:tab)\n  call airline#highlighter#exec('airline_tabsel', l:tabsel)\n  call airline#highlighter#exec('airline_tabtype', l:tabtype)\n  call airline#highlighter#exec('airline_tabfill', l:tabfill)\n  call airline#highlighter#exec('airline_tabmod', l:tabmod)\n  call airline#highlighter#exec('airline_tabhid', l:tabhid)\nendfunction\n\nfunction! s:on_cursormove(min_count, total_count)\n  if a:total_count >= a:min_count\n    if &showtabline != 2\n      set showtabline=2\n    endif\n  else\n    if &showtabline != 0\n      set showtabline=0\n    endif\n  endif\nendfunction\n\nfunction! airline#extensions#tabline#get()\n  if s:show_buffers && tabpagenr('$') == 1\n    return s:get_buffers()\n  else\n    return s:get_tabs()\n  endif\nendfunction\n\nfunction! airline#extensions#tabline#title(n)\n  let buflist = tabpagebuflist(a:n)\n  let winnr = tabpagewinnr(a:n)\n  return airline#extensions#tabline#get_buffer_name(buflist[winnr - 1])\nendfunction\n\nfunction! airline#extensions#tabline#get_buffer_name(nr)\n  return airline#extensions#tabline#{s:formatter}#format(a:nr, get(s:, 'current_buffer_list', s:get_buffer_list()))\nendfunction\n\nfunction! s:get_buffer_list()\n  let buffers = []\n  let cur = bufnr('%')\n  for nr in range(1, bufnr('$'))\n    if buflisted(nr) && bufexists(nr)\n      for ex in s:excludes\n        if match(bufname(nr), ex)\n          continue\n        endif\n      endfor\n      if getbufvar(nr, 'current_syntax') == 'qf'\n        continue\n      endif\n      call add(buffers, nr)\n    endif\n  endfor\n\n  let s:current_buffer_list = buffers\n  return buffers\nendfunction\n\nfunction! s:get_visible_buffers()\n  let buffers = s:get_buffer_list()\n  let cur = bufnr('%')\n\n  let total_width = 0\n  let max_width = 0\n\n  for nr in buffers\n    let width = len(airline#extensions#tabline#get_buffer_name(nr)) + 4\n    let total_width += width\n    let max_width = max([max_width, width])\n  endfor\n\n  \" only show current and surrounding buffers if there are too many buffers\n  let position  = index(buffers, cur)\n  let vimwidth = &columns\n  if total_width > vimwidth && position > -1\n    let buf_count = len(buffers)\n\n    \" determine how many buffers to show based on the longest buffer width,\n    \" use one on the right side and put the rest on the left\n    let buf_max   = vimwidth / max_width\n    let buf_right = 1\n    let buf_left  = max([0, buf_max - buf_right])\n\n    let start = max([0, position - buf_left])\n    let end   = min([buf_count, position + buf_right])\n\n    \" fill up available space on the right\n    if position < buf_left\n      let end += (buf_left - position)\n    endif\n\n    \" fill up available space on the left\n    if end > buf_count - 1 - buf_right\n      let start -= max([0, buf_right - (buf_count - 1 - position)])\n    endif\n\n    let buffers = eval('buffers[' . start . ':' . end . ']')\n\n    if start > 0\n      call insert(buffers, -1, 0)\n    endif\n\n    if end < buf_count - 1\n      call add(buffers, -1)\n    endif\n  endif\n\n  return buffers\nendfunction\n\nlet s:current_bufnr = -1\nlet s:current_tabnr = -1\nlet s:current_tabline = ''\nlet s:current_modified = 0\nfunction! s:get_buffers()\n  let cur = bufnr('%')\n  if cur == s:current_bufnr\n    if !g:airline_detect_modified || getbufvar(cur, '&modified') == s:current_modified\n      return s:current_tabline\n    endif\n  endif\n\n  let b = airline#builder#new(s:builder_context)\n  let tab_bufs = tabpagebuflist(tabpagenr())\n  for nr in s:get_visible_buffers()\n    if nr < 0\n      call b.add_raw('%#airline_tabhid#...')\n      continue\n    endif\n    if cur == nr\n      if g:airline_detect_modified && getbufvar(nr, '&modified')\n        let group = 'airline_tabmod'\n      else\n        let group = 'airline_tabsel'\n      endif\n      let s:current_modified = (group == 'airline_tabmod') ? 1 : 0\n    else\n      if index(tab_bufs, nr) > -1\n        let group = 'airline_tab'\n      else\n        let group = 'airline_tabhid'\n      endif\n    endif\n    call b.add_section(group, s:spc.'%(%{airline#extensions#tabline#get_buffer_name('.nr.')}%)'.s:spc)\n  endfor\n\n  call b.add_section('airline_tabfill', '')\n  call b.split()\n  call b.add_section('airline_tabtype', ' buffers ')\n\n  let s:current_bufnr = cur\n  let s:current_tabline = b.build()\n  return s:current_tabline\nendfunction\n\nfunction! s:get_tabs()\n  let curbuf = bufnr('%')\n  let curtab = tabpagenr()\n  if curbuf == s:current_bufnr && curtab == s:current_tabnr\n    if !g:airline_detect_modified || getbufvar(curbuf, '&modified') == s:current_modified\n      return s:current_tabline\n    endif\n  endif\n\n  let b = airline#builder#new(s:builder_context)\n  for i in range(1, tabpagenr('$'))\n    if i == curtab\n      let group = 'airline_tabsel'\n      if g:airline_detect_modified\n        for bi in tabpagebuflist(i)\n          if getbufvar(bi, '&modified')\n            let group = 'airline_tabmod'\n          endif\n        endfor\n      endif\n      let s:current_modified = (group == 'airline_tabmod') ? 1 : 0\n    else\n      let group = 'airline_tab'\n    endif\n    let val = '%('\n    if s:show_tab_nr\n      if s:tab_nr_type == 0\n        let val .= ' %{len(tabpagebuflist('.i.'))}'\n      else\n        let val .= (g:airline_symbols.space).i\n      endif\n    endif\n    call b.add_section(group, val.'%'.i.'T %{airline#extensions#tabline#title('.i.')} %)')\n  endfor\n\n  call b.add_raw('%T')\n  call b.add_section('airline_tabfill', '')\n  call b.split()\n  call b.add_section('airline_tab', ' %999XX ')\n  call b.add_section('airline_tabtype', ' tabs ')\n\n  let s:current_bufnr = curbuf\n  let s:current_tabnr = curtab\n  let s:current_tabline = b.build()\n  return s:current_tabline\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/tagbar.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nif !exists(':TagbarToggle')\n  finish\nendif\n\nlet s:flags = get(g:, 'airline#extensions#tagbar#flags', '')\nlet s:spc = g:airline_symbols.space\n\n\" Arguments: current, sort, fname\nfunction! airline#extensions#tagbar#get_status(...)\n  let builder = airline#builder#new({ 'active': a:1 })\n  call builder.add_section('airline_a', s:spc.'Tagbar'.s:spc)\n  call builder.add_section('airline_b', s:spc.a:2.s:spc)\n  call builder.add_section('airline_c', s:spc.a:3.s:spc)\n  return builder.build()\nendfunction\n\nfunction! airline#extensions#tagbar#inactive_apply(...)\n  if getwinvar(a:2.winnr, '&filetype') == 'tagbar'\n    return -1\n  endif\nendfunction\n\nlet s:airline_tagbar_last_lookup_time = 0\nlet s:airline_tagbar_last_lookup_val = ''\nfunction! airline#extensions#tagbar#currenttag()\n  if get(w:, 'airline_active', 0)\n    if s:airline_tagbar_last_lookup_time != localtime()\n      let s:airline_tagbar_last_lookup_val = tagbar#currenttag('%s', '', s:flags)\n      let s:airline_tagbar_last_lookup_time = localtime()\n    endif\n    return s:airline_tagbar_last_lookup_val\n  endif\n  return ''\nendfunction\n\nfunction! airline#extensions#tagbar#init(ext)\n  call a:ext.add_inactive_statusline_func('airline#extensions#tagbar#inactive_apply')\n  let g:tagbar_status_func = 'airline#extensions#tagbar#get_status'\n\n  call airline#parts#define_function('tagbar', 'airline#extensions#tagbar#currenttag')\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/tmuxline.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nif !exists(':Tmuxline')\n  finish\nendif\n\nlet s:tmuxline_snapshot_file = get(g:, 'airline#extensions#tmuxline#snapshot_file', '')\nlet s:color_template = get(g:, 'airline#extensions#tmuxline#color_template', 'normal')\n\nfunction! airline#extensions#tmuxline#init(ext)\n  call a:ext.add_theme_func('airline#extensions#tmuxline#set_tmux_colors')\nendfunction\n\nfunction! airline#extensions#tmuxline#set_tmux_colors(palette)\n  let color_template = has_key(a:palette, s:color_template) ? s:color_template : 'normal'\n  let mode_palette = a:palette[color_template]\n\n  let tmuxline_theme = tmuxline#api#create_theme_from_airline(mode_palette)\n  call tmuxline#api#set_theme(tmuxline_theme)\n\n  if strlen(s:tmuxline_snapshot_file)\n    call tmuxline#api#snapshot(s:tmuxline_snapshot_file)\n  endif\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/undotree.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nif !exists(':UndotreeToggle')\n  finish\nendif\n\nfunction! airline#extensions#undotree#apply(...)\n  if exists('t:undotree')\n    if &ft == 'undotree'\n      if exists('*t:undotree.GetStatusLine')\n        call airline#extensions#apply_left_override('undo', '%{t:undotree.GetStatusLine()}')\n      else\n        call airline#extensions#apply_left_override('undotree', '%f')\n      endif\n    endif\n\n    if &ft == 'diff' && exists('*t:diffpanel.GetStatusLine')\n      call airline#extensions#apply_left_override('diff', '%{t:diffpanel.GetStatusLine()}')\n    endif\n  endif\nendfunction\n\nfunction! airline#extensions#undotree#init(ext)\n  call a:ext.add_statusline_func('airline#extensions#undotree#apply')\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/unite.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nif !get(g:, 'loaded_unite', 0)\n  finish\nendif\n\nfunction! airline#extensions#unite#apply(...)\n  if &ft == 'unite'\n    call a:1.add_section('airline_a', ' Unite ')\n    call a:1.add_section('airline_b', ' %{get(unite#get_context(), \"buffer_name\", \"\")} ')\n    call a:1.add_section('airline_c', ' %{unite#get_status_string()} ')\n    call a:1.split()\n    call a:1.add_section('airline_y', ' %{get(unite#get_context(), \"real_buffer_name\", \"\")} ')\n    return 1\n  endif\nendfunction\n\nfunction! airline#extensions#unite#init(ext)\n  let g:unite_force_overwrite_statusline = 0\n  call a:ext.add_statusline_func('airline#extensions#unite#apply')\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/virtualenv.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nif !get(g:, 'virtualenv_loaded', 0)\n  finish\nendif\n\nlet s:spc = g:airline_symbols.space\n\nfunction! airline#extensions#virtualenv#init(ext)\n  call a:ext.add_statusline_func('airline#extensions#virtualenv#apply')\nendfunction\n\nfunction! airline#extensions#virtualenv#apply(...)\n  if &filetype =~ \"python\"\n    call airline#extensions#append_to_section('x',\n          \\ s:spc.g:airline_right_alt_sep.s:spc.'%{virtualenv#statusline()}')\n  endif\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions/whitespace.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\n\" http://got-ravings.blogspot.com/2008/10/vim-pr0n-statusline-whitespace-flags.html\n\n\" for backwards compatibility\nif exists('g:airline_detect_whitespace')\n  let s:show_message = g:airline_detect_whitespace == 1\nelse\n  let s:show_message = get(g:, 'airline#extensions#whitespace#show_message', 1)\nendif\n\nlet s:symbol = get(g:, 'airline#extensions#whitespace#symbol', g:airline_symbols.whitespace)\nlet s:default_checks = ['indent', 'trailing']\n\nlet s:trailing_format = get(g:, 'airline#extensions#whitespace#trailing_format', 'trailing[%s]')\nlet s:mixed_indent_format = get(g:, 'airline#extensions#whitespace#mixed_indent_format', 'mixed-indent[%s]')\n\nlet s:max_lines = get(g:, 'airline#extensions#whitespace#max_lines', 20000)\n\nlet s:enabled = 1\n\nfunction! airline#extensions#whitespace#check()\n  if &readonly || !&modifiable || !s:enabled || line('$') > s:max_lines\n    return ''\n  endif\n\n  if !exists('b:airline_whitespace_check')\n    let b:airline_whitespace_check = ''\n    let checks = get(g:, 'airline#extensions#whitespace#checks', s:default_checks)\n\n    let trailing = 0\n    if index(checks, 'trailing') > -1\n      let trailing = search(' $', 'nw')\n    endif\n\n    let mixed = 0\n    if index(checks, 'indent') > -1\n      let indents = [search('^ \\{2,}', 'nb'), search('^ \\{2,}', 'n'), search('^\\t', 'nb'), search('^\\t', 'n')]\n      let mixed = indents[0] != 0 && indents[1] != 0 && indents[2] != 0 && indents[3] != 0\n    endif\n\n    if trailing != 0 || mixed\n      let b:airline_whitespace_check = s:symbol\n      if s:show_message\n        if trailing != 0\n          let b:airline_whitespace_check .= (g:airline_symbols.space).printf(s:trailing_format, trailing)\n        endif\n        if mixed\n          let mixnr = indents[0] == indents[1] ? indents[0] : indents[2]\n          let b:airline_whitespace_check .= (g:airline_symbols.space).printf(s:mixed_indent_format, mixnr)\n        endif\n      endif\n    endif\n  endif\n  return b:airline_whitespace_check\nendfunction!\n\nfunction! airline#extensions#whitespace#toggle()\n  if s:enabled\n    autocmd! airline_whitespace CursorHold,BufWritePost\n    augroup! airline_whitespace\n    let s:enabled = 0\n  else\n    call airline#extensions#whitespace#init()\n    let s:enabled = 1\n  endif\n  echo 'Whitespace checking: '.(s:enabled ? 'Enabled' : 'Disabled')\nendfunction\n\nfunction! airline#extensions#whitespace#init(...)\n  call airline#parts#define_function('whitespace', 'airline#extensions#whitespace#check')\n\n  unlet! b:airline_whitespace_check\n  augroup airline_whitespace\n    autocmd!\n    autocmd CursorHold,BufWritePost * unlet! b:airline_whitespace_check\n  augroup END\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/extensions.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nlet s:ext = {}\nlet s:ext._theme_funcrefs = []\n\nfunction! s:ext.add_statusline_func(name) dict\n  call airline#add_statusline_func(a:name)\nendfunction\nfunction! s:ext.add_statusline_funcref(function) dict\n  call airline#add_statusline_funcref(a:function)\nendfunction\nfunction! s:ext.add_inactive_statusline_func(name) dict\n  call airline#add_inactive_statusline_func(a:name)\nendfunction\nfunction! s:ext.add_theme_func(name) dict\n  call add(self._theme_funcrefs, function(a:name))\nendfunction\n\nlet s:script_path = tolower(resolve(expand('<sfile>:p:h')))\n\nlet s:filetype_overrides = {\n      \\ 'nerdtree': [ 'NERD', '' ],\n      \\ 'gundo': [ 'Gundo', '' ],\n      \\ 'diff': [ 'diff', '' ],\n      \\ 'vimfiler': [ 'vimfiler', '%{vimfiler#get_status_string()}' ],\n      \\ 'minibufexpl': [ 'MiniBufExplorer', '' ],\n      \\ 'startify': [ 'startify', '' ],\n      \\ }\n\nlet s:filetype_regex_overrides = {}\n\nfunction! s:check_defined_section(name)\n  if !exists('w:airline_section_{a:name}')\n    let w:airline_section_{a:name} = g:airline_section_{a:name}\n  endif\nendfunction\n\nfunction! airline#extensions#append_to_section(name, value)\n  call <sid>check_defined_section(a:name)\n  let w:airline_section_{a:name} .= a:value\nendfunction\n\nfunction! airline#extensions#prepend_to_section(name, value)\n  call <sid>check_defined_section(a:name)\n  let w:airline_section_{a:name} = a:value . w:airline_section_{a:name}\nendfunction\n\nfunction! airline#extensions#apply_left_override(section1, section2)\n  let w:airline_section_a = a:section1\n  let w:airline_section_b = a:section2\n  let w:airline_section_c = airline#section#create(['readonly'])\n  let w:airline_render_left = 1\n  let w:airline_render_right = 0\nendfunction\n\nlet s:active_winnr = -1\nfunction! airline#extensions#apply(...)\n  let s:active_winnr = winnr()\n\n  if s:is_excluded_window()\n    return -1\n  endif\n\n  if &buftype == 'help'\n    call airline#extensions#apply_left_override('Help', '%f')\n    let w:airline_section_x = ''\n    let w:airline_section_y = ''\n    let w:airline_render_right = 1\n  endif\n\n  if &previewwindow\n    let w:airline_section_a = 'Preview'\n    let w:airline_section_b = ''\n    let w:airline_section_c = bufname(winbufnr(winnr()))\n  endif\n\n  if has_key(s:filetype_overrides, &ft)\n    let args = s:filetype_overrides[&ft]\n    call airline#extensions#apply_left_override(args[0], args[1])\n  endif\n\n  for item in items(s:filetype_regex_overrides)\n    if match(&ft, item[0]) >= 0\n      call airline#extensions#apply_left_override(item[1][0], item[1][1])\n    endif\n  endfor\nendfunction\n\nfunction! s:is_excluded_window()\n  for matchft in g:airline_exclude_filetypes\n    if matchft ==# &ft\n      return 1\n    endif\n  endfor\n\n  for matchw in g:airline_exclude_filenames\n    if matchstr(expand('%'), matchw) ==# matchw\n      return 1\n    endif\n  endfor\n\n  if g:airline_exclude_preview && &previewwindow\n    return 1\n  endif\n\n  return 0\nendfunction\n\nfunction! airline#extensions#load_theme()\n  call airline#util#exec_funcrefs(s:ext._theme_funcrefs, g:airline#themes#{g:airline_theme}#palette)\nendfunction\n\nfunction! s:sync_active_winnr()\n  if exists('#airline') && winnr() != s:active_winnr\n    call airline#update_statusline()\n  endif\nendfunction\n\nfunction! airline#extensions#load()\n  \" non-trivial number of external plugins use eventignore=all, so we need to account for that\n  autocmd CursorMoved * call <sid>sync_active_winnr()\n\n  call airline#extensions#quickfix#init(s:ext)\n\n  if get(g:, 'loaded_unite', 0)\n    call airline#extensions#unite#init(s:ext)\n  endif\n\n  if exists(':NetrwSettings')\n    call airline#extensions#netrw#init(s:ext)\n  endif\n\n  if get(g:, 'loaded_vimfiler', 0)\n    let g:vimfiler_force_overwrite_statusline = 0\n  endif\n\n  if get(g:, 'loaded_ctrlp', 0)\n    call airline#extensions#ctrlp#init(s:ext)\n  endif\n\n  if get(g:, 'command_t_loaded', 0)\n    call airline#extensions#commandt#init(s:ext)\n  endif\n\n  if exists(':UndotreeToggle')\n    call airline#extensions#undotree#init(s:ext)\n  endif\n\n  if (get(g:, 'airline#extensions#hunks#enabled', 1) && get(g:, 'airline_enable_hunks', 1))\n        \\ && (exists('g:loaded_signify') || exists('g:loaded_gitgutter'))\n    call airline#extensions#hunks#init(s:ext)\n  endif\n\n  if (get(g:, 'airline#extensions#tagbar#enabled', 1) && get(g:, 'airline_enable_tagbar', 1))\n        \\ && exists(':TagbarToggle')\n    call airline#extensions#tagbar#init(s:ext)\n  endif\n\n  if (get(g:, 'airline#extensions#csv#enabled', 1) && get(g:, 'airline_enable_csv', 1))\n        \\ && (get(g:, 'loaded_csv', 0) || exists(':Table'))\n    call airline#extensions#csv#init(s:ext)\n  endif\n\n  if exists(':VimShell')\n    let s:filetype_overrides['vimshell'] = ['vimshell','%{vimshell#get_status_string()}']\n    let s:filetype_regex_overrides['^int-'] = ['vimshell','%{substitute(&ft, \"int-\", \"\", \"\")}']\n  endif\n\n  if (get(g:, 'airline#extensions#branch#enabled', 1) && get(g:, 'airline_enable_branch', 1))\n        \\ && (exists('*fugitive#head') || exists('*lawrencium#statusline') ||\n        \\     (get(g:, 'airline#extensions#branch#use_vcscommand', 0) && exists('*VCSCommandGetStatusLine')))\n    call airline#extensions#branch#init(s:ext)\n  endif\n\n  if (get(g:, 'airline#extensions#bufferline#enabled', 1) && get(g:, 'airline_enable_bufferline', 1))\n        \\ && exists('*bufferline#get_status_string')\n    call airline#extensions#bufferline#init(s:ext)\n  endif\n\n  if get(g:, 'virtualenv_loaded', 0) && get(g:, 'airline#extensions#virtualenv#enabled', 1)\n    call airline#extensions#virtualenv#init(s:ext)\n  endif\n\n  if (get(g:, 'airline#extensions#eclim#enabled', 1) && exists(':ProjectCreate'))\n    call airline#extensions#eclim#init(s:ext)\n  endif\n\n  if (get(g:, 'airline#extensions#syntastic#enabled', 1) && get(g:, 'airline_enable_syntastic', 1))\n        \\ && exists(':SyntasticCheck')\n    call airline#extensions#syntastic#init(s:ext)\n  endif\n\n  if (get(g:, 'airline#extensions#whitespace#enabled', 1) && get(g:, 'airline_detect_whitespace', 1))\n    call airline#extensions#whitespace#init(s:ext)\n  endif\n\n  if get(g:, 'airline#extensions#tabline#enabled', 0)\n    call airline#extensions#tabline#init(s:ext)\n  endif\n\n  if get(g:, 'airline#extensions#tmuxline#enabled', 1) && exists(':Tmuxline')\n    call airline#extensions#tmuxline#init(s:ext)\n  endif\n\n  if get(g:, 'airline#extensions#promptline#enabled', 1) && exists(':PromptlineSnapshot') && len(get(g:, 'airline#extensions#promptline#snapshot_file', ''))\n    call airline#extensions#promptline#init(s:ext)\n  endif\n\n  \" load all other extensions not part of the default distribution\n  for file in split(globpath(&rtp, \"autoload/airline/extensions/*.vim\"), \"\\n\")\n    \" we have to check both resolved and unresolved paths, since it's possible\n    \" that they might not get resolved properly (see #187)\n    if stridx(tolower(resolve(fnamemodify(file, ':p'))), s:script_path) < 0\n          \\ && stridx(tolower(fnamemodify(file, ':p')), s:script_path) < 0\n      let name = fnamemodify(file, ':t:r')\n      if !get(g:, 'airline#extensions#'.name.'#enabled', 1)\n        continue\n      endif\n      try\n        call airline#extensions#{name}#init(s:ext)\n      catch\n      endtry\n    endif\n  endfor\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/highlighter.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nlet s:is_win32term = (has('win32') || has('win64')) && !has('gui_running')\nlet s:separators = {}\nlet s:accents = {}\n\nfunction! s:gui2cui(rgb, fallback)\n  if a:rgb == ''\n    return a:fallback\n  endif\n  let rgb = map(matchlist(a:rgb, '#\\(..\\)\\(..\\)\\(..\\)')[1:3], '0 + (\"0x\".v:val)')\n  let rgb = [rgb[0] > 127 ? 4 : 0, rgb[1] > 127 ? 2 : 0, rgb[2] > 127 ? 1 : 0]\n  return rgb[0]+rgb[1]+rgb[2]\nendfunction\n\nfunction! s:get_syn(group, what)\n  \" need to pass in mode, known to break on 7.3.547\n  let mode = has('gui_running') ? 'gui' : 'cterm'\n  let color = synIDattr(synIDtrans(hlID(a:group)), a:what, mode)\n  if empty(color) || color == -1\n    let color = synIDattr(synIDtrans(hlID('Normal')), a:what, mode)\n  endif\n  if empty(color) || color == -1\n    if has('gui_running')\n      let color = a:what ==# 'fg' ? '#000000' : '#FFFFFF'\n    else\n      let color = a:what ==# 'fg' ? 0 : 1\n    endif\n  endif\n  return color\nendfunction\n\nfunction! s:get_array(fg, bg, opts)\n  let fg = a:fg\n  let bg = a:bg\n  return has('gui_running')\n        \\ ? [ fg, bg, '', '', join(a:opts, ',') ]\n        \\ : [ '', '', fg, bg, join(a:opts, ',') ]\nendfunction\n\nfunction! airline#highlighter#get_highlight(group, ...)\n  let fg = s:get_syn(a:group, 'fg')\n  let bg = s:get_syn(a:group, 'bg')\n  let reverse = synIDattr(synIDtrans(hlID(a:group)), 'reverse', has('gui_running') ? 'gui' : 'term')\n  return reverse ? s:get_array(bg, fg, a:000) : s:get_array(fg, bg, a:000)\nendfunction\n\nfunction! airline#highlighter#get_highlight2(fg, bg, ...)\n  let fg = s:get_syn(a:fg[0], a:fg[1])\n  let bg = s:get_syn(a:bg[0], a:bg[1])\n  return s:get_array(fg, bg, a:000)\nendfunction\n\nfunction! airline#highlighter#exec(group, colors)\n  let colors = a:colors\n  if s:is_win32term\n    let colors[2] = s:gui2cui(get(colors, 0, ''), get(colors, 2, ''))\n    let colors[3] = s:gui2cui(get(colors, 1, ''), get(colors, 3, ''))\n  endif\n  exec printf('hi %s %s %s %s %s %s %s %s',\n        \\ a:group,\n        \\ get(colors, 0, '') != '' ? 'guifg='.colors[0] : '',\n        \\ get(colors, 1, '') != '' ? 'guibg='.colors[1] : '',\n        \\ get(colors, 2, '') != '' ? 'ctermfg='.colors[2] : '',\n        \\ get(colors, 3, '') != '' ? 'ctermbg='.colors[3] : '',\n        \\ get(colors, 4, '') != '' ? 'gui='.colors[4] : '',\n        \\ get(colors, 4, '') != '' ? 'cterm='.colors[4] : '',\n        \\ get(colors, 4, '') != '' ? 'term='.colors[4] : '')\nendfunction\n\nfunction! s:exec_separator(dict, from, to, inverse, suffix)\n  let l:from = airline#themes#get_highlight(a:from.a:suffix)\n  let l:to = airline#themes#get_highlight(a:to.a:suffix)\n  let group = a:from.'_to_'.a:to.a:suffix\n  if a:inverse\n    let colors = [ l:from[1], l:to[1], l:from[3], l:to[3] ]\n  else\n    let colors = [ l:to[1], l:from[1], l:to[3], l:from[3] ]\n  endif\n  let a:dict[group] = colors\n  call airline#highlighter#exec(group, colors)\nendfunction\n\nfunction! airline#highlighter#load_theme()\n  for winnr in filter(range(1, winnr('$')), 'v:val != winnr()')\n    call airline#highlighter#highlight_modified_inactive(winbufnr(winnr))\n  endfor\n  call airline#highlighter#highlight(['inactive'])\n  call airline#highlighter#highlight(['normal'])\nendfunction\n\nfunction! airline#highlighter#add_separator(from, to, inverse)\n  let s:separators[a:from.a:to] = [a:from, a:to, a:inverse]\n  call <sid>exec_separator({}, a:from, a:to, a:inverse, '')\nendfunction\n\nfunction! airline#highlighter#add_accent(accent)\n  let s:accents[a:accent] = 1\nendfunction\n\nfunction! airline#highlighter#highlight_modified_inactive(bufnr)\n  if getbufvar(a:bufnr, '&modified')\n    let colors = exists('g:airline#themes#{g:airline_theme}#palette.inactive_modified.airline_c')\n          \\ ? g:airline#themes#{g:airline_theme}#palette.inactive_modified.airline_c : []\n  else\n    let colors = exists('g:airline#themes#{g:airline_theme}#palette.inactive.airline_c')\n          \\ ? g:airline#themes#{g:airline_theme}#palette.inactive.airline_c : []\n  endif\n\n  if !empty(colors)\n    call airline#highlighter#exec('airline_c'.(a:bufnr).'_inactive', colors)\n  endif\nendfunction\n\nfunction! airline#highlighter#highlight(modes)\n  let p = g:airline#themes#{g:airline_theme}#palette\n\n  \" draw the base mode, followed by any overrides\n  let mapped = map(a:modes, 'v:val == a:modes[0] ? v:val : a:modes[0].\"_\".v:val')\n  let suffix = a:modes[0] == 'inactive' ? '_inactive' : ''\n  for mode in mapped\n    if exists('g:airline#themes#{g:airline_theme}#palette[mode]')\n      let dict = g:airline#themes#{g:airline_theme}#palette[mode]\n      for kvp in items(dict)\n        let mode_colors = kvp[1]\n        call airline#highlighter#exec(kvp[0].suffix, mode_colors)\n\n        for accent in keys(s:accents)\n          if !has_key(p.accents, accent)\n            continue\n          endif\n          let colors = copy(mode_colors)\n          if p.accents[accent][0] != ''\n            let colors[0] = p.accents[accent][0]\n          endif\n          if p.accents[accent][2] != ''\n            let colors[2] = p.accents[accent][2]\n          endif\n          if len(colors) >= 5\n            let colors[4] = get(p.accents[accent], 4, '')\n          else\n            call add(colors, get(p.accents[accent], 4, ''))\n          endif\n          call airline#highlighter#exec(kvp[0].suffix.'_'.accent, colors)\n        endfor\n      endfor\n\n      \" TODO: optimize this\n      for sep in items(s:separators)\n        call <sid>exec_separator(dict, sep[1][0], sep[1][1], sep[1][2], suffix)\n      endfor\n    endif\n  endfor\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/init.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nfunction! s:check_defined(variable, default)\n  if !exists(a:variable)\n    let {a:variable} = a:default\n  endif\nendfunction\n\nlet s:loaded = 0\nfunction! airline#init#bootstrap()\n  if s:loaded\n    return\n  endif\n  let s:loaded = 1\n\n  let g:airline#init#bootstrapping = 1\n\n  call s:check_defined('g:airline_left_sep', get(g:, 'airline_powerline_fonts', 0)?\"\\ue0b0\":\">\")\n  call s:check_defined('g:airline_left_alt_sep', get(g:, 'airline_powerline_fonts', 0)?\"\\ue0b1\":\">\")\n  call s:check_defined('g:airline_right_sep', get(g:, 'airline_powerline_fonts', 0)?\"\\ue0b2\":\"<\")\n  call s:check_defined('g:airline_right_alt_sep', get(g:, 'airline_powerline_fonts', 0)?\"\\ue0b3\":\"<\")\n  call s:check_defined('g:airline_detect_modified', 1)\n  call s:check_defined('g:airline_detect_paste', 1)\n  call s:check_defined('g:airline_detect_iminsert', 0)\n  call s:check_defined('g:airline_inactive_collapse', 1)\n  call s:check_defined('g:airline_exclude_filenames', ['DebuggerWatch','DebuggerStack','DebuggerStatus'])\n  call s:check_defined('g:airline_exclude_filetypes', [])\n  call s:check_defined('g:airline_exclude_preview', 0)\n\n  call s:check_defined('g:airline_mode_map', {})\n  call extend(g:airline_mode_map, {\n        \\ '__' : '------',\n        \\ 'n'  : 'NORMAL',\n        \\ 'i'  : 'INSERT',\n        \\ 'R'  : 'REPLACE',\n        \\ 'v'  : 'VISUAL',\n        \\ 'V'  : 'V-LINE',\n        \\ 'c'  : 'COMMAND',\n        \\ '\u0016' : 'V-BLOCK',\n        \\ 's'  : 'SELECT',\n        \\ 'S'  : 'S-LINE',\n        \\ '\u0013' : 'S-BLOCK',\n        \\ }, 'keep')\n\n  call s:check_defined('g:airline_theme_map', {})\n  call extend(g:airline_theme_map, {\n        \\ 'Tomorrow.*': 'tomorrow',\n        \\ 'base16.*': 'base16',\n        \\ 'mo[l|n]okai': 'molokai',\n        \\ 'wombat.*': 'wombat',\n        \\ '.*zenburn.*': 'zenburn',\n        \\ '.*solarized.*': 'solarized',\n        \\ }, 'keep')\n\n  call s:check_defined('g:airline_symbols', {})\n  call extend(g:airline_symbols, {\n        \\ 'paste': get(g:, 'airline_paste_symbol', 'PASTE'),\n        \\ 'readonly': get(g:, 'airline_readonly_symbol', get(g:, 'airline_powerline_fonts', 0) ? \"\\ue0a2\" : 'RO'),\n        \\ 'whitespace': get(g:, 'airline_powerline_fonts', 0) ? \"\\u2739\" : '!',\n        \\ 'linenr': get(g:, 'airline_linecolumn_prefix', get(g:, 'airline_powerline_fonts', 0) ? \"\\ue0a1\" : ':' ),\n        \\ 'branch': get(g:, 'airline_branch_prefix', get(g:, 'airline_powerline_fonts', 0) ? \"\\ue0a0\" : ''),\n        \\ 'modified': '+',\n        \\ 'space': ' ',\n        \\ }, 'keep')\n\n  call airline#parts#define('mode', {\n        \\ 'function': 'airline#parts#mode',\n        \\ 'accent': 'bold',\n        \\ })\n  call airline#parts#define_function('iminsert', 'airline#parts#iminsert')\n  call airline#parts#define_function('paste', 'airline#parts#paste')\n  call airline#parts#define_function('filetype', 'airline#parts#filetype')\n  call airline#parts#define('readonly', {\n        \\ 'function': 'airline#parts#readonly',\n        \\ 'accent': 'red',\n        \\ })\n  call airline#parts#define_raw('file', '%f%m')\n  call airline#parts#define_raw('linenr', '%{g:airline_symbols.linenr}%#__accent_bold#%4l%#__restore__#')\n  call airline#parts#define_function('ffenc', 'airline#parts#ffenc')\n  call airline#parts#define_empty(['hunks', 'branch', 'tagbar', 'syntastic', 'eclim', 'whitespace'])\n\n  unlet g:airline#init#bootstrapping\nendfunction\n\nfunction! airline#init#sections()\n  let spc = g:airline_symbols.space\n  if !exists('g:airline_section_a')\n    let g:airline_section_a = airline#section#create_left(['mode', 'paste', 'iminsert'])\n  endif\n  if !exists('g:airline_section_b')\n    let g:airline_section_b = airline#section#create(['hunks', 'branch'])\n  endif\n  if !exists('g:airline_section_c')\n    let g:airline_section_c = airline#section#create(['%<', 'file', spc, 'readonly'])\n  endif\n  if !exists('g:airline_section_gutter')\n    let g:airline_section_gutter = airline#section#create(['%='])\n  endif\n  if !exists('g:airline_section_x')\n    let g:airline_section_x = airline#section#create_right(['tagbar', 'filetype'])\n  endif\n  if !exists('g:airline_section_y')\n    let g:airline_section_y = airline#section#create_right(['ffenc'])\n  endif\n  if !exists('g:airline_section_z')\n    let g:airline_section_z = airline#section#create(['%3p%%'.spc, 'linenr', ':%3c '])\n  endif\n  if !exists('g:airline_section_warning')\n    let g:airline_section_warning = airline#section#create(['syntastic', 'eclim', 'whitespace'])\n  endif\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/parts.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nlet s:parts = {}\n\n\" PUBLIC API {{{\n\nfunction! airline#parts#define(key, config)\n  let s:parts[a:key] = get(s:parts, a:key, {})\n  if exists('g:airline#init#bootstrapping')\n    call extend(s:parts[a:key], a:config, 'keep')\n  else\n    call extend(s:parts[a:key], a:config, 'force')\n  endif\nendfunction\n\nfunction! airline#parts#define_function(key, name)\n  call airline#parts#define(a:key, { 'function': a:name })\nendfunction\n\nfunction! airline#parts#define_text(key, text)\n  call airline#parts#define(a:key, { 'text': a:text })\nendfunction\n\nfunction! airline#parts#define_raw(key, raw)\n  call airline#parts#define(a:key, { 'raw': a:raw })\nendfunction\n\nfunction! airline#parts#define_minwidth(key, width)\n  call airline#parts#define(a:key, { 'minwidth': a:width })\nendfunction\n\nfunction! airline#parts#define_condition(key, predicate)\n  call airline#parts#define(a:key, { 'condition': a:predicate })\nendfunction\n\nfunction! airline#parts#define_accent(key, accent)\n  call airline#parts#define(a:key, { 'accent': a:accent })\nendfunction\n\nfunction! airline#parts#define_empty(keys)\n  for key in a:keys\n    call airline#parts#define_raw(key, '')\n  endfor\nendfunction\n\nfunction! airline#parts#get(key)\n  return get(s:parts, a:key, {})\nendfunction\n\n\" }}}\n\nfunction! airline#parts#mode()\n  return get(w:, 'airline_current_mode', '')\nendfunction\n\nfunction! airline#parts#paste()\n  return g:airline_detect_paste && &paste ? g:airline_symbols.paste : ''\nendfunction\n\nfunction! airline#parts#iminsert()\n  if g:airline_detect_iminsert && &iminsert && exists('b:keymap_name')\n    return toupper(b:keymap_name)\n  endif\n  return ''\nendfunction\n\nfunction! airline#parts#readonly()\n  return &readonly ? g:airline_symbols.readonly : ''\nendfunction\n\nfunction! airline#parts#filetype()\n  return &filetype\nendfunction\n\nfunction! airline#parts#ffenc()\n  return printf('%s%s', &fenc, strlen(&ff) > 0 ? '['.&ff.']' : '')\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/section.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\ncall airline#init#bootstrap()\nlet s:spc = g:airline_symbols.space\n\nfunction! s:wrap_accent(part, value)\n  if exists('a:part.accent')\n    call airline#highlighter#add_accent(a:part.accent)\n    return '%#__accent_'.(a:part.accent).'#'.a:value.'%#__restore__#'\n  endif\n  return a:value\nendfunction\n\nfunction! s:create(parts, append)\n  let _ = ''\n  for idx in range(len(a:parts))\n    let part = airline#parts#get(a:parts[idx])\n    let val = ''\n\n    if exists('part.function')\n      let func = (part.function).'()'\n    elseif exists('part.text')\n      let func = '\"'.(part.text).'\"'\n    else\n      if a:append > 0 && idx != 0\n        let val .= s:spc.g:airline_left_alt_sep.s:spc\n      endif\n      if a:append < 0 && idx != 0\n        let val = s:spc.g:airline_right_alt_sep.s:spc.val\n      endif\n      if exists('part.raw')\n        let _ .= s:wrap_accent(part, val.(part.raw))\n        continue\n      else\n        let _ .= s:wrap_accent(part, val.a:parts[idx])\n        continue\n      endif\n    endif\n\n    let minwidth = get(part, 'minwidth', 0)\n\n    if a:append > 0 && idx != 0\n      let partval = printf('%%{airline#util#append(%s,%s)}', func, minwidth)\n    elseif a:append < 0 && idx != len(a:parts) - 1\n      let partval = printf('%%{airline#util#prepend(%s,%s)}', func, minwidth)\n    else\n      let partval = printf('%%{airline#util#wrap(%s,%s)}', func, minwidth)\n    endif\n\n    if exists('part.condition')\n      let partval = substitute(partval, '{', '{'.(part.condition).' ? ', '')\n      let partval = substitute(partval, '}', ' : \"\"}', '')\n    endif\n\n    let val .= s:wrap_accent(part, partval)\n    let _ .= val\n  endfor\n  return _\nendfunction\n\nfunction! airline#section#create(parts)\n  return s:create(a:parts, 0)\nendfunction\n\nfunction! airline#section#create_left(parts)\n  return s:create(a:parts, 1)\nendfunction\n\nfunction! airline#section#create_right(parts)\n  return s:create(a:parts, -1)\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/badwolf.vim",
    "content": "let s:N1 = [ '#141413' , '#aeee00' , 232 , 154 ] \" blackestgravel & lime\nlet s:N2 = [ '#f4cf86' , '#45413b' , 222 , 238 ] \" dirtyblonde    & deepgravel\nlet s:N3 = [ '#8cffba' , '#242321' , 121 , 235 ] \" saltwatertaffy & darkgravel\nlet s:N4 = [ '#666462' , 241 ]                   \" mediumgravel\n\nlet s:I1 = [ '#141413' , '#0a9dff' , 232 , 39  ] \" blackestgravel & tardis\nlet s:I2 = [ '#f4cf86' , '#005fff' , 222 , 27  ] \" dirtyblonde    & facebook\nlet s:I3 = [ '#0a9dff' , '#242321' , 39  , 235 ] \" tardis         & darkgravel\n\nlet s:V1 = [ '#141413' , '#ffa724' , 232 , 214 ] \" blackestgravel & orange\nlet s:V2 = [ '#000000' , '#fade3e' , 16  , 221 ] \" coal           & dalespale\nlet s:V3 = [ '#000000' , '#b88853' , 16  , 137 ] \" coal           & toffee\nlet s:V4 = [ '#c7915b' , 173 ]                   \" coffee\n\nlet s:PA = [ '#f4cf86' , 222 ]                   \" dirtyblonde\nlet s:RE = [ '#ff9eb8' , 211 ]                   \" dress\n\nlet s:IA = [ s:N2[1] , s:N3[1] , s:N2[3] , s:N3[3] , '' ]\n\nlet g:airline#themes#badwolf#palette = {}\n\nlet g:airline#themes#badwolf#palette.accents = {\n      \\ 'red': [ '#ff2c4b' , '' , 196 , '' , '' ]\n      \\ }\n\nlet g:airline#themes#badwolf#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\nlet g:airline#themes#badwolf#palette.normal_modified = {\n      \\ 'airline_b': [ s:N2[0]   , s:N4[0]   , s:N2[2]   , s:N4[1]   , ''     ] ,\n      \\ 'airline_c': [ s:V1[1]   , s:N2[1]   , s:V1[3]   , s:N2[3]   , ''     ] }\n\n\nlet g:airline#themes#badwolf#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\nlet g:airline#themes#badwolf#palette.insert_modified = {\n      \\ 'airline_c': [ s:V1[1]   , s:N2[1]   , s:V1[3]   , s:N2[3]   , ''     ] }\nlet g:airline#themes#badwolf#palette.insert_paste = {\n      \\ 'airline_a': [ s:I1[0]   , s:PA[0]   , s:I1[2]   , s:PA[1]   , ''     ] }\n\n\nlet g:airline#themes#badwolf#palette.replace = copy(airline#themes#badwolf#palette.insert)\nlet g:airline#themes#badwolf#palette.replace.airline_a = [ s:I1[0] , s:RE[0] , s:I1[2] , s:RE[1] , '' ]\nlet g:airline#themes#badwolf#palette.replace_modified = g:airline#themes#badwolf#palette.insert_modified\n\n\nlet g:airline#themes#badwolf#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\nlet g:airline#themes#badwolf#palette.visual_modified = {\n      \\ 'airline_c': [ s:V3[0]   , s:V4[0]   , s:V3[2]   , s:V4[1]   , ''     ] }\n\n\nlet g:airline#themes#badwolf#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)\nlet g:airline#themes#badwolf#palette.inactive_modified = {\n      \\ 'airline_c': [ s:V1[1]   , ''        , s:V1[3]   , ''        , ''     ] }\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/base16.vim",
    "content": "if get(g:, 'airline#themes#base16#constant', 0)\n  let g:airline#themes#base16#palette = {}\n\n  \" Color palette\n  let s:gui_dark_gray = '#202020'\n  let s:cterm_dark_gray = 234\n  let s:gui_med_gray_hi = '#303030'\n  let s:cterm_med_gray_hi = 236\n  let s:gui_med_gray_lo = '#3a3a3a'\n  let s:cterm_med_gray_lo = 237\n  let s:gui_light_gray = '#505050'\n  let s:cterm_light_gray = 239\n  let s:gui_green = '#99cc99'\n  let s:cterm_green = 151\n  let s:gui_blue = '#6a9fb5'\n  let s:cterm_blue = 67\n  let s:gui_purple = '#aa759f'\n  let s:cterm_purple = 139\n  let s:gui_orange = '#d28445'\n  let s:cterm_orange = 173\n  let s:gui_red = '#ac4142'\n  let s:cterm_red = 131\n  let s:gui_pink = '#d7afd7'\n  let s:cterm_pink = 182\n\n  \" Normal mode\n  let s:N1 = [s:gui_dark_gray, s:gui_green, s:cterm_dark_gray, s:cterm_green]\n  let s:N2 = [s:gui_light_gray, s:gui_med_gray_lo, s:cterm_light_gray, s:cterm_med_gray_lo]\n  let s:N3 = [s:gui_green, s:gui_med_gray_hi, s:cterm_green, s:cterm_med_gray_hi]\n  let g:airline#themes#base16#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\n  let g:airline#themes#base16#palette.normal_modified = {\n        \\ 'airline_c': [s:gui_orange, s:gui_med_gray_hi, s:cterm_orange, s:cterm_med_gray_hi, ''],\n        \\ }\n\n  \" Insert mode\n  let s:I1 = [s:gui_med_gray_hi, s:gui_blue, s:cterm_med_gray_hi, s:cterm_blue]\n  let s:I3 = [s:gui_blue, s:gui_med_gray_hi, s:cterm_blue, s:cterm_med_gray_hi]\n  let g:airline#themes#base16#palette.insert = airline#themes#generate_color_map(s:I1, s:N2, s:I3)\n  let g:airline#themes#base16#palette.insert_modified = copy(g:airline#themes#base16#palette.normal_modified)\n  let g:airline#themes#base16#palette.insert_paste = {\n        \\ 'airline_a': [s:gui_dark_gray, s:gui_orange, s:cterm_dark_gray, s:cterm_orange, ''],\n        \\ }\n\n  \" Replace mode\n  let g:airline#themes#base16#palette.replace = {\n        \\ 'airline_a': [s:gui_dark_gray, s:gui_red, s:cterm_dark_gray, s:cterm_red, ''],\n        \\ 'airline_c': [s:gui_red, s:gui_med_gray_hi, s:cterm_red, s:cterm_med_gray_hi, ''],\n        \\ }\n  let g:airline#themes#base16#palette.replace_modified = copy(g:airline#themes#base16#palette.insert_modified)\n\n  \" Visual mode\n  let s:V1 = [s:gui_dark_gray, s:gui_pink, s:cterm_dark_gray, s:cterm_pink]\n  let s:V3 = [s:gui_pink, s:gui_med_gray_hi, s:cterm_pink, s:cterm_med_gray_hi]\n  let g:airline#themes#base16#palette.visual = airline#themes#generate_color_map(s:V1, s:N2, s:V3)\n  let g:airline#themes#base16#palette.visual_modified = copy(g:airline#themes#base16#palette.insert_modified)\n\n  \" Inactive window\n  let s:IA = [s:gui_dark_gray, s:gui_med_gray_hi, s:cterm_dark_gray, s:cterm_med_gray_hi, '']\n  let g:airline#themes#base16#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)\n  let g:airline#themes#base16#palette.inactive_modified = {\n        \\ 'airline_c': [s:gui_orange, '', s:cterm_orange, '', ''],\n        \\ }\nelse\n  function! airline#themes#base16#refresh()\n    let g:airline#themes#base16#palette = {}\n\n    let g:airline#themes#base16#palette.accents = {\n          \\ 'red': airline#themes#get_highlight('Constant'),\n          \\ }\n\n    let s:N1 = airline#themes#get_highlight2(['DiffText', 'bg'], ['DiffText', 'fg'], 'bold')\n    let s:N2 = airline#themes#get_highlight('Visual')\n    let s:N3 = airline#themes#get_highlight('CursorLine')\n    let g:airline#themes#base16#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\n\n    let group = airline#themes#get_highlight('vimCommand')\n    let g:airline#themes#base16#palette.normal_modified = {\n          \\ 'statusline': [ group[0], '', group[2], '', '' ]\n          \\ }\n\n    let s:I1 = airline#themes#get_highlight2(['DiffAdded', 'bg'], ['DiffAdded', 'fg'], 'bold')\n    let s:I2 = airline#themes#get_highlight2(['DiffAdded', 'fg'], ['Normal', 'bg'])\n    let s:I3 = s:N3\n    let g:airline#themes#base16#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\n    let g:airline#themes#base16#palette.insert_modified = g:airline#themes#base16#palette.normal_modified\n\n    let s:R1 = airline#themes#get_highlight2(['WarningMsg', 'bg'], ['WarningMsg', 'fg'], 'bold')\n    let s:R2 = s:N2\n    let s:R3 = s:N3\n    let g:airline#themes#base16#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)\n    let g:airline#themes#base16#palette.replace_modified = g:airline#themes#base16#palette.normal_modified\n\n    let s:V1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Constant', 'fg'], 'bold')\n    let s:V2 = airline#themes#get_highlight2(['Constant', 'fg'], ['Normal', 'bg'])\n    let s:V3 = s:N3\n    let g:airline#themes#base16#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\n    let g:airline#themes#base16#palette.visual_modified = g:airline#themes#base16#palette.normal_modified\n\n    let s:IA = airline#themes#get_highlight2(['NonText', 'fg'], ['CursorLine', 'bg'])\n    let g:airline#themes#base16#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)\n    let g:airline#themes#base16#palette.inactive_modified = {\n          \\ 'airline_c': [ group[0], '', group[2], '', '' ]\n          \\ }\n  endfunction\n  call airline#themes#base16#refresh()\nendif\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/bubblegum.vim",
    "content": "\" Color palette\nlet s:gui_dark_gray = '#303030'\nlet s:cterm_dark_gray = 236\nlet s:gui_med_gray_hi = '#444444'\nlet s:cterm_med_gray_hi = 238\nlet s:gui_med_gray_lo = '#3a3a3a'\nlet s:cterm_med_gray_lo = 237\nlet s:gui_light_gray = '#b2b2b2'\nlet s:cterm_light_gray = 249\nlet s:gui_green = '#afd787'\nlet s:cterm_green = 150\nlet s:gui_blue = '#87afd7'\nlet s:cterm_blue = 110\nlet s:gui_purple = '#afafd7'\nlet s:cterm_purple = 146\nlet s:gui_orange = '#d7af5f'\nlet s:cterm_orange = 179\nlet s:gui_red = '#d78787'\nlet s:cterm_red = 174\nlet s:gui_pink = '#d7afd7'\nlet s:cterm_pink = 182\n\nlet g:airline#themes#bubblegum#palette = {}\n\n\" Normal mode\nlet s:N1 = [s:gui_dark_gray, s:gui_green, s:cterm_dark_gray, s:cterm_green]\nlet s:N2 = [s:gui_light_gray, s:gui_med_gray_lo, s:cterm_light_gray, s:cterm_med_gray_lo]\nlet s:N3 = [s:gui_green, s:gui_med_gray_hi, s:cterm_green, s:cterm_med_gray_hi]\nlet g:airline#themes#bubblegum#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\nlet g:airline#themes#bubblegum#palette.normal_modified = {\n      \\ 'airline_c': [s:gui_orange, s:gui_med_gray_hi, s:cterm_orange, s:cterm_med_gray_hi, ''],\n      \\ }\n\n\" Insert mode\nlet s:I1 = [s:gui_med_gray_hi, s:gui_blue, s:cterm_med_gray_hi, s:cterm_blue]\nlet s:I3 = [s:gui_blue, s:gui_med_gray_hi, s:cterm_blue, s:cterm_med_gray_hi]\nlet g:airline#themes#bubblegum#palette.insert = airline#themes#generate_color_map(s:I1, s:N2, s:I3)\nlet g:airline#themes#bubblegum#palette.insert_modified = copy(g:airline#themes#bubblegum#palette.normal_modified)\nlet g:airline#themes#bubblegum#palette.insert_paste = {\n      \\ 'airline_a': [s:gui_dark_gray, s:gui_orange, s:cterm_dark_gray, s:cterm_orange, ''],\n      \\ }\n\n\" Replace mode\nlet g:airline#themes#bubblegum#palette.replace = {\n      \\ 'airline_a': [s:gui_dark_gray, s:gui_red, s:cterm_dark_gray, s:cterm_red, ''],\n      \\ 'airline_c': [s:gui_red, s:gui_med_gray_hi, s:cterm_red, s:cterm_med_gray_hi, ''],\n      \\ }\nlet g:airline#themes#bubblegum#palette.replace_modified = copy(g:airline#themes#bubblegum#palette.insert_modified)\n\n\" Visual mode\nlet s:V1 = [s:gui_dark_gray, s:gui_pink, s:cterm_dark_gray, s:cterm_pink]\nlet s:V3 = [s:gui_pink, s:gui_med_gray_hi, s:cterm_pink, s:cterm_med_gray_hi]\nlet g:airline#themes#bubblegum#palette.visual = airline#themes#generate_color_map(s:V1, s:N2, s:V3)\nlet g:airline#themes#bubblegum#palette.visual_modified = copy(g:airline#themes#bubblegum#palette.insert_modified)\n\n\" Inactive window\nlet s:IA = [s:gui_dark_gray, s:gui_med_gray_hi, s:cterm_dark_gray, s:cterm_med_gray_hi, '']\nlet g:airline#themes#bubblegum#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)\nlet g:airline#themes#bubblegum#palette.inactive_modified = {\n      \\ 'airline_c': [s:gui_orange, '', s:cterm_orange, '', ''],\n      \\ }\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/dark.vim",
    "content": "\" Each theme is contained in its own file and declares variables scoped to the\n\" file.  These variables represent the possible \"modes\" that airline can\n\" detect.  The mode is the return value of mode(), which gets converted to a\n\" readable string.  The following is a list currently supported modes: normal,\n\" insert, replace, visual, and inactive.\n\"\n\" Each mode can also have overrides.  These are small changes to the mode that\n\" don't require a completely different look.  \"modified\" and \"paste\" are two\n\" such supported overrides.  These are simply suffixed to the major mode,\n\" separated by an underscore.  For example, \"normal_modified\" would be normal\n\" mode where the current buffer is modified.\n\"\n\" The theming algorithm is a 2-pass system where the mode will draw over all\n\" parts of the statusline, and then the override is applied after.  This means\n\" it is possible to specify a subset of the theme in overrides, as it will\n\" simply overwrite the previous colors.  If you want simultaneous overrides,\n\" then they will need to change different parts of the statusline so they do\n\" not conflict with each other.\n\"\n\" First, let's define an empty dictionary and assign it to the \"palette\"\n\" variable. The # is a separator that maps with the directory structure. If\n\" you get this wrong, Vim will complain loudly.\nlet g:airline#themes#dark#palette = {}\n\n\" First let's define some arrays. The s: is just a VimL thing for scoping the\n\" variables to the current script. Without this, these variables would be\n\" declared globally. Now let's declare some colors for normal mode and add it\n\" to the dictionary.  The array is in the format:\n\" [ guifg, guibg, ctermfg, ctermbg, opts ]. See \"help attr-list\" for valid\n\" values for the \"opt\" value.\nlet s:N1   = [ '#00005f' , '#dfff00' , 17  , 190 ]\nlet s:N2   = [ '#ffffff' , '#444444' , 255 , 238 ]\nlet s:N3   = [ '#9cffd3' , '#202020' , 85  , 234 ]\nlet g:airline#themes#dark#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\n\n\" Here we define overrides for when the buffer is modified.  This will be\n\" applied after g:airline#themes#dark#palette.normal, hence why only certain keys are\n\" declared.\nlet g:airline#themes#dark#palette.normal_modified = {\n      \\ 'airline_c': [ '#ffffff' , '#5f005f' , 255     , 53      , ''     ] ,\n      \\ }\n\n\nlet s:I1 = [ '#00005f' , '#00dfff' , 17  , 45  ]\nlet s:I2 = [ '#ffffff' , '#005fff' , 255 , 27  ]\nlet s:I3 = [ '#ffffff' , '#000080' , 15  , 17  ]\nlet g:airline#themes#dark#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\nlet g:airline#themes#dark#palette.insert_modified = {\n      \\ 'airline_c': [ '#ffffff' , '#5f005f' , 255     , 53      , ''     ] ,\n      \\ }\nlet g:airline#themes#dark#palette.insert_paste = {\n      \\ 'airline_a': [ s:I1[0]   , '#d78700' , s:I1[2] , 172     , ''     ] ,\n      \\ }\n\n\nlet g:airline#themes#dark#palette.replace = copy(g:airline#themes#dark#palette.insert)\nlet g:airline#themes#dark#palette.replace.airline_a = [ s:I2[0]   , '#af0000' , s:I2[2] , 124     , ''     ]\nlet g:airline#themes#dark#palette.replace_modified = g:airline#themes#dark#palette.insert_modified\n\n\nlet s:V1 = [ '#000000' , '#ffaf00' , 232 , 214 ]\nlet s:V2 = [ '#000000' , '#ff5f00' , 232 , 202 ]\nlet s:V3 = [ '#ffffff' , '#5f0000' , 15  , 52  ]\nlet g:airline#themes#dark#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\nlet g:airline#themes#dark#palette.visual_modified = {\n      \\ 'airline_c': [ '#ffffff' , '#5f005f' , 255     , 53      , ''     ] ,\n      \\ }\n\n\nlet s:IA1 = [ '#4e4e4e' , '#1c1c1c' , 239 , 234 , '' ]\nlet s:IA2 = [ '#4e4e4e' , '#262626' , 239 , 235 , '' ]\nlet s:IA3 = [ '#4e4e4e' , '#303030' , 239 , 236 , '' ]\nlet g:airline#themes#dark#palette.inactive = airline#themes#generate_color_map(s:IA1, s:IA2, s:IA3)\nlet g:airline#themes#dark#palette.inactive_modified = {\n      \\ 'airline_c': [ '#875faf' , '' , 97 , '' , '' ] ,\n      \\ }\n\n\n\" Accents are used to give parts within a section a slightly different look or\n\" color. Here we are defining a \"red\" accent, which is used by the 'readonly'\n\" part by default. Only the foreground colors are specified, so the background\n\" colors are automatically extracted from the underlying section colors. What\n\" this means is that regardless of which section the part is defined in, it\n\" will be red instead of the section's foreground color. You can also have\n\" multiple parts with accents within a section.\nlet g:airline#themes#dark#palette.accents = {\n      \\ 'red': [ '#ff0000' , '' , 160 , ''  ]\n      \\ }\n\n\n\" Here we define the color map for ctrlp.  We check for the g:loaded_ctrlp\n\" variable so that related functionality is loaded iff the user is using\n\" ctrlp. Note that this is optional, and if you do not define ctrlp colors\n\" they will be chosen automatically from the existing palette.\nif !get(g:, 'loaded_ctrlp', 0)\n  finish\nendif\nlet g:airline#themes#dark#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(\n      \\ [ '#d7d7ff' , '#5f00af' , 189 , 55  , ''     ],\n      \\ [ '#ffffff' , '#875fd7' , 231 , 98  , ''     ],\n      \\ [ '#5f00af' , '#ffffff' , 55  , 231 , 'bold' ])\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/hybrid.vim",
    "content": "\" vim-airline companion theme of Hybrid\n\" (https://github.com/w0ng/vim-hybrid)\n\nlet g:airline#themes#hybrid#palette = {}\n\nfunction! airline#themes#hybrid#refresh()\n    let s:N1 = airline#themes#get_highlight('DiffAdd')\n    let s:N2 = airline#themes#get_highlight('CursorLine')\n    let s:N3 = airline#themes#get_highlight('PMenu')\n    let g:airline#themes#hybrid#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\n\n    let modified_group = airline#themes#get_highlight2(['Text', 'fg'], ['SpellRare', 'bg'], 'bold')\n    let g:airline#themes#hybrid#palette.normal_modified = {\n                \\ 'airline_c': airline#themes#get_highlight2(['Text', 'fg'], ['SpellRare', 'bg'], 'bold')\n                \\ }\n\n    let warning_group = airline#themes#get_highlight('SpellRare')\n    let g:airline#themes#hybrid#palette.normal.airline_warning = warning_group\n    let g:airline#themes#hybrid#palette.normal_modified.airline_warning = warning_group\n\n    let s:I1 = airline#themes#get_highlight2(['Text', 'fg'], ['DiffText', 'bg'], 'bold')\n    let s:I2 = airline#themes#get_highlight2(['Text', 'fg'], ['SpellLocal', 'bg'], 'bold')\n    let s:I3 = airline#themes#get_highlight2(['Text', 'fg'], ['SpellCap', 'bg'], 'bold')\n    let g:airline#themes#hybrid#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\n    let g:airline#themes#hybrid#palette.insert_modified = g:airline#themes#hybrid#palette.normal_modified\n    let g:airline#themes#hybrid#palette.insert.airline_warning = g:airline#themes#hybrid#palette.normal.airline_warning\n    let g:airline#themes#hybrid#palette.insert_modified.airline_warning = g:airline#themes#hybrid#palette.normal_modified.airline_warning\n\n    let s:R1 = airline#themes#get_highlight('DiffChange')\n    let s:R2 = s:N2\n    let s:R3 = s:N3\n    let g:airline#themes#hybrid#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)\n    let replace_group = airline#themes#get_highlight('SpellRare')\n    let g:airline#themes#hybrid#palette.replace_modified = g:airline#themes#hybrid#palette.normal_modified\n    let g:airline#themes#hybrid#palette.replace.airline_warning = g:airline#themes#hybrid#palette.normal.airline_warning\n    let g:airline#themes#hybrid#palette.replace_modified.airline_warning = g:airline#themes#hybrid#palette.replace_modified.airline_warning\n\n    let s:V1 = airline#themes#get_highlight2(['Text', 'fg'], ['Folded', 'bg'], 'bold')\n    let s:V2 = airline#themes#get_highlight2(['Text', 'fg'], ['DiffDelete', 'bg'], 'bold')\n    let s:V3 = airline#themes#get_highlight2(['Text', 'fg'], ['Error', 'bg'], 'bold')\n    let g:airline#themes#hybrid#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\n    let g:airline#themes#hybrid#palette.visual_modified = g:airline#themes#hybrid#palette.normal_modified\n    let g:airline#themes#hybrid#palette.visual.airline_warning = g:airline#themes#hybrid#palette.normal.airline_warning\n    let g:airline#themes#hybrid#palette.visual_modified.airline_warning = g:airline#themes#hybrid#palette.normal_modified.airline_warning\n\n    let s:IA = airline#themes#get_highlight('StatusLineNC')\n    let g:airline#themes#hybrid#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)\n    let g:airline#themes#hybrid#palette.inactive_modified = {\n                \\ 'airline_c': [ modified_group[0], '', modified_group[2], '', '' ]\n                \\ }\n\n    let g:airline#themes#hybrid#palette.accents = {\n                \\ 'red': airline#themes#get_highlight('Constant'),\n                \\ }\n\nendfunction\n\ncall airline#themes#hybrid#refresh()\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/jellybeans.vim",
    "content": "let g:airline#themes#jellybeans#palette = {}\n\n\" The name of the function must be 'refresh'.\nfunction! airline#themes#jellybeans#refresh()\n  \" This theme is an example of how to use helper functions to extract highlight\n  \" values from the corresponding colorscheme. It was written in a hurry, so it\n  \" is very minimalistic. If you are a jellybeans user and want to make updates,\n  \" please send pull requests.\n\n  \" Here are examples where the entire highlight group is copied and an airline\n  \" compatible color array is generated.\n  let s:N1 = airline#themes#get_highlight('DbgCurrent', 'bold')\n  let s:N2 = airline#themes#get_highlight('Folded')\n  let s:N3 = airline#themes#get_highlight('NonText')\n\n  let g:airline#themes#jellybeans#palette.accents = {\n        \\ 'red': airline#themes#get_highlight('Constant'),\n        \\ }\n\n  let g:airline#themes#jellybeans#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\n  let g:airline#themes#jellybeans#palette.normal_modified = {\n        \\ 'airline_c': [ '#ffb964', '', 215, '', '' ]\n        \\ }\n\n  let s:I1 = airline#themes#get_highlight('DiffAdd', 'bold')\n  let s:I2 = s:N2\n  let s:I3 = s:N3\n  let g:airline#themes#jellybeans#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\n  let g:airline#themes#jellybeans#palette.insert_modified = g:airline#themes#jellybeans#palette.normal_modified\n\n  let s:R1 = airline#themes#get_highlight('WildMenu', 'bold')\n  let s:R2 = s:N2\n  let s:R3 = s:N3\n  let g:airline#themes#jellybeans#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)\n  let g:airline#themes#jellybeans#palette.replace_modified = g:airline#themes#jellybeans#palette.normal_modified\n\n  \" Sometimes you want to mix and match colors from different groups, you can do\n  \" that with this method.\n  let s:V1 = airline#themes#get_highlight2(['TabLineSel', 'bg'], ['DiffDelete', 'bg'], 'bold')\n  let s:V2 = s:N2\n  let s:V3 = s:N3\n  let g:airline#themes#jellybeans#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\n  let g:airline#themes#jellybeans#palette.visual_modified = g:airline#themes#jellybeans#palette.normal_modified\n\n  \" And of course, you can always do it manually as well.\n  let s:IA = [ '#444444', '#1c1c1c', 237, 234 ]\n  let g:airline#themes#jellybeans#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)\n  let g:airline#themes#jellybeans#palette.inactive_modified = g:airline#themes#jellybeans#palette.normal_modified\nendfunction\n\ncall airline#themes#jellybeans#refresh()\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/kalisi.vim",
    "content": "\"\n\" Colorscheme: Kalisi for airline. Inspired by powerline.\n\" 06.02.2014 Arthur Jaron\n\" hifreeo@gmail.com\n\" \n\n\" Insert mode                                    \nlet s:I1 = [ '#ffffff' , '#e80000' , 23  , 231 ] \nlet s:I2 = [ '#c5c5c5' , '#901010' , 74  , 31  ] \nlet s:I3 = [ '#c5c5c5' , '#500000' , 117 , 24  ] \n\n\" Visual mode                                    \nlet s:V1 = [ '#005f5f' , '#ffffff' , 23  , 231 ] \nlet s:V2 = [ '#5fafd7' , '#0087af' , 74  , 31  ] \nlet s:V3 = [ '#87d7ff' , '#005f87' , 117 , 24  ] \n\n\" Replace mode\nlet s:R1 = [ '#8e00da' , '#ffffff' , 23  , 231 ] \nlet s:R2 = [ '#8e00da' , '#ce99ff' , 74  , 31  ] \nlet s:R3 = [ '#ce99ff' , '#8e00da' , 117 , 24  ] \n\nlet g:airline#themes#kalisi#palette = {}\n\nfunction! airline#themes#kalisi#refresh()\n\n  \" Normal mode\n  let s:N1 = [ '#005f00' , '#afd700' , 22  , 148 ]\n  let s:N2 = [ '#afd700' , '#005f00' , 247 , 236 ]\n  let s:N3 = airline#themes#get_highlight('StatusLine')\n\n  \" Tabline Plugin\n  let g:airline#themes#kalisi#palette.tabline = {\n        \\ 'airline_tab':  ['#A6DB29', '#005f00',  231, 29, ''],\n        \\ 'airline_tabsel':  ['#404042', '#A6DB29',  231, 36, ''],\n        \\ 'airline_tabtype':  ['#afd700', '#005f00',  231, 36, ''],\n        \\ 'airline_tabfill':  ['#ffffff', '#000000',  231, 23, ''],\n        \\ 'airline_tabhid':  ['#c5c5c5', '#404042',  231, 88, ''],\n        \\ 'airline_tabmod':  ['#ffffff', '#F1266F',  231, 88, ''],\n        \\ }\n\n  let g:airline#themes#kalisi#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\n  let g:airline#themes#kalisi#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\n  let g:airline#themes#kalisi#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\n  let g:airline#themes#kalisi#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)\n\n  \" Inactive Mode\n  \" let s:IA = [ '#c5c5c5' , '#505052' , 239 , 234 , '' ]\n  let s:IA = airline#themes#get_highlight('StatusLineNC')\n  let g:airline#themes#kalisi#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)\n  let g:airline#themes#kalisi#palette.inactive_modified = {\n        \\ 'statusline': [ '#F1266F' , '' , '53' , '' , '' ] ,\n        \\ }\n\nendfunction\n\ncall airline#themes#kalisi#refresh()\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/kolor.vim",
    "content": "let g:airline#themes#kolor#palette = {}\n\nlet s:N1 = [ '#e2e2e2' , '#4f3598' , 254 , 56  ]\nlet s:N2 = [ '#ff5fd7' , '#242322' , 206 , 234 ]\nlet s:N3 = [ '#e2e2e2' , '#4a4a4a' , 254 , 238 ]\n\nlet g:airline#themes#kolor#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\n\nlet g:airline#themes#kolor#palette.normal_modified = {\n      \\ 'airline_c': [ '#e2e2e2' , '#4f3598' , 254     , 56      , ''     ] ,\n      \\ }\n\n\nlet s:I1 = [ '#242322' , '#7eaefd' , 234 , 111 ]\nlet s:I2 = [ '#75d7d8' , '#242322' , 80  , 234 ]\nlet s:I3 = [ '#e2e2e2' , '#4a4a4a' , 254 , 238 ]\nlet g:airline#themes#kolor#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\nlet g:airline#themes#kolor#palette.insert_modified = {\n      \\ 'airline_c': [ '#242322' , '#7eaefd' , 234     , 111     , ''     ] ,\n      \\ }\n\n\nlet g:airline#themes#kolor#palette.replace = copy(g:airline#themes#kolor#palette.insert)\nlet g:airline#themes#kolor#palette.replace.airline_a = [ s:I2[0]   , '#005154' , s:I2[2] , 23      , ''     ]\nlet g:airline#themes#kolor#palette.replace_modified = {\n      \\ 'airline_c': [ '#e2e2e2' , '#005154' , 254 , 23  , '' ] ,\n      \\ }\n\n\nlet s:V1 = [ '#242322' , '#e6987a' , 234 , 180 ]\nlet s:V2 = [ '#dbc570' , '#242322' , 186 , 234 ]\nlet s:V3 = [ '#e2e2e2' , '#4a4a4a' , 254 , 238 ]\nlet g:airline#themes#kolor#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\nlet g:airline#themes#kolor#palette.visual_modified = {\n      \\ 'airline_c': [ '#242322' , '#e6987a' , 234     , 180      , ''     ] ,\n      \\ }\n\n\nlet s:IA1 = [ '#b2b2b2' , '#4a4a4a' , 247 , 238 , '' ]\nlet s:IA2 = [ '#b2b2b2' , '#4a4a4a' , 247 , 238 ]\nlet s:IA3 = [ '#b2b2b2' , '#4a4a4a' , 247 , 238 , '' ]\nlet g:airline#themes#kolor#palette.inactive = airline#themes#generate_color_map(s:IA1, s:IA2, s:IA3)\nlet g:airline#themes#kolor#palette.inactive_modified = {\n      \\ 'airline_c': [ '#875faf' , '' , 97 , '' , '' ] ,\n      \\ }\n\n\nlet g:airline#themes#kolor#palette.accents = {\n      \\ 'red': [ '#d96e8a' , '' , 168 , ''  ]\n      \\ }\n\n\nif !get(g:, 'loaded_ctrlp', 0)\n  finish\nendif\nlet g:airline#themes#kolor#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(\n      \\ [ '#e2e2e2' , '#4a4a4a' , 254 , 238 , ''     ],\n      \\ [ '#e2e2e2' , '#242322' , 254 , 234 , ''     ],\n      \\ [ '#e2e2e2' , '#4f3598' , 254 , 56  , 'bold' ])\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/laederon.vim",
    "content": "\" vim-airline companion theme of Laederon\n\" (https://github.com/Donearm/Laederon)\n\n\" Normal mode\nlet s:N1 = [ '#1a1a18' , '#ffffff' , 232 , 255 ] \" blackestgravel & snow\nlet s:N2 = [ '#ffffff' , '#44403a' , 255, 238 ] \" snow & deepgravel\nlet s:N3 = [ '#90a680' , '#2e2d2a' , 64, 235 ] \" dilutedpaint & darkgravel\nlet s:N4 = [ '#777470' , 240 ] \" gravel\n\n\" Insert mode\nlet s:I1 = [ '#1a1a18' , '#1693a5' , 232 , 62 ] \" blackestgravel & crystallake\nlet s:I2 = [ '#515744' , '#44403a' , 101 , 238 ] \" lichen & deepgravel\nlet s:I3 = [ '#1693a5' , '#2e2d2a' , 39 , 235 ] \" crystallake & darkgravel\n\n\" Visual mode\nlet s:V1 = [ '#1a1a18' , '#ab3e5d' , 232 , 161 ] \" blackestgravel & raspberry\nlet s:V2 = [ '#000000' , '#908571' , 16 , 252 ] \" coal & winterterrain\nlet s:V3 = [ '#ab3e5d' , '#8c7f77' , 161 , 245 ] \" raspberry & wetcoldterrain\nlet s:V4 = [ '#515744' , 101 ] \" lichen\n\n\" Replace mode\nlet s:RE = [ '#233e09' , 22 ] \" oakleaf\n\n\" Paste mode\nlet s:PA = [ '#ab3e5d' , 161 ] \" raspberry\n\nlet s:IA = [ s:N2[1] , s:N3[1] , s:N2[3], s:N3[3] , '' ]\n\n\nlet g:airline#themes#laederon#palette = {}\n\nlet g:airline#themes#laederon#palette.accents = {\n      \\ 'red': [ '#ef393d' , '' , 196 , '' , '' ]\n      \\ }\n\nlet g:airline#themes#laederon#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\nlet g:airline#themes#laederon#palette.normal_modified = {\n      \\ 'airline_a' : [ s:N2[0] , s:N4[0] , s:N2[2] , s:N4[1] , '' ] ,\n      \\ 'airline_c' : [ s:V1[1] , s:N2[1] , s:V1[3] , s:N2[3] , '' ] }\n\n\nlet g:airline#themes#laederon#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\nlet g:airline#themes#laederon#palette.insert_modified = {\n      \\ 'airline_c' : [ s:V2[1] , s:N2[1] , s:V2[3] , s:N2[3] , '' ] }\nlet g:airline#themes#laederon#palette.insert_paste = {\n      \\ 'airline_a' : [ s:I1[0] , s:PA[0] , s:I1[2] , s:PA[1] , '' ] }\n\n\nlet g:airline#themes#laederon#palette.replace = copy(airline#themes#laederon#palette.insert)\nlet g:airline#themes#laederon#palette.replace.airline_a = [ s:I1[0] , s:RE[0] , s:I1[2] , s:RE[1] , '' ]\nlet g:airline#themes#laederon#palette.replace_modified = g:airline#themes#laederon#palette.insert_modified\n\n\nlet g:airline#themes#laederon#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\nlet g:airline#themes#laederon#palette.visual_modified = {\n      \\ 'airline_c' : [ s:V3[0] , s:V4[0] , s:V3[2] , s:V4[1] , '' ] }\n\n\nlet g:airline#themes#laederon#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)\nlet g:airline#themes#laederon#palette.inactive_modified = {\n      \\ 'airline_c' : [ s:V1[1] , ''      , s:V1[3] , ''      , '' ] }\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/light.vim",
    "content": "let g:airline#themes#light#palette = {}\n\nlet s:N1 = [ '#ffffff' , '#005fff' , 255 , 27  ]\nlet s:N2 = [ '#000087' , '#00dfff' , 18  , 45  ]\nlet s:N3 = [ '#005fff' , '#afffff' , 27  , 159 ]\nlet g:airline#themes#light#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\nlet g:airline#themes#light#palette.normal_modified = {\n      \\ 'airline_c': [ '#df0000' , '#ffdfdf' , 160     , 224     , ''     ] ,\n      \\ }\n\n\nlet s:I1 = [ '#ffffff' , '#00875f' , 255 , 29  ]\nlet s:I2 = [ '#005f00' , '#00df87' , 22  , 42  ]\nlet s:I3 = [ '#005f5f' , '#afff87' , 23  , 156 ]\nlet g:airline#themes#light#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\nlet g:airline#themes#light#palette.insert_modified = {\n      \\ 'airline_c': [ '#df0000' , '#ffdfdf' , 160     , 224     , ''     ] ,\n      \\ }\nlet g:airline#themes#light#palette.insert_paste = {\n      \\ 'airline_a': [ s:I1[0]   , '#d78700' , s:I1[2] , 172     , ''     ] ,\n      \\ }\n\n\nlet g:airline#themes#light#palette.replace = copy(g:airline#themes#light#palette.insert)\nlet g:airline#themes#light#palette.replace.airline_a = [ s:I2[0]   , '#ff0000' , s:I1[2] , 196     , ''     ]\nlet g:airline#themes#light#palette.replace_modified = g:airline#themes#light#palette.insert_modified\n\n\nlet s:V1 = [ '#ffffff' , '#ff5f00' , 255 , 202 ]\nlet s:V2 = [ '#5f0000' , '#ffaf00' , 52  , 214 ]\nlet s:V3 = [ '#df5f00' , '#ffff87' , 166 , 228 ]\nlet g:airline#themes#light#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\nlet g:airline#themes#light#palette.visual_modified = {\n      \\ 'airline_c': [ '#df0000' , '#ffdfdf' , 160     , 224     , ''     ] ,\n      \\ }\n\n\nlet s:IA1 = [ '#666666' , '#b2b2b2' , 242 , 249 , '' ]\nlet s:IA2 = [ '#8a8a8a' , '#d0d0d0' , 245 , 252 , '' ]\nlet s:IA3 = [ '#a8a8a8' , '#ffffff' , 248 , 255 , '' ]\nlet g:airline#themes#light#palette.inactive = airline#themes#generate_color_map(s:IA1, s:IA2, s:IA3)\nlet g:airline#themes#light#palette.inactive_modified = {\n      \\ 'airline_c': [ '#df0000' , ''        , 160     , ''      , ''     ] ,\n      \\ }\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/lucius.vim",
    "content": "let g:airline#themes#lucius#palette = {}\n\nfunction! airline#themes#lucius#refresh()\n\n    let s:N1 = airline#themes#get_highlight('StatusLine')\n    let s:N2 = airline#themes#get_highlight('Folded')\n    let s:N3 = airline#themes#get_highlight('CursorLine')\n    let g:airline#themes#lucius#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\n\n    let modified_group = airline#themes#get_highlight('Statement')\n    let g:airline#themes#lucius#palette.normal_modified = {\n                \\ 'airline_c': [modified_group[0], '', modified_group[2], '', '']\n                \\ }\n\n    let warning_group = airline#themes#get_highlight('DiffDelete')\n    let g:airline#themes#lucius#palette.normal.airline_warning = warning_group\n    let g:airline#themes#lucius#palette.normal_modified.airline_warning = warning_group\n\n    let s:I1 = airline#themes#get_highlight('DiffAdd')\n    let s:I2 = s:N2\n    let s:I3 = s:N3\n    let g:airline#themes#lucius#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\n    let g:airline#themes#lucius#palette.insert_modified = g:airline#themes#lucius#palette.normal_modified\n    let g:airline#themes#lucius#palette.insert.airline_warning = g:airline#themes#lucius#palette.normal.airline_warning\n    let g:airline#themes#lucius#palette.insert_modified.airline_warning = g:airline#themes#lucius#palette.normal_modified.airline_warning\n\n    let s:R1 = airline#themes#get_highlight('DiffChange')\n    let s:R2 = s:N2\n    let s:R3 = s:N3\n    let g:airline#themes#lucius#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)\n    let g:airline#themes#lucius#palette.replace_modified = g:airline#themes#lucius#palette.normal_modified\n    let g:airline#themes#lucius#palette.replace.airline_warning = g:airline#themes#lucius#palette.normal.airline_warning\n    let g:airline#themes#lucius#palette.replace_modified.airline_warning = g:airline#themes#lucius#palette.normal_modified.airline_warning\n\n    let s:V1 = airline#themes#get_highlight('Cursor')\n    let s:V2 = s:N2\n    let s:V3 = s:N3\n    let g:airline#themes#lucius#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\n    let g:airline#themes#lucius#palette.visual_modified = g:airline#themes#lucius#palette.normal_modified\n    let g:airline#themes#lucius#palette.visual.airline_warning = g:airline#themes#lucius#palette.normal.airline_warning\n    let g:airline#themes#lucius#palette.visual_modified.airline_warning = g:airline#themes#lucius#palette.normal_modified.airline_warning\n\n    let s:IA = airline#themes#get_highlight('StatusLineNC')\n    let g:airline#themes#lucius#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)\n    let g:airline#themes#lucius#palette.inactive_modified = {\n                \\ 'airline_c': [ modified_group[0], '', modified_group[2], '', '' ]\n                \\ }\n\n    let g:airline#themes#lucius#palette.accents = {\n                \\ 'red': airline#themes#get_highlight('Constant'),\n                \\ }\n\nendfunction\n\ncall airline#themes#lucius#refresh()\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/luna.vim",
    "content": "\" vim-airline companion theme of Luna\n\" (https://github.com/Pychimp/vim-luna)\n\nlet g:airline#themes#luna#palette = {}\n\nlet g:airline#themes#luna#palette.accents = {\n      \\ 'red': [ '#ffffff' , '' , 231 , '' , '' ],\n      \\ }\n\n\nlet s:N1 = [ '#ffffff' , '#005252' , 231  , 36 ]\nlet s:N2 = [ '#ffffff' , '#003f3f' , 231 , 29 ]\nlet s:N3 = [ '#ffffff' , '#002b2b' , 231  , 23 ]\nlet g:airline#themes#luna#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\nlet g:airline#themes#luna#palette.normal_modified = {\n      \\ 'airline_c': [ '#ffffff' , '#450000' , 231     , 52      , ''     ] ,\n      \\ }\n\n\nlet s:I1 = [ '#ffffff' , '#789f00' , 231 , 106 ]\nlet s:I2 = [ '#ffffff' , '#003f3f' , 231 , 29  ]\nlet s:I3 = [ '#ffffff' , '#002b2b' , 231 , 23  ]\nlet g:airline#themes#luna#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\nlet g:airline#themes#luna#palette.insert_modified = {\n      \\ 'airline_c': [ '#ffffff' , '#005e5e' , 255     , 52      , ''     ] ,\n      \\ }\nlet g:airline#themes#luna#palette.insert_paste = {\n      \\ 'airline_a': [ s:I1[0]   , '#789f00' , s:I1[2] , 106     , ''     ] ,\n      \\ }\n\n\nlet g:airline#themes#luna#palette.replace = copy(g:airline#themes#luna#palette.insert)\nlet g:airline#themes#luna#palette.replace.airline_a = [ s:I2[0]   , '#920000' , s:I2[2] , 88     , ''     ]\nlet g:airline#themes#luna#palette.replace_modified = g:airline#themes#luna#palette.insert_modified\n\nlet s:V1 = [ '#ffff9a' , '#ff8036' , 222 , 208 ]\nlet s:V2 = [ '#ffffff' , '#003f3f' , 231 , 29 ]\nlet s:V3 = [ '#ffffff' , '#002b2b' , 231  , 23  ]\nlet g:airline#themes#luna#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\nlet g:airline#themes#luna#palette.visual_modified = {\n      \\ 'airline_c': [ '#ffffff' , '#450000' , 231     , 52      , ''     ] ,\n      \\ }\n\nlet s:IA = [ '#4e4e4e' , '#002b2b' , 59 , 23 , '' ]\nlet g:airline#themes#luna#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)\nlet g:airline#themes#luna#palette.inactive_modified = {\n      \\ 'airline_c': [ '#450000' , ''        , 52      , ''      , ''     ] ,\n      \\ }\n\nlet g:airline#themes#luna#palette.tabline = {\n      \\ 'airline_tab':  ['#2aa198', '#003f3f',  231, 29, ''],\n      \\ 'airline_tabsel':  ['#ffffff', '#2e8b57',  231, 36, ''],\n      \\ 'airline_tabtype':  ['#ffffff', '#005252',  231, 36, ''],\n      \\ 'airline_tabfill':  ['#ffffff', '#002b2b',  231, 23, ''],\n      \\ 'airline_tabmod':  ['#ffffff', '#780000',  231, 88, ''],\n      \\ }\n\nlet s:WI = [ '#ffffff', '#5f0000', 231, 88 ]\nlet g:airline#themes#luna#palette.normal.airline_warning = [\n     \\ s:WI[0], s:WI[1], s:WI[2], s:WI[3]\n     \\ ]\n\nlet g:airline#themes#luna#palette.normal_modified.airline_warning =\n    \\ g:airline#themes#luna#palette.normal.airline_warning\n\nlet g:airline#themes#luna#palette.insert.airline_warning =\n    \\ g:airline#themes#luna#palette.normal.airline_warning\n\nlet g:airline#themes#luna#palette.insert_modified.airline_warning =\n    \\ g:airline#themes#luna#palette.normal.airline_warning\n\nlet g:airline#themes#luna#palette.visual.airline_warning =\n    \\ g:airline#themes#luna#palette.normal.airline_warning\n\nlet g:airline#themes#luna#palette.visual_modified.airline_warning =\n    \\ g:airline#themes#luna#palette.normal.airline_warning\n\nlet g:airline#themes#luna#palette.replace.airline_warning =\n    \\ g:airline#themes#luna#palette.normal.airline_warning\n\nlet g:airline#themes#luna#palette.replace_modified.airline_warning =\n    \\ g:airline#themes#luna#palette.normal.airline_warning\n\n\nif !get(g:, 'loaded_ctrlp', 0)\n  finish\nendif\nlet g:airline#themes#luna#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(\n      \\ [ '#ffffff' , '#002b2b' , 231 , 23 , ''     ] ,\n      \\ [ '#ffffff' , '#005252' , 231 , 36 , ''     ] ,\n      \\ [ '#ffffff' , '#973d45' , 231 , 95 , ''     ] )\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/molokai.vim",
    "content": "let g:airline#themes#molokai#palette = {}\n\nlet g:airline#themes#molokai#palette.accents = {\n      \\ 'red': [ '#66d9ef' , '' , 81 , '' , '' ],\n      \\ }\n\n\n\" Normal mode\nlet s:N1 = [ '#080808' , '#e6db74' , 232 , 144 ] \" mode\nlet s:N2 = [ '#f8f8f0' , '#232526' , 253 , 16  ] \" info\nlet s:N3 = [ '#f8f8f0' , '#465457' , 253 , 67  ] \" statusline\n\nlet g:airline#themes#molokai#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\nlet g:airline#themes#molokai#palette.normal_modified = {\n      \\ 'airline_c': [ '#080808' , '#e6db74' , 232 , 144 , '' ] ,\n      \\ }\n\n\n\" Insert mode\nlet s:I1 = [ '#080808' , '#66d9ef' , 232 , 81 ]\nlet s:I2 = [ '#f8f8f0' , '#232526' , 253 , 16 ]\nlet s:I3 = [ '#f8f8f0' , '#465457' , 253 , 67 ]\n\nlet g:airline#themes#molokai#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\nlet g:airline#themes#molokai#palette.insert_modified = {\n      \\ 'airline_c': [ '#080808' , '#66d9ef' , 232 , 81 , '' ] ,\n      \\ }\n\n\n\" Replace mode\nlet g:airline#themes#molokai#palette.replace = copy(g:airline#themes#molokai#palette.insert)\nlet g:airline#themes#molokai#palette.replace.airline_a = [ s:I1[0]   , '#ef5939' , s:I1[2] , 166     , ''     ]\nlet g:airline#themes#molokai#palette.replace_modified = {\n      \\ 'airline_c': [ '#080808' , '#ef5939' , 232 , 166 , '' ] ,\n      \\ }\n\n\n\" Visual mode\nlet s:V1 = [ '#080808' , '#fd971f' , 232 , 208 ]\nlet s:V2 = [ '#f8f8f0' , '#232526' , 253 , 16  ]\nlet s:V3 = [ '#f8f8f0' , '#465457' , 253 , 67  ]\n\nlet g:airline#themes#molokai#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\nlet g:airline#themes#molokai#palette.visual_modified = {\n      \\ 'airline_c': [ '#080808' , '#fd971f' , 232 , 208 , '' ] ,\n      \\ }\n\n\n\" Inactive\nlet s:IA = [ '#1b1d1e' , '#465457' , 233 , 67 , '' ]\nlet g:airline#themes#molokai#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)\nlet g:airline#themes#molokai#palette.inactive_modified = {\n      \\ 'airline_c': [ '#f8f8f0' , ''        , 253 , ''  , '' ] ,\n      \\ }\n\n\n\" CtrlP\nif !get(g:, 'loaded_ctrlp', 0)\n  finish\nendif\nlet g:airline#themes#molokai#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(\n      \\ [ '#f8f8f0' , '#465457' , 253 , 67  , ''     ] ,\n      \\ [ '#f8f8f0' , '#232526' , 253 , 16  , ''     ] ,\n      \\ [ '#080808' , '#e6db74' , 232 , 144 , 'bold' ] )\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/monochrome.vim",
    "content": "let g:airline#themes#monochrome#palette = {}\n\nfunction! airline#themes#monochrome#refresh()\n  let s:SL = airline#themes#get_highlight('StatusLine')\n  let g:airline#themes#monochrome#palette.normal = airline#themes#generate_color_map(s:SL, s:SL, s:SL)\n  let g:airline#themes#monochrome#palette.insert = g:airline#themes#monochrome#palette.normal\n  let g:airline#themes#monochrome#palette.replace = g:airline#themes#monochrome#palette.normal\n  let g:airline#themes#monochrome#palette.visual = g:airline#themes#monochrome#palette.normal\n\n  let s:SLNC = airline#themes#get_highlight('StatusLineNC')\n  let g:airline#themes#monochrome#palette.inactive = airline#themes#generate_color_map(s:SLNC, s:SLNC, s:SLNC)\nendfunction\n\ncall airline#themes#monochrome#refresh()\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/murmur.vim",
    "content": "let g:airline#themes#murmur#palette = {}\n\nlet s:termbg = 237  \" Background for branch and file format blocks\nlet s:termbg2= 234  \" Background for middle block\nlet s:normalbg= 27  \" Background for normal mode and file position blocks\nlet s:insertbg= 70  \" Background for insert mode and file position blocks\nlet s:visualbg= 166 \" Background for visual mode and file position blocks\nlet s:replacebg=88  \" Background for replace mode and file position blocks\nlet s:alert= 88     \" Modefied file alert color\n\nlet s:BB = ['#AFAF87', '#5F5F5F', 144, s:termbg] \" Branch and file format blocks\n\nlet s:N1 = ['#FFFFFF', '#5F87FF', 15, s:normalbg]   \" Outside blocks in normal mode\nlet s:N2 = ['#AFAF87', '#5F5F5F', 39, s:termbg2]    \" Middle block\nlet g:airline#themes#murmur#palette.normal = airline#themes#generate_color_map(s:N1, s:BB, s:N2)\nlet g:airline#themes#murmur#palette.normal_modified = {'airline_c': ['#ffffff', '#5f005f', s:alert, s:termbg2, 'bold'] ,}\n\nlet s:I1 = ['#FFFFFF', '#87AF5F', 15, s:insertbg]         \" Outside blocks in insert mode\nlet s:I2 = ['#AFAF87', '#5F5F5F', s:insertbg, s:termbg2]  \" Middle block\nlet g:airline#themes#murmur#palette.insert = airline#themes#generate_color_map(s:I1, s:BB, s:I2)\nlet g:airline#themes#murmur#palette.insert_modified = {'airline_c': ['#AFAF87', '#5F5F5F', s:alert, s:termbg2, 'bold'] ,}\n\nlet s:R1 = ['#FFFFFF', '#870000', 15, s:replacebg]  \" Outside blocks in replace mode\nlet s:R2 = ['#AFAF87', '#5F5F5F', 255, s:termbg2]   \" Middle block\nlet g:airline#themes#murmur#palette.replace = airline#themes#generate_color_map(s:R1, s:BB, s:R2)\nlet g:airline#themes#murmur#palette.replace_modified = {'airline_c': ['#AFAF87', '#5f005f', s:alert, s:termbg2, 'bold'] ,}\n\nlet s:V1 = ['#FFFFFF', '#AF5F00', 15, s:visualbg]         \" Outside blocks in visual mode\nlet s:V2 = ['#AFAF87', '#5F5F5F', s:visualbg, s:termbg2]  \" Middle block\nlet g:airline#themes#murmur#palette.visual = airline#themes#generate_color_map(s:V1, s:BB, s:V2)\nlet g:airline#themes#murmur#palette.visual_modified = {'airline_c': [ '#AFAF87', '#5f005f', s:alert, s:termbg2, 'bold'] ,}\n\n\" Inactive mode\nlet s:IA1 = ['#4E4E4E', '#1C1C1C', 239, 234, '']\nlet s:IA2 = ['#4E4E4E', '#1C1C1C', 239, 234, '']\nlet s:IA3 = ['#4E4E4E', '#1C1C1C', 239, 234, '']\nlet g:airline#themes#murmur#palette.inactive = airline#themes#generate_color_map(s:IA1, s:IA2, s:IA3)\n\n\" CtrlP plugin colors\nif !get(g:, 'loaded_ctrlp', 0)\n  finish\nendif\nlet g:airline#themes#murmur#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(\n      \\ ['#FFFFFF', '#5F87FF', 15, s:normalbg, ''],\n      \\ ['#AFAF87', '#5F5F5F', 144, s:termbg, ''],\n      \\ ['#AFAF87', '#5F5F5F', 39, s:termbg2, 'bold'])\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/powerlineish.vim",
    "content": "\" Theme to mimic the default colorscheme of powerline\n\" Not 100% the same so it's powerline... ish.\n\"\n\" Differences from default powerline:\n\" * Paste indicator isn't colored different\n\" * Far right hand section matches the color of the mode indicator\n\"\n\" Differences from other airline themes:\n\" * No color differences when you're in a modified buffer\n\" * Visual mode only changes the mode section. Otherwise\n\"   it appears the same as normal mode\n\n\" Normal mode                                    \" fg             & bg\nlet s:N1 = [ '#005f00' , '#afd700' , 22  , 148 ] \" darkestgreen   & brightgreen\nlet s:N2 = [ '#9e9e9e' , '#303030' , 247 , 236 ] \" gray8          & gray2\nlet s:N3 = [ '#ffffff' , '#121212' , 231 , 233 ] \" white          & gray4\n\n\" Insert mode                                    \" fg             & bg\nlet s:I1 = [ '#005f5f' , '#ffffff' , 23  , 231 ] \" darkestcyan    & white\nlet s:I2 = [ '#5fafd7' , '#0087af' , 74  , 31  ] \" darkcyan       & darkblue\nlet s:I3 = [ '#87d7ff' , '#005f87' , 117 , 24  ] \" mediumcyan     & darkestblue\n\n\" Visual mode                                    \" fg             & bg\nlet s:V1 = [ '#080808' , '#ffaf00' , 232 , 214 ] \" gray3          & brightestorange\n\n\" Replace mode                                   \" fg             & bg\nlet s:RE = [ '#ffffff' , '#d70000' , 231 , 160 ] \" white          & brightred\n\nlet g:airline#themes#powerlineish#palette = {}\n\nlet g:airline#themes#powerlineish#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\n\nlet g:airline#themes#powerlineish#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\nlet g:airline#themes#powerlineish#palette.insert_replace = {\n      \\ 'airline_a': [ s:RE[0]   , s:I1[1]   , s:RE[1]   , s:I1[3]   , ''     ] }\n\nlet g:airline#themes#powerlineish#palette.visual = {\n      \\ 'airline_a': [ s:V1[0]   , s:V1[1]   , s:V1[2]   , s:V1[3]   , ''     ] }\n\nlet g:airline#themes#powerlineish#palette.replace = copy(airline#themes#powerlineish#palette.normal)\nlet g:airline#themes#powerlineish#palette.replace.airline_a = [ s:RE[0] , s:RE[1] , s:RE[2] , s:RE[3] , '' ]\n\n\nlet s:IA = [ s:N2[1] , s:N3[1] , s:N2[3] , s:N3[3] , '' ]\nlet g:airline#themes#powerlineish#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/serene.vim",
    "content": "let g:airline#themes#serene#palette = {}\n\nlet s:guibg = '#080808'\nlet s:termbg = 232\nlet s:termsep = 236\nlet s:guisep = '#303030'\n\nlet s:N1 = [ '#00dfff' , s:guibg , 45  , s:termbg ]\nlet s:N2 = [ '#ff5f00' , s:guibg , 202 , s:termbg ]\nlet s:N3 = [ '#767676' , s:guibg , 7   , s:termbg ]\n\nlet g:airline#themes#serene#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\nlet g:airline#themes#serene#palette.normal_modified = {\n      \\ 'airline_c': [ '#df0000' , s:guibg, 160     , s:termbg    , ''     ] ,\n      \\ }\n\nlet s:I1 = [ '#5fff00' , s:guibg , 82  , s:termbg ]\nlet s:I2 = [ '#ff5f00' , s:guibg , 202 , s:termbg ]\nlet s:I3 = [ '#767676' , s:guibg , 7   , s:termbg ]\nlet g:airline#themes#serene#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\nlet g:airline#themes#serene#palette.insert_modified = copy(g:airline#themes#serene#palette.normal_modified)\nlet g:airline#themes#serene#palette.insert_paste = {\n      \\ 'airline_a': [ s:I1[0]   , '#d78700' , s:I1[2] , 172     , ''     ] ,\n      \\ }\n\nlet g:airline#themes#serene#palette.replace = {\n      \\ 'airline_a': [ s:I1[0]   , '#af0000' , s:I1[2] , 124     , ''     ] ,\n      \\ }\nlet g:airline#themes#serene#palette.replace_modified = copy(g:airline#themes#serene#palette.normal_modified)\n\nlet s:V1 = [ '#dfdf00' , s:guibg , 184 , s:termbg ]\nlet s:V2 = [ '#ff5f00' , s:guibg , 202 , s:termbg ]\nlet s:V3 = [ '#767676' , s:guibg , 7   , s:termbg ]\nlet g:airline#themes#serene#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\nlet g:airline#themes#serene#palette.visual_modified = copy(g:airline#themes#serene#palette.normal_modified)\n\nlet s:IA  = [ '#4e4e4e' , s:guibg  , 239 , s:termbg  , '' ]\nlet s:IA2 = [ '#4e4e4e' , s:guisep , 239 , s:termsep , '' ]\nlet g:airline#themes#serene#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA2, s:IA2)\nlet g:airline#themes#serene#palette.inactive_modified = copy(g:airline#themes#serene#palette.normal_modified)\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/simple.vim",
    "content": "let g:airline#themes#simple#palette = {}\n\nlet s:guibg = '#080808'\nlet s:guibg2 = '#1c1c1c'\nlet s:termbg = 232\nlet s:termbg2= 234\n\nlet s:N1 = [ s:guibg , '#00dfff' , s:termbg , 45 ]\nlet s:N2 = [ '#ff5f00' , s:guibg2, 202 , s:termbg2 ]\nlet s:N3 = [ '#767676' , s:guibg, 243 , s:termbg]\nlet g:airline#themes#simple#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\nlet g:airline#themes#simple#palette.normal_modified = {\n      \\ 'airline_c': [ '#df0000' , s:guibg, 160     , s:termbg    , ''     ] ,\n      \\ }\n\n\nlet s:I1 = [ s:guibg, '#5fff00' , s:termbg , 82 ]\nlet s:I2 = [ '#ff5f00' , s:guibg2, 202 , s:termbg2 ]\nlet s:I3 = [ '#767676' , s:guibg, 243 , s:termbg ]\nlet g:airline#themes#simple#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\nlet g:airline#themes#simple#palette.insert_modified = copy(g:airline#themes#simple#palette.normal_modified)\nlet g:airline#themes#simple#palette.insert_paste = {\n      \\ 'airline_a': [ s:I1[0]   , '#d78700' , s:I1[2] , 172     , ''     ] ,\n      \\ }\n\n\nlet g:airline#themes#simple#palette.replace = {\n      \\ 'airline_a': [ s:I1[0]   , '#af0000' , s:I1[2] , 124     , ''     ] ,\n      \\ }\nlet g:airline#themes#simple#palette.replace_modified = copy(g:airline#themes#simple#palette.normal_modified)\n\n\nlet s:V1 = [ s:guibg, '#dfdf00' , s:termbg , 184 ]\nlet s:V2 = [ '#ff5f00' , s:guibg2, 202 , s:termbg2 ]\nlet s:V3 = [ '#767676' , s:guibg, 243 , s:termbg ]\nlet g:airline#themes#simple#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\nlet g:airline#themes#simple#palette.visual_modified = copy(g:airline#themes#simple#palette.normal_modified)\n\n\nlet s:IA  = [ '#4e4e4e' , s:guibg  , 239 , s:termbg  , '' ]\nlet s:IA2 = [ '#4e4e4e' , s:guibg2 , 239 , s:termbg2 , '' ]\nlet g:airline#themes#simple#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA2, s:IA2)\nlet g:airline#themes#simple#palette.inactive_modified = {\n      \\ 'airline_c': [ '#df0000', '', 160, '', '' ] ,\n      \\ }\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/sol.vim",
    "content": "\" vim-airline companion theme of Sol\n\" (https://github.com/Pychimp/vim-sol)\n\nlet g:airline#themes#sol#palette = {}\n\nlet g:airline#themes#sol#palette.accents = {\n      \\ 'red': [ '#ffffff' , '' , 231 , '' , '' ],\n      \\ }\n\nlet s:N1 = [ '#343434' , '#a0a0a0' , 237 , 248 ]\nlet s:N2 = [ '#343434' , '#b3b3b3' , 237 , 250 ]\nlet s:N3 = [ '#343434' , '#c7c7c7' , 237 , 252 ]\nlet g:airline#themes#sol#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\nlet g:airline#themes#sol#palette.normal_modified = {\n      \\ 'airline_c': [ '#ffffff' , '#ff3535' , 231 , 203 , '' ] ,\n      \\ }\n\n\nlet s:I1 = [ '#eeeeee' , '#09643f' , 255 , 30  ]\nlet s:I2 = [ '#343434' , '#a3a3a3' , 237 , 249 ]\nlet s:I3 = [ '#343434' , '#b0b0b0' , 237 , 250 ]\nlet g:airline#themes#sol#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\nlet g:airline#themes#sol#palette.insert_modified = {\n      \\ 'airline_c': [ '#ffffff' , '#ff6868' , 225 , 167 , '' ] ,\n      \\ }\nlet g:airline#themes#sol#palette.insert_paste = {\n      \\ 'airline_a': [ s:I1[0]   , '#09643f' , s:I1[2] , 30 , '' ] ,\n      \\ }\n\n\nlet g:airline#themes#sol#palette.replace = copy(g:airline#themes#sol#palette.insert)\nlet g:airline#themes#sol#palette.replace.airline_a = [ s:I1[0] , '#ff2121' , s:I1[2] , 196 , '' ]\nlet g:airline#themes#sol#palette.replace.airline_z = [ s:I1[0] , '#ff2121' , s:I1[2] , 196 , '' ]\nlet g:airline#themes#sol#palette.replace_modified = g:airline#themes#sol#palette.insert_modified\n\nlet s:V1 = [ '#ffff9a' , '#ff6003' , 222 , 202 ]\nlet s:V2 = [ '#343434' , '#a3a3a3' , 237 , 249 ]\nlet s:V3 = [ '#343434' , '#b0b0b0' , 237 , 250 ]\nlet g:airline#themes#sol#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\nlet g:airline#themes#sol#palette.visual_modified = {\n      \\ 'airline_c': [ '#ffffff' , '#ff3535' , 231 , 203 , '' ] ,\n      \\ }\n\nlet s:IA = [ '#777777' , '#c7c7c7' , 244 , 251 , '' ]\nlet g:airline#themes#sol#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)\nlet g:airline#themes#sol#palette.inactive_modified = {\n      \\ 'airline_c': [ '#ff3535' , '' , 203 , '' , '' ] ,\n       \\ }\n\nlet g:airline#themes#sol#palette.tabline = {\n      \\ 'airline_tab':      ['#343434', '#b3b3b3',  237, 250, ''],\n      \\ 'airline_tabsel':   ['#ffffff', '#004b9a',  231, 31 , ''],\n      \\ 'airline_tabtype':  ['#343434', '#a0a0a0',  237, 248, ''],\n      \\ 'airline_tabfill':  ['#343434', '#c7c7c7',  237, 251, ''],\n      \\ 'airline_tabmod':   ['#ffffff', '#ff6868',  231, 167, ''],\n      \\ }\n\nlet s:WI = [ '#eeeeee', '#ff0f38', 255, 201 ]\nlet g:airline#themes#sol#palette.normal.airline_warning = [\n     \\ s:WI[0], s:WI[1], s:WI[2], s:WI[3]\n     \\ ]\n\nlet g:airline#themes#sol#palette.normal_modified.airline_warning =\n    \\ g:airline#themes#sol#palette.normal.airline_warning\n\nlet g:airline#themes#sol#palette.insert.airline_warning =\n    \\ g:airline#themes#sol#palette.normal.airline_warning\n\nlet g:airline#themes#sol#palette.insert_modified.airline_warning =\n    \\ g:airline#themes#sol#palette.normal.airline_warning\n\nlet g:airline#themes#sol#palette.visual.airline_warning =\n    \\ g:airline#themes#sol#palette.normal.airline_warning\n\nlet g:airline#themes#sol#palette.visual_modified.airline_warning =\n    \\ g:airline#themes#sol#palette.normal.airline_warning\n\nlet g:airline#themes#sol#palette.replace.airline_warning =\n    \\ g:airline#themes#sol#palette.normal.airline_warning\n\nlet g:airline#themes#sol#palette.replace_modified.airline_warning =\n    \\ g:airline#themes#sol#palette.normal.airline_warning\n\nif !get(g:, 'loaded_ctrlp', 0)\n  finish\nendif\nlet g:airline#themes#sol#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(\n      \\ [ '#343434' , '#c7c7c7' , 237 , 251 , ''     ] ,\n      \\ [ '#343434' , '#b3b3b3' , 237 , 250 , ''     ] ,\n      \\ [ '#eeeeee' , '#007fff' , 255 , 27  , ''     ] )\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/solarized.vim",
    "content": "let g:airline#themes#solarized#palette = {}\n\nfunction! airline#themes#solarized#refresh()\n  \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n  \" Options\n  \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n  let s:background  = get(g:, 'airline_solarized_bg', &background)\n  let s:ansi_colors = get(g:, 'solarized_termcolors', 16) != 256 && &t_Co >= 16 ? 1 : 0\n  let s:tty         = &t_Co == 8\n\n  \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n  \" Colors\n  \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n  \" Base colors\n  let s:base03  = {'t': s:ansi_colors ?   8 : (s:tty ? '0' : 234), 'g': '#002b36'}\n  let s:base02  = {'t': s:ansi_colors ? '0' : (s:tty ? '0' : 235), 'g': '#073642'}\n  let s:base01  = {'t': s:ansi_colors ?  10 : (s:tty ? '0' : 240), 'g': '#586e75'}\n  let s:base00  = {'t': s:ansi_colors ?  11 : (s:tty ? '7' : 241), 'g': '#657b83'}\n  let s:base0   = {'t': s:ansi_colors ?  12 : (s:tty ? '7' : 244), 'g': '#839496'}\n  let s:base1   = {'t': s:ansi_colors ?  14 : (s:tty ? '7' : 245), 'g': '#93a1a1'}\n  let s:base2   = {'t': s:ansi_colors ?   7 : (s:tty ? '7' : 254), 'g': '#eee8d5'}\n  let s:base3   = {'t': s:ansi_colors ?  15 : (s:tty ? '7' : 230), 'g': '#fdf6e3'}\n  let s:yellow  = {'t': s:ansi_colors ?   3 : (s:tty ? '3' : 136), 'g': '#b58900'}\n  let s:orange  = {'t': s:ansi_colors ?   9 : (s:tty ? '1' : 166), 'g': '#cb4b16'}\n  let s:red     = {'t': s:ansi_colors ?   1 : (s:tty ? '1' : 160), 'g': '#dc322f'}\n  let s:magenta = {'t': s:ansi_colors ?   5 : (s:tty ? '5' : 125), 'g': '#d33682'}\n  let s:violet  = {'t': s:ansi_colors ?  13 : (s:tty ? '5' : 61 ), 'g': '#6c71c4'}\n  let s:blue    = {'t': s:ansi_colors ?   4 : (s:tty ? '4' : 33 ), 'g': '#268bd2'}\n  let s:cyan    = {'t': s:ansi_colors ?   6 : (s:tty ? '6' : 37 ), 'g': '#2aa198'}\n  let s:green   = {'t': s:ansi_colors ?   2 : (s:tty ? '2' : 64 ), 'g': '#859900'}\n\n  \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n  \" Simple mappings\n  \" NOTE: These are easily tweakable mappings. The actual mappings get\n  \" the specific gui and terminal colors from the base color dicts.\n  \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n  \" Normal mode\n  if s:background == 'dark'\n    let s:N1 = [s:base3, s:base1, 'bold']\n    let s:N2 = [s:base2, (s:tty ? s:base01 : s:base00), '']\n    let s:N3 = [s:base01, s:base02, '']\n  else\n    let s:N1 = [s:base2, s:base00, 'bold']\n    let s:N2 = [(s:tty ? s:base01 : s:base2), s:base1, '']\n    let s:N3 = [s:base1, s:base2, '']\n  endif\n  let s:NF = [s:orange, s:N3[1], '']\n  let s:NW = [s:base3, s:orange, '']\n  if s:background == 'dark'\n    let s:NM = [s:base1, s:N3[1], '']\n    let s:NMi = [s:base2, s:N3[1], '']\n  else\n    let s:NM = [s:base01, s:N3[1], '']\n    let s:NMi = [s:base02, s:N3[1], '']\n  endif\n\n  \" Insert mode\n  let s:I1 = [s:N1[0], s:yellow, 'bold']\n  let s:I2 = s:N2\n  let s:I3 = s:N3\n  let s:IF = s:NF\n  let s:IM = s:NM\n\n  \" Visual mode\n  let s:V1 = [s:N1[0], s:magenta, 'bold']\n  let s:V2 = s:N2\n  let s:V3 = s:N3\n  let s:VF = s:NF\n  let s:VM = s:NM\n\n  \" Replace mode\n  let s:R1 = [s:N1[0], s:red, '']\n  let s:R2 = s:N2\n  let s:R3 = s:N3\n  let s:RM = s:NM\n  let s:RF = s:NF\n\n  \" Inactive, according to VertSplit in solarized\n  \" (bg dark: base00; bg light: base0)\n  if s:background == 'dark'\n    let s:IA = [s:base02, s:base00, '']\n  else\n    let s:IA = [s:base2, s:base0, '']\n  endif\n\n  \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n  \" Actual mappings\n  \" WARNING: Don't modify this section unless necessary.\n  \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n  let s:NFa = [s:NF[0].g, s:NF[1].g, s:NF[0].t, s:NF[1].t, s:NF[2]]\n  let s:IFa = [s:IF[0].g, s:IF[1].g, s:IF[0].t, s:IF[1].t, s:IF[2]]\n  let s:VFa = [s:VF[0].g, s:VF[1].g, s:VF[0].t, s:VF[1].t, s:VF[2]]\n  let s:RFa = [s:RF[0].g, s:RF[1].g, s:RF[0].t, s:RF[1].t, s:RF[2]]\n\n  let g:airline#themes#solarized#palette.accents = {\n        \\ 'red': s:NFa,\n        \\ }\n\n  let g:airline#themes#solarized#palette.inactive = airline#themes#generate_color_map(\n        \\ [s:IA[0].g, s:IA[1].g, s:IA[0].t, s:IA[1].t, s:IA[2]],\n        \\ [s:IA[0].g, s:IA[1].g, s:IA[0].t, s:IA[1].t, s:IA[2]],\n        \\ [s:IA[0].g, s:IA[1].g, s:IA[0].t, s:IA[1].t, s:IA[2]])\n  let g:airline#themes#solarized#palette.inactive_modified = {\n        \\ 'airline_c': [s:NMi[0].g, '', s:NMi[0].t, '', s:NMi[2]]}\n\n  let g:airline#themes#solarized#palette.normal = airline#themes#generate_color_map(\n        \\ [s:N1[0].g, s:N1[1].g, s:N1[0].t, s:N1[1].t, s:N1[2]],\n        \\ [s:N2[0].g, s:N2[1].g, s:N2[0].t, s:N2[1].t, s:N2[2]],\n        \\ [s:N3[0].g, s:N3[1].g, s:N3[0].t, s:N3[1].t, s:N3[2]])\n\n  let g:airline#themes#solarized#palette.normal.airline_warning = [\n        \\ s:NW[0].g, s:NW[1].g, s:NW[0].t, s:NW[1].t, s:NW[2]]\n\n  let g:airline#themes#solarized#palette.normal_modified = {\n        \\ 'airline_c': [s:NM[0].g, s:NM[1].g,\n        \\ s:NM[0].t, s:NM[1].t, s:NM[2]]}\n\n  let g:airline#themes#solarized#palette.normal_modified.airline_warning =\n        \\ g:airline#themes#solarized#palette.normal.airline_warning\n\n  let g:airline#themes#solarized#palette.insert = airline#themes#generate_color_map(\n        \\ [s:I1[0].g, s:I1[1].g, s:I1[0].t, s:I1[1].t, s:I1[2]],\n        \\ [s:I2[0].g, s:I2[1].g, s:I2[0].t, s:I2[1].t, s:I2[2]],\n        \\ [s:I3[0].g, s:I3[1].g, s:I3[0].t, s:I3[1].t, s:I3[2]])\n\n  let g:airline#themes#solarized#palette.insert.airline_warning =\n        \\ g:airline#themes#solarized#palette.normal.airline_warning\n\n  let g:airline#themes#solarized#palette.insert_modified = {\n        \\ 'airline_c': [s:IM[0].g, s:IM[1].g,\n        \\ s:IM[0].t, s:IM[1].t, s:IM[2]]}\n\n  let g:airline#themes#solarized#palette.insert_modified.airline_warning =\n        \\ g:airline#themes#solarized#palette.normal.airline_warning\n\n  let g:airline#themes#solarized#palette.visual = airline#themes#generate_color_map(\n        \\ [s:V1[0].g, s:V1[1].g, s:V1[0].t, s:V1[1].t, s:V1[2]],\n        \\ [s:V2[0].g, s:V2[1].g, s:V2[0].t, s:V2[1].t, s:V2[2]],\n        \\ [s:V3[0].g, s:V3[1].g, s:V3[0].t, s:V3[1].t, s:V3[2]])\n\n  let g:airline#themes#solarized#palette.visual.airline_warning =\n        \\ g:airline#themes#solarized#palette.normal.airline_warning\n\n  let g:airline#themes#solarized#palette.visual_modified = {\n        \\ 'airline_c': [s:VM[0].g, s:VM[1].g,\n        \\ s:VM[0].t, s:VM[1].t, s:VM[2]]}\n\n  let g:airline#themes#solarized#palette.visual_modified.airline_warning =\n        \\ g:airline#themes#solarized#palette.normal.airline_warning\n\n  let g:airline#themes#solarized#palette.replace = airline#themes#generate_color_map(\n        \\ [s:R1[0].g, s:R1[1].g, s:R1[0].t, s:R1[1].t, s:R1[2]],\n        \\ [s:R2[0].g, s:R2[1].g, s:R2[0].t, s:R2[1].t, s:R2[2]],\n        \\ [s:R3[0].g, s:R3[1].g, s:R3[0].t, s:R3[1].t, s:R3[2]])\n\n  let g:airline#themes#solarized#palette.replace.airline_warning =\n        \\ g:airline#themes#solarized#palette.normal.airline_warning\n\n  let g:airline#themes#solarized#palette.replace_modified = {\n        \\ 'airline_c': [s:RM[0].g, s:RM[1].g,\n        \\ s:RM[0].t, s:RM[1].t, s:RM[2]]}\n\n  let g:airline#themes#solarized#palette.replace_modified.airline_warning =\n        \\ g:airline#themes#solarized#palette.normal.airline_warning\n\n  let g:airline#themes#solarized#palette.tabline = {}\n\n  let g:airline#themes#solarized#palette.tabline.airline_tab = [\n        \\ s:I2[0].g, s:I2[1].g, s:I2[0].t, s:I2[1].t, s:I2[2]]\n\n  let g:airline#themes#solarized#palette.tabline.airline_tabtype = [\n        \\ s:N2[0].g, s:N2[1].g, s:N2[0].t, s:N2[1].t, s:N2[2]]\nendfunction\n\ncall airline#themes#solarized#refresh()\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/tomorrow.vim",
    "content": "let g:airline#themes#tomorrow#palette = {}\n\nfunction! airline#themes#tomorrow#refresh()\n  let g:airline#themes#tomorrow#palette.accents = {\n        \\ 'red': airline#themes#get_highlight('Constant'),\n        \\ }\n\n  let s:N1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Directory', 'fg'], 'bold')\n  let s:N2 = airline#themes#get_highlight('Pmenu')\n  let s:N3 = airline#themes#get_highlight('CursorLine')\n  let g:airline#themes#tomorrow#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\n\n  let group = airline#themes#get_highlight('vimCommand')\n  let g:airline#themes#tomorrow#palette.normal_modified = {\n        \\ 'airline_c': [ group[0], '', group[2], '', '' ]\n        \\ }\n\n  let s:I1 = airline#themes#get_highlight2(['Normal', 'bg'], ['MoreMsg', 'fg'], 'bold')\n  let s:I2 = airline#themes#get_highlight2(['MoreMsg', 'fg'], ['Normal', 'bg'])\n  let s:I3 = s:N3\n  let g:airline#themes#tomorrow#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\n  let g:airline#themes#tomorrow#palette.insert_modified = g:airline#themes#tomorrow#palette.normal_modified\n\n  let s:R1 = airline#themes#get_highlight('Error', 'bold')\n  let s:R2 = s:N2\n  let s:R3 = s:N3\n  let g:airline#themes#tomorrow#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)\n  let g:airline#themes#tomorrow#palette.replace_modified = g:airline#themes#tomorrow#palette.normal_modified\n\n  let s:V1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Constant', 'fg'], 'bold')\n  let s:V2 = airline#themes#get_highlight2(['Constant', 'fg'], ['Normal', 'bg'])\n  let s:V3 = s:N3\n  let g:airline#themes#tomorrow#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\n  let g:airline#themes#tomorrow#palette.visual_modified = g:airline#themes#tomorrow#palette.normal_modified\n\n  let s:IA = airline#themes#get_highlight2(['NonText', 'fg'], ['CursorLine', 'bg'])\n  let g:airline#themes#tomorrow#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)\n  let g:airline#themes#tomorrow#palette.inactive_modified = {\n        \\ 'airline_c': [ group[0], '', group[2], '', '' ]\n        \\ }\nendfunction\n\ncall airline#themes#tomorrow#refresh()\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/ubaryd.vim",
    "content": "\" vim-airline companion theme of Ubaryd\n\" (https://github.com/Donearm/Ubaryd)\n\n\" Normal mode\nlet s:N1 = [ '#141413' , '#c7b386' , 232 , 252 ] \" blackestgravel & bleaksand\nlet s:N2 = [ '#c7b386' , '#45413b' , 252, 238 ] \" bleaksand & deepgravel\nlet s:N3 = [ '#b88853' , '#242321' , 137, 235 ] \" toffee & darkgravel\nlet s:N4 = [ '#857f78' , 243 ] \" gravel\n\n\" Insert mode\nlet s:I1 = [ '#1a1a18' , '#fade3e' , 232 , 221 ] \" blackestgravel & warmcorn\nlet s:I2 = [ '#c7b386' , '#45413b' , 252 , 238 ] \" bleaksand & deepgravel\nlet s:I3 = [ '#f4cf86' , '#242321' , 222 , 235 ] \" lighttannedskin & darkgravel\n\n\" Visual mode\nlet s:V1 = [ '#1c1b1a' , '#9a4820' , 233 , 88 ] \" blackgravel & warmadobe\nlet s:V2 = [ '#000000' , '#88633f' , 16 , 95 ] \" coal & cappuccino\nlet s:V3 = [ '#88633f' , '#c7b386' , 95 , 252 ] \" cappuccino & bleaksand\nlet s:V4 = [ '#c14c3d' , 160 ] \" tannedumbrella\n\n\" Replace mode\nlet s:RE = [ '#c7915b' , 173 ] \" nut\n\n\" Paste mode\nlet s:PA = [ '#f9ef6d' , 154 ] \" bleaklemon\n\nlet s:IA = [ s:N2[1], s:N3[1], s:N2[3], s:N3[3], '' ]\t\n\nlet g:airline#themes#ubaryd#palette = {}\n\nlet g:airline#themes#ubaryd#palette.accents = {\n      \\ 'red': [ '#ff7400' , '' , 196 , '' , '' ],\n      \\ }\n\nlet g:airline#themes#ubaryd#palette.inactive = {\n      \\ 'airline_a' : [ s:N2[1] , s:N3[1] , s:N2[3] , s:N3[3] , '' ] }\n\n\nlet g:airline#themes#ubaryd#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\nlet g:airline#themes#ubaryd#palette.normal_modified = {\n      \\ 'airline_a' : [ s:N2[0] , s:N4[0] , s:N2[2] , s:N4[1] , '' ] ,\n      \\ 'airline_c' : [ s:V1[1] , s:N2[1] , s:V1[3] , s:N2[3] , '' ] }\n\n\nlet g:airline#themes#ubaryd#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\nlet g:airline#themes#ubaryd#palette.insert_modified = {\n      \\ 'airline_c' : [ s:V2[1] , s:N2[1] , s:V2[3] , s:N2[3] , '' ] }\nlet g:airline#themes#ubaryd#palette.insert_paste = {\n      \\ 'airline_a' : [ s:I1[0] , s:PA[0] , s:I1[2] , s:PA[1] , '' ] }\n\n\nlet g:airline#themes#ubaryd#palette.replace = copy(airline#themes#ubaryd#palette.insert)\nlet g:airline#themes#ubaryd#palette.replace.airline_a = [ s:I1[0] , s:RE[0] , s:I1[2] , s:RE[1] , '' ]\nlet g:airline#themes#ubaryd#palette.replace_modified = g:airline#themes#ubaryd#palette.insert_modified\n\n\nlet g:airline#themes#ubaryd#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\nlet g:airline#themes#ubaryd#palette.visual_modified = {\n      \\ 'airline_c' : [ s:V3[0] , s:V4[0] , s:V3[2] , s:V4[1] , '' ] }\n\nlet g:airline#themes#ubaryd#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)\nlet g:airline#themes#ubaryd#palette.inactive_modified = {\n      \\ 'airline_c' : [ s:V1[1] , ''      , s:V1[3] , ''      , '' ] }\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/understated.vim",
    "content": "let g:airline#themes#understated#palette = {}\n\nlet s:N1 = ['#FFFFFF', '#5F87FF', 15, 69]  \" Outside blocks in normal mode (mode and file position)\nlet s:N2 = ['#AFAF87', '#5F5F5F', 144, 59] \" Next blocks inside (branch and file format)\nlet s:N3 = ['#AFAF87', '#5F5F5F', 144, 59] \" The middle block\n\nlet g:airline#themes#understated#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\nlet g:airline#themes#understated#palette.normal_modified = {'airline_c': ['#ffffff', '#5f005f', 144, 59, 'bold'] ,}\n\nlet s:I1 = ['#FFFFFF', '#87AF5F', 15, 107] \" Outside blocks in normal mode (mode and file position)\nlet s:I2 = ['#AFAF87', '#5F5F5F', 144, 59] \" Next blocks inside (branch and file format)\nlet s:I3 = ['#AFAF87', '#5F5F5F', 144, 59] \" The middle block\nlet g:airline#themes#understated#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\nlet g:airline#themes#understated#palette.insert_modified = {'airline_c': ['#AFAF87', '#5F5F5F', 144, 59, 'bold'] ,}\nlet g:airline#themes#understated#palette.insert_paste = {'airline_c': ['#AFAF87', '#5F5F5F', 144, 59, ''] ,}\n\nlet g:airline#themes#understated#palette.replace = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\nlet g:airline#themes#understated#palette.replace.airline_a = ['#FFFFFF', '#870000', 15, 88, '']\nlet g:airline#themes#understated#palette.replace_modified = {'airline_c': ['#AFAF87', '#5F5F5F', 144, 59, 'bold'] ,}\n\nlet s:V1 = ['#FFFFFF', '#AF5F00', 15, 130]\nlet s:V2 = ['#AFAF87', '#5F5F5F', 144, 59]\nlet s:V3 = ['#AFAF87', '#5F5F5F', 144, 59]\nlet g:airline#themes#understated#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\nlet g:airline#themes#understated#palette.visual_modified = {'airline_c': [ '#AFAF87', '#5f005f', 144, 59, 'bold'] ,}\n\nlet s:V1 = ['#080808', '#FFAF00', 232, 214]\nlet s:IA1 = ['#4E4E4E', '#1C1C1C', 239, 234, '']\nlet s:IA2 = ['#4E4E4E', '#1C1C1C', 239, 234, '']\nlet s:IA3 = ['#4E4E4E', '#1C1C1C', 239, 234, '']\nlet g:airline#themes#understated#palette.inactive = airline#themes#generate_color_map(s:IA1, s:IA2, s:IA3)\nlet g:airline#themes#understated#palette.inactive_modified = {'airline_c': ['#4E4E4E', '', 239, '', 'bold'] ,}\n\nlet g:airline#themes#understated#palette.accents = {'red': ['#FF0000', '', 88, '']}\n\nif !get(g:, 'loaded_ctrlp', 0)\n  finish\nendif\nlet g:airline#themes#understated#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(\n      \\ ['#FFFFFF', '#1C1C1C', 15, 234, '' ],\n      \\ ['#FFFFFF', '#262626', 15, 235, '' ],\n      \\ ['#FFFFFF', '#303030', 15, 236, 'bold'])\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/wombat.vim",
    "content": "\" vim-airline companion theme of Wombat\n\" looks great with wombat256 vim colorscheme\n\n\" Normal mode\n\"          [ guifg, guibg, ctermfg, ctermbg, opts ]\nlet s:N1 = [ '#141413' , '#CAE682' , 232 , 192 ] \" mode\nlet s:N2 = [ '#CAE682' , '#32322F' , 192 , 236 ] \" info\nlet s:N3 = [ '#CAE682' , '#242424' , 192 , 234 ] \" statusline\nlet s:N4 = [ '#86CD74' , 113 ]                   \" mode modified\n\n\" Insert mode\nlet s:I1 = [ '#141413' , '#FDE76E' , 232 , 227 ]\nlet s:I2 = [ '#FDE76E' , '#32322F' , 227 , 236 ]\nlet s:I3 = [ '#FDE76E' , '#242424' , 227 , 234 ]\nlet s:I4 = [ '#FADE3E' , 221 ]\n\n\" Visual mode\nlet s:V1 = [ '#141413' , '#B5D3F3' , 232 , 153 ]\nlet s:V2 = [ '#B5D3F3' , '#32322F' , 153 , 236 ]\nlet s:V3 = [ '#B5D3F3' , '#242424' , 153 , 234 ]\nlet s:V4 = [ '#7CB0E6' , 111 ]\n\n\" Replace mode\nlet s:R1 = [ '#141413' , '#E5786D' , 232 , 173 ]\nlet s:R2 = [ '#E5786D' , '#32322F' , 173 , 236 ]\nlet s:R3 = [ '#E5786D' , '#242424' , 173 , 234 ]\nlet s:R4 = [ '#E55345' , 203 ]\n\n\" Paste mode\nlet s:PA = [ '#94E42C' , 47 ]\n\n\" Info modified\nlet s:IM = [ '#40403C' , 238 ]\n\n\" Inactive mode\nlet s:IA = [ '#767676' , s:N3[1] , 243 , s:N3[3] , '' ]\n\nlet g:airline#themes#wombat#palette = {}\n\nlet g:airline#themes#wombat#palette.accents = {\n      \\ 'red': [ '#E5786D' , '' , 203 , '' , '' ],\n      \\ }\n\nlet g:airline#themes#wombat#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\nlet g:airline#themes#wombat#palette.normal_modified = {\n    \\ 'airline_a': [ s:N1[0] , s:N4[0] , s:N1[2] , s:N4[1] , ''     ] ,\n    \\ 'airline_b': [ s:N4[0] , s:IM[0] , s:N4[1] , s:IM[1] , ''     ] ,\n    \\ 'airline_c': [ s:N4[0] , s:N3[1] , s:N4[1] , s:N3[3] , ''     ] }\n\n\nlet g:airline#themes#wombat#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\nlet g:airline#themes#wombat#palette.insert_modified = {\n    \\ 'airline_a': [ s:I1[0] , s:I4[0] , s:I1[2] , s:I4[1] , ''     ] ,\n    \\ 'airline_b': [ s:I4[0] , s:IM[0] , s:I4[1] , s:IM[1] , ''     ] ,\n    \\ 'airline_c': [ s:I4[0] , s:N3[1] , s:I4[1] , s:N3[3] , ''     ] }\n\n\nlet g:airline#themes#wombat#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\nlet g:airline#themes#wombat#palette.visual_modified = {\n    \\ 'airline_a': [ s:V1[0] , s:V4[0] , s:V1[2] , s:V4[1] , ''     ] ,\n    \\ 'airline_b': [ s:V4[0] , s:IM[0] , s:V4[1] , s:IM[1] , ''     ] ,\n    \\ 'airline_c': [ s:V4[0] , s:N3[1] , s:V4[1] , s:N3[3] , ''     ] }\n\n\nlet g:airline#themes#wombat#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)\nlet g:airline#themes#wombat#palette.replace_modified = {\n    \\ 'airline_a': [ s:R1[0] , s:R4[0] , s:R1[2] , s:R4[1] , ''     ] ,\n    \\ 'airline_b': [ s:R4[0] , s:IM[0] , s:R4[1] , s:IM[1] , ''     ] ,\n    \\ 'airline_c': [ s:R4[0] , s:N3[1] , s:R4[1] , s:N3[3] , ''     ] }\n\n\nlet g:airline#themes#wombat#palette.insert_paste = {\n    \\ 'airline_a': [ s:I1[0] , s:PA[0] , s:I1[2] , s:PA[1] , ''     ] ,\n    \\ 'airline_b': [ s:PA[0] , s:IM[0] , s:PA[1] , s:IM[1] , ''     ] ,\n    \\ 'airline_c': [ s:PA[0] , s:N3[1] , s:PA[1] , s:N3[3] , ''     ] }\n\n\nlet g:airline#themes#wombat#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)\nlet g:airline#themes#wombat#palette.inactive_modified = {\n    \\ 'airline_c': [ s:N4[0] , ''      , s:N4[1] , ''      , ''     ] }\n\n\nif !get(g:, 'loaded_ctrlp', 0)\n  finish\nendif\nlet g:airline#themes#wombat#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(\n      \\ [ '#DADADA' , '#242424' , 253 , 234 , ''     ] ,\n      \\ [ '#DADADA' , '#40403C' , 253 , 238 , ''     ] ,\n      \\ [ '#141413' , '#DADADA' , 232 , 253 , 'bold' ] )\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes/zenburn.vim",
    "content": "let g:airline#themes#zenburn#palette = {}\n\nfunction! airline#themes#zenburn#refresh()\n  let g:airline#themes#zenburn#palette.accents = {\n        \\ 'red': airline#themes#get_highlight('Constant'),\n        \\ }\n\n  let s:N1 = airline#themes#get_highlight2(['DbgCurrent', 'bg'], ['Folded', 'fg'], 'bold')\n  let s:N2 = airline#themes#get_highlight('Folded')\n  let s:N3 = airline#themes#get_highlight('NonText')\n\n  let g:airline#themes#zenburn#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)\n  let s:Nmod = airline#themes#get_highlight('Comment')\n  let g:airline#themes#zenburn#palette.normal_modified = {\n        \\ 'airline_c': s:Nmod\n        \\ }\n\n  let s:I1 = airline#themes#get_highlight2(['DbgCurrent', 'bg'], ['String', 'fg'], 'bold')\n  let s:I2 = airline#themes#get_highlight2(['String', 'fg'], ['Folded', 'bg'])\n  let s:I3 = s:N3\n  let g:airline#themes#zenburn#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)\n  let g:airline#themes#zenburn#palette.insert_modified = g:airline#themes#zenburn#palette.normal_modified\n\n  let s:R1 = airline#themes#get_highlight2(['DbgCurrent', 'bg'], ['Comment', 'fg'], 'bold')\n  let s:R2 = airline#themes#get_highlight2(['Comment', 'fg'], ['Folded', 'bg'])\n  let s:R3 = s:N3\n  let g:airline#themes#zenburn#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)\n  let g:airline#themes#zenburn#palette.replace_modified = g:airline#themes#zenburn#palette.normal_modified\n\n  let s:V1 = airline#themes#get_highlight2(['DbgCurrent', 'bg'], ['Identifier', 'fg'], 'bold')\n  let s:V2 = airline#themes#get_highlight2(['Identifier', 'fg'], ['Folded', 'bg'])\n  let s:V3 = s:N3\n  let g:airline#themes#zenburn#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)\n  let g:airline#themes#zenburn#palette.visual_modified = g:airline#themes#zenburn#palette.normal_modified\n\n  let s:IA = airline#themes#get_highlight('NonText')\n  let g:airline#themes#zenburn#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)\n  let g:airline#themes#zenburn#palette.inactive_modified = {\n        \\ 'airline_c': s:Nmod\n        \\ }\nendfunction\n\ncall airline#themes#zenburn#refresh()\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/themes.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\n\" generates a dictionary which defines the colors for each highlight group\nfunction! airline#themes#generate_color_map(sect1, sect2, sect3, ...)\n  let palette = {\n        \\ 'airline_a': [ a:sect1[0] , a:sect1[1] , a:sect1[2] , a:sect1[3] , get(a:sect1 , 4 , '') ] ,\n        \\ 'airline_b': [ a:sect2[0] , a:sect2[1] , a:sect2[2] , a:sect2[3] , get(a:sect2 , 4 , '') ] ,\n        \\ 'airline_c': [ a:sect3[0] , a:sect3[1] , a:sect3[2] , a:sect3[3] , get(a:sect3 , 4 , '') ] ,\n        \\ }\n\n  if a:0 > 0\n    call extend(palette, {\n          \\ 'airline_x': [ a:1[0] , a:1[1] , a:1[2] , a:1[3] , get(a:1 , 4 , '' ) ] ,\n          \\ 'airline_y': [ a:2[0] , a:2[1] , a:2[2] , a:2[3] , get(a:2 , 4 , '' ) ] ,\n          \\ 'airline_z': [ a:3[0] , a:3[1] , a:3[2] , a:3[3] , get(a:3 , 4 , '' ) ] ,\n          \\ })\n  else\n    call extend(palette, {\n          \\ 'airline_x': [ a:sect3[0] , a:sect3[1] , a:sect3[2] , a:sect3[3] , '' ] ,\n          \\ 'airline_y': [ a:sect2[0] , a:sect2[1] , a:sect2[2] , a:sect2[3] , '' ] ,\n          \\ 'airline_z': [ a:sect1[0] , a:sect1[1] , a:sect1[2] , a:sect1[3] , '' ] ,\n          \\ })\n  endif\n\n  return palette\nendfunction\n\nfunction! airline#themes#get_highlight(group, ...)\n  return call('airline#highlighter#get_highlight', [a:group] + a:000)\nendfunction\n\nfunction! airline#themes#get_highlight2(fg, bg, ...)\n  return call('airline#highlighter#get_highlight2', [a:fg, a:bg] + a:000)\nendfunction\n\nfunction! airline#themes#patch(palette)\n  for mode in keys(a:palette)\n    if !has_key(a:palette[mode], 'airline_warning')\n      let a:palette[mode]['airline_warning'] = [ '#000000', '#df5f00', 232, 166 ]\n    endif\n  endfor\n\n  let a:palette.accents = get(a:palette, 'accents', {})\n  let a:palette.accents.bold = [ '', '', '', '', 'bold' ]\n  let a:palette.accents.italic = [ '', '', '', '', 'italic' ]\n\n  if !has_key(a:palette.accents, 'red')\n    let a:palette.accents.red = [ '#ff0000' , '' , 160 , '' ]\n  endif\n  if !has_key(a:palette.accents, 'green')\n    let a:palette.accents.green = [ '#008700' , '' , 22  , '' ]\n  endif\n  if !has_key(a:palette.accents, 'blue')\n    let a:palette.accents.blue = [ '#005fff' , '' , 27  , '' ]\n  endif\n  if !has_key(a:palette.accents, 'yellow')\n    let a:palette.accents.yellow = [ '#dfff00' , '' , 190 , '' ]\n  endif\n  if !has_key(a:palette.accents, 'orange')\n    let a:palette.accents.orange = [ '#df5f00' , '' , 166 , '' ]\n  endif\n  if !has_key(a:palette.accents, 'purple')\n    let a:palette.accents.purple = [ '#af00df' , '' , 128 , '' ]\n  endif\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline/util.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\ncall airline#init#bootstrap()\nlet s:spc = g:airline_symbols.space\n\nfunction! airline#util#wrap(text, minwidth)\n  if a:minwidth > 0 && winwidth(0) < a:minwidth\n    return ''\n  endif\n  return a:text\nendfunction\n\nfunction! airline#util#append(text, minwidth)\n  if a:minwidth > 0 && winwidth(0) < a:minwidth\n    return ''\n  endif\n  let prefix = s:spc == \"\\ua0\" ? s:spc : s:spc.s:spc\n  return empty(a:text) ? '' : prefix.g:airline_left_alt_sep.s:spc.a:text\nendfunction\n\nfunction! airline#util#prepend(text, minwidth)\n  if a:minwidth > 0 && winwidth(0) < a:minwidth\n    return ''\n  endif\n  return empty(a:text) ? '' : a:text.s:spc.g:airline_right_alt_sep.s:spc\nendfunction\n\nif v:version >= 704\n  function! airline#util#getwinvar(winnr, key, def)\n    return getwinvar(a:winnr, a:key, a:def)\n  endfunction\nelse\n  function! airline#util#getwinvar(winnr, key, def)\n    let winvals = getwinvar(a:winnr, '')\n    return get(winvals, a:key, a:def)\n  endfunction\nendif\n\nif v:version >= 704\n  function! airline#util#exec_funcrefs(list, ...)\n    for Fn in a:list\n      let code = call(Fn, a:000)\n      if code != 0\n        return code\n      endif\n    endfor\n    return 0\n  endfunction\nelse\n  function! airline#util#exec_funcrefs(list, ...)\n    \" for 7.2; we cannot iterate the list, hence why we use range()\n    \" for 7.3-[97, 328]; we cannot reuse the variable, hence the {}\n    for i in range(0, len(a:list) - 1)\n      let Fn{i} = a:list[i]\n      let code = call(Fn{i}, a:000)\n      if code != 0\n        return code\n      endif\n    endfor\n    return 0\n  endfunction\nendif\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/autoload/airline.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nlet g:airline_statusline_funcrefs = get(g:, 'airline_statusline_funcrefs', [])\n\nlet s:sections = ['a','b','c','gutter','x','y','z','warning']\nlet s:inactive_funcrefs = []\n\nfunction! airline#add_statusline_func(name)\n  call airline#add_statusline_funcref(function(a:name))\nendfunction\n\nfunction! airline#add_statusline_funcref(function)\n  if index(g:airline_statusline_funcrefs, a:function) >= 0\n    echohl WarningMsg\n    echo 'The airline statusline funcref '.string(a:function).' has already been added.'\n    echohl NONE\n    return\n  endif\n  call add(g:airline_statusline_funcrefs, a:function)\nendfunction\n\nfunction! airline#remove_statusline_func(name)\n  let i = index(g:airline_statusline_funcrefs, function(a:name))\n  if i > -1\n    call remove(g:airline_statusline_funcrefs, i)\n  endif\nendfunction\n\nfunction! airline#add_inactive_statusline_func(name)\n  call add(s:inactive_funcrefs, function(a:name))\nendfunction\n\nfunction! airline#load_theme()\n  if exists('*airline#themes#{g:airline_theme}#refresh')\n    call airline#themes#{g:airline_theme}#refresh()\n  endif\n\n  let palette = g:airline#themes#{g:airline_theme}#palette\n  call airline#themes#patch(palette)\n\n  if exists('g:airline_theme_patch_func')\n    let Fn = function(g:airline_theme_patch_func)\n    call Fn(palette)\n  endif\n\n  call airline#highlighter#load_theme()\n  call airline#extensions#load_theme()\nendfunction\n\nfunction! airline#switch_theme(name)\n  try\n    let palette = g:airline#themes#{a:name}#palette \"also lazy loads the theme\n    let g:airline_theme = a:name\n  catch\n    echohl WarningMsg | echo 'The specified theme cannot be found.' | echohl NONE\n    if exists('g:airline_theme')\n      return\n    else\n      let g:airline_theme = 'dark'\n    endif\n  endtry\n\n  let w:airline_lastmode = ''\n  call airline#update_statusline()\n  call airline#load_theme()\n\n  \" this is required to prevent clobbering the startup info message, i don't know why...\n  call airline#check_mode(winnr())\nendfunction\n\nfunction! airline#switch_matching_theme()\n  if exists('g:colors_name')\n    try\n      let palette = g:airline#themes#{g:colors_name}#palette\n      call airline#switch_theme(g:colors_name)\n      return 1\n    catch\n      for map in items(g:airline_theme_map)\n        if match(g:colors_name, map[0]) > -1\n          call airline#switch_theme(map[1])\n          return 1\n        endif\n      endfor\n    endtry\n  endif\n  return 0\nendfunction\n\nfunction! airline#update_statusline()\n  for nr in filter(range(1, winnr('$')), 'v:val != winnr()')\n    call setwinvar(nr, 'airline_active', 0)\n    let context = { 'winnr': nr, 'active': 0, 'bufnr': winbufnr(nr) }\n    call s:invoke_funcrefs(context, s:inactive_funcrefs)\n  endfor\n\n  unlet! w:airline_render_left\n  unlet! w:airline_render_right\n  for section in s:sections\n    unlet! w:airline_section_{section}\n  endfor\n\n  let w:airline_active = 1\n  let context = { 'winnr': winnr(), 'active': 1, 'bufnr': winbufnr(winnr()) }\n  call s:invoke_funcrefs(context, g:airline_statusline_funcrefs)\nendfunction\n\nlet s:contexts = {}\nlet s:core_funcrefs = [\n      \\ function('airline#extensions#apply'),\n      \\ function('airline#extensions#default#apply') ]\nfunction! s:invoke_funcrefs(context, funcrefs)\n  let builder = airline#builder#new(a:context)\n  let err = airline#util#exec_funcrefs(a:funcrefs + s:core_funcrefs, builder, a:context)\n  if err == 1\n    let a:context.line = builder.build()\n    let s:contexts[a:context.winnr] = a:context\n    call setwinvar(a:context.winnr, '&statusline', '%!airline#statusline('.a:context.winnr.')')\n  endif\nendfunction\n\nfunction! airline#statusline(winnr)\n  if has_key(s:contexts, a:winnr)\n    return '%{airline#check_mode('.a:winnr.')}'.s:contexts[a:winnr].line\n  endif\n\n  \" in rare circumstances this happens...see #276\n  return ''\nendfunction\n\nfunction! airline#check_mode(winnr)\n  let context = s:contexts[a:winnr]\n\n  if get(w:, 'airline_active', 1)\n    let l:m = mode()\n    if l:m ==# \"i\"\n      let l:mode = ['insert']\n    elseif l:m ==# \"R\"\n      let l:mode = ['replace']\n    elseif l:m =~# '\\v(v|V|\u0016|s|S|\u0013)'\n      let l:mode = ['visual']\n    else\n      let l:mode = ['normal']\n    endif\n    let w:airline_current_mode = get(g:airline_mode_map, l:m, l:m)\n  else\n    let l:mode = ['inactive']\n    let w:airline_current_mode = get(g:airline_mode_map, '__')\n  endif\n\n  if g:airline_detect_modified\n    if &modified\n      call add(l:mode, 'modified')\n    endif\n  endif\n\n  if g:airline_detect_paste && &paste\n    call add(l:mode, 'paste')\n  endif\n\n  let mode_string = join(l:mode)\n  if get(w:, 'airline_lastmode', '') != mode_string\n    call airline#highlighter#highlight_modified_inactive(context.bufnr)\n    call airline#highlighter#highlight(l:mode)\n    let w:airline_lastmode = mode_string\n  endif\n\n  return ''\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/doc/airline.txt",
    "content": "*airline.txt*  Lean and mean status/tabline that's light as air\n*airline*\n                   _                       _      _ _                        ~\n            __   _(_)_ __ ___         __ _(_)_ __| (_)_ __   ___             ~\n            \\ \\ / / | '_ ` _ \\ _____ / _` | | '__| | | '_ \\ / _ \\            ~\n             \\ V /| | | | | | |_____| (_| | | |  | | | | | |  __/            ~\n              \\_/ |_|_| |_| |_|      \\__,_|_|_|  |_|_|_| |_|\\___|            ~\n                                                                             ~\n==============================================================================\nCONTENTS                                                  *airline-contents*\n\n   01. Intro ............................................... |airline-intro|\n   02. Features ......................................... |airline-features|\n   03. Name ................................................. |airline-name|\n   04. Configuration ............................... |airline-configuration|\n   05. Commands ......................................... |airline-commands|\n   06. Customization ............................... |airline-customization|\n   07. Extensions ..................................... |airline-extensions|\n   08. Advanced Customization ............. |airline-advanced-customization|\n   09. Funcrefs ......................................... |airline-funcrefs|\n   10. Pipeline ......................................... |airline-pipeline|\n   11. Writing Extensions ..................... |airline-writing-extensions|\n   12. Writing Themes ..................................... |airline-themes|\n   13. Troubleshooting ........................... |airline-troubleshooting|\n   14. Contributions ............................... |airline-contributions|\n   15. License ........................................... |airline-license|\n\n==============================================================================\nINTRODUCTION                                                 *airline-intro*\n\nvim-airline is a fast and lightweight alternative to powerline, written\nin 100% vimscript with no outside dependencies.\n\n==============================================================================\nFEATURES                                                  *airline-features*\n\n*  tiny core written with extensibility in mind.\n*  integrates with many popular plugins.\n*  looks good with regular fonts, and provides configuration points so you\n   can use unicode or powerline symbols.\n*  optimized for speed; it loads in under a millisecond.\n*  fully customizable; if you know a little 'statusline' syntax you can\n   tweak it to your needs.\n*  extremely easy to write themes.\n\n==============================================================================\nNAME                                                          *airline-name*\n\nWhere did the name come from?\n\nI wrote this on an airplane, and since it's light as air it turned out to be a\ngood name :-)\n\n==============================================================================\nCONFIGURATION                                        *airline-configuration*\n\nThere are a couple configuration values available (shown with their default\nvalues):\n\n* the separator used on the left side >\n  let g:airline_left_sep='>'\n<\n* the separator used on the right side >\n  let g:airline_right_sep='<'\n<\n* enable modified detection >\n  let g:airline_detect_modified=1\n\n* enable paste detection >\n  let g:airline_detect_paste=1\n<\n* enable iminsert detection >\n  let g:airline_detect_iminsert=0\n<\n* determine whether inactive windows should have the left section collapsed to\n  only the filename of that buffer.  >\n  let g:airline_inactive_collapse=1\n<\n* themes are automatically selected based on the matching colorscheme. this\n  can be overridden by defining a value. >\n  let g:airline_theme=\n<\n* if you want to patch the airline theme before it gets applied, you can\n  supply the name of a function where you can modify the palette. >\n  let g:airline_theme_patch_func = 'AirlineThemePatch'\n  function! AirlineThemePatch(palette)\n    if g:airline_theme == 'badwolf'\n      for colors in values(a:palette.inactive)\n        let colors[3] = 245\n      endfor\n    endif\n  endfunction\n<\n* enable/disable automatic population of the `g:airline_symbols` dictionary\n  with powerline symbols. >\n  let g:airline_powerline_fonts=0\n<\n* define the set of text to display for each mode.  >\n  let g:airline_mode_map = {} \" see source for the defaults\n\n  \" or copy paste the following into your vimrc for shortform text\n  let g:airline_mode_map = {\n      \\ '__' : '-',\n      \\ 'n'  : 'N',\n      \\ 'i'  : 'I',\n      \\ 'R'  : 'R',\n      \\ 'c'  : 'C',\n      \\ 'v'  : 'V',\n      \\ 'V'  : 'V',\n      \\ '\u0016' : 'V',\n      \\ 's'  : 'S',\n      \\ 'S'  : 'S',\n      \\ '\u0013' : 'S',\n      \\ }\n<\n* define the set of filename match queries which excludes a window from having\n  its statusline modified >\n  let g:airline_exclude_filenames = [] \" see source for current list\n<\n* define the set of filetypes which are excluded from having its window\n  statusline modified >\n  let g:airline_exclude_filetypes = [] \" see source for current list\n<\n* defines whether the preview window should be excluded from have its window\n  statusline modified (may help with plugins which use the preview window\n  heavily) >\n  let g:airline_exclude_preview = 0\n<\n==============================================================================\nCOMMANDS                                                  *airline-commands*\n\n:AirlineTheme {theme-name}                                   *:AirlineTheme*\n  Displays or changes the current theme.\n\n:AirlineToggleWhitespace                          *:AirlineToggleWhitespace*\n  Toggles whitespace detection.\n\n:AirlineToggle                                              *:AirlineToggle*\n  Toggles between the standard 'statusline' and airline.\n\n:AirlineRefresh                                            *:AirlineRefresh*\n  Refreshes all highlight groups.\n\n==============================================================================\nCUSTOMIZATION                                        *airline-customization*\n\nThe following are some unicode symbols for customizing the left/right\nseparators, as well as the powerline font glyths.\n\nNote: You must define the dictionary first before setting values. Also, it's a\ngood idea to check whether if it exists as to avoid accidentally overwritting\nits contents. >\n  if !exists('g:airline_symbols')\n    let g:airline_symbols = {}\n  endif\n\n  \" unicode symbols\n  let g:airline_left_sep = '»'\n  let g:airline_left_sep = '▶'\n  let g:airline_right_sep = '«'\n  let g:airline_right_sep = '◀'\n  let g:airline_symbols.linenr = '␊'\n  let g:airline_symbols.linenr = '␤'\n  let g:airline_symbols.linenr = '¶'\n  let g:airline_symbols.branch = '⎇'\n  let g:airline_symbols.paste = 'ρ'\n  let g:airline_symbols.paste = 'Þ'\n  let g:airline_symbols.paste = '∥'\n  let g:airline_symbols.whitespace = 'Ξ'\n\n  \" powerline symbols\n  let g:airline_left_sep = ''\n  let g:airline_left_alt_sep = ''\n  let g:airline_right_sep = ''\n  let g:airline_right_alt_sep = ''\n  let g:airline_symbols.branch = ''\n  let g:airline_symbols.readonly = ''\n  let g:airline_symbols.linenr = ''\n\n  \" old vim-powerline symbols\n  let g:airline_left_sep = '⮀'\n  let g:airline_left_alt_sep = '⮁'\n  let g:airline_right_sep = '⮂'\n  let g:airline_right_alt_sep = '⮃'\n  let g:airline_symbols.branch = '⭠'\n  let g:airline_symbols.readonly = '⭤'\n  let g:airline_symbols.linenr = '⭡'\n<\n\nFor more intricate customizations, you can replace the predefined sections\nwith the usual statusline syntax.\n\nNote: If you define any section variables it will replace the default values\nentirely.  If you want to disable only certain parts of a section you can try\nusing variables defined in the |airline-configuration| or |airline-extensions|\nsection.\n>\n  variable names                default contents\n  ----------------------------------------------------------------------------\n  let g:airline_section_a       (mode, paste, iminsert)\n  let g:airline_section_b       (hunks, branch)\n  let g:airline_section_c       (bufferline or filename)\n  let g:airline_section_gutter  (readonly, csv)\n  let g:airline_section_x       (tagbar, filetype, virtualenv)\n  let g:airline_section_y       (fileencoding, fileformat)\n  let g:airline_section_z       (percentage, line number, column number)\n  let g:airline_section_warning (syntastic, whitespace)\n\n  \" here is an example of how you could replace the branch indicator with\n  \" the current working directory, followed by the filename.\n  let g:airline_section_b = '%{getcwd()}'\n  let g:airline_section_c = '%t'\n<\n==============================================================================\nEXTENSIONS                                              *airline-extensions*\n\nMost extensions are enabled by default and lazily loaded when the\ncorresponding plugin (if any) is detected.\n\n-------------------------------------                      *airline-default*\nThe default extension understands all of the `g:` variables in the\n|airline-configuration| section, however it also has some more fine-tuned\nconfiguration values that you can use.\n\n* control which sections get truncated and at what width. >\n  let g:airline#extensions#default#section_truncate_width = {\n      \\ 'b': 79,\n      \\ 'x': 60,\n      \\ 'y': 88,\n      \\ 'z': 45,\n      \\ })\n\n  \" Note: set to an empty dictionary to disable truncation.\n  let g:airline#extensions#default#section_truncate_width = {}\n<\n* configure the layout of the sections by specificing an array of two arrays\n  (first array is the left side, second array is the right side). >\n  let g:airline#extensions#default#layout = [\n      \\ [ 'a', 'b', 'c' ],\n      \\ [ 'x', 'y', 'z', 'warning' ]\n      \\ ])\n<\n\n-------------------------------------                     *airline-quickfix*\nThe quickfix extension is a simple built-in extension which determines\nwhether the buffer is a quickfix or location list buffer, and adjusts the\ntitle accordingly.\n\n* configure the title text for quickfix buffers >\n  let g:airline#extensions#quickfix#quickfix_text = 'Quickfix'\n<\n* configure the title text for location list buffers >\n  let g:airline#extensions#quickfix#location_text = 'Location'\n<\n\n-------------------------------------                   *airline-bufferline*\nvim-bufferline <https://github.com/bling/vim-bufferline>\n\n* enable/disable bufferline integration >\n  let g:airline#extensions#bufferline#enabled = 1\n<\n* determine whether bufferline will overwrite customization variables >\n  let g:airline#extensions#bufferline#overwrite_variables = 1\n<\n-------------------------------------                       *airline-branch*\nfugitive.vim <https://github.com/tpope/vim-fugitive>\nlawrencium   <https://bitbucket.org/ludovicchabant/vim-lawrencium>\nvcscommand   <http://www.vim.org/scripts/script.php?script_id=90>\n\n* enable/disable fugitive/lawrencium integration >\n  let g:airline#extensions#branch#enabled = 1\n<\n* change the text for when no branch is detected >\n  let g:airline#extensions#branch#empty_message = ''\n\n* use vcscommand.vim if available >\n  let g:airline#extensions#branch#use_vcscommand = 0\n<\n-------------------------------------                    *airline-syntastic*\nsyntastic <https://github.com/scrooloose/syntastic>\n\n* enable/disable syntastic integration >\n  let g:airline#extensions#syntastic#enabled = 1\n<\n-------------------------------------                       *airline-tagbar*\ntagbar <https://github.com/majutsushi/tagbar>\n\n* enable/disable tagbar integration >\n  let g:airline#extensions#tagbar#enabled = 1\n<\n* change how tags are displayed (:help tagbar-statusline) >\n  let g:airline#extensions#tagbar#flags = ''  \"default\n  let g:airline#extensions#tagbar#flags = 'f'\n  let g:airline#extensions#tagbar#flags = 's'\n  let g:airline#extensions#tagbar#flags = 'p'\n<\n-------------------------------------                          *airline-csv*\ncsv.vim <https://github.com/chrisbra/csv.vim>\n\n* enable/disable csv integration for displaying the current column. >\n  let g:airline#extensions#csv#enabled = 1\n<\n* change how columns are displayed. >\n  let g:airline#extensions#csv#column_display = 'Number' (default)\n  let g:airline#extensions#csv#column_display = 'Name'\n<\n-------------------------------------                        *airline-hunks*\nvim-gitgutter <https://github.com/airblade/vim-gitgutter>\nvim-signify <https://github.com/mhinz/vim-signify>\n\n* enable/disable showing a summary of changed hunks under source control. >\n  let g:airline#extensions#hunks#enabled = 1\n<\n* enable/disable showing only non-zero hunks. >\n  let g:airline#extensions#hunks#non_zero_only = 0\n<\n* set hunk count symbols. >\n  let g:airline#extensions#hunks#hunk_symbols = ['+', '~', '-']\n<\n-------------------------------------                        *airline-ctrlp*\nctrlp <https://github.com/kien/ctrlp.vim>\n\n* configure which mode colors should ctrlp window use (takes effect\n  only if the active airline theme doesn't define ctrlp colors) >\n  let g:airline#extensions#ctrlp#color_template = 'insert' (default)\n  let g:airline#extensions#ctrlp#color_template = 'normal'\n  let g:airline#extensions#ctrlp#color_template = 'visual'\n  let g:airline#extensions#ctrlp#color_template = 'replace'\n<\n\n* configure whether to show the previous and next modes (mru, buffer, etc...)\n>\n let g:airline#extensions#ctrlp#show_adjacent_modes = 1\n<\n-------------------------------------                   *airline-virtualenv*\nvirtualenv <https://github.com/jmcantrell/vim-virtualenv>\n\n* enable/disable virtualenv integration >\n  let g:airline#extensions#virtualenv#enabled = 1\n<\n-------------------------------------                        *airline-eclim*\neclim <https://eclim.org>\n\n* enable/disable eclim integration, which works well with the\n  |airline-syntastic| extension. >\n  let g:airline#extensions#eclim#enabled = 1\n\n-------------------------------------                   *airline-whitespace*\n* enable/disable detection of whitespace errors. >\n  let g:airline#extensions#whitespace#enabled = 1\n<\n* customize the whitespace symbol. >\n  let g:airline#extensions#whitespace#symbol = '!'\n<\n* configure which whitespace checks to enable. >\n  let g:airline#extensions#whitespace#checks = [ 'indent', 'trailing' ]\n<\n* configure the maximum number of lines where whitespace checking is enabled. >\n  let g:airline#extensions#whitespace#max_lines = 20000\n<\n* configure whether a message should be displayed. >\n  let g:airline#extensions#whitespace#show_message = 1\n<\n* configure the formatting of the warning messages. >\n  let g:airline#extensions#whitespace#trailing_format = 'trailing[%s]'\n  let g:airline#extensions#whitespace#mixed_indent_format = 'mixed-indent[%s]'\n<\n-------------------------------------                      *airline-tabline*\n* enable/disable enhanced tabline. >\n  let g:airline#extensions#tabline#enabled = 0\n<\n* enable/disable displaying buffers with a single tab. >\n  let g:airline#extensions#tabline#show_buffers = 1\n<\n* configure filename match rules to exclude from the tabline. >\n  let g:airline#extensions#tabline#excludes = []\n<\n* configure how numbers are calculated in tab mode. >\n  let g:airline#extensions#tabline#tab_nr_type = 0 \" # of splits (default)\n  let g:airline#extensions#tabline#tab_nr_type = 1 \" tab number\n<\n* enable/disable displaying tab number in tabs mode. >\n  let g:airline#extensions#tabline#show_tab_nr = 1\n\n* defines the name of a formatter for how buffer names are displayed. >\n  let g:airline#extensions#tabline#formatter = 'default'\n\n  \" here is how you can define a 'foo' formatter:\n  function! airline#extensions#tabline#foo#format(bufnr, buffers)\n    return fnamemodify(bufname(a:bufnr), ':t')\n  endfunction\n  let g:airline#extensions#tabline#formatter = 'foo'\n<\n  Note: the following variables are only used by the 'default' formatter.\n\n    * configure whether buffer numbers should be shown. >\n      let g:airline#extensions#tabline#buffer_nr_show = 0\n<\n    * configure how buffer numbers should be formatted with |printf|. >\n      let g:airline#extensions#tabline#buffer_nr_format = '%s: '\n<\n    * configure the formatting of filenames (see |filename-modifiers|). >\n      let g:airline#extensions#tabline#fnamemod = ':p:.'\n<\n    * configure collapsing parent directories in buffer name. >\n      let g:airline#extensions#tabline#fnamecollapse = 1\n\n  \" The `unique_tail` algorithm will display the tail of the filename, unless\n  \" there is another file of the same name, in which it will display it along\n  \" with the containing parent directory.\n  let g:airline#extensions#tabline#formatter = 'unique_tail'\n\n  \" The `unique_tail_improved` - another algorithm, that will smartly uniquify\n  \" buffers names with similar filename, suppressing common parts of paths.\n  let g:airline#extensions#tabline#formatter = 'unique_tail_improved'\n<\n* configure the minimum number of buffers needed to show the tabline. >\n  let g:airline#extensions#tabline#buffer_min_count = 0\n<\n  Note: this setting only applies to a single tab and when `show_buffers` is\n  true.\n\n* configure the minimum number of tabs needed to show the tabline. >\n  let g:airline#extensions#tabline#tab_min_count = 0\n<\n  Note: this setting only applies when `show_buffers` is false.\n\n* configure separators for the tabline only. >\n  let g:airline#extensions#tabline#left_sep = ''\n  let g:airline#extensions#tabline#left_alt_sep = ''\n  let g:airline#extensions#tabline#right_sep = ''\n  let g:airline#extensions#tabline#right_alt_sep = ''\n<\nNote: Enabling this extension will modify 'showtabline' and 'guioptions'.\n\n-------------------------------------                     *airline-tmuxline*\ntmuxline <https://github.com/edkolev/tmuxline.vim>\n\n* enable/disable tmuxline integration >\n  let g:airline#extensions#tmuxline#enabled = 0\n<\n* configure which mode colors should be used in tmux statusline >\n  let airline#extensions#tmuxline#color_template = 'normal' (default)\n  let airline#extensions#tmuxline#color_template = 'insert'\n  let airline#extensions#tmuxline#color_template = 'visual'\n  let airline#extensions#tmuxline#color_template = 'replace'\n<\n* if specified, setting this option will trigger writing to the file whenever the\n  airline theme is applied, i.e. when :AirlineTheme is executed and on vim\n  startup >\n  airline#extensions#tmuxline#snapshot_file = \"~/.tmux-statusline-colors.conf\"\n<\n-------------------------------------                   *airline-promptline*\npromptline <https://github.com/edkolev/promptline.vim>\n\n* configure the path to the snapshot .sh file. Mandatory option. The created\n  file should be sourced by the shell on login >\n  \" in .vimrc\n  airline#extensions#promptline#snapshot_file = \"~/.shell_prompt.sh\"\n\n  \" in .bashrc/.zshrc\n  [ -f ~/.shell_prompt.sh ] && source ~/.shell_prompt.sh\n<\n* enable/disable promptline integration >\n  let g:airline#extensions#promptline#enabled = 0\n<\n* configure which mode colors should be used in prompt >\n  let airline#extensions#promptline#color_template = 'normal' (default)\n  let airline#extensions#promptline#color_template = 'insert'\n  let airline#extensions#promptline#color_template = 'visual'\n  let airline#extensions#promptline#color_template = 'replace'\n<\n\n==============================================================================\nADVANCED CUSTOMIZATION                      *airline-advanced-customization*\n\nThe defaults will accomodate the mass majority of users with minimal\nconfiguration. However, if you want to reposition sections or contents you can\ndo so with built-in helper functions, which makes it possible to create\nsections in a more declarative style.\n\n-------------------------------------                        *airline-parts*\nA part is something that contains metadata that eventually gets rendered into\nthe statusline. You can define parts that contain constant strings or\nfunctions. Defining parts is needed if you want to use features like automatic\ninsertion of separators or hiding based on window width.\n\nFor example, this is how you would define a part function: >\n  call airline#parts#define_function('foo', 'GetFooText')\n<\nHere is how you would define a part that is visible only if the window width\ngreater than a minimum width. >\n  call airline#parts#define_minwidth('foo', 50)\n<\nParts can be configured to be visible conditionally. >\n  call airline#parts#define_condition('foo', 'getcwd() =~ \"work_dir\"')\n<\nNote: Part definitions are combinative; e.g. the two examples above modify the\nsame `foo` part.\n\nNote: Look at the source code and tests for the full API.\n\n-------------------------------------             *airline-predefined-parts*\nBefore is a list of parts that are predefined by vim-airline.\n\n* `mode`           displays the current mode\n* `iminsert`       displays the current insert method\n* `paste`          displays the paste indicator\n* `filetype`       displays the file type\n* `readonly`       displays the read only indicator\n* `file`           displays the filename and modified indicator\n* `ffenc`          displays the file format and encoding\n\nAnd the following are defined for their respective extensions:\n\n`hunks`, `branch`, `tagbar`, `syntastic`, `whitespace`\n\n-------------------------------------                      *airline-accents*\nAccents can be defined on any part, like so: >\n  call airline#parts#define_accent('foo', 'red')\n<\nThis will override the colors of that part by using what is defined in that\nparticular accent. In the above example, the `red` accent is used, which means\nregardless of which section the part is used in, it will have red foreground\ncolors instead of the section's default foreground color.\n\nThe following accents are defined by default. Themes can define their variants\nof the colors, but defaults will be provided if missing. >\n  bold, italic, red, green, blue, yellow, orange, purple\n<\nThe defaults configure the mode and line number parts to be bold, and the\nreadonly part to be red.\n\n-------------------------------------                     *airline-sections*\nOnce a part is defined, you can use helper functions to generate the\nstatuslines for each section. For example, to use the part above, we could\ndefine a section like this: >\n  function! AirlineInit()\n    let g:airline_section_a = airline#section#create(['mode', ' ', 'foo'])\n    let g:airline_section_b = airline#section#create_left(['ffenc','file'])\n    let g:airline_section_c = airline#section#create(['%{getcwd()}'])\n  endfunction\n  autocmd VimEnter * call AirlineInit()\n<\nThis will create a section with the `mode`, followed by a space, and our `foo`\npart in section `a`. Section `b` will have two parts with a left-side\nseparator. And section `c` will contain the current path. You may notice that\nthe space and cwd are not defined parts. For convenience, if a part of that\nkey does not exist, it will be inserted as is. The unit tests will be a good\nresource for possibilities.\n\nNote: The use of |VimEnter| is important, because most extensions are lazily\nloaded, so we must give them a chance to define their parts before we can use\nthem.\n\nNote: The `airline#section#create` function and friends will do its best to\ncreate a section with the appropriate separators, but it only works for\nfunction and text parts. Special 'statusline' items like %f or raw/undefined\nparts will not work as it is not possible to inspect their widths/contents\nbefore rendering to the statusline.\n\n==============================================================================\nFUNCREFS                                                  *airline-funcrefs*\n\nvim-airline internally uses funcrefs to integrate with third party plugins,\nand you can tap into this functionality to extend it for you needs. This is\nthe most powerful way to customize the statusline, and sometimes it may be\neasier to go this route than the above methods.\n\nEvery section can have two values. The default value is the global `g:`\nvariable which is used in the absense of a `w:` value. This makes it very easy\nto override only certain parts of the statusline by only defining window-local\nvariables for a subset of all sections.\n\n-------------------------------------                  *add_statusline_func*\nThe following is an example of how you can extend vim-airline to support a\nnew plugin. >\n  function! MyPlugin(...)\n    if &filetype == 'MyPluginFileType'\n      let w:airline_section_a = 'MyPlugin'\n      let w:airline_section_b = '%f'\n      let w:airline_section_c = '%{MyPlugin#function()}'\n      let g:airline_variable_referenced_in_statusline = 'foo'\n    endif\n  endfunction\n  call airline#add_statusline_func('MyPlugin')\n<\nNotice that only the left side of the statusline is overwritten. This means\nthe right side (the line/column numbers, etc) will be intact.\n\n-------------------------------------               *remove_statusline_func*\nYou can also remove a function as well, which is useful for when you want a\ntemporary override. >\n  call airline#remove_statusline_func('MyPlugin')\n<\n\n==============================================================================\nPIPELINE                                                  *airline-pipeline*\n\nSometimes you want to do more than just use overrides.  The statusline funcref\nis invoked and passed two arguments.  The first of these arguments is the\nstatusline builder.  You can use this to build completely custom statuslines\nto your liking.  Here is an example: >\n>\n  function! MyPlugin(...)\n    \" first variable is the statusline builder\n    let builder = a:1\n\n    \" WARNING: the API for the builder is not finalized and may change\n    call builder.add_section('Normal', '%f')\n    call builder.add_section('WarningMsg', '%{getcwd()}')\n    call builder.split()\n    call builder.add_section('airline_z', '%p%%')\n\n    \" tell the core to use the contents of the builder\n    return 1\n  endfunction\n<\nThe above example uses various some example highlight groups to demonstrate\nthat you can use any combination from the loaded colorscheme. However, if\nyou want colors to change between modes, you should use one of the section\nhighlight groups, e.g. `airline_a` and `airline_b`.\n\nThe second variable is the context, which is a dictionary containing various\nvalues such as whether the statusline is active or not, and the window number.\n>\n  context = {\n    'winnr': 'the window number for the statusline',\n    'active': 'whether the window is active or not',\n    'bufnr': 'the current buffer for this window',\n  }\n<\n-------------------------------------        *airline-pipeline-return-codes*\nThe pipeline accepts various return codes and can be used to determine the\nnext action.  The following are the supported codes: >\n   0   the default, continue on with the next funcref\n  -1   do not modify the statusline\n   1   modify the statusline with the current contents of the builder\n<\nNote: Any value other than 0 will halt the pipeline and prevent the next\nfuncref from executing.\n\n==============================================================================\nWRITING EXTENSIONS                              *airline-writing-extensions*\n\nFor contributions into the plugin, here are the following guidelines:\n\n1.  For simple 'filetype' checks, they can be added directly into the\n`extensions.vim` file.\n\n2.  Pretty much everything else should live as a separate file under the\n`extensions/` directory.\n\n  a.  Inside `extensions.vim`, add a check for some variable or command that\n      is always available (these must be defined in `plugin/`, and _not_\n      `autoload/` of the other plugin).  If it exists, then initialize the\n      extension. This ensures that the extension is loaded if and only if the\n      user has the other plugin installed.  Also, a check to\n      `airline#extensions#foo_plugin#enabled` should be performed to allow the\n      user to disable it.\n\n  b.  Configuration variables for the extension should reside in the\n      extension, e.g. `g:airline#extensions#foo_plugin#bar_variable`.\n\nSee the source of |example.vim| for documented code of how to write one.\nLooking at the other extensions is also a good resource.\n\n==============================================================================\nWRITING THEMES                                              *airline-themes*\n\nThemes are written \"close to the metal\" -- you will need to know some basic\nVimL syntax to write a theme, but if you've written in any programming\nlanguage before it will be easy to pick up.\n\nThe |dark.vim| theme fully documents this procedure and will guide you through\nthe process.  The |jellybeans.vim| theme is another example of how to write a\ntheme, but instead of manually declaring colors, it extracts the values from\nhighlight groups.\n\n==============================================================================\nTROUBLESHOOTING                                    *airline-troubleshooting*\n\nQ. There are no colors.\nA. You need to set up your terminal correctly.  For more details, see\n   <http://vim.wikia.com/wiki/256_colors_in_vim>.  Alternatively, if you want\n   to bypass the automatic detection of terminal colors, you can force Vim\n   into 256 color mode with this: >\n  set t_Co=256\n<\nQ. The statusline does not appear until I create a split.\nA. This is the default setting of 'laststatus'.  If you want it to appear all\n   the time, add the following to your vimrc: >\n  set laststatus=2\n<\nQ. Powerline symbols are not showing up.\nA. First, you must install patched powerline fonts. Second, you must enable\n   unicode in vim.  >\n  set encoding=utf-8\n<\nQ. There is a pause when leaving insert mode.\nA. Add the following to your vimrc.  >\n  set ttimeoutlen=50\n<\nQ. The colors look a little off for some themes.\nA. Certain themes are derived from the active colorscheme by extracting colors\n   from predefined highlight groups.  These airline themes will look good for\n   their intended matching colorschemes, but will be hit or miss when loaded\n   with other colorschemes.\n\n\nSolutions to other common problems can be found in the Wiki:\n<https://github.com/bling/vim-airline/wiki/FAQ>\n\n==============================================================================\nCONTRIBUTIONS                                        *airline-contributions*\n\nContributions and pull requests are welcome.\n\n==============================================================================\nLICENSE                                                    *airline-license*\n\nMIT License.  Copyright © 2013-2014 Bailey Ling.\n\n\n vim:tw=78:ts=8:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/vim-airline/plugin/airline.vim",
    "content": "\" MIT License. Copyright (c) 2013-2014 Bailey Ling.\n\" vim: et ts=2 sts=2 sw=2\n\nif &cp || v:version < 702 || (exists('g:loaded_airline') && g:loaded_airline)\n  finish\nendif\nlet g:loaded_airline = 1\n\n\" autocmd VimEnter * call airline#deprecation#check()\n\nlet s:airline_initialized = 0\nlet s:airline_theme_defined = 0\nfunction! s:init()\n  if !s:airline_initialized\n    let s:airline_initialized = 1\n\n    call airline#init#bootstrap()\n    call airline#extensions#load()\n    call airline#init#sections()\n\n    let s:airline_theme_defined = exists('g:airline_theme')\n    if s:airline_theme_defined || !airline#switch_matching_theme()\n      let g:airline_theme = get(g:, 'airline_theme', 'dark')\n      call airline#switch_theme(g:airline_theme)\n    endif\n  endif\nendfunction\n\nfunction! s:on_window_changed()\n  if pumvisible()\n    return\n  endif\n  call <sid>init()\n  call airline#update_statusline()\nendfunction\n\nfunction! s:on_colorscheme_changed()\n  call <sid>init()\n  if !s:airline_theme_defined\n    if airline#switch_matching_theme()\n      return\n    endif\n  endif\n\n  \" couldn't find a match, or theme was defined, just refresh\n  call airline#load_theme()\nendfunction\n\nfunction airline#cmdwinenter(...)\n  call airline#extensions#apply_left_override('Command Line', '')\nendfunction\n\nfunction! s:airline_toggle()\n  if exists(\"#airline\")\n    augroup airline\n      au!\n    augroup END\n    augroup! airline\n\n    if exists(\"s:stl\")\n      let &stl = s:stl\n    endif\n\n    silent doautocmd User AirlineToggledOff\n  else\n    let s:stl = &statusline\n    augroup airline\n      autocmd!\n\n      autocmd CmdwinEnter *\n            \\ call airline#add_statusline_func('airline#cmdwinenter')\n            \\ | call <sid>on_window_changed()\n      autocmd CmdwinLeave * call airline#remove_statusline_func('airline#cmdwinenter')\n\n      autocmd ColorScheme * call <sid>on_colorscheme_changed()\n      autocmd VimEnter,WinEnter,BufWinEnter,FileType,BufUnload,VimResized *\n            \\ call <sid>on_window_changed()\n\n      autocmd BufWritePost */autoload/airline/themes/*.vim\n            \\ exec 'source '.split(globpath(&rtp, 'autoload/airline/themes/'.g:airline_theme.'.vim', 1), \"\\n\")[0]\n            \\ | call airline#load_theme()\n    augroup END\n\n    silent doautocmd User AirlineToggledOn\n\n    if s:airline_initialized\n      call <sid>on_window_changed()\n    endif\n  endif\nendfunction\n\nfunction! s:get_airline_themes(a, l, p)\n  let files = split(globpath(&rtp, 'autoload/airline/themes/'.a:a.'*'), \"\\n\")\n  return map(files, 'fnamemodify(v:val, \":t:r\")')\nendfunction\nfunction! s:airline_theme(...)\n  if a:0\n    call airline#switch_theme(a:1)\n  else\n    echo g:airline_theme\n  endif\nendfunction\ncommand! -nargs=? -complete=customlist,<sid>get_airline_themes AirlineTheme call <sid>airline_theme(<f-args>)\ncommand! AirlineToggleWhitespace call airline#extensions#whitespace#toggle()\ncommand! AirlineToggle call <sid>airline_toggle()\ncommand! AirlineRefresh call airline#load_theme()\n\ncall <sid>airline_toggle()\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/t/airline.vim",
    "content": "let g:airline_theme = 'dark'\ncall airline#init#bootstrap()\ncall airline#init#sections()\nsource plugin/airline.vim\n\nfunction! MyFuncref(...)\n  call a:1.add_raw('hello world')\n  return 1\nendfunction\n\nfunction! MyIgnoreFuncref(...)\n  return -1\nendfunction\n\nfunction! MyAppend1(...)\n  call a:1.add_raw('hello')\nendfunction\n\nfunction! MyAppend2(...)\n  call a:1.add_raw('world')\nendfunction\n\ndescribe 'airline'\n  before\n    let g:airline_statusline_funcrefs = []\n  end\n\n  it 'should run user funcrefs first'\n    call airline#add_statusline_func('MyFuncref')\n    let &statusline = ''\n    call airline#update_statusline()\n    Expect airline#statusline(1) =~ 'hello world'\n  end\n\n  it 'should not change the statusline with -1'\n    call airline#add_statusline_funcref(function('MyIgnoreFuncref'))\n    let &statusline = 'foo'\n    call airline#update_statusline()\n    Expect &statusline == 'foo'\n  end\n\n  it 'should support multiple chained funcrefs'\n    call airline#add_statusline_func('MyAppend1')\n    call airline#add_statusline_func('MyAppend2')\n    call airline#update_statusline()\n    Expect airline#statusline(1) =~ 'helloworld'\n  end\n\n  it 'should allow users to redefine sections'\n    let g:airline_section_a = airline#section#create(['mode', 'mode'])\n    call airline#update_statusline()\n    Expect airline#statusline(1) =~ '%{airline#util#wrap(airline#parts#mode(),0)}%#airline_a#%#airline_a_bold#%{airline#util#wrap(airline#parts#mode(),0)}%#airline_a#'\n  end\n\n  it 'should remove funcrefs properly'\n    let c = len(g:airline_statusline_funcrefs)\n    call airline#add_statusline_func('MyIgnoreFuncref')\n    call airline#remove_statusline_func('MyIgnoreFuncref')\n    Expect len(g:airline_statusline_funcrefs) == c\n  end\n\n  it 'should overwrite the statusline with active and inactive splits'\n    wincmd s\n    Expect airline#statusline(1) !~ 'inactive'\n    Expect airline#statusline(2) =~ 'inactive'\n    wincmd c\n  end\n\n  it 'should collapse the inactive split if the variable is set true'\n    let g:airline_inactive_collapse = 1\n    wincmd s\n    Expect getwinvar(2, '&statusline') !~ 'airline#parts#mode'\n    wincmd c\n  end\n\n  it 'should not collapse the inactive split if the variable is set false'\n    let g:airline_inactive_collapse = 0\n    wincmd s\n    Expect getwinvar(2, '&statusline') != 'airline#parts#mode'\n    wincmd c\n  end\n\n  it 'should include check_mode'\n    Expect airline#statusline(1) =~ 'airline#check_mode'\n  end\nend\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/t/builder.vim",
    "content": "let g:airline_theme = 'dark'\ncall airline#init#bootstrap()\n\ndescribe 'active builder'\n  before\n    let s:builder = airline#builder#new({'active': 1})\n  end\n\n  it 'should start with an empty statusline'\n    let stl = s:builder.build()\n    Expect stl == ''\n  end\n\n  it 'should transition colors from one to the next'\n    call s:builder.add_section('Normal', 'hello')\n    call s:builder.add_section('NonText', 'world')\n    let stl = s:builder.build()\n    Expect stl =~ '%#Normal#hello%#Normal_to_NonText#>%#NonText#world'\n  end\n\n  it 'should split left/right sections'\n    call s:builder.split()\n    let stl = s:builder.build()\n    Expect stl =~ '%='\n  end\n\n  it 'after split, sections use the right separator'\n    call s:builder.split()\n    call s:builder.add_section('Normal', 'hello')\n    call s:builder.add_section('NonText', 'world')\n    let stl = s:builder.build()\n    Expect stl =~ '%#Normal#hello%#Normal_to_NonText#<%#NonText#world'\n  end\n\n  it 'should not repeat the same highlight group'\n    call s:builder.add_section('Normal', 'hello')\n    call s:builder.add_section('Normal', 'hello')\n    let stl = s:builder.build()\n    Expect stl == '%#Normal#hello>hello'\n  end\n\n  it 'should replace accent groups with the specified group'\n    call s:builder.add_section('Normal', '%#__accent_foo#hello')\n    let stl = s:builder.build()\n    Expect stl == '%#Normal#%#Normal_foo#hello'\n  end\n\n  it 'should replace two accent groups with correct groups'\n    call s:builder.add_section('Normal', '%#__accent_foo#hello%#__accent_bar#world')\n    let stl = s:builder.build()\n    Expect stl =~ '%#Normal_foo#hello%#Normal_bar#world'\n  end\n\n  it 'should special restore group should go back to previous group'\n    call s:builder.add_section('Normal', '%#__restore__#')\n    let stl = s:builder.build()\n    Expect stl !~ '%#__restore__#'\n    Expect stl =~ '%#Normal#'\n  end\nend\n\ndescribe 'inactive builder'\n  before\n    let s:builder = airline#builder#new({'active': 0})\n  end\n\n  it 'should transition colors from one to the next'\n    call s:builder.add_section('Normal', 'hello')\n    call s:builder.add_section('NonText', 'world')\n    let stl = s:builder.build()\n    Expect stl =~ '%#Normal_inactive#hello%#Normal_to_NonText_inactive#>%#NonText_inactive#world'\n  end\n\n  it 'should not render accents'\n    call s:builder.add_section('Normal', '%#__accent_foo#hello%#foo#foo%#__accent_bar#world')\n    let stl = s:builder.build()\n    Expect stl == '%#Normal_inactive#hello%#foo_inactive#fooworld'\n  end\nend\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/t/commands.vim",
    "content": "call airline#init#bootstrap()\ncall airline#init#sections()\n\nsource plugin/airline.vim\n\ndescribe 'commands'\n  it 'should toggle off and on'\n    execute 'AirlineToggle'\n    Expect exists('#airline') to_be_false\n    execute 'AirlineToggle'\n    Expect exists('#airline') to_be_true\n  end\n\n  it 'should toggle whitespace off and on'\n    call airline#extensions#load()\n    execute 'AirlineToggleWhitespace'\n    Expect exists('#airline_whitespace') to_be_false\n    execute 'AirlineToggleWhitespace'\n    Expect exists('#airline_whitespace') to_be_true\n  end\n\n  it 'should display theme name with no args'\n    execute 'AirlineTheme simple'\n    Expect g:airline_theme == 'simple'\n    execute 'AirlineTheme dark'\n    Expect g:airline_theme == 'dark'\n  end\n\n  it 'should have a refresh command'\n    Expect exists(':AirlineRefresh') to_be_true\n  end\nend\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/t/extensions_default.vim",
    "content": "let g:airline_theme = 'dark'\ncall airline#init#bootstrap()\ncall airline#init#sections()\nsource plugin/airline.vim\n\ndescribe 'default'\n  before\n    let s:builder = airline#builder#new({'active': 1})\n  end\n\n  it 'should use the layout'\n    let g:airline#extensions#default#layout = [\n          \\ [ 'c', 'a', 'b', 'warning' ],\n          \\ [ 'x', 'z', 'y' ]\n          \\ ]\n    call airline#extensions#default#apply(s:builder, { 'winnr': 1, 'active': 1 })\n    let stl = s:builder.build()\n    Expect stl =~ 'airline_c_to_airline_a'\n    Expect stl =~ 'airline_a_to_airline_b'\n    Expect stl =~ 'airline_b_to_airline_warning'\n    Expect stl =~ 'airline_x_to_airline_z'\n    Expect stl =~ 'airline_z_to_airline_y'\n  end\n\n  it 'should only render warning section in active splits'\n    wincmd s\n    Expect airline#statusline(1) =~ 'warning'\n    Expect airline#statusline(2) !~ 'warning'\n    wincmd c\n  end\nend\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/t/highlighter.vim",
    "content": "let g:airline_theme = 'dark'\n\ndescribe 'highlighter'\n  it 'should create separator highlight groups'\n    hi Foo1 ctermfg=1 ctermbg=2\n    hi Foo2 ctermfg=3 ctermbg=4\n    call airline#highlighter#add_separator('Foo1', 'Foo2', 0)\n    let hl = airline#highlighter#get_highlight('Foo1_to_Foo2')\n    Expect hl == [ '', '', '4', '2', '' ]\n  end\n\n  it 'should populate accent colors'\n    Expect exists('g:airline#themes#dark#palette.normal.airline_c_red') to_be_false\n    Expect hlID('airline_c_red') == 0\n    call airline#themes#patch(g:airline#themes#dark#palette)\n    call airline#highlighter#add_accent('red')\n    call airline#highlighter#highlight(['normal'])\n    Expect hlID('airline_c_red') != 0\n  end\nend\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/t/init.vim",
    "content": "let s:sections = ['a', 'b', 'c', 'gutter', 'x', 'y', 'z', 'warning']\n\nfunction! s:clear()\n  for key in s:sections\n    unlet! g:airline_section_{key}\n  endfor\nendfunction\n\ncall airline#init#bootstrap()\n\ndescribe 'init sections'\n  before\n    call s:clear()\n    call airline#init#sections()\n  end\n\n  after\n    call s:clear()\n  end\n\n  it 'section a should have mode, paste, iminsert'\n    Expect g:airline_section_a =~ 'mode'\n    Expect g:airline_section_a =~ 'paste'\n    Expect g:airline_section_a =~ 'iminsert'\n  end\n\n  it 'section b should be blank because no extensions are installed'\n    Expect g:airline_section_b == ''\n  end\n\n  it 'section c should be file'\n    Expect g:airline_section_c == '%<%f%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#'\n  end\n\n  it 'section x should be filetype'\n    Expect g:airline_section_x == '%{airline#util#wrap(airline#parts#filetype(),0)}'\n  end\n\n  it 'section y should be fenc and ff'\n    Expect g:airline_section_y =~ 'ff'\n    Expect g:airline_section_y =~ 'fenc'\n  end\n\n  it 'section z should be line numbers'\n    Expect g:airline_section_z =~ '%3p%%'\n    Expect g:airline_section_z =~ '%4l'\n    Expect g:airline_section_z =~ '%3c'\n  end\n\n  it 'should not redefine sections already defined'\n    for s in s:sections\n      let g:airline_section_{s} = s\n    endfor\n    call airline#init#bootstrap()\n    for s in s:sections\n      Expect g:airline_section_{s} == s\n    endfor\n  end\n\n  it 'all default statusline extensions should be blank'\n    Expect airline#parts#get('hunks').raw == ''\n    Expect airline#parts#get('branch').raw == ''\n    Expect airline#parts#get('tagbar').raw == ''\n    Expect airline#parts#get('syntastic').raw == ''\n    Expect airline#parts#get('eclim').raw == ''\n    Expect airline#parts#get('whitespace').raw == ''\n  end\nend\n\ndescribe 'init parts'\n  it 'should not redefine parts already defined'\n    call airline#parts#define_raw('linenr', 'bar')\n    call airline#init#sections()\n    Expect g:airline_section_z =~ 'bar'\n  end\nend\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/t/parts.vim",
    "content": "describe 'parts'\n  it 'overwrites existing values'\n    call airline#parts#define('foo', { 'test': '123' })\n    Expect airline#parts#get('foo').test == '123'\n    call airline#parts#define('foo', { 'test': '321' })\n    Expect airline#parts#get('foo').test == '321'\n  end\n\n  it 'can define a function part'\n    call airline#parts#define_function('func', 'bar')\n    Expect airline#parts#get('func').function == 'bar'\n  end\n\n  it 'can define a text part'\n    call airline#parts#define_text('text', 'bar')\n    Expect airline#parts#get('text').text == 'bar'\n  end\n\n  it 'can define a raw part'\n    call airline#parts#define_raw('raw', 'bar')\n    Expect airline#parts#get('raw').raw == 'bar'\n  end\n\n  it 'can define a minwidth'\n    call airline#parts#define_minwidth('mw', 123)\n    Expect airline#parts#get('mw').minwidth == 123\n  end\n\n  it 'can define a condition'\n    call airline#parts#define_condition('part', '1')\n    Expect airline#parts#get('part').condition == '1'\n  end\n\n  it 'can define a accent'\n    call airline#parts#define_accent('part', 'red')\n    Expect airline#parts#get('part').accent == 'red'\n  end\nend\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/t/section.vim",
    "content": "function! SectionSpec()\nendfunction\n\ndescribe 'section'\n  before\n    call airline#parts#define_text('text', 'text')\n    call airline#parts#define_raw('raw', 'raw')\n    call airline#parts#define_function('func', 'SectionSpec')\n  end\n\n  it 'should be able to reference default parts'\n    let s = airline#section#create(['paste'])\n    Expect s == '%{airline#util#wrap(airline#parts#paste(),0)}'\n  end\n\n  it 'should create sections with no separators'\n    let s = airline#section#create(['text', 'raw', 'func'])\n    Expect s == '%{airline#util#wrap(\"text\",0)}raw%{airline#util#wrap(SectionSpec(),0)}'\n  end\n\n  it 'should create left sections with separators'\n    let s = airline#section#create_left(['text', 'text'])\n    Expect s == '%{airline#util#wrap(\"text\",0)}%{airline#util#append(\"text\",0)}'\n  end\n\n  it 'should create right sections with separators'\n    let s = airline#section#create_right(['text', 'text'])\n    Expect s == '%{airline#util#prepend(\"text\",0)}%{airline#util#wrap(\"text\",0)}'\n  end\n\n  it 'should prefix with accent group if provided and restore afterwards'\n    call airline#parts#define('hi', {\n          \\ 'raw': 'hello',\n          \\ 'accent': 'red',\n          \\ })\n    let s = airline#section#create(['hi'])\n    Expect s == '%#__accent_red#hello%#__restore__#'\n  end\n\n  it 'should accent functions'\n    call airline#parts#define_function('hi', 'Hello')\n    call airline#parts#define_accent('hi', 'bold')\n    let s = airline#section#create(['hi'])\n    Expect s == '%#__accent_bold#%{airline#util#wrap(Hello(),0)}%#__restore__#'\n  end\n\n  it 'should parse out a section from the distro'\n    call airline#extensions#load()\n    let s = airline#section#create(['whitespace'])\n    Expect s =~ 'airline#extensions#whitespace#check'\n  end\n\n  it 'should use parts as is if they are not found'\n    let s = airline#section#create(['asdf', 'func'])\n    Expect s == 'asdf%{airline#util#wrap(SectionSpec(),0)}'\n  end\n\n  it 'should force add separators for raw and missing keys'\n    let s = airline#section#create_left(['asdf', 'raw'])\n    Expect s == 'asdf > raw'\n    let s = airline#section#create_left(['asdf', 'aaaa', 'raw'])\n    Expect s == 'asdf > aaaa > raw'\n    let s = airline#section#create_right(['raw', '%f'])\n    Expect s == 'raw < %f'\n    let s = airline#section#create_right(['%t', 'asdf', '%{getcwd()}'])\n    Expect s == '%t < asdf < %{getcwd()}'\n  end\n\n  it 'should empty out parts that do not pass their condition'\n    call airline#parts#define_text('conditional', 'conditional')\n    call airline#parts#define_condition('conditional', '0')\n    let s = airline#section#create(['conditional'])\n    Expect s == '%{0 ? airline#util#wrap(\"conditional\",0) : \"\"}'\n  end\nend\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/t/themes.vim",
    "content": "describe 'themes'\n  after\n    highlight clear Foo\n    highlight clear Normal\n  end\n\n  it 'should extract correct colors'\n    highlight Foo ctermfg=1 ctermbg=2\n    let colors = airline#themes#get_highlight('Foo')\n    Expect colors[2] == '1'\n    Expect colors[3] == '2'\n  end\n\n  it 'should extract from normal if colors unavailable'\n    highlight Normal ctermfg=100 ctermbg=200\n    highlight Foo ctermbg=2\n    let colors = airline#themes#get_highlight('Foo')\n    Expect colors[2] == '100'\n    Expect colors[3] == '2'\n  end\n\n  it 'should flip target group if it is reversed'\n    highlight Foo ctermbg=222 ctermfg=103 term=reverse\n    let colors = airline#themes#get_highlight('Foo')\n    Expect colors[2] == '222'\n    Expect colors[3] == '103'\n  end\n\n  it 'should pass args through correctly'\n    let hl = airline#themes#get_highlight('Foo', 'bold', 'italic')\n    Expect hl == ['', '', 0, 1, 'bold,italic']\n\n    let hl = airline#themes#get_highlight2(['Foo','bg'], ['Foo','fg'], 'italic', 'bold')\n    Expect hl == ['', '', 1, 0, 'italic,bold']\n  end\n\n  it 'should generate color map with mirroring'\n    let map = airline#themes#generate_color_map(\n          \\ [ 1, 1, 1, 1, '1' ],\n          \\ [ 2, 2, 2, 2, '2' ],\n          \\ [ 3, 3, 3, 3, '3' ],\n          \\ )\n    Expect map.airline_a[0] == 1\n    Expect map.airline_b[0] == 2\n    Expect map.airline_c[0] == 3\n    Expect map.airline_x[0] == 3\n    Expect map.airline_y[0] == 2\n    Expect map.airline_z[0] == 1\n  end\n\n  it 'should generate color map with full set of colors'\n    let map = airline#themes#generate_color_map(\n          \\ [ 1, 1, 1, 1, '1' ],\n          \\ [ 2, 2, 2, 2, '2' ],\n          \\ [ 3, 3, 3, 3, '3' ],\n          \\ [ 4, 4, 4, 4, '4' ],\n          \\ [ 5, 5, 5, 5, '5' ],\n          \\ [ 6, 6, 6, 6, '6' ],\n          \\ )\n    Expect map.airline_a[0] == 1\n    Expect map.airline_b[0] == 2\n    Expect map.airline_c[0] == 3\n    Expect map.airline_x[0] == 4\n    Expect map.airline_y[0] == 5\n    Expect map.airline_z[0] == 6\n  end\nend\n\n"
  },
  {
    "path": ".vim/bundle/vim-airline/t/util.vim",
    "content": "call airline#init#bootstrap()\n\nfunction! Util1()\n  let g:count += 1\nendfunction\nfunction! Util2()\n  let g:count += 2\nendfunction\nfunction! Util3(...)\n  let g:count = a:0\nendfunction\n\ndescribe 'util'\n  before\n    let g:count = 0\n  end\n\n  it 'has append wrapper function'\n    Expect airline#util#append('', 0) == ''\n    Expect airline#util#append('1', 0) == '  > 1'\n  end\n\n  it 'has prepend wrapper function'\n    Expect airline#util#prepend('', 0) == ''\n    Expect airline#util#prepend('1', 0) == '1 < '\n  end\n\n  it 'has getwinvar function'\n    Expect airline#util#getwinvar(1, 'asdf', '123') == '123'\n    call setwinvar(1, 'vspec', 'is cool')\n    Expect airline#util#getwinvar(1, 'vspec', '') == 'is cool'\n  end\n\n  it 'has exec funcrefs helper functions'\n    call airline#util#exec_funcrefs([function('Util1'), function('Util2')])\n    Expect g:count == 3\n\n    call airline#util#exec_funcrefs([function('Util3')], 1, 2, 3, 4)\n    Expect g:count == 4\n  end\n\n  it 'should ignore minwidth if less than 0'\n    Expect airline#util#append('foo', -1) == '  > foo'\n    Expect airline#util#prepend('foo', -1) == 'foo < '\n    Expect airline#util#wrap('foo', -1) == 'foo'\n  end\n\n  it 'should return empty if winwidth() > minwidth'\n    Expect airline#util#append('foo', 99999) == ''\n    Expect airline#util#prepend('foo', 99999) == ''\n    Expect airline#util#wrap('foo', 99999) == ''\n  end\nend\n\n"
  },
  {
    "path": ".vim/bundle/vim-bookmarks/.travis.yml",
    "content": "language: ruby\ncache: bundler\nrvm: 2.0.0\nscript: bundle exec rake ci\n"
  },
  {
    "path": ".vim/bundle/vim-bookmarks/CONTRIBUTING.md",
    "content": "# Contributing\n\nIf you'd like to contribute to the project, you can use the usual github pull-request flow:\n\n1. Fork the project\n2. Make your change/addition, preferably in a separate branch\n3. Test the new behaviour and make sure all existing tests pass\n4. Issue a pull request with a description of your feature/bugfix\n\n## Github Issues\n\nWhen reporting a bug make sure you search the existing github issues for the same/similar issues. If you find one, feel free to add a `+1` comment with any additional information that may help us solve the issue.\n\nWhen creating a new issue be sure to state the following:\n\n* Steps to reproduce the bug\n* The version of vim you are using\n* The version of vim-bookmarks you are using\n\n## Coding Conventions\n\n* Use 2 space indents\n* Don't use abbreviated keywords - e.g. use `endfunction`, not `endfun` (there's always room for more fun!)\n* Don't use `l:` prefixes for variables unless actually required (i.e. almost never)\n* Code for maintainability\n\n## Testing\n\nThis project uses [vim-flavor](https://github.com/kana/vim-flavor) and [vim-vspec](https://github.com/kana/vim-vspec) to test its behaviour. All logic is extracted into autoload files which are fully tested. The tests can be found in the `t` folder. The tests are written in vim script as well. Tests are also executed on Travis-CI to make sure there are no regressions.\n\nInstall bundler first:\n\n```\n$ gem install bundler\n```\n\nIf you already have the `bundle` command (check it out with `which bundle`), you don't need this step. Afterwards, it should be as simple as:\n\n```\n$ bundle install\n$ bundle exec vim-flavor test\n```\n"
  },
  {
    "path": ".vim/bundle/vim-bookmarks/Gemfile",
    "content": "source 'https://rubygems.org'\n\ngem 'rake'\ngem 'octokit'\ngem 'netrc'\ngem 'guard-shell'\ngem 'vim-flavor'\n"
  },
  {
    "path": ".vim/bundle/vim-bookmarks/Guardfile",
    "content": "guard :shell do\n  watch(/(autoload|plugin|t)\\/.+\\.vim$/) do |m|\n    `rake test`\n  end\nend\n"
  },
  {
    "path": ".vim/bundle/vim-bookmarks/LICENSE",
    "content": "The MIT License\n\nCopyright (c) 2014 Mattes Groeger\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": ".vim/bundle/vim-bookmarks/README.md",
    "content": "## vim-bookmarks [![Build Status](https://travis-ci.org/MattesGroeger/vim-bookmarks.svg)](https://travis-ci.org/MattesGroeger/vim-bookmarks) [![Release](http://img.shields.io/github/release/MattesGroeger/vim-bookmarks.svg)](https://github.com/MattesGroeger/vim-bookmarks/releases)\n\nThis vim plugin allows toggling bookmarks per line. A quickfix window gives access to all bookmarks. Annotations can be added as well. These are special bookmarks with a comment attached. They are useful for preparing code reviews. All bookmarks will be restored on the next startup.\n\n![Preview](https://raw.github.com/MattesGroeger/vim-bookmarks/master/preview.gif)\n\n#### Bright Colors Example\n\n[![Screenshot Bright Colors](https://raw.github.com/MattesGroeger/vim-bookmarks/master/screenshot-bright-small.png)](https://raw.github.com/MattesGroeger/vim-bookmarks/master/screenshot-bright.png)\n\n```vim\nhighlight BookmarkSign ctermbg=NONE ctermfg=160\nhighlight BookmarkLine ctermbg=194 ctermfg=NONE\nlet g:bookmark_sign = '♥'\nlet g:bookmark_highlight_lines = 1\n```\n\n### Features\n\n* Toggle bookmarks per line ⚑\n* Add annotations per line ☰\n* Navigate all bookmarks with quickfix window\n* Bookmarks will be restored on next startup\n* Fully customisable (signs, sign column, highlights, mappings)\n* Works independently from [vim marks](http://vim.wikia.com/wiki/Using_marks)\n\n## Installation\n\nBefore installation, please check your Vim supports signs by running `:echo has('signs')`.  `1` means you're all set; `0` means you need to install a Vim with signs support. If you're compiling Vim yourself you need the 'big' or 'huge' feature set. [MacVim][] supports signs.\n\nUse your favorite plugin manager:\n\n* [Pathogen][]\n  * `git clone https://github.com/MattesGroeger/vim-bookmarks.git ~/.vim/bundle/vim-bookmarks`\n* [Vundle][]\n  1. Add `Plugin 'MattesGroeger/vim-bookmarks'` to .vimrc\n  2. Run `:PluginInstall`\n* [NeoBundle][]\n  1. Add `NeoBundle 'MattesGroeger/vim-bookmarks'` to .vimrc\n  2. Run `:NeoBundleInstall`\n* [vim-plug][vimplug]\n  1. Add `Plug 'MattesGroeger/vim-bookmarks'` to .vimrc\n  2. Run `:PlugInstall`\n\n## Usage\n\nAfter installation you can directly start using it. You can do this by either using the default shortcuts or the commands:\n\n| Action                                          | Shortcut    | Command                      |\n|-------------------------------------------------|-------------|------------------------------|\n| Add/remove bookmark at current line             | `mm`        | `:ToggleBookmark`            |\n| Add/edit/remove annotation at current line      | `mi`        | `:Annotate <TEXT>`           |\n| Jump to next bookmark in buffer                 | `mn`        | `:NextBookmark`              |\n| Jump to previous bookmark in buffer             | `mp`        | `:PrevBookmark`              |\n| Show all bookmarks                              | `ma`        | `:ShowAllBookmarks`          |\n| Clear bookmarks in current buffer only          | `mc`        | `:ClearBookmarks`            |\n| Clear bookmarks in all buffers                  | `mx`        | `:ClearAllBookmarks`         |\n| Save all bookmarks to a file                    |             | `:SaveBookmarks <FILE_PATH>` |\n| Load bookmarks from a file                      |             | `:LoadBookmarks <FILE_PATH>` |\n\nYou can change the shortcuts as you like, just read on...\n\n## Customization\n\n### Key Bindings\n\nYou can overwrite any of the default mappings. Just put the following into your `~/.vimrc` and adjust as you like:\n\n```\nnmap <Leader><Leader> <Plug>ToggleBookmark\nnmap <Leader>i <Plug>Annotate\nnmap <Leader>a <Plug>ShowAllBookmarks\nnmap <Leader>j <Plug>NextBookmark\nnmap <Leader>k <Plug>PrevBookmark\nnmap <Leader>c <Plug>ClearBookmarks\nnmap <Leader>x <Plug>ClearAllBookmarks\n```\n\n### Colors\n\nOverwrite the default hightlight groups by adding this to your colorscheme or `.vimrc`:\n\n```\nhighlight BookmarkSign ctermbg=whatever ctermfg=whatever\nhighlight BookmarkAnnotationSign ctermbg=whatever ctermfg=whatever\nhighlight BookmarkLine ctermbg=whatever ctermfg=whatever\nhighlight BookmarkAnnotationLine ctermbg=whatever ctermfg=whatever\n```\n\n### Options\n\nPut any of the following options into your `~/.vimrc` in order to overwrite the default behaviour.\n\n| Option                                         | Default          | Description                                             |\n|------------------------------------------------|------------------|---------------------------------------------------------|\n| `let g:bookmark_sign = '>>'`                   | ⚑                | Sets bookmark icon for sign column                      |\n| `let g:bookmark_annotation_sign = '##'`        | ☰                | Sets bookmark annotation icon for sign column           |\n| `let g:bookmark_auto_save = 0`                 | 1                | Enables/disables automatic saving for bookmarks         |\n| `let g:bookmark_auto_save_file = '/bookmarks'` | ~/.vim-bookmarks | Sets file for auto saving                               |\n| `let g:bookmark_highlight_lines = 1`           | 0                | Enables/disables line highlighting                      |\n| `let g:bookmark_show_warning = 0`              | 1                | Enables/disables warning when clearing all bookmarks    |\n| `let g:bookmark_center = 1`                    | 0                | Enables/disables line centering when jumping to bookmark|\n\n## FAQ\n\n> Why are the colours in the sign column weird?\n\nYour colorscheme is configuring the `SignColumn` highlight group weirdly. To change that add this to your `.vimrc`: `highlight SignColumn ctermbg=whatever`.\n\n> What happens if I also use another plugin which uses signs (e.g. Syntastic)?\n\nVim only allows one sign per line. Therefore bookmarks will override any existing sign. When removing the bookmark the original sign will show up again. In other words vim-bookmarks won't remove another plugin's signs.\n\n> Why aren't any signs showing at all?\n\nMake sure your vim supports signs: `:echo has('signs')` should give `1`\n\n## Changelog\n\nSee the [release page](https://github.com/MattesGroeger/vim-bookmarks/releases) for all changes.\n\n## Credits & Contribution\n\nThis plugin was developed by [Mattes Groeger][blog] under the [MIT License][license]. Pull requests are very welcome.\n\nThe following plugins were a great inspiration to me:\n* [vmark.vim][vmark] by Michael Zhou\n* [vim-gitgutter][gitgutter] by Andrew Stewart\n\n\n  [pathogen]: https://github.com/tpope/vim-pathogen\n  [vundle]: https://github.com/gmarik/vundle\n  [neobundle]: https://github.com/Shougo/neobundle.vim\n  [vimplug]: https://github.com/MattesGroeger/vim-plug\n  [macvim]: http://code.google.com/p/macvim/\n  [license]: https://github.com/MattesGroeger/vim-bookmarks/blob/master/LICENSE\n  [blog]: http://blog.mattes-groeger.de\n  [vmark]: http://www.vim.org/scripts/script.php?script_id=4076\n  [gitgutter]: https://github.com/airblade/vim-gitgutter\n"
  },
  {
    "path": ".vim/bundle/vim-bookmarks/Rakefile",
    "content": "require 'rake/packagetask'\nrequire 'octokit'\n\nGIT_REPO = \"MattesGroeger/vim-bookmarks\"\nVIM_SCRIPT_URL = \"http://www.vim.org/scripts/add_script_version.php?script_id=4893\"\nLABELS = [\"feature\", \"enhancement\", \"bug\"]\n\ntask :default => [:release]\ntask :ci => [:dump, :test]\n\ndesc \"Dump version numbers\"\ntask :dump do\n  sh 'vim --version'\nend\n\ndesc \"Run tests\"\ntask :test do\n  sh \"bundle exec vim-flavor test\"\nend\n\ndesc \"Create release archive\"\ntask :release do\n  version = request_user_input(\"Which version do you want to release (0.1.0)?\")\n  file_path = create_zip(version)\n  if request_user_input(\"Create git release now? (y/n)\") == 'y'\n    upload_release(version, file_path)\n  end\nend\n\ndesc \"See the changelog for a specific version\"\ntask :changelog do\n  version = request_user_input(\"For which version (0.1.0)?\")\n  show_changelog(version)\nend\n\ndef create_zip(version)\n  file_path = \"release/vim-bookmarks-#{version}.zip\"\n  `mkdir -p release`\n  `zip -r #{file_path} . -i \"doc/*\" -i \"plugin/*\" -i \"autoload/*\" -i LICENSE`\n  file_path\nend\n\ndef upload_release(version, asset_path)\n  asset_name = asset_path.split(\"/\")[-1]\n\n  # login to github\n  @client = Octokit::Client.new(netrc: true)\n  @client.login\n\n  # get all milestones\n  milestones = @client.milestones(GIT_REPO)\n  milestone = milestones.select { |m|\n    m.title == version\n  }.first\n  return puts \"Unable to find milestone for version #{version}. Aborted!\" if !milestone\n\n  # abort if there are still open issues\n  return puts \"Found #{milestone.open_issues} open issues for milestone #{version}. Close them first!\" if milestone.open_issues > 0\n\n  # get change log via issues\n  issues = @client.issues(GIT_REPO, milestone: milestone.number, state: :closed)\n  changes = build_changelog(issues)\n\n  # get contributor sentence\n  thanks = contributor_sentence_since_last_release()\n\n  # show change log, get it confirmed by user (y/n)\n  changelog = changes.join\n  changelog << \"\\n#{thanks}\" unless thanks.nil?\n  puts \"> Changelog:\\n#{changelog}\\n\\n\"\n  return puts \"Aborted!\" if request_user_input(\"Do you want to create release #{version} with the above changelog? (y/n)\", \"n\").downcase != \"y\"\n\n  # create release\n  release = @client.create_release(GIT_REPO, version, name: \"vim-bookmarks-#{version}\", body: changelog)\n  puts \"> Created release #{release.name} (id: #{release.id})\\n\\n\"\n\n  # if release exists already:\n  # releases = @client.releases(GIT_REPO)\n  # release = releases.first\n\n  # upload asset\n  release_url = \"https://api.github.com/repos/#{GIT_REPO}/releases/#{release.id}\"\n  asset = @client.upload_asset(release_url, asset_path, content_type: 'application/zip', name: asset_name)\n  puts \"> Uploaded asset #{asset.name} (id: #{asset.id})\\n\\n\"\n\n  # close milestone\n  @client.update_milestone(GIT_REPO, milestone.number, state: :closed)\n  puts \"> Closed milestone #{version}. Done!\"\n\n  if request_user_input(\"Update script on vim.org now? (y/n)\", \"n\").downcase == \"y\"\n    `open \"#{VIM_SCRIPT_URL}\"`\n  end\nend\n\ndef show_changelog(version)\n  # login to github\n  @client = Octokit::Client.new(netrc: true)\n  @client.login\n\n  # get all milestones\n  milestones = @client.milestones(GIT_REPO) + @client.milestones(GIT_REPO, state: :closed)\n  milestone = milestones.select { |m|\n    m.title == version\n  }.first\n  return puts \"Unable to find milestone for version #{version}. Aborted!\" if !milestone\n\n  # get change log via issues\n  issues = @client.issues(GIT_REPO, milestone: milestone.number, state: :closed)\n\n  # show change log\n  puts \"\\nChangelog:\\n\\n#{build_changelog(issues).join}\\n\"\nend\n\ndef build_changelog(issues)\n  issues.map { |i|\n    label = (LABELS & i.labels.map { |l| l.name }).first\n    label_txt = label == \"bug\" ? \"bugfix\" : label\n    line = \" * [#{label_txt}] #{i.title} ##{i.number}\\n\" if label\n    {label: label, issue: i.number, line: line}\n  }.select { |f|\n    f[:label] != nil\n  }.sort { |a, b|\n    [LABELS.find_index(a[:label]),b[:issue]] <=> [LABELS.find_index(b[:label]),a[:issue]]\n  }.map { |e|\n    e[:line]\n  }\nend\n\ndef contributor_sentence_since_last_release()\n  releases = @client.releases(GIT_REPO)\n  since = releases.size > 0 ? releases.first.created_at : nil\n  contributors = contributors(since)\n  contributor_sentence(contributors)\nend\n\ndef contributors(from = nil, to = nil)\n\n  # Get all by default\n  from = Time.new(1).utc.iso8601 if from.nil?\n  to = Time.now.utc.iso8601 if to.nil?\n\n  # Get all commits since last release\n  commits = @client.commits(GIT_REPO, sha: :master, since: from, until: to)\n\n  # Get all collaborators\n  collaborators = @client.collaborators(GIT_REPO).map { |c|\n    c.login\n  }\n\n  # Find all authors that are not site_admin\n  contributor_map = commits.inject({}) { |hash, commit|\n    user = commit.author.login\n    if collaborators.index(user).nil?\n      change_count = @client.commit(GIT_REPO, commit.sha).stats.total\n      hash[user] = hash[user].nil? ? change_count : hash[user] + change_count\n    end\n    hash\n  }\n\n  # Sort them by number of changes (importance)\n  contributor_map.keys.sort { |a, b|\n    contributor_map[b] <=> contributor_map[a]\n  }.map { |c|\n    \"@#{c}\"\n  }\nend\n\ndef contributor_sentence(contributors)\n  if contributors.size == 0\n    return nil\n  elsif contributors.size == 1\n    authors = \"#{contributors.first} for the contribution\"\n  else\n    last = contributors.pop\n    authors = \"#{contributors.join(', ')} and #{last} who contributed\"\n  end\n  \"Thanks #{authors} to this release!\"\nend\n\ndef request_user_input(message, fallback = \"\")\n  STDOUT.puts message\n  input = STDIN.gets.strip.to_s\n  if input.empty?\n    if fallback.empty?\n      request_user_input(message) # try again\n    else\n      fallback.to_s\n    end\n  else\n    input.to_s\n  end\nend\n"
  },
  {
    "path": ".vim/bundle/vim-bookmarks/autoload/bm.vim",
    "content": "if !exists(\"g:line_map\")\n  let g:line_map = {}  \"  'line_nr'  => 'bookmark'\n  let g:sign_map = {}  \"  'sign_idx' => 'line_nr'\nendif\n\n\" Bookmark Model {{{\n\nfunction! bm#has_bookmarks_in_file(file)\n  if !has_key(g:line_map, a:file)\n    return 0\n  endif\n  return len(keys(g:line_map[a:file])) > 0\nendfunction\n\nfunction! bm#has_bookmark_at_line(file, line_nr)\n  if !has_key(g:line_map, a:file)\n    return 0\n  endif\n  return has_key(g:line_map[a:file], a:line_nr)\nendfunction\n\nfunction! bm#get_bookmark_by_line(file, line_nr)\n  return g:line_map[a:file][a:line_nr]\nendfunction\n\nfunction! bm#get_bookmark_by_sign(file, sign_idx)\n  let line_nr = g:sign_map[a:file][a:sign_idx]\n  return bm#get_bookmark_by_line(a:file, line_nr)\nendfunction\n\nfunction! bm#add_bookmark(file, sign_idx, line_nr, content, ...)\n  if !has_key(g:line_map, a:file)\n    let g:line_map[a:file] = {}\n    let g:sign_map[a:file] = {}\n  endif\n  let annotation = a:0 ==# 1 ? a:1 : \"\"\n  let entry = {'sign_idx': a:sign_idx, 'line_nr': a:line_nr, 'content': a:content, 'annotation': annotation}\n  let g:line_map[a:file][a:line_nr]  = entry\n  let g:sign_map[a:file][a:sign_idx] = a:line_nr\n  return entry\nendfunction\n\nfunction! bm#update_bookmark_for_sign(file, sign_idx, new_line_nr, new_content)\n  let bookmark = bm#get_bookmark_by_sign(a:file, a:sign_idx)\n  call bm#del_bookmark_at_line(a:file, bookmark['line_nr'])\n  call bm#add_bookmark(a:file, a:sign_idx, a:new_line_nr, a:new_content, bookmark['annotation'])\nendfunction\n\nfunction! bm#update_annotation(file, sign_idx, annotation)\n  let bookmark = bm#get_bookmark_by_sign(a:file, a:sign_idx)\n  let bookmark['annotation'] = a:annotation\nendfunction\n\nfunction! bm#next(file, current_line_nr)\n  let line_nrs = sort(bm#all_lines(a:file), \"bm#compare_lines\")\n  if empty(line_nrs)\n    return 0\n  endif\n  if a:current_line_nr >=# line_nrs[-1] || a:current_line_nr <# line_nrs[0]\n    return line_nrs[0] + 0\n  else\n    let idx = 0\n    let lines_count = len(line_nrs)\n    while idx <# lines_count-1\n      let cur_bookmark = line_nrs[idx]\n      let next_bookmark = line_nrs[idx+1]\n      if a:current_line_nr >=# cur_bookmark && a:current_line_nr <# next_bookmark\n        return next_bookmark + 0\n      endif\n      let idx = idx+1\n    endwhile\n  endif\n  return 0\nendfunction\n\nfunction! bm#prev(file, current_line_nr)\n  let line_nrs = sort(bm#all_lines(a:file), \"bm#compare_lines\")\n  if empty(line_nrs)\n    return 0\n  endif\n  let lines_count = len(line_nrs)\n  let idx = lines_count-1\n  if a:current_line_nr <=# line_nrs[0] || a:current_line_nr ># line_nrs[-1]\n    return line_nrs[idx] + 0\n  else\n    while idx >=# 0\n      let cur_bookmark = line_nrs[idx]\n      let next_bookmark = line_nrs[idx-1]\n      if a:current_line_nr <=# cur_bookmark && a:current_line_nr ># next_bookmark\n        return next_bookmark + 0\n      endif\n      let idx = idx-1\n    endwhile\n  endif\n  return 0\nendfunction\n\nfunction! bm#del_bookmark_at_line(file, line_nr)\n  let bookmark = bm#get_bookmark_by_line(a:file, a:line_nr)\n  unlet g:line_map[a:file][a:line_nr]\n  unlet g:sign_map[a:file][bookmark['sign_idx']]\n  if empty(g:line_map[a:file])\n    unlet g:line_map[a:file]\n    unlet g:sign_map[a:file]\n  endif\nendfunction\n\nfunction! bm#total_count()\n  return len(bm#location_list())\nendfunction\n\nfunction! bm#all_bookmarks_by_line(file)\n  if !has_key(g:line_map, a:file)\n    return {}\n  endif\n  return g:line_map[a:file]\nendfunction\n\nfunction! bm#all_lines(file)\n  if !has_key(g:line_map, a:file)\n    return []\n  endif\n  return keys(g:line_map[a:file])\nendfunction\n\nfunction! bm#location_list()\n  let files = sort(bm#all_files())\n  let locations = []\n  for file in files\n    let line_nrs = sort(bm#all_lines(file), \"bm#compare_lines\")\n    for line_nr in line_nrs\n      let bookmark = bm#get_bookmark_by_line(file, line_nr)\n      let content = bookmark['annotation'] !=# ''\n            \\ ? \"Annotation: \". bookmark['annotation']\n            \\ : (bookmark['content'] !=# \"\"\n            \\   ? bookmark['content']\n            \\   : \"empty line\")\n      call add(locations, file .\":\". line_nr .\":\". content)\n    endfor\n  endfor\n  return locations\nendfunction\n\nfunction! bm#all_files()\n  return keys(g:line_map)\nendfunction\n\nfunction! bm#del_all()\n  for file in bm#all_files()\n    for line_nr in bm#all_lines(file)\n      call bm#del_bookmark_at_line(file, line_nr)\n    endfor\n  endfor\nendfunction\n\nfunction! bm#serialize()\n  let file_version = \"let l:bm_file_version = 1\"\n  let sessions  = \"let l:bm_sessions = {'default': {\"\n  for file in bm#all_files()\n    let sessions .= \"'\". file .\"': [\"\n    for bm in values(bm#all_bookmarks_by_line(file))\n      let escaped_content = substitute(bm['content'], \"'\", \"''\", \"g\")\n      let annotation = bm['annotation'] !=# \"\" ? \", 'annotation': '\". bm['annotation'] .\"'\" : \"\"\n      let sessions .= \"{'sign_idx': \". bm['sign_idx'] .\", 'line_nr': \". bm['line_nr'] .\", 'content': '\". escaped_content .\"'\". annotation .\"},\"\n    endfor\n    let sessions .= \"],\"\n  endfor\n  let sessions .= \"}}\"\n  let current_session = \"let l:bm_current_session = 'default'\"\n  return [file_version, sessions, current_session]\nendfunction\n\nfunction! bm#deserialize(data)\n    exec join(a:data, \" | \")\n    let ses = l:bm_sessions[\"default\"]\n    let result = []\n    for file in keys(ses)\n      for bm in ses[file]\n        let annotation = has_key(bm, 'annotation') ? bm['annotation'] : ''\n         call add(result, \n            \\ extend(\n              \\ copy(\n                \\ bm#add_bookmark(file, bm['sign_idx'], bm['line_nr'], bm['content'], annotation)\n              \\ ),\n              \\ {'file': file}\n            \\ ))\n      endfor\n    endfor\n    return result\nendfunction\n\n\" }}}\n\n\n\" Private {{{\n\nfunction! bm#compare_lines(line_str1, line_str2)\n  let line1 = str2nr(a:line_str1)\n  let line2 = str2nr(a:line_str2)\n  return line1 ==# line2 ? 0 : line1 > line2 ? 1 : -1\nendfunc\n\n\" }}}\n"
  },
  {
    "path": ".vim/bundle/vim-bookmarks/autoload/bm_sign.vim",
    "content": "if !exists(\"g:bm_sign_init\")\n  let g:bm_sign_init = 0\nendif\n\n\" Sign {{{\n\nfunction! bm_sign#lazy_init()\n  if g:bm_sign_init ==# 0\n    call bm_sign#init()\n    let g:bm_sign_init = 1\n  endif\nendfunction\n\nfunction! bm_sign#init()\n  call bm_sign#define_highlights()\n  sign define Bookmark texthl=BookmarkSign\n  sign define BookmarkAnnotation texthl=BookmarkAnnotationSign\n  execute \"sign define Bookmark text=\". g:bookmark_sign\n  execute \"sign define BookmarkAnnotation text=\". g:bookmark_annotation_sign\n  if g:bookmark_highlight_lines\n    sign define Bookmark linehl=BookmarkLine\n    sign define BookmarkAnnotation linehl=BookmarkAnnotationLine\n  else\n    sign define Bookmark linehl=\n    sign define BookmarkAnnotation linehl=\n  endif\nendfunction\n\nfunction! bm_sign#define_highlights()\n  highlight BookmarkSignDefault ctermfg=33 ctermbg=NONE\n  highlight BookmarkAnnotationSignDefault ctermfg=28 ctermbg=NONE\n  highlight BookmarkLineDefault ctermfg=232 ctermbg=33\n  highlight BookmarkAnnotationLineDefault ctermfg=232 ctermbg=28\n  highlight default link BookmarkSign BookmarkSignDefault\n  highlight default link BookmarkAnnotationSign BookmarkAnnotationSignDefault\n  highlight default link BookmarkLine BookmarkLineDefault\n  highlight default link BookmarkAnnotationLine BookmarkAnnotationLineDefault\nendfunction\n\nfunction! bm_sign#add(file, line_nr, is_annotation)\n  call bm_sign#lazy_init()\n  let sign_idx = g:bm_sign_index\n  call bm_sign#add_at(a:file, sign_idx, a:line_nr, a:is_annotation)\n  return sign_idx\nendfunction\n\n\" add sign with certain index\nfunction! bm_sign#add_at(file, sign_idx, line_nr, is_annotation)\n  call bm_sign#lazy_init()\n  let name = a:is_annotation ==# 1 ? \"BookmarkAnnotation\" : \"Bookmark\"\n  execute \"sign place \". a:sign_idx .\" line=\" . a:line_nr .\" name=\". name .\" file=\". a:file\n  if (a:sign_idx >=# g:bm_sign_index)\n    let g:bm_sign_index = a:sign_idx + 1\n  endif\nendfunction\n\nfunction! bm_sign#update_at(file, sign_idx, line_nr, is_annotation)\n  call bm_sign#del(a:file, a:sign_idx)\n  call bm_sign#add_at(a:file, a:sign_idx, a:line_nr, a:is_annotation)\nendfunction\n\nfunction! bm_sign#del(file, sign_idx)\n  call bm_sign#lazy_init()\n  try\n    execute \"sign unplace \". a:sign_idx .\" file=\". a:file\n  catch\n  endtry\nendfunction\n\n\" Returns dict with {'sign_idx': 'line_nr'}\nfunction! bm_sign#lines_for_signs(file)\n  call bm_sign#lazy_init()\n  let bufnr = bufnr(a:file)\n  let signs_raw = util#redir_execute(\":sign place file=\". a:file)\n  let lines = split(signs_raw, \"\\n\")\n  let result = {}\n  for line in lines\n    let results = matchlist(line, 'line=\\(\\d\\+\\)\\W\\+id=\\(\\d\\+\\)\\W\\+name=bookmark\\c')\n    if len(results) ># 0\n      let result[results[2]] = results[1]\n    endif\n  endfor\n  return result\nendfunction\n\n\" }}}\n"
  },
  {
    "path": ".vim/bundle/vim-bookmarks/autoload/util.vim",
    "content": "function! util#redir_execute(command)\n  redir => output\n  silent execute a:command\n  redir END\n  return substitute(output, '^\\n', '\\1', '')\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-bookmarks/doc/bookmarks.txt",
    "content": "*bookmarks.txt*                    A Vim plugin for using line-based bookmarks.\n\n\n                                Vim Bookmarks\n\n\nAuthor:            Mattes Groeger <http://blog.mattes-groeger.de/>\nPlugin Homepage:   <https://github.com/MattesGroeger/vim-bookmarks>\n\n===============================================================================\nCONTENTS                                                    *BookmarksContents*\n\n  1.  Introduction ................. |BookmarksIntroduction|\n  2.  Installation ................. |BookmarksInstallation|\n  3.  Usage ........................ |BookmarksUsage|\n  4.  Commands ..................... |BookmarksCommands|\n  5.  FAQ .......................... |BookmarksFAQ|\n\n===============================================================================\n1. INTRODUCTION                                         *BookmarksIntroduction*\n                                                                    *Bookmarks*\n\nThis vim plugin allows toggling bookmarks per line. A quickfix window gives\naccess to all bookmarks. Annotations can be added as well. These are special\nbookmarks with a comment attached. They are useful for preparing code reviews.\nAll bookmarks will be restored on the next startup.\n\n===============================================================================\n2. INSTALLATION                                         *BookmarksInstallation*\n\nUse your favorite plugin manager:\n\nPathogen:\n>\n  git clone https://github.com/MattesGroeger/vim-bookmarks.git \\\n            ~/.vim/bundle/vim-bookmarks\n<\n\nVundle:\n  1. Add Plugin 'MattesGroeger/vim-bookmarks' to .vimrc\n  2. Run :PluginInstall\n\nNeoBundle:\n  1. Add NeoBundle 'MattesGroeger/vim-bookmarks' to .vimrc\n  2. Run :NeoBundleInstall\n\nvim-plug:\n  1. Add Plug 'MattesGroeger/vim-bookmarks' to .vimrc\n  2. Run :PlugInstall\n\n===============================================================================\n3. USAGE                                                       *BookmarksUsage*\n\nYou don't have to do anything: it just works.\n\n===============================================================================\n4. COMMANDS                                                 *BookmarksCommands*\n\nCommands for using Bookmarks\n\n  :ToggleBookmark                                             *:ToggleBookmark*\n      Add or remove bookmark at current line\n\n  :Annotate <TEXT>                                                  *:Annotate*\n      Add/edit/remove annotation at current line\n\n  :NextBookmark                                                 *:NextBookmark*\n      Jump to the next bookmark downwards\n\n  :PrevBookmark                                                 *:PrevBookmark*\n      Jump to the next bookmark upwards\n\n  :ShowAllBookmarks                                         *:ShowAllBookmarks*\n      Show bookmarks across all buffers in new window\n\n  :ClearBookmarks                                             *:ClearBookmarks*\n      Removes bookmarks for current buffer\n\n  :ClearAllBookmarks                                       *:ClearAllBookmarks*\n      Removes bookmarks for all buffer\n\n  :SaveBookmarks <FILE_PATH>                                   *:SaveBookmarks*\n      Saves all bookmarks to a file so you can load them back in later\n\n  :LoadBookmarks <FILE_PATH>                                   *:LoadBookmarks*\n      Loads bookmarks from a file (see :SaveBookmarks)\n\n===============================================================================\n5. CUSTOMISATION                                       *BookmarksCustomisation*\n\nYou can customise:\n\n- The sign column's colours\n- The signs' colours and symbols\n- Line highlights\n- Key mappings\n- Whether or not line highlighting is on (defaults to off)\n\nPlease note that vim-bookmarks won't override any colours or highlights you've\nset in your colorscheme.\n\nSIGN COLUMN\n\nThe background colour of the sign column is controlled by the |hlSignColumn|\nhighlight group.  This will be either set in your colorscheme or Vim's default.\n\nTo find out where it's set, and to what it's set, use:\n>\n  :verbose highlight SignColumn\n<\n\nTo change your sign column's appearance, update your colorscheme or |vimrc|\nlike this:\n\n  Desired appearance                  Command ~\n  Same as line number column          highlight clear SignColumn\n  User-defined (terminal Vim)         highlight SignColumn ctermbg={whatever}\n  User-defined (graphical Vim)        highlight SignColumn guibg={whatever}\n\nSIGNS' COLOURS AND SYMBOLS\n\nTo customise the colours, set up the following highlight groups in your\ncolorscheme or |vimrc|:\n>\n  BookmarkSign            \" the sign\n  BookmarkAnnotationSign  \" the annotation sign\n<\n\nYou can either set these with `highlight BookmarkSign {key}={arg}...` or link\nthem to existing highlight groups with, say:\n>\n  highlight link BookmarkSign Todo\n<\n\nTo customise the symbols, add the following to your |vimrc|:\n>\n  let g:bookmark_sign = '>>'\n  let g:bookmark_annotation_sign = '##'\n<\n\nLINE HIGHLIGHTS\n\nSimilarly to the signs' colours, set up the following highlight group in your\ncolorscheme or |vimrc|:\n>\n  BookmarkLine            \" the highlighted line\n  BookmarkAnnotationLine  \" the highlighted annotation line\n<\n\nKEY MAPPINGS\n\nTo change the default keys:\n>\n  nmap <Leader><Leader> <Plug>ToggleBookmark\n  nmap <Leader>i <Plug>Annotate\n  nmap <Leader>a <Plug>ShowAllBookmarks\n  nmap <Leader>j <Plug>NextBookmark\n  nmap <Leader>k <Plug>PrevBookmark\n  nmap <Leader>c <Plug>ClearBookmarks\n  nmap <Leader>x <Plug>ClearAllBookmarks\n<\n\nMORE OPTIONS\n\nChange the following options in your |vimrc| to customize the plugin behaviour.\n\nDisable auto saving (default 1):\n\n>\n  let g:bookmark_auto_save = 0\n<\n\nChange file for auto saving (default ~/.vim-bookmarks):\n\n>\n  let g:bookmark_auto_save_file = '/tmp/my_bookmarks'\n<\n\nTurn on line highlighting (default 0):\n\n>\n  let g:bookmark_highlight_lines = 1\n<\n\nTurn off the warning when clearing all bookmarks (default 1):\n\n>\n  let g:bookmark_show_warning = 0\n<\n\nTurn on vertical line centering when jumping to bookmark (default 0):\n\n>\n  let g:bookmark_center = 1\n<\n\n===============================================================================\n6. FAQ                                                           *BookmarksFAQ*\n\na. Why are the colours in the sign column weird?\n\n  Your colorscheme is configuring the |hl-SignColumn| highlight group weirdly.\n  Please see |BookmarksCustomisation| on customising the sign column.\n\nb. What happens if I also use another plugin which uses signs (e.g. Syntastic)?\n\n  Vim only allows one sign per line. Therefore bookmarks will override any\n  existing sign. When removing the bookmark the original sign will show up\n  again. In other words vim-bookmarks won't remove another plugin's signs.\n\nc. Why aren't any signs showing at all?\n\n  Make sure your vim supports signs. This should return \"1\":\n>\n  :echo has('signs')\n<\n"
  },
  {
    "path": ".vim/bundle/vim-bookmarks/plugin/bookmark.vim",
    "content": "if exists('g:bm_has_any') || !has('signs') || &cp\n  finish\nendif\nlet g:bm_has_any = 0\nlet g:bm_sign_index = 9500\n\n\" Configuration {{{\n\nfunction! s:set(var, default)\n  if !exists(a:var)\n    if type(a:default)\n      execute 'let' a:var '=' string(a:default)\n    else\n      execute 'let' a:var '=' a:default\n    endif\n  endif\nendfunction\n\ncall s:set('g:bookmark_highlight_lines',  0 )\ncall s:set('g:bookmark_sign',            '⚑')\ncall s:set('g:bookmark_annotation_sign', '☰')\ncall s:set('g:bookmark_show_warning',     1 )\ncall s:set('g:bookmark_auto_save',        1 )\ncall s:set('g:bookmark_center',           0 )\ncall s:set('g:bookmark_auto_save_file',   $HOME .'/.vim-bookmarks')\n\nif g:bookmark_auto_save ==# 1\n  augroup bm_auto_save\n    autocmd!\n    autocmd VimEnter * call LoadBookmarks(g:bookmark_auto_save_file, 1)\n    autocmd VimLeave * call SaveBookmarks(g:bookmark_auto_save_file)\n    autocmd BufWinEnter * call s:add_missing_signs(expand(\"<afile>:p\"))\n  augroup END\nendif\n\n\" }}}\n\n\n\" Commands {{{\n\nfunction! ToggleBookmark()\n  call s:refresh_line_numbers()\n  let file = expand(\"%:p\")\n  if file ==# \"\"\n    return\n  endif\n  let current_line = line('.')\n  if bm#has_bookmark_at_line(file, current_line)\n    call s:bookmark_remove(file, current_line)\n    echo \"Bookmark removed\"\n  else\n    call s:bookmark_add(file, current_line)\n    echo \"Bookmark added\"\n  endif\nendfunction\ncommand! ToggleBookmark call ToggleBookmark()\n\nfunction! Annotate(...)\n  call s:refresh_line_numbers()\n  let file = expand(\"%:p\")\n  if file ==# \"\"\n    return\n  endif\n\n  let current_line = line('.')\n  let has_bm = bm#has_bookmark_at_line(file, current_line)\n  let bm = has_bm ? bm#get_bookmark_by_line(file, current_line) : 0\n  let old_annotation = has_bm ? bm['annotation'] : \"\"\n  let new_annotation = a:0 ># 0 ? a:1 : \"\"\n\n  \" Get annotation from user input if not passed in\n  if new_annotation ==# \"\"\n    let input_msg = old_annotation !=# \"\" ? \"Edit\" : \"Enter\"\n    let new_annotation = input(input_msg .\" annotation: \", old_annotation)\n    execute \":redraw!\"\n  endif\n\n  \" Nothing changed, bail out\n  if new_annotation ==# \"\" && old_annotation ==# new_annotation\n    return\n\n  \" Update annotation\n  elseif has_bm\n    call bm#update_annotation(file, bm['sign_idx'], new_annotation)\n    let result_msg = (new_annotation ==# \"\")\n          \\ ? \"removed\"\n          \\ : old_annotation !=# \"\"\n          \\   ? \"updated: \". new_annotation\n          \\   : \"added: \". new_annotation\n    call bm_sign#update_at(file, bm['sign_idx'], bm['line_nr'], bm['annotation'] !=# \"\")\n    echo \"Annotation \". result_msg\n\n  \" Create bookmark with annotation\n  elseif new_annotation !=# \"\"\n    call s:bookmark_add(file, current_line, new_annotation)\n    echo \"Bookmark added with annotation: \". new_annotation\n  endif\nendfunction\ncommand! -nargs=* Annotate call Annotate(<q-args>, 0)\n\nfunction! ClearBookmarks()\n  call s:refresh_line_numbers()\n  let file = expand(\"%:p\")\n  let lines = bm#all_lines(file)\n  for line_nr in lines\n    call s:bookmark_remove(file, line_nr)\n  endfor\n  echo \"Bookmarks removed\"\nendfunction\ncommand! ClearBookmarks call ClearBookmarks()\n\nfunction! ClearAllBookmarks()\n  call s:refresh_line_numbers()\n  let files = bm#all_files()\n  let file_count = len(files)\n  let delete = 1\n  let in_multiple_files = file_count ># 1\n  let supports_confirm = has(\"dialog_con\") || has(\"dialog_gui\")\n  if (in_multiple_files && g:bookmark_show_warning ==# 1 && supports_confirm)\n    let delete = confirm(\"Delete \". bm#total_count() .\" bookmarks in \". file_count . \" buffers?\", \"&Yes\\n&No\")\n  endif\n  if (delete ==# 1)\n    call s:remove_all_bookmarks()\n    execute \":redraw!\"\n    echo \"All bookmarks removed\"\n  endif\nendfunction\ncommand! ClearAllBookmarks call ClearAllBookmarks()\n\nfunction! NextBookmark()\n  call s:refresh_line_numbers()\n  call s:jump_to_bookmark('next')\nendfunction\ncommand! NextBookmark call NextBookmark()\n\nfunction! PrevBookmark()\n  call s:refresh_line_numbers()\n  call s:jump_to_bookmark('prev')\nendfunction\ncommand! PrevBookmark call PrevBookmark()\n\nfunction! ShowAllBookmarks()\n  call s:refresh_line_numbers()\n  let oldformat = &errorformat    \" backup original format\n  let &errorformat = \"%f:%l:%m\"   \" custom format for bookmarks\n  cgetexpr bm#location_list()\n  copen\n  let &errorformat = oldformat    \" re-apply original format\nendfunction\ncommand! ShowAllBookmarks call ShowAllBookmarks()\n\nfunction! SaveBookmarks(target_file)\n  call s:refresh_line_numbers()\n  let serialized_bookmarks = bm#serialize()\n  call writefile(serialized_bookmarks, a:target_file)\n  echo \"All bookmarks saved\"\nendfunction\ncommand! -nargs=1 SaveBookmarks call SaveBookmarks(<f-args>)\n\nfunction! LoadBookmarks(target_file, startup)\n  let supports_confirm = has(\"dialog_con\") || has(\"dialog_gui\")\n  let has_bookmarks = bm#total_count() ># 0\n  let confirmed = 1\n  if (supports_confirm && has_bookmarks)\n    let confirmed = confirm(\"Do you want to override your \". bm#total_count() .\" bookmarks?\", \"&Yes\\n&No\")\n  endif\n  if (confirmed ==# 1)\n    call s:remove_all_bookmarks()\n    try\n      let data = readfile(a:target_file)\n      let new_entries = bm#deserialize(data)\n      if !a:startup\n        for entry in new_entries\n          call bm_sign#add_at(entry['file'], entry['sign_idx'], entry['line_nr'], entry['annotation'] !=# \"\")\n        endfor\n        echo \"Bookmarks loaded\"\n      endif\n    catch\n      if !a:startup\n        echo \"Failed to load/parse file\"\n      endif\n    endtry\n  endif\nendfunction\ncommand! -nargs=1 LoadBookmarks call LoadBookmarks(<f-args>, 0)\n\n\" }}}\n\n\n\" Private {{{\n\nfunction! s:lazy_init()\n  if g:bm_has_any ==# 0\n    augroup bm_refresh\n      autocmd!\n      autocmd ColorScheme * call bm_sign#define_highlights()\n      autocmd BufLeave * call s:refresh_line_numbers()\n    augroup END\n    let g:bm_has_any = 1\n  endif\nendfunction\n\nfunction! s:refresh_line_numbers()\n  call s:lazy_init()\n  let file = expand(\"%:p\")\n  if file ==# \"\" || !bm#has_bookmarks_in_file(file)\n    return\n  endif\n  let bufnr = bufnr(file)\n  let sign_line_map = bm_sign#lines_for_signs(file)\n  for sign_idx in keys(sign_line_map)\n    let line_nr = sign_line_map[sign_idx]\n    let content = getbufline(bufnr, line_nr)\n    call bm#update_bookmark_for_sign(file, sign_idx, line_nr, content[0])\n  endfor\nendfunction\n\nfunction! s:bookmark_add(file, line_nr, ...)\n  let annotation = (a:0 ==# 1) ? a:1 : \"\"\n  let sign_idx = bm_sign#add(a:file, a:line_nr, annotation !=# \"\")\n  call bm#add_bookmark(a:file, sign_idx, a:line_nr, getline(a:line_nr), annotation)\nendfunction\n\nfunction! s:bookmark_remove(file, line_nr)\n  let bookmark = bm#get_bookmark_by_line(a:file, a:line_nr)\n  call bm_sign#del(a:file, bookmark['sign_idx'])\n  call bm#del_bookmark_at_line(a:file, a:line_nr)\nendfunction\n\nfunction! s:jump_to_bookmark(type)\n  let file = expand(\"%:p\")\n  let line_nr = bm#{a:type}(file, line(\".\"))\n  if line_nr ==# 0\n    echo \"No bookmarks found\"\n  else\n    call cursor(line_nr, 1)\n    normal! ^\n    if g:bookmark_center ==# 1\n      normal! zz\n    endif\n    let bm = bm#get_bookmark_by_line(file, line_nr)\n    let annotation = bm['annotation'] !=# \"\" ? \" (\". bm['annotation'] . \")\" : \"\"\n    execute \":redraw!\"\n    echo \"Jumped to bookmark\". annotation\n  endif\nendfunction\n\nfunction! s:remove_all_bookmarks()\n  let files = bm#all_files()\n  for file in files\n    let lines = bm#all_lines(file)\n    for line_nr in lines\n      call s:bookmark_remove(file, line_nr)\n    endfor\n  endfor\nendfunction\n\n\" should only be called from autocmd!\nfunction! s:add_missing_signs(file)\n  let bookmarks = values(bm#all_bookmarks_by_line(a:file))\n  for bookmark in bookmarks\n    call bm_sign#add_at(a:file, bookmark['sign_idx'], bookmark['line_nr'], bookmark['annotation'] !=# \"\")\n  endfor\nendfunction\n\n\" }}}\n\n\n\" Maps {{{\n\nfunction! s:register_mapping(command, shortcut)\n  execute \"nnoremap <silent> <Plug>\". a:command .\" :\". a:command .\"<CR>\"\n  if !hasmapto(\"<Plug>\". a:command) && maparg(a:shortcut, 'n') ==# ''\n    execute \"nmap \". a:shortcut .\" <Plug>\". a:command\n  endif\nendfunction\n\ncall s:register_mapping('ShowAllBookmarks',  'ma')\ncall s:register_mapping('ToggleBookmark',    'mm')\ncall s:register_mapping('Annotate',          'mi')\ncall s:register_mapping('NextBookmark',      'mn')\ncall s:register_mapping('PrevBookmark',      'mp')\ncall s:register_mapping('ClearBookmarks',    'mc')\ncall s:register_mapping('ClearAllBookmarks', 'mx')\n\n\" }}}\n"
  },
  {
    "path": ".vim/bundle/vim-bookmarks/t/bm_sign_spec.vim",
    "content": "let g:bm_sign_index = 1\nlet g:bookmark_sign = 'xy'\nlet g:bookmark_annotation_sign = 'yz'\nlet g:bookmark_highlight_lines = 0\n\ndescribe 'with uninitialized signs'\n\n  it 'should initialize'\n    call bm_sign#init()\n\n    Expect g:bm_sign_index ==# 1\n    Expect util#redir_execute(\":sign list Bookmark\") ==#\n          \\ \"sign Bookmark text=xy linehl= texthl=BookmarkSign\"\n    Expect util#redir_execute(\":sign list BookmarkAnnotation\") ==#\n          \\ \"sign BookmarkAnnotation text=yz linehl= texthl=BookmarkAnnotationSign\"\n    Expect split(util#redir_execute(\":highlight BookmarkSignDefault\"), '\\n')[0] ==#\n          \\ \"BookmarkSignDefault xxx ctermfg=33\"\n    Expect split(util#redir_execute(\":highlight BookmarkAnnotationSignDefault\"), '\\n')[0] ==#\n          \\ \"BookmarkAnnotationSignDefault xxx ctermfg=28\"\n    Expect split(util#redir_execute(\":highlight BookmarkLineDefault\"), '\\n')[0] ==#\n          \\ \"BookmarkLineDefault xxx ctermfg=232 ctermbg=33\"\n    Expect split(util#redir_execute(\":highlight BookmarkAnnotationLineDefault\"), '\\n')[0] ==#\n          \\ \"BookmarkAnnotationLineDefault xxx ctermfg=232 ctermbg=28\"\n  end\n\n  it 'should initialize with line highlight'\n    let g:bookmark_highlight_lines = 1\n\n    call bm_sign#init()\n\n    Expect util#redir_execute(\":sign list Bookmark\") ==#\n          \\ \"sign Bookmark text=xy linehl=BookmarkLine texthl=BookmarkSign\"\n  end\n\nend\n\ndescribe \"with initialized signs\"\n\n  before\n    let g:bm_sign_index = 1\n    call bm_sign#init()\n    execute \":new\"\n    execute \":e LICENSE\"\n    let g:test_file = expand(\"%:p\")\n  end\n\n  it 'should add signs'\n    Expect bm_sign#add(g:test_file, 2, 0) ==# 1\n    Expect bm_sign#add(g:test_file, 10, 1) ==# 2\n\n    let signs = util#redir_execute(\":sign place file=\". g:test_file)\n    let lines = bm_sign#lines_for_signs(g:test_file)\n\n    Expect g:bm_sign_index ==# 3\n    Expect len(split(signs, '\\n')) ==# 4\n    Expect lines ==# {'1': '2', '2': '10'}\n  end\n\n  it 'should delete signs'\n    let idx1 = bm_sign#add(g:test_file, 2, 0)\n    let idx2 = bm_sign#add(g:test_file, 10, 0)\n    Expect idx1 ==# 1\n    Expect idx2 ==# 2\n    call bm_sign#del(g:test_file, idx1)\n    call bm_sign#del(g:test_file, idx2)\n\n    let signs = util#redir_execute(\":sign place file=\". g:test_file)\n    let lines = bm_sign#lines_for_signs(g:test_file)\n\n    Expect lines ==# {}\n    Expect len(split(signs, '\\n')) ==# 1\n  end\n\n  it 'should not fail to delete signs from invalid buffer'\n    call bm_sign#del(\"invalid\", 1)\n  end\n\n  after\n    execute \":q!\"\n  end\n\nend\n\ndescribe \"with added signs\"\n\n  before\n    let g:bm_sign_index = 3\n    call bm_sign#init()\n    execute \":new\"\n    execute \":e LICENSE\"\n    let g:test_file = expand(\"%:p\")\n  end\n\n  it 'should add sign with lower index'\n    call bm_sign#add_at(g:test_file, 1, 5, 0)\n    Expect g:bm_sign_index ==# 3\n  end\n\n  it 'should add sign with equal index'\n    call bm_sign#add_at(g:test_file, 3, 5, 0)\n    Expect g:bm_sign_index ==# 4\n  end\n\n  it 'should add sign with higher index'\n    call bm_sign#add_at(g:test_file, 4, 5, 0)\n    Expect g:bm_sign_index ==# 5\n  end\n\n  it 'should transform sign to annotation'\n    call bm_sign#add_at(g:test_file, 4, 5, 0)\n    call bm_sign#update_at(g:test_file, 4, 5, 1)\n\n    let signs = util#redir_execute(\":sign place file=\". g:test_file)\n    let lines = split(signs, \"\\n\")\n    Expect match(lines, 'name=bookmarkannotation\\c') ># 0\n  end\n\n  after\n    execute \"sign unplace *\"\n    execute \":q!\"\n  end\n\nend\n"
  },
  {
    "path": ".vim/bundle/vim-bookmarks/t/bm_spec.vim",
    "content": "describe 'empty model'\n\n  it 'should have no bookmarks'\n    Expect bm#has_bookmarks_in_file('foo') to_be_false\n    Expect bm#next('foo',  1) ==# 0\n    Expect bm#prev('foo',  1) ==# 0\n  end\n\n  it 'should add bookmark'\n    Expect bm#has_bookmarks_in_file('foo') to_be_false\n    Expect bm#has_bookmark_at_line('foo', 3) to_be_false\n\n    call bm#add_bookmark('foo', 1, 3, 'bar')\n\n    Expect bm#has_bookmarks_in_file('foo') to_be_true\n    Expect bm#has_bookmark_at_line('foo', 3) to_be_true\n  end\n\n  it 'should add bookmark with annotation'\n    call bm#add_bookmark('foo', 1, 3, 'bar', 'a remark')\n\n    Expect bm#get_bookmark_by_sign('foo', 1) ==# {'line_nr': 3, 'sign_idx': 1, 'content': 'bar', 'annotation': 'a remark'}\n  end\n\n  it 'should deserialize bookmarks'\n    let data = []\n    call add(data, \"let l:bm_file_version = 1\")\n    call add(data, \"let l:bm_sessions = {'default': {'file1': [{'sign_idx': 99, 'line_nr': 1, 'content': 'foo', 'annotation': 'a note'},],'file2': [{'sign_idx': 50, 'line_nr': 12, 'content': 'bar'},{'sign_idx': 51, 'line_nr': 15, 'content': '''test'''},],}}\")\n    call add(data, \"let l:bm_current_session = 'default'\")\n\n    let result = bm#deserialize(data)\n\n    Expect bm#has_bookmarks_in_file('file1') to_be_true\n    Expect bm#has_bookmark_at_line('file1', 1) to_be_true\n    Expect bm#location_list() ==# [\"file1:1:Annotation: a note\", \"file2:12:bar\", \"file2:15:'test'\"]\n    Expect len(result) ==# 3\n    Expect result ==# [{\"file\": \"file1\", \"line_nr\": 1, \"sign_idx\": 99, \"content\": \"foo\", \"annotation\": \"a note\"},\n                      \\{\"file\": \"file2\", \"line_nr\": 12, \"sign_idx\": 50, \"content\": \"bar\", \"annotation\": \"\"},\n                      \\{\"file\": \"file2\", \"line_nr\": 15, \"sign_idx\": 51, \"content\": \"'test'\", \"annotation\": \"\"}]\n  end\n\n  after\n    call bm#del_all()\n  end\n\nend\n\ndescribe 'model with bookmark'\n\n  before\n    call bm#add_bookmark('foo', 1, 3, 'bar', 'note')\n  end\n\n  it 'should get bookmark by line'\n    let bookmark = bm#get_bookmark_by_line('foo', 3)\n\n    Expect bookmark['line_nr']    ==# 3\n    Expect bookmark['sign_idx']   ==# 1\n    Expect bookmark['content']    ==# 'bar'\n    Expect bookmark['annotation'] ==# 'note'\n  end\n\n  it 'should get bookmark by sign'\n    let bookmark = bm#get_bookmark_by_sign('foo', 1)\n\n    Expect bookmark['line_nr']  ==# 3\n    Expect bookmark['sign_idx'] ==# 1\n    Expect bookmark['content']  ==# 'bar'\n  end\n\n  it 'should update bookmark'\n    call bm#update_bookmark_for_sign('foo', 1, 5, 'baz')\n\n    let bookmark = bm#get_bookmark_by_line('foo', 5)\n    Expect bookmark['line_nr']    ==# 5\n    Expect bookmark['sign_idx']   ==# 1\n    Expect bookmark['content']    ==# 'baz'\n    Expect bookmark['annotation'] ==# 'note'\n    Expect bookmark ==# bm#get_bookmark_by_sign('foo', 1)\n  end\n\n  it 'should update annotation'\n    call bm#update_annotation('foo', 1, 'awesome annotation')\n\n    let bookmark = bm#get_bookmark_by_line('foo', 3)\n    Expect bookmark['annotation'] ==# 'awesome annotation'\n  end\n\n  it 'should delete bookmark at line'\n    call bm#del_bookmark_at_line('foo', 3)\n\n    Expect bm#has_bookmark_at_line('foo', 3) to_be_false\n  end\n\n  after\n    call bm#del_all()\n  end\n\nend\n\ndescribe 'model with multiple bookmarks in different files'\n\n  before\n    call bm#add_bookmark('file3', 1, 10, 'file3/line10')\n    call bm#add_bookmark('file1', 1, 12, 'file1/line12')\n    call bm#add_bookmark('file2', 2, 34, 'file2/line34', 'an annotation')\n    call bm#add_bookmark('file1', 3, 2,  'file1/line2')\n    call bm#add_bookmark('file1', 4, 45, '''test''')\n    call bm#add_bookmark('file2', 5, 45, '')\n  end\n\n  it 'should return all bookmarks of file per line'\n    let dict1 = bm#all_bookmarks_by_line('file1')\n    let dict2 = bm#all_bookmarks_by_line('file2')\n\n    Expect len(keys(dict1)) ==# 3\n    Expect len(keys(dict2)) ==# 2\n    Expect dict1[12]['sign_idx'] ==# 1\n    Expect dict2[34]['sign_idx'] ==# 2\n    Expect dict1[2]['sign_idx']  ==# 3\n    Expect dict1[45]['sign_idx'] ==# 4\n    Expect dict2[45]['sign_idx'] ==# 5\n  end\n\n  it 'should return total count of bookmarks'\n    Expect bm#total_count() ==# 6\n  end\n\n  it 'should return all lines'\n    let lines = bm#all_lines('file1')\n\n    Expect lines ==# ['2', '12', '45']\n  end\n\n  it 'should return all files with bookmarks'\n    let files = bm#all_files()\n\n    Expect files ==# ['file1', 'file2', 'file3']\n  end\n\n  it 'should return next bookmark'\n    Expect bm#next('file1',  1) ==#  2\n    Expect bm#next('file1',  3) ==# 12\n    Expect bm#next('file1', 11) ==# 12\n    Expect bm#next('file1', 12) ==# 45\n    Expect bm#next('file1', 13) ==# 45\n    Expect bm#next('file1', 59) ==#  2\n  end\n\n  it 'should return previous bookmark'\n    Expect bm#prev('file1',  1) ==# 45\n    Expect bm#prev('file1',  3) ==#  2\n    Expect bm#prev('file1', 11) ==#  2\n    Expect bm#prev('file1', 12) ==#  2\n    Expect bm#prev('file1', 13) ==# 12\n    Expect bm#prev('file1', 59) ==# 45\n  end\n\n  it 'should return location list'\n    let locations = bm#location_list()\n    Expect len(locations) ==# 6\n    Expect locations[0] ==# 'file1:2:file1/line2'\n    Expect locations[1] ==# 'file1:12:file1/line12'\n    Expect locations[2] ==# 'file1:45:''test'''\n    Expect locations[3] ==# 'file2:34:Annotation: an annotation'\n    Expect locations[4] ==# 'file2:45:empty line'\n    Expect locations[5] ==# 'file3:10:file3/line10'\n  end\n\n  it 'should serialize'\n    exec join(bm#serialize(), \" | \")\n\n    let s = l:bm_sessions[\"default\"]\n    Expect l:bm_file_version ==# 1\n    Expect len(keys(l:bm_sessions)) ==# 1\n    Expect len(s) ==# 3\n    Expect len(s[\"file1\"]) ==# 3\n    Expect len(s[\"file2\"]) ==# 2\n    Expect len(s[\"file3\"]) ==# 1\n    Expect s[\"file1\"] ==# [{\"line_nr\": 2, \"sign_idx\": 3, \"content\": \"file1/line2\"}, {\"line_nr\": 12, \"sign_idx\": 1, \"content\": \"file1/line12\"}, {\"line_nr\": 45, \"sign_idx\": 4, \"content\": \"'test'\"}]\n    Expect s[\"file2\"] ==# [{\"line_nr\": 34, \"sign_idx\": 2, \"content\": \"file2/line34\", \"annotation\": \"an annotation\"}, {\"line_nr\": 45, \"sign_idx\": 5, \"content\": \"\"}]\n    Expect s[\"file3\"] ==# [{\"line_nr\": 10, \"sign_idx\": 1, \"content\": \"file3/line10\"}]\n    Expect l:bm_current_session ==# 'default'\n  end\n\n  after\n    call bm#del_all()\n  end\n\nend\n\ndescribe 'bm#del_all'\n\n  it 'should reset the model'\n    call bm#add_bookmark('file1', 1, 1, 'line1')\n    call bm#add_bookmark('file2', 2, 1, 'line1')\n\n    call bm#del_all()\n\n    Expect empty(g:line_map) to_be_true\n    Expect empty(g:sign_map) to_be_true\n    Expect bm#has_bookmarks_in_file('file1') to_be_false\n    Expect bm#has_bookmarks_in_file('file2') to_be_false\n  end\n\nend\n"
  },
  {
    "path": ".vim/bundle/vim-bookmarks/t/util_spec.vim",
    "content": "describe 'util'\n\n  it 'should return command output'\n    Expect util#redir_execute(\":echo 'foo'\") ==# 'foo'\n  end\n\nend\n"
  },
  {
    "path": ".vim/bundle/vim-choosewin/README-JP.md",
    "content": "# アニメーションGIF\n\n![Movie](http://gifzo.net/1A8QMzrbRp.gif)\n\n# 選択したウィンドウに移動\ntmux の `display-pane` 機能を模倣しようと思い、作りました。  \n`display-pane` はウィンドウ(tmux用語ではpane)を対話的に数字で選択できる機能です。  \n\nこのプラグインは、高解像度の広いディスプレイで作業している時に、特に効果を発揮するでしょう。  \n広いディスプレイでは沢山のウィンドウを開きますが、ウインドウを渡り歩く作業は退屈で面倒です。  \nこのプラグインはウィンドウを渡り歩く作業を少し楽にしてくれるでしょう。  \n\n  1. ウィンドウラベルをステータライン or 各ウィンドウの中央(オーバーレイ)に表示\n  2. ウィンドウ番号を読み取る\n  3. 選択したウィンドウに移動\n\n設定例\n```Vim\nnmap  -  <Plug>(choosewin)\n```\n\n追加的な設定項目\n```Vim\n\" オーバーレイ機能を有効にしたい場合\nlet g:choosewin_overlay_enable          = 1\n\n\" オーバーレイ・フォントをマルチバイト文字を含むバッファでも綺麗に表示する。\nlet g:choosewin_overlay_clear_multibyte = 1\n```\n\nMore configuration is explained in help file. see `:help choosewin`\n"
  },
  {
    "path": ".vim/bundle/vim-choosewin/README.md",
    "content": "[日本語はこちら](https://github.com/t9md/vim-choosewin/blob/master/README-JP.md)\n\n# Animated GIF\n\n![Movie](http://gifzo.net/1A8QMzrbRp.gif)\n\n# Land to window you choose.\n\nAiming to mimic tmux's `display-pane` feature, which enables you to choose window interactively.\n\n\nThis plugin should be useful especially when you are working on high resolution wide display.\nSince with wide display, you are likely to open multiple window and moving around window is a little bit tiresome.\n\n\nThis plugin simplifies window excursion.\n\n\n  1. Display window label on statusline or middle of each window (overlay).\n  2. Read input from user.\n  3. You can land window you choose.\n\n\nExample configuration:\n\n\n```vim\nnmap  -  <Plug>(choosewin)\n```\n\n\nAdditional configuration:\n\n\n```vim\n\" if you want to use overlay feature\nlet g:choosewin_overlay_enable          = 1\n\n\" overlay font broke on mutibyte buffer?\nlet g:choosewin_overlay_clear_multibyte = 1\n```\n\nMore configuration is explained in help file. See `:help choosewin`.\n\n"
  },
  {
    "path": ".vim/bundle/vim-choosewin/Rakefile",
    "content": "desc \"zip\"\ntask :zip do\n  version = File.read(\"VERSION\").chomp\n  dirname = File.basename( File.dirname(File.expand_path(__FILE__)))\n  zipname = \"#{dirname}-#{version}.zip\"\n  sh \"zip -r #{zipname} README.md autoload doc plugin -x doc/tags\"\nend\n\ndesc \"release\"\ntask :release => [:tag, :zip]\n\ndesc \"tag\"\ntask :tag do\n  version = File.read(\"VERSION\").chomp\n  ver_s = \"v#{version}\"\n  sh \"git tag -a #{ver_s} -m '#{ver_s}'\"\n  sh \"git push -u origin master #{ver_s}\"\nend\n\ndesc \"versub\"\ntask :versub do\n  version = File.read(\"VERSION\").chomp\n  files = Dir.glob('{doc,autoload,plugin}/**').select do |f|\n    File.file? f\n  end\n  files.delete('doc/tags')\n  files.each do |fname|\n    lines = File.readlines(fname)\n    lines.map! { |l| l.sub(/Version: (.*)/, \"Version: #{version}\") }\n    File.open(fname,'w') {|f| f.puts lines }\n  end\nend\n"
  },
  {
    "path": ".vim/bundle/vim-choosewin/VERSION",
    "content": "1.3\n"
  },
  {
    "path": ".vim/bundle/vim-choosewin/autoload/choosewin/data/_sample",
    "content": "3x5\n========\n                                                                                                                                                                                                                                                                                                                                                                                        \n###  #  ##   ## ##  ### ###  ## # # ###  ## # # #   # # ###  #  ##   #  ##   ## ### # # # # # # # # # # ###  ## #   ##   #      #       #         #      ##     #    #   #  #    #                               #                           ##  #  ##    #  #  # # # #  ## # #  #    #   # #    #                    # ###  #  ### ### # # ### ### ### ### ###           #     #   ### \n# # # # # # #   # # #   #   #   # #  #    # # # #   ### # # # # # # # # # # #    #  # # # # # # # # # #   #  #  #    #  # #      #   ## ### ### ### ###  #  ### ###         # #  #  ### ##  ### ### ### ###  ## ### # # # # # # # # # # ##   #   #   #  ###  #  # # ### ##    # #    #   #   #  ###  #                # # # ##    #   # # # #   #     # # # # #  #   #   #  ###  #    # \n#   ### ##  #   # # ##  ##  # # ###  #    # ##  #   ### # # # # ##  # # ##   #   #  # # # # ###  #   #   #   #   #   #            # # # # # #   # # ##  ### # # # #  #   #  ##   #  ### # # # # # # # # #    #   #  # # # # ###  #  ###  #  ##   #   ## #    #      # # ###  #   ## #    #   #   #  ###     ###      #  # #  #  ###  ## ### ### ###   # ### ###         #         #  ## \n### # # # # #   # # #   #   # # # #  #  # # # # #   # # # # # # #    ## # #   #  #  # # # # ### # #  #  #    #    #  #              ### ### ### ### ###  #   ## # #  ##  #  # #  ## # # # # ### ### ### #   ##   ## ###  #  ### # #   #  ##  #   #   #              ###  ## #   # #      #   #  ###  #   #          #   # #  #  #     #   #   # # #   # # #   #  #   #   #  ###  #      \n    # # ##   ## ##  ### #    ## # # ###  #  # # ### # # # #  #  #     # # # ##   #  ###  #  # # # #  #  ###  ##   # ##      ###                         ##  ###         #                       #     #                             ###      ##  #  ##       #      # # ##  # # ###       # #    #      #        #  #   ### ### ### ###   # ### ###   # ### ###     #     #     #    #  \n                                                                                                                                                                                                                                                                                                                                                                                        \nMoney\n========\n    $$$$$$       $$$$$$   $$$$$$$    $$$$$$   $$$$$$$   $$$$$$$$  $$$$$$$$  $$$$$$   $$    $$  $$$$$$     $$$$$  $$    $$  $$        $$       $$  $$    $$   $$$$$$   $$$$$$$    $$$$$$   $$$$$$$    $$$$$$   $$$$$$$$  $$    $$  $$     $$  $$       $$  $$    $$  $$      $$  $$$$$$$$  $$$$  $$        $$$$     $   $$          $$                        $$             $$$$$$           $$        $$          $$        $$                                                                              $$                                                                        $$$  $$  $$$     $$$  $$  $$  $$  $$    $$  $$       $$     $$    $$   $$$     $$  $$$  $$$                                  $$  $$$$$$     $$     $$$$$$    $$$$$$   $$    $$  $$$$$$$    $$$$$$   $$$$$$$$  $$$$$$    $$$$$$             $$      $$     $$$$   \n  $$$    $$$    $$    $$  $$    $$  $$    $$  $$    $$  $$        $$       $$    $$  $$    $$    $$          $$  $$   $$   $$        $$$     $$$  $$$   $$  $$    $$  $$    $$  $$    $$  $$    $$  $$    $$     $$     $$    $$  $$     $$  $$   $   $$  $$    $$   $$    $$        $$   $$     $$         $$    $$$   $          $$                        $$            $$    $$          $$                    $$        $$                                                                              $$                                                                       $$    $$    $$   $$ $$ $$  $$  $$  $$    $$  $$     $$$$$$        $$   $$ $$    $  $$      $$    $$ $$      $$               $$  $$$   $$  $$$$    $$    $$  $$    $$  $$    $$  $$        $$    $$       $$  $$    $$  $$    $$           $$        $$   $$  $$  \n $$        $$   $$    $$  $$    $$  $$        $$    $$  $$        $$       $$        $$    $$    $$          $$  $$  $$    $$        $$$$   $$$$  $$$$  $$  $$    $$  $$    $$  $$    $$  $$    $$  $$           $$     $$    $$  $$     $$  $$  $$$  $$   $$  $$     $$  $$        $$    $$      $$        $$   $$ $$    $$$$$$   $$$$$$$    $$$$$$$   $$$$$$$   $$$$$$   $$       $$$$$$   $$$$$$$   $$      $$  $$    $$  $$  $$$$$$ $$$$   $$$$$$$    $$$$$$    $$$$$$    $$$$$$    $$$$$$    $$$$$$$  $$$$$$    $$    $$  $$     $$  $$   $$   $$  $$    $$  $$    $$  $$$$$$$$  $$    $$    $$   $$  $$$   $$  $$  $$  $$$$$$$$$$  $$    $$      $$     $$$       $$        $$    $$$       $$              $$   $$$$  $$    $$          $$        $$  $$    $$  $$        $$            $$   $$    $$  $$    $$  $$  $$  $$   $$$$   $$      $$  \n$$   $$$$$  $$  $$$$$$$$  $$$$$$$   $$        $$    $$  $$$$$     $$$$$    $$  $$$$  $$$$$$$$    $$          $$  $$$$$     $$        $$ $$ $$ $$  $$ $$ $$  $$    $$  $$$$$$$   $$    $$  $$$$$$$    $$$$$$      $$     $$    $$   $$   $$   $$ $$ $$ $$    $$$$       $$$$        $$     $$       $$       $$  $$   $$        $$  $$    $$  $$        $$    $$  $$    $$  $$$$    $$    $$  $$    $$  $$          $$   $$   $$  $$   $$   $$  $$    $$  $$    $$  $$    $$  $$    $$  $$    $$  $$          $$      $$    $$   $$   $$   $$   $$   $$   $$  $$   $$    $$       $$  $$$          $$$            $$            $$  $$    $$           $$     $$ $$ $$   $$        $$  $$$$$$$  $$$$$$$$  $$$$$$  $$    $$ $$ $$    $$     $$$$$$     $$$$$   $$$$$$$$  $$$$$$$   $$$$$$$      $$     $$$$$$    $$$$$$$         $$            $$    $$   \n$$  $$  $$  $$  $$    $$  $$    $$  $$        $$    $$  $$        $$       $$    $$  $$    $$    $$    $$    $$  $$  $$    $$        $$  $$$  $$  $$  $$$$  $$    $$  $$        $$    $$  $$    $$        $$     $$     $$    $$    $$ $$    $$$$   $$$$   $$  $$       $$        $$      $$        $$      $$            $$$$$$$  $$    $$  $$        $$    $$  $$$$$$$$  $$      $$    $$  $$    $$  $$      $$  $$$$$$    $$  $$   $$   $$  $$    $$  $$    $$  $$    $$  $$    $$  $$         $$$$$$     $$      $$    $$    $$ $$    $$   $$   $$    $$$$    $$    $$    $$$$    $$    $$    $$                         $$$$$$$$$$   $$$$$$     $$      $$  $$     $$        $$    $$$       $$            $$     $$  $$$$    $$    $$              $$        $$        $$  $$    $$    $$     $$    $$        $$          $$   $$$$   $$    $$    \n$$  $$  $$  $$  $$    $$  $$    $$  $$    $$  $$    $$  $$        $$       $$    $$  $$    $$    $$    $$    $$  $$   $$   $$        $$   $   $$  $$   $$$  $$    $$  $$        $$ $$ $$  $$    $$  $$    $$     $$     $$    $$     $$$     $$$     $$$  $$    $$      $$       $$       $$         $$     $$           $$    $$  $$    $$  $$        $$    $$  $$        $$      $$    $$  $$    $$  $$      $$  $$   $$   $$  $$   $$   $$  $$    $$  $$    $$  $$    $$  $$    $$  $$              $$    $$  $$  $$    $$     $$$     $$   $$   $$   $$  $$   $$    $$   $$       $$    $$    $$                           $$  $$          $$   $$       $$   $$     $$      $$    $$ $$      $$           $$      $$   $$$    $$    $$        $$    $$        $$  $$    $$  $$    $$   $$      $$    $$  $$    $$  $$  $$   $$        $$           \n$$   $$$$$$$$   $$    $$  $$$$$$$    $$$$$$   $$$$$$$   $$$$$$$$  $$        $$$$$$   $$    $$  $$$$$$   $$$$$$   $$    $$  $$$$$$$$  $$       $$  $$    $$   $$$$$$   $$         $$$$$$   $$    $$   $$$$$$      $$      $$$$$$       $      $$       $$  $$    $$      $$      $$$$$$$$  $$$$        $$  $$$$            $$$$$$$  $$$$$$$    $$$$$$$   $$$$$$$   $$$$$$$  $$       $$$$$$$  $$    $$  $$      $$  $$    $$  $$  $$   $$   $$  $$    $$   $$$$$$   $$$$$$$    $$$$$$$  $$        $$$$$$$      $$$$    $$$$$$       $       $$$$$ $$$$   $$    $$   $$$$$$$  $$$$$$$$   $$$  $$  $$$              $$            $$  $$    $$    $$  $$    $$   $$$$ $$     $$$  $$$                   $$  $$   $$        $$$$$$   $$$$$$  $$$$$$$$   $$$$$$         $$   $$$$$$    $$$$$$   $$        $$$$$$    $$$$$$       $     $$      $$      $$    \n $$                                                                                                                                                                                  $$$                                                                                                                       $$$$$$                                                                    $$                    $$                                                  $$              $$                                                                                   $$                                                                $$$$$$                                                     $                                                                                                                                                  \n  $$$    $$$                                                                                                                                                                                                                                                                                                                                                                       $$    $$              $$    $$                                                  $$              $$                                                                             $$    $$                                                                  $$                                                                                                                                                                                                          \n    $$$$$$                                                                                                                                                                                                                                                                                                                                                                          $$$$$$                $$$$$$                                                   $$              $$                                                                              $$$$$$                                                                                                                                                                                                                                                                               \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \nAlphabet                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n========\n ###   ##  ####   ### ###  #### ####  ###  #  # ###     # #  # #    #   # #   #  ###  ####   ###   ####   ###  ###### #   # #     # #     # #   # #   # ##### #### ##    ####  ##      ##     #            #      ##     #            #    #                                    #                                ## ####        ### ## ##  # #    # #   #   ##  ##   ##  ## ##                          ## ###   ##   ##  ###  #  # ####   #   #####  ###   ####         ##     ##    ###  \n#   # #  # #   # #    #  # #    #    #     #  #  #      # # #  #    ## ## ##  # #   # #   # #   #  #   # #       ##   #   # #     # #     #  # #   # #     #  ##    ##     ## #  #            #            #      #      #    ##    # # #  #                                    #                               ##  ## ##   # # ### ## ## #####  #####     ##  #  #  ## ##   ## # # #  #               ## #  ## ###  #  #    # #  # #     #       #  #   # #   # ## ##  ##  ###  ##  #   # \n#  ## #### ####  #    #  # ###  ###  #  ## ####  #      # ##   #    # # # # # # #   # ####  #   #  ####   ###    ##   #   #  #   #  #  #  #   #     #     #   ##     ##    ##              ## ###   ###  ### ### ### ### ###          ##   # ####  ###  ### ###   ###  ###  ## ### #  # # # #   # # # #  # ##  ##   ##  ## # #  ###        # #  # # #     ##    ### #   ##   ##  ###  ###    ###      ##  # # #  ##    #   ##  #### ###  ####    #    ###   ####       ##         ##    #  \n#     #  # #   # #    #  # #    #    #   # #  #  #  #   # # #  #    #   # #  ## #   # #     #  ##  # #       #   ##   #   #   # #    # # #   # #    #    #    ##      ##   ##             # # #  # #    #  # # #  #  # # #  # ##    # # #  # # # # #  # # # #  # #  #  #    #   #  #  # # # # # #  #  #  #  #   ##  ## ##                 #####  #####   ##    # # #    ##   ## #####  #         ##  ##   ##  #  ##   #      #    #    # #   #   #   #   #    #  ## ##  ##  ###  ##    #   \n ###  #  # ####   ### ###  #### #     ###  #  # ###  ###  #  # #### #   # #   #  ###  #      ####  #  ## ####    ##    ###     #      # #   #   #   #   ##### ####     ######      ####   ### ###   ###  ### ##   #  ### #  # ##    # #  # # # # # #  # ### ###   ###  #   ##   ##  ###  #   # #  # #  ###  ##   ## ####        ###        # #    # # # ##   #  ####     ## ##   ###      ##     ## ##     ###  #### #### ###     # ###   ###    #    ###    #       #   ##     ##     #   \n                                                                                                 #                                                                                 ####                                #         #  #                       #       #                                    #          ##                           #####                          # # #      #                                                                                               \n                                                                                                                                                                                                                     ###          ##                        #       ##                                ###                                         # #                                                                                                                                      \nBanner\n========\n  #####     #    ######   #####  ######  ####### #######  #####  #     # ###       # #    # #       #     # #     # ####### ######   #####  ######   #####  ####### #     # #     # #     # #     # #     # ####### ##### #       #####   #           ###                                                                                                                                                                                  ### # ###    ##     ### ### ###   # #    #####  ###   #   ##    ###   ## ##                                     #   ###     #    #####   #####  #       #######  #####  #######  #####   #####   #         #       #     #####  \n #     #   # #   #     # #     # #     # #       #       #     # #     #  #        # #   #  #       ##   ## ##    # #     # #     # #     # #     # #     #    #    #     # #     # #  #  #  #   #   #   #       #  #      #          #  # #          ###   ##   #####   ####  #####  ###### ######  ####  #    # #      # #    # #      #    # #    #  ####  #####   ####  #####   ####  ##### #    # #    # #    # #    # #   # ######  #    #    #  #  #  # ### ### ###   # #   #  #  # # #  #   #  #   ###  #     #   #   #    #                      #   #   #   ##   #     # #     # #    #  #       #     # #    #  #     # #     # ### ###   #         #   #     # \n # ### #  #   #  #     # #       #     # #       #       #       #     #  #        # #  #   #       # # # # # #   # #     # #     # #     # #     # #          #    #     # #     # #  #  #   # #     # #       #   #       #         # #   #          #   #  #  #    # #    # #    # #      #      #    # #    # #      # #   #  #      ##  ## ##   # #    # #    # #    # #    # #        #   #    # #    # #    #  #  #   # #      #   #    #    #      ##  ###  #   #  ####### #  #    ### #     ##     #  #       #   # #     #                     #   #     # # #         #       # #    #  #       #           #   #     # #     #  #  ###  #   #####   #        # \n # ### # #     # ######  #       #     # #####   #####   #  #### #######  #        # ###    #       #  #  # #  #  # #     # ######  #     # ######   #####     #    #     # #     # #  #  #    #       #       #    #        #        #                 # #    # #####  #      #    # #####  #####  #      ###### #      # ####   #      # ## # # #  # #    # #    # #    # #    #  ####    #   #    # #    # #    #   ##     #      #   ##         ##          #            # #    #####     #     ###    #   #       # ####### #####     #####        #    #     #   #    #####   #####  #    #  ######  ######     #     #####   ######         #             #    ###  \n # ####  ####### #     # #       #     # #       #       #     # #     #  #  #     # #  #   #       #     # #   # # #     # #       #   # # #   #         #    #    #     #  #   #  #  #  #   # #      #      #     #         #       #                   ###### #    # #      #    # #      #      #  ### #    # #      # #  #   #      #    # #  # # #    # #####  #  # # #####       #   #   #    # #    # # ## #   ##     #     #     #    #    #                      #######    #  #   # ### #   # #     #       #   # #     #   ###       ###   #     #     #   #   #             # #######       # #     #   #     #     #       #  #  ###  #   #####   #     #    \n #       #     # #     # #     # #     # #       #       #     # #     #  #  #     # #   #  #       #     # #    ## #     # #       #    #  #    #  #     #    #    #     #   # #   #  #  #  #   #     #     #      #          #      #                   #    # #    # #    # #    # #      #      #    # #    # # #    # #   #  #      #    # #   ## #    # #      #   #  #   #  #    #   #   #    #  #  #  ##  ##  #  #    #    #      #    #    #          ###           # #   #  #  #  #  # # #    #       #     #   #   #    #   ###       ###  #       #   #    #   #       #     #      #  #     # #     #   #     #     # #     # ### ###   #         #           \n  #####  #     # ######   #####  ######  ####### #        #####  #     # ###  #####  #    # ####### #     # #     # ####### #        #### # #     #  #####     #     #####     #     ## ##  #     #    #    ####### #####       # #####                   #    # #####   ####  #####  ###### #       ####  #    # #  ####  #    # ###### #    # #    #  ####  #       ### # #    #  ####    #    ####    ##   #    # #    #   #   ######   ### # ###           ###           # #    #####  #   ###  ###  #       ## ##                  #        ### #         ###   ##### #######  #####       #   #####   #####    #      #####   #####   #   #     #       #       #    \n                                                                                                                                                                                                                                              #######                                                                                                                                                                                                                                                                                  #                                                                                                       #                           \nBright\n========\n  ####    ####   #####    ####   #####   ######  ######   ####   ##  ##  ######  ######  ##  ##  ##      ##   ##  ##  ##   ####   #####    ####   #####    ####   ######  ##  ##  ##  ##  ##   ##  ##  ##  ##  ##  ######  ######  ##      ######    ##              ##     ####   #####    ####   #####   ######  ######   ####   ##  ##  ######  ######  ##  ##  ##      ##   ##  ##  ##   ####   #####    ####   #####    ####   ######  ##  ##  ##  ##  ##   ##  ##  ##  ##  ##  ######    ####    ##    ####     ### #    ##    ##  ##   #  #    #####  ##  ##   #####     ##       ###  ###     #  #  #    ##                                ##   ####     ##     ####   ######      ##  ######    ##    ######   ####    ####                       ##          ##       ####  \n # ## #  ##  ##  ##  ##  ##  ##  ##  ##  ##      ##      ##      ##  ##    ##        ##  ## ##   ##      ### ###  ### ##  ##  ##  ##  ##  ##  ##  ##  ##  ##        ##    ##  ##  ##  ##  ##   ##   ####    ####      ##   ##       ##         ##   ####             ##    ##  ##  ##  ##  ##  ##  ##  ##  ##      ##      ##      ##  ##    ##        ##  ## ##   ##      ### ###  ### ##  ##  ##  ##  ##  ##  ##  ##  ##  ##        ##    ##  ##  ##  ##  ##   ##   ####    ####      ##     ##      ##      ##    # ###     ##    ##  ##  ######  ## #    #  ##   ##   ##    ##     ##        ##    # # #     ##                               ##   ##  ##   ###        ##     ##   ##  ##  ##       ##        ##   ##  ##  ##  ##    ##      ##      ##    ######    ##    ##  ## \n # ## #  ######  #####   ##      ##  ##  ####    ####    ## ###  ######    ##        ##  ####    ##      ## # ##  ## ###  ##  ##  #####   ## ###  #####    ####     ##    ##  ##  ##  ##  ## # ##    ##      ##      ##    ##        ##        ##  ##  ##            #     ######  #####   ##      ##  ##  ####    ####    ## ###  ######    ##        ##  ####    ##      ## # ##  ## ###  ##  ##  #####   ## ###  #####    ####     ##    ##  ##  ##  ##  ## # ##    ##      ##      ##    ###       ##       ###            ##     #  #    #  #    ####     ##     ## ##      #    #            #  #######  ######    ##    ######            ##    ######    ##     ####     ###   ######   ####   #####     ##     ####    ####                   ##                  ##     ##  \n #  # #  ##  ##  ##  ##  ##  ##  ##  ##  ##      ##      ##  ##  ##  ##    ##    ##  ##  ## ##   ##      ##   ##  ##  ##  ##  ##  ##      ##  ##  ##  ##      ##    ##    ##  ##   ####   #######   ####     ##     ##     ##         ##       ##                          ##  ##  ##  ##  ##  ##  ##  ##  ##      ##      ##  ##  ##  ##    ##    ##  ##  ## ##   ##      ##   ##  ##  ##  ##  ##  ##      ##  ##  ##  ##      ##    ##    ##  ##   ####   #######   ####     ##     ##       ##      ##      ##                            ######    # ##   ##  #  ## ## #           ##        ##    # # #     ##      ##              ##     ##     ##  ##    ##    ##          ##      ##      ##  ##  ##   ##     ##  ##    ##      ##      ##      ##    ######    ##      ##   \n  ####   ##  ##  #####    ####   #####   ######  ##       ####   ##  ##  ######   ####   ##  ##  ######  ##   ##  ##  ##   ####   ##       #####  ##  ##   ####     ##     ####     ##     ## ##   ##  ##    ##    ######  ######      ##  ######          ######          ##  ##  #####    ####   #####   ######  ##       ####   ##  ##  ######   ####   ##  ##  ######  ##   ##  ##  ##   ####   ##       #####  ##  ##   ####     ##     ####     ##     ## ##   ##  ##    ##    ######    ####    ##    ####              ##             #  #   #####   ##  ##   #####              ###  ###     #  #  #    ##       #              ##    ##       ####   ######  ######  #####       ##  #####    ####   ##       ####    ##                #        ##          ##        ##   \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ##                                                                                                                                                                                                                                                                             \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \n"
  },
  {
    "path": ".vim/bundle/vim-choosewin/autoload/choosewin/data/large",
    "content": "----------------\n  ##            \n  ##            \n  ##            \n  ##            \n                \n                \n  ##            \n                \n                \n                \n----------------\n  ##  ##        \n  ##  ##        \n  ##  ##        \n                \n                \n                \n                \n                \n                \n                \n----------------\n    ##  ##      \n    ##  ##      \n  ##########    \n    ##  ##      \n  ##########    \n    ##  ##      \n    ##  ##      \n                \n                \n                \n----------------\n     ##         \n   ######       \n  ##    ##      \n  ##            \n   ######       \n        ##      \n  ##    ##      \n   ######       \n     ##         \n                \n----------------\n  ##    ##      \n       ##       \n      ##        \n     ##         \n    ##          \n   ##           \n  ##    ##      \n                \n                \n                \n----------------\n   ###          \n  ## ##         \n   ###          \n  ## ## ##      \n  ##  ##        \n  ##   ##       \n   #### ##      \n                \n                \n                \n----------------\n  ##            \n  #             \n                \n                \n                \n                \n                \n                \n                \n                \n----------------\n    ###         \n   ##           \n  ##            \n  ##            \n  ##            \n   ##           \n    ###         \n                \n                \n                \n----------------\n  ###           \n    ##          \n     ##         \n     ##         \n     ##         \n    ##          \n  ###           \n                \n                \n                \n----------------\n                \n   ## ##        \n    ###         \n  #######       \n    ###         \n   ## ##        \n                \n                \n                \n                \n----------------\n                \n     ##         \n     ##         \n  ########      \n     ##         \n     ##         \n                \n                \n                \n                \n----------------\n                \n                \n                \n                \n                \n                \n  ##            \n  #             \n                \n                \n----------------\n                \n                \n                \n  ######        \n                \n                \n                \n                \n                \n                \n----------------\n                \n                \n                \n                \n                \n                \n  ##            \n                \n                \n                \n----------------\n        ##      \n       ##       \n      ##        \n     ##         \n    ##          \n   ##           \n  ##            \n                \n                \n                \n----------------\n   ######       \n  ###   ##      \n  ####  ##      \n  ## ## ##      \n  ##  ####      \n  ##   ###      \n   ######       \n                \n                \n                \n----------------\n    ##          \n  ####          \n    ##          \n    ##          \n    ##          \n    ##          \n  ######        \n                \n                \n                \n----------------\n   ######       \n  ##    ##      \n        ##      \n   ######       \n  ##            \n  ##            \n  ########      \n                \n                \n                \n----------------\n   ######       \n  ##    ##      \n        ##      \n    #####       \n        ##      \n  ##    ##      \n   ######       \n                \n                \n                \n----------------\n  ##    ##      \n  ##    ##      \n  ##    ##      \n  ########      \n        ##      \n        ##      \n        ##      \n                \n                \n                \n----------------\n  #######       \n  ##            \n  ##            \n  #######       \n        ##      \n  ##    ##      \n   ######       \n                \n                \n                \n----------------\n   ######       \n  ##    ##      \n  ##            \n  #######       \n  ##    ##      \n  ##    ##      \n   ######       \n                \n                \n                \n----------------\n  ########      \n       ##       \n      ##        \n     ##         \n    ##          \n   ##           \n  ##            \n                \n                \n                \n----------------\n   ######       \n  ##    ##      \n  ##    ##      \n   ######       \n  ##    ##      \n  ##    ##      \n   ######       \n                \n                \n                \n----------------\n   ######       \n  ##    ##      \n  ##    ##      \n   #######      \n        ##      \n  ##    ##      \n   ######       \n                \n                \n                \n----------------\n                \n                \n  ##            \n                \n                \n  ##            \n                \n                \n                \n                \n----------------\n                \n                \n  ##            \n                \n                \n  ##            \n  #             \n                \n                \n                \n----------------\n     ##         \n    ##          \n   ##           \n  ##            \n   ##           \n    ##          \n     ##         \n                \n                \n                \n----------------\n                \n                \n  ####          \n                \n  ####          \n                \n                \n                \n                \n                \n----------------\n  ##            \n   ##           \n    ##          \n     ##         \n    ##          \n   ##           \n  ##            \n                \n                \n                \n----------------\n   ####         \n  ##  ##        \n      ##        \n     ##         \n    ##          \n                \n    ##          \n                \n                \n                \n----------------\n      ######    \n    ###    ###  \n   ##        ## \n  ##   #####  ##\n  ##  ##  ##  ##\n  ##  ##  ##  ##\n  ##   ######## \n   ##           \n    ###    ###  \n      ######    \n----------------\n   ######       \n  ##    ##      \n  ##    ##      \n  ########      \n  ##    ##      \n  ##    ##      \n  ##    ##      \n                \n                \n                \n----------------\n  #######       \n  ##    ##      \n  ##    ##      \n  #######       \n  ##    ##      \n  ##    ##      \n  #######       \n                \n                \n                \n----------------\n   ######       \n  ##    ##      \n  ##            \n  ##            \n  ##            \n  ##    ##      \n   ######       \n                \n                \n                \n----------------\n  #######       \n  ##    ##      \n  ##    ##      \n  ##    ##      \n  ##    ##      \n  ##    ##      \n  #######       \n                \n                \n                \n----------------\n  ########      \n  ##            \n  ##            \n  #####         \n  ##            \n  ##            \n  ########      \n                \n                \n                \n----------------\n  ########      \n  ##            \n  ##            \n  #####         \n  ##            \n  ##            \n  ##            \n                \n                \n                \n----------------\n   ######       \n  ##    ##      \n  ##            \n  ##  ####      \n  ##    ##      \n  ##    ##      \n   ######       \n                \n                \n                \n----------------\n  ##    ##      \n  ##    ##      \n  ##    ##      \n  ########      \n  ##    ##      \n  ##    ##      \n  ##    ##      \n                \n                \n                \n----------------\n  ######        \n    ##          \n    ##          \n    ##          \n    ##          \n    ##          \n  ######        \n                \n                \n                \n----------------\n     #####      \n        ##      \n        ##      \n        ##      \n  ##    ##      \n  ##    ##      \n   ######       \n                \n                \n                \n----------------\n  ##    ##      \n  ##   ##       \n  ##  ##        \n  #####         \n  ##  ##        \n  ##   ##       \n  ##    ##      \n                \n                \n                \n----------------\n  ##            \n  ##            \n  ##            \n  ##            \n  ##            \n  ##            \n  ########      \n                \n                \n                \n----------------\n  ##       ##   \n  ###     ###   \n  ####   ####   \n  ## ## ## ##   \n  ##  ###  ##   \n  ##   #   ##   \n  ##       ##   \n                \n                \n                \n----------------\n  ##    ##      \n  ###   ##      \n  ####  ##      \n  ## ## ##      \n  ##  ####      \n  ##   ###      \n  ##    ##      \n                \n                \n                \n----------------\n   ######       \n  ##    ##      \n  ##    ##      \n  ##    ##      \n  ##    ##      \n  ##    ##      \n   ######       \n                \n                \n                \n----------------\n  #######       \n  ##    ##      \n  ##    ##      \n  #######       \n  ##            \n  ##            \n  ##            \n                \n                \n                \n----------------\n   ######       \n  ##    ##      \n  ##    ##      \n  ##    ##      \n  ##    ##      \n  ## ## ##      \n   ######       \n       ###      \n                \n                \n                \n----------------\n  #######       \n  ##    ##      \n  ##    ##      \n  #######       \n  ##    ##      \n  ##    ##      \n  ##    ##      \n                \n                \n                \n----------------\n   ######       \n  ##    ##      \n  ##            \n   ######       \n        ##      \n  ##    ##      \n   ######       \n                \n                \n                \n----------------\n  ########      \n     ##         \n     ##         \n     ##         \n     ##         \n     ##         \n     ##         \n                \n                \n                \n----------------\n  ##    ##      \n  ##    ##      \n  ##    ##      \n  ##    ##      \n  ##    ##      \n  ##    ##      \n   ######       \n                \n                \n                \n----------------\n  ##     ##     \n  ##     ##     \n  ##     ##     \n   ##   ##      \n    ## ##       \n     ###        \n      #         \n                \n                \n                \n----------------\n  ##       ##   \n  ##   #   ##   \n  ##  ###  ##   \n  ## ## ## ##   \n  ####   ####   \n  ###     ###   \n  ##       ##   \n                \n                \n                \n----------------\n  ##    ##      \n  ##    ##      \n   ##  ##       \n    ####        \n   ##  ##       \n  ##    ##      \n  ##    ##      \n                \n                \n                \n----------------\n  ##      ##    \n   ##    ##     \n    ##  ##      \n     ####       \n      ##        \n      ##        \n      ##        \n                \n                \n                \n----------------\n  ########      \n       ##       \n      ##        \n     ##         \n    ##          \n   ##           \n  ########      \n                \n                \n                \n----------------\n  ####          \n  ##            \n  ##            \n  ##            \n  ##            \n  ##            \n  ####          \n                \n                \n                \n----------------\n  ##            \n   ##           \n    ##          \n     ##         \n      ##        \n       ##       \n        ##      \n                \n                \n                \n----------------\n  ####          \n    ##          \n    ##          \n    ##          \n    ##          \n    ##          \n  ####          \n                \n                \n                \n----------------\n     #          \n    ###         \n   ## ##        \n  ##   ##       \n                \n                \n                \n                \n                \n                \n----------------\n                \n                \n                \n                \n                \n                \n                \n  ######        \n                \n                \n----------------\n ##             \n  #             \n                \n                \n                \n                \n                \n                \n                \n                \n----------------\n                \n                \n   ######       \n        ##      \n   #######      \n  ##    ##      \n   #######      \n                \n                \n                \n----------------\n                \n  ##            \n  ##            \n  #######       \n  ##    ##      \n  ##    ##      \n  ##    ##      \n  #######       \n                \n                \n----------------\n                \n                \n   #######      \n  ##            \n  ##            \n  ##            \n   #######      \n                \n                \n                \n----------------\n        ##      \n        ##      \n   #######      \n  ##    ##      \n  ##    ##      \n  ##    ##      \n   #######      \n                \n                \n                \n----------------\n                \n                \n   ######       \n  ##    ##      \n  ########      \n  ##            \n   #######      \n                \n                \n                \n----------------\n   ######       \n  ##    ##      \n  ##            \n  ####          \n  ##            \n  ##            \n  ##            \n                \n                \n                \n----------------\n                \n                \n   ######       \n  ##    ##      \n  ##    ##      \n  ##    ##      \n   #######      \n        ##      \n  ##    ##      \n   ######       \n----------------\n  ##            \n  ##            \n  #######       \n  ##    ##      \n  ##    ##      \n  ##    ##      \n  ##    ##      \n                \n                \n                \n----------------\n  ##            \n                \n  ##            \n  ##            \n  ##            \n  ##            \n  ##            \n                \n                \n                \n----------------\n                \n                \n        ##      \n                \n        ##      \n        ##      \n        ##      \n        ##      \n  ##    ##      \n   ######       \n----------------\n                \n  ##            \n  ##            \n  ##    ##      \n  ##   ##       \n  ######        \n  ##   ##       \n  ##    ##      \n                \n                \n----------------\n  ##            \n  ##            \n  ##            \n  ##            \n  ##            \n  ##            \n  ##            \n                \n                \n                \n----------------\n                \n                \n  ###### ####   \n  ##   ##   ##  \n  ##   ##   ##  \n  ##   ##   ##  \n  ##   ##   ##  \n                \n                \n                \n----------------\n                \n                \n  #######       \n  ##    ##      \n  ##    ##      \n  ##    ##      \n  ##    ##      \n                \n                \n                \n----------------\n                \n                \n   ######       \n  ##    ##      \n  ##    ##      \n  ##    ##      \n   ######       \n                \n                \n                \n----------------\n                \n                \n   ######       \n  ##    ##      \n  ##    ##      \n  ##    ##      \n  #######       \n  ##            \n  ##            \n  ##            \n----------------\n                \n                \n   ######       \n  ##    ##      \n  ##    ##      \n  ##    ##      \n   #######      \n        ##      \n        ##      \n        ##      \n----------------\n                \n                \n   ######       \n  ##    ##      \n  ##            \n  ##            \n  ##            \n                \n                \n                \n----------------\n                \n                \n   #######      \n  ##            \n   ######       \n        ##      \n  #######       \n                \n                \n                \n----------------\n    ##          \n    ##          \n  ######        \n    ##          \n    ##          \n    ##  ##      \n     ####       \n                \n                \n                \n----------------\n                \n                \n  ##    ##      \n  ##    ##      \n  ##    ##      \n  ##    ##      \n   ######       \n                \n                \n                \n----------------\n                \n                \n  ##     ##     \n   ##   ##      \n    ## ##       \n     ###        \n      #         \n                \n                \n                \n----------------\n                \n                \n  ##   ##   ##  \n  ##   ##   ##  \n  ##   ##   ##  \n  ##   ##   ##  \n   ##### ####   \n                \n                \n                \n----------------\n                \n                \n  ##    ##      \n   ##  ##       \n    ####        \n   ##  ##       \n  ##    ##      \n                \n                \n                \n----------------\n                \n                \n  ##    ##      \n  ##    ##      \n  ##    ##      \n  ##    ##      \n   #######      \n        ##      \n  ##    ##      \n   ######       \n----------------\n                \n                \n  ########      \n       ##       \n    ####        \n   ##           \n  ########      \n                \n                \n                \n----------------\n    ###         \n   ##           \n   ##           \n  ###           \n   ##           \n   ##           \n    ###         \n                \n                \n                \n----------------\n  ##            \n  ##            \n  ##            \n                \n  ##            \n  ##            \n  ##            \n                \n                \n                \n----------------\n  ###           \n    ##          \n    ##          \n    ###         \n    ##          \n    ##          \n  ###           \n                \n                \n                \n----------------\n   ###  ##      \n  ## ## ##      \n  ##  ###       \n                \n                \n                \n                \n                \n                \n                \n----------------\n"
  },
  {
    "path": ".vim/bundle/vim-choosewin/autoload/choosewin/data/small",
    "content": "--------\n   ##   \n   ##   \n   ##   \n        \n   ##   \n--------\n ##  ## \n ##  ## \n  #  #  \n        \n        \n--------\n  #  #  \n ###### \n  #  #  \n ###### \n  #  #  \n--------\n  ##### \n ## #   \n  ####  \n   # ## \n #####  \n--------\n ##  ## \n #  ##  \n   ##   \n  ##  # \n ##  ## \n--------\n  ##### \n ##   ##\n  ## ## \n ## ## #\n  ##### \n--------\n   ##   \n   ##   \n    #   \n        \n        \n--------\n    ### \n  ##    \n #      \n  ##    \n    ### \n--------\n ###    \n    ##  \n      # \n    ##  \n ###    \n--------\n #  #  #\n  # # # \n #######\n  # # # \n #  #  #\n--------\n   ##   \n   ##   \n ###### \n   ##   \n   ##   \n--------\n        \n        \n   ##   \n   ##   \n    #   \n--------\n        \n        \n ###### \n        \n        \n--------\n        \n        \n        \n   ##   \n   ##   \n--------\n     ## \n    ##  \n   ##   \n  ##    \n ##     \n--------\n  ####  \n ##  ## \n ###### \n ##  ## \n  ####  \n--------\n   ##   \n  ###   \n   ##   \n   ##   \n ###### \n--------\n  ####  \n     ## \n  ####  \n ##     \n ###### \n--------\n ###### \n    ##  \n   ###  \n     ## \n #####  \n--------\n     ## \n ##  ## \n ###### \n     ## \n     ## \n--------\n ###### \n ##     \n  ####  \n     ## \n #####  \n--------\n   ##   \n  ##    \n #####  \n ##  ## \n  ####  \n--------\n ###### \n    ##  \n   ##   \n  ##    \n ##     \n--------\n  ####  \n ##  ## \n  ####  \n ##  ## \n  ####  \n--------\n  ####  \n ##  ## \n  ####  \n   ##   \n  ##    \n--------\n        \n   ##   \n        \n   ##   \n        \n--------\n        \n   ##   \n        \n   ##   \n    #   \n--------\n     ## \n   ##   \n ##     \n   ##   \n     ## \n--------\n        \n ###### \n        \n ###### \n        \n--------\n ##     \n   ##   \n     ## \n   ##   \n ##     \n--------\n  ####  \n ##  ## \n    ##  \n   ##   \n   ##   \n--------\n  ####  \n # ## # \n # ## # \n #  # # \n  ####  \n--------\n  ####  \n ##  ## \n ###### \n ##  ## \n ##  ## \n--------\n #####  \n ##  ## \n #####  \n ##  ## \n #####  \n--------\n  ####  \n ##  ## \n ##     \n ##  ## \n  ####  \n--------\n #####  \n ##  ## \n ##  ## \n ##  ## \n #####  \n--------\n ###### \n ##     \n ####   \n ##     \n ###### \n--------\n ###### \n ##     \n ####   \n ##     \n ##     \n--------\n  ####  \n ##     \n ## ### \n ##  ## \n  ####  \n--------\n ##  ## \n ##  ## \n ###### \n ##  ## \n ##  ## \n--------\n ###### \n   ##   \n   ##   \n   ##   \n ###### \n--------\n ###### \n     ## \n     ## \n ##  ## \n  ####  \n--------\n ##  ## \n ## ##  \n ####   \n ## ##  \n ##  ## \n--------\n ##     \n ##     \n ##     \n ##     \n ###### \n--------\n ##   ##\n ### ###\n ## # ##\n ##   ##\n ##   ##\n--------\n ##  ## \n ### ## \n ## ### \n ##  ## \n ##  ## \n--------\n  ####  \n ##  ## \n ##  ## \n ##  ## \n  ####  \n--------\n #####  \n ##  ## \n #####  \n ##     \n ##     \n--------\n  ####  \n ##  ## \n ## ### \n ##  ## \n  ##### \n--------\n #####  \n ##  ## \n #####  \n ##  ## \n ##  ## \n--------\n  ####  \n ##     \n  ####  \n     ## \n  ####  \n--------\n ###### \n   ##   \n   ##   \n   ##   \n   ##   \n--------\n ##  ## \n ##  ## \n ##  ## \n ##  ## \n  ####  \n--------\n ##  ## \n ##  ## \n ##  ## \n  ####  \n   ##   \n--------\n ##   ##\n ##   ##\n ## # ##\n #######\n  ## ## \n--------\n ##  ## \n  ####  \n   ##   \n  ####  \n ##  ## \n--------\n ##  ## \n  ####  \n   ##   \n   ##   \n   ##   \n--------\n ###### \n    ##  \n   ##   \n  ##    \n ###### \n--------\n ###### \n ##     \n ##     \n ##     \n ###### \n--------\n ##     \n  ##    \n   ##   \n    ##  \n     ## \n--------\n ###### \n     ## \n     ## \n     ## \n ###### \n--------\n   ##   \n  ####  \n ##  ## \n        \n        \n--------\n        \n        \n        \n        \n ###### \n--------\n   ##   \n   ##   \n   #    \n        \n        \n--------\n  ####  \n ##  ## \n ###### \n ##  ## \n ##  ## \n--------\n #####  \n ##  ## \n #####  \n ##  ## \n #####  \n--------\n  ####  \n ##  ## \n ##     \n ##  ## \n  ####  \n--------\n #####  \n ##  ## \n ##  ## \n ##  ## \n #####  \n--------\n ###### \n ##     \n ####   \n ##     \n ###### \n--------\n ###### \n ##     \n ####   \n ##     \n ##     \n--------\n  ####  \n ##     \n ## ### \n ##  ## \n  ####  \n--------\n ##  ## \n ##  ## \n ###### \n ##  ## \n ##  ## \n--------\n ###### \n   ##   \n   ##   \n   ##   \n ###### \n--------\n ###### \n     ## \n     ## \n ##  ## \n  ####  \n--------\n ##  ## \n ## ##  \n ####   \n ## ##  \n ##  ## \n--------\n ##     \n ##     \n ##     \n ##     \n ###### \n--------\n ##   ##\n ### ###\n ## # ##\n ##   ##\n ##   ##\n--------\n ##  ## \n ### ## \n ## ### \n ##  ## \n ##  ## \n--------\n  ####  \n ##  ## \n ##  ## \n ##  ## \n  ####  \n--------\n #####  \n ##  ## \n #####  \n ##     \n ##     \n--------\n  ####  \n ##  ## \n ## ### \n ##  ## \n  ##### \n--------\n #####  \n ##  ## \n #####  \n ##  ## \n ##  ## \n--------\n  ####  \n ##     \n  ####  \n     ## \n  ####  \n--------\n ###### \n   ##   \n   ##   \n   ##   \n   ##   \n--------\n ##  ## \n ##  ## \n ##  ## \n ##  ## \n  ####  \n--------\n ##  ## \n ##  ## \n ##  ## \n  ####  \n   ##   \n--------\n ##   ##\n ##   ##\n ## # ##\n #######\n  ## ## \n--------\n ##  ## \n  ####  \n   ##   \n  ####  \n ##  ## \n--------\n ##  ## \n  ####  \n   ##   \n   ##   \n   ##   \n--------\n ###### \n    ##  \n   ##   \n  ##    \n ###### \n--------\n   #### \n   ##   \n ###    \n   ##   \n   #### \n--------\n   ##   \n   ##   \n   ##   \n   ##   \n   ##   \n--------\n ####   \n   ##   \n    ### \n   ##   \n ####   \n--------\n  ### # \n # ###  \n        \n        \n        \n--------\n"
  },
  {
    "path": ".vim/bundle/vim-choosewin/autoload/choosewin/data/small_horizontal",
    "content": "   ##    ##  ##   #  #    #####  ##  ##   #####     ##       ###  ###     #  #  #    ##                                ##   ####     ##     ####   ######      ##  ######    ##    ######   ####    ####                       ##          ##       ####    ####    ####   #####    ####   #####   ######  ######   ####   ##  ##  ######  ######  ##  ##  ##      ##   ##  ##  ##   ####   #####    ####   #####    ####   ######  ##  ##  ##  ##  ##   ##  ##  ##  ##  ##  ######  ######  ##      ######    ##              ##     ####   #####    ####   #####   ######  ######   ####   ##  ##  ######  ######  ##  ##  ##      ##   ##  ##  ##   ####   #####    ####   #####    ####   ######  ##  ##  ##  ##  ##   ##  ##  ##  ##  ##  ######    ####    ##    ####     ### # \n   ##    ##  ##  ######  ## #    #  ##   ##   ##    ##     ##        ##    # # #     ##                               ##   ##  ##   ###        ##     ##   ##  ##  ##       ##        ##   ##  ##  ##  ##    ##      ##      ##    ######    ##    ##  ##  # ## #  ##  ##  ##  ##  ##  ##  ##  ##  ##      ##      ##      ##  ##    ##        ##  ## ##   ##      ### ###  ### ##  ##  ##  ##  ##  ##  ##  ##  ##  ##        ##    ##  ##  ##  ##  ##   ##   ####    ####      ##   ##       ##         ##   ####             ##    ##  ##  ##  ##  ##  ##  ##  ##  ##      ##      ##      ##  ##    ##        ##  ## ##   ##      ### ###  ### ##  ##  ##  ##  ##  ##  ##  ##  ##  ##        ##    ##  ##  ##  ##  ##   ##   ####    ####      ##     ##      ##      ##    # ###  \n   ##     #  #    #  #    ####     ##     ## ##      #    #            #  #######  ######    ##    ######            ##    ######    ##     ####     ###   ######   ####   #####     ##     ####    ####                   ##                  ##     ##   # ## #  ######  #####   ##      ##  ##  ####    ####    ## ###  ######    ##        ##  ####    ##      ## # ##  ## ###  ##  ##  #####   ## ###  #####    ####     ##    ##  ##  ##  ##  ## # ##    ##      ##      ##    ##        ##        ##  ##  ##            #     ######  #####   ##      ##  ##  ####    ####    ## ###  ######    ##        ##  ####    ##      ## # ##  ## ###  ##  ##  #####   ## ###  #####    ####     ##    ##  ##  ##  ##  ## # ##    ##      ##      ##    ###       ##       ###         \n                 ######    # ##   ##  #  ## ## #           ##        ##    # # #     ##      ##              ##     ##     ##  ##    ##    ##          ##      ##      ##  ##  ##   ##     ##  ##    ##      ##      ##      ##    ######    ##      ##    #  # #  ##  ##  ##  ##  ##  ##  ##  ##  ##      ##      ##  ##  ##  ##    ##    ##  ##  ## ##   ##      ##   ##  ##  ##  ##  ##  ##      ##  ##  ##  ##      ##    ##    ##  ##   ####   #######   ####     ##     ##     ##         ##       ##                          ##  ##  ##  ##  ##  ##  ##  ##  ##      ##      ##  ##  ##  ##    ##    ##  ##  ## ##   ##      ##   ##  ##  ##  ##  ##  ##      ##  ##  ##  ##      ##    ##    ##  ##   ####   #######   ####     ##     ##       ##      ##      ##           \n   ##             #  #   #####   ##  ##   #####              ###  ###     #  #  #    ##       #              ##    ##       ####   ######  ######  #####       ##  #####    ####   ##       ####    ##                #        ##          ##        ##     ####   ##  ##  #####    ####   #####   ######  ##       ####   ##  ##  ######   ####   ##  ##  ######  ##   ##  ##  ##   ####   ##       #####  ##  ##   ####     ##     ####     ##     ## ##   ##  ##    ##    ######  ######      ##  ######          ######          ##  ##  #####    ####   #####   ######  ##       ####   ##  ##  ######   ####   ##  ##  ######  ##   ##  ##  ##   ####   ##       #####  ##  ##   ####     ##     ####     ##     ## ##   ##  ##    ##    ######    ####    ##    ####           \n"
  },
  {
    "path": ".vim/bundle/vim-choosewin/autoload/choosewin/font.vim",
    "content": "let s:font_list = map(range(33, 126), 'nr2char(v:val)')\nlet s:font_large = expand(\"<sfile>:h\") . '/data/large'\nlet s:font_small = expand(\"<sfile>:h\") . '/data/small'\n\n\" Util:\nfunction! s:str_split(str) \"{{{1\n  return split(a:str, '\\zs')\nendfunction\n\nfunction! s:scan_match(str, pattern) \"{{{1\n  let R = []\n  let start = 0\n  while 1\n    let m = match(a:str, a:pattern, start)\n    if m ==# -1 | break | endif\n    call add(R, m)\n    let start = m + 1\n  endwhile\n  return R\nendfunction\n\"}}}\n\n\" Font:\nlet s:font = {}\nfunction! s:font.new(char, data) \"{{{1\n  let self._data   = a:data\n  let self.width   = len(self._data[0])\n  let [ self.height, self.pattern ] = self._parse()\n  return deepcopy(self)\nendfunction\n\nfunction! s:font.info() \"{{{1\n  return {\n        \\ 'data': self._data,\n        \\ 'height': self.height,\n        \\ 'width': self.width,\n        \\ 'pattern': self.pattern,\n        \\ }\nendfunction\n\nfunction! s:font.print() \"{{{1\n  return join(self._data, \"\\n\")\nendfunction\n\nfunction! s:font._parse_old() \"{{{1\n  let R = []\n  for idx in range(0, len(self._data) - 1)\n    let indexes = s:scan_match(self._data[idx], '\\$')\n    let line_anchor = '%{line+' . idx . '}l'\n    let pattern = join(map(indexes,\n          \\ 'line_anchor . \"%{col+\" . v:val . \"}c\"'), '|')\n    call add(R, pattern)\n  endfor\n  call filter(R, '!empty(v:val)')\n  return R\nendfunction\n\nfunction! s:font._parse() \"{{{1\n  let height = 0\n  let R = []\n  for idx in range(0, len(self._data) - 1)\n    let indexes = s:scan_match(self._data[idx], '#')\n    let line_anchor = '%{line+' . idx . '}l'\n    let lc = -1\n    let s = ''\n    for cc in indexes\n      if (lc + 1) ==# cc\n        let s .= '.'\n      else\n        if !empty(s)\n          let s.= '|'\n        endif\n        let s .= line_anchor . '%{col+' . cc . '}c.'\n      endif\n      let lc = cc\n      let height = idx + 1\n    endfor\n    call add(R, s)\n  endfor\n  let pattern = '\\v' . join(filter(R, '!empty(v:val)') , '|')\n  return [ height, pattern ]\nendfunction\n\"}}}\n\n\" Table:\nlet s:table = {}\nfunction! s:table.new(data_file) \"{{{1\n  let data = self.read_data(a:data_file)\n  let R = {}\n  for [char, font] in map(copy(s:font_list), '[v:val, s:font.new(v:val, data[v:val])]')\n    let R[char] = font\n  endfor\n  return R\nendfunction\n\nfunction! s:table.read_data(file) \"{{{1\n  let fonts = copy(s:font_list)\n  let R = {}\n  for f in fonts | let R[f] = [] | endfor\n  for line in readfile(a:file)\n    if line =~# '\\v^---'\n      if empty(fonts)\n        break\n      endif\n      let current_font = remove(fonts, 0)\n      continue\n    endif\n    call add(R[current_font], line)\n  endfor\n  return R\nendfunction\n\nfunction! choosewin#font#large() \"{{{1\n  return s:table.new(s:font_large)\nendfunction\n\nfunction! choosewin#font#small() \"{{{1\n  return s:table.new(s:font_small)\nendfunction\n\"}}}\n\" vim: foldmethod=marker\n"
  },
  {
    "path": ".vim/bundle/vim-choosewin/autoload/choosewin/highlighter.vim",
    "content": "let s:h = {}\n\nfunction! s:h.init() \"{{{1\n  let self.hlmgr = choosewin#hlmanager#new('ChooseWin')\n  let color = {}\n  let color.Label          = self.hlmgr.register(g:choosewin_color_label)\n  let color.LabelCurrent   = self.hlmgr.register(g:choosewin_color_label_current)\n  let color.Overlay        = self.hlmgr.register(g:choosewin_color_overlay)\n  let color.OverlayCurrent = self.hlmgr.register(g:choosewin_color_overlay_current)\n  let color.Shade          = self.hlmgr.register(g:choosewin_color_shade)\n\n  let color.Other = g:choosewin_label_fill\n        \\ ? color.Label : self.hlmgr.register(g:choosewin_color_other)\n  let color.Land = self.hlmgr.register(g:choosewin_color_land)\n  let self.color = color\nendfunction\n\nfunction! s:h.get() \"{{{1\n  if !has_key(self, 'hlmgr') | call s:h.init() | endif\n  return self\nendfunction\n\nfunction! s:h.refresh() \"{{{1\n  if !has_key(self, 'hlmgr') | call s:h.init() | endif\n  call self.hlmgr.refresh()\nendfunction\n\nfunction! choosewin#highlighter#get() \"{{{1\n  return s:h.get()\nendfunction\n\nfunction! choosewin#highlighter#refresh() \"{{{1\n  call s:h.refresh()\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-choosewin/autoload/choosewin/hlmanager.vim",
    "content": "let s:TYPE_STRING     = type('')\nlet s:TYPE_DICTIONARY = type({})\nlet s:TYPE_NUMBER     = type(0)\nlet s:GUI = has(\"gui_running\")\n\nlet s:hlmgr = {}\nfunction! s:hlmgr.init(prefix) \"{{{1\n  let self._store  = {}\n  let self._prefix  = a:prefix\n  return self\nendfunction\n\nfunction! s:hlmgr.register(dict, ...) \"{{{1\n  let defstr = self.hl_defstr(a:dict)\n  let name = self.find_name(defstr)\n  if !empty(name) | return name | endif\n  let name = self.color_name_next()\n  return self.define(name, { 'data': a:dict, 'defstr': defstr })\nendfunction\n\nfunction! s:hlmgr.define(name, data) \"{{{1\n  let self._store[a:name]  = a:data\n  execute s:hlmgr.command(a:name, a:data.defstr)\n  return a:name\nendfunction\n\nfunction! s:hlmgr.find_name(defstr) \"{{{1\n  for [name, color] in items(self._store)\n    if color.defstr ==# a:defstr\n      return name\n    endif\n  endfor\n  return ''\nendfunction\n\nfunction! s:hlmgr.command(name, defstr) \"{{{1\n  return printf('highlight %s %s', a:name, a:defstr)\nendfunction\n\nfunction! s:hlmgr.refresh() \"{{{1\n  for [name, color] in items(self._store)\n    call self.define(name, color)\n  endfor\nendfunction\n\nfunction! s:hlmgr.color_name_next() \"{{{1\n  return printf( self._prefix . '%03d', len(self._store))\nendfunction\n\nfunction! s:hlmgr.clear() \"{{{1\n  for color in self.colors()\n    execute 'highlight clear' color\n  endfor\nendfunction\n\nfunction! s:hlmgr.colors() \"{{{1\n  return keys(self._store)\nendfunction\n\nfunction! s:hlmgr.hl_defstr(color) \"{{{1\n  \" return 'guibg=DarkGreen gui=bold' (Type: String)\n  let R = []\n  let screen = s:GUI ? 'gui' : 'cterm'\n\n  let color = a:color[screen]\n  \"[NOTE] empty() is not appropriate, cterm color is specified with number\n  for [idx, s] in [[ 0, 'bg' ], [ 1, 'fg' ] ,[ 2, ''] ]\n    let c = get(color, idx, -1)             \n    if type(c) is s:TYPE_STRING && empty(c) \n      continue                              \n    elseif type(c) is s:TYPE_NUMBER && c ==# -1\n      continue                              \n    endif                                   \n    call add(R, printf('%s%s=%s', screen, s, color[idx]))\n  endfor\n  return join(R)\nendfunction\n                                                                         \nfunction! choosewin#hlmanager#new(prefix) \"{{{1\n  return deepcopy(s:hlmgr).init(a:prefix)\nendfunction \"}}}\n\" vim: foldmethod=marker\n"
  },
  {
    "path": ".vim/bundle/vim-choosewin/autoload/choosewin/overlay.vim",
    "content": "let s:FONT_MAX = {}\nlet s:FONT_MAX.small = { 'width':  5, 'height':  8 }\nlet s:FONT_MAX.large = { 'width': 16, 'height': 10 }\n\nlet s:vim_options_global = {\n      \\ '&cursorline': 0,\n      \\ '&scrolloff':  0,\n      \\ '&lazyredraw': 1,\n      \\ }\n\nlet s:vim_options_buffer = {\n      \\ '&modified':   0,\n      \\ '&modifiable': 1,\n      \\ '&readonly':   0,\n      \\ '&buftype':    '',\n      \\ }\n\nlet s:vim_options_window = {\n      \\ '&wrap':         0,\n      \\ '&list':         0,\n      \\ '&foldenable':   0,\n      \\ '&conceallevel': 0,\n      \\ }\n\n\" Util:\nfunction! s:intrpl(string, vars) \"{{{1\n  let mark = '\\v\\{(.{-})\\}'\n  return substitute(a:string, mark,'\\=a:vars[submatch(1)]', 'g')\nendfunction\n\nfunction! s:str_split(str) \"{{{1\n  return split(a:str, '\\zs')\nendfunction\n\nfunction! s:uniq(list) \"{{{1\n  let R = {}\n  for l in a:list\n    let R[l] = 1\n  endfor\n  return map(keys(R), 'str2nr(v:val)')\nendfunction\n\nfunction! s:buffer_options_set(bufnr, options) \"{{{1\n  let R = {}\n  for [var, val] in items(a:options)\n    let R[var] = getbufvar(a:bufnr, var)\n    call setbufvar(a:bufnr, var, val)\n    unlet var val\n  endfor\n  return R\nendfunction\n\nfunction! s:buffer_options_restore(bufnr, options) \"{{{1\n  for [var, val] in items(a:options)\n    call setbufvar(a:bufnr, var, val)\n    unlet var val\n  endfor\nendfunction\n\nfunction! s:window_options_set(winnr, options) \"{{{1\n  let R = {}\n  for [var, val] in items(a:options)\n    let R[var] = getwinvar(a:winnr, var)\n    call setwinvar(a:winnr, var, val)\n    unlet var val\n  endfor\n  return R\nendfunction\n\nfunction! s:window_options_restore(winnr, options) \"{{{1\n  for [var, val] in items(a:options)\n    call setwinvar(a:winnr, var, val)\n    unlet var val\n  endfor\nendfunction\n\nfunction! s:undobreak() \"{{{1\n  let &undolevels = &undolevels\n  \" silent exec 'normal!' \"i\\<C-g>u\\<ESC>\"\nendfunction\n\nfunction! s:undoclear() \"{{{1\n  let undolevels_org = &undolevels\n  let &undolevels = -1\n  noautocmd execute \"normal! a \\<BS>\\<Esc>\"\n  let &undolevels = undolevels_org\nendfunction\n\n\" s:strchars() \"{{{1\nif exists('*strchars')\n  function! s:strchars(str)\n    return strchars(a:str)\n  endfunction\nelse\n  function! s:strchars(str)\n    return strlen(substitute(str, \".\", \"x\", \"g\"))\n  endfunction\nendif\n\"}}}\nfunction! s:include_multibyte_char(str) \"{{{1\n  return strlen(a:str) !=# s:strchars(a:str)\nendfunction\n\nfunction! s:mbstrpart(s, col) \"{{{1\n  let str = ''\n  for c in split(a:s, '\\zs')\n    let str .= c\n    if strdisplaywidth(str) > a:col\n      break\n    endif\n  endfor\n  return str\nendfunction\n\nfunction! s:mb_fill_space(str, col, width) \"{{{1\n  let str = s:mbstrpart(a:str, a:col)\n  let pad = a:width - strdisplaywidth(str)\n  return [ str . repeat(' ', pad) , strlen(str)]\nendfunction\n\"}}}\n\n\" Overlay:\nlet s:overlay = {}\n\nfunction! s:overlay.init() \"{{{1\n  let self.hlter             = choosewin#highlighter#get()\n  let self._font_table       = {}\n  let self._font_table.large = choosewin#font#large()\n  let self._font_table.small = choosewin#font#small()\n  let self.color             = self.hlter.color\nendfunction\n\nfunction! s:overlay._fill_space(lines, width) \"{{{1\n  let width = (a:width + s:FONT_MAX.large.width) / 2\n  for line in a:lines\n    let line_s = getline(line)\n    if self.conf['overlay_clear_multibyte'] && s:include_multibyte_char(line_s)\n      let line_new = repeat(' ', width)\n    else\n      let line_new = substitute(line_s, \"\\t\", repeat(\" \", &tabstop), 'g')\n      let line_new .= repeat(' ' , max([ width - len(line_new), 0 ]))\n    endif\n    call setline(line, line_new)\n  endfor\nendfunction\n\nfunction! s:overlay.setup_winvar() \"{{{1\n  for winnr in self.wins\n    noautocmd execute winnr 'wincmd w'\n\n    let wv          = {}\n    let wv.pos_org  = getpos('.')\n    let wv.winview  = winsaveview()\n    let wv.options  = s:window_options_set(winnr, s:vim_options_window)\n    let wv['w0']    = line('w0')\n    let wv['w$']    = line('w$')\n    let wh = winheight(0)\n\n    let font_size = self.conf['overlay_font_size']\n    if font_size ==# 'auto'\n      let font_size = winheight(0) > s:FONT_MAX.large.height ? 'large' : 'small'\n    endif\n\n    let font        = self.next_font(font_size)\n    let wv.font     = font\n    let line_s      = line('w0') + max([ 1 + (winheight(0) - s:FONT_MAX[font_size].height)/2, 0 ])\n    let line_e      = line_s + font.height - 1\n    let col         = max([(winwidth(0) - s:FONT_MAX[font_size].width)/2 , 1 ])\n\n    let wv.matchids = []\n    let wv.pattern  = s:intrpl(font.pattern, s:vars([line_s, col], font.width, font.height))\n\n    let w:choosewin = wv\n\n    let b:choosewin.render_lines += range(line_s, line_e)\n    let b:choosewin.winwidth     += [winwidth(0)]\n  endfor\n  noautocmd execute self.winnr_org 'wincmd w'\nendfunction\n\nfunction! s:overlay.setup(wins, conf) \"{{{1\n  let self.conf           = a:conf\n  let self.options_global = s:buffer_options_set(bufnr(''), s:vim_options_global)\n  let self.font_idx       = 0\n  let self.captions       = self.conf['label']\n  let self.wins           = a:wins\n  let self.winnr_org      = winnr()\n  let self.bufs           = s:uniq(tabpagebuflist(tabpagenr()))\n\n  for bufnr in self.bufs\n    call setbufvar(bufnr, 'choosewin', {\n          \\ 'render_lines': [],\n          \\ 'winwidth':     [],\n          \\ 'options':      {},\n          \\ 'undofile':     tempname(),\n          \\ })\n  endfor\nendfunction\n\nfunction! s:overlay.setup_buffer()\n  for bufnr in self.bufs\n    noautocmd execute bufwinnr(bufnr) 'wincmd w'\n\n    execute 'wundo' b:choosewin.undofile\n    let b:choosewin.options = s:buffer_options_set(bufnr, s:vim_options_buffer)\n    call s:undobreak()\n\n    let render_lines = s:uniq(b:choosewin.render_lines)\n    let append         = max([max(render_lines) - line('$'), 0 ])\n    call append(line('$'), map(range(append), '\"\"'))\n    call self._fill_space(render_lines, max(b:choosewin.winwidth))\n  endfor\n  noautocmd execute self.winnr_org 'wincmd w'\nendfunction\n\nfunction! s:overlay.show_label() \"{{{1\n  for winnr in self.wins\n    noautocmd execute winnr 'wincmd w'\n    call self.hl_shade()\n    call self.hl_shade_trailingWS()\n    call self.hl_label(winnr ==# self.winnr_org)\n  endfor\n  noautocmd execute self.winnr_org 'wincmd w'\n  redraw\nendfunction\n\nfunction! s:overlay.render(wins, label) \"{{{1\n  call self.setup(a:wins, a:label)\n  call self.setup_winvar()\n  call self.setup_buffer()\n  call self.show_label()\nendfunction\n\nfunction! s:overlay.restore_buffer() \"{{{1\n  for bufnr in self.bufs\n    noautocmd execute bufwinnr(bufnr) 'wincmd w'\n    try\n      if !exists('b:choosewin') | continue | endif\n      if &modified\n        noautocmd keepjump silent undo\n      endif\n      if filereadable(b:choosewin.undofile)\n        silent execute 'rundo' b:choosewin.undofile\n      else\n        call s:undoclear()\n      endif\n      call s:buffer_options_restore(str2nr(bufnr), b:choosewin.options)\n    catch\n      unlet b:choosewin\n    endtry\n  endfor\nendfunction\n\nfunction! s:overlay.restore_window() \"{{{1\n  for winnr in self.wins\n    noautocmd execute winnr 'wincmd w'\n    if !exists('w:choosewin') | continue | endif\n\n    try\n      for mid in w:choosewin.matchids\n        call matchdelete(mid)\n      endfor\n      call setpos('.', w:choosewin.pos_org)\n      call s:window_options_restore(str2nr(winnr), w:choosewin.options)\n      call winrestview(w:choosewin.winview)\n    catch\n      unlet w:choosewin\n    endtry\n  endfor\n  noautocmd execute self.winnr_org 'wincmd w'\nendfunction\n\nfunction! s:overlay.restore() \"{{{1\n  try\n    call self.restore_buffer()\n    call self.restore_window()\n  finally\n    call s:buffer_options_restore(bufnr(''), self.options_global)\n  endtry\nendfunction\n\nfunction! s:overlay.hl_shade() \"{{{1\n  if !self.conf['overlay_shade']\n    return\n  endif\n  let pattern = printf('\\v%%%dl\\_.*%%%dl', w:choosewin['w0'], w:choosewin['w$'])\n  call add(w:choosewin.matchids,\n        \\ matchadd(self.color.Shade, pattern, self.conf['overlay_shade_priority']))\nendfunction\n\nfunction! s:overlay.hl_shade_trailingWS() \"{{{1\n  call add(w:choosewin.matchids,\n        \\ matchadd(self.color.Shade, '\\s\\+$', self.conf['overlay_shade_priority']))\nendfunction\n\nfunction! s:overlay.next_font(size) \"{{{1\n  let font = self._font_table[a:size][self.captions[self.font_idx]]\n  let self.font_idx += 1\n  return font\nendfunction\n\nfunction! s:overlay.hl_label(is_current) \"{{{1\n  let mid = matchadd(\n        \\ self.color[ a:is_current ? 'OverlayCurrent': 'Overlay' ],\n        \\ w:choosewin.pattern,\n        \\ self.conf['overlay_label_priority'])\n  call add(w:choosewin.matchids, mid)\nendfunction\n\nfunction! s:vars(pos, width, height) \"{{{1\n  let line = a:pos[0]\n  let col  = a:pos[1]\n  let R    = { 'line': line, 'col': col }\n\n  for line_offset in range(0, a:height - 1)\n    let R['line+' . line_offset] = line + line_offset\n  endfor\n\n  for col_offset in range(0, a:width)\n    let R['col+' . col_offset] = col + col_offset\n  endfor\n  return R\nendfunction\n\nfunction! s:overlay.get() \"{{{1\n  if !has_key(self, '_font_table')\n    call s:overlay.init()\n  endif\n  return self\nendfunction\n\nfunction! choosewin#overlay#get() \"{{{1\n  return s:overlay.get()\nendfunction\n\"}}}\n\ncall s:overlay.init()\n\" vim: foldmethod=marker\n"
  },
  {
    "path": ".vim/bundle/vim-choosewin/autoload/choosewin.vim",
    "content": "\" Constant:\nlet s:NOT_FOUND       = -1\nlet s:TYPE_FUNCTION   = 2\nlet s:TYPE_DICTIONARY = 4\n\n\" Utility:\nfunction! s:msg(msg) \"{{{1\n  if !empty(a:msg)\n    echohl Type\n    echon 'choosewin: '\n    echohl Normal\n  endif\n  echon a:msg\nendfunction\n\nfunction! s:dict_invert(dict) \"{{{1\n  let R = {}\n  for [c, w] in items(copy(a:dict))\n    let R[w] = c\n  endfor\n  return R\nendfunction\n\nfunction! s:echohl(hlname) \"{{{1\n  execute 'echohl' a:hlname\nendfunction\n\nfunction! s:get_ic(table, char, default) \"{{{1\n  \" get ignore case\n  let R = ''\n  for char in [ a:char, tolower(a:char), toupper(a:char) ]\n    let R = get(a:table, char, a:default)\n    if R != a:default\n      return R\n    endif\n  endfor\n  return R\nendfunction\n\nfunction! s:options_replace(options) \"{{{1\n  let R = {}\n  let curbuf = bufnr('')\n  for [var, val] in items(a:options)\n    let R[var] = getbufvar(curbuf, var)\n    call setbufvar(curbuf, var, val)\n    unlet var val\n  endfor\n  return R\nendfunction\n\nfunction! s:options_restore(options) \"{{{1\n  for [var, val] in items(a:options)\n    call setbufvar(bufnr(''), var, val)\n    unlet var val\n  endfor\nendfunction\n\nfunction! s:str_split(str) \"{{{1\n  return split(a:str, '\\zs')\nendfunction\n\"}}}\n\n\" Main:\nlet s:cw = {}\nfunction! s:cw.get_env() \"{{{1\n  return {\n        \\ 'win': { 'cur': winnr(),     'all': self.win_all() },\n        \\ 'tab': { 'cur': tabpagenr(), 'all': self.tab_all() },\n        \\ }\nendfunction\n\nfunction! s:cw.tab_all() \"{{{1\n  return range(1, tabpagenr('$'))\nendfunction\n\nfunction! s:cw.win_all() \"{{{1\n  return range(1, winnr('$'))\nendfunction\n\nfunction! s:cw.statusline_save(winnums) \"{{{1\n  for win in a:winnums\n    let self.statusline[win] = getwinvar(win, '&statusline')\n  endfor\nendfunction\n\nfunction! s:cw.blink_cword() \"{{{1\n  if ! self.conf['blink_on_land']\n    return\n  endif\n  for i in range(2)\n    let id = matchadd(self.color.Land, s:cword_pattern) | redraw | sleep 80m\n    call matchdelete(id)                                | redraw | sleep 80m\n  endfor\nendfunction\nlet s:cword_pattern = '\\k*\\%#\\k*'\n\nfunction! s:cw.statusline_replace(winnums) \"{{{1\n  call self.statusline_save(a:winnums)\n\n  for win in a:winnums\n    let s = self.prepare_label(win, self.conf['label_align'])\n    call setwinvar(win, '&statusline', s)\n  endfor\nendfunction\n\nfunction! s:cw.statusline_restore() \"{{{1\n  for [win, val] in items(self.statusline)\n    call setwinvar(win, '&statusline', val)\n  endfor\nendfunction\n\nfunction! s:cw.prepare_label(win, align) \"{{{1\n  let pad   = repeat(' ', self.conf['label_padding'])\n  let label = self.win2label[a:win]\n  let win_s = pad . label . pad\n  let color = winnr() ==# a:win\n        \\ ? self.color.LabelCurrent\n        \\ : self.color.Label\n\n  if a:align ==# 'left'\n    return printf('%%#%s# %s %%#%s# %%= ', color, win_s, self.color.Other)\n\n  elseif a:align ==# 'right'\n    return printf('%%#%s# %%= %%#%s# %s ', self.color.Other, color, win_s)\n\n  elseif a:align ==# 'center'\n    let padding = repeat(' ', winwidth(a:win)/2-len(win_s))\n    return printf('%%#%s# %s %%#%s# %s %%#%s# %%= ',\n          \\ self.color.Other, padding, color, win_s, self.color.Other)\n  endif\nendfunction\n\nfunction! s:cw.tabline() \"{{{1\n  let R         = ''\n  let pad   = repeat(' ', self.conf['label_padding'])\n  let sepalator = printf('%%#%s# ', self.color.Other)\n  for tabnum in self.env.tab.all\n    let color = tabpagenr() ==# tabnum\n          \\ ? self.color.LabelCurrent\n          \\ : self.color.Label\n\n    let R .= printf('%%#%s# %s ', color,  pad . self.get_tablabel(tabnum) . pad)\n    let R .= tabnum !=# self.env.tab.all[-1] ? sepalator : ''\n  endfor\n  let R .= printf('%%#%s#', self.color.Other)\n  return R\nendfunction\n\nfunction! s:cw.get_tablabel(tabnum)\n  return get(self._tablabel_split, a:tabnum - 1, '..')\nendfunction\n\nfunction! s:cw.label2num(nums, label) \"{{{1\n  let R = {}\n  if empty(a:label)\n    return R\n  endif\n  let nums = copy(a:nums)\n  let label = s:str_split(a:label)\n  while 1\n    let R[remove(label, 0)] = remove(nums, 0)\n    if empty(nums) || empty(label)\n      break\n    endif\n  endwhile\n\n  return R\nendfunction\n\nfunction! s:cw.winlabel_init(winnums, label) \"{{{1\n  let self.label2win  = self.label2num(a:winnums, a:label)\n  let self.win2label  = s:dict_invert(self.label2win)\nendfunction\n\nfunction! s:cw.tablabel_init(tabnums, label) \"{{{1\n  let self.label2tab  = self.label2num(a:tabnums, a:label)\n  let self.tab2label  = s:dict_invert(self.label2tab)\nendfunction\n\nfunction! s:cw.init() \"{{{1\n  let self.exception       = ''\n  let self.statusline      = {}\n  let self.tablabel        = self.conf['tablabel']\n  let self._tablabel_split = s:str_split(self.tablabel)\n  let self.tab_options         = {}\n  let self.win_dest        = ''\n  let self.env             = self.get_env()\n  let self.env_orig        = deepcopy(self.env)\n  let self.keymap          = filter(\n        \\ extend(self.keymap_default(), self.conf['keymap']),\n        \\ \"v:val !=# '<NOP>'\")\n\n  if self.conf['overlay_enable']\n    let self.overlay = choosewin#overlay#get()\n  endif\n  call self.tablabel_init(self.env.tab.all, self.tablabel)\nendfunction\n\nfunction! s:cw.keymap_default() \"{{{1\n  return {\n        \\ '0':     'tab_first',\n        \\ '[':     'tab_prev',\n        \\ ']':     'tab_next',\n        \\ '$':     'tab_last',\n        \\ ';':     'win_land',\n        \\ \"\\<CR>\": 'win_land',\n        \\ }\nendfunction\n\nfunction! s:cw.prompt_show(prompt) \"{{{1\n  echohl PreProc  | echon a:prompt | echohl Normal\nendfunction\n\nfunction! s:cw.read_input() \"{{{1\n  redraw\n  call self.prompt_show('choose > ')\n  return nr2char(getchar())\nendfunction\n\nfunction! s:cw.config() \"{{{1\n  return {\n        \\ 'statusline_replace':        g:choosewin_statusline_replace,\n        \\ 'tabline_replace':           g:choosewin_tabline_replace,\n        \\ 'overlay_enable':            g:choosewin_overlay_enable,\n        \\ 'overlay_font_size':         g:choosewin_overlay_font_size,\n        \\ 'overlay_shade':             g:choosewin_overlay_shade,\n        \\ 'overlay_shade_priority':    g:choosewin_overlay_shade_priority,\n        \\ 'overlay_label_priority':    g:choosewin_overlay_label_priority,\n        \\ 'overlay_clear_multibyte':   g:choosewin_overlay_clear_multibyte,\n        \\ 'label_align':               g:choosewin_label_align,\n        \\ 'label_padding':             g:choosewin_label_padding,\n        \\ 'label_fill':                g:choosewin_label_fill,\n        \\ 'blink_on_land':             g:choosewin_blink_on_land,\n        \\ 'return_on_single_win':      g:choosewin_return_on_single_win,\n        \\ 'label':                     g:choosewin_label,\n        \\ 'keymap':                    g:choosewin_keymap,\n        \\ 'tablabel':                  g:choosewin_tablabel,\n        \\ 'hook':                      g:choosewin_hook,\n        \\ 'hook_enable':               g:choosewin_hook_enable,\n        \\ 'hook_bypass':               g:choosewin_hook_bypass,\n        \\ 'auto_choose':               0,\n        \\ 'noop':                      0,\n        \\ }\nendfunction\n\nfunction! s:cw.tab_choose(num) \"{{{1\n  silent execute 'tabnext ' a:num\n  let self.env.tab.cur = a:num\nendfunction\n\nfunction! s:cw.win_choose(num, ...) \"{{{1\n  let self.env.win.cur = a:num\n  let noop = get(a:000, 0)\n  if noop\n    return\n  endif\n  silent execute a:num 'wincmd w'\nendfunction\n\nfunction! s:cw.choose(winnum, winlabel) \"{{{1\n  let [action, num] = self.get_action(self.read_input())\n  if action ==# 'tab'\n    if num ==# self.env.tab.cur\n      return\n    endif\n    call self.label_clear()\n    call self.tab_choose(num)\n    call self.label_show(self.win_all(), a:winlabel)\n    return\n  elseif action ==# 'win'\n    let self.win_dest = num\n    call self.label_clear()\n    throw 'CHOOSED'\n  elseif action ==# 'cancel'\n    call self.label_clear()\n    call self.tab_choose(self.env_orig.tab.cur)\n    call self.win_choose(self.env_orig.win.cur)\n    throw 'CANCELED'\n  endif\nendfunction\n\nfunction! s:cw.get_action(input) \"{{{1\n  \" [ kind, arg ] style\n  for kind in [ 'tab', 'win']\n    let num = s:get_ic(self['label2'. kind], a:input, s:NOT_FOUND)\n    if num isnot s:NOT_FOUND\n      return [ kind, num ]\n    endif\n  endfor\n\n  let action = get(self.keymap, a:input)\n  if !empty(action)\n    if action =~# 'tab_'\n      let tabn =\n            \\ action ==# 'tab_first' ? 1 :\n            \\ action ==# 'tab_prev'  ? max([1, self.env.tab.cur - 1]) :\n            \\ action ==# 'tab_next'  ? min([tabpagenr('$'), self.env.tab.cur + 1]) :\n            \\ action ==# 'tab_last'  ? tabpagenr('$') :\n            \\ s:NOT_FOUND\n\n      if tabn is s:NOT_FOUND\n        throw 'UNKNOWN_ACTION'\n      endif\n\n      return [ 'tab', tabn ]\n    elseif action ==# 'win_land'\n      return [ 'win', winnr() ]\n    else\n      throw 'UNKNOWN_ACTION'\n    endif\n  endif\n\n  return [ 'cancel', 1 ]\nendfunction\n\nfunction! s:cw.land_win(winnum) \"{{{1\n  call self.win_choose(a:winnum, self.conf['noop'])\n  call self.blink_cword()\nendfunction\n\"}}}\n\nlet s:vim_tab_options = {\n      \\ '&tabline':     '%!choosewin#tabline()',\n      \\ '&guitablabel': '%{choosewin#get_tablabel(v:lnum)}',\n      \\ }\n\nfunction! s:cw.last_status() \"{{{1\n  if !empty(self.exception)\n    if self.exception =~# 'CANCELED\\|RETURN'\n      return []\n    else\n      return [ self.env.tab.cur, self.env.win.cur ]\n    endif\n  endif\nendfunction\n\nfunction! s:cw.valid_winnums(winnums) \"{{{1\n  return filter(copy(a:winnums), ' index(self.win_all(), v:val) != -1 ')\nendfunction\n\nfunction! s:cw.call_hook(hook_point, arg) \"{{{1\n  if !self.conf['hook_enable']\n        \\ || index(self.conf['hook_bypass'], a:hook_point ) !=# -1\n    return a:arg\n  endif\n  let HOOK = get(self.conf['hook'], a:hook_point, 0)\n  if type(HOOK) is s:TYPE_FUNCTION\n    return call(HOOK, [a:arg], {})\n  else\n    return a:arg\n  endif\nendfunction\n\nfunction! s:cw.label_show(winnums, winlabel) \"{{{1\n  try\n    \" don't copy(a:winnums) intentionally for performance\n    let winnums = self.call_hook('filter_window', a:winnums)\n  catch\n    let winnums = a:winnums\n  endtry\n  let winnums = winnums[ : len(a:winlabel) - 1 ]\n\n  call self.winlabel_init(winnums, a:winlabel)\n\n  if self.conf['statusline_replace']\n    call self.statusline_replace(winnums)\n  endif\n  if self.conf['overlay_enable']\n    call self.overlay.render(winnums, self.conf)\n  endif\n  redraw\nendfunction\n\nfunction! s:cw.label_clear() \"{{{1\n  if self.conf['statusline_replace']\n    call self.statusline_restore()\n  endif\n  if self.conf['overlay_enable']\n    call self.overlay.restore()\n  endif\nendfunction\n\nfunction! s:cw.tab_replace() \"{{{1\n  if !self.conf['tabline_replace']\n    return\n  endif\n  let self.tab_options = s:options_replace(s:vim_tab_options)\nendfunction\n\nfunction! s:cw.tab_restore() \"{{{1\n  if !self.conf['tabline_replace']\n    return\n  endif\n  call s:options_restore(self.tab_options)\nendfunction\n\nfunction! s:cw.first_path(winnums) \"{{{1\n  if empty(a:winnums)\n    throw 'RETURN'\n  endif\n  if len(a:winnums) ==# 1\n    if self.conf['auto_choose']\n      let self.win_dest = a:winnums[0]\n      throw 'CHOOSED'\n    elseif self.conf['return_on_single_win']\n      throw 'RETURN'\n    endif\n  endif\nendfunction\n\nfunction! s:cw.start(winnums, ...) \"{{{1\n  let self.conf  = extend(self.config(), get(a:000, 0, {}), 'force')\n  let self.hlter = choosewin#highlighter#get()\n  let self.color = self.hlter.color\n  let winnums    = self.valid_winnums(a:winnums)\n\n  try\n    call self.state_update(1)\n    call self.init()\n    call self.first_path(winnums)\n\n    call self.tab_replace()\n    call self.label_show(winnums, self.conf['label'])\n    while 1\n      call self.choose(self.win_all(), self.conf['label'])\n    endwhile\n  catch\n    let self.exception = v:exception\n  finally\n    call self.finish()\n    call self.state_update(0)\n    return self.last_status()\n  endtry\nendfunction\n\nfunction! s:cw.state_update(state) \"{{{1\n  \" for statusline plugin\n  let g:choosewin_active = a:state\n  \" let &readonly = &readonly\n  \" redraw\nendfunction\n\nfunction! s:cw.message() \"{{{1\n  if self.exception =~# 'CHOOSED\\|RETURN'\n    return\n  endif\n  call s:msg(self.exception)\nendfunction\n\nfunction! s:cw.finish() \"{{{1\n  call self.tab_restore()\n  echo '' | redraw\n  if self.conf['noop'] && self.env.tab.cur !=# self.env_orig.tab.cur\n    silent execute 'tabnext ' self.env_orig.tab.cur\n  endif\n  if !empty(self.win_dest)\n    call self.land_win(self.win_dest)\n  endif\n  call self.message()\nendfunction\n\nfunction! choosewin#start(...) \"{{{1\n  return call(s:cw.start, a:000, s:cw)\nendfunction\n\nfunction! choosewin#tabline() \"{{{1\n  return s:cw.tabline()\nendfunction\n\nfunction! choosewin#config() \"{{{1\n  return s:cw.config()\nendfunction\n\nfunction! choosewin#get_tablabel(tabnum) \"{{{1\n  return s:cw.get_tablabel(a:tabnum)\nendfunction\n\"}}}\n\" vim: foldmethod=marker\n"
  },
  {
    "path": ".vim/bundle/vim-choosewin/doc/choosewin.txt",
    "content": "*choowsewin.txt* land to window you choose like tmux's 'display-pane'.\n\nVersion: 1.3\nAuthor : t9md <taqumd@gmail.com>\nGitHub : https://github.com/t9md/vim-choowsewin\n==============================================================================\nCONTENTS\t\t\t\t\t*choowsewin-contents*\n\nIntroduction\t\t\t\t    |choowsewin-introduction|\nMapping\t\t\t\t\t    |choowsewin-mapping|\nCommands\t\t\t\t    |choowsewin-commands|\nVariables\t\t\t\t    |choowsewin-variables|\nFunctions\t\t\t\t    |choowsewin-functions|\nConfiguration Example\t\t\t    |choowsewin-example|\nBug\t\t\t\t\t    |choowsewin-bug|\nTodo\t\t\t\t\t    |choowsewin-todo|\nChangelog\t\t\t\t    |choowsewin-changelog|\n\n==============================================================================\nINTRODUCTION\t\t\t\t\t*choowsewin-introduction*\n\nLand to window you choose~\n\nAiming to mimic tmux's `display-pane` feature, which enables you to choose\nwindow interactively.\n\nThis plugin should be useful especially when you are working on high\nresolution wide display.\nSince with wide display, you are likely to open multiple window and\nmoving around window is a little bit tiresome.\n\n\nThis plugin simplifies window excursion.\n\n\t1. Display window label on statusbar.\n\t2. Read input from user.\n\t3. You can land window you choose.\n\n==============================================================================\nMAPPINGS\t\t\t\t\t*choowsewin-mappings*\n\n<Plug>(choosewin)\n\n==============================================================================\nCOMMANDS\t\t\t\t\t\t*choowsewin-commands*\n\n*:ChooseWin*\n\n==============================================================================\nVARIABLES\t\t\t\t\t\t*choowsewin-variables*\n\n*g:choosewin_statusline_replace*\n\tDefault: 1\n\tType: Number\n\n*g:choosewin_color_label*\n\tDefault: See plugin/choosewin.vim\n\tType: |Dictionary|\n\n\tSet color with collowing fomrat.\n\t{\n\t  'gui': [ {guibg}, {guifg}, {gui} ],\n\t  'cterm': [ {ctermbg}, {ctermfg}, {cterm}]\n\t}\n\n\tYou can omit unused color, means if you use vim only GUI, you don't\n\tneed to configure 'cterm' field.\n\tAnd if you want set {guifg} but not {guibg}, use empty string('') like\n>\n\tlet g:choosewin_color_label = { 'gui': ['', 'white'] }\n<\n\n\tExeample~\n>\n\tlet g:choosewin_color_label = {\n\t      \\ 'gui': ['ForestGreen', 'white', 'bold'],\n\t      \\ 'cterm': [ 9, 16]\n\t      \\ }\n\tlet g:choosewin_color_other = {\n\t      \\ 'gui': ['gray20', 'black'],\n\t      \\ 'cterm': [ 240, 0]\n\t      \\ }\n<\n\n*g:choosewin_color_overlay*\n\tcolor of overlay window caption\n*g:choosewin_color_overlay_current*\n\tcolor of overlay window caption for current window\n*g:choosewin_color_shade*\n\tcolor of shade\n*g:choosewin_color_label_current*\n\tcolor of label for current win/tab\n*g:choosewin_color_other*\n\tcolor of around-label win/tab\n*g:choosewin_color_land*\n\tUsed to blink cursor word when landing to window.\n\n*g:choosewin_blink_on_land*\n\tDefault: 1\n\tType: |Number| 0 or 1\n\tControl whether blinking cursor word when landing window.\n\tSet 0 to disable blinking.\n\n*g:choosewin_label*\n\tDefault: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n\tType: |String|\n\n\t[CAUTION] You need to manage to avoid conflict to\n\t|g:choosewin_tablabel| or you can't choose label you want.\n\n\t[NOTE] choosewin ignore case you input so that you don't need to\n\tpress Shift. This is for show label with upper case to standout and\n\tchoose label with minimal key stroke.\n\n\tExample~\n>\n\tlet g:choosewin_label = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n<\n*g:choosewin_tablabel*\n\tDefault: '123456789'\n\tType: |String|\n\t[CAUNTION] You need to manage to avoid conflict to\n\t|g:choosewin_label| or you can't choose label you want.\n\n*g:choosewin_keymap*\n\tDefault: {}\n\tType: |Dictionary|\n\n\tUsed to customize keymap while choosing.\n\tDefault keymap is below.\n\n\t| Key  | Action     | Description                |\n\t| ---- | ---------- | -------------------------- |\n\t| 0    | tab_first  | choose FIRST    tab        |\n\t| [    | tab_prev   | choose PREVIOUS tab        |\n\t| ]    | tab_next   | choose NEXT     tab        |\n\t| $    | tab_last   | choose LAST     tab        |\n\t| ;    | win_land   | land to current window     |\n\t| <CR> | win_land   | land to current window     |\n\t|      | <NOP>      | disable predefined keymap  |\n\n\tDisabling default keymap~\n\n\tTo disable default keymap, you can use special action '<NOP>'.\n\tThe key set to '<NOP>' will be deleted(unmapped) from keytable.\n\n\tCustomization example~\n>\n\tlet g:choosewin_keymap   = {}         \" initialize as Dictionary\n\tlet g:choosewin_keymap.m = 'win_land' \" land with 'm'\n\tlet g:choosewin_keymap.0 = '<NOP>'    \" disable default 0 keybind\n<\n\n*g:choosewin_label_align*\n\tDefault: 'center'\n\tOne of 'right', 'center', 'left'\n\n*g:choosewin_label_padding*\n\tDefault: 3\n\tType: |Number|\n\tControl padding concatenated around window label.\n\n*g:choosewin_label_fill*\n\tDefault: 0\n\tType: |Number|\n\tSet 1 to fill statusline\n\n*g:choosewin_return_on_single_win*\n\tDefault: 0\n\tType: |Number|\n\tSet 1 to return immediately when number of window is 1.\n\n*g:choosewin_overlay_enable*\n\tDefault: 0\n\tType: |Number|\n\tEnable overlay window caption.\n\n\tLimitation~\n\tNot work properly in following situation.\n\t\t- buffer includes multibyte characters\n\t\t  You can use |g:choosewin_overlay_clear_multibyte| as\n\t\t  workaround.\n\n\tHow It works~\n\tPurpose of this section is make you understand trade-off of overlay.\n\t\tGood:\tEasy to spot window label than it on |&statusline|.\n\t\tBad:\tToo aggressive for merely show caption and slow.\n\n\tWhat 'too agressive' means,\n\t\t- change buffer temporarily\n\t\t\t1. Substitute tab to space\n\t\t\t2. Append space to rendering area\n\t\t\t3. Append empty line to EOF.\n\t\t- Then highlight caption font with matchadd()\n\t\t- when reverting undo all changes.\n\n*g:choosewin_overlay_font_size*\n\tDefault: 'auto'\n\tType: |String|\n\tValue: must be 'auto', 'small', 'large'\n\tSpecify overlay font size.\n\t'auto' determine appropriate font size based on window height.\n\n*g:choosewin_overlay_shade*\n\tDefault: 0\n\tType: |Number|\n\tEnable shade where overlay window caption is rendered.\n\n*g:choosewin_overlay_clear_multibyte*\n\tDefault: 0\n\tType: |Number|\n\tWhen caption rendering area include multiple chars, clear out caption\n\trendering area first before overlay.\n\tUseful when buffer contains multibyte character, which break window\n\tcaption font because 1 char is not necessarily 1 byte.\n\n*g:choosewin_overlay_shade_priority*\n\tDefault: 100\n\tType: |Number|\n\tHighlight priority value, this value passed to matchadd() at overlay.\n\n*g:choosewin_overlay_label_priority*\n\tDefault: 101\n\tType: |Number|\n\tHighlight priority value, this value passed to matchadd() at overlay.\n\n*g:choosewin_hook_enable*\n\tDefault: 0\n\tType: |Number|\n\tValue: 0 or 1\n\n\tNeed to set 1 if you want to use hook.\n\n*g:choosewin_hook_bypass*\n\tDefault: []\n\tType: |List|\n\tValue: |List| of {hook_point}\n\n\tSee |choosewin-hook_point| for {hook_point}\n\n*g:choosewin_hook*\n\tDefault: {}\n\tType: |Dictionary|\n\tValues: { '{hookpoint}': {funcref}, ... }\n\n\tUsed to hook at specific point.\n\n\t\t\t\t\t\t\t*choosewin-hook_point*\nAvailable Hook Point~\n\n- filter_window~\n\tArgs: {winnums}\n\tType: |List|\n\tReturn: {winnums}\n\n\t{winnums}:\n\t\t|List| of window number which is subject to chose by user.\n\n\t[Example]: show label for specific window  >\n\n\tlet s:ignore_filtype = [\"unite\", \"vimfiler\", \"vimshell\", \"nerdtree\" ]\n\n\tlet g:choosewin_hook = {}\n\tfunction! g:choosewin_hook.filter_window(winnums)\n\t  return filter(a:winnums,\n\t\t\\ 'index(s:ignore_filtype,\n\t\t\\   getwinvar(v:val, \"&filetype\")) == -1' )\n\tendfunction\n\n==============================================================================\nFUNCTIONS\t\t\t\t\t\t*choowsewin-functions*\n\n\t\t\t\t\t\t\t   *choosewin#start()*\nchoosewin#start({winnum-list}, [ {config} ] )\n\tReturn: |List|\n\tValue:\n\t\tchoosed:  [ tabpagenr(), winnr() ]\n\t\tcanceled: []\n\n\t{winnum-list}:  Required\n\t\t|List| of window number.\n\n\t{config}: Optional\n\t\tType: |Dictionary|\n\n\t\tPass configuration option with { \"key\": value } format.\n\t\tThe config you passed is merged to default_config,\n\t\tSee |choosewin#config()|.\n\n\tApi-only parameters~\n\tFollowing config parameter is not provided as global\n\tconfiguration variable. So need to mention here.\n\n\tauto_choose:\n\t\tType: |Number|\n\t\tValue: 0 or 1\n\t\tSet 1 to automatically choose window when candidate window is\n\t\tonly one.\n\n\tnoop:\n\t\tType: |Number|\n\t\tValue: 0 or 1\n\t\tSet 1 don't execute window change, but return last status of\n\t\tuser's choice.\n\n\t[Example]: show label for specific window  >\n\t\" win3 => d, win4 => e, char 'f' is silently ignored.\n\tcall choosewin#start([3,4], { 'label': 'def' })\n<\n\t[Example]: automatically choose if candidate window is one. >\n\tfunction! s:is_ignore_window(winnr)\n\t  let ignore_filtype = [\"unite\", \"vimfiler\", \"vimshell\", \"nerdtree\" ]\n\t  return index(ignore_filtype, getbufvar(winbufnr(a:winnr), \"&filetype\")) != -1\n\tendfunction\n\n\tlet wins = range(1,winnr('$'))\n\tcall choosewin#start(\n\t      \\ filter(wins, '!s:is_ignore_window(v:val)'),\n\t      \\ { 'auto_choose': 1, 'hook_enable': 0 }\n\t      \\ )\n<\n\t[Example]: noop usage\n\tlet choice = choosewin#start(winnums, { 'noop': 1, 'auto_choose': 1 })\n\tif !empty(choice)\n\t  let [tab, win] = choice\n\t  execute 'tabnext' tab\n\t  execute win 'wincmd w'\n\tendif\n\n\t\t\t\t\t\t  *choosewin#config()*\nchoosewin#config()\n\tReturn: |Dictionary|\n\tYou can check initial configuration set used by choosewin.\n\tInitial means configuration at each choosewin start, 'not default',\n\tits respect your customization through global variable.\n\n==============================================================================\nCONFIGURATION EXAMPLE\t\t\t\t    *choowsewin-example*\n>\n\t\" invoke with '-'\n\tnmap  -  <Plug>(choosewin)\n\n\t\" use overlay feature\n\tlet g:choosewin_overlay_enable = 1\n\n\t\" workaround for overlay font broken on mutibyte buffer.\n\tlet g:choosewin_overlay_clear_multibyte = 1\n\n\t\" tmux like overlay color\n\tlet g:choosewin_color_overlay = {\n\t      \\ 'gui': ['DodgerBlue3', 'DodgerBlue3' ],\n\t      \\ 'cterm': [ 25, 25 ]\n\t      \\ }\n\tlet g:choosewin_color_overlay_current = {\n\t      \\ 'gui': ['firebrick1', 'firebrick1' ],\n\t      \\ 'cterm': [ 124, 124 ]\n\t      \\ }\n\n\tlet g:choosewin_blink_on_land      = 0 \" dont' blink at land\n\tlet g:choosewin_statusline_replace = 0 \" don't replace statusline\n\tlet g:choosewin_tabline_replace    = 0 \" don't replace tabline\n<\n==============================================================================\nBUG\t\t\t\t\t\t\t    *choowsewin-bug*\n\n\n==============================================================================\nTODO\t\t\t\t\t\t\t    *choowsewin-todo*\n\n[x] recover poslist properly in overlay mode\n[x] disable &lcs-trail adviced by manga-osyo\n[x] FIX API-specification\n[ ] Distinguish original tab so that user never lost while traveling tab.\n\n==============================================================================\nCHANGELOG\t\t\t\t\t\t*choowsewin-changelog*\n\n2014-01-15:\n\t- [new] add 'noop' option for api-only call\n\t- [new] add hook feature for filter_window before label_show()\n\t- [new] g:choosewin_active auto set variable intended within\n\t  &statuline plugin(such as disabling trailing space warning).\n2014-01-12:\n\t- [improve] disble cursorline while overlay\n\t- [new-feature] now support 'small' font for overlay and configurable\n\t  size you prefer. by default 'auto' mode determine font size based on\n\t  winheight(0).\n2014-01-11: v1.3\n\t- [verup] v1.3\n\t- [improve] provide '<NOP>\" special action to disable default keymap.\n\t- [improve] greatly improve overlay rendering with new pattern\n\t  compilation x2 faster now.\n2014-01-10:\n\t- [improve] disable trailing white space highlight internally.\n\t- [improve] performance and effectiveness improve by avoiding\n\t  unnecessary append blankline.\n\t- [improve] treat first_path() case as consistent manner.\n\t- [improve] eliminate invalid window at initial phrase\n2014-01-09: v1.2\n\t- verup\n2014-01-09: v1.1\n\t- [improve] now undo history cleared when undolist is empty.\n\t- [improve] recover poslist properly in overlay mode\n\t- [bugfix] for buffer buftype=nowrite,nofile, buffer was not recovered\n\t  since &modified flag is ignored.\n2014-01-08: v1.0\n\t- [improve] Add multibyte workaround.\n\t- [improve] now overlay not break since &conceallevel = 0 temporarily\n\t- [bugfix] validate valid winnum and number of label\n\t- [improve] disable fold, wrap, list adviced by manga-osyo.\n\t- [improve] separate keymap variable\n\t- [bugfix] properly clear label on tabswitch\n\t- [refactor] and stabilize\n2014-01-06:\n\t- [bugfix] Number of tab exceed length of |g:choosewin_tablabel| cause\n\t  error.\n\t- [bugfix] Experimental overlay caption break redo history.\n\t  now, keep undolist with |:rundo|, |:rundo|.\n2014-01-03:\n\t- [improve] cleanup highlight management.\n\t- [new] add experimental overlay window caption.\n2013-12-31:\n\t- [bugfixed] Number of tab exceed length of |g:choosewin_tablabel|\n\t  cause error.\n\t- [new-feature] last four char for |g:choosewin_tablabel|is used for\n\t  special tab excursion.\n\t- [bugfix] choosing tab and <Esc> don't revert original tab.\n2013-12-29:\n\t- now blinking cursor word at land so that easy to spot cursor.\n\t- [api-change] add auto-choose optional args for choowsewin#start()\n\t  suggested by hrsh7th\n2013-12-28: v0.8\n\t- now can choose tab inspired number of advice by manga-osyo\n2013-12-28: v0.6\n\t- cleanup\n\t- now independent from &statusline plugin( such as ezbar )\n2013-12-21: v0.1\n\t- initial release\n\n==============================================================================\nvim:tw=78:ts=8:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/vim-choosewin/misc/work.vim",
    "content": "\" http://patorjk.com/software/taag/#p=display&h=0&v=0&f=Big%20Money-ne&t=!%22%23%24%25%26'()*%0A%2B%2C-.%2F01234%0A56789%3A%3B%3C%3D%3E%0A%3F%40ABCDEFGH%0AIJKLMNOPQR%0ASTUVWXYZ%5B%5C%0A%5D%5E_%60abcdef%0Aghijklmnop%0Aqrstuvwxyz%0A%7B%7C%7D~%0A\nfunction! s:capture() range\n  normal! gv\n  normal! \"xy\n  let list = split(getreg('x'), \"\\n\")\n  let list = split(PP(list), \"\\n\")\n  let prefix = '\\ '\n  call map(list,\n        \\ 'v:key ==# 0 ? \"let s:<`1`> = \" . v:val : prefix . substitute(v:val, \"\\\\v\\\\s+\", \"\", \"\")')\n  call setreg('x', join(list,\"\\n\"), 'v')\nendfunction\ncommand! -nargs=? -range FontCapture call <SID>capture()\nxnoremap <F9> :FontCapture<CR>\nnnoremap <S-F9> \"xp\n\nlet s:supported_chars = join(map(range(33, 126), 'nr2char(v:val)'), '')\necho s:supported_chars\nfinish\n\nfunction! s:str_split(str) \"{{{1\n  return split(a:str, '\\zs')\nendfunction\n\nfunction! s:font_source()\n  return join(s:str_split(s:supported_chars), \"\\n\")\nendfunction\necho s:font_source()\n\" http://patorjk.com/software/taag/#p=display&f=3-D&t=abcdefghijklmnop%0Aqrstuvwxyz%7B%7C%7D!%0A\nfunction! s:prepare_ascii(chars, take) \"{{{1\n  let S = ''\n  let n = 0\n  let m = n + a:take\n  while !empty(a:chars[n : m-1])\n    let S .= a:chars[n : m-1] . \"\\n\"\n    let n += a:take\n    let m += a:take\n  endwhile\n  return S\nendfunction\n\nfunction! s:report() \"{{{1\n  echo s:supported_chars\n  echo ''\n  echo s:prepare_ascii(s:supported_chars, 10)\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-choosewin/plugin/choosewin.vim",
    "content": "\" GUARD:\nif expand(\"%:p\") ==# expand(\"<sfile>:p\")\n  unlet! g:loaded_choosewin\nendif\nif exists('g:loaded_choosewin')\n  finish\nendif\nlet g:loaded_choosewin = 1\nlet s:old_cpo = &cpo\nset cpo&vim\n\n\" Main:\nlet s:options = {\n      \\ 'g:choosewin_statusline_replace': 1,\n      \\ 'g:choosewin_tabline_replace': 1,\n      \\ 'g:choosewin_active': 0,\n      \\ 'g:choosewin_hook_enable': 0,\n      \\ 'g:choosewin_hook': {},\n      \\ 'g:choosewin_hook_bypass': [],\n      \\ 'g:choosewin_land_char': ';',\n      \\ 'g:choosewin_overlay_font_size': 'auto',\n      \\ 'g:choosewin_overlay_enable': 0,\n      \\ 'g:choosewin_overlay_shade': 0,\n      \\ 'g:choosewin_overlay_shade_priority': 100,\n      \\ 'g:choosewin_overlay_label_priority': 101,\n      \\ 'g:choosewin_overlay_clear_multibyte': 0,\n      \\ 'g:choosewin_label_align':   'center',\n      \\ 'g:choosewin_label_padding': 3,\n      \\ 'g:choosewin_label_fill':    0,\n      \\ 'g:choosewin_color_label':\n      \\      { 'gui': ['DarkGreen', 'white', 'bold'], 'cterm': [ 22, 15,'bold'] },\n      \\ 'g:choosewin_color_label_current':\n      \\      { 'gui': ['LimeGreen', 'black', 'bold'], 'cterm': [ 40, 16, 'bold'] },\n      \\ 'g:choosewin_color_overlay':\n      \\      { 'gui': ['DarkGreen', 'DarkGreen' ], 'cterm': [ 22, 22 ] },\n      \\ 'g:choosewin_color_overlay_current':\n      \\      { 'gui': ['LimeGreen', 'LimeGreen' ], 'cterm': [ 40, 40 ] },\n      \\ 'g:choosewin_color_other':\n      \\      { 'gui': ['gray20', 'black'], 'cterm': [ 240, 0] },\n      \\ 'g:choosewin_color_land':\n      \\   { 'gui':[ 'LawnGreen', 'Black', 'bold,underline'], 'cterm': ['magenta', 'white'] },\n      \\ 'g:choosewin_color_shade':\n      \\   { 'gui':[ '', '#777777'], 'cterm': ['', 'grey'] },\n      \\ 'g:choosewin_blink_on_land': 1,\n      \\ 'g:choosewin_return_on_single_win': 0,\n      \\ 'g:choosewin_label': 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',\n      \\ 'g:choosewin_keymap': {},\n      \\ 'g:choosewin_tablabel': '123456789',\n      \\ }\n\n\nfunction! s:options_set(options)\n  for [varname, value] in items(a:options)\n    if !exists(varname)\n      let {varname} = value\n    endif\n    unlet value\n  endfor\nendfunction\n\ncall s:options_set(s:options)\n\naugroup plugin-choosewin\n  autocmd!\n  autocmd ColorScheme,SessionLoadPost * call choosewin#highlighter#refresh()\naugroup END\n\n\" KeyMap:\nnnoremap <silent> <Plug>(choosewin)\n      \\ :<C-u>call choosewin#start(range(1, winnr('$')))<CR>\n\n\" Command:\ncommand! -bar ChooseWin call choosewin#start(range(1, winnr('$')))\n\n\" Finish:\nlet &cpo = s:old_cpo\n\n\" vim: foldmethod=marker\n"
  },
  {
    "path": ".vim/bundle/vim-choosewin/test/font.vim",
    "content": "\" let font_table = choosewin#font#table()\nlet s:FONT_LARGE_WIDTH_MAX = 16\nlet s:FONT_SMALL_WIDTH_MAX =  8\nlet s:hl_shade_priority = 100\nlet s:hl_label_priority = 101\n\nfunction! s:intrpl(string, vars) \"{{{1\n  let mark = '\\v\\{(.{-})\\}'\n  return substitute(a:string, mark,'\\=a:vars[submatch(1)]', 'g')\nendfunction\n\nfunction! s:vars(pos, height, width) \"{{{1\n  let line = a:pos[0]\n  let col  = a:pos[1]\n  let R    = { 'line': line, 'col': col }\n\n  for line_offset in range(0, a:height - 1)\n    let R['line+' . line_offset] = line + line_offset\n  endfor\n\n  for col_offset in range(0, a:width)\n    let R['col+' . col_offset] = col + col_offset\n  endfor\n  return R\nendfunction\n\nlet s:test = {}\nfunction! s:test.setup() \"{{{1\n  let self.table = {}\n  let self.table.small = choosewin#font#small()\n  let self.table.large = choosewin#font#large()\nendfunction\n\nfunction! s:test.font_list() \"{{{1\n  return map(range(33, 126), 'nr2char(v:val)')\nendfunction\n\nfunction! s:test.review() \"{{{1\n  call self.setup()\n  let start = reltime()\n\n  for char in self.font_list()\n    call clearmatches()\n    let large = self.table.large[char]\n    let small = self.table.small[char]\n    call self.view(large.pattern, s:vars([1, 1], large.height, large.width))\n    call self.view(small.pattern, s:vars([1,17], small.height, small.width))\n    redraw\n    sleep 100m\n  endfor\n\n  echo reltimestr(reltime(start))\nendfunction\n\nfunction! s:test.perf(size, time) \"{{{1\n  if !has_key(self, 'table')\n    call self.setup()\n  endif\n  let start = reltime()\n  \n  let vars = s:vars([1, 1], 16, 16 )\n  let table = self.table[a:size]\n  for n in range(a:time)\n    for char in self.font_list()\n      let font = table[char]\n      \" call self.overlay(font.pattern, s:vars([1, 1], font.height, font.width))\n      call self.overlay(font.pattern, vars)\n    endfor\n  endfor\n  let result = a:size . ':' . reltimestr(reltime(start))\n  echom result\nendfunction\n\nfunction! s:test.perf_all(time) \"{{{1\n  call self.perf('large', a:time)\n  call self.perf('small', a:time)\nendfunction\n\nfunction! s:test.view(pattern, vars) \"{{{1\n  return matchadd('Search',\n        \\ s:intrpl(a:pattern, a:vars))\nendfunction\n\nfunction! s:test.overlay(pattern, vars) \"{{{1\n  \" redraw\n  let id = matchadd('Search', s:intrpl(a:pattern, a:vars))\n  call matchdelete(id)\nendfunction\n\ncommand! FontReview call s:test.review()\ncommand! -count=1 FontPerfLarge call s:test.perf('large', <count>)\ncommand! -count=1 FontPerfSmall call s:test.perf('small', <count>)\ncommand! -count=1 FontPerfAll   call s:test.perf_all(<count>)\n\" vim: foldmethod=marker\n"
  },
  {
    "path": ".vim/bundle/vim-classpath/README.markdown",
    "content": "# classpath.vim\n\nThis plugin sets the `'path'` for JVM languages to match the class path of\nyour current Java project.  This lets commands like `:find` and `gf` work as\ndesigned.  I originally wrote it for Clojure, but I see no reason why it\nwouldn't be handy for other languages as well.\n\nCurrently, [Maven][] and [Leiningen][] are supported, with a fallback to\n`$CLASSPATH` if neither applies.  [Open an issue][GitHub issues] if you have\nideas for supporting another project management system.\n\nIncluded is a `:Java` command, which executes `java` (or `$JAVA_CMD`) with the\ncurrent buffer's `'path'` as the class path.\n\n[Maven]: http://maven.apache.org/\n[Leiningen]: https://github.com/technomancy/leiningen\n[GitHub issues]: https://github.com/tpope/vim-classpath/issues\n\n## Installation\n\nIf you don't have a preferred installation method, I recommend\ninstalling [pathogen.vim](https://github.com/tpope/vim-pathogen), and\nthen simply copy and paste:\n\n    cd ~/.vim/bundle\n    git clone git://github.com/tpope/vim-classpath.git\n\nOnce help tags have been generated, you can view the manual with\n`:help classpath`.\n\n## FAQ\n\n> Why does it take so long for Vim to startup?\n\nThe short answer is because the JVM is slow.\n\nThe first time you load a Clojure file from any given project, classpath.vim\nsets about trying to determine your class path, leveraging either\n`lein classpath` or `mvn dependency:build-classpath`.  This takes a couple of\nseconds or so in the best case scenario, and potentially much longer if it\ndecides to hit the network.\n\nBecause the class path is oh-so-expensive to retrieve, classpath.vim caches it\nin `~/.cache/vim/classpath`.  The cache is expired when the timestamp on\n`project.clj` or `pom.xml` changes.\n\n## Contributing\n\nSee the contribution guidelines for\n[pathogen.vim](https://github.com/tpope/vim-pathogen#readme).\n\n## Self-Promotion\n\nLike classpath.vim?  Follow the repository on\n[GitHub](https://github.com/tpope/vim-classpath).  And if\nyou're feeling especially charitable, follow [tpope](http://tpo.pe/) on\n[Twitter](http://twitter.com/tpope) and\n[GitHub](https://github.com/tpope).\n\n## License\n\nCopyright © Tim Pope.  Distributed under the same terms as Vim itself.\nSee `:help license`.\n"
  },
  {
    "path": ".vim/bundle/vim-classpath/autoload/classpath.vim",
    "content": "\" autoload/classpath.vim\n\" Maintainer:   Tim Pope <http://tpo.pe>\n\nif exists(\"g:autoloaded_classpath\")\n  finish\nendif\nlet g:autoloaded_classpath = 1\n\nif !exists('g:classpath_cache')\n  let g:classpath_cache = '~/.cache/vim/classpath'\nendif\n\nif !isdirectory(expand(g:classpath_cache))\n  call mkdir(expand(g:classpath_cache), 'p')\nendif\n\nfunction! classpath#separator() abort\n return has('win32') ? ';' : ':'\nendfunction\n\nfunction! classpath#file_separator() abort\n return exists('shellslash') && !&shellslash ? '\\' : '/'\nendfunction\n\nfunction! classpath#split(cp) abort\n  return split(a:cp, classpath#separator())\nendfunction\n\nfunction! classpath#to_vim(cp) abort\n  let path = []\n  for elem in classpath#split(a:cp)\n    let path += [elem ==# '.' ? '' : elem]\n  endfor\n  if a:cp =~# '\\(^\\|:\\)\\.$'\n    let path += ['']\n  endif\n  return join(map(path, 'escape(v:val, \", \")'), ',')\nendfunction\n\nfunction! classpath#from_vim(path) abort\n  if a:path =~# '^,\\=$'\n    return '.'\n  endif\n  let path = []\n  for elem in split(substitute(a:path, ',$', '', ''), ',')\n    if elem ==# ''\n      let path += ['.']\n    else\n      let path += split(glob(substitute(elem, '\\\\\\ze[\\\\ ,]', '', 'g'), 1), \"\\n\")\n    endif\n  endfor\n  return join(path, classpath#separator())\nendfunction\n\nfunction! classpath#detect(...) abort\n  let sep = classpath#file_separator()\n\n  let buffer = a:0 ? a:1 : '%'\n  let default = $CLASSPATH ==# '' ? ',' : classpath#to_vim($CLASSPATH)\n  let root = getbufvar(buffer, 'java_root')\n  if root ==# ''\n    let root = simplify(fnamemodify(bufname(buffer), ':p:s?[\\/]$??'))\n  endif\n\n  if !isdirectory(fnamemodify(root, ':h'))\n    return default\n  endif\n\n  let previous = \"\"\n  while root !=# previous\n    if filereadable(root . '/project.clj') && join(readfile(root . '/project.clj', '', 50), \"\\n\") =~# '(\\s*defproject'\n      let file = 'project.clj'\n      let cmd = 'lein classpath'\n      let pattern = \"[^\\n]*\\\\ze\\n*$\"\n      let default = join(map(['test', 'src', 'dev-resources', 'resources', 'target'.sep.'classes'], 'escape(root . sep . v:val, \", \")'), ',')\n      let base = ''\n      break\n    endif\n    if filereadable(root . '/pom.xml')\n      let file = 'pom.xml'\n      let cmd = 'mvn dependency:build-classpath'\n      let pattern = '\\%(^\\|classpath:\\n\\)\\zs[^[].\\{-\\}\\ze\\n'\n      let base = ''\n      for line in filter(readfile(root . '/pom.xml'), 'v:val =~# \"<directory>.*</directory>\"')\n        let base .= escape(root.sep.matchstr(line, '<directory>\\zs.*\\ze</directory>'), ', ').','\n      endfor\n      if empty(base)\n        let base = escape(root.sep.'src'.sep.'*'.sep.'*', ', ') . ','\n      endif\n      let default = base . default\n      break\n    endif\n    let previous = root\n    let root = fnamemodify(root, ':h')\n  endwhile\n\n  if !exists('cmd') || !executable(matchstr(cmd, '^\\S\\+'))\n    if a:0 > 1 && a:2 ==# 'keep'\n      return ''\n    else\n      return default\n    endif\n  endif\n\n  if exists('g:CLASSPATH_CACHE') && (type(g:CLASSPATH_CACHE) != type({}) || empty(g:CLASSPATH_CACHE))\n    unlet! g:CLASSPATH_CACHE\n  endif\n\n  let cache = expand(g:classpath_cache . '/') . substitute(root, '[:\\/]', '%', 'g')\n  let disk = getftime(root . sep . file)\n\n  if exists('g:CLASSPATH_CACHE') && has_key(g:CLASSPATH_CACHE, root)\n    let [when, last, path] = split(g:CLASSPATH_CACHE[root], \"\\t\")\n    call remove(g:CLASSPATH_CACHE, root)\n    if last ==# disk\n      call writefile([path], cache)\n      return path\n    endif\n  endif\n\n  if getftime(cache) >= disk\n    return join(readfile(cache), classpath#separator())\n  else\n    try\n      if &verbose\n        echomsg 'Determining class path with '.cmd.' ...'\n      endif\n      let cd = exists('*haslocaldir') && haslocaldir() ? 'lcd ' : 'cd '\n      let dir = getcwd()\n      try\n        execute cd . fnameescape(root)\n        let out = system(cmd)\n      finally\n        execute cd . fnameescape(dir)\n      endtry\n    catch /^Vim:Interrupt/\n      return default\n    endtry\n    let match = matchstr(out, pattern)\n    if !v:shell_error && exists('out') && out !=# ''\n      let path = base . classpath#to_vim(match)\n    else\n      echohl WarningMSG\n      echomsg \"Couldn't determine class path.\"\n      echohl NONE\n      echo out\n      let path = default\n    endif\n    call writefile([path], cache)\n    return path\n  endif\nendfunction\n\nfunction! classpath#java_cmd(...)\n  let path = classpath#from_vim(a:0 ? a:1 : &path)\n  return (exists('$JAVA_CMD') ? $JAVA_CMD : 'java') . ' -cp '.shellescape(path)\nendfunction\n\n\" vim:set et sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-classpath/doc/classpath.txt",
    "content": "*classpath.txt*  Set 'path' from the Java class path\n\nAuthor:  Tim Pope <http://tpo.pe/>\nRepo:    https://github.com/tpope/vim-classpath\nLicense: Same terms as Vim itself (see |license|)\n\nThis plugin is only available if 'compatible' is not set.\n\nINTRODUCTION                                    *classpath*\n\nThis plugin automatically adjusts 'path' for languages that run on the JVM:\nJava, Clojure, Scala, and Groovy.  Said path is determined by querying Maven\nor Leiningen for the class path.  If neither is available, $CLASSPATH is used.\n\n                                                *classpath-:Java*\n:Java [args]            Execute $JAVA_CMD (default: java) with a class path\n                        derived from the current buffer's path.\n\n vim:tw=78:et:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/vim-classpath/plugin/classpath.vim",
    "content": "\" classpath.vim - Set 'path' from the Java class path\n\" Maintainer:   Tim Pope <http://tpo.pe/>\n\nif exists(\"g:loaded_classpath\") || v:version < 700 || &cp\n  finish\nendif\nlet g:loaded_classpath = 1\n\nif &viminfo !~# '!'\n  set viminfo^=!\nendif\n\naugroup classpath\n  autocmd!\n  autocmd FileType clojure,groovy,java,scala\n        \\ if expand('%:p') =~# '^zipfile:' |\n        \\   let &l:path = getbufvar('#', '&path') |\n        \\ else |\n        \\   let &l:path = classpath#detect() |\n        \\ endif |\n        \\ command! -buffer -nargs=+ -complete=file Java execute '!'.classpath#java_cmd().' '.<q-args>\naugroup END\n\n\" vim:set et sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-clojure-static/LICENSE.txt",
    "content": "VimClojure License\n==================\n\nCopyright 2008-2012 (c) Meikel Brandmeyer.\nAll rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\nvim-clojure-static License\n==========================\n\nCopyright 2013-2014 (c) Sung Pae.\n\nRelicensed under the Vim License (below) for distribution with Vim.\n\nVIM LICENSE\n\nI)  There are no restrictions on distributing unmodified copies of Vim except\n    that they must include this license text.  You can also distribute\n    unmodified parts of Vim, likewise unrestricted except that they must\n    include this license text.  You are also allowed to include executables\n    that you made from the unmodified Vim sources, plus your own usage\n    examples and Vim scripts.\n\nII) It is allowed to distribute a modified (or extended) version of Vim,\n    including executables and/or source code, when the following four\n    conditions are met:\n    1) This license text must be included unmodified.\n    2) The modified Vim must be distributed in one of the following five ways:\n       a) If you make changes to Vim yourself, you must clearly describe in\n\t  the distribution how to contact you.  When the maintainer asks you\n\t  (in any way) for a copy of the modified Vim you distributed, you\n\t  must make your changes, including source code, available to the\n\t  maintainer without fee.  The maintainer reserves the right to\n\t  include your changes in the official version of Vim.  What the\n\t  maintainer will do with your changes and under what license they\n\t  will be distributed is negotiable.  If there has been no negotiation\n\t  then this license, or a later version, also applies to your changes.\n\t  The current maintainer is Bram Moolenaar <Bram@vim.org>.  If this\n\t  changes it will be announced in appropriate places (most likely\n\t  vim.sf.net, www.vim.org and/or comp.editors).  When it is completely\n\t  impossible to contact the maintainer, the obligation to send him\n\t  your changes ceases.  Once the maintainer has confirmed that he has\n\t  received your changes they will not have to be sent again.\n       b) If you have received a modified Vim that was distributed as\n\t  mentioned under a) you are allowed to further distribute it\n\t  unmodified, as mentioned at I).  If you make additional changes the\n\t  text under a) applies to those changes.\n       c) Provide all the changes, including source code, with every copy of\n\t  the modified Vim you distribute.  This may be done in the form of a\n\t  context diff.  You can choose what license to use for new code you\n\t  add.  The changes and their license must not restrict others from\n\t  making their own changes to the official version of Vim.\n       d) When you have a modified Vim which includes changes as mentioned\n\t  under c), you can distribute it without the source code for the\n\t  changes if the following three conditions are met:\n\t  - The license that applies to the changes permits you to distribute\n\t    the changes to the Vim maintainer without fee or restriction, and\n\t    permits the Vim maintainer to include the changes in the official\n\t    version of Vim without fee or restriction.\n\t  - You keep the changes for at least three years after last\n\t    distributing the corresponding modified Vim.  When the maintainer\n\t    or someone who you distributed the modified Vim to asks you (in\n\t    any way) for the changes within this period, you must make them\n\t    available to him.\n\t  - You clearly describe in the distribution how to contact you.  This\n\t    contact information must remain valid for at least three years\n\t    after last distributing the corresponding modified Vim, or as long\n\t    as possible.\n       e) When the GNU General Public License (GPL) applies to the changes,\n\t  you can distribute the modified Vim under the GNU GPL version 2 or\n\t  any later version.\n    3) A message must be added, at least in the output of the \":version\"\n       command and in the intro screen, such that the user of the modified Vim\n       is able to see that it was modified.  When distributing as mentioned\n       under 2)e) adding the message is only required for as far as this does\n       not conflict with the license used for the changes.\n    4) The contact information as required under 2)a) and 2)d) must not be\n       removed or changed, except that the person himself can make\n       corrections.\n\nIII) If you distribute a modified version of Vim, you are encouraged to use\n     the Vim license for your changes and make them available to the\n     maintainer, including the source code.  The preferred way to do this is\n     by e-mail or by uploading the files to a server and e-mailing the URL.\n     If the number of changes is small (e.g., a modified Makefile) e-mailing a\n     context diff will do.  The e-mail address to be used is\n     <maintainer@vim.org>\n\nIV)  It is not allowed to remove this license from the distribution of the Vim\n     sources, parts of it or from a modified version.  You may use this\n     license for previous Vim releases instead of the license that they came\n     with, at your option.\n"
  },
  {
    "path": ".vim/bundle/vim-clojure-static/README.markdown",
    "content": "\n\n                o8o\n                '\"'\n    oooo    ooooooo ooo. .oo.  .oo.\n     `88.  .8' `888 `888P\"Y88bP\"Y88b\n      `88..8'   888  888   888   888\n       `888'    888  888   888   888\n        `8'    o888oo888o o888o o888o\n\n\n             oooo           o8o\n             `888           '\"'\n     .ooooo.  888  .ooooo. oooooooo  oooo oooo d8b .ooooo.\n    d88' `\"Y8 888 d88' `88b`888`888  `888 `888\"\"8Pd88' `88b\n    888       888 888   888 888 888   888  888    888ooo888\n    888   .o8 888 888   888 888 888   888  888    888    .o\n    `Y8bod8P'o888o`Y8bod8P' 888 `V88V\"V8P'd888b   `Y8bod8P'\n                            888\n                        .o. 88P\n                 .      `Y888P  .   o8o\n               .o8            .o8   '\"'\n      .oooo.o.o888oo .oooo. .o888oooooo  .ooooo.\n     d88(  \"8  888  `P  )88b  888  `888 d88' `\"Y8\n     `\"Y88b.   888   .oP\"888  888   888 888\n     o.  )88b  888 .d8(  888  888 . 888 888   .o8\n     8\"\"888P'  \"888\"`Y888\"\"8o \"888\"o888o`Y8bod8P'\n\n\n\nMeikel Brandmeyer's excellent Clojure runtime files, extracted from the\n[VimClojure](http://www.vim.org/scripts/script.php?script_id=2501) project for\nuse with alternate Clojure REPL plugins.\n\nThese files ship with Vim versions 7.3.803 and later, and are periodically\nmerged into the official Vim repository.\n\nInstallation\n============\n\nIf you are running an old version of Vim or if you would like to keep up with\ndevelopment, you can install this repository like a standard Vim plugin.\n\nIf you are unfamiliar with this process, refer to\nthe [Pathogen](https://github.com/tpope/vim-pathogen) project.\n\nPlease make sure that the following options are set in your vimrc to enable\nall features:\n\n```vim\nsyntax on\nfiletype plugin indent on\n```\n\nFeatures\n========\n\n* Syntax highlighting for Clojure and ClojureScript buffers.\n\n* [Configurable](#indent-options) Clojure-specific indentation.\n\n* Basic insert mode completion for special forms and public vars in\n  `clojure.core`.\n\n  This is bound to both the `'omnifunc'` and `'completefunc'` options, which\n  can be invoked with the insert mode mappings `<C-X><C-O>` and `<C-X><C-U>`\n  respectively.\n\nIf you install this project as a plugin, `*.edn` files are recognized as a\nClojure filetype, overriding the built-in declaration as `edif`.\n\nThird Party Extensions\n======================\n\n* Rainbow Parentheses\n\n  kien's\n  [`rainbow_parentheses.vim`](https://github.com/kien/rainbow_parentheses.vim)\n  is highly recommended.\n\n* Extended Syntax Highlighting\n\n  [`vim-clojure-highlight`](https://github.com/guns/vim-clojure-highlight)\n  is a fireplace.vim plugin that extends syntax highlighting to referred and\n  aliased vars.\n\n  This is a reimplementation of the DynamicHighlighting feature from\n  VimClojure.\n\nClojure REPL Plugins\n====================\n\nIf you would like to get more serious about programming in Clojure, consider\nusing an interactive\n[Clojure REPL plugin](https://github.com/guns/vim-clojure-static/wiki/Clojure-REPL-Plugins).\n\nIndent Options\n==============\n\nClojure indentation differs somewhat from traditional Lisps, due in part to\nthe use of square and curly brackets, and otherwise by community convention.\nThese conventions are not universally followed, so the Clojure indent script\noffers a few configurable options, listed below.\n\nIf the current vim does not include searchpairpos(), the indent script falls\nback to normal `'lisp'` indenting, and the following options are ignored.\n\n### `g:clojure_maxlines`\n\nSet maximum scan distance of searchpairpos(). Larger values trade performance\nfor correctness when dealing with very long forms. A value of 0 will scan\nwithout limits.\n\n```vim\n\" Default\nlet g:clojure_maxlines = 100\n```\n\n### `g:clojure_fuzzy_indent`, `g:clojure_fuzzy_indent_patterns`, `g:clojure_fuzzy_indent_blacklist`\n\nThe `'lispwords'` option is a list of comma-separated words that mark special\nforms whose subforms must be indented with two spaces.\n\nFor example:\n\n```clojure\n(defn bad []\n      \"Incorrect indentation\")\n\n(defn good []\n  \"Correct indentation\")\n```\n\nIf you would like to specify `'lispwords'` with a pattern instead, you can use\nthe fuzzy indent feature:\n\n```vim\n\" Default\nlet g:clojure_fuzzy_indent = 1\nlet g:clojure_fuzzy_indent_patterns = ['^with', '^def', '^let']\nlet g:clojure_fuzzy_indent_blacklist = ['-fn$', '\\v^with-%(meta|out-str|loading-context)$']\n\n\" Legacy comma-delimited string version; the list format above is\n\" recommended. Note that patterns are implicitly anchored with ^ and $.\nlet g:clojure_fuzzy_indent_patterns = 'with.*,def.*,let.*'\n```\n\n`g:clojure_fuzzy_indent_patterns` and `g:clojure_fuzzy_indent_blacklist` are\nlists of patterns that will be matched against the unqualified symbol at the\nhead of a list. This means that a pattern like `\"^foo\"` will match all these\ncandidates: `foobar`, `my.ns/foobar`, and `#'foobar`.\n\nEach candidate word is tested for special treatment in this order:\n\n1. Return true if word is literally in `'lispwords'`\n2. Return false if word matches a pattern in `g:clojure_fuzzy_indent_blacklist`\n3. Return true if word matches a pattern in `g:clojure_fuzzy_indent_patterns`\n4. Return false and indent normally otherwise\n\n### `g:clojure_special_indent_words`\n\nSome forms in Clojure are indented so that every subform is indented only\ntwo spaces, regardless of `'lispwords'`. If you have a custom construct that\nshould be indented in this idiosyncratic fashion, you can add your symbols to\nthe default list below.\n\n```vim\n\" Default\nlet g:clojure_special_indent_words = 'deftype,defrecord,reify,proxy,extend-type,extend-protocol,letfn'\n```\n\n### `g:clojure_align_multiline_strings`\n\nAlign subsequent lines in multiline strings to the column after the opening\nquote, instead of the same column.\n\nFor example:\n\n```clojure\n(def default\n  \"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do\n  eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n  enim ad minim veniam, quis nostrud exercitation ullamco laboris\n  nisi ut aliquip ex ea commodo consequat.\")\n\n(def aligned\n  \"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do\n   eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n   enim ad minim veniam, quis nostrud exercitation ullamco laboris\n   nisi ut aliquip ex ea commodo consequat.\")\n```\n\nThis option is off by default.\n\n```vim\n\" Default\nlet g:clojure_align_multiline_strings = 0\n```\n\n### `g:clojure_align_subforms`\n\nBy default, parenthesized compound forms that look like function calls and\nwhose head subform is on its own line have subsequent subforms indented by\ntwo spaces relative to the opening paren:\n\n```clojure\n(foo\n  bar\n  baz)\n```\n\nSetting this option changes this behavior so that all subforms are aligned to\nthe same column, emulating the default behavior of clojure-mode.el:\n\n```clojure\n(foo\n bar\n baz)\n```\n\nThis option is off by default.\n\n```vim\n\" Default\nlet g:clojure_align_subforms = 0\n```\n\nDevelopment\n===========\n\nPull requests and patches are strongly encouraged!\n\nA large portion of the syntax file is generated from Clojure code in\n`clj/src/`. Generation of vim code in this fashion is preferred over hand\ncrafting of the same.\n\nThere is an incomplete syntax test suite in `clj/test/`. Any additions and\nimprovements to these tests are highly appreciated.\n\nLicense and Acknowledgements\n============================\n\nMany thanks to [Meikel Brandmeyer](http://kotka.de/) for his excellent work on\nmaking Vim a first class Clojure editor.\n\nThanks to [Tim Pope](https://github.com/tpope/) for advice in #vim.\n\n`syntax/clojure.vim`\n\n* Copyright 2007-2008 (c) Toralf Wittner <toralf.wittner@gmail.com>\n* Copyright 2008-2012 (c) Meikel Brandmeyer <mb@kotka.de>\n\n`ftdetect/clojure.vim`,<br>\n`ftplugin/clojure.vim`,<br>\n`indent/clojure.vim`\n\n* Copyright 2008-2012 (c) Meikel Brandmeyer <mb@kotka.de>\n\nModified and relicensed under the Vim License for distribution with Vim:\n\n* Copyright 2013-2014 (c) Sung Pae <self@sungpae.com>\n\nSee LICENSE.txt for more information.\n\n<!--\n vim:ft=markdown:et:tw=78:\n-->\n"
  },
  {
    "path": ".vim/bundle/vim-clojure-static/autoload/clojurecomplete.vim",
    "content": "\" Vim completion script\n\" Language:\tClojure\n\" Maintainer:\tSung Pae <self@sungpae.com>\n\" URL:\t\thttps://github.com/guns/vim-clojure-static\n\" License:\tSame as Vim\n\" Last Change:\t%%RELEASE_DATE%%\n\n\" Special forms and public vars in clojure.core\n\" Generated from https://github.com/guns/vim-clojure-static/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj\n\" Clojure version 1.5.1\nlet s:words = [\"*\",\"*'\",\"*1\",\"*2\",\"*3\",\"*agent*\",\"*allow-unresolved-vars*\",\"*assert*\",\"*clojure-version*\",\"*command-line-args*\",\"*compile-files*\",\"*compile-path*\",\"*compiler-options*\",\"*data-readers*\",\"*default-data-reader-fn*\",\"*e\",\"*err*\",\"*file*\",\"*flush-on-newline*\",\"*fn-loader*\",\"*in*\",\"*math-context*\",\"*ns*\",\"*out*\",\"*print-dup*\",\"*print-length*\",\"*print-level*\",\"*print-meta*\",\"*print-readably*\",\"*read-eval*\",\"*source-path*\",\"*unchecked-math*\",\"*use-context-classloader*\",\"*verbose-defrecords*\",\"*warn-on-reflection*\",\"+\",\"+'\",\"-\",\"-'\",\"->\",\"->>\",\"->ArrayChunk\",\"->Vec\",\"->VecNode\",\"->VecSeq\",\"-cache-protocol-fn\",\"-reset-methods\",\".\",\"..\",\"/\",\"<\",\"<=\",\"=\",\"==\",\">\",\">=\",\"EMPTY-NODE\",\"accessor\",\"aclone\",\"add-classpath\",\"add-watch\",\"agent\",\"agent-error\",\"agent-errors\",\"aget\",\"alength\",\"alias\",\"all-ns\",\"alter\",\"alter-meta!\",\"alter-var-root\",\"amap\",\"ancestors\",\"and\",\"apply\",\"areduce\",\"array-map\",\"as->\",\"aset\",\"aset-boolean\",\"aset-byte\",\"aset-char\",\"aset-double\",\"aset-float\",\"aset-int\",\"aset-long\",\"aset-short\",\"assert\",\"assoc!\",\"assoc\",\"assoc-in\",\"associative?\",\"atom\",\"await\",\"await-for\",\"await1\",\"bases\",\"bean\",\"bigdec\",\"bigint\",\"biginteger\",\"binding\",\"bit-and\",\"bit-and-not\",\"bit-clear\",\"bit-flip\",\"bit-not\",\"bit-or\",\"bit-set\",\"bit-shift-left\",\"bit-shift-right\",\"bit-test\",\"bit-xor\",\"boolean\",\"boolean-array\",\"booleans\",\"bound-fn\",\"bound-fn*\",\"bound?\",\"butlast\",\"byte\",\"byte-array\",\"bytes\",\"case\",\"cast\",\"catch\",\"char\",\"char-array\",\"char-escape-string\",\"char-name-string\",\"char?\",\"chars\",\"chunk\",\"chunk-append\",\"chunk-buffer\",\"chunk-cons\",\"chunk-first\",\"chunk-next\",\"chunk-rest\",\"chunked-seq?\",\"class\",\"class?\",\"clear-agent-errors\",\"clojure-version\",\"coll?\",\"comment\",\"commute\",\"comp\",\"comparator\",\"compare\",\"compare-and-set!\",\"compile\",\"complement\",\"concat\",\"cond\",\"cond->\",\"cond->>\",\"condp\",\"conj!\",\"conj\",\"cons\",\"constantly\",\"construct-proxy\",\"contains?\",\"count\",\"counted?\",\"create-ns\",\"create-struct\",\"cycle\",\"dec\",\"dec'\",\"decimal?\",\"declare\",\"def\",\"default-data-readers\",\"definline\",\"definterface\",\"defmacro\",\"defmethod\",\"defmulti\",\"defn\",\"defn-\",\"defonce\",\"defprotocol\",\"defrecord\",\"defstruct\",\"deftype\",\"delay\",\"delay?\",\"deliver\",\"denominator\",\"deref\",\"derive\",\"descendants\",\"destructure\",\"disj!\",\"disj\",\"dissoc!\",\"dissoc\",\"distinct\",\"distinct?\",\"do\",\"doall\",\"dorun\",\"doseq\",\"dosync\",\"dotimes\",\"doto\",\"double\",\"double-array\",\"doubles\",\"drop\",\"drop-last\",\"drop-while\",\"empty\",\"empty?\",\"ensure\",\"enumeration-seq\",\"error-handler\",\"error-mode\",\"eval\",\"even?\",\"every-pred\",\"every?\",\"ex-data\",\"ex-info\",\"extend\",\"extend-protocol\",\"extend-type\",\"extenders\",\"extends?\",\"false?\",\"ffirst\",\"file-seq\",\"filter\",\"filterv\",\"finally\",\"find\",\"find-keyword\",\"find-ns\",\"find-protocol-impl\",\"find-protocol-method\",\"find-var\",\"first\",\"flatten\",\"float\",\"float-array\",\"float?\",\"floats\",\"flush\",\"fn\",\"fn\",\"fn?\",\"fnext\",\"fnil\",\"for\",\"force\",\"format\",\"frequencies\",\"future\",\"future-call\",\"future-cancel\",\"future-cancelled?\",\"future-done?\",\"future?\",\"gen-class\",\"gen-interface\",\"gensym\",\"get\",\"get-in\",\"get-method\",\"get-proxy-class\",\"get-thread-bindings\",\"get-validator\",\"group-by\",\"hash\",\"hash-combine\",\"hash-map\",\"hash-set\",\"identical?\",\"identity\",\"if\",\"if-let\",\"if-not\",\"ifn?\",\"import\",\"in-ns\",\"inc\",\"inc'\",\"init-proxy\",\"instance?\",\"int\",\"int-array\",\"integer?\",\"interleave\",\"intern\",\"interpose\",\"into\",\"into-array\",\"ints\",\"io!\",\"isa?\",\"iterate\",\"iterator-seq\",\"juxt\",\"keep\",\"keep-indexed\",\"key\",\"keys\",\"keyword\",\"keyword?\",\"last\",\"lazy-cat\",\"lazy-seq\",\"let\",\"let\",\"letfn\",\"line-seq\",\"list\",\"list*\",\"list?\",\"load\",\"load-file\",\"load-reader\",\"load-string\",\"loaded-libs\",\"locking\",\"long\",\"long-array\",\"longs\",\"loop\",\"loop\",\"macroexpand\",\"macroexpand-1\",\"make-array\",\"make-hierarchy\",\"map\",\"map-indexed\",\"map?\",\"mapcat\",\"mapv\",\"max\",\"max-key\",\"memfn\",\"memoize\",\"merge\",\"merge-with\",\"meta\",\"method-sig\",\"methods\",\"min\",\"min-key\",\"mod\",\"monitor-enter\",\"monitor-exit\",\"munge\",\"name\",\"namespace\",\"namespace-munge\",\"neg?\",\"new\",\"newline\",\"next\",\"nfirst\",\"nil?\",\"nnext\",\"not\",\"not-any?\",\"not-empty\",\"not-every?\",\"not=\",\"ns\",\"ns-aliases\",\"ns-imports\",\"ns-interns\",\"ns-map\",\"ns-name\",\"ns-publics\",\"ns-refers\",\"ns-resolve\",\"ns-unalias\",\"ns-unmap\",\"nth\",\"nthnext\",\"nthrest\",\"num\",\"number?\",\"numerator\",\"object-array\",\"odd?\",\"or\",\"parents\",\"partial\",\"partition\",\"partition-all\",\"partition-by\",\"pcalls\",\"peek\",\"persistent!\",\"pmap\",\"pop!\",\"pop\",\"pop-thread-bindings\",\"pos?\",\"pr\",\"pr-str\",\"prefer-method\",\"prefers\",\"primitives-classnames\",\"print\",\"print-ctor\",\"print-dup\",\"print-method\",\"print-simple\",\"print-str\",\"printf\",\"println\",\"println-str\",\"prn\",\"prn-str\",\"promise\",\"proxy\",\"proxy-call-with-super\",\"proxy-mappings\",\"proxy-name\",\"proxy-super\",\"push-thread-bindings\",\"pvalues\",\"quot\",\"quote\",\"rand\",\"rand-int\",\"rand-nth\",\"range\",\"ratio?\",\"rational?\",\"rationalize\",\"re-find\",\"re-groups\",\"re-matcher\",\"re-matches\",\"re-pattern\",\"re-seq\",\"read\",\"read-line\",\"read-string\",\"realized?\",\"recur\",\"reduce\",\"reduce-kv\",\"reduced\",\"reduced?\",\"reductions\",\"ref\",\"ref-history-count\",\"ref-max-history\",\"ref-min-history\",\"ref-set\",\"refer\",\"refer-clojure\",\"reify\",\"release-pending-sends\",\"rem\",\"remove\",\"remove-all-methods\",\"remove-method\",\"remove-ns\",\"remove-watch\",\"repeat\",\"repeatedly\",\"replace\",\"replicate\",\"require\",\"reset!\",\"reset-meta!\",\"resolve\",\"rest\",\"restart-agent\",\"resultset-seq\",\"reverse\",\"reversible?\",\"rseq\",\"rsubseq\",\"satisfies?\",\"second\",\"select-keys\",\"send\",\"send-off\",\"send-via\",\"seq\",\"seq?\",\"seque\",\"sequence\",\"sequential?\",\"set!\",\"set\",\"set-agent-send-executor!\",\"set-agent-send-off-executor!\",\"set-error-handler!\",\"set-error-mode!\",\"set-validator!\",\"set?\",\"short\",\"short-array\",\"shorts\",\"shuffle\",\"shutdown-agents\",\"slurp\",\"some\",\"some->\",\"some->>\",\"some-fn\",\"sort\",\"sort-by\",\"sorted-map\",\"sorted-map-by\",\"sorted-set\",\"sorted-set-by\",\"sorted?\",\"special-symbol?\",\"spit\",\"split-at\",\"split-with\",\"str\",\"string?\",\"struct\",\"struct-map\",\"subs\",\"subseq\",\"subvec\",\"supers\",\"swap!\",\"symbol\",\"symbol?\",\"sync\",\"take\",\"take-last\",\"take-nth\",\"take-while\",\"test\",\"the-ns\",\"thread-bound?\",\"throw\",\"time\",\"to-array\",\"to-array-2d\",\"trampoline\",\"transient\",\"tree-seq\",\"true?\",\"try\",\"type\",\"unchecked-add\",\"unchecked-add-int\",\"unchecked-byte\",\"unchecked-char\",\"unchecked-dec\",\"unchecked-dec-int\",\"unchecked-divide-int\",\"unchecked-double\",\"unchecked-float\",\"unchecked-inc\",\"unchecked-inc-int\",\"unchecked-int\",\"unchecked-long\",\"unchecked-multiply\",\"unchecked-multiply-int\",\"unchecked-negate\",\"unchecked-negate-int\",\"unchecked-remainder-int\",\"unchecked-short\",\"unchecked-subtract\",\"unchecked-subtract-int\",\"underive\",\"unquote\",\"unquote-splicing\",\"update-in\",\"update-proxy\",\"use\",\"val\",\"vals\",\"var\",\"var-get\",\"var-set\",\"var?\",\"vary-meta\",\"vec\",\"vector\",\"vector-of\",\"vector?\",\"when\",\"when-first\",\"when-let\",\"when-not\",\"while\",\"with-bindings\",\"with-bindings*\",\"with-in-str\",\"with-loading-context\",\"with-local-vars\",\"with-meta\",\"with-open\",\"with-out-str\",\"with-precision\",\"with-redefs\",\"with-redefs-fn\",\"xml-seq\",\"zero?\",\"zipmap\"]\n\n\" Simple word completion omnifunc\nfunction! clojurecomplete#Complete(findstart, base)\n\tif a:findstart\n\t\treturn searchpos('\\<', 'bnW', line('.'))[1] - 1\n\telse\n\t\treturn { 'words': filter(copy(s:words), 'v:val =~# \"\\\\V\\\\^' . a:base . '\"') }\n\tendif\nendfunction\n\n\" vim:sts=8:sw=8:ts=8:noet\n"
  },
  {
    "path": ".vim/bundle/vim-clojure-static/clj/project.clj",
    "content": "(defproject vim-clojure-static \"0.1.0\"\n  :description \"Utilities and tests for Vim's Clojure runtime files.\"\n  :url \"https://github.com/guns/vim-clojure-static\"\n  :license {:name \"Vim License\"\n            :url \"http://vimdoc.sourceforge.net/htmldoc/uganda.html#license\"\n            :comments \":help license\"}\n  :dependencies [[org.clojure/clojure \"1.5.1\"]\n                 [frak \"0.1.6-SNAPSHOT\"]])\n"
  },
  {
    "path": ".vim/bundle/vim-clojure-static/clj/src/vim_clojure_static/generate.clj",
    "content": ";; Authors: Sung Pae <self@sungpae.com>\n;;          Joel Holdbrooks <cjholdbrooks@gmail.com>\n\n(ns vim-clojure-static.generate\n  (:require [clojure.set :as set]\n            [clojure.string :as string]\n            [frak :as f])\n  (:import (clojure.lang MultiFn)\n           (java.lang Character$UnicodeBlock Character$UnicodeScript)\n           (java.lang.reflect Field)\n           (java.util.regex Pattern$CharPropertyNames UnicodeProp)))\n\n;;\n;; Helpers\n;;\n\n(defn vim-frak-pattern\n  \"Create a non-capturing regular expression pattern compatible with Vim.\"\n  [strs]\n  (-> (f/string-pattern strs {:escape-chars :vim})\n      (string/replace #\"\\(\\?:\" \"\\\\%\\\\(\")))\n\n(defn property-pattern\n  \"Vimscript very magic pattern for a character property class.\"\n  ([s] (property-pattern s true))\n  ([s braces?]\n   (if braces?\n     (format \"\\\\v\\\\\\\\[pP]\\\\{%s\\\\}\" s)\n     (format \"\\\\v\\\\\\\\[pP]%s\" s))))\n\n(defn syntax-match-properties\n  \"Vimscript literal `syntax match` for a character property class.\"\n  ([group fmt props] (syntax-match-properties group fmt props true))\n  ([group fmt props braces?]\n   (format \"syntax match %s \\\"%s\\\" contained display\\n\"\n           (name group)\n           (property-pattern (format fmt (vim-frak-pattern props)) braces?))))\n\n(defn get-private-field\n  \"Violate encapsulation and get the value of a private field.\"\n  [^Class cls fieldname]\n  (let [^Field field (first (filter #(= fieldname (.getName ^Field %))\n                                    (.getDeclaredFields cls)))]\n    (.setAccessible field true)\n    (.get field field)))\n\n(defn fn-var? [v]\n  (let [f @v]\n    (or (contains? (meta v) :arglists)\n        (fn? f)\n        (instance? MultiFn f))))\n\n(defn inner-class-name [^Class cls]\n  (string/replace (.getName cls) #\".*\\$(.+)\" \"$1\"))\n\n(defn map-keyword-names [coll]\n  (reduce\n    (fn [v x]\n      ;; Include fully qualified versions of core vars for matching vars in\n      ;; macroexpanded forms\n      (cond (symbol? x) (if-let [m (meta (resolve x))]\n                          (conj v\n                                (str (:name m))\n                                (str (:ns m) \\/ (:name m)))\n                          (conj v (str x)))\n            (nil? x) (conj v \"nil\")\n            :else (conj v (str x))))\n    [] coll))\n\n;;\n;; Definitions\n;;\n\n(def generation-comment\n  \"\\\" Generated from https://github.com/guns/vim-clojure-static/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj\\n\")\n\n(def clojure-version-comment\n  (format \"\\\" Clojure version %s\\n\" (clojure-version)))\n\n(def java-version-comment\n  (format \"\\\" Java version %s\\n\" (System/getProperty \"java.version\")))\n\n(def special-forms\n  \"http://clojure.org/special_forms\"\n  '#{def if do let quote var fn loop recur throw try catch finally\n     monitor-enter monitor-exit . new set!})\n\n(def keyword-groups\n  \"Special forms, constants, and every public var in clojure.core listed by\n   syntax group suffix.\"\n  (let [builtins [[\"Constant\" '#{nil}]\n                  [\"Boolean\" '#{true false}]\n                  [\"Special\" special-forms]\n                  ;; These are duplicates from special-forms\n                  [\"Exception\" '#{throw try catch finally}]\n                  [\"Cond\" '#{case cond cond-> cond->> condp if-let if-not when\n                             when-first when-let when-not}]\n                  ;; Imperative looping constructs (not sequence functions)\n                  [\"Repeat\" '#{doall dorun doseq dotimes while}]]\n        coresyms (set/difference (set (keys (ns-publics 'clojure.core)))\n                                 (set (mapcat peek builtins)))\n        group-preds [[\"Define\" #(re-seq #\"\\Adef(?!ault)\" (str %))]\n                     [\"Macro\" #(:macro (meta (ns-resolve 'clojure.core %)))]\n                     [\"Func\" #(fn-var? (ns-resolve 'clojure.core %))]\n                     [\"Variable\" identity]]]\n    (first\n      (reduce\n        (fn [[v syms] [group pred]]\n          (let [group-syms (set (filterv pred syms))]\n            [(conj v [group group-syms])\n             (set/difference syms group-syms)]))\n        [builtins coresyms] group-preds))))\n\n(def character-properties\n  \"Character property names derived via reflection.\"\n  (let [props (->> (get-private-field Pattern$CharPropertyNames \"map\")\n                   (mapv (fn [[prop field]] [(inner-class-name (class field)) prop]))\n                   (group-by first)\n                   (reduce (fn [m [k v]] (assoc m k (mapv peek v))) {}))\n        binary (concat (map #(.name ^UnicodeProp %) (get-private-field UnicodeProp \"$VALUES\"))\n                       (keys (get-private-field UnicodeProp \"aliases\")))\n        script (concat (map #(.name ^Character$UnicodeScript %) (Character$UnicodeScript/values))\n                       (keys (get-private-field Character$UnicodeScript \"aliases\")))\n        block (keys (get-private-field Character$UnicodeBlock \"map\"))]\n    ;;\n    ;; * The keys \"1\"…\"5\" reflect the order of CharPropertyFactory\n    ;;   declarations in Pattern.java!\n    ;;\n    ;; * The \"L1\" (Latin-1) category is not defined by Unicode and exists\n    ;;   merely as an alias for the first 8 bits of code points.\n    ;;\n    ;; * The \"all\" category is the Unicode \"Any\" category by a different name,\n    ;;   and thus excluded.\n    ;;\n    {:posix    (disj (set (mapcat (partial get props) [\"2\" \"3\"])) \"L1\")\n     :java     (set (get props \"4\"))\n     :binary   (set binary)\n     :category (set (get props \"1\"))\n     :script   (set script)\n     :block    (set block)}))\n\n(def lispwords\n  \"Specially indented symbols in clojure.core and clojure.test. Please read\n   the commit message tagged `lispwords-guidelines` when adding new words to\n   this list.\"\n  (set/union\n    ;; Definitions\n    '#{bound-fn def definline definterface defmacro defmethod defmulti defn\n       defn- defonce defprotocol defrecord defstruct deftest deftest- deftype\n       extend extend-protocol extend-type fn ns proxy reify set-test}\n    ;; Binding forms\n    '#{as-> binding doall dorun doseq dotimes doto for if-let let letfn\n       locking loop testing when-first when-let with-bindings with-in-str\n       with-local-vars with-open with-precision with-redefs with-redefs-fn\n       with-test}\n    ;; Conditional branching\n    '#{case cond-> cond->> condp if if-not when when-not while}\n    ;; Exception handling\n    '#{catch}))\n\n;;\n;; Vimscript literals\n;;\n\n(def vim-keywords\n  \"Vimscript literal `syntax keyword` for important identifiers.\"\n  (->> keyword-groups\n       (map (fn [[group keywords]]\n              (format \"syntax match clojure%s \\\"\\\\v<%s>\\\"\\n\"\n                      group\n                      (vim-frak-pattern (map-keyword-names keywords)))))\n       string/join))\n\n(def vim-completion-words\n  \"Vimscript literal list of words for omnifunc completion.\"\n  (->> 'clojure.core\n       ns-publics\n       keys\n       (concat special-forms)\n       (map #(str \\\" % \\\"))\n       sort\n       (string/join \\,)\n       (format \"let s:words = [%s]\\n\")))\n\n(def vim-posix-char-classes\n  \"Vimscript literal `syntax match` for POSIX character classes.\"\n  ;; `IsPosix` works, but is undefined.\n  (syntax-match-properties\n    :clojureRegexpPosixCharClass\n    \"%s\"\n    (:posix character-properties)))\n\n(def vim-java-char-classes\n  \"Vimscript literal `syntax match` for \\\\p{javaMethod} property classes.\"\n  ;; `IsjavaMethod` works, but is undefined.\n  (syntax-match-properties\n    :clojureRegexpJavaCharClass\n    \"java%s\"\n    (map #(string/replace % #\"\\Ajava\" \"\") (:java character-properties))))\n\n(def vim-unicode-binary-char-classes\n  \"Vimscript literal `syntax match` for Unicode Binary properties.\"\n  ;; Though the docs do not mention it, the property name is matched case\n  ;; insensitively like the other Unicode properties.\n  (syntax-match-properties\n    :clojureRegexpUnicodeCharClass\n    \"\\\\cIs%s\"\n    (map string/lower-case (:binary character-properties))))\n\n(def vim-unicode-category-char-classes\n  \"Vimscript literal `syntax match` for Unicode General Category classes.\"\n  (let [cats (sort (:category character-properties))\n        chrs (->> (map seq cats)\n                  (group-by first)\n                  (keys)\n                  (map str)\n                  (sort))]\n    ;; gc= and general_category= can be case insensitive, but this is behavior\n    ;; is undefined.\n    (str\n      (syntax-match-properties\n        :clojureRegexpUnicodeCharClass\n        \"%s\"\n        chrs\n        false)\n      (syntax-match-properties\n        :clojureRegexpUnicodeCharClass\n        \"%s\"\n        cats)\n      (syntax-match-properties\n        :clojureRegexpUnicodeCharClass\n        \"%%(Is|gc\\\\=|general_category\\\\=)?%s\"\n        cats))))\n\n(def vim-unicode-script-char-classes\n  \"Vimscript literal `syntax match` for Unicode Script properties.\"\n  ;; Script names are matched case insensitively, but Is, sc=, and script=\n  ;; should be matched exactly. In this case, only Is is matched exactly, but\n  ;; this is an acceptable trade-off.\n  ;;\n  ;; InScriptName works, but is undefined.\n  (syntax-match-properties\n    :clojureRegexpUnicodeCharClass\n    \"\\\\c%%(Is|sc\\\\=|script\\\\=)%s\"\n    (map string/lower-case (:script character-properties))))\n\n(def vim-unicode-block-char-classes\n  \"Vimscript literal `syntax match` for Unicode Block properties.\"\n  ;; Block names work like Script names, except the In prefix is used in place\n  ;; of Is.\n  (syntax-match-properties\n    :clojureRegexpUnicodeCharClass\n    \"\\\\c%%(In|blk\\\\=|block\\\\=)%s\"\n    (map string/lower-case (:block character-properties))))\n\n(def comprehensive-clojure-character-property-regexps\n  \"A string representing a Clojure literal vector of regular expressions\n   containing all possible property character classes. For testing Vimscript\n   syntax matching optimizations.\"\n  (let [fmt (fn [prefix prop-key]\n              (let [props (map (partial format \"\\\\p{%s%s}\" prefix)\n                               (sort (get character-properties prop-key)))]\n                (format \"#\\\"%s\\\"\" (string/join props))))]\n    (string/join \\newline [(fmt \"\" :posix)\n                           (fmt \"\" :java)\n                           (fmt \"Is\" :binary)\n                           (fmt \"general_category=\" :category)\n                           (fmt \"script=\" :script)\n                           (fmt \"block=\" :block)])))\n\n(def vim-lispwords\n  \"Vimscript literal `setlocal lispwords=` statement.\"\n  (str \"setlocal lispwords=\" (string/join \\, (sort lispwords)) \"\\n\"))\n\n(def vim-top-cluster\n  \"Vimscript literal `syntax cluster` for all top-level syntax groups.\"\n  (->> \"../syntax/clojure.vim\"\n       slurp\n       (re-seq #\"syntax\\s+(?:keyword|match|region)\\s+(\\S+)(?!.*\\bcontained\\b)\")\n       (map peek)\n       sort\n       distinct\n       (string/join \\,)\n       (format \"syntax cluster clojureTop contains=@Spell,%s\\n\")))\n\n(comment\n  ;; Generate the vim literal definitions for pasting into the runtime files.\n  (spit \"tmp/clojure-defs.vim\"\n        (str generation-comment\n             clojure-version-comment\n             vim-keywords\n             \\newline\n             generation-comment\n             java-version-comment\n             vim-posix-char-classes\n             vim-java-char-classes\n             vim-unicode-binary-char-classes\n             vim-unicode-category-char-classes\n             vim-unicode-script-char-classes\n             vim-unicode-block-char-classes\n             \\newline\n             generation-comment\n             vim-top-cluster\n             \\newline\n             generation-comment\n             vim-lispwords\n             \\newline\n             generation-comment\n             clojure-version-comment\n             vim-completion-words))\n\n  ;; Generate an example file with all possible character property literals.\n  (spit \"tmp/all-char-props.clj\"\n        comprehensive-clojure-character-property-regexps)\n\n  ;; Performance test: `syntax keyword` vs `syntax match`\n  (vim-clojure-static.test/benchmark\n    1000 \"tmp/bench.clj\" (str keyword-groups)\n    ;; `syntax keyword`\n    (->> keyword-groups\n         (map (fn [[group keywords]]\n                (format \"syntax keyword clojure%s %s\\n\"\n                        group\n                        (string/join \\space (sort (map-keyword-names keywords))))))\n         (map string/trim-newline)\n         (string/join \" | \"))\n    ;; Naive `syntax match`\n    (->> keyword-groups\n         (map (fn [[group keywords]]\n                (format \"syntax match clojure%s \\\"\\\\V\\\\<%s\\\\>\\\"\\n\"\n                        group\n                        (string/join \"\\\\|\" (map-keyword-names keywords)))))\n         (map string/trim-newline)\n         (string/join \" | \"))\n    ;; Frak-optimized `syntax match`\n    (->> keyword-groups\n         (map (fn [[group keywords]]\n                (format \"syntax match clojure%s \\\"\\\\v<%s>\\\"\\n\"\n                        group\n                        (vim-frak-pattern (map-keyword-names keywords)))))\n         (map string/trim-newline)\n         (string/join \" | \")))\n  )\n"
  },
  {
    "path": ".vim/bundle/vim-clojure-static/clj/src/vim_clojure_static/test.clj",
    "content": ";; Authors: Sung Pae <self@sungpae.com>\n\n(ns vim-clojure-static.test\n  (:require [clojure.edn :as edn]\n            [clojure.java.io :as io]\n            [clojure.java.shell :as shell]\n            [clojure.string :as string]\n            [clojure.test :as test])\n  (:import (java.io File)\n           (java.util List)))\n\n(defn vim-exec\n  \"Spit buf into file, then execute vim-expr after Vim loads the file. The\n   value of vim-expr is evaluated as EDN and returned.\"\n  [file buf vim-expr]\n  (let [tmp (File/createTempFile \"vim-clojure-static.test.\" \".out\")]\n    (try\n      (io/make-parents file)\n      (spit file buf)\n      (spit tmp (str \"let @x = \" vim-expr))\n      (shell/sh \"vim\" \"-N\" \"-u\" \"vim/test-runtime.vim\"\n                \"-c\" (str \"source \" tmp \" | call writefile([@x], \" (pr-str (str tmp)) \") | quitall!\")\n                file)\n      (edn/read-string (slurp tmp))\n      (finally\n        (.delete tmp)))))\n\n(defn syn-id-names\n  \"Map lines of clojure text to vim synID names at each column as keywords:\n\n   (syn-id-names \\\"foo\\\" …) -> {\\\"foo\\\" [:clojureString :clojureString :clojureString] …}\n\n   First parameter is the file that is used to communicate with Vim. The file\n   is not deleted to allow manual inspection.\"\n  [file & lines]\n  (into {} (map (fn [l ids] [l (mapv keyword ids)])\n                lines\n                (vim-exec file (string/join \\newline lines) \"ClojureSynIDNames()\"))))\n\n(defn subfmt\n  \"Extract a subsequence of seq s corresponding to the character positions of\n   %s in format spec fmt\"\n  [fmt s]\n  (let [f (seq (format fmt \\o001))\n        i (.indexOf ^List f \\o001)]\n    (->> s\n         (drop i)\n         (drop-last (- (count f) i 1)))))\n\n(defmacro defsyntaxtest\n  \"Create a new testing var with tests in the format:\n\n   (defsyntaxtest example\n     [format\n      [test-string test-predicate\n       …]]\n     [\\\"#\\\\\\\"%s\\\\\\\"\\\"\n      [\\\"123\\\" #(every? (partial = :clojureRegexp) %)\n       …]]\n     […])\n\n   At runtime the syn-id-names of the strings (which are placed in the format\n   spec) are passed to their associated predicates. The format spec should\n   contain a single `%s`.\"\n  {:require [#'test/deftest]}\n  [name & body]\n  (assert (every? (fn [[fmt tests]] (and (string? fmt)\n                                         (coll? tests)\n                                         (even? (count tests))))\n                  body))\n  (let [[strings contexts] (reduce (fn [[strings contexts] [fmt tests]]\n                                     (let [[ss λs] (apply map list (partition 2 tests))\n                                           ss (map #(format fmt %) ss)]\n                                       [(concat strings ss)\n                                        (conj contexts {:fmt fmt :ss ss :λs λs})]))\n                                   [[] []] body)\n        syntable (gensym \"syntable\")]\n    `(test/deftest ~name\n       ;; Shellout to vim should happen at runtime\n       (let [~syntable (syn-id-names (str \"tmp/\" ~(str name) \".clj\") ~@strings)]\n         ~@(map (fn [{:keys [fmt ss λs]}]\n                  `(test/testing ~fmt\n                     ~@(map (fn [s λ] `(test/is (~λ (subfmt ~fmt (get ~syntable ~s)))))\n                            ss λs)))\n                contexts)))))\n\n(defmacro defpredicates\n  \"Create two complementary predicate vars, `sym` and `!sym`, which test if\n   all members of a passed collection are equal to `kw`\"\n  [sym kw]\n  `(do\n     (defn ~sym\n       ~(str \"Returns true if all elements of coll equal \" kw)\n       {:arglists '~'[coll]}\n       [coll#]\n       (every? (partial = ~kw) coll#))\n     (defn ~(symbol (str \\! sym))\n       ~(str \"Returns true if any alements of coll do not equal \" kw)\n       {:arglists '~'[coll]}\n       [coll#]\n       (boolean (some (partial not= ~kw) coll#)))))\n\n(defn benchmark [n file buf & exprs]\n  (vim-exec file buf (format \"Benchmark(%d, %s)\"\n                             n\n                             (string/join \\, (map pr-str exprs)))))\n"
  },
  {
    "path": ".vim/bundle/vim-clojure-static/clj/src/vim_clojure_static/update.clj",
    "content": ";; Authors: Sung Pae <self@sungpae.com>\n\n(ns vim-clojure-static.update\n  (:require [clojure.java.io :as io]\n            [clojure.java.shell :refer [sh]]\n            [clojure.string :as string])\n  (:import (java.text SimpleDateFormat)\n           (java.util Date)))\n\n(defn fjoin [& args]\n  (string/join \\/ args))\n\n(def clojure-section\n  #\"(?ms)^CLOJURE.*?(?=^[\\p{Lu} ]+\\t*\\*)\")\n\n(defn update-doc! [first-line-pattern src-file dst-file]\n  (let [sbuf (->> src-file\n                  io/reader\n                  line-seq\n                  (drop-while #(not (re-find first-line-pattern %)))\n                  (string/join \\newline))\n        dbuf (slurp dst-file)\n        dmatch (re-find clojure-section dbuf)\n        hunk (re-find clojure-section sbuf)]\n    (spit dst-file (string/replace-first dbuf dmatch hunk))))\n\n(defn copy-runtime-files! [src dst & opts]\n  (let [{:keys [tag date paths]} (apply hash-map opts)]\n    (doseq [path paths\n            :let [buf (-> (fjoin src path)\n                          slurp\n                          (string/replace \"%%RELEASE_TAG%%\" tag)\n                          (string/replace \"%%RELEASE_DATE%%\" date))]]\n      (spit (fjoin dst \"runtime\" path) buf))))\n\n(defn update-vim!\n  \"Update Vim repository runtime files in dst/runtime\"\n  [src dst]\n  (let [current-tag (string/trim-newline (:out (sh \"git\" \"tag\" \"--points-at\" \"HEAD\")))\n        current-date (.format (SimpleDateFormat. \"dd MMMM YYYY\") (Date.))]\n    (assert (seq current-tag) \"Git HEAD is not tagged!\")\n    (update-doc! #\"CLOJURE\\t*\\*ft-clojure-indent\\*\"\n                 (fjoin src \"doc/clojure.txt\")\n                 (fjoin dst \"runtime/doc/indent.txt\"))\n    (update-doc! #\"CLOJURE\\t*\\*ft-clojure-syntax\\*\"\n                 (fjoin src \"doc/clojure.txt\")\n                 (fjoin dst \"runtime/doc/syntax.txt\"))\n    (copy-runtime-files! src dst\n                         :tag current-tag\n                         :date current-date\n                         :paths [\"autoload/clojurecomplete.vim\"\n                                 \"ftplugin/clojure.vim\"\n                                 \"indent/clojure.vim\"\n                                 \"syntax/clojure.vim\"])))\n\n(comment\n  (update-vim! \"/home/guns/src/vim-clojure-static\" \"/home/guns/src/vim\"))\n"
  },
  {
    "path": ".vim/bundle/vim-clojure-static/clj/test/vim_clojure_static/syntax_test.clj",
    "content": ";; Authors: Sung Pae <self@sungpae.com>\n;;          Joel Holdbrooks <cjholdbrooks@gmail.com>\n\n(ns vim-clojure-static.syntax-test\n  (:require [vim-clojure-static.test :refer [defpredicates defsyntaxtest]]))\n\n(defpredicates number :clojureNumber)\n(defpredicates kw :clojureKeyword)\n(defpredicates regexp :clojureRegexp)\n(defpredicates regexp-escape :clojureRegexpEscape)\n(defpredicates regexp-char-class :clojureRegexpCharClass)\n(defpredicates regexp-predefined-char-class :clojureRegexpPredefinedCharClass)\n(defpredicates regexp-posix-char-class :clojureRegexpPosixCharClass)\n(defpredicates regexp-java-char-class :clojureRegexpJavaCharClass)\n(defpredicates regexp-unicode-char-class :clojureRegexpUnicodeCharClass)\n(defpredicates regexp-boundary :clojureRegexpBoundary)\n(defpredicates regexp-quantifier :clojureRegexpQuantifier)\n(defpredicates regexp-back-ref :clojureRegexpBackRef)\n(defpredicates regexp-or :clojureRegexpOr)\n(defpredicates regexp-group :clojureRegexpGroup)\n(defn regexp-mod [xs] (= (second xs) :clojureRegexpMod))\n(def !regexp-mod (complement regexp-mod))\n\n(defsyntaxtest number-literals-test\n  [\"%s\"\n   [\"1234567890\" number \"+1\"    number \"-1\"    number ; Integer\n    \"0\"          number \"+0\"    number \"-0\"    number ; Integer zero\n    \"0.12\"       number \"+0.12\" number \"-0.12\" number ; Float\n    \"1.\"         number \"+1.\"   number \"-1.\"   number ; Float\n    \"0.0\"        number \"+0.0\"  number \"-0.0\"  number ; Float zero\n    \"01234567\"   number \"+07\"   number \"-07\"   number ; Octal\n    \"00\"         number \"+00\"   number \"-00\"   number ; Octal zero\n    \"0x09abcdef\" number \"+0xf\"  number \"-0xf\"  number ; Hexadecimal\n    \"0x0\"        number \"+0x0\"  number \"-0x0\"  number ; Hexadecimal zero\n    \"3/2\"        number \"+3/2\"  number \"-3/2\"  number ; Rational\n    \"0/0\"        number \"+0/0\"  number \"-0/0\"  number ; Rational (not a syntax error)\n    \"2r1\"        number \"+2r1\"  number \"-2r1\"  number ; Radix\n    \"36R1\"       number \"+36R1\" number \"-36R1\" number ; Radix\n\n    ;; Illegal literals (some are accepted by the reader, but are bad style)\n\n    \".1\" !number\n    \"01.2\" !number\n    \"089\" !number\n    \"0xfg\" !number\n    \"1.0/1\" !number\n    \"01/2\" !number\n    \"1/02\" !number\n    \"2r2\" !number\n    \"1r0\" !number\n    \"37r36\" !number\n\n    ;; BigInt\n\n    \"0N\" number\n    \"+0.1N\" !number\n    \"-07N\" number\n    \"08N\" !number\n    \"+0x0fN\" number\n    \"1/2N\" !number\n\n    ;; BigDecimal\n\n    \"0M\" number\n    \"+0.1M\" number\n    \"08M\" !number\n    \"08.9M\" !number\n    \"0x1fM\" !number\n    \"3/4M\" !number\n    \"2r1M\" !number\n\n    ;; Exponential notation\n\n    \"0e0\" number\n    \"+0.1e-1\" number\n    \"-1e-1\" number\n    \"08e1\" !number\n    \"07e1\" !number\n    \"0xfe-1\" !number\n    \"2r1e-1\" !number]])\n\n(comment (test #'number-literals-test))\n\n;; TODO: Finish me! (this was in an old git stash)\n;; (defsyntaxtest keywords-test\n;;   (with-format \"%s\"\n;;     \":1\" kw\n;;     \":A\" kw\n;;     \":a\" kw\n;;     \":αβγ\" kw\n;;     \"::a\" kw\n;;     \":a/b\" kw\n;;     \":a:b\" kw\n;;     \":a:b/:c:b\" kw\n;;     \":a/b/c/d\" kw\n;;     \"::a/b\" !kw\n;;     \"::\" !kw\n;;     \":a:\" !kw\n;;     \":a/\" !kw\n;;     \":/\" !kw\n;;     \":\" !kw\n;;     ))\n;;\n;; (comment (test #'keywords-test))\n\n(defsyntaxtest java-regexp-literals-test\n  [\"#\\\"%s\\\"\"\n   [;; http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html\n    ;;\n    ;; Characters\n    ;; x          The character x\n    \" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\" regexp\n    \"λ❤\" regexp\n    ;; \\\\         The backslash character\n    \"\\\\\\\\\" regexp-escape\n    ;; \\0n        The character with octal value 0n (0 <= n <= 7)\n    \"\\\\07\" regexp-escape\n    \"\\\\08\" !regexp-escape\n    ;; \\0nn       The character with octal value 0nn (0 <= n <= 7)\n    \"\\\\077\" regexp-escape\n    \"\\\\078\" !regexp-escape\n    ;; \\0mnn      The character with octal value 0mnn (0 <= m <= 3, 0 <= n <= 7)\n    \"\\\\0377\" regexp-escape\n    \"\\\\0378\" !regexp-escape\n    \"\\\\0400\" !regexp-escape\n    ;; \\xhh       The character with hexadecimal value 0xhh\n    \"\\\\xff\" regexp-escape\n    \"\\\\xfg\" !regexp-escape\n    \"\\\\xfff\" !regexp-escape\n    ;; \\uhhhh     The character with hexadecimal value 0xhhhh\n    \"\\\\uffff\" regexp-escape\n    \"\\\\ufff\" !regexp-escape\n    \"\\\\ufffff\" !regexp-escape\n    ;; \\x{h...h}  The character with hexadecimal value 0xh...h (Character.MIN_CODE_POINT  <= 0xh...h <=  Character.MAX_CODE_POINT)\n    ;; \\t         The tab character ('\\u0009')\n    \"\\\\t\" regexp-escape\n    \"\\\\T\" !regexp-escape\n    ;; \\n         The newline (line feed) character ('\\u000A')\n    \"\\\\n\" regexp-escape\n    \"\\\\N\" !regexp-escape\n    ;; \\r         The carriage-return character ('\\u000D')\n    \"\\\\r\" regexp-escape\n    \"\\\\R\" !regexp-escape\n    ;; \\f         The form-feed character ('\\u000C')\n    \"\\\\f\" regexp-escape\n    \"\\\\F\" !regexp-escape\n    ;; \\a         The alert (bell) character ('\\u0007')\n    \"\\\\a\" regexp-escape\n    \"\\\\A\" !regexp-escape\n    ;; \\e         The escape character ('\\u001B')\n    \"\\\\e\" regexp-escape\n    \"\\\\E\" !regexp-escape\n    ;; \\cx        The control character corresponding to x\n    \"\\\\cA\" regexp-escape\n    \"\\\\c1\" !regexp-escape\n    \"\\\\c\" !regexp-escape\n    ;; Special character escapes\n    \"\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}\\\\^\\\\$\\\\*\\\\?\\\\+\\\\.\" regexp-escape\n\n    ;;;; Character classes\n\n    ;; [abc]            a, b, or c (simple class)\n    \"[abc]\" regexp-char-class\n    ;; [^abc]           Any character except a, b, or c (negation)\n    \"[^abc]\" regexp-char-class\n    ;; [a-zA-Z]         a through z or A through Z, inclusive (range)\n    ;; [a-d[m-p]]       a through d, or m through p: [a-dm-p] (union)\n    ;; [a-z&&[def]]     d, e, or f (intersection)\n    ;; [a-z&&[^bc]]     a through z, except for b and c: [ad-z] (subtraction)\n    ;; [a-z&&[^m-p]]    a through z, and not m through p: [a-lq-z](subtraction)\n\n    ;;;; Predefined character classes\n\n    ;; .        Any character (may or may not match line terminators)\n    \".\" regexp-predefined-char-class\n    ;; \\d       A digit: [0-9]\n    \"\\\\d\" regexp-predefined-char-class\n    ;; \\D       A non-digit: [^0-9]\n    \"\\\\D\" regexp-predefined-char-class\n    ;; \\s       A whitespace character: [ \\t\\n\\x0B\\f\\r]\n    \"\\\\s\" regexp-predefined-char-class\n    ;; \\S       A non-whitespace character: [^\\s]\n    \"\\\\S\" regexp-predefined-char-class\n    ;; \\w       A word character: [a-zA-Z_0-9]\n    \"\\\\w\" regexp-predefined-char-class\n    ;; \\W       A non-word character: [^\\w]\n    \"\\\\W\" regexp-predefined-char-class\n\n    ;;;; POSIX character classes (US-ASCII only)\n\n    ;; \\p{Lower}        A lower-case alphabetic character: [a-z]\n    \"\\\\p{Lower}\" regexp-posix-char-class\n    ;; \\p{Upper}        An upper-case alphabetic character:[A-Z]\n    \"\\\\p{Upper}\" regexp-posix-char-class\n    ;; \\p{ASCII}        All ASCII:[\\x00-\\x7F]\n    \"\\\\p{ASCII}\" regexp-posix-char-class\n    ;; \\p{Alpha}        An alphabetic character:[\\p{Lower}\\p{Upper}]\n    \"\\\\p{Alpha}\" regexp-posix-char-class\n    ;; \\p{Digit}        A decimal digit: [0-9]\n    \"\\\\p{Digit}\" regexp-posix-char-class\n    ;; \\p{Alnum}        An alphanumeric character:[\\p{Alpha}\\p{Digit}]\n    \"\\\\p{Alnum}\" regexp-posix-char-class\n    ;; \\p{Punct}        Punctuation: One of !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\n    \"\\\\p{Punct}\" regexp-posix-char-class\n    ;; \\p{Graph}        A visible character: [\\p{Alnum}\\p{Punct}]\n    \"\\\\p{Graph}\" regexp-posix-char-class\n    ;; \\p{Print}        A printable character: [\\p{Graph}\\x20]\n    \"\\\\p{Print}\" regexp-posix-char-class\n    ;; \\p{Blank}        A space or a tab: [ \\t]\n    \"\\\\p{Blank}\" regexp-posix-char-class\n    ;; \\p{Cntrl}        A control character: [\\x00-\\x1F\\x7F]\n    \"\\\\p{Cntrl}\" regexp-posix-char-class\n    ;; \\p{XDigit}       A hexadecimal digit: [0-9a-fA-F]\n    \"\\\\p{XDigit}\" regexp-posix-char-class\n    ;; \\p{Space}        A whitespace character: [ \\t\\n\\x0B\\f\\r]\n    \"\\\\p{Space}\" regexp-posix-char-class\n\n    ;;;; java.lang.Character classes (simple java character type)\n\n    ;; \\p{javaLowerCase}        Equivalent to java.lang.Character.isLowerCase()\n    \"\\\\p{javaLowerCase}\" regexp-java-char-class\n    ;; \\p{javaUpperCase}        Equivalent to java.lang.Character.isUpperCase()\n    \"\\\\p{javaUpperCase}\" regexp-java-char-class\n    ;; \\p{javaWhitespace}       Equivalent to java.lang.Character.isWhitespace()\n    \"\\\\p{javaWhitespace}\" regexp-java-char-class\n    ;; \\p{javaMirrored}         Equivalent to java.lang.Character.isMirrored()\n    \"\\\\p{javaMirrored}\" regexp-java-char-class\n\n    ;;;; Classes for Unicode scripts, blocks, categories and binary properties\n\n    ;; \\p{IsLatin}        A Latin script character (script)\n    \"\\\\p{IsLatin}\" regexp-unicode-char-class\n    ;; \\p{InGreek}        A character in the Greek block (block)\n    \"\\\\p{InGreek}\" regexp-unicode-char-class\n    ;; \\p{IsAlphabetic}   An alphabetic character (binary property)\n    \"\\\\p{IsAlphabetic}\" regexp-unicode-char-class\n    ;; \\p{Sc}             A currency symbol\n    \"\\\\p{Sc}\" regexp-unicode-char-class\n    ;; \\P{InGreek}        Any character except one in the Greek block (negation)\n    \"\\\\P{InGreek}\" regexp-unicode-char-class\n    ;; [\\p{L}&&[^\\p{Lu}]] Any letter except an uppercase letter (subtraction)\n\n    ;; Abbreviated categories\n    \"\\\\pL\" regexp-unicode-char-class\n    \"\\\\p{L}\" regexp-unicode-char-class\n    \"\\\\p{Lu}\" regexp-unicode-char-class\n    \"\\\\p{gc=L}\" regexp-unicode-char-class\n    \"\\\\p{IsLu}\" regexp-unicode-char-class\n\n    ;;;; Invalid classes\n\n    \"\\\\P{Xzibit}\" !regexp-posix-char-class\n    \"\\\\p{YoDawg}\" !regexp-posix-char-class\n\n    ;;;; Boundary matchers\n\n    ;; ^        The beginning of a line\n    \"^\" regexp-boundary\n    ;; $        The end of a line\n    \"$\" regexp-boundary\n    ;; \\b       A word boundary\n    \"\\\\b\" regexp-boundary\n    ;; \\B       A non-word boundary\n    \"\\\\B\" regexp-boundary\n    ;; \\A       The beginning of the input\n    \"\\\\A\" regexp-boundary\n    ;; \\G       The end of the previous match\n    \"\\\\G\" regexp-boundary\n    ;; \\Z       The end of the input but for the final terminator, if any\n    \"\\\\Z\" regexp-boundary\n    ;; \\z       The end of the input\n    \"\\\\z\" regexp-boundary\n\n    ;;;; Greedy quantifiers\n\n    ;; X?       X, once or not at all\n    \"?\" regexp-quantifier\n    ;; X*       X, zero or more times\n    \"*\" regexp-quantifier\n    ;; X+       X, one or more times\n    \"+\" regexp-quantifier\n    ;; X{n}     X, exactly n times\n    \"{0}\" regexp-quantifier\n    ;; X{n,}    X, at least n times\n    \"{0,}\" regexp-quantifier\n    ;; X{n,m}   X, at least n but not more than m times\n    \"{0,1}\" regexp-quantifier\n\n    ;;;; Reluctant quantifiers\n\n    ;; X??      X, once or not at all\n    \"??\" regexp-quantifier\n    ;; X*?      X, zero or more times\n    \"*?\" regexp-quantifier\n    ;; X+?      X, one or more times\n    \"+?\" regexp-quantifier\n    ;; X{n}?    X, exactly n times\n    \"{0}?\" regexp-quantifier\n    ;; X{n,}?   X, at least n times\n    \"{0,}?\" regexp-quantifier\n    ;; X{n,m}?  X, at least n but not more than m times\n    \"{0,1}?\" regexp-quantifier\n\n    ;;;; Possessive quantifiers\n\n    ;; X?+      X, once or not at all\n    \"?+\" regexp-quantifier\n    ;; X*+      X, zero or more times\n    \"*+\" regexp-quantifier\n    ;; X++      X, one or more times\n    \"++\" regexp-quantifier\n    ;; X{n}+    X, exactly n times\n    \"{0}+\" regexp-quantifier\n    ;; X{n,}+   X, at least n times\n    \"{0,}+\" regexp-quantifier\n    ;; X{n,m}+  X, at least n but not more than m times\n    \"{0,1}+\" regexp-quantifier\n\n    \"{-1}\"      !regexp-quantifier\n    \"{-1,}\"     !regexp-quantifier\n    \"{-1,-2}\"   !regexp-quantifier\n    \"{-1}?\"     !regexp-quantifier\n    \"{-1,}?\"    !regexp-quantifier\n    \"{-1,-2}?\"  !regexp-quantifier\n    \"{-1}?\"     !regexp-quantifier\n    \"{-1,}?\"    !regexp-quantifier\n    \"{-1,-2}?\"  !regexp-quantifier\n\n    ;;;; Logical operators\n    ;; XY       X followed by Y\n    ;; XXX: Tested above (regexp)\n\n    ;; X|Y      Either X or Y\n    \"|\" regexp-or\n\n    ;; (X)      X, as a capturing group\n    \"(X)\" regexp-group\n\n    ;;;; Back references\n\n    ;; \\n       Whatever the nth capturing group matched\n    \"\\\\1\" regexp-back-ref\n    ;; \\k<name> Whatever the named-capturing group \"name\" matched\n    \"\\\\k<name>\" regexp-back-ref\n\n    ;;;; Quotation\n\n    ;; \\        Nothing, but quotes the following character\n    ;; XXX: Tested above\n\n    ;; \\Q       Nothing, but quotes all characters until \\E\n    ;; \\E       Nothing, but ends quoting started by \\Q\n    \"\\\\Qa\\\\E\"  (partial = [:clojureRegexpQuote :clojureRegexpQuote :clojureRegexpQuoted :clojureRegexpQuote :clojureRegexpQuote])\n    \"\\\\Qa\\\\\\\"\" (partial = [:clojureRegexpQuote :clojureRegexpQuote :clojureRegexpQuoted :clojureRegexpQuoted :clojureRegexpQuoted])\n    \"\\\\qa\\\\E\"  (partial not-any? #{:clojureRegexpQuote :clojureRegexpQuoted})\n\n    ;;;; Special constructs (named-capturing and non-capturing)\n    ;; (?<name>X)         X, as a named-capturing group\n    \"(?<name>X)\" regexp-mod\n    ;; (?:X)              X, as a non-capturing group\n    \"(?:X)\" regexp-mod\n    ;; (?idmsuxU-idmsuxU) Nothing, but turns match flags i d m s u x U on - off\n    \"(?idmsuxU-idmsuxU)\" regexp-mod\n    \"(?idmsuxU)\"         regexp-mod\n    \"(?-idmsuxU)\"        regexp-mod\n    ;; (?idmsux-idmsux:X) X, as a non-capturing group with the given flags i d m s u x on - off\n    \"(?idmsuxU-idmsuxU:X)\" regexp-mod\n    \"(?idmsuxU:)\"          regexp-mod\n    \"(?-idmsuxU:)\"         regexp-mod\n    ;; (?=X)              X, via zero-width positive lookahead\n    \"(?=X)\" regexp-mod\n    ;; (?!X)              X, via zero-width negative lookahead\n    \"(?!X)\" regexp-mod\n    ;; (?<=X)             X, via zero-width positive lookbehind\n    \"(?<=X)\" regexp-mod\n    ;; (?<!X)             X, via zero-width negative lookbehind\n    \"(?<!X)\" regexp-mod\n    ;; (?>X)              X, as an independent, non-capturing group\n    \"(?>X)\" regexp-mod\n\n    \"(?X)\" !regexp-mod\n    ]]\n  [\"#%s\"\n   [;; Backslashes with character classes\n    \"\\\"[\\\\\\\\]\\\"\" (partial = [:clojureRegexp :clojureRegexpCharClass :clojureRegexpCharClass :clojureRegexpCharClass :clojureRegexpCharClass :clojureRegexp])\n    \"\\\"\\\\[]\\\"\" (partial = [:clojureRegexp :clojureRegexpEscape :clojureRegexpEscape :clojureRegexp :clojureRegexp])\n    \"\\\"\\\\\\\\[]\\\"\" (partial = [:clojureRegexp :clojureRegexpEscape :clojureRegexpEscape :clojureRegexpCharClass :clojureRegexpCharClass :clojureRegexp])]])\n\n(comment (test #'java-regexp-literals-test))\n"
  },
  {
    "path": ".vim/bundle/vim-clojure-static/clj/vim/test-runtime.vim",
    "content": "\" Authors: Sung Pae <self@sungpae.com>\n\nexecute 'set rtp=' . expand('%:p:h:h:h') . ',$VIMRUNTIME'\nfiletype plugin on\nsyntax on\nset synmaxcol=0\nsetfiletype clojure\n\nfunction! EDN(value)\n    \" Changing the quotes may make this valid EDN\n    return tr(string(a:value), \"'\", '\"')\nendfunction\n\nfunction! ClojureSynIDNames()\n    let names = []\n    for lnum in range(1, line('$'))\n        let f = 'synIDattr(synID(' . lnum . ', v:val, 0), \"name\")'\n        call add(names, map(range(1, virtcol([lnum, '$']) - 1), f))\n    endfor\n    return EDN(names)\nendfunction\n\nfunction! Time(n, expr)\n    let start = reltime()\n    let i = 0\n    while i < a:n\n        execute a:expr\n        let i += 1\n    endwhile\n    return eval(reltimestr(reltime(start)))\nendfunction\n\nfunction! Benchmark(n, ...)\n    let times = []\n    for expr in a:000\n        call add(times, Time(a:n, expr))\n    endfor\n    return EDN(times)\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-clojure-static/doc/clojure.txt",
    "content": "*clojure.txt*\tClojure runtime files\n\nINTRODUCTION\t\t\t\t\t\t*clojure-introduction*\n\nMeikel Brandmeyer's excellent Clojure runtime files. Includes syntax, indent,\nftdetect, and ftplugin scripts.\n\nCLOJURE\t\t\t\t\t*ft-clojure-indent* *clojure-indent*\n\nClojure indentation differs somewhat from traditional Lisps, due in part to\nthe use of square and curly brackets, and otherwise by community convention.\nThese conventions are not universally followed, so the Clojure indent script\noffers a few configurable options, listed below.\n\nIf the current vim does not include searchpairpos(), the indent script falls\nback to normal 'lisp' indenting, and the following options are ignored.\n\n\t\t\t\t\t\t\t*g:clojure_maxlines*\n\nSet maximum scan distance of searchpairpos(). Larger values trade performance\nfor correctness when dealing with very long forms. A value of 0 will scan\nwithout limits.\n>\n\t\" Default\n\tlet g:clojure_maxlines = 100\n<\n\t\t\t\t\t\t*g:clojure_fuzzy_indent*\n\t\t\t\t\t*g:clojure_fuzzy_indent_patterns*\n\t\t\t\t\t*g:clojure_fuzzy_indent_blacklist*\n\nThe 'lispwords' option is a list of comma-separated words that mark special\nforms whose subforms must be indented with two spaces.\n\nFor example:\n>\n\t(defn bad []\n\t      \"Incorrect indentation\")\n\n\t(defn good []\n\t  \"Correct indentation\")\n<\nIf you would like to specify 'lispwords' with a |pattern| instead, you can use\nthe fuzzy indent feature:\n>\n\t\" Default\n\tlet g:clojure_fuzzy_indent = 1\n\tlet g:clojure_fuzzy_indent_patterns = ['^with', '^def', '^let']\n\tlet g:clojure_fuzzy_indent_blacklist =\n\t\t\\ ['-fn$', '\\v^with-%(meta|out-str|loading-context)$']\n\n\t\" Legacy comma-delimited string version; the list format above is\n\t\" recommended. Note that patterns are implicitly anchored with ^ and $\n\tlet g:clojure_fuzzy_indent_patterns = 'with.*,def.*,let.*'\n<\n|g:clojure_fuzzy_indent_patterns| and |g:clojure_fuzzy_indent_blacklist| are\n|Lists| of patterns that will be matched against the unquoted, unqualified\nsymbol at the head of a list. This means that a pattern like \"^foo\" will match\nall these candidates: \"foobar\", \"my.ns/foobar\", and \"#'foobar\".\n\nEach candidate word is tested for special treatment in this order:\n\n\t1. Return true if word is literally in 'lispwords'\n\t2. Return false if word matches a pattern in\n\t   |g:clojure_fuzzy_indent_blacklist|\n\t3. Return true if word matches a pattern in\n\t   |g:clojure_fuzzy_indent_patterns|\n\t4. Return false and indent normally otherwise\n\n\t\t\t\t\t*g:clojure_special_indent_words*\n\nSome forms in Clojure are indented so that every subform is indented only two\nspaces, regardless of 'lispwords'. If you have a custom construct that should\nbe indented in this idiosyncratic fashion, you can add your symbols to the\ndefault list below.\n>\n\t\" Default\n\tlet g:clojure_special_indent_words =\n\t   \\ 'deftype,defrecord,reify,proxy,extend-type,extend-protocol,letfn'\n<\n\t\t\t\t\t*g:clojure_align_multiline_strings*\n\nAlign subsequent lines in multiline strings to the column after the opening\nquote, instead of the same column.\n\nFor example:\n>\n\t(def default\n\t  \"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do\n\t  eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n\t  enim ad minim veniam, quis nostrud exercitation ullamco laboris\n\t  nisi ut aliquip ex ea commodo consequat.\")\n\n\t(def aligned\n\t  \"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do\n\t   eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut\n\t   enim ad minim veniam, quis nostrud exercitation ullamco laboris\n\t   nisi ut aliquip ex ea commodo consequat.\")\n<\nThis option is off by default.\n>\n\t\" Default\n\tlet g:clojure_align_multiline_strings = 0\n<\n\t\t\t\t\t\t*g:clojure_align_subforms*\n\nBy default, parenthesized compound forms that look like function calls and\nwhose head subform is on its own line have subsequent subforms indented by\ntwo spaces relative to the opening paren:\n>\n\t(foo\n\t  bar\n\t  baz)\n<\nSetting this option changes this behavior so that all subforms are aligned to\nthe same column, emulating the default behavior of clojure-mode.el:\n>\n\t(foo\n\t bar\n\t baz)\n<\nThis option is off by default.\n>\n\t\" Default\n\tlet g:clojure_align_subforms = 0\n<\n\nCLOJURE\t\t\t\t\t\t\t*ft-clojure-syntax*\n\nSetting *g:clojure_fold* enables folding Clojure code via the syntax engine.\nAny list, vector, or map that extends over more than one line can be folded\nusing the standard Vim |fold-commands|.\n\nPlease note that this option does not work with scripts that redefine the\nbracket syntax regions, such as rainbow-parentheses plugins.\n\nThis option is off by default.\n>\n\t\" Default\n\tlet g:clojure_fold = 0\n<\n\nABOUT\t\t\t\t\t\t\t*clojure-about*\n\nThis document and associated runtime files are maintained at:\nhttps://github.com/guns/vim-clojure-static\n\nDistributed under the Vim license. See |license|.\n\nsyntax/clojure.vim\n\n\tCopyright 2007-2008 (c) Toralf Wittner <toralf.wittner@gmail.com>\n\tCopyright 2008-2012 (c) Meikel Brandmeyer <mb@kotka.de>\n\nftdetect/clojure.vim,\nftplugin/clojure.vim,\nindent/clojure.vim\n\n\tCopyright 2008-2012 (c) Meikel Brandmeyer <mb@kotka.de>\n\nModified and relicensed under the Vim License for distribution with Vim:\n\n\tCopyright 2013-2014 (c) Sung Pae <self@sungpae.com>\n\nLast Change: %%RELEASE_DATE%%\n\n vim:tw=78:noet:sw=8:sts=8:ts=8:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/vim-clojure-static/ftdetect/clojure.vim",
    "content": "autocmd BufNewFile,BufRead *.clj,*.cljs,*.edn setlocal filetype=clojure\n"
  },
  {
    "path": ".vim/bundle/vim-clojure-static/ftplugin/clojure.vim",
    "content": "\" Vim filetype plugin file\n\" Language:\tClojure\n\" Author:\tMeikel Brandmeyer <mb@kotka.de>\n\"\n\" Maintainer:\tSung Pae <self@sungpae.com>\n\" URL:\t\thttps://github.com/guns/vim-clojure-static\n\" License:\tSame as Vim\n\" Last Change:\t%%RELEASE_DATE%%\n\nif exists(\"b:did_ftplugin\")\n\tfinish\nendif\nlet b:did_ftplugin = 1\n\nlet s:cpo_save = &cpo\nset cpo&vim\n\nlet b:undo_ftplugin = 'setlocal iskeyword< define< formatoptions< comments< commentstring< lispwords<'\n\nsetlocal iskeyword+=?,-,*,!,+,/,=,<,>,.,:,$\n\n\" There will be false positives, but this is better than missing the whole set\n\" of user-defined def* definitions.\nsetlocal define=\\\\v[(/]def(ault)@!\\\\S*\n\n\" Remove 't' from 'formatoptions' to avoid auto-wrapping code.\nsetlocal formatoptions-=t\n\n\" Lisp comments are routinely nested (e.g. ;;; SECTION HEADING)\nsetlocal comments=n:;\nsetlocal commentstring=;\\ %s\n\n\" Specially indented symbols from clojure.core and clojure.test.\n\"\n\" Clojure symbols are indented in the defn style when they:\n\"\n\"   * Define vars and anonymous functions\n\"   * Create new lexical scopes or scopes with altered environments\n\"   * Create conditional branches from a predicate function or value\n\"\n\" The arglists for these functions are generally in the form of [x & body];\n\" Functions that accept a flat list of forms do not treat the first argument\n\" specially and hence are not indented specially.\n\"\n\" Generated from https://github.com/guns/vim-clojure-static/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj\nsetlocal lispwords=as->,binding,bound-fn,case,catch,cond->,cond->>,condp,def,definline,definterface,defmacro,defmethod,defmulti,defn,defn-,defonce,defprotocol,defrecord,defstruct,deftest,deftest-,deftype,doall,dorun,doseq,dotimes,doto,extend,extend-protocol,extend-type,fn,for,if,if-let,if-not,let,letfn,locking,loop,ns,proxy,reify,set-test,testing,when,when-first,when-let,when-not,while,with-bindings,with-in-str,with-local-vars,with-open,with-precision,with-redefs,with-redefs-fn,with-test\n\n\" Provide insert mode completions for special forms and clojure.core. As\n\" 'omnifunc' is set by popular Clojure REPL client plugins, we also set\n\" 'completefunc' so that the user has some form of completion available when\n\" 'omnifunc' is set and no REPL connection exists.\nfor s:setting in ['omnifunc', 'completefunc']\n\tif exists('&' . s:setting) && empty(eval('&' . s:setting))\n\t\texecute 'setlocal ' . s:setting . '=clojurecomplete#Complete'\n\t\tlet b:undo_ftplugin .= ' | setlocal ' . s:setting . '<'\n\tendif\nendfor\n\n\" Take all directories of the CLOJURE_SOURCE_DIRS environment variable\n\" and add them to the path option.\n\"\n\" This is a legacy option for VimClojure users.\nif exists('$CLOJURE_SOURCE_DIRS')\n\tfor s:dir in split($CLOJURE_SOURCE_DIRS, (has(\"win32\") || has(\"win64\")) ? ';' : ':')\n\t\tlet s:dir = fnameescape(s:dir)\n\t\t\" Whitespace escaping for Windows\n\t\tlet s:dir = substitute(s:dir, '\\', '\\\\\\\\', 'g')\n\t\tlet s:dir = substitute(s:dir, '\\ ', '\\\\ ', 'g')\n\t\texecute \"setlocal path+=\" . s:dir . \"/**\"\n\tendfor\n\tlet b:undo_ftplugin .= ' | setlocal path<'\nendif\n\n\" Skip brackets in ignored syntax regions when using the % command\nif exists('loaded_matchit')\n\tlet b:match_words = &matchpairs\n\tlet b:match_skip = 's:comment\\|string\\|regex\\|character'\n\tlet b:undo_ftplugin .= ' | unlet! b:match_words b:match_skip'\nendif\n\n\" Win32 can filter files in the browse dialog\nif has(\"gui_win32\") && !exists(\"b:browsefilter\")\n\tlet b:browsefilter = \"Clojure Source Files (*.clj)\\t*.clj\\n\" .\n\t\t\t   \\ \"ClojureScript Source Files (*.cljs)\\t*.cljs\\n\" .\n\t\t\t   \\ \"Java Source Files (*.java)\\t*.java\\n\" .\n\t\t\t   \\ \"All Files (*.*)\\t*.*\\n\"\n\tlet b:undo_ftplugin .= ' | unlet! b:browsefilter'\nendif\n\nlet &cpo = s:cpo_save\n\nunlet! s:cpo_save s:setting s:dir\n\n\" vim:sts=8:sw=8:ts=8:noet\n"
  },
  {
    "path": ".vim/bundle/vim-clojure-static/indent/clojure.vim",
    "content": "\" Vim indent file\n\" Language:\tClojure\n\" Author:\tMeikel Brandmeyer <mb@kotka.de>\n\" URL:\t\thttp://kotka.de/projects/clojure/vimclojure.html\n\"\n\" Maintainer:\tSung Pae <self@sungpae.com>\n\" URL:\t\thttps://github.com/guns/vim-clojure-static\n\" License:\tSame as Vim\n\" Last Change:\t%%RELEASE_DATE%%\n\n\" TODO: Indenting after multibyte characters is broken:\n\"       (let [Δ (if foo\n\"                bar    ; Indent error\n\"                baz)])\n\nif exists(\"b:did_indent\")\n\tfinish\nendif\nlet b:did_indent = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nlet b:undo_indent = 'setlocal autoindent< smartindent< expandtab< softtabstop< shiftwidth< indentexpr< indentkeys<'\n\nsetlocal noautoindent nosmartindent\nsetlocal softtabstop=2 shiftwidth=2 expandtab\nsetlocal indentkeys=!\u0006,o,O\n\nif exists(\"*searchpairpos\")\n\n\tif !exists('g:clojure_maxlines')\n\t\tlet g:clojure_maxlines = 100\n\tendif\n\n\tif !exists('g:clojure_fuzzy_indent')\n\t\tlet g:clojure_fuzzy_indent = 1\n\tendif\n\n\tif !exists('g:clojure_fuzzy_indent_patterns')\n\t\tlet g:clojure_fuzzy_indent_patterns = ['^with', '^def', '^let']\n\tendif\n\n\tif !exists('g:clojure_fuzzy_indent_blacklist')\n\t\tlet g:clojure_fuzzy_indent_blacklist = ['-fn$', '\\v^with-%(meta|out-str|loading-context)$']\n\tendif\n\n\tif !exists('g:clojure_special_indent_words')\n\t\tlet g:clojure_special_indent_words = 'deftype,defrecord,reify,proxy,extend-type,extend-protocol,letfn'\n\tendif\n\n\tif !exists('g:clojure_align_multiline_strings')\n\t\tlet g:clojure_align_multiline_strings = 0\n\tendif\n\n\tif !exists('g:clojure_align_subforms')\n\t\tlet g:clojure_align_subforms = 0\n\tendif\n\n\tfunction! s:SynIdName()\n\t\treturn synIDattr(synID(line(\".\"), col(\".\"), 0), \"name\")\n\tendfunction\n\n\tfunction! s:CurrentChar()\n\t\treturn getline('.')[col('.')-1]\n\tendfunction\n\n\tfunction! s:CurrentWord()\n\t\treturn getline('.')[col('.')-1 : searchpos('\\v>', 'n', line('.'))[1]-2]\n\tendfunction\n\n\tfunction! s:IsParen()\n\t\treturn s:CurrentChar() =~# '\\v[\\(\\)\\[\\]\\{\\}]' &&\n\t\t     \\ s:SynIdName() !~? '\\vstring|regex|comment|character'\n\tendfunction\n\n\t\" Returns 1 if string matches a pattern in 'patterns', which may be a\n\t\" list of patterns, or a comma-delimited string of implicitly anchored\n\t\" patterns.\n\tfunction! s:MatchesOne(patterns, string)\n\t\tlet list = type(a:patterns) == type([])\n\t\t\t   \\ ? a:patterns\n\t\t\t   \\ : map(split(a:patterns, ','), '\"^\" . v:val . \"$\"')\n\t\tfor pat in list\n\t\t\tif a:string =~# pat | return 1 | endif\n\t\tendfor\n\tendfunction\n\n\tfunction! s:MatchPairs(open, close, stopat)\n\t\t\" Stop only on vector and map [ resp. {. Ignore the ones in strings and\n\t\t\" comments.\n\t\tif a:stopat == 0\n\t\t\tlet stopat = max([line(\".\") - g:clojure_maxlines, 0])\n\t\telse\n\t\t\tlet stopat = a:stopat\n\t\tendif\n\n\t\tlet pos = searchpairpos(a:open, '', a:close, 'bWn', \"!s:IsParen()\", stopat)\n\t\treturn [pos[0], virtcol(pos)]\n\tendfunction\n\n\tfunction! s:ClojureCheckForStringWorker()\n\t\t\" Check whether there is the last character of the previous line is\n\t\t\" highlighted as a string. If so, we check whether it's a \". In this\n\t\t\" case we have to check also the previous character. The \" might be the\n\t\t\" closing one. In case the we are still in the string, we search for the\n\t\t\" opening \". If this is not found we take the indent of the line.\n\t\tlet nb = prevnonblank(v:lnum - 1)\n\n\t\tif nb == 0\n\t\t\treturn -1\n\t\tendif\n\n\t\tcall cursor(nb, 0)\n\t\tcall cursor(0, col(\"$\") - 1)\n\t\tif s:SynIdName() !~? \"string\"\n\t\t\treturn -1\n\t\tendif\n\n\t\t\" This will not work for a \" in the first column...\n\t\tif s:CurrentChar() == '\"'\n\t\t\tcall cursor(0, col(\"$\") - 2)\n\t\t\tif s:SynIdName() !~? \"string\"\n\t\t\t\treturn -1\n\t\t\tendif\n\t\t\tif s:CurrentChar() != '\\\\'\n\t\t\t\treturn -1\n\t\t\tendif\n\t\t\tcall cursor(0, col(\"$\") - 1)\n\t\tendif\n\n\t\tlet p = searchpos('\\(^\\|[^\\\\]\\)\\zs\"', 'bW')\n\n\t\tif p != [0, 0]\n\t\t\treturn p[1] - 1\n\t\tendif\n\n\t\treturn indent(\".\")\n\tendfunction\n\n\tfunction! s:CheckForString()\n\t\tlet pos = getpos('.')\n\t\ttry\n\t\t\tlet val = s:ClojureCheckForStringWorker()\n\t\tfinally\n\t\t\tcall setpos('.', pos)\n\t\tendtry\n\t\treturn val\n\tendfunction\n\n\tfunction! s:StripNamespaceAndMacroChars(word)\n\t\treturn substitute(a:word, \"\\\\v%(.*/|[#'`~@^,]*)(.*)\", '\\1', '')\n\tendfunction\n\n\tfunction! s:ClojureIsMethodSpecialCaseWorker(position)\n\t\t\" Find the next enclosing form.\n\t\tcall search('\\S', 'Wb')\n\n\t\t\" Special case: we are at a '(('.\n\t\tif s:CurrentChar() == '('\n\t\t\treturn 0\n\t\tendif\n\t\tcall cursor(a:position)\n\n\t\tlet nextParen = s:MatchPairs('(', ')', 0)\n\n\t\t\" Special case: we are now at toplevel.\n\t\tif nextParen == [0, 0]\n\t\t\treturn 0\n\t\tendif\n\t\tcall cursor(nextParen)\n\n\t\tcall search('\\S', 'W')\n\t\tlet w = s:StripNamespaceAndMacroChars(s:CurrentWord())\n\t\tif g:clojure_special_indent_words =~# '\\V\\<' . w . '\\>'\n\t\t\treturn 1\n\t\tendif\n\n\t\treturn 0\n\tendfunction\n\n\tfunction! s:IsMethodSpecialCase(position)\n\t\tlet pos = getpos('.')\n\t\ttry\n\t\t\tlet val = s:ClojureIsMethodSpecialCaseWorker(a:position)\n\t\tfinally\n\t\t\tcall setpos('.', pos)\n\t\tendtry\n\t\treturn val\n\tendfunction\n\n\tfunction! GetClojureIndent()\n\t\t\" Get rid of special case.\n\t\tif line(\".\") == 1\n\t\t\treturn 0\n\t\tendif\n\n\t\t\" We have to apply some heuristics here to figure out, whether to use\n\t\t\" normal lisp indenting or not.\n\t\tlet i = s:CheckForString()\n\t\tif i > -1\n\t\t\treturn i + !!g:clojure_align_multiline_strings\n\t\tendif\n\n\t\tcall cursor(0, 1)\n\n\t\t\" Find the next enclosing [ or {. We can limit the second search\n\t\t\" to the line, where the [ was found. If no [ was there this is\n\t\t\" zero and we search for an enclosing {.\n\t\tlet paren = s:MatchPairs('(', ')', 0)\n\t\tlet bracket = s:MatchPairs('\\[', '\\]', paren[0])\n\t\tlet curly = s:MatchPairs('{', '}', bracket[0])\n\n\t\t\" In case the curly brace is on a line later then the [ or - in\n\t\t\" case they are on the same line - in a higher column, we take the\n\t\t\" curly indent.\n\t\tif curly[0] > bracket[0] || curly[1] > bracket[1]\n\t\t\tif curly[0] > paren[0] || curly[1] > paren[1]\n\t\t\t\treturn curly[1]\n\t\t\tendif\n\t\tendif\n\n\t\t\" If the curly was not chosen, we take the bracket indent - if\n\t\t\" there was one.\n\t\tif bracket[0] > paren[0] || bracket[1] > paren[1]\n\t\t\treturn bracket[1]\n\t\tendif\n\n\t\t\" There are neither { nor [ nor (, ie. we are at the toplevel.\n\t\tif paren == [0, 0]\n\t\t\treturn 0\n\t\tendif\n\n\t\t\" Now we have to reimplement lispindent. This is surprisingly easy, as\n\t\t\" soon as one has access to syntax items.\n\t\t\"\n\t\t\" - Check whether we are in a special position after a word in\n\t\t\"   g:clojure_special_indent_words. These are special cases.\n\t\t\" - Get the next keyword after the (.\n\t\t\" - If its first character is also a (, we have another sexp and align\n\t\t\"   one column to the right of the unmatched (.\n\t\t\" - In case it is in lispwords, we indent the next line to the column of\n\t\t\"   the ( + sw.\n\t\t\" - If not, we check whether it is last word in the line. In that case\n\t\t\"   we again use ( + sw for indent.\n\t\t\" - In any other case we use the column of the end of the word + 2.\n\t\tcall cursor(paren)\n\n\t\tif s:IsMethodSpecialCase(paren)\n\t\t\treturn paren[1] + &shiftwidth - 1\n\t\tendif\n\n\t\t\" In case we are at the last character, we use the paren position.\n\t\tif col(\"$\") - 1 == paren[1]\n\t\t\treturn paren[1]\n\t\tendif\n\n\t\t\" In case after the paren is a whitespace, we search for the next word.\n\t\tcall cursor(0, col('.') + 1)\n\t\tif s:CurrentChar() == ' '\n\t\t\tcall search('\\v\\S', 'W')\n\t\tendif\n\n\t\t\" If we moved to another line, there is no word after the (. We\n\t\t\" use the ( position for indent.\n\t\tif line(\".\") > paren[0]\n\t\t\treturn paren[1]\n\t\tendif\n\n\t\t\" We still have to check, whether the keyword starts with a (, [ or {.\n\t\t\" In that case we use the ( position for indent.\n\t\tlet w = s:CurrentWord()\n\t\tif stridx('([{', w[0]) > -1\n\t\t\treturn paren[1]\n\t\tendif\n\n\t\t\" Test words without namespace qualifiers and leading reader macro\n\t\t\" metacharacters.\n\t\t\"\n\t\t\" e.g. clojure.core/defn and #'defn should both indent like defn.\n\t\tlet ww = s:StripNamespaceAndMacroChars(w)\n\n\t\tif &lispwords =~# '\\V\\<' . ww . '\\>'\n\t\t\treturn paren[1] + &shiftwidth - 1\n\t\tendif\n\n\t\tif g:clojure_fuzzy_indent\n\t\t\t\\ && !s:MatchesOne(g:clojure_fuzzy_indent_blacklist, ww)\n\t\t\t\\ && s:MatchesOne(g:clojure_fuzzy_indent_patterns, ww)\n\t\t\treturn paren[1] + &shiftwidth - 1\n\t\tendif\n\n\t\tcall search('\\v\\_s', 'cW')\n\t\tcall search('\\v\\S', 'W')\n\t\tif paren[0] < line(\".\")\n\t\t\treturn paren[1] + (g:clojure_align_subforms ? 0 : &shiftwidth - 1)\n\t\tendif\n\n\t\tcall search('\\v\\S', 'bW')\n\t\treturn virtcol(\".\") + 1\n\tendfunction\n\n\tsetlocal indentexpr=GetClojureIndent()\n\nelse\n\n\t\" In case we have searchpairpos not available we fall back to\n\t\" normal lisp indenting.\n\tsetlocal indentexpr=\n\tsetlocal lisp\n\tlet b:undo_indent .= '| setlocal lisp<'\n\nendif\n\nlet &cpo = s:save_cpo\nunlet! s:save_cpo\n\n\" vim:sts=8:sw=8:ts=8:noet\n"
  },
  {
    "path": ".vim/bundle/vim-clojure-static/syntax/clojure.vim",
    "content": "\" Vim syntax file\n\" Language:\tClojure\n\" Authors:\tToralf Wittner <toralf.wittner@gmail.com>\n\"\t\tmodified by Meikel Brandmeyer <mb@kotka.de>\n\" URL:\t\thttp://kotka.de/projects/clojure/vimclojure.html\n\"\n\" Contributors:\tJoel Holdbrooks <cjholdbrooks@gmail.com> (Regexp support, bug fixes)\n\"\n\" Maintainer:\tSung Pae <self@sungpae.com>\n\" URL:\t\thttps://github.com/guns/vim-clojure-static\n\" License:\tSame as Vim\n\" Last Change:\t%%RELEASE_DATE%%\n\nif exists(\"b:current_syntax\")\n\tfinish\nendif\n\nif has(\"folding\") && exists(\"g:clojure_fold\") && g:clojure_fold > 0\n\tsetlocal foldmethod=syntax\nendif\n\n\" Generated from https://github.com/guns/vim-clojure-static/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj\n\" Clojure version 1.5.1\nsyntax keyword clojureConstant nil\nsyntax keyword clojureBoolean false true\nsyntax keyword clojureSpecial . catch clojure.core/fn clojure.core/let clojure.core/loop def do finally fn if let loop monitor-enter monitor-exit new quote recur set! throw try var\nsyntax keyword clojureException catch finally throw try\nsyntax keyword clojureCond case clojure.core/case clojure.core/cond clojure.core/cond-> clojure.core/cond->> clojure.core/condp clojure.core/if-let clojure.core/if-not clojure.core/when clojure.core/when-first clojure.core/when-let clojure.core/when-not cond cond-> cond->> condp if-let if-not when when-first when-let when-not\nsyntax keyword clojureRepeat clojure.core/doall clojure.core/dorun clojure.core/doseq clojure.core/dotimes clojure.core/while doall dorun doseq dotimes while\nsyntax keyword clojureDefine clojure.core/definline clojure.core/definterface clojure.core/defmacro clojure.core/defmethod clojure.core/defmulti clojure.core/defn clojure.core/defn- clojure.core/defonce clojure.core/defprotocol clojure.core/defrecord clojure.core/defstruct clojure.core/deftype definline definterface defmacro defmethod defmulti defn defn- defonce defprotocol defrecord defstruct deftype\nsyntax keyword clojureMacro -> ->> .. amap and areduce as-> assert binding bound-fn clojure.core/-> clojure.core/->> clojure.core/.. clojure.core/amap clojure.core/and clojure.core/areduce clojure.core/as-> clojure.core/assert clojure.core/binding clojure.core/bound-fn clojure.core/comment clojure.core/declare clojure.core/delay clojure.core/dosync clojure.core/doto clojure.core/extend-protocol clojure.core/extend-type clojure.core/for clojure.core/future clojure.core/gen-class clojure.core/gen-interface clojure.core/import clojure.core/io! clojure.core/lazy-cat clojure.core/lazy-seq clojure.core/letfn clojure.core/locking clojure.core/memfn clojure.core/ns clojure.core/or clojure.core/proxy clojure.core/proxy-super clojure.core/pvalues clojure.core/refer-clojure clojure.core/reify clojure.core/some-> clojure.core/some->> clojure.core/sync clojure.core/time clojure.core/with-bindings clojure.core/with-in-str clojure.core/with-loading-context clojure.core/with-local-vars clojure.core/with-open clojure.core/with-out-str clojure.core/with-precision clojure.core/with-redefs comment declare delay dosync doto extend-protocol extend-type for future gen-class gen-interface import io! lazy-cat lazy-seq letfn locking memfn ns or proxy proxy-super pvalues refer-clojure reify some-> some->> sync time with-bindings with-in-str with-loading-context with-local-vars with-open with-out-str with-precision with-redefs\nsyntax keyword clojureFunc * *' + +' - -' ->ArrayChunk ->Vec ->VecNode ->VecSeq -cache-protocol-fn -reset-methods / < <= = == > >= accessor aclone add-classpath add-watch agent agent-error agent-errors aget alength alias all-ns alter alter-meta! alter-var-root ancestors apply array-map aset aset-boolean aset-byte aset-char aset-double aset-float aset-int aset-long aset-short assoc assoc! assoc-in associative? atom await await-for await1 bases bean bigdec bigint biginteger bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn* bound? butlast byte byte-array bytes cast char char-array char? chars chunk chunk-append chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? class class? clear-agent-errors clojure-version clojure.core/* clojure.core/*' clojure.core/+ clojure.core/+' clojure.core/- clojure.core/-' clojure.core/->ArrayChunk clojure.core/->Vec clojure.core/->VecNode clojure.core/->VecSeq clojure.core/-cache-protocol-fn clojure.core/-reset-methods clojure.core// clojure.core/< clojure.core/<= clojure.core/= clojure.core/== clojure.core/> clojure.core/>= clojure.core/accessor clojure.core/aclone clojure.core/add-classpath clojure.core/add-watch clojure.core/agent clojure.core/agent-error clojure.core/agent-errors clojure.core/aget clojure.core/alength clojure.core/alias clojure.core/all-ns clojure.core/alter clojure.core/alter-meta! clojure.core/alter-var-root clojure.core/ancestors clojure.core/apply clojure.core/array-map clojure.core/aset clojure.core/aset-boolean clojure.core/aset-byte clojure.core/aset-char clojure.core/aset-double clojure.core/aset-float clojure.core/aset-int clojure.core/aset-long clojure.core/aset-short clojure.core/assoc clojure.core/assoc! clojure.core/assoc-in clojure.core/associative? clojure.core/atom clojure.core/await clojure.core/await-for clojure.core/await1 clojure.core/bases clojure.core/bean clojure.core/bigdec clojure.core/bigint clojure.core/biginteger clojure.core/bit-and clojure.core/bit-and-not clojure.core/bit-clear clojure.core/bit-flip clojure.core/bit-not clojure.core/bit-or clojure.core/bit-set clojure.core/bit-shift-left clojure.core/bit-shift-right clojure.core/bit-test clojure.core/bit-xor clojure.core/boolean clojure.core/boolean-array clojure.core/booleans clojure.core/bound-fn* clojure.core/bound? clojure.core/butlast clojure.core/byte clojure.core/byte-array clojure.core/bytes clojure.core/cast clojure.core/char clojure.core/char-array clojure.core/char? clojure.core/chars clojure.core/chunk clojure.core/chunk-append clojure.core/chunk-buffer clojure.core/chunk-cons clojure.core/chunk-first clojure.core/chunk-next clojure.core/chunk-rest clojure.core/chunked-seq? clojure.core/class clojure.core/class? clojure.core/clear-agent-errors clojure.core/clojure-version clojure.core/coll? clojure.core/commute clojure.core/comp clojure.core/comparator clojure.core/compare clojure.core/compare-and-set! clojure.core/compile clojure.core/complement clojure.core/concat clojure.core/conj clojure.core/conj! clojure.core/cons clojure.core/constantly clojure.core/construct-proxy clojure.core/contains? clojure.core/count clojure.core/counted? clojure.core/create-ns clojure.core/create-struct clojure.core/cycle clojure.core/dec clojure.core/dec' clojure.core/decimal? clojure.core/delay? clojure.core/deliver clojure.core/denominator clojure.core/deref clojure.core/derive clojure.core/descendants clojure.core/destructure clojure.core/disj clojure.core/disj! clojure.core/dissoc clojure.core/dissoc! clojure.core/distinct clojure.core/distinct? clojure.core/double clojure.core/double-array clojure.core/doubles clojure.core/drop clojure.core/drop-last clojure.core/drop-while clojure.core/empty clojure.core/empty? clojure.core/ensure clojure.core/enumeration-seq clojure.core/error-handler clojure.core/error-mode clojure.core/eval clojure.core/even? clojure.core/every-pred clojure.core/every? clojure.core/ex-data clojure.core/ex-info clojure.core/extend clojure.core/extenders clojure.core/extends? clojure.core/false? clojure.core/ffirst clojure.core/file-seq clojure.core/filter clojure.core/filterv clojure.core/find clojure.core/find-keyword clojure.core/find-ns clojure.core/find-protocol-impl clojure.core/find-protocol-method clojure.core/find-var clojure.core/first clojure.core/flatten clojure.core/float clojure.core/float-array clojure.core/float? clojure.core/floats clojure.core/flush clojure.core/fn? clojure.core/fnext clojure.core/fnil clojure.core/force clojure.core/format clojure.core/frequencies clojure.core/future-call clojure.core/future-cancel clojure.core/future-cancelled? clojure.core/future-done? clojure.core/future? clojure.core/gensym clojure.core/get clojure.core/get-in clojure.core/get-method clojure.core/get-proxy-class clojure.core/get-thread-bindings clojure.core/get-validator clojure.core/group-by clojure.core/hash clojure.core/hash-combine clojure.core/hash-map clojure.core/hash-set clojure.core/identical? clojure.core/identity clojure.core/ifn? clojure.core/in-ns clojure.core/inc clojure.core/inc' clojure.core/init-proxy clojure.core/instance? clojure.core/int clojure.core/int-array clojure.core/integer? clojure.core/interleave clojure.core/intern clojure.core/interpose clojure.core/into clojure.core/into-array clojure.core/ints clojure.core/isa? clojure.core/iterate clojure.core/iterator-seq clojure.core/juxt clojure.core/keep clojure.core/keep-indexed clojure.core/key clojure.core/keys clojure.core/keyword clojure.core/keyword? clojure.core/last clojure.core/line-seq clojure.core/list clojure.core/list* clojure.core/list? clojure.core/load clojure.core/load-file clojure.core/load-reader clojure.core/load-string clojure.core/loaded-libs clojure.core/long clojure.core/long-array clojure.core/longs clojure.core/macroexpand clojure.core/macroexpand-1 clojure.core/make-array clojure.core/make-hierarchy clojure.core/map clojure.core/map-indexed clojure.core/map? clojure.core/mapcat clojure.core/mapv clojure.core/max clojure.core/max-key clojure.core/memoize clojure.core/merge clojure.core/merge-with clojure.core/meta clojure.core/method-sig clojure.core/methods clojure.core/min clojure.core/min-key clojure.core/mod clojure.core/munge clojure.core/name clojure.core/namespace clojure.core/namespace-munge clojure.core/neg? clojure.core/newline clojure.core/next clojure.core/nfirst clojure.core/nil? clojure.core/nnext clojure.core/not clojure.core/not-any? clojure.core/not-empty clojure.core/not-every? clojure.core/not= clojure.core/ns-aliases clojure.core/ns-imports clojure.core/ns-interns clojure.core/ns-map clojure.core/ns-name clojure.core/ns-publics clojure.core/ns-refers clojure.core/ns-resolve clojure.core/ns-unalias clojure.core/ns-unmap clojure.core/nth clojure.core/nthnext clojure.core/nthrest clojure.core/num clojure.core/number? clojure.core/numerator clojure.core/object-array clojure.core/odd? clojure.core/parents clojure.core/partial clojure.core/partition clojure.core/partition-all clojure.core/partition-by clojure.core/pcalls clojure.core/peek clojure.core/persistent! clojure.core/pmap clojure.core/pop clojure.core/pop! clojure.core/pop-thread-bindings clojure.core/pos? clojure.core/pr clojure.core/pr-str clojure.core/prefer-method clojure.core/prefers clojure.core/print clojure.core/print-ctor clojure.core/print-dup clojure.core/print-method clojure.core/print-simple clojure.core/print-str clojure.core/printf clojure.core/println clojure.core/println-str clojure.core/prn clojure.core/prn-str clojure.core/promise clojure.core/proxy-call-with-super clojure.core/proxy-mappings clojure.core/proxy-name clojure.core/push-thread-bindings clojure.core/quot clojure.core/rand clojure.core/rand-int clojure.core/rand-nth clojure.core/range clojure.core/ratio? clojure.core/rational? clojure.core/rationalize clojure.core/re-find clojure.core/re-groups clojure.core/re-matcher clojure.core/re-matches clojure.core/re-pattern clojure.core/re-seq clojure.core/read clojure.core/read-line clojure.core/read-string clojure.core/realized? clojure.core/reduce clojure.core/reduce-kv clojure.core/reduced clojure.core/reduced? clojure.core/reductions clojure.core/ref clojure.core/ref-history-count clojure.core/ref-max-history clojure.core/ref-min-history clojure.core/ref-set clojure.core/refer clojure.core/release-pending-sends clojure.core/rem clojure.core/remove clojure.core/remove-all-methods clojure.core/remove-method clojure.core/remove-ns clojure.core/remove-watch clojure.core/repeat clojure.core/repeatedly clojure.core/replace clojure.core/replicate clojure.core/require clojure.core/reset! clojure.core/reset-meta! clojure.core/resolve clojure.core/rest clojure.core/restart-agent clojure.core/resultset-seq clojure.core/reverse clojure.core/reversible? clojure.core/rseq clojure.core/rsubseq clojure.core/satisfies? clojure.core/second clojure.core/select-keys clojure.core/send clojure.core/send-off clojure.core/send-via clojure.core/seq clojure.core/seq? clojure.core/seque clojure.core/sequence clojure.core/sequential? clojure.core/set clojure.core/set-agent-send-executor! clojure.core/set-agent-send-off-executor! clojure.core/set-error-handler! clojure.core/set-error-mode! clojure.core/set-validator! clojure.core/set? clojure.core/short clojure.core/short-array clojure.core/shorts clojure.core/shuffle clojure.core/shutdown-agents clojure.core/slurp clojure.core/some clojure.core/some-fn clojure.core/sort clojure.core/sort-by clojure.core/sorted-map clojure.core/sorted-map-by clojure.core/sorted-set clojure.core/sorted-set-by clojure.core/sorted? clojure.core/special-symbol? clojure.core/spit clojure.core/split-at clojure.core/split-with clojure.core/str clojure.core/string? clojure.core/struct clojure.core/struct-map clojure.core/subs clojure.core/subseq clojure.core/subvec clojure.core/supers clojure.core/swap! clojure.core/symbol clojure.core/symbol? clojure.core/take clojure.core/take-last clojure.core/take-nth clojure.core/take-while clojure.core/test clojure.core/the-ns clojure.core/thread-bound? clojure.core/to-array clojure.core/to-array-2d clojure.core/trampoline clojure.core/transient clojure.core/tree-seq clojure.core/true? clojure.core/type clojure.core/unchecked-add clojure.core/unchecked-add-int clojure.core/unchecked-byte clojure.core/unchecked-char clojure.core/unchecked-dec clojure.core/unchecked-dec-int clojure.core/unchecked-divide-int clojure.core/unchecked-double clojure.core/unchecked-float clojure.core/unchecked-inc clojure.core/unchecked-inc-int clojure.core/unchecked-int clojure.core/unchecked-long clojure.core/unchecked-multiply clojure.core/unchecked-multiply-int clojure.core/unchecked-negate clojure.core/unchecked-negate-int clojure.core/unchecked-remainder-int clojure.core/unchecked-short clojure.core/unchecked-subtract clojure.core/unchecked-subtract-int clojure.core/underive clojure.core/update-in clojure.core/update-proxy clojure.core/use clojure.core/val clojure.core/vals clojure.core/var-get clojure.core/var-set clojure.core/var? clojure.core/vary-meta clojure.core/vec clojure.core/vector clojure.core/vector-of clojure.core/vector? clojure.core/with-bindings* clojure.core/with-meta clojure.core/with-redefs-fn clojure.core/xml-seq clojure.core/zero? clojure.core/zipmap coll? commute comp comparator compare compare-and-set! compile complement concat conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec dec' decimal? delay? deliver denominator deref derive descendants destructure disj disj! dissoc dissoc! distinct distinct? double double-array doubles drop drop-last drop-while empty empty? ensure enumeration-seq error-handler error-mode eval even? every-pred every? ex-data ex-info extend extenders extends? false? ffirst file-seq filter filterv find find-keyword find-ns find-protocol-impl find-protocol-method find-var first flatten float float-array float? floats flush fn? fnext fnil force format frequencies future-call future-cancel future-cancelled? future-done? future? gensym get get-in get-method get-proxy-class get-thread-bindings get-validator group-by hash hash-combine hash-map hash-set identical? identity ifn? in-ns inc inc' init-proxy instance? int int-array integer? interleave intern interpose into into-array ints isa? iterate iterator-seq juxt keep keep-indexed key keys keyword keyword? last line-seq list list* list? load load-file load-reader load-string loaded-libs long long-array longs macroexpand macroexpand-1 make-array make-hierarchy map map-indexed map? mapcat mapv max max-key memoize merge merge-with meta method-sig methods min min-key mod munge name namespace namespace-munge neg? newline next nfirst nil? nnext not not-any? not-empty not-every? not= ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias ns-unmap nth nthnext nthrest num number? numerator object-array odd? parents partial partition partition-all partition-by pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers print print-ctor print-dup print-method print-simple print-str printf println println-str prn prn-str promise proxy-call-with-super proxy-mappings proxy-name push-thread-bindings quot rand rand-int rand-nth range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern re-seq read read-line read-string realized? reduce reduce-kv reduced reduced? reductions ref ref-history-count ref-max-history ref-min-history ref-set refer release-pending-sends rem remove remove-all-methods remove-method remove-ns remove-watch repeat repeatedly replace replicate require reset! reset-meta! resolve rest restart-agent resultset-seq reverse reversible? rseq rsubseq satisfies? second select-keys send send-off send-via seq seq? seque sequence sequential? set set-agent-send-executor! set-agent-send-off-executor! set-error-handler! set-error-mode! set-validator! set? short short-array shorts shuffle shutdown-agents slurp some some-fn sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? special-symbol? spit split-at split-with str string? struct struct-map subs subseq subvec supers swap! symbol symbol? take take-last take-nth take-while test the-ns thread-bound? to-array to-array-2d trampoline transient tree-seq true? type unchecked-add unchecked-add-int unchecked-byte unchecked-char unchecked-dec unchecked-dec-int unchecked-divide-int unchecked-double unchecked-float unchecked-inc unchecked-inc-int unchecked-int unchecked-long unchecked-multiply unchecked-multiply-int unchecked-negate unchecked-negate-int unchecked-remainder-int unchecked-short unchecked-subtract unchecked-subtract-int underive update-in update-proxy use val vals var-get var-set var? vary-meta vec vector vector-of vector? with-bindings* with-meta with-redefs-fn xml-seq zero? zipmap\nsyntax keyword clojureVariable *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* *command-line-args* *compile-files* *compile-path* *compiler-options* *data-readers* *default-data-reader-fn* *e *err* *file* *flush-on-newline* *fn-loader* *in* *math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* *source-path* *unchecked-math* *use-context-classloader* *verbose-defrecords* *warn-on-reflection* EMPTY-NODE char-escape-string char-name-string clojure.core/*1 clojure.core/*2 clojure.core/*3 clojure.core/*agent* clojure.core/*allow-unresolved-vars* clojure.core/*assert* clojure.core/*clojure-version* clojure.core/*command-line-args* clojure.core/*compile-files* clojure.core/*compile-path* clojure.core/*compiler-options* clojure.core/*data-readers* clojure.core/*default-data-reader-fn* clojure.core/*e clojure.core/*err* clojure.core/*file* clojure.core/*flush-on-newline* clojure.core/*fn-loader* clojure.core/*in* clojure.core/*math-context* clojure.core/*ns* clojure.core/*out* clojure.core/*print-dup* clojure.core/*print-length* clojure.core/*print-level* clojure.core/*print-meta* clojure.core/*print-readably* clojure.core/*read-eval* clojure.core/*source-path* clojure.core/*unchecked-math* clojure.core/*use-context-classloader* clojure.core/*verbose-defrecords* clojure.core/*warn-on-reflection* clojure.core/EMPTY-NODE clojure.core/char-escape-string clojure.core/char-name-string clojure.core/default-data-readers clojure.core/primitives-classnames clojure.core/unquote clojure.core/unquote-splicing default-data-readers primitives-classnames unquote unquote-splicing\n\n\" Keywords are symbols:\n\"   static Pattern symbolPat = Pattern.compile(\"[:]?([\\\\D&&[^/]].*/)?([\\\\D&&[^/]][^/]*)\");\n\" But they:\n\"   * Must not end in a : or /\n\"   * Must not have two adjacent colons except at the beginning\n\"   * Must not contain any reader metacharacters except for ' and #\nsyntax match clojureKeyword \"\\v<:{1,2}%([^ \\n\\r\\t()\\[\\]{}\";@^`~\\\\%/]+/)*[^ \\n\\r\\t()\\[\\]{}\";@^`~\\\\%/]+:@<!>\"\n\nsyntax match clojureStringEscape \"\\v\\\\%([\\\\btnfr\"]|u\\x{4}|[0-3]\\o{2}|\\o{1,2})\" contained\n\nsyntax region clojureString start=/\"/ skip=/\\\\\\\\\\|\\\\\"/ end=/\"/ contains=clojureStringEscape,@Spell\n\nsyntax match clojureCharacter \"\\\\.\"\nsyntax match clojureCharacter \"\\\\o\\%([0-3]\\o\\{2\\}\\|\\o\\{1,2\\}\\)\"\nsyntax match clojureCharacter \"\\\\u\\x\\{4\\}\"\nsyntax match clojureCharacter \"\\\\space\"\nsyntax match clojureCharacter \"\\\\tab\"\nsyntax match clojureCharacter \"\\\\newline\"\nsyntax match clojureCharacter \"\\\\return\"\nsyntax match clojureCharacter \"\\\\backspace\"\nsyntax match clojureCharacter \"\\\\formfeed\"\n\nsyntax match clojureSymbol \"\\v%([a-zA-Z!$&*_+=|<.>?-]|[^\\x00-\\x7F])+%(:?%([a-zA-Z0-9!#$%&*_+=|'<.>/?-]|[^\\x00-\\x7F]))*[#:]@<!\"\n\nlet s:radix_chars = \"0123456789abcdefghijklmnopqrstuvwxyz\"\nfor s:radix in range(2, 36)\n\texecute 'syntax match clojureNumber \"\\v\\c<[-+]?' . s:radix . 'r[' . strpart(s:radix_chars, 0, s:radix) . ']+>\"'\nendfor\nunlet! s:radix_chars s:radix\n\nsyntax match clojureNumber \"\\v<[-+]?%(0\\o*|0x\\x+|[1-9]\\d*)N?>\"\nsyntax match clojureNumber \"\\v<[-+]?%(0|[1-9]\\d*|%(0|[1-9]\\d*)\\.\\d*)%(M|[eE][-+]?\\d+)?>\"\nsyntax match clojureNumber \"\\v<[-+]?%(0|[1-9]\\d*)/%(0|[1-9]\\d*)>\"\n\nsyntax match clojureVarArg \"&\"\n\nsyntax match clojureQuote \"'\"\nsyntax match clojureQuote \"`\"\nsyntax match clojureUnquote \"\\~\"\nsyntax match clojureUnquote \"\\~@\"\nsyntax match clojureMeta \"\\^\"\nsyntax match clojureDeref \"@\"\nsyntax match clojureDispatch \"\\v#[\\^'=<_]?\"\n\n\" Clojure permits no more than 20 params.\nsyntax match clojureAnonArg \"%\\(20\\|1\\d\\|[1-9]\\|&\\)\\?\"\n\nsyntax match  clojureRegexpEscape \"\\v\\\\%([\\\\tnrfae.()\\[\\]{}^$*?+]|c\\u|0[0-3]?\\o{1,2}|x%(\\x{2}|\\{\\x{1,6}\\})|u\\x{4})\" contained display\nsyntax region clojureRegexpQuoted start=/\\\\Q/ms=e+1 skip=/\\\\\\\\\\|\\\\\"/ end=/\\\\E/me=s-1 end=/\"/me=s-1 contained\nsyntax region clojureRegexpQuote  start=/\\\\Q/       skip=/\\\\\\\\\\|\\\\\"/ end=/\\\\E/       end=/\"/me=s-1 contains=clojureRegexpQuoted keepend contained\n\n\" Character property classes\n\" Generated from https://github.com/guns/vim-clojure-static/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj\n\" Java version 1.7.0_45\nsyntax match clojureRegexpPosixCharClass \"\\v\\\\[pP]\\{%(Blank|P%(unct|rint)|Digit|Graph|A%(l%(pha|num)|SCII)|XDigit|Space|Upper|Lower|Cntrl)\\}\" contained display\nsyntax match clojureRegexpJavaCharClass \"\\v\\\\[pP]\\{java%(U%(pperCase|nicodeIdentifier%(Start|Part))|Mirrored|Alphabetic|SpaceChar|D%(efined|igit)|Whitespace|L%(etter%(OrDigit)?|owerCase)|TitleCase|I%(de%(ographic|ntifierIgnorable)|SOControl)|JavaIdentifier%(Start|Part))\\}\" contained display\nsyntax match clojureRegexpUnicodeCharClass \"\\v\\\\[pP]\\{\\cIs%(blank|hex%(digit|_digit)|uppercase|digit|control|a%(ssigned|l%(phabetic|num))|graph|ideographic|p%(rint|unctuation)|titlecase|w%(hite%(_space|space)|ord)|l%(owercase|etter)|noncharacter%(codepoint|_code_point))\\}\" contained display\nsyntax match clojureRegexpUnicodeCharClass \"\\v\\\\[pP][MLNPSZC]\" contained display\nsyntax match clojureRegexpUnicodeCharClass \"\\v\\\\[pP]\\{%(C[fonsc]?|L[DmloutC]?|S[kmoc]?|P[edfiosc]?|M[enc]?|Z[lps]?|N[dlo]?)\\}\" contained display\nsyntax match clojureRegexpUnicodeCharClass \"\\v\\\\[pP]\\{%(Is|gc\\=|general_category\\=)?%(C[fonsc]?|L[DmloutC]?|S[kmoc]?|P[edfiosc]?|M[enc]?|Z[lps]?|N[dlo]?)\\}\" contained display\nsyntax match clojureRegexpUnicodeCharClass \"\\v\\\\[pP]\\{\\c%(Is|sc\\=|script\\=)%(h%(ira%(gana)?|an%([io]|g%(ul)?|unoo)?|ebr%(ew)?)|yi%(ii)?|java%(nese)?|c%(prt|y%(r%(illic|l)|priot)|h%(er%(okee)?|am)|uneiform|o%(mmon|pt%(ic)?)|a%(n%(adian_aboriginal|s)|ri%(an)?))|i%(mperial_aramaic|tal|n%(herited|scriptional_pa%(rthian|hlavi)))|a%(r%(ab%(ic)?|m%([in]|enian))|v%(st|estan))|g%(oth%(ic)?|u%(j%(arati|r)|r%(mukhi|u))|lag%(olitic)?|eor%(gian)?|re%(k|ek))|b%(u%(gi%(nese)?|h%(d|id))|ra%(i%(lle)?|h%(mi)?)|a%(mum?|t%(k|ak)|li%(nese)?)|opo%(mofo)?|eng%(ali)?)|s%(ha%(w|vian)|und%(anese)?|y%(r%(iac|c)|lo%(ti_nagri)?)|inh%(ala)?|a%(ur%(ashtra)?|rb|m%(r|aritan)))|d%(srt|e%(va%(nagari)?|seret))|l%(a%(na|oo?|t%(n|in))|epc%(ha)?|i%(n%(ear_b|b)|mbu?|su)|y%([dc]i%(an)?))|p%(h%(oenician|nx|li|ag%(s_pa)?)|rti)|e%(gyp%(tian_hieroglyphs)?|thi%(opic)?)|r%(jng|un%(ic|r)|ejang)|u%(nknown|gar%(itic)?)|vaii?|n%(koo?|ew_tai_lue)|m%(y%(mr|anmar)|tei|a%(nd%(aic)?|layalam)|ong%(olian)?|eetei_mayek|lym)|z%(inh|yyy|zzz)|t%(glg|fng|i%(finagh|b%(t|etan))|ha%(i|a%(na)?)|elu%(gu)?|a%(i_%(viet|le|tham)|l[eu]|g%(alog|b%(anwa)?)|vt|m%(l|il)))|x%(sux|peo)|o%(r%(iya|kh|ya)|sma%(nya)?|g%(am|ham)|l%(ck|d_%(south_arabian|turkic|italic|persian)|_chiki))|k%(a%(takana|yah_li|n%(nada|a)|li|ithi)|h%(m%(r|er)|ar%(oshthi)?)|thi|nda))\\}\" contained display\nsyntax match clojureRegexpUnicodeCharClass \"\\v\\\\[pP]\\{\\c%(In|blk\\=|block\\=)%(s%(a%(maritan|urashtra)|mall%(_form_variants| form variants|formvariants)|inhala|y%(loti%(nagri|[_ ]nagri)|riac)|havian|p%(ecials|acing%(modifierletters|_modifier_letters| modifier letters))|u%(p%(erscripts%(andsubscripts|_and_subscripts| and subscripts)|plementa%(ry%( private use area-[ab]|_private_use_area_[ab]|privateusearea-[ab])|l%( %(arrows-[ab]|punctuation|mathematical operators)|arrows-[ab]|_%(punctuation|mathematical_operators|arrows_[ab])|punctuation|mathematicaloperators)))|ndanese|rrogates_area))|l%(a%(o|tin%(_%(extended_%(a%(dditional)?|[dcb])|1_supplement)| extended%(-[dacb]| additional)|-1%( supplement|supplement)|extended%(additional|-[dacb])))|e%(pcha|tterlike%(symbols|[_ ]symbols))|y[cd]ian|i%(su|mbu|near%(b%(ideograms|syllabary)|_b_%(ideograms|syllabary)| b %(ideograms|syllabary)))|ow%([_ ]surrogates|surrogates))|b%(a%(sic%(latin|[_ ]latin)|tak|linese|mum%([_ ]supplement|supplement)?)|yzantine%(_musical_symbols| musical symbols|musicalsymbols)|engali|u%(ginese|hid)|lock%(elements|[_ ]elements)|ra%(hmi|ille%([ _]patterns|patterns))|o%(x%(drawing|[_ ]drawing)|pomofo%([ _]extended|extended)?))|t%(a%(g%(s|alog|banwa)|mil|i%( %(viet|xuan jing symbols|le|tham)|viet|le|_%(xuan_jing_symbols|viet|le|tham)|tham|xuanjingsymbols))|ha%(i|ana)|elugu|i%(finagh|betan)|ransport%(_and_map_symbols| and map symbols|andmapsymbols))|n%(ew%(_tai_lue| tai lue|tailue)|umber%([ _]forms|forms)|ko)|m%(iscellaneous%(_%(mathematical_symbols_[ab]|symbols%(_and_%(arrows|pictographs))?|technical)|mathematicalsymbols-[ab]|technical| %(symbols%( and %(arrows|pictographs))?|mathematical symbols-[ab]|technical)|symbols%(and%(arrows|pictographs))?)|eetei%(mayek|[_ ]mayek)|a%(ndaic|thematical%(alphanumericsymbols|operators|_%(alphanumeric_symbols|operators)| %(operators|alphanumeric symbols))|hjong%(tiles|[_ ]tiles)|layalam)|yanmar%(_extended_a|extended-a| extended-a)?|o%(difier%( tone letters|toneletters|_tone_letters)|ngolian)|usical%(symbols|[_ ]symbols))|p%(h%(a%(gs[-_]pa|istos%(disc|[_ ]disc))|o%(netic%(_extensions%(_supplement)?| extensions%( supplement)?|extensions%(supplement)?)|enician))|rivate%(usearea|_use_area| use area)|laying%(cards|[_ ]cards))|javanese|u%(garitic|nified%(_canadian_aboriginal_syllabics%(_extended)?| canadian aboriginal syllabics%( extended)?|canadianaboriginalsyllabics%(extended)?))|o%(riya|gham|l%([ _]chiki|d%(turkic|_%(south_arabian|turkic|italic|persian)|italic|persian| %(south arabian|turkic|italic|persian)|southarabian)|chiki)|smanya|ptical%(_character_recognition| character recognition|characterrecognition))|v%(e%(dic%(extensions|[_ ]extensions)|rtical%([ _]forms|forms))|a%(i|riation%(_selectors%(_supplement)?| selectors%( supplement)?|selectors%(supplement)?)))|a%(vestan|l%(phabetic%(_presentation_forms| presentation forms|presentationforms)|chemical%(symbols|[_ ]symbols))|ncient%( %(symbols|greek %(musical notation|numbers))|symbols|greek%(musicalnotation|numbers)|_%(symbols|greek_%(musical_notation|numbers)))|egean%([ _]numbers|numbers)|r%(menian|rows|abic%( %(presentation forms-[ab]|supplement)|_%(presentation_forms_[ab]|supplement)|presentationforms-[ab]|supplement)?))|i%(nscriptional%(pa%(rthian|hlavi)|%([_ ]pa%(rthian|hlavi)))|deographic%( description characters|descriptioncharacters|_description_characters)|pa%(extensions|[_ ]extensions)|mperial%(aramaic|[_ ]aramaic))|yi%(%([_ ]%(radicals|syllables))|radicals|syllables|jing%(hexagramsymbols|_hexagram_symbols| hexagram symbols))|k%(a%(yah%(li|[_ ]li)|n%(nada|bun|a%([_ ]supplement|supplement)|gxi%(radicals|[_ ]radicals))|ithi|takana%(phoneticextensions|_phonetic_extensions| phonetic extensions)?)|h%(aroshthi|mer%(symbols|[_ ]symbols)?))|d%(e%(vanagari%([ _]extended|extended)?|seret)|omino%(tiles|[_ ]tiles)|ingbats)|g%(lagolitic|othic|reek%(andcoptic| %(and coptic|extended)|extended|_extended)?|u%(rmukhi|jarati)|e%(o%(metric%([_ ]shapes|shapes)|rgian%([_ ]supplement|supplement)?)|neral%(punctuation|[_ ]punctuation)))|e%(nclosed%( %(ideographic supplement|cjk letters and months|alphanumeric%( supplement|s))|cjklettersandmonths|_%(ideographic_supplement|alphanumeric%(_supplement|s)|cjk_letters_and_months)|alphanumerics%(upplement)?|ideographicsupplement)|moticons|thiopic%(extended%(-a)?| %(extended%(-a)?|supplement)|_%(extended%(_a)?|supplement)|supplement)?|gyptian%(hieroglyphs|[_ ]hieroglyphs))|r%(ejang|u%(nic|mi%(numeralsymbols|_numeral_symbols| numeral symbols)))|c%(jk%(_%(compatibility%(_%(ideographs%(_supplement)?|forms))?|radicals_supplement|unified_ideographs%(_extension_[dacb])?|s%(trokes|ymbols_and_punctuation))|compatibility%(ideographs%(supplement)?|forms)?|unifiedideographs%(extension[dacb])?|radicalssupplement|s%(ymbolsandpunctuation|trokes)| %(unified ideographs%( extension [dacb])?|s%(trokes|ymbols and punctuation)|radicals supplement|compatibility%( %(forms|ideographs%( supplement)?))?))|h%(am|erokee)|u%(neiform%(_numbers_and_punctuation| numbers and punctuation|numbersandpunctuation)?|rrency%(symbols|[_ ]symbols))|y%(rillic%(_%(extended_[ab]|supplementary)| %(extended-[ab]|supplement%(ary)?)|extended-[ab]|supplement%(ary)?)?|priot%([_ ]syllabary|syllabary))|o%(ntrol%(pictures|[_ ]pictures)|unting%(rodnumerals|_rod_numerals| rod numerals)|m%(bining%(halfmarks|diacriticalmarks%(forsymbols|supplement)?| %(marks for symbols|half marks|diacritical marks%( %(for symbols|supplement))?)|marksforsymbols|_%(marks_for_symbols|half_marks|diacritical_marks%(_supplement)?))|mon%( indic number forms|indicnumberforms|_indic_number_forms))|ptic)|arian)|h%(i%(ragana|gh%(_%(private_use_surrogates|surrogates)| %(private use surrogates|surrogates)|surrogates|privateusesurrogates))|ebrew|a%(n%(unoo|gul%(jamo%(extended-[ab])?| %(jamo%( extended-[ab])?|syllables|compatibility jamo)|_%(syllables|jamo%(_extended_[ab])?|compatibility_jamo)|syllables|compatibilityjamo))|lfwidth%( and fullwidth forms|andfullwidthforms|_and_fullwidth_forms))))\\}\" contained display\n\nsyntax match   clojureRegexpPredefinedCharClass\t\"\\v%(\\\\[dDsSwW]|\\.)\" contained display\nsyntax cluster clojureRegexpCharPropertyClasses\tcontains=clojureRegexpPosixCharClass,clojureRegexpJavaCharClass,clojureRegexpUnicodeCharClass\nsyntax cluster clojureRegexpCharClasses\t\tcontains=clojureRegexpPredefinedCharClass,clojureRegexpCharClass,@clojureRegexpCharPropertyClasses\nsyntax region  clojureRegexpCharClass\t\tstart=\"\\[\" skip=/\\\\\\\\\\|\\\\]/ end=\"]\" contained contains=clojureRegexpPredefinedCharClass,@clojureRegexpCharPropertyClasses\nsyntax match   clojureRegexpBoundary\t\t\"\\\\[bBAGZz]\" contained display\nsyntax match   clojureRegexpBoundary\t\t\"[$^]\" contained display\nsyntax match   clojureRegexpQuantifier\t\t\"[?*+][?+]\\=\" contained display\nsyntax match   clojureRegexpQuantifier\t\t\"\\v\\{\\d+%(,|,\\d+)?}\\??\" contained display\nsyntax match   clojureRegexpOr\t\t\t\"|\" contained display\nsyntax match   clojureRegexpBackRef\t\t\"\\v\\\\%([1-9]\\d*|k\\<[a-zA-z]+\\>)\" contained display\n\n\" Mode modifiers, mode-modified spans, lookaround, regular and atomic\n\" grouping, and named-capturing.\nsyntax match clojureRegexpMod \"\\v\\(@<=\\?:\" contained display\nsyntax match clojureRegexpMod \"\\v\\(@<=\\?[xdsmiuU]*-?[xdsmiuU]+:?\" contained display\nsyntax match clojureRegexpMod \"\\v\\(@<=\\?%(\\<?[=!]|\\>)\" contained display\nsyntax match clojureRegexpMod \"\\v\\(@<=\\?\\<[a-zA-Z]+\\>\" contained display\n\nsyntax region clojureRegexpGroup start=\"(\" skip=/\\\\\\\\\\|\\\\)/ end=\")\" matchgroup=clojureRegexpGroup contained contains=clojureRegexpMod,clojureRegexpQuantifier,clojureRegexpBoundary,clojureRegexpEscape,@clojureRegexpCharClasses\nsyntax region clojureRegexp start=/\\#\"/ skip=/\\\\\\\\\\|\\\\\"/ end=/\"/ contains=@clojureRegexpCharClasses,clojureRegexpEscape,clojureRegexpQuote,clojureRegexpBoundary,clojureRegexpQuantifier,clojureRegexpOr,clojureRegexpBackRef,clojureRegexpGroup keepend\n\nsyntax keyword clojureCommentTodo contained FIXME XXX TODO FIXME: XXX: TODO:\n\nsyntax match clojureComment \";.*$\" contains=clojureCommentTodo,@Spell\nsyntax match clojureComment \"#!.*$\"\n\n\" Generated from https://github.com/guns/vim-clojure-static/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj\nsyntax cluster clojureTop contains=@Spell,clojureAnonArg,clojureBoolean,clojureCharacter,clojureComment,clojureCond,clojureConstant,clojureDefine,clojureDeref,clojureDispatch,clojureError,clojureException,clojureFunc,clojureKeyword,clojureMacro,clojureMap,clojureMeta,clojureNumber,clojureQuote,clojureRegexp,clojureRepeat,clojureSexp,clojureSpecial,clojureString,clojureSymbol,clojureUnquote,clojureVarArg,clojureVariable,clojureVector\n\nsyntax region clojureSexp   matchgroup=clojureParen start=\"(\"  matchgroup=clojureParen end=\")\" contains=@clojureTop fold\nsyntax region clojureVector matchgroup=clojureParen start=\"\\[\" matchgroup=clojureParen end=\"]\" contains=@clojureTop fold\nsyntax region clojureMap    matchgroup=clojureParen start=\"{\"  matchgroup=clojureParen end=\"}\" contains=@clojureTop fold\n\n\" Highlight superfluous closing parens, brackets and braces.\nsyntax match clojureError \"]\\|}\\|)\"\n\nsyntax sync fromstart\n\nhighlight default link clojureConstant\t\t\tConstant\nhighlight default link clojureBoolean\t\t\tBoolean\nhighlight default link clojureCharacter\t\t\tCharacter\nhighlight default link clojureKeyword\t\t\tKeyword\nhighlight default link clojureNumber\t\t\tNumber\nhighlight default link clojureString\t\t\tString\nhighlight default link clojureStringEscape\t\tCharacter\n\nhighlight default link clojureRegexp\t\t\tConstant\nhighlight default link clojureRegexpEscape\t\tCharacter\nhighlight default link clojureRegexpCharClass\t\tSpecialChar\nhighlight default link clojureRegexpPosixCharClass\tclojureRegexpCharClass\nhighlight default link clojureRegexpJavaCharClass\tclojureRegexpCharClass\nhighlight default link clojureRegexpUnicodeCharClass\tclojureRegexpCharClass\nhighlight default link clojureRegexpPredefinedCharClass\tclojureRegexpCharClass\nhighlight default link clojureRegexpBoundary\t\tSpecialChar\nhighlight default link clojureRegexpQuantifier\t\tSpecialChar\nhighlight default link clojureRegexpMod\t\t\tSpecialChar\nhighlight default link clojureRegexpOr\t\t\tSpecialChar\nhighlight default link clojureRegexpBackRef\t\tSpecialChar\nhighlight default link clojureRegexpGroup\t\tclojureRegexp\nhighlight default link clojureRegexpQuoted\t\tclojureString\nhighlight default link clojureRegexpQuote\t\tclojureRegexpBoundary\n\nhighlight default link clojureVariable\t\t\tIdentifier\nhighlight default link clojureCond\t\t\tConditional\nhighlight default link clojureDefine\t\t\tDefine\nhighlight default link clojureException\t\t\tException\nhighlight default link clojureFunc\t\t\tFunction\nhighlight default link clojureMacro\t\t\tMacro\nhighlight default link clojureRepeat\t\t\tRepeat\n\nhighlight default link clojureSpecial\t\t\tSpecial\nhighlight default link clojureVarArg\t\t\tSpecial\nhighlight default link clojureQuote\t\t\tSpecialChar\nhighlight default link clojureUnquote\t\t\tSpecialChar\nhighlight default link clojureMeta\t\t\tSpecialChar\nhighlight default link clojureDeref\t\t\tSpecialChar\nhighlight default link clojureAnonArg\t\t\tSpecialChar\nhighlight default link clojureDispatch\t\t\tSpecialChar\n\nhighlight default link clojureComment\t\t\tComment\nhighlight default link clojureCommentTodo\t\tTodo\n\nhighlight default link clojureError\t\t\tError\n\nhighlight default link clojureParen\t\t\tDelimiter\n\nlet b:current_syntax = \"clojure\"\n\n\" vim:sts=8:sw=8:ts=8:noet:smc=0\n"
  },
  {
    "path": ".vim/bundle/vim-colors-solarized/README.mkd",
    "content": "---\nTitle: Solarized Colorscheme for Vim\nDescription: Precision colors for machines and people\nAuthor: Ethan Schoonover\nColors: light yellow\nCreated:  2011 Mar 15\nModified: 2011 Apr 16\n\n---\n\nSolarized Colorscheme for Vim\n=============================\n\nDeveloped by Ethan Schoonover <es@ethanschoonover.com>\n\nVisit the [Solarized homepage]\n------------------------------\n\nSee the [Solarized homepage] for screenshots, \ndetails and colorscheme versions for Vim, Mutt, popular terminal emulators and \nother applications.\n\nScreenshots\n-----------\n\n![solarized dark](https://github.com/altercation/solarized/raw/master/img/solarized-vim.png)\n\nDownloads\n---------\n\nIf you have come across this colorscheme via the [Vim-only repository] on \ngithub, or the [vim.org script] page see the link above to the Solarized \nhomepage or visit the main [Solarized repository].\n\nThe [Vim-only repository] is kept in sync with the main [Solarized repository] \nand is for installation convenience only (with [Pathogen] or [Vundle], for \ninstance).  Issues, bug reports, changelogs are centralized at the main \n[Solarized repository].\n\n[Solarized homepage]:   http://ethanschoonover.com/solarized\n[Solarized repository]: https://github.com/altercation/solarized\n[Vim-only repository]:  https://github.com/altercation/vim-colors-solarized\n[vimorg-script]:        http://vim.org/script\n[Pathogen]:             https://github.com/tpope/vim-pathogen\n[Vundle]:               https://github.com/gmarik/vundle\n\nInstallation\n------------\n\n### Option 1: Manual installation\n\n1.  Move `solarized.vim` to your `.vim/colors` directory. After downloading the \n    vim script or package:\n\n        $ cd vim-colors-solarized/colors\n        $ mv solarized.vim ~/.vim/colors/\n\n### Option 2: Pathogen installation ***(recommended)***\n\n1.  Download and install Tim Pope's [Pathogen].\n\n2.  Next, move or clone the `vim-colors-solarized` directory so that it is \n    a subdirectory of the `.vim/bundle` directory.\n\n    a. **Clone:** \n\n            $ cd ~/.vim/bundle\n            $ git clone git://github.com/altercation/vim-colors-solarized.git\n\n    b. **Move:**\n\n        In the parent directory of vim-colors-solarized:\n        \n            $ mv vim-colors-solarized ~/.vim/bundle/\n\n### Modify .vimrc\n\nAfter either Option 1 or Option 2 above, put the following two lines in your \n.vimrc:\n\n    syntax enable\n    set background=dark\n    colorscheme solarized\n\nor, for the light background mode of Solarized:\n\n    syntax enable\n    set background=light\n    colorscheme solarized\n\nI like to have a different background in GUI and terminal modes, so I can use \nthe following if-then. However, I find vim's background autodetection to be \npretty good and, at least with MacVim, I can leave this background value \nassignment out entirely and get the same results.\n\n    if has('gui_running')\n        set background=light\n    else\n        set background=dark\n    endif\n\nSee the [Solarized homepage] for screenshots which will help you \nselect either the light or dark background.\n\n### IMPORTANT NOTE FOR TERMINAL USERS:\n\nIf you are going to use Solarized in Terminal mode (i.e. not in a GUI version \nlike gvim or macvim), **please please please** consider setting your terminal \nemulator's colorscheme to used the Solarized palette. I've included palettes \nfor some popular terminal emulator as well as Xdefaults in the official \nSolarized download available from [Solarized homepage]. If you use \nSolarized *without* these colors, Solarized will need to be told to degrade its\ncolorscheme to a set compatible with the limited 256 terminal palette (whereas \nby using the terminal's 16 ansi color values, you can set the correct, specific \nvalues for the Solarized palette).\n\nIf you do use the custom terminal colors, solarized.vim should work out of the\nbox for you. If you are using a terminal emulator that supports 256 colors and \ndon't want to use the custom Solarized terminal colors, you will need to use \nthe degraded 256 colorscheme. To do so, simply add the following line *before* \nthe `colorschem solarized` line:\n\n    let g:solarized_termcolors=256\n\nAgain, I recommend just changing your terminal colors to Solarized values \neither manually or via one of the many terminal schemes available for import.\n\nAdvanced Configuration\n----------------------\n\nSolarized will work out of the box with just the two lines specified above but \ndoes include several other options that can be set in your .vimrc file.\n\nSet these in your vimrc file prior to calling the colorscheme.\n\"\n    option name               default     optional\n    ------------------------------------------------\n    g:solarized_termcolors=   16      |   256\n    g:solarized_termtrans =   0       |   1\n    g:solarized_degrade   =   0       |   1\n    g:solarized_bold      =   1       |   0\n    g:solarized_underline =   1       |   0\n    g:solarized_italic    =   1       |   0\n    g:solarized_contrast  =   \"normal\"|   \"high\" or \"low\"\n    g:solarized_visibility=   \"normal\"|   \"high\" or \"low\"\n    ------------------------------------------------\n\n### Option Details\n\n*   g:solarized_termcolors\n\n    This is set to *16* by default, meaning that Solarized will attempt to use \n    the standard 16 colors of your terminal emulator. You will need to set \n    those colors to the correct Solarized values either manually or by \n    importing one of the many colorscheme available for popular terminal \n    emulators and Xdefaults.\n\n*   g:solarized_termtrans\n\n    If you use a terminal emulator with a transparent background and Solarized \n    isn't displaying the background color transparently, set this to 1 and \n    Solarized will use the default (transparent) background of the terminal \n    emulator. *urxvt* required this in my testing; iTerm2 did not.\n\n    Note that on Mac OS X Terminal.app, solarized_termtrans is set to 1 by \n    default as this is almost always the best option. The only exception to \n    this is if the working terminfo file supports 256 colors (xterm-256color).\n\n*   g:solarized_degrade\n\n    For test purposes only; forces Solarized to use the 256 degraded color mode \n    to test the approximate color values for accuracy.\n\n*   g:solarized_bold | g:solarized_underline | g:solarized_italic\n\n    If you wish to stop Solarized from displaying bold, underlined or \n    italicized typefaces, simply assign a zero value to the appropriate \n    variable, for example: `let g:solarized_italic=0`\n\n*   g:solarized_contrast\n\n    Stick with normal! It's been carefully tested. Setting this option to high \n    or low does use the same Solarized palette but simply shifts some values up \n    or down in order to expand or compress the tonal range displayed.\n\n*   g:solarized_visibility\n\n    Special characters such as trailing whitespace, tabs, newlines, when\n    displayed using `:set list` can be set to one of three levels depending on \n    your needs. Default value is `normal` with `high` and `low` options.\n\nToggle Background Function\n--------------------------\n\nSolarized comes with a Toggle Background plugin that by default will map to \n<F5> if that mapping is available. If it is not available you will need to \neither map the function manually or change your current <F5> mapping to \nsomething else.\n\nTo set your own mapping in your .vimrc file, simply add the following line to \nsupport normal, insert and visual mode usage, changing the \"<F5>\" value to the \nkey or key combination you wish to use:\n\n    call togglebg#map(\"<F5>\")\n\nNote that you'll want to use a single function key or equivalent if you want \nthe plugin to work in all modes (normal, insert, visual).\n\nCode Notes\n----------\n\nUse folding to view the `solarized.vim` script with `foldmethod=marker` turned \non.\n\nI have attempted to modularize the creation of Vim colorschemes in this script \nand, while it could be refactored further, it should be a good foundation for \nthe creation of any color scheme. By simply changing the sixteen values in the \nGUI section and testing in gvim (or mvim) you can rapidly prototype new \ncolorschemes without diving into the weeds of line-item editing each syntax \nhighlight declaration.\n\nThe Values\n----------\n\nL\\*a\\*b values are canonical (White D65, Reference D50), other values are \nmatched in sRGB space.\n\n    SOLARIZED HEX     16/8 TERMCOL  XTERM/HEX   L*A*B      sRGB        HSB\n    --------- ------- ---- -------  ----------- ---------- ----------- -----------\n    base03    #002b36  8/4 brblack  234 #1c1c1c 15 -12 -12   0  43  54 193 100  21\n    base02    #073642  0/4 black    235 #262626 20 -12 -12   7  54  66 192  90  26\n    base01    #586e75 10/7 brgreen  240 #4e4e4e 45 -07 -07  88 110 117 194  25  46\n    base00    #657b83 11/7 bryellow 241 #585858 50 -07 -07 101 123 131 195  23  51\n    base0     #839496 12/6 brblue   244 #808080 60 -06 -03 131 148 150 186  13  59\n    base1     #93a1a1 14/4 brcyan   245 #8a8a8a 65 -05 -02 147 161 161 180   9  63\n    base2     #eee8d5  7/7 white    254 #d7d7af 92 -00  10 238 232 213  44  11  93\n    base3     #fdf6e3 15/7 brwhite  230 #ffffd7 97  00  10 253 246 227  44  10  99\n    yellow    #b58900  3/3 yellow   136 #af8700 60  10  65 181 137   0  45 100  71\n    orange    #cb4b16  9/3 brred    166 #d75f00 50  50  55 203  75  22  18  89  80\n    red       #dc322f  1/1 red      160 #d70000 50  65  45 220  50  47   1  79  86\n    magenta   #d33682  5/5 magenta  125 #af005f 50  65 -05 211  54 130 331  74  83\n    violet    #6c71c4 13/5 brmagenta 61 #5f5faf 50  15 -45 108 113 196 237  45  77\n    blue      #268bd2  4/4 blue      33 #0087ff 55 -10 -45  38 139 210 205  82  82\n    cyan      #2aa198  6/6 cyan      37 #00afaf 60 -35 -05  42 161 152 175  74  63\n    green     #859900  2/2 green     64 #5f8700 60 -20  65 133 153   0  68 100  60\n\nLicense\n-------\nCopyright (c) 2011 Ethan Schoonover\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": ".vim/bundle/vim-colors-solarized/autoload/togglebg.vim",
    "content": "\" Toggle Background\n\" Modified:     2011 Apr 29\n\" Maintainer:   Ethan Schoonover\n\" License:      OSI approved MIT license\n\nif exists(\"g:loaded_togglebg\")\n    finish\nendif\nlet g:loaded_togglebg = 1\n\n\" noremap is a bit misleading here if you are unused to vim mapping.\n\" in fact, there is remapping, but only of script locally defined remaps, in \n\" this case <SID>TogBG. The <script> argument modifies the noremap scope in \n\" this regard (and the noremenu below).\nnnoremap <unique> <script> <Plug>ToggleBackground <SID>TogBG\ninoremap <unique> <script> <Plug>ToggleBackground <ESC><SID>TogBG<ESC>a\nvnoremap <unique> <script> <Plug>ToggleBackground <ESC><SID>TogBG<ESC>gv\nnnoremenu <script> Window.Toggle\\ Background <SID>TogBG\ninoremenu <script> Window.Toggle\\ Background <ESC><SID>TogBG<ESC>a\nvnoremenu <script> Window.Toggle\\ Background <ESC><SID>TogBG<ESC>gv\ntmenu Window.Toggle\\ Background Toggle light and dark background modes\nnnoremenu <script> ToolBar.togglebg <SID>TogBG\ninoremenu <script> ToolBar.togglebg <ESC><SID>TogBG<ESC>a\nvnoremenu <script> ToolBar.togglebg <ESC><SID>TogBG<ESC>gv\ntmenu ToolBar.togglebg Toggle light and dark background modes\nnoremap <SID>TogBG  :call <SID>TogBG()<CR>\n\nfunction! s:TogBG()\n    let &background = ( &background == \"dark\"? \"light\" : \"dark\" )\n    if exists(\"g:colors_name\")\n        exe \"colorscheme \" . g:colors_name\n    endif\nendfunction\n\nif !exists(\":ToggleBG\")\n    command ToggleBG :call s:TogBG()\nendif\n\nfunction! ToggleBackground()\n    echo \"Please update your ToggleBackground mapping. ':help togglebg' for information.\"\nendfunction\n\nfunction! togglebg#map(mapActivation)\n    try\n        exe \"silent! nmap <unique> \".a:mapActivation.\" <Plug>ToggleBackground\"\n        exe \"silent! imap <unique> \".a:mapActivation.\" <Plug>ToggleBackground\"\n        exe \"silent! vmap <unique> \".a:mapActivation.\" <Plug>ToggleBackground\"\n    finally\n        return 0\n    endtry\nendfunction\n\nif !exists(\"no_plugin_maps\") && !hasmapto('<Plug>ToggleBackground')\n    call togglebg#map(\"<F5>\")\nendif\n"
  },
  {
    "path": ".vim/bundle/vim-colors-solarized/colors/solarized.vim",
    "content": "\" Name:     Solarized vim colorscheme\n\" Author:   Ethan Schoonover <es@ethanschoonover.com>\n\" URL:      http://ethanschoonover.com/solarized\n\"           (see this url for latest release & screenshots)\n\" License:  OSI approved MIT license (see end of this file)\n\" Created:  In the middle of the night\n\" Modified: 2011 May 05\n\"\n\" Usage \"{{{\n\"\n\" ---------------------------------------------------------------------\n\" ABOUT:\n\" ---------------------------------------------------------------------\n\" Solarized is a carefully designed selective contrast colorscheme with dual\n\" light and dark modes that runs in both GUI, 256 and 16 color modes.\n\"\n\" See the homepage above for screenshots and details.\n\"\n\" ---------------------------------------------------------------------\n\" OPTIONS:\n\" ---------------------------------------------------------------------\n\" See the \"solarized.txt\" help file included with this colorscheme (in the \n\" \"doc\" subdirectory) for information on options, usage, the Toggle Background \n\" function and more. If you have already installed Solarized, this is available \n\" from the Solarized menu and command line as \":help solarized\"\n\"\n\" ---------------------------------------------------------------------\n\" INSTALLATION:\n\" ---------------------------------------------------------------------\n\" Two options for installation: manual or pathogen\n\"\n\" MANUAL INSTALLATION OPTION:\n\" ---------------------------------------------------------------------\n\"\n\" 1.  Download the solarized distribution (available on the homepage above)\n\"     and unarchive the file.\n\" 2.  Move `solarized.vim` to your `.vim/colors` directory.\n\" 3.  Move each of the files in each subdirectories to the corresponding .vim\n\"     subdirectory (e.g. autoload/togglebg.vim goes into your .vim/autoload \n\"     directory as .vim/autoload/togglebg.vim).\n\"\n\" RECOMMENDED PATHOGEN INSTALLATION OPTION:\n\" ---------------------------------------------------------------------\n\"\n\" 1.  Download and install Tim Pope's Pathogen from:\n\"     https://github.com/tpope/vim-pathogen\n\"\n\" 2.  Next, move or clone the `vim-colors-solarized` directory so that it is\n\"     a subdirectory of the `.vim/bundle` directory.\n\"\n\"     a. **clone with git:**\n\"\n\"       $ cd ~/.vim/bundle\n\"       $ git clone git://github.com/altercation/vim-colors-solarized.git\n\"\n\"     b. **or move manually into the pathogen bundle directory:**\n\"         In the parent directory of vim-colors-solarized:\n\"\n\"         $ mv vim-colors-solarized ~/.vim/bundle/\n\"\n\" MODIFY VIMRC:\n\"\n\" After either Option 1 or Option 2 above, put the following two lines in your\n\" .vimrc:\n\"\n\"     syntax enable\n\"     set background=dark\n\"     colorscheme solarized\n\"\n\" or, for the light background mode of Solarized:\n\"\n\"     syntax enable\n\"     set background=light\n\"     colorscheme solarized\n\"\n\" I like to have a different background in GUI and terminal modes, so I can use\n\" the following if-then. However, I find vim's background autodetection to be\n\" pretty good and, at least with MacVim, I can leave this background value\n\" assignment out entirely and get the same results.\n\"\n\"     if has('gui_running')\n\"       set background=light\n\"     else\n\"       set background=dark\n\"     endif\n\"\n\" See the Solarized homepage at http://ethanschoonover.com/solarized for\n\" screenshots which will help you select either the light or dark background.\n\"\n\" ---------------------------------------------------------------------\n\" COLOR VALUES\n\" ---------------------------------------------------------------------\n\" Download palettes and files from: http://ethanschoonover.com/solarized\n\"\n\" L\\*a\\*b values are canonical (White D65, Reference D50), other values are\n\" matched in sRGB space.\n\"\n\" SOLARIZED HEX     16/8 TERMCOL  XTERM/HEX   L*A*B      sRGB        HSB\n\" --------- ------- ---- -------  ----------- ---------- ----------- -----------\n\" base03    #002b36  8/4 brblack  234 #1c1c1c 15 -12 -12   0  43  54 193 100  21\n\" base02    #073642  0/4 black    235 #262626 20 -12 -12   7  54  66 192  90  26\n\" base01    #586e75 10/7 brgreen  240 #4e4e4e 45 -07 -07  88 110 117 194  25  46\n\" base00    #657b83 11/7 bryellow 241 #585858 50 -07 -07 101 123 131 195  23  51\n\" base0     #839496 12/6 brblue   244 #808080 60 -06 -03 131 148 150 186  13  59\n\" base1     #93a1a1 14/4 brcyan   245 #8a8a8a 65 -05 -02 147 161 161 180   9  63\n\" base2     #eee8d5  7/7 white    254 #d7d7af 92 -00  10 238 232 213  44  11  93\n\" base3     #fdf6e3 15/7 brwhite  230 #ffffd7 97  00  10 253 246 227  44  10  99\n\" yellow    #b58900  3/3 yellow   136 #af8700 60  10  65 181 137   0  45 100  71\n\" orange    #cb4b16  9/3 brred    166 #d75f00 50  50  55 203  75  22  18  89  80\n\" red       #dc322f  1/1 red      160 #d70000 50  65  45 220  50  47   1  79  86\n\" magenta   #d33682  5/5 magenta  125 #af005f 50  65 -05 211  54 130 331  74  83\n\" violet    #6c71c4 13/5 brmagenta 61 #5f5faf 50  15 -45 108 113 196 237  45  77\n\" blue      #268bd2  4/4 blue      33 #0087ff 55 -10 -45  38 139 210 205  82  82\n\" cyan      #2aa198  6/6 cyan      37 #00afaf 60 -35 -05  42 161 152 175  74  63\n\" green     #859900  2/2 green     64 #5f8700 60 -20  65 133 153   0  68 100  60\n\"\n\" ---------------------------------------------------------------------\n\" COLORSCHEME HACKING\n\" ---------------------------------------------------------------------\n\"\n\" Useful commands for testing colorschemes:\n\" :source $VIMRUNTIME/syntax/hitest.vim\n\" :help highlight-groups\n\" :help cterm-colors\n\" :help group-name\n\"\n\" Useful links for developing colorschemes:\n\" http://www.vim.org/scripts/script.php?script_id=2937\n\" http://vimcasts.org/episodes/creating-colorschemes-for-vim/\n\" http://www.frexx.de/xterm-256-notes/\"\n\"\n\" }}}\n\" Environment Specific Overrides \"{{{\n\" Allow or disallow certain features based on current terminal emulator or \n\" environment.\n\n\" Terminals that support italics\nlet s:terms_italic=[\n            \\\"rxvt\",\n            \\\"gnome-terminal\"\n            \\]\n\" For reference only, terminals are known to be incomptible.\n\" Terminals that are in neither list need to be tested.\nlet s:terms_noitalic=[\n            \\\"iTerm.app\",\n            \\\"Apple_Terminal\"\n            \\]\nif has(\"gui_running\")\n    let s:terminal_italic=1 \" TODO: could refactor to not require this at all\nelse\n    let s:terminal_italic=0 \" terminals will be guilty until proven compatible\n    for term in s:terms_italic\n        if $TERM_PROGRAM =~ term\n            let s:terminal_italic=1\n        endif\n    endfor\nendif\n\n\" }}}\n\" Default option values\"{{{\n\" ---------------------------------------------------------------------\n\" s:options_list is used to autogenerate a list of all non-default options \n\" using \"call SolarizedOptions()\" or with the \"Generate .vimrc commands\" \n\" Solarized menu option. See the \"Menus\" section below for the function itself.\nlet s:options_list=[\n            \\'\" this block of commands has been autogenerated by solarized.vim and',\n            \\'\" includes the current, non-default Solarized option values.',\n            \\'\" To use, place these commands in your .vimrc file (replacing any',\n            \\'\" existing colorscheme commands). See also \":help solarized\"',\n            \\'',\n            \\'\" ------------------------------------------------------------------',\n            \\'\" Solarized Colorscheme Config',\n            \\'\" ------------------------------------------------------------------',\n            \\]\nlet s:colorscheme_list=[\n            \\'syntax enable',\n            \\'set background='.&background,\n            \\'colorscheme solarized',\n            \\]\nlet s:defaults_list=[\n            \\'\" ------------------------------------------------------------------',\n            \\'',\n            \\'\" The following items are available options, but do not need to be',\n            \\'\" included in your .vimrc as they are currently set to their defaults.',\n            \\''\n            \\]\nlet s:lazycat_list=[\n            \\'\" lazy method of appending this onto your .vimrc \":w! >> ~/.vimrc\"',\n            \\'\" ------------------------------------------------------------------',\n            \\]\n\nfunction! s:SetOption(name,default)\n    if type(a:default) == type(0)\n        let l:wrap=''\n        let l:ewrap=''\n    else\n        let l:wrap='\"'\n        let l:ewrap='\\\"'\n    endif\n    if !exists(\"g:solarized_\".a:name) || g:solarized_{a:name}==a:default\n        exe 'let g:solarized_'.a:name.'='.l:wrap.a:default.l:wrap.'\"'\n        exe 'call add(s:defaults_list, \"\\\" let g:solarized_'.a:name.'='.l:ewrap.g:solarized_{a:name}.l:ewrap.'\")'\n    else\n        exe 'call add(s:options_list,  \"let g:solarized_'.a:name.'='.l:ewrap.g:solarized_{a:name}.l:ewrap.'    \\\"default value is '.a:default.'\")'\n    endif\nendfunction\n\nif ($TERM_PROGRAM ==? \"apple_terminal\" && &t_Co < 256)\n    let s:solarized_termtrans_default = 1\nelse\n    let s:solarized_termtrans_default = 0\nendif\ncall s:SetOption(\"termtrans\",s:solarized_termtrans_default)\ncall s:SetOption(\"degrade\",0)\ncall s:SetOption(\"bold\",1)\ncall s:SetOption(\"underline\",1)\ncall s:SetOption(\"italic\",1) \" note that we need to override this later if the terminal doesn't support\ncall s:SetOption(\"termcolors\",16)\ncall s:SetOption(\"contrast\",\"normal\")\ncall s:SetOption(\"visibility\",\"normal\")\ncall s:SetOption(\"diffmode\",\"normal\")\ncall s:SetOption(\"hitrail\",0)\ncall s:SetOption(\"menu\",1)\n\n\"}}}\n\" Colorscheme initialization \"{{{\n\" ---------------------------------------------------------------------\nhi clear\nif exists(\"syntax_on\")\n  syntax reset\nendif\nlet colors_name = \"solarized\"\n\n\"}}}\n\" GUI & CSApprox hexadecimal palettes\"{{{\n\" ---------------------------------------------------------------------\n\"\n\" Set both gui and terminal color values in separate conditional statements\n\" Due to possibility that CSApprox is running (though I suppose we could just\n\" leave the hex values out entirely in that case and include only cterm colors)\n\" We also check to see if user has set solarized (force use of the\n\" neutral gray monotone palette component)\nif (has(\"gui_running\") && g:solarized_degrade == 0)\n    let s:vmode       = \"gui\"\n    let s:base03      = \"#002b36\"\n    let s:base02      = \"#073642\"\n    let s:base01      = \"#586e75\"\n    let s:base00      = \"#657b83\"\n    let s:base0       = \"#839496\"\n    let s:base1       = \"#93a1a1\"\n    let s:base2       = \"#eee8d5\"\n    let s:base3       = \"#fdf6e3\"\n    let s:yellow      = \"#b58900\"\n    let s:orange      = \"#cb4b16\"\n    let s:red         = \"#dc322f\"\n    let s:magenta     = \"#d33682\"\n    let s:violet      = \"#6c71c4\"\n    let s:blue        = \"#268bd2\"\n    let s:cyan        = \"#2aa198\"\n    \"let s:green       = \"#859900\" \"original\n    let s:green       = \"#719e07\" \"experimental\nelseif (has(\"gui_running\") && g:solarized_degrade == 1)\n    \" These colors are identical to the 256 color mode. They may be viewed\n    \" while in gui mode via \"let g:solarized_degrade=1\", though this is not\n    \" recommened and is for testing only.\n    let s:vmode       = \"gui\"\n    let s:base03      = \"#1c1c1c\"\n    let s:base02      = \"#262626\"\n    let s:base01      = \"#4e4e4e\"\n    let s:base00      = \"#585858\"\n    let s:base0       = \"#808080\"\n    let s:base1       = \"#8a8a8a\"\n    let s:base2       = \"#d7d7af\"\n    let s:base3       = \"#ffffd7\"\n    let s:yellow      = \"#af8700\"\n    let s:orange      = \"#d75f00\"\n    let s:red         = \"#af0000\"\n    let s:magenta     = \"#af005f\"\n    let s:violet      = \"#5f5faf\"\n    let s:blue        = \"#0087ff\"\n    let s:cyan        = \"#00afaf\"\n    let s:green       = \"#5f8700\"\nelseif g:solarized_termcolors != 256 && &t_Co >= 16\n    let s:vmode       = \"cterm\"\n    let s:base03      = \"8\"\n    let s:base02      = \"0\"\n    let s:base01      = \"10\"\n    let s:base00      = \"11\"\n    let s:base0       = \"12\"\n    let s:base1       = \"14\"\n    let s:base2       = \"7\"\n    let s:base3       = \"15\"\n    let s:yellow      = \"3\"\n    let s:orange      = \"9\"\n    let s:red         = \"1\"\n    let s:magenta     = \"5\"\n    let s:violet      = \"13\"\n    let s:blue        = \"4\"\n    let s:cyan        = \"6\"\n    let s:green       = \"2\"\nelseif g:solarized_termcolors == 256\n    let s:vmode       = \"cterm\"\n    let s:base03      = \"234\"\n    let s:base02      = \"235\"\n    let s:base01      = \"239\"\n    let s:base00      = \"240\"\n    let s:base0       = \"244\"\n    let s:base1       = \"245\"\n    let s:base2       = \"187\"\n    let s:base3       = \"230\"\n    let s:yellow      = \"136\"\n    let s:orange      = \"166\"\n    let s:red         = \"124\"\n    let s:magenta     = \"125\"\n    let s:violet      = \"61\"\n    let s:blue        = \"33\"\n    let s:cyan        = \"37\"\n    let s:green       = \"64\"\nelse\n    let s:vmode       = \"cterm\"\n    let s:bright      = \"* term=bold cterm=bold\"\n\"   let s:base03      = \"0\".s:bright\n\"   let s:base02      = \"0\"\n\"   let s:base01      = \"2\".s:bright\n\"   let s:base00      = \"3\".s:bright\n\"   let s:base0       = \"4\".s:bright\n\"   let s:base1       = \"6\".s:bright\n\"   let s:base2       = \"7\"\n\"   let s:base3       = \"7\".s:bright\n\"   let s:yellow      = \"3\"\n\"   let s:orange      = \"1\".s:bright\n\"   let s:red         = \"1\"\n\"   let s:magenta     = \"5\"\n\"   let s:violet      = \"5\".s:bright\n\"   let s:blue        = \"4\"\n\"   let s:cyan        = \"6\"\n\"   let s:green       = \"2\"\n    let s:base03      = \"DarkGray\"      \" 0*\n    let s:base02      = \"Black\"         \" 0\n    let s:base01      = \"LightGreen\"    \" 2*\n    let s:base00      = \"LightYellow\"   \" 3*\n    let s:base0       = \"LightBlue\"     \" 4*\n    let s:base1       = \"LightCyan\"     \" 6*\n    let s:base2       = \"LightGray\"     \" 7\n    let s:base3       = \"White\"         \" 7*\n    let s:yellow      = \"DarkYellow\"    \" 3\n    let s:orange      = \"LightRed\"      \" 1*\n    let s:red         = \"DarkRed\"       \" 1\n    let s:magenta     = \"DarkMagenta\"   \" 5\n    let s:violet      = \"LightMagenta\"  \" 5*\n    let s:blue        = \"DarkBlue\"      \" 4\n    let s:cyan        = \"DarkCyan\"      \" 6\n    let s:green       = \"DarkGreen\"     \" 2\n\nendif\n\"}}}\n\" Formatting options and null values for passthrough effect \"{{{\n\" ---------------------------------------------------------------------\n    let s:none            = \"NONE\"\n    let s:none            = \"NONE\"\n    let s:t_none          = \"NONE\"\n    let s:n               = \"NONE\"\n    let s:c               = \",undercurl\"\n    let s:r               = \",reverse\"\n    let s:s               = \",standout\"\n    let s:ou              = \"\"\n    let s:ob              = \"\"\n\"}}}\n\" Background value based on termtrans setting \"{{{\n\" ---------------------------------------------------------------------\nif (has(\"gui_running\") || g:solarized_termtrans == 0)\n    let s:back        = s:base03\nelse\n    let s:back        = \"NONE\"\nendif\n\"}}}\n\" Alternate light scheme \"{{{\n\" ---------------------------------------------------------------------\nif &background == \"light\"\n    let s:temp03      = s:base03\n    let s:temp02      = s:base02\n    let s:temp01      = s:base01\n    let s:temp00      = s:base00\n    let s:base03      = s:base3\n    let s:base02      = s:base2\n    let s:base01      = s:base1\n    let s:base00      = s:base0\n    let s:base0       = s:temp00\n    let s:base1       = s:temp01\n    let s:base2       = s:temp02\n    let s:base3       = s:temp03\n    if (s:back != \"NONE\")\n        let s:back    = s:base03\n    endif\nendif\n\"}}}\n\" Optional contrast schemes \"{{{\n\" ---------------------------------------------------------------------\nif g:solarized_contrast == \"high\"\n    let s:base01      = s:base00\n    let s:base00      = s:base0\n    let s:base0       = s:base1\n    let s:base1       = s:base2\n    let s:base2       = s:base3\n    let s:back        = s:back\nendif\nif g:solarized_contrast == \"low\"\n    let s:back        = s:base02\n    let s:ou          = \",underline\"\nendif\n\"}}}\n\" Overrides dependent on user specified values and environment \"{{{\n\" ---------------------------------------------------------------------\nif (g:solarized_bold == 0 || &t_Co == 8 )\n    let s:b           = \"\"\n    let s:bb          = \",bold\"\nelse\n    let s:b           = \",bold\"\n    let s:bb          = \"\"\nendif\n\nif g:solarized_underline == 0\n    let s:u           = \"\"\nelse\n    let s:u           = \",underline\"\nendif\n\nif g:solarized_italic == 0 || s:terminal_italic == 0\n    let s:i           = \"\"\nelse\n    let s:i           = \",italic\"\nendif\n\"}}}\n\" Highlighting primitives\"{{{\n\" ---------------------------------------------------------------------\n\nexe \"let s:bg_none      = ' \".s:vmode.\"bg=\".s:none   .\"'\"\nexe \"let s:bg_back      = ' \".s:vmode.\"bg=\".s:back   .\"'\"\nexe \"let s:bg_base03    = ' \".s:vmode.\"bg=\".s:base03 .\"'\"\nexe \"let s:bg_base02    = ' \".s:vmode.\"bg=\".s:base02 .\"'\"\nexe \"let s:bg_base01    = ' \".s:vmode.\"bg=\".s:base01 .\"'\"\nexe \"let s:bg_base00    = ' \".s:vmode.\"bg=\".s:base00 .\"'\"\nexe \"let s:bg_base0     = ' \".s:vmode.\"bg=\".s:base0  .\"'\"\nexe \"let s:bg_base1     = ' \".s:vmode.\"bg=\".s:base1  .\"'\"\nexe \"let s:bg_base2     = ' \".s:vmode.\"bg=\".s:base2  .\"'\"\nexe \"let s:bg_base3     = ' \".s:vmode.\"bg=\".s:base3  .\"'\"\nexe \"let s:bg_green     = ' \".s:vmode.\"bg=\".s:green  .\"'\"\nexe \"let s:bg_yellow    = ' \".s:vmode.\"bg=\".s:yellow .\"'\"\nexe \"let s:bg_orange    = ' \".s:vmode.\"bg=\".s:orange .\"'\"\nexe \"let s:bg_red       = ' \".s:vmode.\"bg=\".s:red    .\"'\"\nexe \"let s:bg_magenta   = ' \".s:vmode.\"bg=\".s:magenta.\"'\"\nexe \"let s:bg_violet    = ' \".s:vmode.\"bg=\".s:violet .\"'\"\nexe \"let s:bg_blue      = ' \".s:vmode.\"bg=\".s:blue   .\"'\"\nexe \"let s:bg_cyan      = ' \".s:vmode.\"bg=\".s:cyan   .\"'\"\n\nexe \"let s:fg_none      = ' \".s:vmode.\"fg=\".s:none   .\"'\"\nexe \"let s:fg_back      = ' \".s:vmode.\"fg=\".s:back   .\"'\"\nexe \"let s:fg_base03    = ' \".s:vmode.\"fg=\".s:base03 .\"'\"\nexe \"let s:fg_base02    = ' \".s:vmode.\"fg=\".s:base02 .\"'\"\nexe \"let s:fg_base01    = ' \".s:vmode.\"fg=\".s:base01 .\"'\"\nexe \"let s:fg_base00    = ' \".s:vmode.\"fg=\".s:base00 .\"'\"\nexe \"let s:fg_base0     = ' \".s:vmode.\"fg=\".s:base0  .\"'\"\nexe \"let s:fg_base1     = ' \".s:vmode.\"fg=\".s:base1  .\"'\"\nexe \"let s:fg_base2     = ' \".s:vmode.\"fg=\".s:base2  .\"'\"\nexe \"let s:fg_base3     = ' \".s:vmode.\"fg=\".s:base3  .\"'\"\nexe \"let s:fg_green     = ' \".s:vmode.\"fg=\".s:green  .\"'\"\nexe \"let s:fg_yellow    = ' \".s:vmode.\"fg=\".s:yellow .\"'\"\nexe \"let s:fg_orange    = ' \".s:vmode.\"fg=\".s:orange .\"'\"\nexe \"let s:fg_red       = ' \".s:vmode.\"fg=\".s:red    .\"'\"\nexe \"let s:fg_magenta   = ' \".s:vmode.\"fg=\".s:magenta.\"'\"\nexe \"let s:fg_violet    = ' \".s:vmode.\"fg=\".s:violet .\"'\"\nexe \"let s:fg_blue      = ' \".s:vmode.\"fg=\".s:blue   .\"'\"\nexe \"let s:fg_cyan      = ' \".s:vmode.\"fg=\".s:cyan   .\"'\"\n\nexe \"let s:fmt_none     = ' \".s:vmode.\"=NONE\".          \" term=NONE\".    \"'\"\nexe \"let s:fmt_bold     = ' \".s:vmode.\"=NONE\".s:b.      \" term=NONE\".s:b.\"'\"\nexe \"let s:fmt_bldi     = ' \".s:vmode.\"=NONE\".s:b.      \" term=NONE\".s:b.\"'\"\nexe \"let s:fmt_undr     = ' \".s:vmode.\"=NONE\".s:u.      \" term=NONE\".s:u.\"'\"\nexe \"let s:fmt_undb     = ' \".s:vmode.\"=NONE\".s:u.s:b.  \" term=NONE\".s:u.s:b.\"'\"\nexe \"let s:fmt_undi     = ' \".s:vmode.\"=NONE\".s:u.      \" term=NONE\".s:u.\"'\"\nexe \"let s:fmt_uopt     = ' \".s:vmode.\"=NONE\".s:ou.     \" term=NONE\".s:ou.\"'\"\nexe \"let s:fmt_curl     = ' \".s:vmode.\"=NONE\".s:c.      \" term=NONE\".s:c.\"'\"\nexe \"let s:fmt_ital     = ' \".s:vmode.\"=NONE\".s:i.      \" term=NONE\".s:i.\"'\"\nexe \"let s:fmt_stnd     = ' \".s:vmode.\"=NONE\".s:s.      \" term=NONE\".s:s.\"'\"\nexe \"let s:fmt_revr     = ' \".s:vmode.\"=NONE\".s:r.      \" term=NONE\".s:r.\"'\"\nexe \"let s:fmt_revb     = ' \".s:vmode.\"=NONE\".s:r.s:b.  \" term=NONE\".s:r.s:b.\"'\"\n\" revbb (reverse bold for bright colors) is only set to actual bold in low \n\" color terminals (t_co=8, such as OS X Terminal.app) and should only be used \n\" with colors 8-15.\nexe \"let s:fmt_revbb    = ' \".s:vmode.\"=NONE\".s:r.s:bb.   \" term=NONE\".s:r.s:bb.\"'\"\nexe \"let s:fmt_revbbu   = ' \".s:vmode.\"=NONE\".s:r.s:bb.s:u.\" term=NONE\".s:r.s:bb.s:u.\"'\"\n\nif has(\"gui_running\")\n    exe \"let s:sp_none      = ' guisp=\".s:none   .\"'\"\n    exe \"let s:sp_back      = ' guisp=\".s:back   .\"'\"\n    exe \"let s:sp_base03    = ' guisp=\".s:base03 .\"'\"\n    exe \"let s:sp_base02    = ' guisp=\".s:base02 .\"'\"\n    exe \"let s:sp_base01    = ' guisp=\".s:base01 .\"'\"\n    exe \"let s:sp_base00    = ' guisp=\".s:base00 .\"'\"\n    exe \"let s:sp_base0     = ' guisp=\".s:base0  .\"'\"\n    exe \"let s:sp_base1     = ' guisp=\".s:base1  .\"'\"\n    exe \"let s:sp_base2     = ' guisp=\".s:base2  .\"'\"\n    exe \"let s:sp_base3     = ' guisp=\".s:base3  .\"'\"\n    exe \"let s:sp_green     = ' guisp=\".s:green  .\"'\"\n    exe \"let s:sp_yellow    = ' guisp=\".s:yellow .\"'\"\n    exe \"let s:sp_orange    = ' guisp=\".s:orange .\"'\"\n    exe \"let s:sp_red       = ' guisp=\".s:red    .\"'\"\n    exe \"let s:sp_magenta   = ' guisp=\".s:magenta.\"'\"\n    exe \"let s:sp_violet    = ' guisp=\".s:violet .\"'\"\n    exe \"let s:sp_blue      = ' guisp=\".s:blue   .\"'\"\n    exe \"let s:sp_cyan      = ' guisp=\".s:cyan   .\"'\"\nelse\n    let s:sp_none      = \"\"\n    let s:sp_back      = \"\"\n    let s:sp_base03    = \"\"\n    let s:sp_base02    = \"\"\n    let s:sp_base01    = \"\"\n    let s:sp_base00    = \"\"\n    let s:sp_base0     = \"\"\n    let s:sp_base1     = \"\"\n    let s:sp_base2     = \"\"\n    let s:sp_base3     = \"\"\n    let s:sp_green     = \"\"\n    let s:sp_yellow    = \"\"\n    let s:sp_orange    = \"\"\n    let s:sp_red       = \"\"\n    let s:sp_magenta   = \"\"\n    let s:sp_violet    = \"\"\n    let s:sp_blue      = \"\"\n    let s:sp_cyan      = \"\"\nendif\n\n\"}}}\n\" Basic highlighting\"{{{\n\" ---------------------------------------------------------------------\n\" note that link syntax to avoid duplicate configuration doesn't work with the\n\" exe compiled formats\n\nexe \"hi! Normal\"         .s:fmt_none   .s:fg_base0  .s:bg_back\n\nexe \"hi! Comment\"        .s:fmt_ital   .s:fg_base01 .s:bg_none\n\"       *Comment         any comment\n\nexe \"hi! Constant\"       .s:fmt_none   .s:fg_cyan   .s:bg_none\n\"       *Constant        any constant\n\"        String          a string constant: \"this is a string\"\n\"        Character       a character constant: 'c', '\\n'\n\"        Number          a number constant: 234, 0xff\n\"        Boolean         a boolean constant: TRUE, false\n\"        Float           a floating point constant: 2.3e10\n\nexe \"hi! Identifier\"     .s:fmt_none   .s:fg_blue   .s:bg_none\n\"       *Identifier      any variable name\n\"        Function        function name (also: methods for classes)\n\"\nexe \"hi! Statement\"      .s:fmt_none   .s:fg_green  .s:bg_none\n\"       *Statement       any statement\n\"        Conditional     if, then, else, endif, switch, etc.\n\"        Repeat          for, do, while, etc.\n\"        Label           case, default, etc.\n\"        Operator        \"sizeof\", \"+\", \"*\", etc.\n\"        Keyword         any other keyword\n\"        Exception       try, catch, throw\n\nexe \"hi! PreProc\"        .s:fmt_none   .s:fg_orange .s:bg_none\n\"       *PreProc         generic Preprocessor\n\"        Include         preprocessor #include\n\"        Define          preprocessor #define\n\"        Macro           same as Define\n\"        PreCondit       preprocessor #if, #else, #endif, etc.\n\nexe \"hi! Type\"           .s:fmt_none   .s:fg_yellow .s:bg_none\n\"       *Type            int, long, char, etc.\n\"        StorageClass    static, register, volatile, etc.\n\"        Structure       struct, union, enum, etc.\n\"        Typedef         A typedef\n\nexe \"hi! Special\"        .s:fmt_none   .s:fg_red    .s:bg_none\n\"       *Special         any special symbol\n\"        SpecialChar     special character in a constant\n\"        Tag             you can use CTRL-] on this\n\"        Delimiter       character that needs attention\n\"        SpecialComment  special things inside a comment\n\"        Debug           debugging statements\n\nexe \"hi! Underlined\"     .s:fmt_none   .s:fg_violet .s:bg_none\n\"       *Underlined      text that stands out, HTML links\n\nexe \"hi! Ignore\"         .s:fmt_none   .s:fg_none   .s:bg_none\n\"       *Ignore          left blank, hidden  |hl-Ignore|\n\nexe \"hi! Error\"          .s:fmt_bold   .s:fg_red    .s:bg_none\n\"       *Error           any erroneous construct\n\nexe \"hi! Todo\"           .s:fmt_bold   .s:fg_magenta.s:bg_none\n\"       *Todo            anything that needs extra attention; mostly the\n\"                        keywords TODO FIXME and XXX\n\"\n\"}}}\n\" Extended highlighting \"{{{\n\" ---------------------------------------------------------------------\nif      (g:solarized_visibility==\"high\")\n    exe \"hi! SpecialKey\" .s:fmt_revr   .s:fg_red    .s:bg_none\n    exe \"hi! NonText\"    .s:fmt_bold   .s:fg_red    .s:bg_none\nelseif  (g:solarized_visibility==\"low\")\n    exe \"hi! SpecialKey\" .s:fmt_bold   .s:fg_base02 .s:bg_none\n    exe \"hi! NonText\"    .s:fmt_bold   .s:fg_base02 .s:bg_none\nelse\n    exe \"hi! SpecialKey\" .s:fmt_bold   .s:fg_base00 .s:bg_base02\n    exe \"hi! NonText\"    .s:fmt_bold   .s:fg_base00 .s:bg_none\nendif\nexe \"hi! StatusLine\"     .s:fmt_none   .s:fg_base1  .s:bg_base02 .s:fmt_revbb\nexe \"hi! StatusLineNC\"   .s:fmt_none   .s:fg_base00 .s:bg_base02 .s:fmt_revbb\nexe \"hi! Visual\"         .s:fmt_none   .s:fg_base01 .s:bg_base03 .s:fmt_revbb\nexe \"hi! Directory\"      .s:fmt_none   .s:fg_blue   .s:bg_none\nexe \"hi! ErrorMsg\"       .s:fmt_revr   .s:fg_red    .s:bg_none\nexe \"hi! IncSearch\"      .s:fmt_stnd   .s:fg_orange .s:bg_none\nexe \"hi! Search\"         .s:fmt_revr   .s:fg_yellow .s:bg_none\nexe \"hi! MoreMsg\"        .s:fmt_none   .s:fg_blue   .s:bg_none\nexe \"hi! ModeMsg\"        .s:fmt_none   .s:fg_blue   .s:bg_none\nexe \"hi! LineNr\"         .s:fmt_none   .s:fg_base01 .s:bg_base02\nexe \"hi! Question\"       .s:fmt_bold   .s:fg_cyan   .s:bg_none\nif ( has(\"gui_running\") || &t_Co > 8 )\n    exe \"hi! VertSplit\"  .s:fmt_none   .s:fg_base00 .s:bg_base00\nelse\n    exe \"hi! VertSplit\"  .s:fmt_revbb  .s:fg_base00 .s:bg_base02\nendif\nexe \"hi! Title\"          .s:fmt_bold   .s:fg_orange .s:bg_none\nexe \"hi! VisualNOS\"      .s:fmt_stnd   .s:fg_none   .s:bg_base02 .s:fmt_revbb\nexe \"hi! WarningMsg\"     .s:fmt_bold   .s:fg_red    .s:bg_none\nexe \"hi! WildMenu\"       .s:fmt_none   .s:fg_base2  .s:bg_base02 .s:fmt_revbb\nexe \"hi! Folded\"         .s:fmt_undb   .s:fg_base0  .s:bg_base02  .s:sp_base03\nexe \"hi! FoldColumn\"     .s:fmt_none   .s:fg_base0  .s:bg_base02\nif      (g:solarized_diffmode==\"high\")\nexe \"hi! DiffAdd\"        .s:fmt_revr   .s:fg_green  .s:bg_none\nexe \"hi! DiffChange\"     .s:fmt_revr   .s:fg_yellow .s:bg_none\nexe \"hi! DiffDelete\"     .s:fmt_revr   .s:fg_red    .s:bg_none\nexe \"hi! DiffText\"       .s:fmt_revr   .s:fg_blue   .s:bg_none\nelseif  (g:solarized_diffmode==\"low\")\nexe \"hi! DiffAdd\"        .s:fmt_undr   .s:fg_green  .s:bg_none   .s:sp_green\nexe \"hi! DiffChange\"     .s:fmt_undr   .s:fg_yellow .s:bg_none   .s:sp_yellow\nexe \"hi! DiffDelete\"     .s:fmt_bold   .s:fg_red    .s:bg_none\nexe \"hi! DiffText\"       .s:fmt_undr   .s:fg_blue   .s:bg_none   .s:sp_blue\nelse \" normal\n    if has(\"gui_running\")\nexe \"hi! DiffAdd\"        .s:fmt_bold   .s:fg_green  .s:bg_base02 .s:sp_green\nexe \"hi! DiffChange\"     .s:fmt_bold   .s:fg_yellow .s:bg_base02 .s:sp_yellow\nexe \"hi! DiffDelete\"     .s:fmt_bold   .s:fg_red    .s:bg_base02\nexe \"hi! DiffText\"       .s:fmt_bold   .s:fg_blue   .s:bg_base02 .s:sp_blue\n    else\nexe \"hi! DiffAdd\"        .s:fmt_none   .s:fg_green  .s:bg_base02 .s:sp_green\nexe \"hi! DiffChange\"     .s:fmt_none   .s:fg_yellow .s:bg_base02 .s:sp_yellow\nexe \"hi! DiffDelete\"     .s:fmt_none   .s:fg_red    .s:bg_base02\nexe \"hi! DiffText\"       .s:fmt_none   .s:fg_blue   .s:bg_base02 .s:sp_blue\n    endif\nendif\nexe \"hi! SignColumn\"     .s:fmt_none   .s:fg_base0\nexe \"hi! Conceal\"        .s:fmt_none   .s:fg_blue   .s:bg_none\nexe \"hi! SpellBad\"       .s:fmt_curl   .s:fg_none   .s:bg_none    .s:sp_red\nexe \"hi! SpellCap\"       .s:fmt_curl   .s:fg_none   .s:bg_none    .s:sp_violet\nexe \"hi! SpellRare\"      .s:fmt_curl   .s:fg_none   .s:bg_none    .s:sp_cyan\nexe \"hi! SpellLocal\"     .s:fmt_curl   .s:fg_none   .s:bg_none    .s:sp_yellow\nexe \"hi! Pmenu\"          .s:fmt_none   .s:fg_base0  .s:bg_base02  .s:fmt_revbb\nexe \"hi! PmenuSel\"       .s:fmt_none   .s:fg_base01 .s:bg_base2   .s:fmt_revbb\nexe \"hi! PmenuSbar\"      .s:fmt_none   .s:fg_base2  .s:bg_base0   .s:fmt_revbb\nexe \"hi! PmenuThumb\"     .s:fmt_none   .s:fg_base0  .s:bg_base03  .s:fmt_revbb\nexe \"hi! TabLine\"        .s:fmt_undr   .s:fg_base0  .s:bg_base02  .s:sp_base0\nexe \"hi! TabLineFill\"    .s:fmt_undr   .s:fg_base0  .s:bg_base02  .s:sp_base0\nexe \"hi! TabLineSel\"     .s:fmt_undr   .s:fg_base01 .s:bg_base2   .s:sp_base0  .s:fmt_revbbu\nexe \"hi! CursorColumn\"   .s:fmt_none   .s:fg_none   .s:bg_base02\nexe \"hi! CursorLine\"     .s:fmt_uopt   .s:fg_none   .s:bg_base02  .s:sp_base1\nexe \"hi! ColorColumn\"    .s:fmt_none   .s:fg_none   .s:bg_base02\nexe \"hi! Cursor\"         .s:fmt_none   .s:fg_base03 .s:bg_base0\nhi! link lCursor Cursor\nexe \"hi! MatchParen\"     .s:fmt_bold   .s:fg_red    .s:bg_base01\n\n\"}}}\n\" vim syntax highlighting \"{{{\n\" ---------------------------------------------------------------------\n\"exe \"hi! vimLineComment\" . s:fg_base01 .s:bg_none   .s:fmt_ital\n\"hi! link vimComment Comment\n\"hi! link vimLineComment Comment\nhi! link vimVar Identifier\nhi! link vimFunc Function\nhi! link vimUserFunc Function\nhi! link helpSpecial Special\nhi! link vimSet Normal\nhi! link vimSetEqual Normal\nexe \"hi! vimCommentString\"  .s:fmt_none    .s:fg_violet .s:bg_none\nexe \"hi! vimCommand\"        .s:fmt_none    .s:fg_yellow .s:bg_none\nexe \"hi! vimCmdSep\"         .s:fmt_bold    .s:fg_blue   .s:bg_none\nexe \"hi! helpExample\"       .s:fmt_none    .s:fg_base1  .s:bg_none\nexe \"hi! helpOption\"        .s:fmt_none    .s:fg_cyan   .s:bg_none\nexe \"hi! helpNote\"          .s:fmt_none    .s:fg_magenta.s:bg_none\nexe \"hi! helpVim\"           .s:fmt_none    .s:fg_magenta.s:bg_none\nexe \"hi! helpHyperTextJump\" .s:fmt_undr    .s:fg_blue   .s:bg_none\nexe \"hi! helpHyperTextEntry\".s:fmt_none    .s:fg_green  .s:bg_none\nexe \"hi! vimIsCommand\"      .s:fmt_none    .s:fg_base00 .s:bg_none\nexe \"hi! vimSynMtchOpt\"     .s:fmt_none    .s:fg_yellow .s:bg_none\nexe \"hi! vimSynType\"        .s:fmt_none    .s:fg_cyan   .s:bg_none\nexe \"hi! vimHiLink\"         .s:fmt_none    .s:fg_blue   .s:bg_none\nexe \"hi! vimHiGroup\"        .s:fmt_none    .s:fg_blue   .s:bg_none\nexe \"hi! vimGroup\"          .s:fmt_undb    .s:fg_blue   .s:bg_none\n\"}}}\n\" diff highlighting \"{{{\n\" ---------------------------------------------------------------------\nhi! link diffAdded Statement\nhi! link diffLine Identifier\n\"}}}\n\" git & gitcommit highlighting \"{{{\n\"git\n\"exe \"hi! gitDateHeader\"\n\"exe \"hi! gitIdentityHeader\"\n\"exe \"hi! gitIdentityKeyword\"\n\"exe \"hi! gitNotesHeader\"\n\"exe \"hi! gitReflogHeader\"\n\"exe \"hi! gitKeyword\"\n\"exe \"hi! gitIdentity\"\n\"exe \"hi! gitEmailDelimiter\"\n\"exe \"hi! gitEmail\"\n\"exe \"hi! gitDate\"\n\"exe \"hi! gitMode\"\n\"exe \"hi! gitHashAbbrev\"\n\"exe \"hi! gitHash\"\n\"exe \"hi! gitReflogMiddle\"\n\"exe \"hi! gitReference\"\n\"exe \"hi! gitStage\"\n\"exe \"hi! gitType\"\n\"exe \"hi! gitDiffAdded\"\n\"exe \"hi! gitDiffRemoved\"\n\"gitcommit\n\"exe \"hi! gitcommitSummary\"      \nexe \"hi! gitcommitComment\"      .s:fmt_ital     .s:fg_base01    .s:bg_none\nhi! link gitcommitUntracked gitcommitComment\nhi! link gitcommitDiscarded gitcommitComment\nhi! link gitcommitSelected  gitcommitComment\nexe \"hi! gitcommitUnmerged\"     .s:fmt_bold     .s:fg_green     .s:bg_none\nexe \"hi! gitcommitOnBranch\"     .s:fmt_bold     .s:fg_base01    .s:bg_none\nexe \"hi! gitcommitBranch\"       .s:fmt_bold     .s:fg_magenta   .s:bg_none\nhi! link gitcommitNoBranch gitcommitBranch\nexe \"hi! gitcommitDiscardedType\".s:fmt_none     .s:fg_red       .s:bg_none\nexe \"hi! gitcommitSelectedType\" .s:fmt_none     .s:fg_green     .s:bg_none\n\"exe \"hi! gitcommitUnmergedType\"\n\"exe \"hi! gitcommitType\"\n\"exe \"hi! gitcommitNoChanges\"\n\"exe \"hi! gitcommitHeader\"\nexe \"hi! gitcommitHeader\"       .s:fmt_none     .s:fg_base01    .s:bg_none\nexe \"hi! gitcommitUntrackedFile\".s:fmt_bold     .s:fg_cyan      .s:bg_none\nexe \"hi! gitcommitDiscardedFile\".s:fmt_bold     .s:fg_red       .s:bg_none\nexe \"hi! gitcommitSelectedFile\" .s:fmt_bold     .s:fg_green     .s:bg_none\nexe \"hi! gitcommitUnmergedFile\" .s:fmt_bold     .s:fg_yellow    .s:bg_none\nexe \"hi! gitcommitFile\"         .s:fmt_bold     .s:fg_base0     .s:bg_none\nhi! link gitcommitDiscardedArrow gitcommitDiscardedFile\nhi! link gitcommitSelectedArrow  gitcommitSelectedFile\nhi! link gitcommitUnmergedArrow  gitcommitUnmergedFile\n\"exe \"hi! gitcommitArrow\"\n\"exe \"hi! gitcommitOverflow\"\n\"exe \"hi! gitcommitBlank\"\n\" }}}\n\" html highlighting \"{{{\n\" ---------------------------------------------------------------------\nexe \"hi! htmlTag\"           .s:fmt_none .s:fg_base01 .s:bg_none\nexe \"hi! htmlEndTag\"        .s:fmt_none .s:fg_base01 .s:bg_none\nexe \"hi! htmlTagN\"          .s:fmt_bold .s:fg_base1  .s:bg_none\nexe \"hi! htmlTagName\"       .s:fmt_bold .s:fg_blue   .s:bg_none\nexe \"hi! htmlSpecialTagName\".s:fmt_ital .s:fg_blue   .s:bg_none\nexe \"hi! htmlArg\"           .s:fmt_none .s:fg_base00 .s:bg_none\nexe \"hi! javaScript\"        .s:fmt_none .s:fg_yellow .s:bg_none\n\"}}}\n\" perl highlighting \"{{{\n\" ---------------------------------------------------------------------\nexe \"hi! perlHereDoc\"    . s:fg_base1  .s:bg_back   .s:fmt_none\nexe \"hi! perlVarPlain\"   . s:fg_yellow .s:bg_back   .s:fmt_none\nexe \"hi! perlStatementFileDesc\". s:fg_cyan.s:bg_back.s:fmt_none\n\n\"}}}\n\" tex highlighting \"{{{\n\" ---------------------------------------------------------------------\nexe \"hi! texStatement\"   . s:fg_cyan   .s:bg_back   .s:fmt_none\nexe \"hi! texMathZoneX\"   . s:fg_yellow .s:bg_back   .s:fmt_none\nexe \"hi! texMathMatcher\" . s:fg_yellow .s:bg_back   .s:fmt_none\nexe \"hi! texMathMatcher\" . s:fg_yellow .s:bg_back   .s:fmt_none\nexe \"hi! texRefLabel\"    . s:fg_yellow .s:bg_back   .s:fmt_none\n\"}}}\n\" ruby highlighting \"{{{\n\" ---------------------------------------------------------------------\nexe \"hi! rubyDefine\"     . s:fg_base1  .s:bg_back   .s:fmt_bold\n\"rubyInclude\n\"rubySharpBang\n\"rubyAccess\n\"rubyPredefinedVariable\n\"rubyBoolean\n\"rubyClassVariable\n\"rubyBeginEnd\n\"rubyRepeatModifier\n\"hi! link rubyArrayDelimiter    Special  \" [ , , ]\n\"rubyCurlyBlock  { , , }\n\n\"hi! link rubyClass             Keyword\n\"hi! link rubyModule            Keyword\n\"hi! link rubyKeyword           Keyword\n\"hi! link rubyOperator          Operator\n\"hi! link rubyIdentifier        Identifier\n\"hi! link rubyInstanceVariable  Identifier\n\"hi! link rubyGlobalVariable    Identifier\n\"hi! link rubyClassVariable     Identifier\n\"hi! link rubyConstant          Type\n\"}}}\n\" haskell syntax highlighting\"{{{\n\" ---------------------------------------------------------------------\n\" For use with syntax/haskell.vim : Haskell Syntax File\n\" http://www.vim.org/scripts/script.php?script_id=3034\n\" See also Steffen Siering's github repository:\n\" http://github.com/urso/dotrc/blob/master/vim/syntax/haskell.vim\n\" ---------------------------------------------------------------------\n\"\n\" Treat True and False specially, see the plugin referenced above\nlet hs_highlight_boolean=1\n\" highlight delims, see the plugin referenced above\nlet hs_highlight_delimiters=1\n\nexe \"hi! cPreCondit\". s:fg_orange.s:bg_none   .s:fmt_none\n\nexe \"hi! VarId\"    . s:fg_blue   .s:bg_none   .s:fmt_none\nexe \"hi! ConId\"    . s:fg_yellow .s:bg_none   .s:fmt_none\nexe \"hi! hsImport\" . s:fg_magenta.s:bg_none   .s:fmt_none\nexe \"hi! hsString\" . s:fg_base00 .s:bg_none   .s:fmt_none\n\nexe \"hi! hsStructure\"        . s:fg_cyan   .s:bg_none   .s:fmt_none\nexe \"hi! hs_hlFunctionName\"  . s:fg_blue   .s:bg_none\nexe \"hi! hsStatement\"        . s:fg_cyan   .s:bg_none   .s:fmt_none\nexe \"hi! hsImportLabel\"      . s:fg_cyan   .s:bg_none   .s:fmt_none\nexe \"hi! hs_OpFunctionName\"  . s:fg_yellow .s:bg_none   .s:fmt_none\nexe \"hi! hs_DeclareFunction\" . s:fg_orange .s:bg_none   .s:fmt_none\nexe \"hi! hsVarSym\"           . s:fg_cyan   .s:bg_none   .s:fmt_none\nexe \"hi! hsType\"             . s:fg_yellow .s:bg_none   .s:fmt_none\nexe \"hi! hsTypedef\"          . s:fg_cyan   .s:bg_none   .s:fmt_none\nexe \"hi! hsModuleName\"       . s:fg_green  .s:bg_none   .s:fmt_undr\nexe \"hi! hsModuleStartLabel\" . s:fg_magenta.s:bg_none   .s:fmt_none\nhi! link hsImportParams      Delimiter\nhi! link hsDelimTypeExport   Delimiter\nhi! link hsModuleStartLabel  hsStructure\nhi! link hsModuleWhereLabel  hsModuleStartLabel\n\n\" following is for the haskell-conceal plugin\n\" the first two items don't have an impact, but better safe\nexe \"hi! hsNiceOperator\"     . s:fg_cyan   .s:bg_none   .s:fmt_none\nexe \"hi! hsniceoperator\"     . s:fg_cyan   .s:bg_none   .s:fmt_none\n\n\"}}}\n\" pandoc markdown syntax highlighting \"{{{\n\" ---------------------------------------------------------------------\n\n\"PandocHiLink pandocNormalBlock\nexe \"hi! pandocTitleBlock\"               .s:fg_blue   .s:bg_none   .s:fmt_none\nexe \"hi! pandocTitleBlockTitle\"          .s:fg_blue   .s:bg_none   .s:fmt_bold\nexe \"hi! pandocTitleComment\"             .s:fg_blue   .s:bg_none   .s:fmt_bold\nexe \"hi! pandocComment\"                  .s:fg_base01 .s:bg_none   .s:fmt_ital\nexe \"hi! pandocVerbatimBlock\"            .s:fg_yellow .s:bg_none   .s:fmt_none\nhi! link pandocVerbatimBlockDeep         pandocVerbatimBlock\nhi! link pandocCodeBlock                 pandocVerbatimBlock\nhi! link pandocCodeBlockDelim            pandocVerbatimBlock\nexe \"hi! pandocBlockQuote\"               .s:fg_blue   .s:bg_none   .s:fmt_none\nexe \"hi! pandocBlockQuoteLeader1\"        .s:fg_blue   .s:bg_none   .s:fmt_none\nexe \"hi! pandocBlockQuoteLeader2\"        .s:fg_cyan   .s:bg_none   .s:fmt_none\nexe \"hi! pandocBlockQuoteLeader3\"        .s:fg_yellow .s:bg_none   .s:fmt_none\nexe \"hi! pandocBlockQuoteLeader4\"        .s:fg_red    .s:bg_none   .s:fmt_none\nexe \"hi! pandocBlockQuoteLeader5\"        .s:fg_base0  .s:bg_none   .s:fmt_none\nexe \"hi! pandocBlockQuoteLeader6\"        .s:fg_base01 .s:bg_none   .s:fmt_none\nexe \"hi! pandocListMarker\"               .s:fg_magenta.s:bg_none   .s:fmt_none\nexe \"hi! pandocListReference\"            .s:fg_magenta.s:bg_none   .s:fmt_undr\n\n\" Definitions\n\" ---------------------------------------------------------------------\nlet s:fg_pdef = s:fg_violet\nexe \"hi! pandocDefinitionBlock\"              .s:fg_pdef  .s:bg_none  .s:fmt_none\nexe \"hi! pandocDefinitionTerm\"               .s:fg_pdef  .s:bg_none  .s:fmt_stnd\nexe \"hi! pandocDefinitionIndctr\"             .s:fg_pdef  .s:bg_none  .s:fmt_bold\nexe \"hi! pandocEmphasisDefinition\"           .s:fg_pdef  .s:bg_none  .s:fmt_ital\nexe \"hi! pandocEmphasisNestedDefinition\"     .s:fg_pdef  .s:bg_none  .s:fmt_bldi\nexe \"hi! pandocStrongEmphasisDefinition\"     .s:fg_pdef  .s:bg_none  .s:fmt_bold\nexe \"hi! pandocStrongEmphasisNestedDefinition\"   .s:fg_pdef.s:bg_none.s:fmt_bldi\nexe \"hi! pandocStrongEmphasisEmphasisDefinition\" .s:fg_pdef.s:bg_none.s:fmt_bldi\nexe \"hi! pandocStrikeoutDefinition\"          .s:fg_pdef  .s:bg_none  .s:fmt_revr\nexe \"hi! pandocVerbatimInlineDefinition\"     .s:fg_pdef  .s:bg_none  .s:fmt_none\nexe \"hi! pandocSuperscriptDefinition\"        .s:fg_pdef  .s:bg_none  .s:fmt_none\nexe \"hi! pandocSubscriptDefinition\"          .s:fg_pdef  .s:bg_none  .s:fmt_none\n\n\" Tables\n\" ---------------------------------------------------------------------\nlet s:fg_ptable = s:fg_blue\nexe \"hi! pandocTable\"                        .s:fg_ptable.s:bg_none  .s:fmt_none\nexe \"hi! pandocTableStructure\"               .s:fg_ptable.s:bg_none  .s:fmt_none\nhi! link pandocTableStructureTop             pandocTableStructre\nhi! link pandocTableStructureEnd             pandocTableStructre\nexe \"hi! pandocTableZebraLight\"              .s:fg_ptable.s:bg_base03.s:fmt_none\nexe \"hi! pandocTableZebraDark\"               .s:fg_ptable.s:bg_base02.s:fmt_none\nexe \"hi! pandocEmphasisTable\"                .s:fg_ptable.s:bg_none  .s:fmt_ital\nexe \"hi! pandocEmphasisNestedTable\"          .s:fg_ptable.s:bg_none  .s:fmt_bldi\nexe \"hi! pandocStrongEmphasisTable\"          .s:fg_ptable.s:bg_none  .s:fmt_bold\nexe \"hi! pandocStrongEmphasisNestedTable\"    .s:fg_ptable.s:bg_none  .s:fmt_bldi\nexe \"hi! pandocStrongEmphasisEmphasisTable\"  .s:fg_ptable.s:bg_none  .s:fmt_bldi\nexe \"hi! pandocStrikeoutTable\"               .s:fg_ptable.s:bg_none  .s:fmt_revr\nexe \"hi! pandocVerbatimInlineTable\"          .s:fg_ptable.s:bg_none  .s:fmt_none\nexe \"hi! pandocSuperscriptTable\"             .s:fg_ptable.s:bg_none  .s:fmt_none\nexe \"hi! pandocSubscriptTable\"               .s:fg_ptable.s:bg_none  .s:fmt_none\n\n\" Headings\n\" ---------------------------------------------------------------------\nlet s:fg_phead = s:fg_orange\nexe \"hi! pandocHeading\"                      .s:fg_phead .s:bg_none.s:fmt_bold\nexe \"hi! pandocHeadingMarker\"                .s:fg_yellow.s:bg_none.s:fmt_bold\nexe \"hi! pandocEmphasisHeading\"              .s:fg_phead .s:bg_none.s:fmt_bldi\nexe \"hi! pandocEmphasisNestedHeading\"        .s:fg_phead .s:bg_none.s:fmt_bldi\nexe \"hi! pandocStrongEmphasisHeading\"        .s:fg_phead .s:bg_none.s:fmt_bold\nexe \"hi! pandocStrongEmphasisNestedHeading\"  .s:fg_phead .s:bg_none.s:fmt_bldi\nexe \"hi! pandocStrongEmphasisEmphasisHeading\".s:fg_phead .s:bg_none.s:fmt_bldi\nexe \"hi! pandocStrikeoutHeading\"             .s:fg_phead .s:bg_none.s:fmt_revr\nexe \"hi! pandocVerbatimInlineHeading\"        .s:fg_phead .s:bg_none.s:fmt_bold\nexe \"hi! pandocSuperscriptHeading\"           .s:fg_phead .s:bg_none.s:fmt_bold\nexe \"hi! pandocSubscriptHeading\"             .s:fg_phead .s:bg_none.s:fmt_bold\n\n\" Links\n\" ---------------------------------------------------------------------\nexe \"hi! pandocLinkDelim\"                .s:fg_base01 .s:bg_none   .s:fmt_none\nexe \"hi! pandocLinkLabel\"                .s:fg_blue   .s:bg_none   .s:fmt_undr\nexe \"hi! pandocLinkText\"                 .s:fg_blue   .s:bg_none   .s:fmt_undb\nexe \"hi! pandocLinkURL\"                  .s:fg_base00 .s:bg_none   .s:fmt_undr\nexe \"hi! pandocLinkTitle\"                .s:fg_base00 .s:bg_none   .s:fmt_undi\nexe \"hi! pandocLinkTitleDelim\"           .s:fg_base01 .s:bg_none   .s:fmt_undi   .s:sp_base00\nexe \"hi! pandocLinkDefinition\"           .s:fg_cyan   .s:bg_none   .s:fmt_undr   .s:sp_base00\nexe \"hi! pandocLinkDefinitionID\"         .s:fg_blue   .s:bg_none   .s:fmt_bold\nexe \"hi! pandocImageCaption\"             .s:fg_violet .s:bg_none   .s:fmt_undb\nexe \"hi! pandocFootnoteLink\"             .s:fg_green  .s:bg_none   .s:fmt_undr\nexe \"hi! pandocFootnoteDefLink\"          .s:fg_green  .s:bg_none   .s:fmt_bold\nexe \"hi! pandocFootnoteInline\"           .s:fg_green  .s:bg_none   .s:fmt_undb\nexe \"hi! pandocFootnote\"                 .s:fg_green  .s:bg_none   .s:fmt_none\nexe \"hi! pandocCitationDelim\"            .s:fg_magenta.s:bg_none   .s:fmt_none\nexe \"hi! pandocCitation\"                 .s:fg_magenta.s:bg_none   .s:fmt_none\nexe \"hi! pandocCitationID\"               .s:fg_magenta.s:bg_none   .s:fmt_undr\nexe \"hi! pandocCitationRef\"              .s:fg_magenta.s:bg_none   .s:fmt_none\n\n\" Main Styles\n\" ---------------------------------------------------------------------\nexe \"hi! pandocStyleDelim\"               .s:fg_base01 .s:bg_none  .s:fmt_none\nexe \"hi! pandocEmphasis\"                 .s:fg_base0  .s:bg_none  .s:fmt_ital\nexe \"hi! pandocEmphasisNested\"           .s:fg_base0  .s:bg_none  .s:fmt_bldi\nexe \"hi! pandocStrongEmphasis\"           .s:fg_base0  .s:bg_none  .s:fmt_bold\nexe \"hi! pandocStrongEmphasisNested\"     .s:fg_base0  .s:bg_none  .s:fmt_bldi\nexe \"hi! pandocStrongEmphasisEmphasis\"   .s:fg_base0  .s:bg_none  .s:fmt_bldi\nexe \"hi! pandocStrikeout\"                .s:fg_base01 .s:bg_none  .s:fmt_revr\nexe \"hi! pandocVerbatimInline\"           .s:fg_yellow .s:bg_none  .s:fmt_none\nexe \"hi! pandocSuperscript\"              .s:fg_violet .s:bg_none  .s:fmt_none\nexe \"hi! pandocSubscript\"                .s:fg_violet .s:bg_none  .s:fmt_none\n\nexe \"hi! pandocRule\"                     .s:fg_blue   .s:bg_none  .s:fmt_bold\nexe \"hi! pandocRuleLine\"                 .s:fg_blue   .s:bg_none  .s:fmt_bold\nexe \"hi! pandocEscapePair\"               .s:fg_red    .s:bg_none  .s:fmt_bold\nexe \"hi! pandocCitationRef\"              .s:fg_magenta.s:bg_none   .s:fmt_none\nexe \"hi! pandocNonBreakingSpace\"         . s:fg_red   .s:bg_none  .s:fmt_revr\nhi! link pandocEscapedCharacter          pandocEscapePair\nhi! link pandocLineBreak                 pandocEscapePair\n\n\" Embedded Code\n\" ---------------------------------------------------------------------\nexe \"hi! pandocMetadataDelim\"            .s:fg_base01 .s:bg_none   .s:fmt_none\nexe \"hi! pandocMetadata\"                 .s:fg_blue   .s:bg_none   .s:fmt_none\nexe \"hi! pandocMetadataKey\"              .s:fg_blue   .s:bg_none   .s:fmt_none\nexe \"hi! pandocMetadata\"                 .s:fg_blue   .s:bg_none   .s:fmt_bold\nhi! link pandocMetadataTitle             pandocMetadata\n\n\"}}}\n\" Utility autocommand \"{{{\n\" ---------------------------------------------------------------------\n\" In cases where Solarized is initialized inside a terminal vim session and \n\" then transferred to a gui session via the command `:gui`, the gui vim process \n\" does not re-read the colorscheme (or .vimrc for that matter) so any `has_gui` \n\" related code that sets gui specific values isn't executed.\n\"\n\" Currently, Solarized sets only the cterm or gui values for the colorscheme \n\" depending on gui or terminal mode. It's possible that, if the following \n\" autocommand method is deemed excessively poor form, that approach will be \n\" used again and the autocommand below will be dropped.\n\"\n\" However it seems relatively benign in this case to include the autocommand \n\" here. It fires only in cases where vim is transferring from terminal to gui \n\" mode (detected with the script scope s:vmode variable). It also allows for \n\" other potential terminal customizations that might make gui mode suboptimal.\n\"\nautocmd GUIEnter * if (s:vmode != \"gui\") | exe \"colorscheme \" . g:colors_name | endif\n\"}}}\n\" Highlight Trailing Space {{{\n\" Experimental: Different highlight when on cursorline\nfunction! s:SolarizedHiTrail()\n    if g:solarized_hitrail==0\n        hi! clear solarizedTrailingSpace\n    else\n        syn match solarizedTrailingSpace \"\\s*$\"\n        exe \"hi! solarizedTrailingSpace \" .s:fmt_undr .s:fg_red .s:bg_none .s:sp_red\n    endif\nendfunction  \naugroup SolarizedHiTrail\n    autocmd!\n    if g:solarized_hitrail==1\n        autocmd! Syntax * call s:SolarizedHiTrail()\n        autocmd! ColorScheme * if g:colors_name == \"solarized\" | call s:SolarizedHiTrail() | else | augroup! s:SolarizedHiTrail | endif\n    endif\naugroup END\n\" }}}\n\" Menus \"{{{\n\" ---------------------------------------------------------------------\n\" Turn off Solarized menu by including the following assignment in your .vimrc:\n\"\n\"    let g:solarized_menu=0\n\nfunction! s:SolarizedOptions()\n    new \"new buffer\n    setf vim \"vim filetype\n    let failed = append(0, s:defaults_list)\n    let failed = append(0, s:colorscheme_list)\n    let failed = append(0, s:options_list)\n    let failed = append(0, s:lazycat_list)\n    0 \"jump back to the top\nendfunction\nif !exists(\":SolarizedOptions\")\n    command SolarizedOptions :call s:SolarizedOptions()\nendif\n\nfunction! SolarizedMenu()\n    if exists(\"g:loaded_solarized_menu\")\n        try\n            silent! aunmenu Solarized\n        endtry\n    endif\n    let g:loaded_solarized_menu = 1\n\n    if g:colors_name == \"solarized\" && g:solarized_menu != 0\n\n        amenu &Solarized.&Contrast.&Low\\ Contrast        :let g:solarized_contrast=\"low\"       \\| colorscheme solarized<CR>\n        amenu &Solarized.&Contrast.&Normal\\ Contrast     :let g:solarized_contrast=\"normal\"    \\| colorscheme solarized<CR>\n        amenu &Solarized.&Contrast.&High\\ Contrast       :let g:solarized_contrast=\"high\"      \\| colorscheme solarized<CR>\n        an    &Solarized.&Contrast.-sep-                 <Nop>\n        amenu &Solarized.&Contrast.&Help:\\ Contrast      :help 'solarized_contrast'<CR>\n\n        amenu &Solarized.&Visibility.&Low\\ Visibility    :let g:solarized_visibility=\"low\"     \\| colorscheme solarized<CR>\n        amenu &Solarized.&Visibility.&Normal\\ Visibility :let g:solarized_visibility=\"normal\"  \\| colorscheme solarized<CR>\n        amenu &Solarized.&Visibility.&High\\ Visibility   :let g:solarized_visibility=\"high\"    \\| colorscheme solarized<CR>\n        an    &Solarized.&Visibility.-sep-                 <Nop>\n        amenu &Solarized.&Visibility.&Help:\\ Visibility    :help 'solarized_visibility'<CR>\n\n        amenu &Solarized.&Background.&Toggle\\ Background :ToggleBG<CR>\n        amenu &Solarized.&Background.&Dark\\ Background   :set background=dark  \\| colorscheme solarized<CR>\n        amenu &Solarized.&Background.&Light\\ Background  :set background=light \\| colorscheme solarized<CR>\n        an    &Solarized.&Background.-sep-               <Nop>\n        amenu &Solarized.&Background.&Help:\\ ToggleBG     :help togglebg<CR>\n\n        if g:solarized_bold==0 | let l:boldswitch=\"On\" | else | let l:boldswitch=\"Off\" | endif\n        exe \"amenu &Solarized.&Styling.&Turn\\\\ Bold\\\\ \".l:boldswitch.\" :let g:solarized_bold=(abs(g:solarized_bold-1)) \\\\| colorscheme solarized<CR>\"\n        if g:solarized_italic==0 | let l:italicswitch=\"On\" | else | let l:italicswitch=\"Off\" | endif\n        exe \"amenu &Solarized.&Styling.&Turn\\\\ Italic\\\\ \".l:italicswitch.\" :let g:solarized_italic=(abs(g:solarized_italic-1)) \\\\| colorscheme solarized<CR>\"\n        if g:solarized_underline==0 | let l:underlineswitch=\"On\" | else | let l:underlineswitch=\"Off\" | endif\n        exe \"amenu &Solarized.&Styling.&Turn\\\\ Underline\\\\ \".l:underlineswitch.\" :let g:solarized_underline=(abs(g:solarized_underline-1)) \\\\| colorscheme solarized<CR>\"\n\n        amenu &Solarized.&Diff\\ Mode.&Low\\ Diff\\ Mode    :let g:solarized_diffmode=\"low\"     \\| colorscheme solarized<CR>\n        amenu &Solarized.&Diff\\ Mode.&Normal\\ Diff\\ Mode :let g:solarized_diffmode=\"normal\"  \\| colorscheme solarized<CR>\n        amenu &Solarized.&Diff\\ Mode.&High\\ Diff\\ Mode   :let g:solarized_diffmode=\"high\"    \\| colorscheme solarized<CR>\n\n        if g:solarized_hitrail==0 | let l:hitrailswitch=\"On\" | else | let l:hitrailswitch=\"Off\" | endif\n        exe \"amenu &Solarized.&Experimental.&Turn\\\\ Highlight\\\\ Trailing\\\\ Spaces\\\\ \".l:hitrailswitch.\" :let g:solarized_hitrail=(abs(g:solarized_hitrail-1)) \\\\| colorscheme solarized<CR>\"\n        an    &Solarized.&Experimental.-sep-               <Nop>\n        amenu &Solarized.&Experimental.&Help:\\ HiTrail    :help 'solarized_hitrail'<CR>\n\n        an    &Solarized.-sep1-                          <Nop>\n\n        amenu &Solarized.&Autogenerate\\ options          :SolarizedOptions<CR>\n\n        an    &Solarized.-sep2-                          <Nop>\n\n        amenu &Solarized.&Help.&Solarized\\ Help          :help solarized<CR>\n        amenu &Solarized.&Help.&Toggle\\ Background\\ Help :help togglebg<CR>\n        amenu &Solarized.&Help.&Removing\\ This\\ Menu     :help solarized-menu<CR>\n\n        an 9999.77 &Help.&Solarized\\ Colorscheme         :help solarized<CR>\n        an 9999.78 &Help.&Toggle\\ Background             :help togglebg<CR>\n        an 9999.79 &Help.-sep3-                          <Nop>\n\n    endif\nendfunction\n\nautocmd ColorScheme * if g:colors_name != \"solarized\" | silent! aunmenu Solarized | else | call SolarizedMenu() | endif\n\n\"}}}\n\" License \"{{{\n\" ---------------------------------------------------------------------\n\"\n\" Copyright (c) 2011 Ethan Schoonover\n\"\n\" Permission is hereby granted, free of charge, to any person obtaining a copy\n\" of this software and associated documentation files (the \"Software\"), to deal\n\" in the Software without restriction, including without limitation the rights\n\" to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\" copies of the Software, and to permit persons to whom the Software is\n\" furnished to do so, subject to the following conditions:\n\"\n\" The above copyright notice and this permission notice shall be included in\n\" all copies or substantial portions of the Software.\n\"\n\" THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\" OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\" THE SOFTWARE.\n\"\n\" vim:foldmethod=marker:foldlevel=0\n\"}}}\n"
  },
  {
    "path": ".vim/bundle/vim-colors-solarized/doc/solarized.txt",
    "content": "*solarized.vim* for Vim version 7.3 or newer. Modified: 2011 May 05\n\n\n\t\tSolarized Vim Colorscheme by Ethan Schoonover ~\n\nSolarized Colorscheme\t\t\t\t\t   *solarized*\n\t\t\t\t\t\t\t   *solarized-help*\n\t\t\t\t\t\t\t   *solarized-colors*\n\t\t\t\t\t\t\t   *solarized-colorscheme*\n\t\t\t\t\t\t\t   *vim-colors-solarized*\n\nSolarized is a carefully designed selective contrast colorscheme with dual\nlight and dark modes that runs in both GUI, 256 and 16 color modes.\n\nSee the homepage at http://ethanschoonover.com/solarized for screenshots and \ndetails.\n\n0. Install\t\t\t\t|solarized-install|\n1. Solarized Menu\t\t\t|solarized-menu|\n2. Options\t\t\t\t|solarized-options|\n3. Toggle Background\t\t\t|solarized-togglebg|\n4. Terminal Issues\t\t\t|solarized-term|\n\n==============================================================================\n0. Install\t\t\t\t\t\t*solarized-install*\n\nNote: I recommend using Tim Pope's pathogen plugin to install this \ncolorscheme. See https://github.com/tpope/vim-pathogen . If you've installed \npathogen properly you can install Solarized with the following commands, \nfollowed by the .vimrc configuration below.\n\n\t$ cd ~/.vim/bundle\n\t$ git clone https://github.com/altercation/vim-colors-solarized.git\n\nIf you aren't using pathogen, you can use the following three steps to install \nSolarized:\n\n1.  Download the solarized distribution (available on the homepage above)\n    and unarchive the file.\n\n2.  Move `solarized.vim` to your `.vim/colors` directory.\n\n3.  Move each of the files in each subdirectories to the corresponding .vim\n    subdirectory (e.g. autoload/togglebg.vim goes into your .vim/autoload\n    directory as .vim/autoload/togglebg.vim).\n\n\nAfter installation, place the following lines in your .vimrc:\n\n\tsyntax enable\n\tset background=dark\n\tcolorscheme solarized\n\nor, for the light background mode of Solarized:\n\n\tsyntax enable\n\tset background=light\n\tcolorscheme solarized\n\n==============================================================================\n1. Solarized Menu\t\t\t\t\t*solarized-menu*\n\nSolarized makes available a menu when used in Vim GUI mode (gvim, macvim).  \nThis menu includes many of the options detailed below so that you can test out \ndifferent values quickly without modifying your .vimrc file. If you wish to \nturn off this menu permanently, simply place the following line in your .vimrc \nabove the \"colorscheme solarized\" line.\n\n\tlet g:solarized_menu=0\n\n==============================================================================\n2. Toggle Background\t\t\t\t\t*solarized-togglebg*\n\t\t\t\t\t\t\t*toggle-bg* *togglebg*\n\t\t\t\t\t\t\t*toggle-background*\n\nSolarized comes with Toggle Background, a simple plugin to switch between \nlight and dark background modes and reset the colorscheme. This is most useful \nfor colorschemes that support both light and dark modes and in terminals or \ngui vim windows where the background will be properly set.\n\nToggle Background can be accessed by:\n\n    * the Solarized menu (in Vim gui mode)\n    * the Window menu (in Vim gui mode, even if the Solarized menu is off)\n    * the \"yin/yang\" toolbar button (in Vim gui mode)\n    * the default mapping of <F5>\n    * custom key mapping you set in your .vimrc (see below)\n    * command line via \":ToggleBG\" (no quotes)\n\nToggle Background starts with a default mapping to function key <F5>. If you \nare already using this in a mapping, Toggle Background will not map itself to \na default and you will have to map it manually in your .vimrc file, or \nremove/change your existing <F5> mapping to another value. To customize the \nkeyboard mapping in your .vimrc file, use the following line, changing the \n\"<F5>\" value to the key or key combination you wish to use:\n\n\tcall togglebg#map(\"<F5>\")\n\nNote that you'll want to use a single function key or equivalent if you want \nthe plugin to work in all modes (normal, insert, visual).\n\nWhen using the plugin during normal, visual, or insert mode, there should be \nno interruption in workflow. However, if you activate the plugin during \nREPLACE mode, you will switch to standard insert mode (you will leave the \noverwrite replace mode).\n\n==============================================================================\n3. Solarized Terminal Issues\t\t\t\t*solarized-term*\n\nIf you are going to use Solarized in Terminal mode (i.e. not in a GUI version \nlike gvim or macvim), **please please please** consider setting your terminal \nemulator's colorscheme to used the Solarized palette. I've included palettes \nfor some popular terminal emulator as well as Xdefaults in the official \nSolarized download available from the Solarized homepage listed at the top of \nthis help document. If you use Solarized *without* these colors, Solarized \nwill need to be told to degrade its colorscheme to a set compatible with the \nlimited 256 terminal palette (whereas by using the terminal's 16 ansi color \nvalues, you can set the correct, specific values for the Solarized palette).\n\nIf you do use the custom terminal colors, solarized.vim should work out of \nthe box for you. If you are using a terminal emulator that supports 256 \ncolors and don't want to use the custom Solarized terminal colors, you will \nneed to use the degraded 256 colorscheme. To do so, simply add the following \nline *before* the `colorschem solarized` line:\n\n    let g:solarized_termcolors=256\n\nAgain, I recommend just changing your terminal colors to Solarized values \neither manually or via one of the many terminal schemes available for import.\n\n==============================================================================\n4. Solarized Options\t\t\t\t\t*solarized-options*\n\n\nAUTOGENERATE OPTIONS\n\nYou can easily modify and experiment with Solarized display options using the \nSolarized menu when using Vim in gui mode. Once you have things set to your \nliking, you can autogenerate the current option list in a format ready for \ninsertion into your .vimrc file using the Solarized menu \"Autogenerate \nOptions\" command or at the command line with:\n\n    :SolarizedOptions\n\n\nOPTION LIST\n\nSet these in your vimrc file prior to calling the colorscheme.\n\noption name               default     optional\n------------------------------------------------\ng:solarized_termcolors=   16      |   256\ng:solarized_termtrans =   0       |   1\ng:solarized_degrade   =   0       |   1\ng:solarized_bold      =   1       |   0\ng:solarized_underline =   1       |   0\ng:solarized_italic    =   1       |   0\ng:solarized_contrast  =   \"normal\"|   \"high\" or \"low\"\ng:solarized_visibility=   \"normal\"|   \"high\" or \"low\"\ng:solarized_hitrail   =   0       |   1\ng:solarized_menu      =   1       |   0\n------------------------------------------------\n\n\nOPTION DETAILS\n\n------------------------------------------------\ng:solarized_termcolors=   256     |   16\t\t*'solarized_termcolors'*\n------------------------------------------------\nThe most important option if you are using vim in terminal (non gui) mode!\nThis tells Solarized to use the 256 degraded color mode if running in a 256\ncolor capable terminal.  Otherwise, if set to `16` it will use the terminal\nemulators colorscheme (best option as long as you've set the emulators colors\nto the Solarized palette).\n\nIf you are going to use Solarized in Terminal mode (i.e. not in a GUI\nversion like gvim or macvim), **please please please** consider setting your\nterminal emulator's colorscheme to used the Solarized palette. I've included\npalettes for some popular terminal emulator as well as Xdefaults in the\nofficial Solarized download available from:\nhttp://ethanschoonover.com/solarized . If you use Solarized without these\ncolors, Solarized will by default use an approximate set of 256 colors.  It\nisn't bad looking and has been extensively tweaked, but it's still not quite\nthe real thing.\n\n------------------------------------------------\ng:solarized_termtrans =   0       |   1\t\t\t*'solarized_termtrans'*\n------------------------------------------------\nIf you use a terminal emulator with a transparent background and Solarized\nisn't displaying the background color transparently, set this to 1 and\nSolarized will use the default (transparent) background of the terminal\nemulator. *urxvt* required this in my testing; iTerm2 did not.\n\nNote that on Mac OS X Terminal.app, solarized_termtrans is set to 1 by \ndefault as this is almost always the best option. The only exception to this \nis if the working terminfo file supports 256 colors (xterm-256color).\n\n------------------------------------------------\ng:solarized_degrade   =   0       |   1\t\t\t*'solarized_degrade'*\n------------------------------------------------\nFor test purposes only; forces Solarized to use the 256 degraded color mode\nto test the approximate color values for accuracy.\n\n------------------------------------------------\ng:solarized_bold      =   1       |   0\t\t\t*'solarized_bold'*\n------------------------------------------------\n------------------------------------------------\ng:solarized_underline =   1       |   0\t\t\t*'solarized_underline'*\n------------------------------------------------\n------------------------------------------------\ng:solarized_italic    =   1       |   0\t\t\t*'solarized_italic'*\n------------------------------------------------\nIf you wish to stop Solarized from displaying bold, underlined or\nitalicized typefaces, simply assign a zero value to the appropriate\nvariable, for example: `let g:solarized_italic=0`\n\n------------------------------------------------\ng:solarized_contrast  =   \"normal\"|   \"high\" or \"low\"\t*'solarized_contrast'*\n------------------------------------------------\nStick with normal! It's been carefully tested. Setting this option to high\nor low does use the same Solarized palette but simply shifts some values up\nor down in order to expand or compress the tonal range displayed.\n\n------------------------------------------------\ng:solarized_visibility =  \"normal\"|   \"high\" or \"low\" *'solarized_visibility'*\n------------------------------------------------\nSpecial characters such as trailing whitespace, tabs, newlines, when \ndisplayed using \":set list\" can be set to one of three levels depending on \nyour needs.\n\n------------------------------------------------\ng:solarized_hitrail   =   0       |   1\t\t\t*'solarized_hitrail'*\n------------------------------------------------\nVisibility can make listchar entities more visible, but if one has set \ncursorline on, these same listchar values standout somewhat less due to the \nbackground color of the cursorline. g:solarized_hitrail enables highlighting \nof trailing spaces (only one of the listchar types, but a particularly \nimportant one) while in the cursoline in a different manner in order to make \nthem more visible. This may not work consistently as Solarized is using \na pattern match than can be overridden by a more encompassing syntax-native \nmatch such as a comment line.\n\n\n------------------------------------------------\ng:solarized_menu       =  1       |   0\t\t\t*'solarized_menu'*\n------------------------------------------------\nSolarized includes a menu providing access to several of the above\ndisplay related options, including contrast and visibility. This allows\nfor an easy method of testing different values quickly before settling\non a final assignment for your .vimrc. If you wish to turn off this menu,\nassign g:solarized_menu a value of 0.\n\n\n vim:tw=78:noet:ts=8:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/vim-commentary/README.markdown",
    "content": "commentary.vim\n==============\n\nComment stuff out.  Use `gcc` to comment out a line (takes a count),\n`gc` to comment out the target of a motion (for example, `gcap` to\ncomment out a paragraph), and `gc` in visual mode to comment out the\nselection.  That's it.\n\nI wrote this because 5 years after Vim added support for mapping an\noperator, I still couldn't find a commenting plugin that leveraged that\nfeature (I overlooked\n[tcomment.vim](https://github.com/tomtom/tcomment_vim)).  Striving for\nminimalism, it weighs in at under 100 lines of code.\n\nOh, and it uncomments, too.  The above maps actually toggle, and `gcu`\nuncomments a set of adjacent commented lines.  Install\n[repeat.vim](https://github.com/tpope/vim-repeat) to enable\nrepeating `gcu` with `.` (the other maps are repeatable without it).\n\nInstallation\n------------\n\nIf you don't have a preferred installation method, I recommend\ninstalling [pathogen.vim](https://github.com/tpope/vim-pathogen), and\nthen simply copy and paste:\n\n    cd ~/.vim/bundle\n    git clone git://github.com/tpope/vim-commentary.git\n\nOnce help tags have been generated, you can view the manual with\n`:help commentary`.\n\nFAQ\n---\n\n> My favorite file type isn't supported!\n\nRelax!  You just have to adjust `'commentstring'`:\n\n    autocmd FileType apache set commentstring=#\\ %s\n\nContributing\n------------\n\nSee the contribution guidelines for\n[pathogen.vim](https://github.com/tpope/vim-pathogen#readme).\n\nSelf-Promotion\n--------------\n\nLike commentary.vim? Follow the repository on\n[GitHub](https://github.com/tpope/vim-commentary) and vote for it on\n[vim.org](http://www.vim.org/scripts/script.php?script_id=3695).  And if\nyou're feeling especially charitable, follow [tpope](http://tpo.pe/) on\n[Twitter](http://twitter.com/tpope) and\n[GitHub](https://github.com/tpope).\n\nLicense\n-------\n\nCopyright (c) Tim Pope.  Distributed under the same terms as Vim itself.\nSee `:help license`.\n"
  },
  {
    "path": ".vim/bundle/vim-commentary/doc/commentary.txt",
    "content": "*commentary.txt*  Comment stuff out\n\nAuthor:  Tim Pope <http://tpo.pe/>\nLicense: Same terms as Vim itself (see |license|)\n\nComment stuff out.  Then uncomment it later.  Relies on 'commentstring' to be\ncorrectly set.\n\nThe gc mappings are preferred, while the \\\\ mappings are provided for\nbackwards compatibility.\n\n                                                *gc* *\\\\*\ngc{motion}              Comment or uncomment lines that {motion} moves over.\n\\\\{motion}\n\n                                                *gcc* *\\\\\\*\ngcc                     Comment or uncomment [count] lines.\n\\\\\\\n\n                                                *v_gc* *v_\\\\*\n{Visual}gc              Comment or uncomment the highlighted lines.\n{Visual}\\\\\n\n                                                *gcu* *\\\\u*\ngcu                     Uncomment the current and adjacent commented lines.\n\\\\u\n\n vim:tw=78:et:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/vim-commentary/plugin/commentary.vim",
    "content": "\" commentary.vim - Comment stuff out\n\" Maintainer:   Tim Pope <http://tpo.pe/>\n\" Version:      1.1\n\" GetLatestVimScripts: 3695 1 :AutoInstall: commentary.vim\n\nif exists(\"g:loaded_commentary\") || &cp || v:version < 700\n  finish\nendif\nlet g:loaded_commentary = 1\n\nfunction! s:go(type,...) abort\n  if a:0\n    let [lnum1, lnum2] = [a:type, a:1]\n  else\n    let [lnum1, lnum2] = [line(\"'[\"), line(\"']\")]\n  endif\n\n  let [l, r] = split(substitute(substitute(&commentstring,'\\S\\zs%s',' %s',''),'%s\\ze\\S','%s ',''),'%s',1)\n  let uncomment = 2\n  for lnum in range(lnum1,lnum2)\n    let line = matchstr(getline(lnum),'\\S.*\\s\\@<!')\n    if line != '' && (stridx(line,l) || line[strlen(line)-strlen(r) : -1] != r)\n      let uncomment = 0\n    endif\n  endfor\n\n  for lnum in range(lnum1,lnum2)\n    let line = getline(lnum)\n    if strlen(r) > 2 && l.r !~# '\\\\'\n      let line = substitute(line,\n            \\'\\M'.r[0:-2].'\\zs\\d\\*\\ze'.r[-1:-1].'\\|'.l[0].'\\zs\\d\\*\\ze'.l[1:-1],\n            \\'\\=substitute(submatch(0)+1-uncomment,\"^0$\\\\|^-\\\\d*$\",\"\",\"\")','g')\n    endif\n    if uncomment\n      let line = substitute(line,'\\S.*\\s\\@<!','\\=submatch(0)[strlen(l):-strlen(r)-1]','')\n    else\n      let line = substitute(line,'^\\%('.matchstr(getline(lnum1),'^\\s*').'\\|\\s*\\)\\zs.*\\S\\@<=','\\=l.submatch(0).r','')\n    endif\n    call setline(lnum,line)\n  endfor\nendfunction\n\nfunction! s:undo()\n  let [l, r] = split(substitute(substitute(&commentstring,'\\S\\zs%s',' %s',''),'%s\\ze\\S','%s ',''),'%s',1)\n  let lnums = [line('.')+1, line('.')-2]\n  for [index, dir, bound, line] in [[0, -1, 1, ''], [1, 1, line('$'), '']]\n    while lnums[index] != bound && line ==# '' || !(stridx(line,l) || line[strlen(line)-strlen(r) : -1] != r)\n      let lnums[index] += dir\n      let line = matchstr(getline(lnums[index]+dir),'\\S.*\\s\\@<!')\n    endwhile\n  endfor\n  call s:go(lnums[0], lnums[1])\n  silent! call repeat#set(\"\\<Plug>CommentaryUndo\")\nendfunction\n\nxnoremap <silent> <Plug>Commentary     :<C-U>call <SID>go(line(\"'<\"),line(\"'>\"))<CR>\nnnoremap <silent> <Plug>Commentary     :<C-U>set opfunc=<SID>go<CR>g@\nnnoremap <silent> <Plug>CommentaryLine :<C-U>set opfunc=<SID>go<Bar>exe 'norm! 'v:count1.'g@_'<CR>\nnnoremap <silent> <Plug>CommentaryUndo :<C-U>call <SID>undo()<CR>\n\nif !hasmapto('<Plug>Commentary') || maparg('gc','n') ==# ''\n  xmap gc  <Plug>Commentary\n  nmap gc  <Plug>Commentary\n  nmap gcc <Plug>CommentaryLine\n  nmap gcu <Plug>CommentaryUndo\nendif\n\nif maparg('\\\\','n') ==# '' && maparg('\\','n') ==# ''\n  xmap \\\\  <Plug>Commentary\n  nmap \\\\  <Plug>Commentary\n  nmap \\\\\\ <Plug>CommentaryLine\n  nmap \\\\u <Plug>CommentaryUndo\nendif\n\n\" vim:set et sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-css-color/README.md",
    "content": "<img src=\"http://ap.github.io/vim-css-color/screenshot.png\" alt=\"\"/>\n\nA very fast fork of [Niklas Hofer’s `css_color.vim`](http://www.vim.org/scripts/script.php?script_id=2150), with extra features:\n\n* multiple color highlights per line\n* `rgb()`, `rgba()`, [`hsl()`](http://www.w3.org/TR/css3-color/#hsl-color) support\n\nInspired by [Max Vasiliev’s fork](https://github.com/skammer/vim-css-color).\n"
  },
  {
    "path": ".vim/bundle/vim-css-color/after/syntax/css.vim",
    "content": "\" Language:     Colorful CSS Color Preview\n\" Author:       Aristotle Pagaltzis <pagaltzis@gmx.de>\n\nif !( has('gui_running') || &t_Co==256 ) | finish | endif\n\ncall css_color#init('css', 'cssMediaBlock,cssFunction,cssDefinition,cssAttrRegion,cssComment')\n"
  },
  {
    "path": ".vim/bundle/vim-css-color/after/syntax/html.vim",
    "content": "\" Language:     Colorful CSS Color Preview\n\" Author:       Aristotle Pagaltzis <pagaltzis@gmx.de>\n\nif !( has('gui_running') || &t_Co==256 ) | finish | endif\n\n\" default html syntax should already be including the css syntax\nsyn cluster colorableGroup add=htmlString,htmlCommentPart\n"
  },
  {
    "path": ".vim/bundle/vim-css-color/after/syntax/less.vim",
    "content": "\" Language:     Colorful CSS Color Preview\n\" Author:       Aristotle Pagaltzis <pagaltzis@gmx.de>\n\nif !( has('gui_running') || &t_Co==256 ) | finish | endif\n\ncall css_color#init('css', 'lessVariableValue')\n"
  },
  {
    "path": ".vim/bundle/vim-css-color/after/syntax/sass.vim",
    "content": "\" Language:     Colorful CSS Color Preview\n\" Author:       Aristotle Pagaltzis <pagaltzis@gmx.de>\n\nif !( has('gui_running') || &t_Co==256 ) | finish | endif\n\ncall css_color#init('css', 'sassCssAttribute,sassComment,sassCssComment')\n"
  },
  {
    "path": ".vim/bundle/vim-css-color/after/syntax/stylus.vim",
    "content": "\" Language:     Colorful CSS Color Preview\n\" Author:       Aristotle Pagaltzis <pagaltzis@gmx.de>\n\nif !( has('gui_running') || &t_Co==256 ) | finish | endif\n\ncall css_color#init('css', 'stylusCssAttribute,stylusComment,cssComment')\n"
  },
  {
    "path": ".vim/bundle/vim-css-color/after/syntax/vim.vim",
    "content": "\" Language:     Colorful CSS Color Preview\n\" Author:       Aristotle Pagaltzis <pagaltzis@gmx.de>\n\nif !( has('gui_running') || &t_Co==256 ) | finish | endif\n\ncall css_color#init('any', 'vimHiGuiRgb,vimComment,vimLineComment')\n"
  },
  {
    "path": ".vim/bundle/vim-css-color/autoload/css_color.vim",
    "content": "\" Language:     Colorful CSS Color Preview\n\" Author:       Aristotle Pagaltzis <pagaltzis@gmx.de>\n\" Last Change:  2014-01-14\n\" Licence:      No Warranties. WTFPL. But please tell me!\n\" Version:      1.0\n\nif v:version < 700\n\techoerr printf('Vim 7 is required for css-color (this is only %d.%d)',v:version/100,v:version%100)\n\tfinish\nendif\n\nif !( has('gui_running') || &t_Co==256 ) | finish | endif\n\nfunction! s:rgb2color(r,g,b)\n\t\" Convert 80% -> 204, 100% -> 255, etc.\n\tlet rgb = map( [a:r,a:g,a:b], 'v:val =~ \"%$\" ? ( 255 * v:val ) / 100 : v:val' )\n\treturn printf( '%02x%02x%02x', rgb[0], rgb[1], rgb[2] )\nendfunction\n\nfunction! s:hsl2color(h,s,l)\n\t\" Convert 80% -> 0.8, 100% -> 1.0, etc.\n\tlet [s,l] = map( [a:s, a:l], 'v:val =~ \"%$\" ? v:val / 100.0 : v:val + 0.0' )\n\t\" algorithm transcoded to vim from http://www.w3.org/TR/css3-color/#hsl-color\n\tlet hh = ( a:h % 360 ) / 360.0\n\tlet m2 = l <= 0.5 ? l * ( s + 1 ) : l + s - l * s\n\tlet m1 = l * 2 - m2\n\tlet rgb = []\n\tfor h in [ hh + (1/3.0), hh, hh - (1/3.0) ]\n\t\tlet h = h < 0 ? h + 1 : h > 1 ? h - 1 : h\n\t\tlet v =\n\t\t\t\\ h * 6 < 1 ? m1 + ( m2 - m1 ) * h * 6 :\n\t\t\t\\ h * 2 < 1 ? m2 :\n\t\t\t\\ h * 3 < 2 ? m1 + ( m2 - m1 ) * ( 2/3.0 - h ) * 6 :\n\t\t\t\\ m1\n\t\tif v > 1.0 | return '' | endif\n\t\tlet rgb += [ float2nr( 255 * v ) ]\n\tendfor\n\treturn printf( '%02x%02x%02x', rgb[0], rgb[1], rgb[2] )\nendfunction\n\nlet s:hex={}\nfor i in range(0, 255)\n\tlet s:hex[ printf( '%02x', i ) ] = i\nendfor\n\nif has('gui_running')\n\tlet s:is_gui = 1\nelse\n\tlet s:is_gui = 0\n\n\t\" preset 16 vt100 colors\n\tlet s:xtermcolor = [\n\t\t\\ [ 0x00, 0x00, 0x00,  0 ],\n\t\t\\ [ 0xCD, 0x00, 0x00,  1 ],\n\t\t\\ [ 0x00, 0xCD, 0x00,  2 ],\n\t\t\\ [ 0xCD, 0xCD, 0x00,  3 ],\n\t\t\\ [ 0x00, 0x00, 0xEE,  4 ],\n\t\t\\ [ 0xCD, 0x00, 0xCD,  5 ],\n\t\t\\ [ 0x00, 0xCD, 0xCD,  6 ],\n\t\t\\ [ 0xE5, 0xE5, 0xE5,  7 ],\n\t\t\\ [ 0x7F, 0x7F, 0x7F,  8 ],\n\t\t\\ [ 0xFF, 0x00, 0x00,  9 ],\n\t\t\\ [ 0x00, 0xFF, 0x00, 10 ],\n\t\t\\ [ 0xFF, 0xFF, 0x00, 11 ],\n\t\t\\ [ 0x5C, 0x5C, 0xFF, 12 ],\n\t\t\\ [ 0xFF, 0x00, 0xFF, 13 ],\n\t\t\\ [ 0x00, 0xFF, 0xFF, 14 ],\n\t\t\\ [ 0xFF, 0xFF, 0xFF, 15 ]]\n\t\" grayscale ramp\n\t\" (value is 8+10*lum for lum in 0..23)\n\tlet s:xtermcolor += [\n\t\t\\ [ 0x08, 0x08, 0x08, 232 ],\n\t\t\\ [ 0x12, 0x12, 0x12, 233 ],\n\t\t\\ [ 0x1C, 0x1C, 0x1C, 234 ],\n\t\t\\ [ 0x26, 0x26, 0x26, 235 ],\n\t\t\\ [ 0x30, 0x30, 0x30, 236 ],\n\t\t\\ [ 0x3A, 0x3A, 0x3A, 237 ],\n\t\t\\ [ 0x44, 0x44, 0x44, 238 ],\n\t\t\\ [ 0x4E, 0x4E, 0x4E, 239 ],\n\t\t\\ [ 0x58, 0x58, 0x58, 240 ],\n\t\t\\ [ 0x62, 0x62, 0x62, 241 ],\n\t\t\\ [ 0x6C, 0x6C, 0x6C, 242 ],\n\t\t\\ [ 0x76, 0x76, 0x76, 243 ],\n\t\t\\ [ 0x80, 0x80, 0x80, 244 ],\n\t\t\\ [ 0x8A, 0x8A, 0x8A, 245 ],\n\t\t\\ [ 0x94, 0x94, 0x94, 246 ],\n\t\t\\ [ 0x9E, 0x9E, 0x9E, 247 ],\n\t\t\\ [ 0xA8, 0xA8, 0xA8, 248 ],\n\t\t\\ [ 0xB2, 0xB2, 0xB2, 249 ],\n\t\t\\ [ 0xBC, 0xBC, 0xBC, 250 ],\n\t\t\\ [ 0xC6, 0xC6, 0xC6, 251 ],\n\t\t\\ [ 0xD0, 0xD0, 0xD0, 252 ],\n\t\t\\ [ 0xDA, 0xDA, 0xDA, 253 ],\n\t\t\\ [ 0xE4, 0xE4, 0xE4, 254 ],\n\t\t\\ [ 0xEE, 0xEE, 0xEE, 255 ]]\n\n\t\" the 6 values used in the xterm color cube\n\t\"                    0    95   135   175   215   255\n\tlet s:cubergb = [ 0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF ]\n\n\t\" 0..255 mapped to 0..5 based on the color cube values\n\tlet s:xvquant = repeat([0],48)\n\t\t\t\t\\ + repeat([1],68)\n\t\t\t\t\\ + repeat([2],40)\n\t\t\t\t\\ + repeat([3],40)\n\t\t\t\t\\ + repeat([4],40)\n\t\t\t\t\\ + repeat([5],20)\n\t\" tweak the mapping for the exact matches (0 and 1 already correct)\n\tlet s:xvquant[s:cubergb[2]] = 2\n\tlet s:xvquant[s:cubergb[3]] = 3\n\tlet s:xvquant[s:cubergb[4]] = 4\n\tlet s:xvquant[s:cubergb[5]] = 5\n\n\t\" selects the nearest xterm color for a rgb value like #FF0000\n\tfunction! s:rgb2xterm(color)\n\t\tlet best_match=0\n\t\tlet smallest_distance = 10000000000\n\t\tlet color = tolower(a:color)\n\t\tlet r = s:hex[color[0:1]]\n\t\tlet g = s:hex[color[2:3]]\n\t\tlet b = s:hex[color[4:5]]\n\n\t\tlet vr = s:xvquant[r]\n\t\tlet vg = s:xvquant[g]\n\t\tlet vb = s:xvquant[b]\n\t\tlet cidx = vr * 36 + vg * 6 + vb + 16\n\t\tlet ccol = [ s:cubergb[vr], s:cubergb[vg], s:cubergb[vb], cidx ]\n\n\t\tfor [tr,tg,tb,idx] in [ ccol ] + s:xtermcolor\n\t\t\tlet dr = tr - r\n\t\t\tlet dg = tg - g\n\t\t\tlet db = tb - b\n\t\t\tlet distance = dr*dr + dg*dg + db*db\n\t\t\tif distance == 0 | return idx | endif\n\t\t\tif distance > smallest_distance | continue | endif\n\t\t\tlet smallest_distance = distance\n\t\t\tlet best_match = idx\n\t\tendfor\n\t\treturn best_match\n\tendfunction\nendif\n\nlet s:pattern_color = {}\nlet s:color_fg      = {}\nlet s:color_bg      = {}\nlet [s:hi_cmd, s:black, s:white] = s:is_gui\n\t\\ ? ['hi %s  guibg=#%s   guifg=%s', '#000000', '#ffffff']\n\t\\ : ['hi %s ctermbg=%s ctermfg=%s', 0, 15]\nfunction! s:create_syn_match()\n\n\tlet pattern = submatch(0)\n\n\tif has_key( b:has_pattern_syn, pattern ) | return | endif\n\tlet b:has_pattern_syn[pattern] = 1\n\n\tlet rgb_color = get( s:pattern_color, pattern, '' )\n\n\tif ! strlen( rgb_color )\n\t\tlet hexcolor = submatch(1)\n\t\tlet funcname = submatch(2)\n\n\t\tif funcname == 'rgb'\n\t\t\tlet rgb_color = s:rgb2color(submatch(3),submatch(4),submatch(5))\n\t\telseif funcname == 'hsl'\n\t\t\tlet rgb_color = s:hsl2color(submatch(3),submatch(4),submatch(5))\n\t\telseif strlen(hexcolor) == 6\n\t\t\tlet rgb_color = tolower(hexcolor)\n\t\telseif strlen(hexcolor) == 3\n\t\t\tlet rgb_color = substitute(tolower(hexcolor), '\\(.\\)', '\\1\\1', 'g')\n\t\telse\n\t\t\tthrow 'css_color: create_syn_match invoked on bad match data'\n\t\tendif\n\n\t\tlet s:pattern_color[pattern] = rgb_color\n\tendif\n\n\tif ! has_key( b:has_color_hi, rgb_color )\n\t\t\" check GUI flag early here to avoid pure-overhead caching\n\t\tlet syn_bg = s:is_gui ? rgb_color : get( s:color_bg, rgb_color, '' )\n\t\tif ! strlen(syn_bg)\n\t\t\tlet syn_bg = s:rgb2xterm(rgb_color)\n\t\t\tlet s:color_bg[rgb_color] = syn_bg\n\t\tendif\n\n\t\tlet syn_fg = get( s:color_fg, rgb_color, '' )\n\t\tif ! strlen(syn_fg)\n\t\t\tlet r = s:hex[rgb_color[0:1]]\n\t\t\tlet g = s:hex[rgb_color[2:3]]\n\t\t\tlet b = s:hex[rgb_color[4:5]]\n\t\t\tlet syn_fg = r*30 + g*59 + b*11 > 12000 ? s:black : s:white\n\t\t\tlet s:color_fg[rgb_color] = syn_fg\n\t\tendif\n\tendif\n\n\tlet group = 'BG' . rgb_color\n\n\tif ! has_key( b:has_color_hi, rgb_color )\n\t\texe printf( s:hi_cmd, group, syn_bg, syn_fg )\n\t\tlet b:has_color_hi[rgb_color] = 1\n\tendif\n\n\t\" iff pattern ends on word character, require word break to match\n\tif pattern =~ '\\>$' | let pattern .= '\\>' | endif\n\texe 'syn match' group '/'.escape(pattern, '/').'/ contained containedin=@colorableGroup'\n\n\treturn ''\nendfunction\n\nfunction! s:update_matches()\n\tcall filter(b:color_match_id, 'matchdelete(v:val)')\n\tif &l:cursorline\n\t\t\" adds matches based that duplicate the highlighted colors on the current line\n\t\tlet lnr = line('.')\n\t\tlet group = ''\n\t\tlet groupstart = 0\n\t\tlet endcol = col('$')\n\t\tfor col in range( 1, endcol )\n\t\t\tlet nextgroup = col < endcol ? synIDattr( synID( lnr, col, 1 ), 'name' ) : ''\n\t\t\tif group == nextgroup | continue | endif\n\t\t\tif group =~ '^BG\\x\\{6}$'\n\t\t\t\tlet regex = '\\%'.lnr.'l\\%'.groupstart.'c'.repeat( '.', col - groupstart )\n\t\t\t\tlet match = matchadd( group, regex, -1 )\n\t\t\t\tlet b:color_match_id += [ match ]\n\t\t\tendif\n\t\t\tlet group = nextgroup\n\t\t\tlet groupstart = col\n\t\tendfor\n\tendif\nendfunction\n\nlet s:_hexcolor   = '#\\(\\x\\{3}\\|\\x\\{6}\\)\\>' \" submatch 1\nlet s:_funcname   = '\\(rgb\\|hsl\\)a\\?' \" submatch 2\nlet s:_numval     = '\\(\\d\\{1,3}%\\?\\)' \" submatch 3,4,5\nlet s:_ws_        = '\\s*'\nlet s:_listsep    = s:_ws_ . ',' . s:_ws_\nlet s:_otherargs_ = '\\%(,[^)]*\\)\\?'\nlet s:_funcexpr   = s:_funcname . '[(]' . s:_numval . s:_listsep . s:_numval . s:_listsep . s:_numval . s:_ws_ . s:_otherargs_ . '[)]'\nlet s:_csscolor   = s:_hexcolor . '\\|' . s:_funcexpr\n\" N.B. these substitute() calls are here just for the side effect\n\"      of invoking s:create_syn_match during substitution -- because\n\"      match() and friends do not allow finding all matches in a single\n\"      scan without examining the start of the string over and over\nfunction! s:parse_css_screen()\n\tcall substitute( join( getline('w0','w$'), \"\\n\" ), s:_csscolor, '\\=s:create_syn_match()', 'g' )\n\tcall s:update_matches()\nendfunction\nfunction! s:parse_any_screen()\n\tcall substitute( join( getline('w0','w$'), \"\\n\" ), s:_hexcolor, '\\=s:create_syn_match()', 'g' )\n\tcall s:update_matches()\nendfunction\n\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nfunction! css_color#init(type, groups)\n\texe 'syn cluster colorableGroup contains=' . a:groups\n\n\tlet b:has_color_hi    = {}\n\tlet b:has_pattern_syn = {}\n\tlet b:color_match_id  = []\n\n\taugroup CSSColor\n\t\tautocmd! * <buffer>\n\t\texe 'autocmd CursorMoved,CursorMovedI <buffer> call s:parse_'.a:type.'_screen()'\n\taugroup END\n\n\tdo CSSColor CursorMoved <buffer>\n\n\tif a:type != 'css' | return | endif\n\n\thi BG000000 guibg=#000000 guifg=#FFFFFF ctermbg=16  ctermfg=231\n\thi BG000080 guibg=#000080 guifg=#FFFFFF ctermbg=235 ctermfg=231\n\thi BG00008b guibg=#00008B guifg=#FFFFFF ctermbg=4   ctermfg=231\n\thi BG0000cd guibg=#0000CD guifg=#FFFFFF ctermbg=4   ctermfg=231\n\thi BG0000ff guibg=#0000FF guifg=#FFFFFF ctermbg=4   ctermfg=231\n\thi BG006400 guibg=#006400 guifg=#FFFFFF ctermbg=235 ctermfg=231\n\thi BG008000 guibg=#008000 guifg=#FFFFFF ctermbg=2   ctermfg=231\n\thi BG008080 guibg=#008080 guifg=#FFFFFF ctermbg=30  ctermfg=231\n\thi BG008b8b guibg=#008B8B guifg=#FFFFFF ctermbg=30  ctermfg=231\n\thi BG00bfff guibg=#00BFFF guifg=#000000 ctermbg=6   ctermfg=16\n\thi BG00ced1 guibg=#00CED1 guifg=#000000 ctermbg=6   ctermfg=16\n\thi BG00fa9a guibg=#00FA9A guifg=#000000 ctermbg=6   ctermfg=16\n\thi BG00ff00 guibg=#00FF00 guifg=#000000 ctermbg=10  ctermfg=16\n\thi BG00ff7f guibg=#00FF7F guifg=#000000 ctermbg=6   ctermfg=16\n\thi BG00ffff guibg=#00FFFF guifg=#000000 ctermbg=51  ctermfg=16\n\thi BG191970 guibg=#191970 guifg=#FFFFFF ctermbg=237 ctermfg=231\n\thi BG1e90ff guibg=#1E90FF guifg=#000000 ctermbg=12  ctermfg=16\n\thi BG20b2aa guibg=#20B2AA guifg=#000000 ctermbg=37  ctermfg=16\n\thi BG228b22 guibg=#228B22 guifg=#FFFFFF ctermbg=2   ctermfg=231\n\thi BG2e8b57 guibg=#2E8B57 guifg=#FFFFFF ctermbg=240 ctermfg=231\n\thi BG2f4f4f guibg=#2F4F4F guifg=#FFFFFF ctermbg=238 ctermfg=231\n\thi BG32cd32 guibg=#32CD32 guifg=#000000 ctermbg=2   ctermfg=16\n\thi BG3cb371 guibg=#3CB371 guifg=#000000 ctermbg=71  ctermfg=16\n\thi BG40e0d0 guibg=#40E0D0 guifg=#000000 ctermbg=80  ctermfg=16\n\thi BG4169e1 guibg=#4169E1 guifg=#FFFFFF ctermbg=12  ctermfg=231\n\thi BG4682b4 guibg=#4682B4 guifg=#FFFFFF ctermbg=67  ctermfg=231\n\thi BG483d8b guibg=#483D8B guifg=#FFFFFF ctermbg=240 ctermfg=231\n\thi BG48d1cc guibg=#48D1CC guifg=#000000 ctermbg=80  ctermfg=16\n\thi BG4b0082 guibg=#4B0082 guifg=#FFFFFF ctermbg=238 ctermfg=231\n\thi BG556b2f guibg=#556B2F guifg=#FFFFFF ctermbg=239 ctermfg=231\n\thi BG5f9ea0 guibg=#5F9EA0 guifg=#000000 ctermbg=73  ctermfg=16\n\thi BG6495ed guibg=#6495ED guifg=#000000 ctermbg=12  ctermfg=16\n\thi BG66cdaa guibg=#66CDAA guifg=#000000 ctermbg=79  ctermfg=16\n\thi BG696969 guibg=#696969 guifg=#FFFFFF ctermbg=242 ctermfg=231\n\thi BG6a5acd guibg=#6A5ACD guifg=#FFFFFF ctermbg=12  ctermfg=231\n\thi BG6b8e23 guibg=#6B8E23 guifg=#FFFFFF ctermbg=241 ctermfg=231\n\thi BG708090 guibg=#708090 guifg=#000000 ctermbg=66  ctermfg=16\n\thi BG778899 guibg=#778899 guifg=#000000 ctermbg=102 ctermfg=16\n\thi BG7b68ee guibg=#7B68EE guifg=#000000 ctermbg=12  ctermfg=16\n\thi BG7cfc00 guibg=#7CFC00 guifg=#000000 ctermbg=3   ctermfg=16\n\thi BG7fff00 guibg=#7FFF00 guifg=#000000 ctermbg=3   ctermfg=16\n\thi BG7fffd4 guibg=#7FFFD4 guifg=#000000 ctermbg=122 ctermfg=16\n\thi BG800000 guibg=#800000 guifg=#FFFFFF ctermbg=88  ctermfg=231\n\thi BG800080 guibg=#800080 guifg=#FFFFFF ctermbg=240 ctermfg=231\n\thi BG808000 guibg=#808000 guifg=#FFFFFF ctermbg=240 ctermfg=231\n\thi BG808080 guibg=#808080 guifg=#000000 ctermbg=244 ctermfg=16\n\thi BG87ceeb guibg=#87CEEB guifg=#000000 ctermbg=117 ctermfg=16\n\thi BG87cefa guibg=#87CEFA guifg=#000000 ctermbg=117 ctermfg=16\n\thi BG8a2be2 guibg=#8A2BE2 guifg=#FFFFFF ctermbg=12  ctermfg=231\n\thi BG8b0000 guibg=#8B0000 guifg=#FFFFFF ctermbg=88  ctermfg=231\n\thi BG8b008b guibg=#8B008B guifg=#FFFFFF ctermbg=5   ctermfg=231\n\thi BG8b4513 guibg=#8B4513 guifg=#FFFFFF ctermbg=94  ctermfg=231\n\thi BG8fbc8f guibg=#8FBC8F guifg=#000000 ctermbg=108 ctermfg=16\n\thi BG90ee90 guibg=#90EE90 guifg=#000000 ctermbg=249 ctermfg=16\n\thi BG9370d8 guibg=#9370D8 guifg=#000000 ctermbg=12  ctermfg=16\n\thi BG9400d3 guibg=#9400D3 guifg=#FFFFFF ctermbg=5   ctermfg=231\n\thi BG98fb98 guibg=#98FB98 guifg=#000000 ctermbg=250 ctermfg=16\n\thi BG9932cc guibg=#9932CC guifg=#FFFFFF ctermbg=5   ctermfg=231\n\thi BG9acd32 guibg=#9ACD32 guifg=#000000 ctermbg=3   ctermfg=16\n\thi BGa0522d guibg=#A0522D guifg=#FFFFFF ctermbg=130 ctermfg=231\n\thi BGa52a2a guibg=#A52A2A guifg=#FFFFFF ctermbg=124 ctermfg=231\n\thi BGa9a9a9 guibg=#A9A9A9 guifg=#000000 ctermbg=248 ctermfg=16\n\thi BGadd8e6 guibg=#ADD8E6 guifg=#000000 ctermbg=152 ctermfg=16\n\thi BGadff2f guibg=#ADFF2F guifg=#000000 ctermbg=3   ctermfg=16\n\thi BGafeeee guibg=#AFEEEE guifg=#000000 ctermbg=159 ctermfg=16\n\thi BGb0c4de guibg=#B0C4DE guifg=#000000 ctermbg=152 ctermfg=16\n\thi BGb0e0e6 guibg=#B0E0E6 guifg=#000000 ctermbg=152 ctermfg=16\n\thi BGb22222 guibg=#B22222 guifg=#FFFFFF ctermbg=124 ctermfg=231\n\thi BGb8860b guibg=#B8860B guifg=#000000 ctermbg=3   ctermfg=16\n\thi BGba55d3 guibg=#BA55D3 guifg=#000000 ctermbg=5   ctermfg=16\n\thi BGbc8f8f guibg=#BC8F8F guifg=#000000 ctermbg=138 ctermfg=16\n\thi BGbdb76b guibg=#BDB76B guifg=#000000 ctermbg=247 ctermfg=16\n\thi BGc0c0c0 guibg=#C0C0C0 guifg=#000000 ctermbg=250 ctermfg=16\n\thi BGc71585 guibg=#C71585 guifg=#FFFFFF ctermbg=5   ctermfg=231\n\thi BGcd5c5c guibg=#CD5C5C guifg=#000000 ctermbg=167 ctermfg=16\n\thi BGcd853f guibg=#CD853F guifg=#000000 ctermbg=173 ctermfg=16\n\thi BGd2691e guibg=#D2691E guifg=#000000 ctermbg=166 ctermfg=16\n\thi BGd2b48c guibg=#D2B48C guifg=#000000 ctermbg=180 ctermfg=16\n\thi BGd3d3d3 guibg=#D3D3D3 guifg=#000000 ctermbg=252 ctermfg=16\n\thi BGd87093 guibg=#D87093 guifg=#000000 ctermbg=168 ctermfg=16\n\thi BGd8bfd8 guibg=#D8BFD8 guifg=#000000 ctermbg=252 ctermfg=16\n\thi BGda70d6 guibg=#DA70D6 guifg=#000000 ctermbg=249 ctermfg=16\n\thi BGdaa520 guibg=#DAA520 guifg=#000000 ctermbg=3   ctermfg=16\n\thi BGdc143c guibg=#DC143C guifg=#FFFFFF ctermbg=161 ctermfg=231\n\thi BGdcdcdc guibg=#DCDCDC guifg=#000000 ctermbg=253 ctermfg=16\n\thi BGdda0dd guibg=#DDA0DD guifg=#000000 ctermbg=182 ctermfg=16\n\thi BGdeb887 guibg=#DEB887 guifg=#000000 ctermbg=180 ctermfg=16\n\thi BGe0ffff guibg=#E0FFFF guifg=#000000 ctermbg=195 ctermfg=16\n\thi BGe6e6fa guibg=#E6E6FA guifg=#000000 ctermbg=255 ctermfg=16\n\thi BGe9967a guibg=#E9967A guifg=#000000 ctermbg=174 ctermfg=16\n\thi BGee82ee guibg=#EE82EE guifg=#000000 ctermbg=251 ctermfg=16\n\thi BGeee8aa guibg=#EEE8AA guifg=#000000 ctermbg=223 ctermfg=16\n\thi BGf08080 guibg=#F08080 guifg=#000000 ctermbg=210 ctermfg=16\n\thi BGf0e68c guibg=#F0E68C guifg=#000000 ctermbg=222 ctermfg=16\n\thi BGf0f8ff guibg=#F0F8FF guifg=#000000 ctermbg=15  ctermfg=16\n\thi BGf0fff0 guibg=#F0FFF0 guifg=#000000 ctermbg=255 ctermfg=16\n\thi BGf0ffff guibg=#F0FFFF guifg=#000000 ctermbg=15  ctermfg=16\n\thi BGf4a460 guibg=#F4A460 guifg=#000000 ctermbg=215 ctermfg=16\n\thi BGf5deb3 guibg=#F5DEB3 guifg=#000000 ctermbg=223 ctermfg=16\n\thi BGf5f5dc guibg=#F5F5DC guifg=#000000 ctermbg=255 ctermfg=16\n\thi BGf5f5f5 guibg=#F5F5F5 guifg=#000000 ctermbg=255 ctermfg=16\n\thi BGf5fffa guibg=#F5FFFA guifg=#000000 ctermbg=15  ctermfg=16\n\thi BGf8f8ff guibg=#F8F8FF guifg=#000000 ctermbg=15  ctermfg=16\n\thi BGfa8072 guibg=#FA8072 guifg=#000000 ctermbg=209 ctermfg=16\n\thi BGfaebd7 guibg=#FAEBD7 guifg=#000000 ctermbg=7   ctermfg=16\n\thi BGfaf0e6 guibg=#FAF0E6 guifg=#000000 ctermbg=255 ctermfg=16\n\thi BGfafad2 guibg=#FAFAD2 guifg=#000000 ctermbg=255 ctermfg=16\n\thi BGfdf5e6 guibg=#FDF5E6 guifg=#000000 ctermbg=255 ctermfg=16\n\thi BGff0000 guibg=#FF0000 guifg=#FFFFFF ctermbg=196 ctermfg=231\n\thi BGff00ff guibg=#FF00FF guifg=#FFFFFF ctermbg=13  ctermfg=231\n\thi BGff1493 guibg=#FF1493 guifg=#FFFFFF ctermbg=5   ctermfg=231\n\thi BGff4500 guibg=#FF4500 guifg=#FFFFFF ctermbg=9   ctermfg=231\n\thi BGff6347 guibg=#FF6347 guifg=#000000 ctermbg=203 ctermfg=16\n\thi BGff69b4 guibg=#FF69B4 guifg=#000000 ctermbg=205 ctermfg=16\n\thi BGff7f50 guibg=#FF7F50 guifg=#000000 ctermbg=209 ctermfg=16\n\thi BGff8c00 guibg=#FF8C00 guifg=#000000 ctermbg=3   ctermfg=16\n\thi BGffa07a guibg=#FFA07A guifg=#000000 ctermbg=216 ctermfg=16\n\thi BGffa500 guibg=#FFA500 guifg=#000000 ctermbg=3   ctermfg=16\n\thi BGffb6c1 guibg=#FFB6C1 guifg=#000000 ctermbg=217 ctermfg=16\n\thi BGffc0cb guibg=#FFC0CB guifg=#000000 ctermbg=218 ctermfg=16\n\thi BGffd700 guibg=#FFD700 guifg=#000000 ctermbg=11  ctermfg=16\n\thi BGffdab9 guibg=#FFDAB9 guifg=#000000 ctermbg=223 ctermfg=16\n\thi BGffdead guibg=#FFDEAD guifg=#000000 ctermbg=223 ctermfg=16\n\thi BGffe4b5 guibg=#FFE4B5 guifg=#000000 ctermbg=223 ctermfg=16\n\thi BGffe4c4 guibg=#FFE4C4 guifg=#000000 ctermbg=224 ctermfg=16\n\thi BGffe4e1 guibg=#FFE4E1 guifg=#000000 ctermbg=224 ctermfg=16\n\thi BGffebcd guibg=#FFEBCD guifg=#000000 ctermbg=7   ctermfg=16\n\thi BGffefd5 guibg=#FFEFD5 guifg=#000000 ctermbg=255 ctermfg=16\n\thi BGfff0f5 guibg=#FFF0F5 guifg=#000000 ctermbg=15  ctermfg=16\n\thi BGfff5ee guibg=#FFF5EE guifg=#000000 ctermbg=255 ctermfg=16\n\thi BGfff8dc guibg=#FFF8DC guifg=#000000 ctermbg=255 ctermfg=16\n\thi BGfffacd guibg=#FFFACD guifg=#000000 ctermbg=255 ctermfg=16\n\thi BGfffaf0 guibg=#FFFAF0 guifg=#000000 ctermbg=15  ctermfg=16\n\thi BGfffafa guibg=#FFFAFA guifg=#000000 ctermbg=15  ctermfg=16\n\thi BGffff00 guibg=#FFFF00 guifg=#000000 ctermbg=11  ctermfg=16\n\thi BGffffe0 guibg=#FFFFE0 guifg=#000000 ctermbg=255 ctermfg=16\n\thi BGfffff0 guibg=#FFFFF0 guifg=#000000 ctermbg=15  ctermfg=16\n\thi BGffffff guibg=#FFFFFF guifg=#000000 ctermbg=231 ctermfg=16\n\n\t\" W3C Colors\n\tsyn keyword BG000000 black   contained containedin=@colorableGroup\n\tsyn keyword BGc0c0c0 silver  contained containedin=@colorableGroup\n\tsyn keyword BG808080 gray    contained containedin=@colorableGroup\n\tsyn match BGffffff \"\\<white\\(-\\)\\@!\\>\" contained containedin=@colorableGroup\n\tsyn keyword BG800000 maroon  contained containedin=@colorableGroup\n\tsyn keyword BGff0000 red     contained containedin=@colorableGroup\n\tsyn keyword BG800080 purple  contained containedin=@colorableGroup\n\tsyn keyword BGff00ff fuchsia contained containedin=@colorableGroup\n\tsyn keyword BG008000 green   contained containedin=@colorableGroup\n\tsyn keyword BG00ff00 lime    contained containedin=@colorableGroup\n\tsyn keyword BG808000 olive   contained containedin=@colorableGroup\n\tsyn keyword BGffff00 yellow  contained containedin=@colorableGroup\n\tsyn keyword BG000080 navy    contained containedin=@colorableGroup\n\tsyn keyword BG0000ff blue    contained containedin=@colorableGroup\n\tsyn keyword BG008080 teal    contained containedin=@colorableGroup\n\tsyn keyword BG00ffff aqua    contained containedin=@colorableGroup\n\n\t\" extra colors\n\tsyn keyword BGf0f8ff AliceBlue            contained containedin=@colorableGroup\n\tsyn keyword BGfaebd7 AntiqueWhite         contained containedin=@colorableGroup\n\tsyn keyword BG7fffd4 Aquamarine           contained containedin=@colorableGroup\n\tsyn keyword BGf0ffff Azure                contained containedin=@colorableGroup\n\tsyn keyword BGf5f5dc Beige                contained containedin=@colorableGroup\n\tsyn keyword BGffe4c4 Bisque               contained containedin=@colorableGroup\n\tsyn keyword BGffebcd BlanchedAlmond       contained containedin=@colorableGroup\n\tsyn keyword BG8a2be2 BlueViolet           contained containedin=@colorableGroup\n\tsyn keyword BGa52a2a Brown                contained containedin=@colorableGroup\n\tsyn keyword BGdeb887 BurlyWood            contained containedin=@colorableGroup\n\tsyn keyword BG5f9ea0 CadetBlue            contained containedin=@colorableGroup\n\tsyn keyword BG7fff00 Chartreuse           contained containedin=@colorableGroup\n\tsyn keyword BGd2691e Chocolate            contained containedin=@colorableGroup\n\tsyn keyword BGff7f50 Coral                contained containedin=@colorableGroup\n\tsyn keyword BG6495ed CornflowerBlue       contained containedin=@colorableGroup\n\tsyn keyword BGfff8dc Cornsilk             contained containedin=@colorableGroup\n\tsyn keyword BGdc143c Crimson              contained containedin=@colorableGroup\n\tsyn keyword BG00ffff Cyan                 contained containedin=@colorableGroup\n\tsyn keyword BG00008b DarkBlue             contained containedin=@colorableGroup\n\tsyn keyword BG008b8b DarkCyan             contained containedin=@colorableGroup\n\tsyn keyword BGb8860b DarkGoldenRod        contained containedin=@colorableGroup\n\tsyn keyword BGa9a9a9 DarkGray             contained containedin=@colorableGroup\n\tsyn keyword BG006400 DarkGreen            contained containedin=@colorableGroup\n\tsyn keyword BGa9a9a9 DarkGrey             contained containedin=@colorableGroup\n\tsyn keyword BGbdb76b DarkKhaki            contained containedin=@colorableGroup\n\tsyn keyword BG8b008b DarkMagenta          contained containedin=@colorableGroup\n\tsyn keyword BG556b2f DarkOliveGreen       contained containedin=@colorableGroup\n\tsyn keyword BG9932cc DarkOrchid           contained containedin=@colorableGroup\n\tsyn keyword BG8b0000 DarkRed              contained containedin=@colorableGroup\n\tsyn keyword BGe9967a DarkSalmon           contained containedin=@colorableGroup\n\tsyn keyword BG8fbc8f DarkSeaGreen         contained containedin=@colorableGroup\n\tsyn keyword BG483d8b DarkSlateBlue        contained containedin=@colorableGroup\n\tsyn keyword BG2f4f4f DarkSlateGray        contained containedin=@colorableGroup\n\tsyn keyword BG2f4f4f DarkSlateGrey        contained containedin=@colorableGroup\n\tsyn keyword BG00ced1 DarkTurquoise        contained containedin=@colorableGroup\n\tsyn keyword BG9400d3 DarkViolet           contained containedin=@colorableGroup\n\tsyn keyword BGff8c00 Darkorange           contained containedin=@colorableGroup\n\tsyn keyword BGff1493 DeepPink             contained containedin=@colorableGroup\n\tsyn keyword BG00bfff DeepSkyBlue          contained containedin=@colorableGroup\n\tsyn keyword BG696969 DimGray              contained containedin=@colorableGroup\n\tsyn keyword BG696969 DimGrey              contained containedin=@colorableGroup\n\tsyn keyword BG1e90ff DodgerBlue           contained containedin=@colorableGroup\n\tsyn keyword BGb22222 FireBrick            contained containedin=@colorableGroup\n\tsyn keyword BGfffaf0 FloralWhite          contained containedin=@colorableGroup\n\tsyn keyword BG228b22 ForestGreen          contained containedin=@colorableGroup\n\tsyn keyword BGdcdcdc Gainsboro            contained containedin=@colorableGroup\n\tsyn keyword BGf8f8ff GhostWhite           contained containedin=@colorableGroup\n\tsyn keyword BGffd700 Gold                 contained containedin=@colorableGroup\n\tsyn keyword BGdaa520 GoldenRod            contained containedin=@colorableGroup\n\tsyn keyword BGadff2f GreenYellow          contained containedin=@colorableGroup\n\tsyn keyword BG808080 Grey                 contained containedin=@colorableGroup\n\tsyn keyword BGf0fff0 HoneyDew             contained containedin=@colorableGroup\n\tsyn keyword BGff69b4 HotPink              contained containedin=@colorableGroup\n\tsyn keyword BGcd5c5c IndianRed            contained containedin=@colorableGroup\n\tsyn keyword BG4b0082 Indigo               contained containedin=@colorableGroup\n\tsyn keyword BGfffff0 Ivory                contained containedin=@colorableGroup\n\tsyn keyword BGf0e68c Khaki                contained containedin=@colorableGroup\n\tsyn keyword BGe6e6fa Lavender             contained containedin=@colorableGroup\n\tsyn keyword BGfff0f5 LavenderBlush        contained containedin=@colorableGroup\n\tsyn keyword BG7cfc00 LawnGreen            contained containedin=@colorableGroup\n\tsyn keyword BGfffacd LemonChiffon         contained containedin=@colorableGroup\n\tsyn keyword BGadd8e6 LightBlue            contained containedin=@colorableGroup\n\tsyn keyword BGf08080 LightCoral           contained containedin=@colorableGroup\n\tsyn keyword BGe0ffff LightCyan            contained containedin=@colorableGroup\n\tsyn keyword BGfafad2 LightGoldenRodYellow contained containedin=@colorableGroup\n\tsyn keyword BGd3d3d3 LightGray            contained containedin=@colorableGroup\n\tsyn keyword BG90ee90 LightGreen           contained containedin=@colorableGroup\n\tsyn keyword BGd3d3d3 LightGrey            contained containedin=@colorableGroup\n\tsyn keyword BGffb6c1 LightPink            contained containedin=@colorableGroup\n\tsyn keyword BGffa07a LightSalmon          contained containedin=@colorableGroup\n\tsyn keyword BG20b2aa LightSeaGreen        contained containedin=@colorableGroup\n\tsyn keyword BG87cefa LightSkyBlue         contained containedin=@colorableGroup\n\tsyn keyword BG778899 LightSlateGray       contained containedin=@colorableGroup\n\tsyn keyword BG778899 LightSlateGrey       contained containedin=@colorableGroup\n\tsyn keyword BGb0c4de LightSteelBlue       contained containedin=@colorableGroup\n\tsyn keyword BGffffe0 LightYellow          contained containedin=@colorableGroup\n\tsyn keyword BG32cd32 LimeGreen            contained containedin=@colorableGroup\n\tsyn keyword BGfaf0e6 Linen                contained containedin=@colorableGroup\n\tsyn keyword BGff00ff Magenta              contained containedin=@colorableGroup\n\tsyn keyword BG66cdaa MediumAquaMarine     contained containedin=@colorableGroup\n\tsyn keyword BG0000cd MediumBlue           contained containedin=@colorableGroup\n\tsyn keyword BGba55d3 MediumOrchid         contained containedin=@colorableGroup\n\tsyn keyword BG9370d8 MediumPurple         contained containedin=@colorableGroup\n\tsyn keyword BG3cb371 MediumSeaGreen       contained containedin=@colorableGroup\n\tsyn keyword BG7b68ee MediumSlateBlue      contained containedin=@colorableGroup\n\tsyn keyword BG00fa9a MediumSpringGreen    contained containedin=@colorableGroup\n\tsyn keyword BG48d1cc MediumTurquoise      contained containedin=@colorableGroup\n\tsyn keyword BGc71585 MediumVioletRed      contained containedin=@colorableGroup\n\tsyn keyword BG191970 MidnightBlue         contained containedin=@colorableGroup\n\tsyn keyword BGf5fffa MintCream            contained containedin=@colorableGroup\n\tsyn keyword BGffe4e1 MistyRose            contained containedin=@colorableGroup\n\tsyn keyword BGffe4b5 Moccasin             contained containedin=@colorableGroup\n\tsyn keyword BGffdead NavajoWhite          contained containedin=@colorableGroup\n\tsyn keyword BGfdf5e6 OldLace              contained containedin=@colorableGroup\n\tsyn keyword BG6b8e23 OliveDrab            contained containedin=@colorableGroup\n\tsyn keyword BGffa500 Orange               contained containedin=@colorableGroup\n\tsyn keyword BGff4500 OrangeRed            contained containedin=@colorableGroup\n\tsyn keyword BGda70d6 Orchid               contained containedin=@colorableGroup\n\tsyn keyword BGeee8aa PaleGoldenRod        contained containedin=@colorableGroup\n\tsyn keyword BG98fb98 PaleGreen            contained containedin=@colorableGroup\n\tsyn keyword BGafeeee PaleTurquoise        contained containedin=@colorableGroup\n\tsyn keyword BGd87093 PaleVioletRed        contained containedin=@colorableGroup\n\tsyn keyword BGffefd5 PapayaWhip           contained containedin=@colorableGroup\n\tsyn keyword BGffdab9 PeachPuff            contained containedin=@colorableGroup\n\tsyn keyword BGcd853f Peru                 contained containedin=@colorableGroup\n\tsyn keyword BGffc0cb Pink                 contained containedin=@colorableGroup\n\tsyn keyword BGdda0dd Plum                 contained containedin=@colorableGroup\n\tsyn keyword BGb0e0e6 PowderBlue           contained containedin=@colorableGroup\n\tsyn keyword BGbc8f8f RosyBrown            contained containedin=@colorableGroup\n\tsyn keyword BG4169e1 RoyalBlue            contained containedin=@colorableGroup\n\tsyn keyword BG8b4513 SaddleBrown          contained containedin=@colorableGroup\n\tsyn keyword BGfa8072 Salmon               contained containedin=@colorableGroup\n\tsyn keyword BGf4a460 SandyBrown           contained containedin=@colorableGroup\n\tsyn keyword BG2e8b57 SeaGreen             contained containedin=@colorableGroup\n\tsyn keyword BGfff5ee SeaShell             contained containedin=@colorableGroup\n\tsyn keyword BGa0522d Sienna               contained containedin=@colorableGroup\n\tsyn keyword BG87ceeb SkyBlue              contained containedin=@colorableGroup\n\tsyn keyword BG6a5acd SlateBlue            contained containedin=@colorableGroup\n\tsyn keyword BG708090 SlateGray            contained containedin=@colorableGroup\n\tsyn keyword BG708090 SlateGrey            contained containedin=@colorableGroup\n\tsyn keyword BGfffafa Snow                 contained containedin=@colorableGroup\n\tsyn keyword BG00ff7f SpringGreen          contained containedin=@colorableGroup\n\tsyn keyword BG4682b4 SteelBlue            contained containedin=@colorableGroup\n\tsyn keyword BGd2b48c Tan                  contained containedin=@colorableGroup\n\tsyn keyword BGd8bfd8 Thistle              contained containedin=@colorableGroup\n\tsyn keyword BGff6347 Tomato               contained containedin=@colorableGroup\n\tsyn keyword BG40e0d0 Turquoise            contained containedin=@colorableGroup\n\tsyn keyword BGee82ee Violet               contained containedin=@colorableGroup\n\tsyn keyword BGf5deb3 Wheat                contained containedin=@colorableGroup\n\tsyn keyword BGf5f5f5 WhiteSmoke           contained containedin=@colorableGroup\n\tsyn keyword BG9acd32 YellowGreen          contained containedin=@colorableGroup\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-css-color/tests/bench",
    "content": "#!/bin/sh\nset -e\ns=startuptime.txt\nvim --startuptime $s -o -c qa \"$@\"\nperl -lane'$sum += $F[1] if m!/\\.vim/after/syntax/css\\.vim$!; END {print $sum}' $s\nrm $s\n"
  },
  {
    "path": ".vim/bundle/vim-css-color/tests/example.less",
    "content": "@farge-sochi-lys: rgba(184, 4, 128, 1);\n@farge-sochi: rgba(150, 9, 120, 1);\n@farge-sochi-mork: rgba(95, 9, 84, 1);\n@farge-tekst: white;\n"
  },
  {
    "path": ".vim/bundle/vim-css-color/tests/example.sass",
    "content": "ul\n  background: #660066\n\nli\n  background: green\n\na\n  background: rgba(0,220,0,.3)\n\n// #123456\n\n!link_color = #fff\n\n#header\n  background = #111\n  a\n    color = !link_color\n"
  },
  {
    "path": ".vim/bundle/vim-css-color/tests/example.stylus",
    "content": "a {\n  color: yellow;\n}\n\n/* #123456 */\n"
  },
  {
    "path": ".vim/bundle/vim-css-color/tests/torture.css",
    "content": "p { color: #300000; color: #300001; color: #300002; color: #300003; color: #300004; color: #300005; color: #300006; color: #300007; color: #300008; color: #300009; color: #30000a; color: #30000b; color: #30000c; color: #30000d; color: #30000e; color: #30000f;\ncolor: #300100; color: #300101; color: #300102; color: #300103; color: #300104; color: #300105; color: #300106; color: #300107; color: #300108; color: #300109; color: #30010a; color: #30010b; color: #30010c; color: #30010d; color: #30010e; color: #30010f;\ncolor: #300200; color: #300201; color: #300202; color: #300203; color: #300204; color: #300205; color: #300206; color: #300207; color: #300208; color: #300209; color: #30020a; color: #30020b; color: #30020c; color: #30020d; color: #30020e; color: #30020f;\ncolor: #300300; color: #300301; color: #300302; color: #300303; color: #300304; color: #300305; color: #300306; color: #300307; color: #300308; color: #300309; color: #30030a; color: #30030b; color: #30030c; color: #30030d; color: #30030e; color: #30030f;\ncolor: #300400; color: #300401; color: #300402; color: #300403; color: #300404; color: #300405; color: #300406; color: #300407; color: #300408; color: #300409; color: #30040a; color: #30040b; color: #30040c; color: #30040d; color: #30040e; color: #30040f;\ncolor: #300500; color: #300501; color: #300502; color: #300503; color: #300504; color: #300505; color: #300506; color: #300507; color: #300508; color: #300509; color: #30050a; color: #30050b; color: #30050c; color: #30050d; color: #30050e; color: #30050f;\ncolor: #300600; color: #300601; color: #300602; color: #300603; color: #300604; color: #300605; color: #300606; color: #300607; color: #300608; color: #300609; color: #30060a; color: #30060b; color: #30060c; color: #30060d; color: #30060e; color: #30060f;\ncolor: #300700; color: #300701; color: #300702; color: #300703; color: #300704; color: #300705; color: #300706; color: #300707; color: #300708; color: #300709; color: #30070a; color: #30070b; color: #30070c; color: #30070d; color: #30070e; color: #30070f;\ncolor: #300800; color: #300801; color: #300802; color: #300803; color: #300804; color: #300805; color: #300806; color: #300807; color: #300808; color: #300809; color: #30080a; color: #30080b; color: #30080c; color: #30080d; color: #30080e; color: #30080f;\ncolor: #300900; color: #300901; color: #300902; color: #300903; color: #300904; color: #300905; color: #300906; color: #300907; color: #300908; color: #300909; color: #30090a; color: #30090b; color: #30090c; color: #30090d; color: #30090e; color: #30090f;\ncolor: #300a00; color: #300a01; color: #300a02; color: #300a03; color: #300a04; color: #300a05; color: #300a06; color: #300a07; color: #300a08; color: #300a09; color: #300a0a; color: #300a0b; color: #300a0c; color: #300a0d; color: #300a0e; color: #300a0f;\ncolor: #300b00; color: #300b01; color: #300b02; color: #300b03; color: #300b04; color: #300b05; color: #300b06; color: #300b07; color: #300b08; color: #300b09; color: #300b0a; color: #300b0b; color: #300b0c; color: #300b0d; color: #300b0e; color: #300b0f;\ncolor: #300c00; color: #300c01; color: #300c02; color: #300c03; color: #300c04; color: #300c05; color: #300c06; color: #300c07; color: #300c08; color: #300c09; color: #300c0a; color: #300c0b; color: #300c0c; color: #300c0d; color: #300c0e; color: #300c0f;\ncolor: #300d00; color: #300d01; color: #300d02; color: #300d03; color: #300d04; color: #300d05; color: #300d06; color: #300d07; color: #300d08; color: #300d09; color: #300d0a; color: #300d0b; color: #300d0c; color: #300d0d; color: #300d0e; color: #300d0f;\ncolor: #300e00; color: #300e01; color: #300e02; color: #300e03; color: #300e04; color: #300e05; color: #300e06; color: #300e07; color: #300e08; color: #300e09; color: #300e0a; color: #300e0b; color: #300e0c; color: #300e0d; color: #300e0e; color: #300e0f;\ncolor: #300f00; color: #300f01; color: #300f02; color: #300f03; color: #300f04; color: #300f05; color: #300f06; color: #300f07; color: #300f08; color: #300f09; color: #300f0a; color: #300f0b; color: #300f0c; color: #300f0d; color: #300f0e; color: #300f0f;\ncolor: #301000; color: #301001; color: #301002; color: #301003; color: #301004; color: #301005; color: #301006; color: #301007; color: #301008; color: #301009; color: #30100a; color: #30100b; color: #30100c; color: #30100d; color: #30100e; color: #30100f;\ncolor: #301100; color: #301101; color: #301102; color: #301103; color: #301104; color: #301105; color: #301106; color: #301107; color: #301108; color: #301109; color: #30110a; color: #30110b; color: #30110c; color: #30110d; color: #30110e; color: #30110f;\ncolor: #301200; color: #301201; color: #301202; color: #301203; color: #301204; color: #301205; color: #301206; color: #301207; color: #301208; color: #301209; color: #30120a; color: #30120b; color: #30120c; color: #30120d; color: #30120e; color: #30120f;\ncolor: #301300; color: #301301; color: #301302; color: #301303; color: #301304; color: #301305; color: #301306; color: #301307; color: #301308; color: #301309; color: #30130a; color: #30130b; color: #30130c; color: #30130d; color: #30130e; color: #30130f;\ncolor: #301400; color: #301401; color: #301402; color: #301403; color: #301404; color: #301405; color: #301406; color: #301407; color: #301408; color: #301409; color: #30140a; color: #30140b; color: #30140c; color: #30140d; color: #30140e; color: #30140f;\ncolor: #301500; color: #301501; color: #301502; color: #301503; color: #301504; color: #301505; color: #301506; color: #301507; color: #301508; color: #301509; color: #30150a; color: #30150b; color: #30150c; color: #30150d; color: #30150e; color: #30150f;\ncolor: #301600; color: #301601; color: #301602; color: #301603; color: #301604; color: #301605; color: #301606; color: #301607; color: #301608; color: #301609; color: #30160a; color: #30160b; color: #30160c; color: #30160d; color: #30160e; color: #30160f;\ncolor: #301700; color: #301701; color: #301702; color: #301703; color: #301704; color: #301705; color: #301706; color: #301707; color: #301708; color: #301709; color: #30170a; color: #30170b; color: #30170c; color: #30170d; color: #30170e; color: #30170f;\ncolor: #301800; color: #301801; color: #301802; color: #301803; color: #301804; color: #301805; color: #301806; color: #301807; color: #301808; color: #301809; color: #30180a; color: #30180b; color: #30180c; color: #30180d; color: #30180e; color: #30180f;\ncolor: #301900; color: #301901; color: #301902; color: #301903; color: #301904; color: #301905; color: #301906; color: #301907; color: #301908; color: #301909; color: #30190a; color: #30190b; color: #30190c; color: #30190d; color: #30190e; color: #30190f;\ncolor: #301a00; color: #301a01; color: #301a02; color: #301a03; color: #301a04; color: #301a05; color: #301a06; color: #301a07; color: #301a08; color: #301a09; color: #301a0a; color: #301a0b; color: #301a0c; color: #301a0d; color: #301a0e; color: #301a0f;\ncolor: #301b00; color: #301b01; color: #301b02; color: #301b03; color: #301b04; color: #301b05; color: #301b06; color: #301b07; color: #301b08; color: #301b09; color: #301b0a; color: #301b0b; color: #301b0c; color: #301b0d; color: #301b0e; color: #301b0f;\ncolor: #301c00; color: #301c01; color: #301c02; color: #301c03; color: #301c04; color: #301c05; color: #301c06; color: #301c07; color: #301c08; color: #301c09; color: #301c0a; color: #301c0b; color: #301c0c; color: #301c0d; color: #301c0e; color: #301c0f;\ncolor: #301d00; color: #301d01; color: #301d02; color: #301d03; color: #301d04; color: #301d05; color: #301d06; color: #301d07; color: #301d08; color: #301d09; color: #301d0a; color: #301d0b; color: #301d0c; color: #301d0d; color: #301d0e; color: #301d0f;\ncolor: #301e00; color: #301e01; color: #301e02; color: #301e03; color: #301e04; color: #301e05; color: #301e06; color: #301e07; color: #301e08; color: #301e09; color: #301e0a; color: #301e0b; color: #301e0c; color: #301e0d; color: #301e0e; color: #301e0f;\ncolor: #301f00; color: #301f01; color: #301f02; color: #301f03; color: #301f04; color: #301f05; color: #301f06; color: #301f07; color: #301f08; color: #301f09; color: #301f0a; color: #301f0b; color: #301f0c; color: #301f0d; color: #301f0e; color: #301f0f;\ncolor: #302000; color: #302001; color: #302002; color: #302003; color: #302004; color: #302005; color: #302006; color: #302007; color: #302008; color: #302009; color: #30200a; color: #30200b; color: #30200c; color: #30200d; color: #30200e; color: #30200f;\ncolor: #302100; color: #302101; color: #302102; color: #302103; color: #302104; color: #302105; color: #302106; color: #302107; color: #302108; color: #302109; color: #30210a; color: #30210b; color: #30210c; color: #30210d; color: #30210e; color: #30210f;\ncolor: #302200; color: #302201; color: #302202; color: #302203; color: #302204; color: #302205; color: #302206; color: #302207; color: #302208; color: #302209; color: #30220a; color: #30220b; color: #30220c; color: #30220d; color: #30220e; color: #30220f;\ncolor: #302300; color: #302301; color: #302302; color: #302303; color: #302304; color: #302305; color: #302306; color: #302307; color: #302308; color: #302309; color: #30230a; color: #30230b; color: #30230c; color: #30230d; color: #30230e; color: #30230f;\ncolor: #302400; color: #302401; color: #302402; color: #302403; color: #302404; color: #302405; color: #302406; color: #302407; color: #302408; color: #302409; color: #30240a; color: #30240b; color: #30240c; color: #30240d; color: #30240e; color: #30240f;\ncolor: #302500; color: #302501; color: #302502; color: #302503; color: #302504; color: #302505; color: #302506; color: #302507; color: #302508; color: #302509; color: #30250a; color: #30250b; color: #30250c; color: #30250d; color: #30250e; color: #30250f;\ncolor: #302600; color: #302601; color: #302602; color: #302603; color: #302604; color: #302605; color: #302606; color: #302607; color: #302608; color: #302609; color: #30260a; color: #30260b; color: #30260c; color: #30260d; color: #30260e; color: #30260f;\ncolor: #302700; color: #302701; color: #302702; color: #302703; color: #302704; color: #302705; color: #302706; color: #302707; color: #302708; color: #302709; color: #30270a; color: #30270b; color: #30270c; color: #30270d; color: #30270e; color: #30270f;\ncolor: #302800; color: #302801; color: #302802; color: #302803; color: #302804; color: #302805; color: #302806; color: #302807; color: #302808; color: #302809; color: #30280a; color: #30280b; color: #30280c; color: #30280d; color: #30280e; color: #30280f;\ncolor: #302900; color: #302901; color: #302902; color: #302903; color: #302904; color: #302905; color: #302906; color: #302907; color: #302908; color: #302909; color: #30290a; color: #30290b; color: #30290c; color: #30290d; color: #30290e; color: #30290f;\ncolor: #302a00; color: #302a01; color: #302a02; color: #302a03; color: #302a04; color: #302a05; color: #302a06; color: #302a07; color: #302a08; color: #302a09; color: #302a0a; color: #302a0b; color: #302a0c; color: #302a0d; color: #302a0e; color: #302a0f;\ncolor: #302b00; color: #302b01; color: #302b02; color: #302b03; color: #302b04; color: #302b05; color: #302b06; color: #302b07; color: #302b08; color: #302b09; color: #302b0a; color: #302b0b; color: #302b0c; color: #302b0d; color: #302b0e; color: #302b0f;\ncolor: #302c00; color: #302c01; color: #302c02; color: #302c03; color: #302c04; color: #302c05; color: #302c06; color: #302c07; color: #302c08; color: #302c09; color: #302c0a; color: #302c0b; color: #302c0c; color: #302c0d; color: #302c0e; color: #302c0f;\ncolor: #302d00; color: #302d01; color: #302d02; color: #302d03; color: #302d04; color: #302d05; color: #302d06; color: #302d07; color: #302d08; color: #302d09; color: #302d0a; color: #302d0b; color: #302d0c; color: #302d0d; color: #302d0e; color: #302d0f;\ncolor: #302e00; color: #302e01; color: #302e02; color: #302e03; color: #302e04; color: #302e05; color: #302e06; color: #302e07; color: #302e08; color: #302e09; color: #302e0a; color: #302e0b; color: #302e0c; color: #302e0d; color: #302e0e; color: #302e0f;\ncolor: #302f00; color: #302f01; color: #302f02; color: #302f03; color: #302f04; color: #302f05; color: #302f06; color: #302f07; color: #302f08; color: #302f09; color: #302f0a; color: #302f0b; color: #302f0c; color: #302f0d; color: #302f0e; color: #302f0f;\ncolor: #303000; color: #303001; color: #303002; color: #303003; color: #303004; color: #303005; color: #303006; color: #303007; color: #303008; color: #303009; color: #30300a; color: #30300b; color: #30300c; color: #30300d; color: #30300e; color: #30300f;\ncolor: #303100; color: #303101; color: #303102; color: #303103; color: #303104; color: #303105; color: #303106; color: #303107; color: #303108; color: #303109; color: #30310a; color: #30310b; color: #30310c; color: #30310d; color: #30310e; color: #30310f;\ncolor: #303200; color: #303201; color: #303202; color: #303203; color: #303204; color: #303205; color: #303206; color: #303207; color: #303208; color: #303209; color: #30320a; color: #30320b; color: #30320c; color: #30320d; color: #30320e; color: #30320f;\ncolor: #303300; color: #303301; color: #303302; color: #303303; color: #303304; color: #303305; color: #303306; color: #303307; color: #303308; color: #303309; color: #30330a; color: #30330b; color: #30330c; color: #30330d; color: #30330e; color: #30330f;\ncolor: #303400; color: #303401; color: #303402; color: #303403; color: #303404; color: #303405; color: #303406; color: #303407; color: #303408; color: #303409; color: #30340a; color: #30340b; color: #30340c; color: #30340d; color: #30340e; color: #30340f;\ncolor: #303500; color: #303501; color: #303502; color: #303503; color: #303504; color: #303505; color: #303506; color: #303507; color: #303508; color: #303509; color: #30350a; color: #30350b; color: #30350c; color: #30350d; color: #30350e; color: #30350f;\ncolor: #303600; color: #303601; color: #303602; color: #303603; color: #303604; color: #303605; color: #303606; color: #303607; color: #303608; color: #303609; color: #30360a; color: #30360b; color: #30360c; color: #30360d; color: #30360e; color: #30360f;\ncolor: #303700; color: #303701; color: #303702; color: #303703; color: #303704; color: #303705; color: #303706; color: #303707; color: #303708; color: #303709; color: #30370a; color: #30370b; color: #30370c; color: #30370d; color: #30370e; color: #30370f;\ncolor: #303800; color: #303801; color: #303802; color: #303803; color: #303804; color: #303805; color: #303806; color: #303807; color: #303808; color: #303809; color: #30380a; color: #30380b; color: #30380c; color: #30380d; color: #30380e; color: #30380f;\ncolor: #303900; color: #303901; color: #303902; color: #303903; color: #303904; color: #303905; color: #303906; color: #303907; color: #303908; color: #303909; color: #30390a; color: #30390b; color: #30390c; color: #30390d; color: #30390e; color: #30390f;\ncolor: #303a00; color: #303a01; color: #303a02; color: #303a03; color: #303a04; color: #303a05; color: #303a06; color: #303a07; color: #303a08; color: #303a09; color: #303a0a; color: #303a0b; color: #303a0c; color: #303a0d; color: #303a0e; color: #303a0f;\ncolor: #303b00; color: #303b01; color: #303b02; color: #303b03; color: #303b04; color: #303b05; color: #303b06; color: #303b07; color: #303b08; color: #303b09; color: #303b0a; color: #303b0b; color: #303b0c; color: #303b0d; color: #303b0e; color: #303b0f;\ncolor: #303c00; color: #303c01; color: #303c02; color: #303c03; color: #303c04; color: #303c05; color: #303c06; color: #303c07; color: #303c08; color: #303c09; color: #303c0a; color: #303c0b; color: #303c0c; color: #303c0d; color: #303c0e; color: #303c0f;\ncolor: #303d00; color: #303d01; color: #303d02; color: #303d03; color: #303d04; color: #303d05; color: #303d06; color: #303d07; color: #303d08; color: #303d09; color: #303d0a; color: #303d0b; color: #303d0c; color: #303d0d; color: #303d0e; color: #303d0f;\ncolor: #303e00; color: #303e01; color: #303e02; color: #303e03; color: #303e04; color: #303e05; color: #303e06; color: #303e07; color: #303e08; color: #303e09; color: #303e0a; color: #303e0b; color: #303e0c; color: #303e0d; color: #303e0e; color: #303e0f;\ncolor: #303f00; color: #303f01; color: #303f02; color: #303f03; color: #303f04; color: #303f05; color: #303f06; color: #303f07; color: #303f08; color: #303f09; color: #303f0a; color: #303f0b; color: #303f0c; color: #303f0d; color: #303f0e; color: #303f0f;\ncolor: #304000; color: #304001; color: #304002; color: #304003; color: #304004; color: #304005; color: #304006; color: #304007; color: #304008; color: #304009; color: #30400a; color: #30400b; color: #30400c; color: #30400d; color: #30400e; color: #30400f;\ncolor: #304100; color: #304101; color: #304102; color: #304103; color: #304104; color: #304105; color: #304106; color: #304107; color: #304108; color: #304109; color: #30410a; color: #30410b; color: #30410c; color: #30410d; color: #30410e; color: #30410f;\ncolor: #304200; color: #304201; color: #304202; color: #304203; color: #304204; color: #304205; color: #304206; color: #304207; color: #304208; color: #304209; color: #30420a; color: #30420b; color: #30420c; color: #30420d; color: #30420e; color: #30420f;\ncolor: #304300; color: #304301; color: #304302; color: #304303; color: #304304; color: #304305; color: #304306; color: #304307; color: #304308; color: #304309; color: #30430a; color: #30430b; color: #30430c; color: #30430d; color: #30430e; color: #30430f;\ncolor: #304400; color: #304401; color: #304402; color: #304403; color: #304404; color: #304405; color: #304406; color: #304407; color: #304408; color: #304409; color: #30440a; color: #30440b; color: #30440c; color: #30440d; color: #30440e; color: #30440f;\ncolor: #304500; color: #304501; color: #304502; color: #304503; color: #304504; color: #304505; color: #304506; color: #304507; color: #304508; color: #304509; color: #30450a; color: #30450b; color: #30450c; color: #30450d; color: #30450e; color: #30450f;\ncolor: #304600; color: #304601; color: #304602; color: #304603; color: #304604; color: #304605; color: #304606; color: #304607; color: #304608; color: #304609; color: #30460a; color: #30460b; color: #30460c; color: #30460d; color: #30460e; color: #30460f;\ncolor: #304700; color: #304701; color: #304702; color: #304703; color: #304704; color: #304705; color: #304706; color: #304707; color: #304708; color: #304709; color: #30470a; color: #30470b; color: #30470c; color: #30470d; color: #30470e; color: #30470f;\ncolor: #304800; color: #304801; color: #304802; color: #304803; color: #304804; color: #304805; color: #304806; color: #304807; color: #304808; color: #304809; color: #30480a; color: #30480b; color: #30480c; color: #30480d; color: #30480e; color: #30480f;\ncolor: #304900; color: #304901; color: #304902; color: #304903; color: #304904; color: #304905; color: #304906; color: #304907; color: #304908; color: #304909; color: #30490a; color: #30490b; color: #30490c; color: #30490d; color: #30490e; color: #30490f;\ncolor: #304a00; color: #304a01; color: #304a02; color: #304a03; color: #304a04; color: #304a05; color: #304a06; color: #304a07; color: #304a08; color: #304a09; color: #304a0a; color: #304a0b; color: #304a0c; color: #304a0d; color: #304a0e; color: #304a0f;\ncolor: #304b00; color: #304b01; color: #304b02; color: #304b03; color: #304b04; color: #304b05; color: #304b06; color: #304b07; color: #304b08; color: #304b09; color: #304b0a; color: #304b0b; color: #304b0c; color: #304b0d; color: #304b0e; color: #304b0f;\ncolor: #304c00; color: #304c01; color: #304c02; color: #304c03; color: #304c04; color: #304c05; color: #304c06; color: #304c07; color: #304c08; color: #304c09; color: #304c0a; color: #304c0b; color: #304c0c; color: #304c0d; color: #304c0e; color: #304c0f;\ncolor: #304d00; color: #304d01; color: #304d02; color: #304d03; color: #304d04; color: #304d05; color: #304d06; color: #304d07; color: #304d08; color: #304d09; color: #304d0a; color: #304d0b; color: #304d0c; color: #304d0d; color: #304d0e; color: #304d0f;\ncolor: #304e00; color: #304e01; color: #304e02; color: #304e03; color: #304e04; color: #304e05; color: #304e06; color: #304e07; color: #304e08; color: #304e09; color: #304e0a; color: #304e0b; color: #304e0c; color: #304e0d; color: #304e0e; color: #304e0f;\ncolor: #304f00; color: #304f01; color: #304f02; color: #304f03; color: #304f04; color: #304f05; color: #304f06; color: #304f07; color: #304f08; color: #304f09; color: #304f0a; color: #304f0b; color: #304f0c; color: #304f0d; color: #304f0e; color: #304f0f;\ncolor: #305000; color: #305001; color: #305002; color: #305003; color: #305004; color: #305005; color: #305006; color: #305007; color: #305008; color: #305009; color: #30500a; color: #30500b; color: #30500c; color: #30500d; color: #30500e; color: #30500f;\ncolor: #305100; color: #305101; color: #305102; color: #305103; color: #305104; color: #305105; color: #305106; color: #305107; color: #305108; color: #305109; color: #30510a; color: #30510b; color: #30510c; color: #30510d; color: #30510e; color: #30510f;\ncolor: #305200; color: #305201; color: #305202; color: #305203; color: #305204; color: #305205; color: #305206; color: #305207; color: #305208; color: #305209; color: #30520a; color: #30520b; color: #30520c; color: #30520d; color: #30520e; color: #30520f;\ncolor: #305300; color: #305301; color: #305302; color: #305303; color: #305304; color: #305305; color: #305306; color: #305307; color: #305308; color: #305309; color: #30530a; color: #30530b; color: #30530c; color: #30530d; color: #30530e; color: #30530f;\ncolor: #305400; color: #305401; color: #305402; color: #305403; color: #305404; color: #305405; color: #305406; color: #305407; color: #305408; color: #305409; color: #30540a; color: #30540b; color: #30540c; color: #30540d; color: #30540e; color: #30540f;\ncolor: #305500; color: #305501; color: #305502; color: #305503; color: #305504; color: #305505; color: #305506; color: #305507; color: #305508; color: #305509; color: #30550a; color: #30550b; color: #30550c; color: #30550d; color: #30550e; color: #30550f;\ncolor: #305600; color: #305601; color: #305602; color: #305603; color: #305604; color: #305605; color: #305606; color: #305607; color: #305608; color: #305609; color: #30560a; color: #30560b; color: #30560c; color: #30560d; color: #30560e; color: #30560f;\ncolor: #305700; color: #305701; color: #305702; color: #305703; color: #305704; color: #305705; color: #305706; color: #305707; color: #305708; color: #305709; color: #30570a; color: #30570b; color: #30570c; color: #30570d; color: #30570e; color: #30570f;\ncolor: #305800; color: #305801; color: #305802; color: #305803; color: #305804; color: #305805; color: #305806; color: #305807; color: #305808; color: #305809; color: #30580a; color: #30580b; color: #30580c; color: #30580d; color: #30580e; color: #30580f;\ncolor: #305900; color: #305901; color: #305902; color: #305903; color: #305904; color: #305905; color: #305906; color: #305907; color: #305908; color: #305909; color: #30590a; color: #30590b; color: #30590c; color: #30590d; color: #30590e; color: #30590f;\ncolor: #305a00; color: #305a01; color: #305a02; color: #305a03; color: #305a04; color: #305a05; color: #305a06; color: #305a07; color: #305a08; color: #305a09; color: #305a0a; color: #305a0b; color: #305a0c; color: #305a0d; color: #305a0e; color: #305a0f;\ncolor: #305b00; color: #305b01; color: #305b02; color: #305b03; color: #305b04; color: #305b05; color: #305b06; color: #305b07; color: #305b08; color: #305b09; color: #305b0a; color: #305b0b; color: #305b0c; color: #305b0d; color: #305b0e; color: #305b0f;\ncolor: #305c00; color: #305c01; color: #305c02; color: #305c03; color: #305c04; color: #305c05; color: #305c06; color: #305c07; color: #305c08; color: #305c09; color: #305c0a; color: #305c0b; color: #305c0c; color: #305c0d; color: #305c0e; color: #305c0f;\ncolor: #305d00; color: #305d01; color: #305d02; color: #305d03; color: #305d04; color: #305d05; color: #305d06; color: #305d07; color: #305d08; color: #305d09; color: #305d0a; color: #305d0b; color: #305d0c; color: #305d0d; color: #305d0e; color: #305d0f;\ncolor: #305e00; color: #305e01; color: #305e02; color: #305e03; color: #305e04; color: #305e05; color: #305e06; color: #305e07; color: #305e08; color: #305e09; color: #305e0a; color: #305e0b; color: #305e0c; color: #305e0d; color: #305e0e; color: #305e0f;\ncolor: #305f00; color: #305f01; color: #305f02; color: #305f03; color: #305f04; color: #305f05; color: #305f06; color: #305f07; color: #305f08; color: #305f09; color: #305f0a; color: #305f0b; color: #305f0c; color: #305f0d; color: #305f0e; color: #305f0f;\ncolor: #306000; color: #306001; color: #306002; color: #306003; color: #306004; color: #306005; color: #306006; color: #306007; color: #306008; color: #306009; color: #30600a; color: #30600b; color: #30600c; color: #30600d; color: #30600e; color: #30600f;\ncolor: #306100; color: #306101; color: #306102; color: #306103; color: #306104; color: #306105; color: #306106; color: #306107; color: #306108; color: #306109; color: #30610a; color: #30610b; color: #30610c; color: #30610d; color: #30610e; color: #30610f;\ncolor: #306200; color: #306201; color: #306202; color: #306203; color: #306204; color: #306205; color: #306206; color: #306207; color: #306208; color: #306209; color: #30620a; color: #30620b; color: #30620c; color: #30620d; color: #30620e; color: #30620f;\ncolor: #306300; color: #306301; color: #306302; color: #306303; color: #306304; color: #306305; color: #306306; color: #306307; color: #306308; color: #306309; color: #30630a; color: #30630b; color: #30630c; color: #30630d; color: #30630e; color: #30630f;\ncolor: #306400; color: #306401; color: #306402; color: #306403; color: #306404; color: #306405; color: #306406; color: #306407; color: #306408; color: #306409; color: #30640a; color: #30640b; color: #30640c; color: #30640d; color: #30640e; color: #30640f;\ncolor: #306500; color: #306501; color: #306502; color: #306503; color: #306504; color: #306505; color: #306506; color: #306507; color: #306508; color: #306509; color: #30650a; color: #30650b; color: #30650c; color: #30650d; color: #30650e; color: #30650f;\ncolor: #306600; color: #306601; color: #306602; color: #306603; color: #306604; color: #306605; color: #306606; color: #306607; color: #306608; color: #306609; color: #30660a; color: #30660b; color: #30660c; color: #30660d; color: #30660e; color: #30660f;\ncolor: #306700; color: #306701; color: #306702; color: #306703; color: #306704; color: #306705; color: #306706; color: #306707; color: #306708; color: #306709; color: #30670a; color: #30670b; color: #30670c; color: #30670d; color: #30670e; color: #30670f;\ncolor: #306800; color: #306801; color: #306802; color: #306803; color: #306804; color: #306805; color: #306806; color: #306807; color: #306808; color: #306809; color: #30680a; color: #30680b; color: #30680c; color: #30680d; color: #30680e; color: #30680f;\ncolor: #306900; color: #306901; color: #306902; color: #306903; color: #306904; color: #306905; color: #306906; color: #306907; color: #306908; color: #306909; color: #30690a; color: #30690b; color: #30690c; color: #30690d; color: #30690e; color: #30690f;\ncolor: #306a00; color: #306a01; color: #306a02; color: #306a03; color: #306a04; color: #306a05; color: #306a06; color: #306a07; color: #306a08; color: #306a09; color: #306a0a; color: #306a0b; color: #306a0c; color: #306a0d; color: #306a0e; color: #306a0f;\ncolor: #306b00; color: #306b01; color: #306b02; color: #306b03; color: #306b04; color: #306b05; color: #306b06; color: #306b07; color: #306b08; color: #306b09; color: #306b0a; color: #306b0b; color: #306b0c; color: #306b0d; color: #306b0e; color: #306b0f;\ncolor: #306c00; color: #306c01; color: #306c02; color: #306c03; color: #306c04; color: #306c05; color: #306c06; color: #306c07; color: #306c08; color: #306c09; color: #306c0a; color: #306c0b; color: #306c0c; color: #306c0d; color: #306c0e; color: #306c0f;\ncolor: #306d00; color: #306d01; color: #306d02; color: #306d03; color: #306d04; color: #306d05; color: #306d06; color: #306d07; color: #306d08; color: #306d09; color: #306d0a; color: #306d0b; color: #306d0c; color: #306d0d; color: #306d0e; color: #306d0f;\ncolor: #306e00; color: #306e01; color: #306e02; color: #306e03; color: #306e04; color: #306e05; color: #306e06; color: #306e07; color: #306e08; color: #306e09; color: #306e0a; color: #306e0b; color: #306e0c; color: #306e0d; color: #306e0e; color: #306e0f;\ncolor: #306f00; color: #306f01; color: #306f02; color: #306f03; color: #306f04; color: #306f05; color: #306f06; color: #306f07; color: #306f08; color: #306f09; color: #306f0a; color: #306f0b; color: #306f0c; color: #306f0d; color: #306f0e; color: #306f0f;\ncolor: #307000; color: #307001; color: #307002; color: #307003; color: #307004; color: #307005; color: #307006; color: #307007; color: #307008; color: #307009; color: #30700a; color: #30700b; color: #30700c; color: #30700d; color: #30700e; color: #30700f;\ncolor: #307100; color: #307101; color: #307102; color: #307103; color: #307104; color: #307105; color: #307106; color: #307107; color: #307108; color: #307109; color: #30710a; color: #30710b; color: #30710c; color: #30710d; color: #30710e; color: #30710f;\ncolor: #307200; color: #307201; color: #307202; color: #307203; color: #307204; color: #307205; color: #307206; color: #307207; color: #307208; color: #307209; color: #30720a; color: #30720b; color: #30720c; color: #30720d; color: #30720e; color: #30720f;\ncolor: #307300; color: #307301; color: #307302; color: #307303; color: #307304; color: #307305; color: #307306; color: #307307; color: #307308; color: #307309; color: #30730a; color: #30730b; color: #30730c; color: #30730d; color: #30730e; color: #30730f;\ncolor: #307400; color: #307401; color: #307402; color: #307403; color: #307404; color: #307405; color: #307406; color: #307407; color: #307408; color: #307409; color: #30740a; color: #30740b; color: #30740c; color: #30740d; color: #30740e; color: #30740f;\ncolor: #307500; color: #307501; color: #307502; color: #307503; color: #307504; color: #307505; color: #307506; color: #307507; color: #307508; color: #307509; color: #30750a; color: #30750b; color: #30750c; color: #30750d; color: #30750e; color: #30750f;\ncolor: #307600; color: #307601; color: #307602; color: #307603; color: #307604; color: #307605; color: #307606; color: #307607; color: #307608; color: #307609; color: #30760a; color: #30760b; color: #30760c; color: #30760d; color: #30760e; color: #30760f;\ncolor: #307700; color: #307701; color: #307702; color: #307703; color: #307704; color: #307705; color: #307706; color: #307707; color: #307708; color: #307709; color: #30770a; color: #30770b; color: #30770c; color: #30770d; color: #30770e; color: #30770f;\ncolor: #307800; color: #307801; color: #307802; color: #307803; color: #307804; color: #307805; color: #307806; color: #307807; color: #307808; color: #307809; color: #30780a; color: #30780b; color: #30780c; color: #30780d; color: #30780e; color: #30780f;\ncolor: #307900; color: #307901; color: #307902; color: #307903; color: #307904; color: #307905; color: #307906; color: #307907; color: #307908; color: #307909; color: #30790a; color: #30790b; color: #30790c; color: #30790d; color: #30790e; color: #30790f;\ncolor: #307a00; color: #307a01; color: #307a02; color: #307a03; color: #307a04; color: #307a05; color: #307a06; color: #307a07; color: #307a08; color: #307a09; color: #307a0a; color: #307a0b; color: #307a0c; color: #307a0d; color: #307a0e; color: #307a0f;\ncolor: #307b00; color: #307b01; color: #307b02; color: #307b03; color: #307b04; color: #307b05; color: #307b06; color: #307b07; color: #307b08; color: #307b09; color: #307b0a; color: #307b0b; color: #307b0c; color: #307b0d; color: #307b0e; color: #307b0f;\ncolor: #307c00; color: #307c01; color: #307c02; color: #307c03; color: #307c04; color: #307c05; color: #307c06; color: #307c07; color: #307c08; color: #307c09; color: #307c0a; color: #307c0b; color: #307c0c; color: #307c0d; color: #307c0e; color: #307c0f;\ncolor: #307d00; color: #307d01; color: #307d02; color: #307d03; color: #307d04; color: #307d05; color: #307d06; color: #307d07; color: #307d08; color: #307d09; color: #307d0a; color: #307d0b; color: #307d0c; color: #307d0d; color: #307d0e; color: #307d0f;\ncolor: #307e00; color: #307e01; color: #307e02; color: #307e03; color: #307e04; color: #307e05; color: #307e06; color: #307e07; color: #307e08; color: #307e09; color: #307e0a; color: #307e0b; color: #307e0c; color: #307e0d; color: #307e0e; color: #307e0f;\ncolor: #307f00; color: #307f01; color: #307f02; color: #307f03; color: #307f04; color: #307f05; color: #307f06; color: #307f07; color: #307f08; color: #307f09; color: #307f0a; color: #307f0b; color: #307f0c; color: #307f0d; color: #307f0e; color: #307f0f;\ncolor: #308000; color: #308001; color: #308002; color: #308003; color: #308004; color: #308005; color: #308006; color: #308007; color: #308008; color: #308009; color: #30800a; color: #30800b; color: #30800c; color: #30800d; color: #30800e; color: #30800f;\ncolor: #308100; color: #308101; color: #308102; color: #308103; color: #308104; color: #308105; color: #308106; color: #308107; color: #308108; color: #308109; color: #30810a; color: #30810b; color: #30810c; color: #30810d; color: #30810e; color: #30810f;\ncolor: #308200; color: #308201; color: #308202; color: #308203; color: #308204; color: #308205; color: #308206; color: #308207; color: #308208; color: #308209; color: #30820a; color: #30820b; color: #30820c; color: #30820d; color: #30820e; color: #30820f;\ncolor: #308300; color: #308301; color: #308302; color: #308303; color: #308304; color: #308305; color: #308306; color: #308307; color: #308308; color: #308309; color: #30830a; color: #30830b; color: #30830c; color: #30830d; color: #30830e; color: #30830f;\ncolor: #308400; color: #308401; color: #308402; color: #308403; color: #308404; color: #308405; color: #308406; color: #308407; color: #308408; color: #308409; color: #30840a; color: #30840b; color: #30840c; color: #30840d; color: #30840e; color: #30840f;\ncolor: #308500; color: #308501; color: #308502; color: #308503; color: #308504; color: #308505; color: #308506; color: #308507; color: #308508; color: #308509; color: #30850a; color: #30850b; color: #30850c; color: #30850d; color: #30850e; color: #30850f;\ncolor: #308600; color: #308601; color: #308602; color: #308603; color: #308604; color: #308605; color: #308606; color: #308607; color: #308608; color: #308609; color: #30860a; color: #30860b; color: #30860c; color: #30860d; color: #30860e; color: #30860f;\ncolor: #308700; color: #308701; color: #308702; color: #308703; color: #308704; color: #308705; color: #308706; color: #308707; color: #308708; color: #308709; color: #30870a; color: #30870b; color: #30870c; color: #30870d; color: #30870e; color: #30870f;\ncolor: #308800; color: #308801; color: #308802; color: #308803; color: #308804; color: #308805; color: #308806; color: #308807; color: #308808; color: #308809; color: #30880a; color: #30880b; color: #30880c; color: #30880d; color: #30880e; color: #30880f;\ncolor: #308900; color: #308901; color: #308902; color: #308903; color: #308904; color: #308905; color: #308906; color: #308907; color: #308908; color: #308909; color: #30890a; color: #30890b; color: #30890c; color: #30890d; color: #30890e; color: #30890f;\ncolor: #308a00; color: #308a01; color: #308a02; color: #308a03; color: #308a04; color: #308a05; color: #308a06; color: #308a07; color: #308a08; color: #308a09; color: #308a0a; color: #308a0b; color: #308a0c; color: #308a0d; color: #308a0e; color: #308a0f;\ncolor: #308b00; color: #308b01; color: #308b02; color: #308b03; color: #308b04; color: #308b05; color: #308b06; color: #308b07; color: #308b08; color: #308b09; color: #308b0a; color: #308b0b; color: #308b0c; color: #308b0d; color: #308b0e; color: #308b0f;\ncolor: #308c00; color: #308c01; color: #308c02; color: #308c03; color: #308c04; color: #308c05; color: #308c06; color: #308c07; color: #308c08; color: #308c09; color: #308c0a; color: #308c0b; color: #308c0c; color: #308c0d; color: #308c0e; color: #308c0f;\ncolor: #308d00; color: #308d01; color: #308d02; color: #308d03; color: #308d04; color: #308d05; color: #308d06; color: #308d07; color: #308d08; color: #308d09; color: #308d0a; color: #308d0b; color: #308d0c; color: #308d0d; color: #308d0e; color: #308d0f;\ncolor: #308e00; color: #308e01; color: #308e02; color: #308e03; color: #308e04; color: #308e05; color: #308e06; color: #308e07; color: #308e08; color: #308e09; color: #308e0a; color: #308e0b; color: #308e0c; color: #308e0d; color: #308e0e; color: #308e0f;\ncolor: #308f00; color: #308f01; color: #308f02; color: #308f03; color: #308f04; color: #308f05; color: #308f06; color: #308f07; color: #308f08; color: #308f09; color: #308f0a; color: #308f0b; color: #308f0c; color: #308f0d; color: #308f0e; color: #308f0f;\ncolor: #309000; color: #309001; color: #309002; color: #309003; color: #309004; color: #309005; color: #309006; color: #309007; color: #309008; color: #309009; color: #30900a; color: #30900b; color: #30900c; color: #30900d; color: #30900e; color: #30900f;\ncolor: #309100; color: #309101; color: #309102; color: #309103; color: #309104; color: #309105; color: #309106; color: #309107; color: #309108; color: #309109; color: #30910a; color: #30910b; color: #30910c; color: #30910d; color: #30910e; color: #30910f;\ncolor: #309200; color: #309201; color: #309202; color: #309203; color: #309204; color: #309205; color: #309206; color: #309207; color: #309208; color: #309209; color: #30920a; color: #30920b; color: #30920c; color: #30920d; color: #30920e; color: #30920f;\ncolor: #309300; color: #309301; color: #309302; color: #309303; color: #309304; color: #309305; color: #309306; color: #309307; color: #309308; color: #309309; color: #30930a; color: #30930b; color: #30930c; color: #30930d; color: #30930e; color: #30930f;\ncolor: #309400; color: #309401; color: #309402; color: #309403; color: #309404; color: #309405; color: #309406; color: #309407; color: #309408; color: #309409; color: #30940a; color: #30940b; color: #30940c; color: #30940d; color: #30940e; color: #30940f;\ncolor: #309500; color: #309501; color: #309502; color: #309503; color: #309504; color: #309505; color: #309506; color: #309507; color: #309508; color: #309509; color: #30950a; color: #30950b; color: #30950c; color: #30950d; color: #30950e; color: #30950f;\ncolor: #309600; color: #309601; color: #309602; color: #309603; color: #309604; color: #309605; color: #309606; color: #309607; color: #309608; color: #309609; color: #30960a; color: #30960b; color: #30960c; color: #30960d; color: #30960e; color: #30960f;\ncolor: #309700; color: #309701; color: #309702; color: #309703; color: #309704; color: #309705; color: #309706; color: #309707; color: #309708; color: #309709; color: #30970a; color: #30970b; color: #30970c; color: #30970d; color: #30970e; color: #30970f;\ncolor: #309800; color: #309801; color: #309802; color: #309803; color: #309804; color: #309805; color: #309806; color: #309807; color: #309808; color: #309809; color: #30980a; color: #30980b; color: #30980c; color: #30980d; color: #30980e; color: #30980f;\ncolor: #309900; color: #309901; color: #309902; color: #309903; color: #309904; color: #309905; color: #309906; color: #309907; color: #309908; color: #309909; color: #30990a; color: #30990b; color: #30990c; color: #30990d; color: #30990e; color: #30990f;\ncolor: #309a00; color: #309a01; color: #309a02; color: #309a03; color: #309a04; color: #309a05; color: #309a06; color: #309a07; color: #309a08; color: #309a09; color: #309a0a; color: #309a0b; color: #309a0c; color: #309a0d; color: #309a0e; color: #309a0f;\ncolor: #309b00; color: #309b01; color: #309b02; color: #309b03; color: #309b04; color: #309b05; color: #309b06; color: #309b07; color: #309b08; color: #309b09; color: #309b0a; color: #309b0b; color: #309b0c; color: #309b0d; color: #309b0e; color: #309b0f;\ncolor: #309c00; color: #309c01; color: #309c02; color: #309c03; color: #309c04; color: #309c05; color: #309c06; color: #309c07; color: #309c08; color: #309c09; color: #309c0a; color: #309c0b; color: #309c0c; color: #309c0d; color: #309c0e; color: #309c0f;\ncolor: #309d00; color: #309d01; color: #309d02; color: #309d03; color: #309d04; color: #309d05; color: #309d06; color: #309d07; color: #309d08; color: #309d09; color: #309d0a; color: #309d0b; color: #309d0c; color: #309d0d; color: #309d0e; color: #309d0f;\ncolor: #309e00; color: #309e01; color: #309e02; color: #309e03; color: #309e04; color: #309e05; color: #309e06; color: #309e07; color: #309e08; color: #309e09; color: #309e0a; color: #309e0b; color: #309e0c; color: #309e0d; color: #309e0e; color: #309e0f;\ncolor: #309f00; color: #309f01; color: #309f02; color: #309f03; color: #309f04; color: #309f05; color: #309f06; color: #309f07; color: #309f08; color: #309f09; color: #309f0a; color: #309f0b; color: #309f0c; color: #309f0d; color: #309f0e; color: #309f0f;\ncolor: #30a000; color: #30a001; color: #30a002; color: #30a003; color: #30a004; color: #30a005; color: #30a006; color: #30a007; color: #30a008; color: #30a009; color: #30a00a; color: #30a00b; color: #30a00c; color: #30a00d; color: #30a00e; color: #30a00f;\ncolor: #30a100; color: #30a101; color: #30a102; color: #30a103; color: #30a104; color: #30a105; color: #30a106; color: #30a107; color: #30a108; color: #30a109; color: #30a10a; color: #30a10b; color: #30a10c; color: #30a10d; color: #30a10e; color: #30a10f;\ncolor: #30a200; color: #30a201; color: #30a202; color: #30a203; color: #30a204; color: #30a205; color: #30a206; color: #30a207; color: #30a208; color: #30a209; color: #30a20a; color: #30a20b; color: #30a20c; color: #30a20d; color: #30a20e; color: #30a20f;\ncolor: #30a300; color: #30a301; color: #30a302; color: #30a303; color: #30a304; color: #30a305; color: #30a306; color: #30a307; color: #30a308; color: #30a309; color: #30a30a; color: #30a30b; color: #30a30c; color: #30a30d; color: #30a30e; color: #30a30f;\ncolor: #30a400; color: #30a401; color: #30a402; color: #30a403; color: #30a404; color: #30a405; color: #30a406; color: #30a407; color: #30a408; color: #30a409; color: #30a40a; color: #30a40b; color: #30a40c; color: #30a40d; color: #30a40e; color: #30a40f;\ncolor: #30a500; color: #30a501; color: #30a502; color: #30a503; color: #30a504; color: #30a505; color: #30a506; color: #30a507; color: #30a508; color: #30a509; color: #30a50a; color: #30a50b; color: #30a50c; color: #30a50d; color: #30a50e; color: #30a50f;\ncolor: #30a600; color: #30a601; color: #30a602; color: #30a603; color: #30a604; color: #30a605; color: #30a606; color: #30a607; color: #30a608; color: #30a609; color: #30a60a; color: #30a60b; color: #30a60c; color: #30a60d; color: #30a60e; color: #30a60f;\ncolor: #30a700; color: #30a701; color: #30a702; color: #30a703; color: #30a704; color: #30a705; color: #30a706; color: #30a707; color: #30a708; color: #30a709; color: #30a70a; color: #30a70b; color: #30a70c; color: #30a70d; color: #30a70e; color: #30a70f;\ncolor: #30a800; color: #30a801; color: #30a802; color: #30a803; color: #30a804; color: #30a805; color: #30a806; color: #30a807; color: #30a808; color: #30a809; color: #30a80a; color: #30a80b; color: #30a80c; color: #30a80d; color: #30a80e; color: #30a80f;\ncolor: #30a900; color: #30a901; color: #30a902; color: #30a903; color: #30a904; color: #30a905; color: #30a906; color: #30a907; color: #30a908; color: #30a909; color: #30a90a; color: #30a90b; color: #30a90c; color: #30a90d; color: #30a90e; color: #30a90f;\ncolor: #30aa00; color: #30aa01; color: #30aa02; color: #30aa03; color: #30aa04; color: #30aa05; color: #30aa06; color: #30aa07; color: #30aa08; color: #30aa09; color: #30aa0a; color: #30aa0b; color: #30aa0c; color: #30aa0d; color: #30aa0e; color: #30aa0f;\ncolor: #30ab00; color: #30ab01; color: #30ab02; color: #30ab03; color: #30ab04; color: #30ab05; color: #30ab06; color: #30ab07; color: #30ab08; color: #30ab09; color: #30ab0a; color: #30ab0b; color: #30ab0c; color: #30ab0d; color: #30ab0e; color: #30ab0f;\ncolor: #30ac00; color: #30ac01; color: #30ac02; color: #30ac03; color: #30ac04; color: #30ac05; color: #30ac06; color: #30ac07; color: #30ac08; color: #30ac09; color: #30ac0a; color: #30ac0b; color: #30ac0c; color: #30ac0d; color: #30ac0e; color: #30ac0f;\ncolor: #30ad00; color: #30ad01; color: #30ad02; color: #30ad03; color: #30ad04; color: #30ad05; color: #30ad06; color: #30ad07; color: #30ad08; color: #30ad09; color: #30ad0a; color: #30ad0b; color: #30ad0c; color: #30ad0d; color: #30ad0e; color: #30ad0f;\ncolor: #30ae00; color: #30ae01; color: #30ae02; color: #30ae03; color: #30ae04; color: #30ae05; color: #30ae06; color: #30ae07; color: #30ae08; color: #30ae09; color: #30ae0a; color: #30ae0b; color: #30ae0c; color: #30ae0d; color: #30ae0e; color: #30ae0f;\ncolor: #30af00; color: #30af01; color: #30af02; color: #30af03; color: #30af04; color: #30af05; color: #30af06; color: #30af07; color: #30af08; color: #30af09; color: #30af0a; color: #30af0b; color: #30af0c; color: #30af0d; color: #30af0e; color: #30af0f;\ncolor: #30b000; color: #30b001; color: #30b002; color: #30b003; color: #30b004; color: #30b005; color: #30b006; color: #30b007; color: #30b008; color: #30b009; color: #30b00a; color: #30b00b; color: #30b00c; color: #30b00d; color: #30b00e; color: #30b00f;\ncolor: #30b100; color: #30b101; color: #30b102; color: #30b103; color: #30b104; color: #30b105; color: #30b106; color: #30b107; color: #30b108; color: #30b109; color: #30b10a; color: #30b10b; color: #30b10c; color: #30b10d; color: #30b10e; color: #30b10f;\ncolor: #30b200; color: #30b201; color: #30b202; color: #30b203; color: #30b204; color: #30b205; color: #30b206; color: #30b207; color: #30b208; color: #30b209; color: #30b20a; color: #30b20b; color: #30b20c; color: #30b20d; color: #30b20e; color: #30b20f;\ncolor: #30b300; color: #30b301; color: #30b302; color: #30b303; color: #30b304; color: #30b305; color: #30b306; color: #30b307; color: #30b308; color: #30b309; color: #30b30a; color: #30b30b; color: #30b30c; color: #30b30d; color: #30b30e; color: #30b30f;\ncolor: #30b400; color: #30b401; color: #30b402; color: #30b403; color: #30b404; color: #30b405; color: #30b406; color: #30b407; color: #30b408; color: #30b409; color: #30b40a; color: #30b40b; color: #30b40c; color: #30b40d; color: #30b40e; color: #30b40f;\ncolor: #30b500; color: #30b501; color: #30b502; color: #30b503; color: #30b504; color: #30b505; color: #30b506; color: #30b507; color: #30b508; color: #30b509; color: #30b50a; color: #30b50b; color: #30b50c; color: #30b50d; color: #30b50e; color: #30b50f;\ncolor: #30b600; color: #30b601; color: #30b602; color: #30b603; color: #30b604; color: #30b605; color: #30b606; color: #30b607; color: #30b608; color: #30b609; color: #30b60a; color: #30b60b; color: #30b60c; color: #30b60d; color: #30b60e; color: #30b60f;\ncolor: #30b700; color: #30b701; color: #30b702; color: #30b703; color: #30b704; color: #30b705; color: #30b706; color: #30b707; color: #30b708; color: #30b709; color: #30b70a; color: #30b70b; color: #30b70c; color: #30b70d; color: #30b70e; color: #30b70f;\ncolor: #30b800; color: #30b801; color: #30b802; color: #30b803; color: #30b804; color: #30b805; color: #30b806; color: #30b807; color: #30b808; color: #30b809; color: #30b80a; color: #30b80b; color: #30b80c; color: #30b80d; color: #30b80e; color: #30b80f;\ncolor: #30b900; color: #30b901; color: #30b902; color: #30b903; color: #30b904; color: #30b905; color: #30b906; color: #30b907; color: #30b908; color: #30b909; color: #30b90a; color: #30b90b; color: #30b90c; color: #30b90d; color: #30b90e; color: #30b90f;\ncolor: #30ba00; color: #30ba01; color: #30ba02; color: #30ba03; color: #30ba04; color: #30ba05; color: #30ba06; color: #30ba07; color: #30ba08; color: #30ba09; color: #30ba0a; color: #30ba0b; color: #30ba0c; color: #30ba0d; color: #30ba0e; color: #30ba0f;\ncolor: #30bb00; color: #30bb01; color: #30bb02; color: #30bb03; color: #30bb04; color: #30bb05; color: #30bb06; color: #30bb07; color: #30bb08; color: #30bb09; color: #30bb0a; color: #30bb0b; color: #30bb0c; color: #30bb0d; color: #30bb0e; color: #30bb0f;\ncolor: #30bc00; color: #30bc01; color: #30bc02; color: #30bc03; color: #30bc04; color: #30bc05; color: #30bc06; color: #30bc07; color: #30bc08; color: #30bc09; color: #30bc0a; color: #30bc0b; color: #30bc0c; color: #30bc0d; color: #30bc0e; color: #30bc0f;\ncolor: #30bd00; color: #30bd01; color: #30bd02; color: #30bd03; color: #30bd04; color: #30bd05; color: #30bd06; color: #30bd07; color: #30bd08; color: #30bd09; color: #30bd0a; color: #30bd0b; color: #30bd0c; color: #30bd0d; color: #30bd0e; color: #30bd0f;\ncolor: #30be00; color: #30be01; color: #30be02; color: #30be03; color: #30be04; color: #30be05; color: #30be06; color: #30be07; color: #30be08; color: #30be09; color: #30be0a; color: #30be0b; color: #30be0c; color: #30be0d; color: #30be0e; color: #30be0f;\ncolor: #30bf00; color: #30bf01; color: #30bf02; color: #30bf03; color: #30bf04; color: #30bf05; color: #30bf06; color: #30bf07; color: #30bf08; color: #30bf09; color: #30bf0a; color: #30bf0b; color: #30bf0c; color: #30bf0d; color: #30bf0e; color: #30bf0f;\ncolor: #30c000; color: #30c001; color: #30c002; color: #30c003; color: #30c004; color: #30c005; color: #30c006; color: #30c007; color: #30c008; color: #30c009; color: #30c00a; color: #30c00b; color: #30c00c; color: #30c00d; color: #30c00e; color: #30c00f;\ncolor: #30c100; color: #30c101; color: #30c102; color: #30c103; color: #30c104; color: #30c105; color: #30c106; color: #30c107; color: #30c108; color: #30c109; color: #30c10a; color: #30c10b; color: #30c10c; color: #30c10d; color: #30c10e; color: #30c10f;\ncolor: #30c200; color: #30c201; color: #30c202; color: #30c203; color: #30c204; color: #30c205; color: #30c206; color: #30c207; color: #30c208; color: #30c209; color: #30c20a; color: #30c20b; color: #30c20c; color: #30c20d; color: #30c20e; color: #30c20f;\ncolor: #30c300; color: #30c301; color: #30c302; color: #30c303; color: #30c304; color: #30c305; color: #30c306; color: #30c307; color: #30c308; color: #30c309; color: #30c30a; color: #30c30b; color: #30c30c; color: #30c30d; color: #30c30e; color: #30c30f;\ncolor: #30c400; color: #30c401; color: #30c402; color: #30c403; color: #30c404; color: #30c405; color: #30c406; color: #30c407; color: #30c408; color: #30c409; color: #30c40a; color: #30c40b; color: #30c40c; color: #30c40d; color: #30c40e; color: #30c40f;\ncolor: #30c500; color: #30c501; color: #30c502; color: #30c503; color: #30c504; color: #30c505; color: #30c506; color: #30c507; color: #30c508; color: #30c509; color: #30c50a; color: #30c50b; color: #30c50c; color: #30c50d; color: #30c50e; color: #30c50f;\ncolor: #30c600; color: #30c601; color: #30c602; color: #30c603; color: #30c604; color: #30c605; color: #30c606; color: #30c607; color: #30c608; color: #30c609; color: #30c60a; color: #30c60b; color: #30c60c; color: #30c60d; color: #30c60e; color: #30c60f;\ncolor: #30c700; color: #30c701; color: #30c702; color: #30c703; color: #30c704; color: #30c705; color: #30c706; color: #30c707; color: #30c708; color: #30c709; color: #30c70a; color: #30c70b; color: #30c70c; color: #30c70d; color: #30c70e; color: #30c70f;\ncolor: #30c800; color: #30c801; color: #30c802; color: #30c803; color: #30c804; color: #30c805; color: #30c806; color: #30c807; color: #30c808; color: #30c809; color: #30c80a; color: #30c80b; color: #30c80c; color: #30c80d; color: #30c80e; color: #30c80f;\ncolor: #30c900; color: #30c901; color: #30c902; color: #30c903; color: #30c904; color: #30c905; color: #30c906; color: #30c907; color: #30c908; color: #30c909; color: #30c90a; color: #30c90b; color: #30c90c; color: #30c90d; color: #30c90e; color: #30c90f;\ncolor: #30ca00; color: #30ca01; color: #30ca02; color: #30ca03; color: #30ca04; color: #30ca05; color: #30ca06; color: #30ca07; color: #30ca08; color: #30ca09; color: #30ca0a; color: #30ca0b; color: #30ca0c; color: #30ca0d; color: #30ca0e; color: #30ca0f;\ncolor: #30cb00; color: #30cb01; color: #30cb02; color: #30cb03; color: #30cb04; color: #30cb05; color: #30cb06; color: #30cb07; color: #30cb08; color: #30cb09; color: #30cb0a; color: #30cb0b; color: #30cb0c; color: #30cb0d; color: #30cb0e; color: #30cb0f;\ncolor: #30cc00; color: #30cc01; color: #30cc02; color: #30cc03; color: #30cc04; color: #30cc05; color: #30cc06; color: #30cc07; color: #30cc08; color: #30cc09; color: #30cc0a; color: #30cc0b; color: #30cc0c; color: #30cc0d; color: #30cc0e; color: #30cc0f;\ncolor: #30cd00; color: #30cd01; color: #30cd02; color: #30cd03; color: #30cd04; color: #30cd05; color: #30cd06; color: #30cd07; color: #30cd08; color: #30cd09; color: #30cd0a; color: #30cd0b; color: #30cd0c; color: #30cd0d; color: #30cd0e; color: #30cd0f;\ncolor: #30ce00; color: #30ce01; color: #30ce02; color: #30ce03; color: #30ce04; color: #30ce05; color: #30ce06; color: #30ce07; color: #30ce08; color: #30ce09; color: #30ce0a; color: #30ce0b; color: #30ce0c; color: #30ce0d; color: #30ce0e; color: #30ce0f;\ncolor: #30cf00; color: #30cf01; color: #30cf02; color: #30cf03; color: #30cf04; color: #30cf05; color: #30cf06; color: #30cf07; color: #30cf08; color: #30cf09; color: #30cf0a; color: #30cf0b; color: #30cf0c; color: #30cf0d; color: #30cf0e; color: #30cf0f;\ncolor: #30d000; color: #30d001; color: #30d002; color: #30d003; color: #30d004; color: #30d005; color: #30d006; color: #30d007; color: #30d008; color: #30d009; color: #30d00a; color: #30d00b; color: #30d00c; color: #30d00d; color: #30d00e; color: #30d00f;\ncolor: #30d100; color: #30d101; color: #30d102; color: #30d103; color: #30d104; color: #30d105; color: #30d106; color: #30d107; color: #30d108; color: #30d109; color: #30d10a; color: #30d10b; color: #30d10c; color: #30d10d; color: #30d10e; color: #30d10f;\ncolor: #30d200; color: #30d201; color: #30d202; color: #30d203; color: #30d204; color: #30d205; color: #30d206; color: #30d207; color: #30d208; color: #30d209; color: #30d20a; color: #30d20b; color: #30d20c; color: #30d20d; color: #30d20e; color: #30d20f;\ncolor: #30d300; color: #30d301; color: #30d302; color: #30d303; color: #30d304; color: #30d305; color: #30d306; color: #30d307; color: #30d308; color: #30d309; color: #30d30a; color: #30d30b; color: #30d30c; color: #30d30d; color: #30d30e; color: #30d30f;\ncolor: #30d400; color: #30d401; color: #30d402; color: #30d403; color: #30d404; color: #30d405; color: #30d406; color: #30d407; color: #30d408; color: #30d409; color: #30d40a; color: #30d40b; color: #30d40c; color: #30d40d; color: #30d40e; color: #30d40f;\ncolor: #30d500; color: #30d501; color: #30d502; color: #30d503; color: #30d504; color: #30d505; color: #30d506; color: #30d507; color: #30d508; color: #30d509; color: #30d50a; color: #30d50b; color: #30d50c; color: #30d50d; color: #30d50e; color: #30d50f;\ncolor: #30d600; color: #30d601; color: #30d602; color: #30d603; color: #30d604; color: #30d605; color: #30d606; color: #30d607; color: #30d608; color: #30d609; color: #30d60a; color: #30d60b; color: #30d60c; color: #30d60d; color: #30d60e; color: #30d60f;\ncolor: #30d700; color: #30d701; color: #30d702; color: #30d703; color: #30d704; color: #30d705; color: #30d706; color: #30d707; color: #30d708; color: #30d709; color: #30d70a; color: #30d70b; color: #30d70c; color: #30d70d; color: #30d70e; color: #30d70f;\ncolor: #30d800; color: #30d801; color: #30d802; color: #30d803; color: #30d804; color: #30d805; color: #30d806; color: #30d807; color: #30d808; color: #30d809; color: #30d80a; color: #30d80b; color: #30d80c; color: #30d80d; color: #30d80e; color: #30d80f;\ncolor: #30d900; color: #30d901; color: #30d902; color: #30d903; color: #30d904; color: #30d905; color: #30d906; color: #30d907; color: #30d908; color: #30d909; color: #30d90a; color: #30d90b; color: #30d90c; color: #30d90d; color: #30d90e; color: #30d90f;\ncolor: #30da00; color: #30da01; color: #30da02; color: #30da03; color: #30da04; color: #30da05; color: #30da06; color: #30da07; color: #30da08; color: #30da09; color: #30da0a; color: #30da0b; color: #30da0c; color: #30da0d; color: #30da0e; color: #30da0f;\ncolor: #30db00; color: #30db01; color: #30db02; color: #30db03; color: #30db04; color: #30db05; color: #30db06; color: #30db07; color: #30db08; color: #30db09; color: #30db0a; color: #30db0b; color: #30db0c; color: #30db0d; color: #30db0e; color: #30db0f;\ncolor: #30dc00; color: #30dc01; color: #30dc02; color: #30dc03; color: #30dc04; color: #30dc05; color: #30dc06; color: #30dc07; color: #30dc08; color: #30dc09; color: #30dc0a; color: #30dc0b; color: #30dc0c; color: #30dc0d; color: #30dc0e; color: #30dc0f;\ncolor: #30dd00; color: #30dd01; color: #30dd02; color: #30dd03; color: #30dd04; color: #30dd05; color: #30dd06; color: #30dd07; color: #30dd08; color: #30dd09; color: #30dd0a; color: #30dd0b; color: #30dd0c; color: #30dd0d; color: #30dd0e; color: #30dd0f;\ncolor: #30de00; color: #30de01; color: #30de02; color: #30de03; color: #30de04; color: #30de05; color: #30de06; color: #30de07; color: #30de08; color: #30de09; color: #30de0a; color: #30de0b; color: #30de0c; color: #30de0d; color: #30de0e; color: #30de0f;\ncolor: #30df00; color: #30df01; color: #30df02; color: #30df03; color: #30df04; color: #30df05; color: #30df06; color: #30df07; color: #30df08; color: #30df09; color: #30df0a; color: #30df0b; color: #30df0c; color: #30df0d; color: #30df0e; color: #30df0f;\ncolor: #30e000; color: #30e001; color: #30e002; color: #30e003; color: #30e004; color: #30e005; color: #30e006; color: #30e007; color: #30e008; color: #30e009; color: #30e00a; color: #30e00b; color: #30e00c; color: #30e00d; color: #30e00e; color: #30e00f;\ncolor: #30e100; color: #30e101; color: #30e102; color: #30e103; color: #30e104; color: #30e105; color: #30e106; color: #30e107; color: #30e108; color: #30e109; color: #30e10a; color: #30e10b; color: #30e10c; color: #30e10d; color: #30e10e; color: #30e10f;\ncolor: #30e200; color: #30e201; color: #30e202; color: #30e203; color: #30e204; color: #30e205; color: #30e206; color: #30e207; color: #30e208; color: #30e209; color: #30e20a; color: #30e20b; color: #30e20c; color: #30e20d; color: #30e20e; color: #30e20f;\ncolor: #30e300; color: #30e301; color: #30e302; color: #30e303; color: #30e304; color: #30e305; color: #30e306; color: #30e307; color: #30e308; color: #30e309; color: #30e30a; color: #30e30b; color: #30e30c; color: #30e30d; color: #30e30e; color: #30e30f;\ncolor: #30e400; color: #30e401; color: #30e402; color: #30e403; color: #30e404; color: #30e405; color: #30e406; color: #30e407; color: #30e408; color: #30e409; color: #30e40a; color: #30e40b; color: #30e40c; color: #30e40d; color: #30e40e; color: #30e40f;\ncolor: #30e500; color: #30e501; color: #30e502; color: #30e503; color: #30e504; color: #30e505; color: #30e506; color: #30e507; color: #30e508; color: #30e509; color: #30e50a; color: #30e50b; color: #30e50c; color: #30e50d; color: #30e50e; color: #30e50f;\ncolor: #30e600; color: #30e601; color: #30e602; color: #30e603; color: #30e604; color: #30e605; color: #30e606; color: #30e607; color: #30e608; color: #30e609; color: #30e60a; color: #30e60b; color: #30e60c; color: #30e60d; color: #30e60e; color: #30e60f;\ncolor: #30e700; color: #30e701; color: #30e702; color: #30e703; color: #30e704; color: #30e705; color: #30e706; color: #30e707; color: #30e708; color: #30e709; color: #30e70a; color: #30e70b; color: #30e70c; color: #30e70d; color: #30e70e; color: #30e70f;\ncolor: #30e800; color: #30e801; color: #30e802; color: #30e803; color: #30e804; color: #30e805; color: #30e806; color: #30e807; color: #30e808; color: #30e809; color: #30e80a; color: #30e80b; color: #30e80c; color: #30e80d; color: #30e80e; color: #30e80f;\ncolor: #30e900; color: #30e901; color: #30e902; color: #30e903; color: #30e904; color: #30e905; color: #30e906; color: #30e907; color: #30e908; color: #30e909; color: #30e90a; color: #30e90b; color: #30e90c; color: #30e90d; color: #30e90e; color: #30e90f;\ncolor: #30ea00; color: #30ea01; color: #30ea02; color: #30ea03; color: #30ea04; color: #30ea05; color: #30ea06; color: #30ea07; color: #30ea08; color: #30ea09; color: #30ea0a; color: #30ea0b; color: #30ea0c; color: #30ea0d; color: #30ea0e; color: #30ea0f;\ncolor: #30eb00; color: #30eb01; color: #30eb02; color: #30eb03; color: #30eb04; color: #30eb05; color: #30eb06; color: #30eb07; color: #30eb08; color: #30eb09; color: #30eb0a; color: #30eb0b; color: #30eb0c; color: #30eb0d; color: #30eb0e; color: #30eb0f;\ncolor: #30ec00; color: #30ec01; color: #30ec02; color: #30ec03; color: #30ec04; color: #30ec05; color: #30ec06; color: #30ec07; color: #30ec08; color: #30ec09; color: #30ec0a; color: #30ec0b; color: #30ec0c; color: #30ec0d; color: #30ec0e; color: #30ec0f;\ncolor: #30ed00; color: #30ed01; color: #30ed02; color: #30ed03; color: #30ed04; color: #30ed05; color: #30ed06; color: #30ed07; color: #30ed08; color: #30ed09; color: #30ed0a; color: #30ed0b; color: #30ed0c; color: #30ed0d; color: #30ed0e; color: #30ed0f;\ncolor: #30ee00; color: #30ee01; color: #30ee02; color: #30ee03; color: #30ee04; color: #30ee05; color: #30ee06; color: #30ee07; color: #30ee08; color: #30ee09; color: #30ee0a; color: #30ee0b; color: #30ee0c; color: #30ee0d; color: #30ee0e; color: #30ee0f;\ncolor: #30ef00; color: #30ef01; color: #30ef02; color: #30ef03; color: #30ef04; color: #30ef05; color: #30ef06; color: #30ef07; color: #30ef08; color: #30ef09; color: #30ef0a; color: #30ef0b; color: #30ef0c; color: #30ef0d; color: #30ef0e; color: #30ef0f;\ncolor: #30f000; color: #30f001; color: #30f002; color: #30f003; color: #30f004; color: #30f005; color: #30f006; color: #30f007; color: #30f008; color: #30f009; color: #30f00a; color: #30f00b; color: #30f00c; color: #30f00d; color: #30f00e; color: #30f00f;\ncolor: #30f100; color: #30f101; color: #30f102; color: #30f103; color: #30f104; color: #30f105; color: #30f106; color: #30f107; color: #30f108; color: #30f109; color: #30f10a; color: #30f10b; color: #30f10c; color: #30f10d; color: #30f10e; color: #30f10f;\ncolor: #30f200; color: #30f201; color: #30f202; color: #30f203; color: #30f204; color: #30f205; color: #30f206; color: #30f207; color: #30f208; color: #30f209; color: #30f20a; color: #30f20b; color: #30f20c; color: #30f20d; color: #30f20e; color: #30f20f;\ncolor: #30f300; color: #30f301; color: #30f302; color: #30f303; color: #30f304; color: #30f305; color: #30f306; color: #30f307; color: #30f308; color: #30f309; color: #30f30a; color: #30f30b; color: #30f30c; color: #30f30d; color: #30f30e; color: #30f30f;\ncolor: #30f400; color: #30f401; color: #30f402; color: #30f403; color: #30f404; color: #30f405; color: #30f406; color: #30f407; color: #30f408; color: #30f409; color: #30f40a; color: #30f40b; color: #30f40c; color: #30f40d; color: #30f40e; color: #30f40f;\ncolor: #30f500; color: #30f501; color: #30f502; color: #30f503; color: #30f504; color: #30f505; color: #30f506; color: #30f507; color: #30f508; color: #30f509; color: #30f50a; color: #30f50b; color: #30f50c; color: #30f50d; color: #30f50e; color: #30f50f;\ncolor: #30f600; color: #30f601; color: #30f602; color: #30f603; color: #30f604; color: #30f605; color: #30f606; color: #30f607; color: #30f608; color: #30f609; color: #30f60a; color: #30f60b; color: #30f60c; color: #30f60d; color: #30f60e; color: #30f60f;\ncolor: #30f700; color: #30f701; color: #30f702; color: #30f703; color: #30f704; color: #30f705; color: #30f706; color: #30f707; color: #30f708; color: #30f709; color: #30f70a; color: #30f70b; color: #30f70c; color: #30f70d; color: #30f70e; color: #30f70f;\ncolor: #30f800; color: #30f801; color: #30f802; color: #30f803; color: #30f804; color: #30f805; color: #30f806; color: #30f807; color: #30f808; color: #30f809; color: #30f80a; color: #30f80b; color: #30f80c; color: #30f80d; color: #30f80e; color: #30f80f;\ncolor: #30f900; color: #30f901; color: #30f902; color: #30f903; color: #30f904; color: #30f905; color: #30f906; color: #30f907; color: #30f908; color: #30f909; color: #30f90a; color: #30f90b; color: #30f90c; color: #30f90d; color: #30f90e; color: #30f90f;\ncolor: #30fa00; color: #30fa01; color: #30fa02; color: #30fa03; color: #30fa04; color: #30fa05; color: #30fa06; color: #30fa07; color: #30fa08; color: #30fa09; color: #30fa0a; color: #30fa0b; color: #30fa0c; color: #30fa0d; color: #30fa0e; color: #30fa0f;\ncolor: #30fb00; color: #30fb01; color: #30fb02; color: #30fb03; color: #30fb04; color: #30fb05; color: #30fb06; color: #30fb07; color: #30fb08; color: #30fb09; color: #30fb0a; color: #30fb0b; color: #30fb0c; color: #30fb0d; color: #30fb0e; color: #30fb0f;\ncolor: #30fc00; color: #30fc01; color: #30fc02; color: #30fc03; color: #30fc04; color: #30fc05; color: #30fc06; color: #30fc07; color: #30fc08; color: #30fc09; color: #30fc0a; color: #30fc0b; color: #30fc0c; color: #30fc0d; color: #30fc0e; color: #30fc0f;\ncolor: #30fd00; color: #30fd01; color: #30fd02; color: #30fd03; color: #30fd04; color: #30fd05; color: #30fd06; color: #30fd07; color: #30fd08; color: #30fd09; color: #30fd0a; color: #30fd0b; color: #30fd0c; color: #30fd0d; color: #30fd0e; color: #30fd0f;\ncolor: #30fe00; color: #30fe01; color: #30fe02; color: #30fe03; color: #30fe04; color: #30fe05; color: #30fe06; color: #30fe07; color: #30fe08; color: #30fe09; color: #30fe0a; color: #30fe0b; color: #30fe0c; color: #30fe0d; color: #30fe0e; color: #30fe0f;\ncolor: #30ff00; color: #30ff01; color: #30ff02; color: #30ff03; color: #30ff04; color: #30ff05; color: #30ff06; color: #30ff07; color: #30ff08; color: #30ff09; color: #30ff0a; color: #30ff0b; color: #30ff0c; color: #30ff0d; color: #30ff0e; color: #30ff0f; }\n"
  },
  {
    "path": ".vim/bundle/vim-cucumber/compiler/cucumber.vim",
    "content": "\" Vim compiler file\n\" Compiler:\tCucumber\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 Aug 09\n\nif exists(\"current_compiler\")\n  finish\nendif\nlet current_compiler = \"cucumber\"\n\nif exists(\":CompilerSet\") != 2\t\t\" older Vim always used :setlocal\n  command -nargs=* CompilerSet setlocal <args>\nendif\n\nlet s:cpo_save = &cpo\nset cpo-=C\n\nCompilerSet makeprg=cucumber\n\nCompilerSet errorformat=\n      \\%W%m\\ (Cucumber::Undefined),\n      \\%E%m\\ (%.%#),\n      \\%Z%f:%l,\n      \\%Z%f:%l:%.%#\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim:set sw=2 sts=2:\n"
  },
  {
    "path": ".vim/bundle/vim-cucumber/ftdetect/cucumber.vim",
    "content": "\" Cucumber\nautocmd BufNewFile,BufReadPost *.feature,*.story set filetype=cucumber\n"
  },
  {
    "path": ".vim/bundle/vim-cucumber/ftplugin/cucumber.vim",
    "content": "\" Vim filetype plugin\n\" Language:\tCucumber\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 Aug 09\n\n\" Only do this when not done yet for this buffer\nif (exists(\"b:did_ftplugin\"))\n  finish\nendif\nlet b:did_ftplugin = 1\n\nsetlocal formatoptions-=t formatoptions+=croql\nsetlocal comments=:# commentstring=#\\ %s\nsetlocal omnifunc=CucumberComplete\n\nlet b:undo_ftplugin = \"setl fo< com< cms< ofu<\"\n\nlet b:cucumber_root = expand('%:p:h:s?.*[\\/]\\%(features\\|stories\\)\\zs[\\/].*??')\n\nif !exists(\"g:no_plugin_maps\") && !exists(\"g:no_cucumber_maps\")\n  nnoremap <silent><buffer> <C-]>       :<C-U>exe <SID>jump('edit',v:count)<CR>\n  nnoremap <silent><buffer> [<C-D>      :<C-U>exe <SID>jump('edit',v:count)<CR>\n  nnoremap <silent><buffer> ]<C-D>      :<C-U>exe <SID>jump('edit',v:count)<CR>\n  nnoremap <silent><buffer> <C-W>]      :<C-U>exe <SID>jump('split',v:count)<CR>\n  nnoremap <silent><buffer> <C-W><C-]>  :<C-U>exe <SID>jump('split',v:count)<CR>\n  nnoremap <silent><buffer> <C-W>d      :<C-U>exe <SID>jump('split',v:count)<CR>\n  nnoremap <silent><buffer> <C-W><C-D>  :<C-U>exe <SID>jump('split',v:count)<CR>\n  nnoremap <silent><buffer> <C-W>}      :<C-U>exe <SID>jump('pedit',v:count)<CR>\n  nnoremap <silent><buffer> [d          :<C-U>exe <SID>jump('pedit',v:count)<CR>\n  nnoremap <silent><buffer> ]d          :<C-U>exe <SID>jump('pedit',v:count)<CR>\n  let b:undo_ftplugin .=\n        \\ \"|sil! nunmap <buffer> <C-]>\" .\n        \\ \"|sil! nunmap <buffer> [<C-D>\" .\n        \\ \"|sil! nunmap <buffer> ]<C-D>\" .\n        \\ \"|sil! nunmap <buffer> <C-W>]\" .\n        \\ \"|sil! nunmap <buffer> <C-W><C-]>\" .\n        \\ \"|sil! nunmap <buffer> <C-W>d\" .\n        \\ \"|sil! nunmap <buffer> <C-W><C-D>\" .\n        \\ \"|sil! nunmap <buffer> <C-W>}\" .\n        \\ \"|sil! nunmap <buffer> [d\" .\n        \\ \"|sil! nunmap <buffer> ]d\"\nendif\n\nfunction! s:jump(command,count)\n  let steps = s:steps('.')\n  if len(steps) == 0 || len(steps) < a:count\n    return 'echoerr \"No matching step found\"'\n  elseif len(steps) > 1 && !a:count\n    return 'echoerr \"Multiple matching steps found\"'\n  else\n    let c = a:count ? a:count-1 : 0\n    return a:command.' +'.steps[c][1].' '.escape(steps[c][0],' %#')\n  endif\nendfunction\n\nfunction! s:allsteps()\n  let step_pattern = '\\C^\\s*\\K\\k*\\>\\s*(\\=\\s*\\zs\\S.\\{-\\}\\ze\\s*)\\=\\s*\\%(do\\|{\\)\\s*\\%(|[^|]*|\\s*\\)\\=\\%($\\|#\\)'\n  let steps = []\n  for file in split(glob(b:cucumber_root.'/**/*.rb'),\"\\n\")\n    let lines = readfile(file)\n    let num = 0\n    for line in lines\n      let num += 1\n      if line =~ step_pattern\n        let type = matchstr(line,'\\w\\+')\n        let steps += [[file,num,type,matchstr(line,step_pattern)]]\n      endif\n    endfor\n  endfor\n  return steps\nendfunction\n\nfunction! s:steps(lnum)\n  let c = match(getline(a:lnum), '\\S') + 1\n  while synIDattr(synID(a:lnum,c,1),'name') !~# '^$\\|Region$'\n    let c = c + 1\n  endwhile\n  let step = matchstr(getline(a:lnum)[c-1 : -1],'^\\s*\\zs.\\{-\\}\\ze\\s*$')\n  return filter(s:allsteps(),'s:stepmatch(v:val[3],step)')\nendfunction\n\nfunction! s:stepmatch(receiver,target)\n  if a:receiver =~ '^[''\"].*[''\"]$'\n    let pattern = '^'.escape(substitute(a:receiver[1:-2],'$\\w\\+','(.*)','g'),'/').'$'\n  elseif a:receiver =~ '^/.*/$'\n    let pattern = a:receiver[1:-2]\n  elseif a:receiver =~ '^%r..*.$'\n    let pattern = escape(a:receiver[3:-2],'/')\n  else\n    return 0\n  endif\n  try\n    let vimpattern = substitute(substitute(pattern,'\\\\\\@<!(?:','%(','g'),'\\\\\\@<!\\*?','{-}','g')\n    if a:target =~# '\\v'.vimpattern\n      return 1\n    endif\n  catch\n  endtry\n  if has(\"ruby\") && pattern !~ '\\\\\\@<!#{'\n    ruby VIM.command(\"return #{if (begin; Kernel.eval('/'+VIM.evaluate('pattern')+'/'); rescue SyntaxError; end) === VIM.evaluate('a:target') then 1 else 0 end}\")\n  else\n    return 0\n  endif\nendfunction\n\nfunction! s:bsub(target,pattern,replacement)\n  return  substitute(a:target,'\\C\\\\\\@<!'.a:pattern,a:replacement,'g')\nendfunction\n\nfunction! CucumberComplete(findstart,base) abort\n  let indent = indent('.')\n  let group = synIDattr(synID(line('.'),indent+1,1),'name')\n  let type = matchstr(group,'\\Ccucumber\\zs\\%(Given\\|When\\|Then\\)')\n  let e = matchend(getline('.'),'^\\s*\\S\\+\\s')\n  if type == '' || col('.') < col('$') || e < 0\n    return -1\n  endif\n  if a:findstart\n    return e\n  endif\n  let steps = []\n  for step in s:allsteps()\n    if step[2] ==# type\n      if step[3] =~ '^[''\"]'\n        let steps += [step[3][1:-2]]\n      elseif step[3] =~ '^/\\^.*\\$/$'\n        let pattern = step[3][2:-3]\n        let pattern = substitute(pattern,'\\C^(?:|I )','I ','')\n        let pattern = s:bsub(pattern,'\\\\[Sw]','w')\n        let pattern = s:bsub(pattern,'\\\\d','1')\n        let pattern = s:bsub(pattern,'\\\\[sWD]',' ')\n        let pattern = s:bsub(pattern,'\\[\\^\\\\\\=\"\\]','_')\n        let pattern = s:bsub(pattern,'[[:alnum:]. _-][?*]?\\=','')\n        let pattern = s:bsub(pattern,'\\[\\([^^]\\).\\{-\\}\\]','\\1')\n        let pattern = s:bsub(pattern,'+?\\=','')\n        let pattern = s:bsub(pattern,'(\\([[:alnum:]. -]\\{-\\}\\))','\\1')\n        let pattern = s:bsub(pattern,'\\\\\\([[:punct:]]\\)','\\1')\n        if pattern !~ '[\\\\()*?]'\n          let steps += [pattern]\n        endif\n      endif\n    endif\n  endfor\n  call filter(steps,'strpart(v:val,0,strlen(a:base)) ==# a:base')\n  return sort(steps)\nendfunction\n\n\" vim:set sts=2 sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-cucumber/indent/cucumber.vim",
    "content": "\" Vim indent file\n\" Language:\tCucumber\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 May 21\n\nif exists(\"b:did_indent\")\n  finish\nendif\nlet b:did_indent = 1\n\nsetlocal autoindent\nsetlocal indentexpr=GetCucumberIndent()\nsetlocal indentkeys=o,O,*<Return>,<:>,0<Bar>,0#,=,!^F\n\nlet b:undo_indent = 'setl ai< inde< indk<'\n\n\" Only define the function once.\nif exists(\"*GetCucumberIndent\")\n  finish\nendif\n\nfunction! s:syn(lnum)\n  return synIDattr(synID(a:lnum,1+indent(a:lnum),1),'name')\nendfunction\n\nfunction! GetCucumberIndent()\n  let line  = getline(prevnonblank(v:lnum-1))\n  let cline = getline(v:lnum)\n  let nline = getline(nextnonblank(v:lnum+1))\n  let syn = s:syn(prevnonblank(v:lnum-1))\n  let csyn = s:syn(v:lnum)\n  let nsyn = s:syn(nextnonblank(v:lnum+1))\n  if csyn ==# 'cucumberFeature' || cline =~# '^\\s*Feature:'\n    \" feature heading\n    return 0\n  elseif csyn ==# 'cucumberExamples' || cline =~# '^\\s*\\%(Examples\\|Scenarios\\):'\n    \" examples heading\n    return 2 * &sw\n  elseif csyn =~# '^cucumber\\%(Background\\|Scenario\\|ScenarioOutline\\)$' || cline =~# '^\\s*\\%(Background\\|Scenario\\|Scenario Outline\\):'\n    \" background, scenario or outline heading\n    return &sw\n  elseif syn ==# 'cucumberFeature' || line =~# '^\\s*Feature:'\n    \" line after feature heading\n    return &sw\n  elseif syn ==# 'cucumberExamples' || line =~# '^\\s*\\%(Examples\\|Scenarios\\):'\n    \" line after examples heading\n    return 3 * &sw\n  elseif syn =~# '^cucumber\\%(Background\\|Scenario\\|ScenarioOutline\\)$' || line =~# '^\\s*\\%(Background\\|Scenario\\|Scenario Outline\\):'\n    \" line after background, scenario or outline heading\n    return 2 * &sw\n  elseif cline =~# '^\\s*[@#]' && (nsyn == 'cucumberFeature' || nline =~# '^\\s*Feature:' || indent(prevnonblank(v:lnum-1)) <= 0)\n    \" tag or comment before a feature heading\n    return 0\n  elseif cline =~# '^\\s*@'\n    \" other tags\n    return &sw\n  elseif cline =~# '^\\s*[#|]' && line =~# '^\\s*|'\n    \" mid-table\n    \" preserve indent\n    return indent(prevnonblank(v:lnum-1))\n  elseif cline =~# '^\\s*|' && line =~# '^\\s*[^|]'\n    \" first line of a table, relative indent\n    return indent(prevnonblank(v:lnum-1)) + &sw\n  elseif cline =~# '^\\s*[^|]' && line =~# '^\\s*|'\n    \" line after a table, relative unindent\n    return indent(prevnonblank(v:lnum-1)) - &sw\n  elseif cline =~# '^\\s*#' && getline(v:lnum-1) =~ '^\\s*$' && (nsyn =~# '^cucumber\\%(Background\\|Scenario\\|ScenarioOutline\\)$' || nline =~# '^\\s*\\%(Background\\|Scenario\\|Scenario Outline\\):')\n    \" comments on scenarios\n    return &sw\n  endif\n  return indent(prevnonblank(v:lnum-1))\nendfunction\n\n\" vim:set sts=2 sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-cucumber/syntax/cucumber.vim",
    "content": "\" Vim syntax file\n\" Language:     Cucumber\n\" Maintainer:   Tim Pope <vimNOSPAM@tpope.org>\n\" Filenames:    *.feature\n\" Last Change:\t2010 May 21\n\nif exists(\"b:current_syntax\")\n    finish\nendif\nsyn case match\nsyn sync minlines=20\n\nlet g:cucumber_languages = {\n      \\\"en\": {\"and\": \"And\\\\>\", \"background\": \"Background\\\\>\", \"but\": \"But\\\\>\", \"examples\": \"Scenarios\\\\>\\\\|Examples\\\\>\", \"feature\": \"Business Need\\\\>\\\\|Feature\\\\>\\\\|Ability\\\\>\", \"given\": \"Given\\\\>\", \"scenario\": \"Scenario\\\\>\", \"scenario_outline\": \"Scenario Template\\\\>\\\\|Scenario Outline\\\\>\", \"then\": \"Then\\\\>\", \"when\": \"When\\\\>\"},\n      \\\"ar\": {\"and\": \"\\\\%u0648\\\\>\", \"background\": \"\\\\%u0627\\\\%u0644\\\\%u062e\\\\%u0644\\\\%u0641\\\\%u064a\\\\%u0629\\\\>\", \"but\": \"\\\\%u0644\\\\%u0643\\\\%u0646\\\\>\", \"examples\": \"\\\\%u0627\\\\%u0645\\\\%u062b\\\\%u0644\\\\%u0629\\\\>\", \"feature\": \"\\\\%u062e\\\\%u0627\\\\%u0635\\\\%u064a\\\\%u0629\\\\>\", \"given\": \"\\\\%u0628\\\\%u0641\\\\%u0631\\\\%u0636\\\\>\", \"scenario\": \"\\\\%u0633\\\\%u064a\\\\%u0646\\\\%u0627\\\\%u0631\\\\%u064a\\\\%u0648\\\\>\", \"scenario_outline\": \"\\\\%u0633\\\\%u064a\\\\%u0646\\\\%u0627\\\\%u0631\\\\%u064a\\\\%u0648 \\\\%u0645\\\\%u062e\\\\%u0637\\\\%u0637\\\\>\", \"then\": \"\\\\%u0627\\\\%u0630\\\\%u0627\\\\%u064b\\\\>\\\\|\\\\%u062b\\\\%u0645\\\\>\", \"when\": \"\\\\%u0639\\\\%u0646\\\\%u062f\\\\%u0645\\\\%u0627\\\\>\\\\|\\\\%u0645\\\\%u062a\\\\%u0649\\\\>\"},\n      \\\"bg\": {\"and\": \"\\\\%u0418\\\\>\", \"background\": \"\\\\%u041f\\\\%u0440\\\\%u0435\\\\%u0434\\\\%u0438\\\\%u0441\\\\%u0442\\\\%u043e\\\\%u0440\\\\%u0438\\\\%u044f\\\\>\", \"but\": \"\\\\%u041d\\\\%u043e\\\\>\", \"examples\": \"\\\\%u041f\\\\%u0440\\\\%u0438\\\\%u043c\\\\%u0435\\\\%u0440\\\\%u0438\\\\>\", \"feature\": \"\\\\%u0424\\\\%u0443\\\\%u043d\\\\%u043a\\\\%u0446\\\\%u0438\\\\%u043e\\\\%u043d\\\\%u0430\\\\%u043b\\\\%u043d\\\\%u043e\\\\%u0441\\\\%u0442\\\\>\", \"given\": \"\\\\%u0414\\\\%u0430\\\\%u0434\\\\%u0435\\\\%u043d\\\\%u043e\\\\>\", \"scenario\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0439\\\\>\", \"scenario_outline\": \"\\\\%u0420\\\\%u0430\\\\%u043c\\\\%u043a\\\\%u0430 \\\\%u043d\\\\%u0430 \\\\%u0441\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0439\\\\>\", \"then\": \"\\\\%u0422\\\\%u043e\\\\>\", \"when\": \"\\\\%u041a\\\\%u043e\\\\%u0433\\\\%u0430\\\\%u0442\\\\%u043e\\\\>\"},\n      \\\"bm\": {\"and\": \"Dan\\\\>\", \"background\": \"Latar Belakang\\\\>\", \"but\": \"Tetapi\\\\>\", \"examples\": \"Contoh \\\\>\", \"feature\": \"Fungsi\\\\>\", \"given\": \"Bagi\\\\>\", \"scenario\": \"Senario\\\\>\", \"scenario_outline\": \"Menggariskan Senario \\\\>\", \"then\": \"Kemudian\\\\>\", \"when\": \"Apabila\\\\>\"},\n      \\\"ca\": {\"and\": \"I\\\\>\", \"background\": \"Antecedents\\\\>\\\\|Rerefons\\\\>\", \"but\": \"Per\\\\%u00f2\\\\>\", \"examples\": \"Exemples\\\\>\", \"feature\": \"Caracter\\\\%u00edstica\\\\>\\\\|Funcionalitat\\\\>\", \"given\": \"At\\\\%u00e8s\\\\>\\\\|Donada\\\\>\\\\|Donat\\\\>\\\\|Atesa\\\\>\", \"scenario\": \"Escenari\\\\>\", \"scenario_outline\": \"Esquema de l'escenari\\\\>\", \"then\": \"Aleshores\\\\>\\\\|Cal\\\\>\", \"when\": \"Quan\\\\>\"},\n      \\\"cs\": {\"and\": \"A tak\\\\%u00e9\\\\>\\\\|A\\\\>\", \"background\": \"Pozad\\\\%u00ed\\\\>\\\\|Kontext\\\\>\", \"but\": \"Ale\\\\>\", \"examples\": \"P\\\\%u0159\\\\%u00edklady\\\\>\", \"feature\": \"Po\\\\%u017eadavek\\\\>\", \"given\": \"Za p\\\\%u0159edpokladu\\\\>\\\\|Pokud\\\\>\", \"scenario\": \"Sc\\\\%u00e9n\\\\%u00e1\\\\%u0159\\\\>\", \"scenario_outline\": \"N\\\\%u00e1\\\\%u010drt Sc\\\\%u00e9n\\\\%u00e1\\\\%u0159e\\\\>\\\\|Osnova sc\\\\%u00e9n\\\\%u00e1\\\\%u0159e\\\\>\", \"then\": \"Pak\\\\>\", \"when\": \"Kdy\\\\%u017e\\\\>\"},\n      \\\"cy-GB\": {\"and\": \"A\\\\>\", \"background\": \"Cefndir\\\\>\", \"but\": \"Ond\\\\>\", \"examples\": \"Enghreifftiau\\\\>\", \"feature\": \"Arwedd\\\\>\", \"given\": \"Anrhegedig a\\\\>\", \"scenario\": \"Scenario\\\\>\", \"scenario_outline\": \"Scenario Amlinellol\\\\>\", \"then\": \"Yna\\\\>\", \"when\": \"Pryd\\\\>\"},\n      \\\"da\": {\"and\": \"Og\\\\>\", \"background\": \"Baggrund\\\\>\", \"but\": \"Men\\\\>\", \"examples\": \"Eksempler\\\\>\", \"feature\": \"Egenskab\\\\>\", \"given\": \"Givet\\\\>\", \"scenario\": \"Scenarie\\\\>\", \"scenario_outline\": \"Abstrakt Scenario\\\\>\", \"then\": \"S\\\\%u00e5\\\\>\", \"when\": \"N\\\\%u00e5r\\\\>\"},\n      \\\"de\": {\"and\": \"Und\\\\>\", \"background\": \"Grundlage\\\\>\", \"but\": \"Aber\\\\>\", \"examples\": \"Beispiele\\\\>\", \"feature\": \"Funktionalit\\\\%u00e4t\\\\>\", \"given\": \"Gegeben sei\\\\>\\\\|Angenommen\\\\>\", \"scenario\": \"Szenario\\\\>\", \"scenario_outline\": \"Szenariogrundriss\\\\>\", \"then\": \"Dann\\\\>\", \"when\": \"Wenn\\\\>\"},\n      \\\"el\": {\"and\": \"\\\\%u039a\\\\%u03b1\\\\%u03b9\\\\>\", \"background\": \"\\\\%u03a5\\\\%u03c0\\\\%u03cc\\\\%u03b2\\\\%u03b1\\\\%u03b8\\\\%u03c1\\\\%u03bf\\\\>\", \"but\": \"\\\\%u0391\\\\%u03bb\\\\%u03bb\\\\%u03ac\\\\>\", \"examples\": \"\\\\%u03a0\\\\%u03b1\\\\%u03c1\\\\%u03b1\\\\%u03b4\\\\%u03b5\\\\%u03af\\\\%u03b3\\\\%u03bc\\\\%u03b1\\\\%u03c4\\\\%u03b1\\\\>\\\\|\\\\%u03a3\\\\%u03b5\\\\%u03bd\\\\%u03ac\\\\%u03c1\\\\%u03b9\\\\%u03b1\\\\>\", \"feature\": \"\\\\%u0394\\\\%u03c5\\\\%u03bd\\\\%u03b1\\\\%u03c4\\\\%u03cc\\\\%u03c4\\\\%u03b7\\\\%u03c4\\\\%u03b1\\\\>\\\\|\\\\%u039b\\\\%u03b5\\\\%u03b9\\\\%u03c4\\\\%u03bf\\\\%u03c5\\\\%u03c1\\\\%u03b3\\\\%u03af\\\\%u03b1\\\\>\", \"given\": \"\\\\%u0394\\\\%u03b5\\\\%u03b4\\\\%u03bf\\\\%u03bc\\\\%u03ad\\\\%u03bd\\\\%u03bf\\\\%u03c5 \\\\%u03cc\\\\%u03c4\\\\%u03b9\\\\>\\\\|\\\\%u0394\\\\%u03b5\\\\%u03b4\\\\%u03bf\\\\%u03bc\\\\%u03ad\\\\%u03bd\\\\%u03bf\\\\%u03c5\\\\>\", \"scenario\": \"\\\\%u03a3\\\\%u03b5\\\\%u03bd\\\\%u03ac\\\\%u03c1\\\\%u03b9\\\\%u03bf\\\\>\", \"scenario_outline\": \"\\\\%u03a0\\\\%u03b5\\\\%u03c1\\\\%u03b9\\\\%u03b3\\\\%u03c1\\\\%u03b1\\\\%u03c6\\\\%u03ae \\\\%u03a3\\\\%u03b5\\\\%u03bd\\\\%u03b1\\\\%u03c1\\\\%u03af\\\\%u03bf\\\\%u03c5\\\\>\", \"then\": \"\\\\%u03a4\\\\%u03cc\\\\%u03c4\\\\%u03b5\\\\>\", \"when\": \"\\\\%u038c\\\\%u03c4\\\\%u03b1\\\\%u03bd\\\\>\"},\n      \\\"en-Scouse\": {\"and\": \"An\\\\>\", \"background\": \"Dis is what went down\\\\>\", \"but\": \"Buh\\\\>\", \"examples\": \"Examples\\\\>\", \"feature\": \"Feature\\\\>\", \"given\": \"Youse know when youse got\\\\>\\\\|Givun\\\\>\", \"scenario\": \"The thing of it is\\\\>\", \"scenario_outline\": \"Wharrimean is\\\\>\", \"then\": \"Den youse gotta\\\\>\\\\|Dun\\\\>\", \"when\": \"Youse know like when\\\\>\\\\|Wun\\\\>\"},\n      \\\"en-au\": {\"and\": \"Too right\\\\>\", \"background\": \"First off\\\\>\", \"but\": \"Yeah nah\\\\>\", \"examples\": \"You'll wanna\\\\>\", \"feature\": \"Pretty much\\\\>\", \"given\": \"Y'know\\\\>\", \"scenario\": \"Awww, look mate\\\\>\", \"scenario_outline\": \"Reckon it's like\\\\>\", \"then\": \"But at the end of the day I reckon\\\\>\", \"when\": \"It's just unbelievable\\\\>\"},\n      \\\"en-lol\": {\"and\": \"AN\\\\>\", \"background\": \"B4\\\\>\", \"but\": \"BUT\\\\>\", \"examples\": \"EXAMPLZ\\\\>\", \"feature\": \"OH HAI\\\\>\", \"given\": \"I CAN HAZ\\\\>\", \"scenario\": \"MISHUN\\\\>\", \"scenario_outline\": \"MISHUN SRSLY\\\\>\", \"then\": \"DEN\\\\>\", \"when\": \"WEN\\\\>\"},\n      \\\"en-old\": {\"and\": \"Ond\\\\>\\\\|7\\\\>\", \"background\": \"\\\\%u00c6r\\\\>\\\\|Aer\\\\>\", \"but\": \"Ac\\\\>\", \"examples\": \"Se \\\\%u00f0e\\\\>\\\\|Se \\\\%u00fee\\\\>\\\\|Se the\\\\>\", \"feature\": \"Hw\\\\%u00e6t\\\\>\\\\|Hwaet\\\\>\", \"given\": \"\\\\%u00d0urh\\\\>\\\\|\\\\%u00deurh\\\\>\\\\|Thurh\\\\>\", \"scenario\": \"Swa\\\\>\", \"scenario_outline\": \"Swa hw\\\\%u00e6r swa\\\\>\\\\|Swa hwaer swa\\\\>\", \"then\": \"\\\\%u00d0a \\\\%u00f0e\\\\>\\\\|\\\\%u00dea \\\\%u00fee\\\\>\\\\|\\\\%u00dea\\\\>\\\\|\\\\%u00d0a\\\\>\\\\|Tha the\\\\>\\\\|Tha\\\\>\", \"when\": \"\\\\%u00d0a\\\\>\\\\|\\\\%u00dea\\\\>\\\\|Tha\\\\>\"},\n      \\\"en-pirate\": {\"and\": \"Aye\\\\>\", \"background\": \"Yo-ho-ho\\\\>\", \"but\": \"Avast!\\\\>\", \"examples\": \"Dead men tell no tales\\\\>\", \"feature\": \"Ahoy matey!\\\\>\", \"given\": \"Gangway!\\\\>\", \"scenario\": \"Heave to\\\\>\", \"scenario_outline\": \"Shiver me timbers\\\\>\", \"then\": \"Let go and haul\\\\>\", \"when\": \"Blimey!\\\\>\"},\n      \\\"en-tx\": {\"and\": \"And y'all\\\\>\", \"background\": \"Background\\\\>\", \"but\": \"But y'all\\\\>\", \"examples\": \"Examples\\\\>\", \"feature\": \"Feature\\\\>\", \"given\": \"Given y'all\\\\>\", \"scenario\": \"Scenario\\\\>\", \"scenario_outline\": \"All y'all\\\\>\", \"then\": \"Then y'all\\\\>\", \"when\": \"When y'all\\\\>\"},\n      \\\"eo\": {\"and\": \"Kaj\\\\>\", \"background\": \"Fono\\\\>\", \"but\": \"Sed\\\\>\", \"examples\": \"Ekzemploj\\\\>\", \"feature\": \"Trajto\\\\>\", \"given\": \"Donita\\\\%u0135o\\\\>\", \"scenario\": \"Scenaro\\\\>\", \"scenario_outline\": \"Konturo de la scenaro\\\\>\", \"then\": \"Do\\\\>\", \"when\": \"Se\\\\>\"},\n      \\\"es\": {\"and\": \"Y\\\\>\", \"background\": \"Antecedentes\\\\>\", \"but\": \"Pero\\\\>\", \"examples\": \"Ejemplos\\\\>\", \"feature\": \"Caracter\\\\%u00edstica\\\\>\", \"given\": \"Dadas\\\\>\\\\|Dados\\\\>\\\\|Dada\\\\>\\\\|Dado\\\\>\", \"scenario\": \"Escenario\\\\>\", \"scenario_outline\": \"Esquema del escenario\\\\>\", \"then\": \"Entonces\\\\>\", \"when\": \"Cuando\\\\>\"},\n      \\\"et\": {\"and\": \"Ja\\\\>\", \"background\": \"Taust\\\\>\", \"but\": \"Kuid\\\\>\", \"examples\": \"Juhtumid\\\\>\", \"feature\": \"Omadus\\\\>\", \"given\": \"Eeldades\\\\>\", \"scenario\": \"Stsenaarium\\\\>\", \"scenario_outline\": \"Raamstsenaarium\\\\>\", \"then\": \"Siis\\\\>\", \"when\": \"Kui\\\\>\"},\n      \\\"fa\": {\"and\": \"\\\\%u0648\\\\>\", \"background\": \"\\\\%u0632\\\\%u0645\\\\%u06cc\\\\%u0646\\\\%u0647\\\\>\", \"but\": \"\\\\%u0627\\\\%u0645\\\\%u0627\\\\>\", \"examples\": \"\\\\%u0646\\\\%u0645\\\\%u0648\\\\%u0646\\\\%u0647 \\\\%u0647\\\\%u0627\\\\>\", \"feature\": \"\\\\%u0648\\\\%u0650\\\\%u06cc\\\\%u0698\\\\%u06af\\\\%u06cc\\\\>\", \"given\": \"\\\\%u0628\\\\%u0627 \\\\%u0641\\\\%u0631\\\\%u0636\\\\>\", \"scenario\": \"\\\\%u0633\\\\%u0646\\\\%u0627\\\\%u0631\\\\%u06cc\\\\%u0648\\\\>\", \"scenario_outline\": \"\\\\%u0627\\\\%u0644\\\\%u06af\\\\%u0648\\\\%u06cc \\\\%u0633\\\\%u0646\\\\%u0627\\\\%u0631\\\\%u06cc\\\\%u0648\\\\>\", \"then\": \"\\\\%u0622\\\\%u0646\\\\%u06af\\\\%u0627\\\\%u0647\\\\>\", \"when\": \"\\\\%u0647\\\\%u0646\\\\%u06af\\\\%u0627\\\\%u0645\\\\%u06cc\\\\>\"},\n      \\\"fi\": {\"and\": \"Ja\\\\>\", \"background\": \"Tausta\\\\>\", \"but\": \"Mutta\\\\>\", \"examples\": \"Tapaukset\\\\>\", \"feature\": \"Ominaisuus\\\\>\", \"given\": \"Oletetaan\\\\>\", \"scenario\": \"Tapaus\\\\>\", \"scenario_outline\": \"Tapausaihio\\\\>\", \"then\": \"Niin\\\\>\", \"when\": \"Kun\\\\>\"},\n      \\\"fr\": {\"and\": \"Et\\\\>\", \"background\": \"Contexte\\\\>\", \"but\": \"Mais\\\\>\", \"examples\": \"Exemples\\\\>\", \"feature\": \"Fonctionnalit\\\\%u00e9\\\\>\", \"given\": \"\\\\%u00c9tant donn\\\\%u00e9es\\\\>\\\\|\\\\%u00c9tant donn\\\\%u00e9s\\\\>\\\\|\\\\%u00c9tant donn\\\\%u00e9e\\\\>\\\\|\\\\%u00c9tant donn\\\\%u00e9\\\\>\\\\|Etant donn\\\\%u00e9es\\\\>\\\\|Etant donn\\\\%u00e9s\\\\>\\\\|Etant donn\\\\%u00e9e\\\\>\\\\|Etant donn\\\\%u00e9\\\\>\\\\|Soit\\\\>\", \"scenario\": \"Sc\\\\%u00e9nario\\\\>\", \"scenario_outline\": \"Plan du sc\\\\%u00e9nario\\\\>\\\\|Plan du Sc\\\\%u00e9nario\\\\>\", \"then\": \"Alors\\\\>\", \"when\": \"Lorsqu'\\\\|Lorsque\\\\>\\\\|Quand\\\\>\"},\n      \\\"gl\": {\"and\": \"E\\\\>\", \"background\": \"Contexto\\\\>\", \"but\": \"Mais\\\\>\\\\|Pero\\\\>\", \"examples\": \"Exemplos\\\\>\", \"feature\": \"Caracter\\\\%u00edstica\\\\>\", \"given\": \"Dadas\\\\>\\\\|Dados\\\\>\\\\|Dada\\\\>\\\\|Dado\\\\>\", \"scenario\": \"Escenario\\\\>\", \"scenario_outline\": \"Esbozo do escenario\\\\>\", \"then\": \"Ent\\\\%u00f3n\\\\>\\\\|Logo\\\\>\", \"when\": \"Cando\\\\>\"},\n      \\\"he\": {\"and\": \"\\\\%u05d5\\\\%u05d2\\\\%u05dd\\\\>\", \"background\": \"\\\\%u05e8\\\\%u05e7\\\\%u05e2\\\\>\", \"but\": \"\\\\%u05d0\\\\%u05d1\\\\%u05dc\\\\>\", \"examples\": \"\\\\%u05d3\\\\%u05d5\\\\%u05d2\\\\%u05de\\\\%u05d0\\\\%u05d5\\\\%u05ea\\\\>\", \"feature\": \"\\\\%u05ea\\\\%u05db\\\\%u05d5\\\\%u05e0\\\\%u05d4\\\\>\", \"given\": \"\\\\%u05d1\\\\%u05d4\\\\%u05d9\\\\%u05e0\\\\%u05ea\\\\%u05df\\\\>\", \"scenario\": \"\\\\%u05ea\\\\%u05e8\\\\%u05d7\\\\%u05d9\\\\%u05e9\\\\>\", \"scenario_outline\": \"\\\\%u05ea\\\\%u05d1\\\\%u05e0\\\\%u05d9\\\\%u05ea \\\\%u05ea\\\\%u05e8\\\\%u05d7\\\\%u05d9\\\\%u05e9\\\\>\", \"then\": \"\\\\%u05d0\\\\%u05d6\\\\%u05d9\\\\>\\\\|\\\\%u05d0\\\\%u05d6\\\\>\", \"when\": \"\\\\%u05db\\\\%u05d0\\\\%u05e9\\\\%u05e8\\\\>\"},\n      \\\"hi\": {\"and\": \"\\\\%u0924\\\\%u0925\\\\%u093e\\\\>\\\\|\\\\%u0914\\\\%u0930\\\\>\", \"background\": \"\\\\%u092a\\\\%u0943\\\\%u0937\\\\%u094d\\\\%u0920\\\\%u092d\\\\%u0942\\\\%u092e\\\\%u093f\\\\>\", \"but\": \"\\\\%u092a\\\\%u0930\\\\>\", \"examples\": \"\\\\%u0909\\\\%u0926\\\\%u093e\\\\%u0939\\\\%u0930\\\\%u0923\\\\>\", \"feature\": \"\\\\%u0930\\\\%u0942\\\\%u092a \\\\%u0932\\\\%u0947\\\\%u0916\\\\>\", \"given\": \"\\\\%u091a\\\\%u0942\\\\%u0902\\\\%u0915\\\\%u093f\\\\>\\\\|\\\\%u092f\\\\%u0926\\\\%u093f\\\\>\\\\|\\\\%u0905\\\\%u0917\\\\%u0930\\\\>\", \"scenario\": \"\\\\%u092a\\\\%u0930\\\\%u093f\\\\%u0926\\\\%u0943\\\\%u0936\\\\%u094d\\\\%u092f\\\\>\", \"scenario_outline\": \"\\\\%u092a\\\\%u0930\\\\%u093f\\\\%u0926\\\\%u0943\\\\%u0936\\\\%u094d\\\\%u092f \\\\%u0930\\\\%u0942\\\\%u092a\\\\%u0930\\\\%u0947\\\\%u0916\\\\%u093e\\\\>\", \"then\": \"\\\\%u0924\\\\%u092c\\\\>\", \"when\": \"\\\\%u091c\\\\%u092c\\\\>\"},\n      \\\"hr\": {\"and\": \"I\\\\>\", \"background\": \"Pozadina\\\\>\", \"but\": \"Ali\\\\>\", \"examples\": \"Scenariji\\\\>\\\\|Primjeri\\\\>\", \"feature\": \"Mogu\\\\%u0107nost\\\\>\\\\|Mogucnost\\\\>\\\\|Osobina\\\\>\", \"given\": \"Zadano\\\\>\\\\|Zadani\\\\>\\\\|Zadan\\\\>\", \"scenario\": \"Scenarij\\\\>\", \"scenario_outline\": \"Koncept\\\\>\\\\|Skica\\\\>\", \"then\": \"Onda\\\\>\", \"when\": \"Kada\\\\>\\\\|Kad\\\\>\"},\n      \\\"hu\": {\"and\": \"\\\\%u00c9s\\\\>\", \"background\": \"H\\\\%u00e1tt\\\\%u00e9r\\\\>\", \"but\": \"De\\\\>\", \"examples\": \"P\\\\%u00e9ld\\\\%u00e1k\\\\>\", \"feature\": \"Jellemz\\\\%u0151\\\\>\", \"given\": \"Amennyiben\\\\>\\\\|Adott\\\\>\", \"scenario\": \"Forgat\\\\%u00f3k\\\\%u00f6nyv\\\\>\", \"scenario_outline\": \"Forgat\\\\%u00f3k\\\\%u00f6nyv v\\\\%u00e1zlat\\\\>\", \"then\": \"Akkor\\\\>\", \"when\": \"Amikor\\\\>\\\\|Majd\\\\>\\\\|Ha\\\\>\"},\n      \\\"id\": {\"and\": \"Dan\\\\>\", \"background\": \"Dasar\\\\>\", \"but\": \"Tapi\\\\>\", \"examples\": \"Contoh\\\\>\", \"feature\": \"Fitur\\\\>\", \"given\": \"Dengan\\\\>\", \"scenario\": \"Skenario\\\\>\", \"scenario_outline\": \"Skenario konsep\\\\>\", \"then\": \"Maka\\\\>\", \"when\": \"Ketika\\\\>\"},\n      \\\"is\": {\"and\": \"Og\\\\>\", \"background\": \"Bakgrunnur\\\\>\", \"but\": \"En\\\\>\", \"examples\": \"Atbur\\\\%u00f0ar\\\\%u00e1sir\\\\>\\\\|D\\\\%u00e6mi\\\\>\", \"feature\": \"Eiginleiki\\\\>\", \"given\": \"Ef\\\\>\", \"scenario\": \"Atbur\\\\%u00f0ar\\\\%u00e1s\\\\>\", \"scenario_outline\": \"L\\\\%u00fdsing Atbur\\\\%u00f0ar\\\\%u00e1sar\\\\>\\\\|L\\\\%u00fdsing D\\\\%u00e6ma\\\\>\", \"then\": \"\\\\%u00de\\\\%u00e1\\\\>\", \"when\": \"\\\\%u00deegar\\\\>\"},\n      \\\"it\": {\"and\": \"E\\\\>\", \"background\": \"Contesto\\\\>\", \"but\": \"Ma\\\\>\", \"examples\": \"Esempi\\\\>\", \"feature\": \"Funzionalit\\\\%u00e0\\\\>\", \"given\": \"Dato\\\\>\\\\|Data\\\\>\\\\|Dati\\\\>\\\\|Date\\\\>\", \"scenario\": \"Scenario\\\\>\", \"scenario_outline\": \"Schema dello scenario\\\\>\", \"then\": \"Allora\\\\>\", \"when\": \"Quando\\\\>\"},\n      \\\"ja\": {\"and\": \"\\\\%u304b\\\\%u3064\", \"background\": \"\\\\%u80cc\\\\%u666f\\\\>\", \"but\": \"\\\\%u3057\\\\%u304b\\\\%u3057\\\\|\\\\%u305f\\\\%u3060\\\\%u3057\\\\|\\\\%u4f46\\\\%u3057\", \"examples\": \"\\\\%u30b5\\\\%u30f3\\\\%u30d7\\\\%u30eb\\\\>\\\\|\\\\%u4f8b\\\\>\", \"feature\": \"\\\\%u30d5\\\\%u30a3\\\\%u30fc\\\\%u30c1\\\\%u30e3\\\\>\\\\|\\\\%u6a5f\\\\%u80fd\\\\>\", \"given\": \"\\\\%u524d\\\\%u63d0\", \"scenario\": \"\\\\%u30b7\\\\%u30ca\\\\%u30ea\\\\%u30aa\\\\>\", \"scenario_outline\": \"\\\\%u30b7\\\\%u30ca\\\\%u30ea\\\\%u30aa\\\\%u30a2\\\\%u30a6\\\\%u30c8\\\\%u30e9\\\\%u30a4\\\\%u30f3\\\\>\\\\|\\\\%u30b7\\\\%u30ca\\\\%u30ea\\\\%u30aa\\\\%u30c6\\\\%u30f3\\\\%u30d7\\\\%u30ec\\\\%u30fc\\\\%u30c8\\\\>\\\\|\\\\%u30b7\\\\%u30ca\\\\%u30ea\\\\%u30aa\\\\%u30c6\\\\%u30f3\\\\%u30d7\\\\%u30ec\\\\>\\\\|\\\\%u30c6\\\\%u30f3\\\\%u30d7\\\\%u30ec\\\\>\", \"then\": \"\\\\%u306a\\\\%u3089\\\\%u3070\", \"when\": \"\\\\%u3082\\\\%u3057\"},\n      \\\"ko\": {\"and\": \"\\\\%uadf8\\\\%ub9ac\\\\%uace0\", \"background\": \"\\\\%ubc30\\\\%uacbd\\\\>\", \"but\": \"\\\\%ud558\\\\%uc9c0\\\\%ub9cc\\\\|\\\\%ub2e8\", \"examples\": \"\\\\%uc608\\\\>\", \"feature\": \"\\\\%uae30\\\\%ub2a5\\\\>\", \"given\": \"\\\\%uc870\\\\%uac74\\\\|\\\\%uba3c\\\\%uc800\", \"scenario\": \"\\\\%uc2dc\\\\%ub098\\\\%ub9ac\\\\%uc624\\\\>\", \"scenario_outline\": \"\\\\%uc2dc\\\\%ub098\\\\%ub9ac\\\\%uc624 \\\\%uac1c\\\\%uc694\\\\>\", \"then\": \"\\\\%uadf8\\\\%ub7ec\\\\%uba74\", \"when\": \"\\\\%ub9cc\\\\%uc77c\\\\|\\\\%ub9cc\\\\%uc57d\"},\n      \\\"lt\": {\"and\": \"Ir\\\\>\", \"background\": \"Kontekstas\\\\>\", \"but\": \"Bet\\\\>\", \"examples\": \"Pavyzd\\\\%u017eiai\\\\>\\\\|Scenarijai\\\\>\\\\|Variantai\\\\>\", \"feature\": \"Savyb\\\\%u0117\\\\>\", \"given\": \"Duota\\\\>\", \"scenario\": \"Scenarijus\\\\>\", \"scenario_outline\": \"Scenarijaus \\\\%u0161ablonas\\\\>\", \"then\": \"Tada\\\\>\", \"when\": \"Kai\\\\>\"},\n      \\\"lu\": {\"and\": \"an\\\\>\\\\|a\\\\>\", \"background\": \"Hannergrond\\\\>\", \"but\": \"m\\\\%u00e4\\\\>\\\\|awer\\\\>\", \"examples\": \"Beispiller\\\\>\", \"feature\": \"Funktionalit\\\\%u00e9it\\\\>\", \"given\": \"ugeholl\\\\>\", \"scenario\": \"Szenario\\\\>\", \"scenario_outline\": \"Plang vum Szenario\\\\>\", \"then\": \"dann\\\\>\", \"when\": \"wann\\\\>\"},\n      \\\"lv\": {\"and\": \"Un\\\\>\", \"background\": \"Situ\\\\%u0101cija\\\\>\\\\|Konteksts\\\\>\", \"but\": \"Bet\\\\>\", \"examples\": \"Piem\\\\%u0113ri\\\\>\\\\|Paraugs\\\\>\", \"feature\": \"Funkcionalit\\\\%u0101te\\\\>\\\\|F\\\\%u012b\\\\%u010da\\\\>\", \"given\": \"Kad\\\\>\", \"scenario\": \"Scen\\\\%u0101rijs\\\\>\", \"scenario_outline\": \"Scen\\\\%u0101rijs p\\\\%u0113c parauga\\\\>\", \"then\": \"Tad\\\\>\", \"when\": \"Ja\\\\>\"},\n      \\\"nl\": {\"and\": \"En\\\\>\", \"background\": \"Achtergrond\\\\>\", \"but\": \"Maar\\\\>\", \"examples\": \"Voorbeelden\\\\>\", \"feature\": \"Functionaliteit\\\\>\", \"given\": \"Gegeven\\\\>\\\\|Stel\\\\>\", \"scenario\": \"Scenario\\\\>\", \"scenario_outline\": \"Abstract Scenario\\\\>\", \"then\": \"Dan\\\\>\", \"when\": \"Als\\\\>\"},\n      \\\"no\": {\"and\": \"Og\\\\>\", \"background\": \"Bakgrunn\\\\>\", \"but\": \"Men\\\\>\", \"examples\": \"Eksempler\\\\>\", \"feature\": \"Egenskap\\\\>\", \"given\": \"Gitt\\\\>\", \"scenario\": \"Scenario\\\\>\", \"scenario_outline\": \"Abstrakt Scenario\\\\>\\\\|Scenariomal\\\\>\", \"then\": \"S\\\\%u00e5\\\\>\", \"when\": \"N\\\\%u00e5r\\\\>\"},\n      \\\"pl\": {\"and\": \"Oraz\\\\>\\\\|I\\\\>\", \"background\": \"Za\\\\%u0142o\\\\%u017cenia\\\\>\", \"but\": \"Ale\\\\>\", \"examples\": \"Przyk\\\\%u0142ady\\\\>\", \"feature\": \"W\\\\%u0142a\\\\%u015bciwo\\\\%u015b\\\\%u0107\\\\>\\\\|Potrzeba biznesowa\\\\>\\\\|Funkcja\\\\>\\\\|Aspekt\\\\>\", \"given\": \"Zak\\\\%u0142adaj\\\\%u0105c\\\\>\\\\|Maj\\\\%u0105c\\\\>\", \"scenario\": \"Scenariusz\\\\>\", \"scenario_outline\": \"Szablon scenariusza\\\\>\", \"then\": \"Wtedy\\\\>\", \"when\": \"Je\\\\%u017celi\\\\>\\\\|Je\\\\%u015bli\\\\>\\\\|Kiedy\\\\>\\\\|Gdy\\\\>\"},\n      \\\"pt\": {\"and\": \"E\\\\>\", \"background\": \"Cen\\\\%u00e1rio de Fundo\\\\>\\\\|Cenario de Fundo\\\\>\\\\|Contexto\\\\>\\\\|Fundo\\\\>\", \"but\": \"Mas\\\\>\", \"examples\": \"Cen\\\\%u00e1rios\\\\>\\\\|Exemplos\\\\>\\\\|Cenarios\\\\>\", \"feature\": \"Caracter\\\\%u00edstica\\\\>\\\\|Funcionalidade\\\\>\\\\|Caracteristica\\\\>\", \"given\": \"Dadas\\\\>\\\\|Dados\\\\>\\\\|Dada\\\\>\\\\|Dado\\\\>\", \"scenario\": \"Cen\\\\%u00e1rio\\\\>\\\\|Cenario\\\\>\", \"scenario_outline\": \"Delinea\\\\%u00e7\\\\%u00e3o do Cen\\\\%u00e1rio\\\\>\\\\|Esquema do Cen\\\\%u00e1rio\\\\>\\\\|Delineacao do Cenario\\\\>\\\\|Esquema do Cenario\\\\>\", \"then\": \"Ent\\\\%u00e3o\\\\>\\\\|Entao\\\\>\", \"when\": \"Quando\\\\>\"},\n      \\\"ro\": {\"and\": \"\\\\%u015ei\\\\>\\\\|\\\\%u0218i\\\\>\\\\|Si\\\\>\", \"background\": \"Context\\\\>\", \"but\": \"Dar\\\\>\", \"examples\": \"Exemple\\\\>\", \"feature\": \"Func\\\\%u0163ionalitate\\\\>\\\\|Func\\\\%u021bionalitate\\\\>\\\\|Functionalitate\\\\>\", \"given\": \"Da\\\\%u0163i fiind\\\\>\\\\|Da\\\\%u021bi fiind\\\\>\\\\|Dati fiind\\\\>\\\\|Date fiind\\\\>\\\\|Dat fiind\\\\>\", \"scenario\": \"Scenariu\\\\>\", \"scenario_outline\": \"Structur\\\\%u0103 scenariu\\\\>\\\\|Structura scenariu\\\\>\", \"then\": \"Atunci\\\\>\", \"when\": \"C\\\\%u00e2nd\\\\>\\\\|Cand\\\\>\"},\n      \\\"ru\": {\"and\": \"\\\\%u041a \\\\%u0442\\\\%u043e\\\\%u043c\\\\%u0443 \\\\%u0436\\\\%u0435\\\\>\\\\|\\\\%u0422\\\\%u0430\\\\%u043a\\\\%u0436\\\\%u0435\\\\>\\\\|\\\\%u0418\\\\>\", \"background\": \"\\\\%u041f\\\\%u0440\\\\%u0435\\\\%u0434\\\\%u044b\\\\%u0441\\\\%u0442\\\\%u043e\\\\%u0440\\\\%u0438\\\\%u044f\\\\>\\\\|\\\\%u041a\\\\%u043e\\\\%u043d\\\\%u0442\\\\%u0435\\\\%u043a\\\\%u0441\\\\%u0442\\\\>\", \"but\": \"\\\\%u041d\\\\%u043e\\\\>\\\\|\\\\%u0410\\\\>\", \"examples\": \"\\\\%u041f\\\\%u0440\\\\%u0438\\\\%u043c\\\\%u0435\\\\%u0440\\\\%u044b\\\\>\", \"feature\": \"\\\\%u0424\\\\%u0443\\\\%u043d\\\\%u043a\\\\%u0446\\\\%u0438\\\\%u043e\\\\%u043d\\\\%u0430\\\\%u043b\\\\>\\\\|\\\\%u0421\\\\%u0432\\\\%u043e\\\\%u0439\\\\%u0441\\\\%u0442\\\\%u0432\\\\%u043e\\\\>\\\\|\\\\%u0424\\\\%u0443\\\\%u043d\\\\%u043a\\\\%u0446\\\\%u0438\\\\%u044f\\\\>\", \"given\": \"\\\\%u0414\\\\%u043e\\\\%u043f\\\\%u0443\\\\%u0441\\\\%u0442\\\\%u0438\\\\%u043c\\\\>\\\\|\\\\%u041f\\\\%u0443\\\\%u0441\\\\%u0442\\\\%u044c\\\\>\\\\|\\\\%u0414\\\\%u0430\\\\%u043d\\\\%u043e\\\\>\", \"scenario\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0439\\\\>\", \"scenario_outline\": \"\\\\%u0421\\\\%u0442\\\\%u0440\\\\%u0443\\\\%u043a\\\\%u0442\\\\%u0443\\\\%u0440\\\\%u0430 \\\\%u0441\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u044f\\\\>\", \"then\": \"\\\\%u0422\\\\%u043e\\\\%u0433\\\\%u0434\\\\%u0430\\\\>\\\\|\\\\%u0422\\\\%u043e\\\\>\", \"when\": \"\\\\%u041a\\\\%u043e\\\\%u0433\\\\%u0434\\\\%u0430\\\\>\\\\|\\\\%u0415\\\\%u0441\\\\%u043b\\\\%u0438\\\\>\"},\n      \\\"sk\": {\"and\": \"A z\\\\%u00e1rove\\\\%u0148\\\\>\\\\|A taktie\\\\%u017e\\\\>\\\\|A tie\\\\%u017e\\\\>\\\\|A\\\\>\", \"background\": \"Pozadie\\\\>\", \"but\": \"Ale\\\\>\", \"examples\": \"Pr\\\\%u00edklady\\\\>\", \"feature\": \"Po\\\\%u017eiadavka\\\\>\\\\|Vlastnos\\\\%u0165\\\\>\\\\|Funkcia\\\\>\", \"given\": \"Za predpokladu\\\\>\\\\|Pokia\\\\%u013e\\\\>\", \"scenario\": \"Scen\\\\%u00e1r\\\\>\", \"scenario_outline\": \"N\\\\%u00e1\\\\%u010drt Scen\\\\%u00e1ru\\\\>\\\\|N\\\\%u00e1\\\\%u010drt Scen\\\\%u00e1ra\\\\>\\\\|Osnova Scen\\\\%u00e1ra\\\\>\", \"then\": \"Potom\\\\>\\\\|Tak\\\\>\", \"when\": \"Ke\\\\%u010f\\\\>\\\\|Ak\\\\>\"},\n      \\\"sr-Cyrl\": {\"and\": \"\\\\%u0418\\\\>\", \"background\": \"\\\\%u041a\\\\%u043e\\\\%u043d\\\\%u0442\\\\%u0435\\\\%u043a\\\\%u0441\\\\%u0442\\\\>\\\\|\\\\%u041f\\\\%u043e\\\\%u0437\\\\%u0430\\\\%u0434\\\\%u0438\\\\%u043d\\\\%u0430\\\\>\\\\|\\\\%u041e\\\\%u0441\\\\%u043d\\\\%u043e\\\\%u0432\\\\%u0430\\\\>\", \"but\": \"\\\\%u0410\\\\%u043b\\\\%u0438\\\\>\", \"examples\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0458\\\\%u0438\\\\>\\\\|\\\\%u041f\\\\%u0440\\\\%u0438\\\\%u043c\\\\%u0435\\\\%u0440\\\\%u0438\\\\>\", \"feature\": \"\\\\%u0424\\\\%u0443\\\\%u043d\\\\%u043a\\\\%u0446\\\\%u0438\\\\%u043e\\\\%u043d\\\\%u0430\\\\%u043b\\\\%u043d\\\\%u043e\\\\%u0441\\\\%u0442\\\\>\\\\|\\\\%u041c\\\\%u043e\\\\%u0433\\\\%u0443\\\\%u045b\\\\%u043d\\\\%u043e\\\\%u0441\\\\%u0442\\\\>\\\\|\\\\%u041e\\\\%u0441\\\\%u043e\\\\%u0431\\\\%u0438\\\\%u043d\\\\%u0430\\\\>\", \"given\": \"\\\\%u0417\\\\%u0430\\\\%u0434\\\\%u0430\\\\%u0442\\\\%u043e\\\\>\\\\|\\\\%u0417\\\\%u0430\\\\%u0434\\\\%u0430\\\\%u0442\\\\%u0435\\\\>\\\\|\\\\%u0417\\\\%u0430\\\\%u0434\\\\%u0430\\\\%u0442\\\\%u0438\\\\>\", \"scenario\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u043e\\\\>\\\\|\\\\%u041f\\\\%u0440\\\\%u0438\\\\%u043c\\\\%u0435\\\\%u0440\\\\>\", \"scenario_outline\": \"\\\\%u0421\\\\%u0442\\\\%u0440\\\\%u0443\\\\%u043a\\\\%u0442\\\\%u0443\\\\%u0440\\\\%u0430 \\\\%u0441\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0458\\\\%u0430\\\\>\\\\|\\\\%u041a\\\\%u043e\\\\%u043d\\\\%u0446\\\\%u0435\\\\%u043f\\\\%u0442\\\\>\\\\|\\\\%u0421\\\\%u043a\\\\%u0438\\\\%u0446\\\\%u0430\\\\>\", \"then\": \"\\\\%u041e\\\\%u043d\\\\%u0434\\\\%u0430\\\\>\", \"when\": \"\\\\%u041a\\\\%u0430\\\\%u0434\\\\%u0430\\\\>\\\\|\\\\%u041a\\\\%u0430\\\\%u0434\\\\>\"},\n      \\\"sr-Latn\": {\"and\": \"I\\\\>\", \"background\": \"Kontekst\\\\>\\\\|Pozadina\\\\>\\\\|Osnova\\\\>\", \"but\": \"Ali\\\\>\", \"examples\": \"Scenariji\\\\>\\\\|Primeri\\\\>\", \"feature\": \"Mogu\\\\%u0107nost\\\\>\\\\|Funkcionalnost\\\\>\\\\|Mogucnost\\\\>\\\\|Osobina\\\\>\", \"given\": \"Zadato\\\\>\\\\|Zadate\\\\>\\\\|Zatati\\\\>\", \"scenario\": \"Scenario\\\\>\\\\|Primer\\\\>\", \"scenario_outline\": \"Struktura scenarija\\\\>\\\\|Koncept\\\\>\\\\|Skica\\\\>\", \"then\": \"Onda\\\\>\", \"when\": \"Kada\\\\>\\\\|Kad\\\\>\"},\n      \\\"sv\": {\"and\": \"Och\\\\>\", \"background\": \"Bakgrund\\\\>\", \"but\": \"Men\\\\>\", \"examples\": \"Exempel\\\\>\", \"feature\": \"Egenskap\\\\>\", \"given\": \"Givet\\\\>\", \"scenario\": \"Scenario\\\\>\", \"scenario_outline\": \"Abstrakt Scenario\\\\>\\\\|Scenariomall\\\\>\", \"then\": \"S\\\\%u00e5\\\\>\", \"when\": \"N\\\\%u00e4r\\\\>\"},\n      \\\"th\": {\"and\": \"\\\\%u0e41\\\\%u0e25\\\\%u0e30\\\\>\", \"background\": \"\\\\%u0e41\\\\%u0e19\\\\%u0e27\\\\%u0e04\\\\%u0e34\\\\%u0e14\\\\>\", \"but\": \"\\\\%u0e41\\\\%u0e15\\\\%u0e48\\\\>\", \"examples\": \"\\\\%u0e0a\\\\%u0e38\\\\%u0e14\\\\%u0e02\\\\%u0e2d\\\\%u0e07\\\\%u0e40\\\\%u0e2b\\\\%u0e15\\\\%u0e38\\\\%u0e01\\\\%u0e32\\\\%u0e23\\\\%u0e13\\\\%u0e4c\\\\>\\\\|\\\\%u0e0a\\\\%u0e38\\\\%u0e14\\\\%u0e02\\\\%u0e2d\\\\%u0e07\\\\%u0e15\\\\%u0e31\\\\%u0e27\\\\%u0e2d\\\\%u0e22\\\\%u0e48\\\\%u0e32\\\\%u0e07\\\\>\", \"feature\": \"\\\\%u0e04\\\\%u0e27\\\\%u0e32\\\\%u0e21\\\\%u0e15\\\\%u0e49\\\\%u0e2d\\\\%u0e07\\\\%u0e01\\\\%u0e32\\\\%u0e23\\\\%u0e17\\\\%u0e32\\\\%u0e07\\\\%u0e18\\\\%u0e38\\\\%u0e23\\\\%u0e01\\\\%u0e34\\\\%u0e08\\\\>\\\\|\\\\%u0e04\\\\%u0e27\\\\%u0e32\\\\%u0e21\\\\%u0e2a\\\\%u0e32\\\\%u0e21\\\\%u0e32\\\\%u0e23\\\\%u0e16\\\\>\\\\|\\\\%u0e42\\\\%u0e04\\\\%u0e23\\\\%u0e07\\\\%u0e2b\\\\%u0e25\\\\%u0e31\\\\%u0e01\\\\>\", \"given\": \"\\\\%u0e01\\\\%u0e33\\\\%u0e2b\\\\%u0e19\\\\%u0e14\\\\%u0e43\\\\%u0e2b\\\\%u0e49\\\\>\", \"scenario\": \"\\\\%u0e40\\\\%u0e2b\\\\%u0e15\\\\%u0e38\\\\%u0e01\\\\%u0e32\\\\%u0e23\\\\%u0e13\\\\%u0e4c\\\\>\", \"scenario_outline\": \"\\\\%u0e42\\\\%u0e04\\\\%u0e23\\\\%u0e07\\\\%u0e2a\\\\%u0e23\\\\%u0e49\\\\%u0e32\\\\%u0e07\\\\%u0e02\\\\%u0e2d\\\\%u0e07\\\\%u0e40\\\\%u0e2b\\\\%u0e15\\\\%u0e38\\\\%u0e01\\\\%u0e32\\\\%u0e23\\\\%u0e13\\\\%u0e4c\\\\>\\\\|\\\\%u0e2a\\\\%u0e23\\\\%u0e38\\\\%u0e1b\\\\%u0e40\\\\%u0e2b\\\\%u0e15\\\\%u0e38\\\\%u0e01\\\\%u0e32\\\\%u0e23\\\\%u0e13\\\\%u0e4c\\\\>\", \"then\": \"\\\\%u0e14\\\\%u0e31\\\\%u0e07\\\\%u0e19\\\\%u0e31\\\\%u0e49\\\\%u0e19\\\\>\", \"when\": \"\\\\%u0e40\\\\%u0e21\\\\%u0e37\\\\%u0e48\\\\%u0e2d\\\\>\"},\n      \\\"tl\": {\"and\": \"\\\\%u0c2e\\\\%u0c30\\\\%u0c3f\\\\%u0c2f\\\\%u0c41\\\\>\", \"background\": \"\\\\%u0c28\\\\%u0c47\\\\%u0c2a\\\\%u0c25\\\\%u0c4d\\\\%u0c2f\\\\%u0c02\\\\>\", \"but\": \"\\\\%u0c15\\\\%u0c3e\\\\%u0c28\\\\%u0c3f\\\\>\", \"examples\": \"\\\\%u0c09\\\\%u0c26\\\\%u0c3e\\\\%u0c39\\\\%u0c30\\\\%u0c23\\\\%u0c32\\\\%u0c41\\\\>\", \"feature\": \"\\\\%u0c17\\\\%u0c41\\\\%u0c23\\\\%u0c2e\\\\%u0c41\\\\>\", \"given\": \"\\\\%u0c1a\\\\%u0c46\\\\%u0c2a\\\\%u0c4d\\\\%u0c2a\\\\%u0c2c\\\\%u0c21\\\\%u0c3f\\\\%u0c28\\\\%u0c26\\\\%u0c3f\\\\>\", \"scenario\": \"\\\\%u0c38\\\\%u0c28\\\\%u0c4d\\\\%u0c28\\\\%u0c3f\\\\%u0c35\\\\%u0c47\\\\%u0c36\\\\%u0c02\\\\>\", \"scenario_outline\": \"\\\\%u0c15\\\\%u0c25\\\\%u0c28\\\\%u0c02\\\\>\", \"then\": \"\\\\%u0c05\\\\%u0c2a\\\\%u0c4d\\\\%u0c2a\\\\%u0c41\\\\%u0c21\\\\%u0c41\\\\>\", \"when\": \"\\\\%u0c08 \\\\%u0c2a\\\\%u0c30\\\\%u0c3f\\\\%u0c38\\\\%u0c4d\\\\%u0c25\\\\%u0c3f\\\\%u0c24\\\\%u0c3f\\\\%u0c32\\\\%u0c4b\\\\>\"},\n      \\\"tr\": {\"and\": \"Ve\\\\>\", \"background\": \"Ge\\\\%u00e7mi\\\\%u015f\\\\>\", \"but\": \"Fakat\\\\>\\\\|Ama\\\\>\", \"examples\": \"\\\\%u00d6rnekler\\\\>\", \"feature\": \"\\\\%u00d6zellik\\\\>\", \"given\": \"Diyelim ki\\\\>\", \"scenario\": \"Senaryo\\\\>\", \"scenario_outline\": \"Senaryo tasla\\\\%u011f\\\\%u0131\\\\>\", \"then\": \"O zaman\\\\>\", \"when\": \"E\\\\%u011fer ki\\\\>\"},\n      \\\"tt\": {\"and\": \"\\\\%u04ba\\\\%u04d9\\\\%u043c\\\\>\\\\|\\\\%u0412\\\\%u04d9\\\\>\", \"background\": \"\\\\%u041a\\\\%u0435\\\\%u0440\\\\%u0435\\\\%u0448\\\\>\", \"but\": \"\\\\%u041b\\\\%u04d9\\\\%u043a\\\\%u0438\\\\%u043d\\\\>\\\\|\\\\%u04d8\\\\%u043c\\\\%u043c\\\\%u0430\\\\>\", \"examples\": \"\\\\%u04ae\\\\%u0440\\\\%u043d\\\\%u04d9\\\\%u043a\\\\%u043b\\\\%u04d9\\\\%u0440\\\\>\\\\|\\\\%u041c\\\\%u0438\\\\%u0441\\\\%u0430\\\\%u043b\\\\%u043b\\\\%u0430\\\\%u0440\\\\>\", \"feature\": \"\\\\%u04ae\\\\%u0437\\\\%u0435\\\\%u043d\\\\%u0447\\\\%u04d9\\\\%u043b\\\\%u0435\\\\%u043a\\\\%u043b\\\\%u0435\\\\%u043b\\\\%u0435\\\\%u043a\\\\>\\\\|\\\\%u041c\\\\%u04e9\\\\%u043c\\\\%u043a\\\\%u0438\\\\%u043d\\\\%u043b\\\\%u0435\\\\%u043a\\\\>\", \"given\": \"\\\\%u04d8\\\\%u0439\\\\%u0442\\\\%u0438\\\\%u043a\\\\>\", \"scenario\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0439\\\\>\", \"scenario_outline\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0439\\\\%u043d\\\\%u044b\\\\%u04a3 \\\\%u0442\\\\%u04e9\\\\%u0437\\\\%u0435\\\\%u043b\\\\%u0435\\\\%u0448\\\\%u0435\\\\>\", \"then\": \"\\\\%u041d\\\\%u04d9\\\\%u0442\\\\%u0438\\\\%u0497\\\\%u04d9\\\\%u0434\\\\%u04d9\\\\>\", \"when\": \"\\\\%u04d8\\\\%u0433\\\\%u04d9\\\\%u0440\\\\>\"},\n      \\\"uk\": {\"and\": \"\\\\%u0410 \\\\%u0442\\\\%u0430\\\\%u043a\\\\%u043e\\\\%u0436\\\\>\\\\|\\\\%u0422\\\\%u0430\\\\>\\\\|\\\\%u0406\\\\>\", \"background\": \"\\\\%u041f\\\\%u0435\\\\%u0440\\\\%u0435\\\\%u0434\\\\%u0443\\\\%u043c\\\\%u043e\\\\%u0432\\\\%u0430\\\\>\", \"but\": \"\\\\%u0410\\\\%u043b\\\\%u0435\\\\>\", \"examples\": \"\\\\%u041f\\\\%u0440\\\\%u0438\\\\%u043a\\\\%u043b\\\\%u0430\\\\%u0434\\\\%u0438\\\\>\", \"feature\": \"\\\\%u0424\\\\%u0443\\\\%u043d\\\\%u043a\\\\%u0446\\\\%u0456\\\\%u043e\\\\%u043d\\\\%u0430\\\\%u043b\\\\>\", \"given\": \"\\\\%u041f\\\\%u0440\\\\%u0438\\\\%u043f\\\\%u0443\\\\%u0441\\\\%u0442\\\\%u0438\\\\%u043c\\\\%u043e, \\\\%u0449\\\\%u043e\\\\>\\\\|\\\\%u041f\\\\%u0440\\\\%u0438\\\\%u043f\\\\%u0443\\\\%u0441\\\\%u0442\\\\%u0438\\\\%u043c\\\\%u043e\\\\>\\\\|\\\\%u041d\\\\%u0435\\\\%u0445\\\\%u0430\\\\%u0439\\\\>\\\\|\\\\%u0414\\\\%u0430\\\\%u043d\\\\%u043e\\\\>\", \"scenario\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0456\\\\%u0439\\\\>\", \"scenario_outline\": \"\\\\%u0421\\\\%u0442\\\\%u0440\\\\%u0443\\\\%u043a\\\\%u0442\\\\%u0443\\\\%u0440\\\\%u0430 \\\\%u0441\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0456\\\\%u044e\\\\>\", \"then\": \"\\\\%u0422\\\\%u043e\\\\%u0434\\\\%u0456\\\\>\\\\|\\\\%u0422\\\\%u043e\\\\>\", \"when\": \"\\\\%u042f\\\\%u043a\\\\%u0449\\\\%u043e\\\\>\\\\|\\\\%u041a\\\\%u043e\\\\%u043b\\\\%u0438\\\\>\"},\n      \\\"uz\": {\"and\": \"\\\\%u0412\\\\%u0430\\\\>\", \"background\": \"\\\\%u0422\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0445\\\\>\", \"but\": \"\\\\%u041b\\\\%u0435\\\\%u043a\\\\%u0438\\\\%u043d\\\\>\\\\|\\\\%u0411\\\\%u0438\\\\%u0440\\\\%u043e\\\\%u043a\\\\>\\\\|\\\\%u0410\\\\%u043c\\\\%u043c\\\\%u043e\\\\>\", \"examples\": \"\\\\%u041c\\\\%u0438\\\\%u0441\\\\%u043e\\\\%u043b\\\\%u043b\\\\%u0430\\\\%u0440\\\\>\", \"feature\": \"\\\\%u0424\\\\%u0443\\\\%u043d\\\\%u043a\\\\%u0446\\\\%u0438\\\\%u043e\\\\%u043d\\\\%u0430\\\\%u043b\\\\>\", \"given\": \"\\\\%u0410\\\\%u0433\\\\%u0430\\\\%u0440\\\\>\", \"scenario\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0439\\\\>\", \"scenario_outline\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0439 \\\\%u0441\\\\%u0442\\\\%u0440\\\\%u0443\\\\%u043a\\\\%u0442\\\\%u0443\\\\%u0440\\\\%u0430\\\\%u0441\\\\%u0438\\\\>\", \"then\": \"\\\\%u0423\\\\%u043d\\\\%u0434\\\\%u0430\\\\>\", \"when\": \"\\\\%u0410\\\\%u0433\\\\%u0430\\\\%u0440\\\\>\"},\n      \\\"vi\": {\"and\": \"V\\\\%u00e0\\\\>\", \"background\": \"B\\\\%u1ed1i c\\\\%u1ea3nh\\\\>\", \"but\": \"Nh\\\\%u01b0ng\\\\>\", \"examples\": \"D\\\\%u1eef li\\\\%u1ec7u\\\\>\", \"feature\": \"T\\\\%u00ednh n\\\\%u0103ng\\\\>\", \"given\": \"Bi\\\\%u1ebft\\\\>\\\\|Cho\\\\>\", \"scenario\": \"T\\\\%u00ecnh hu\\\\%u1ed1ng\\\\>\\\\|K\\\\%u1ecbch b\\\\%u1ea3n\\\\>\", \"scenario_outline\": \"Khung t\\\\%u00ecnh hu\\\\%u1ed1ng\\\\>\\\\|Khung k\\\\%u1ecbch b\\\\%u1ea3n\\\\>\", \"then\": \"Th\\\\%u00ec\\\\>\", \"when\": \"Khi\\\\>\"},\n      \\\"zh-CN\": {\"and\": \"\\\\%u800c\\\\%u4e14\\\\|\\\\%u5e76\\\\%u4e14\\\\|\\\\%u540c\\\\%u65f6\", \"background\": \"\\\\%u80cc\\\\%u666f\\\\>\", \"but\": \"\\\\%u4f46\\\\%u662f\", \"examples\": \"\\\\%u4f8b\\\\%u5b50\\\\>\", \"feature\": \"\\\\%u529f\\\\%u80fd\\\\>\", \"given\": \"\\\\%u5047\\\\%u5982\\\\|\\\\%u5047\\\\%u8bbe\\\\|\\\\%u5047\\\\%u5b9a\", \"scenario\": \"\\\\%u573a\\\\%u666f\\\\>\\\\|\\\\%u5267\\\\%u672c\\\\>\", \"scenario_outline\": \"\\\\%u573a\\\\%u666f\\\\%u5927\\\\%u7eb2\\\\>\\\\|\\\\%u5267\\\\%u672c\\\\%u5927\\\\%u7eb2\\\\>\", \"then\": \"\\\\%u90a3\\\\%u4e48\", \"when\": \"\\\\%u5f53\"},\n      \\\"zh-TW\": {\"and\": \"\\\\%u800c\\\\%u4e14\\\\|\\\\%u4e26\\\\%u4e14\\\\|\\\\%u540c\\\\%u6642\", \"background\": \"\\\\%u80cc\\\\%u666f\\\\>\", \"but\": \"\\\\%u4f46\\\\%u662f\", \"examples\": \"\\\\%u4f8b\\\\%u5b50\\\\>\", \"feature\": \"\\\\%u529f\\\\%u80fd\\\\>\", \"given\": \"\\\\%u5047\\\\%u5982\\\\|\\\\%u5047\\\\%u8a2d\\\\|\\\\%u5047\\\\%u5b9a\", \"scenario\": \"\\\\%u5834\\\\%u666f\\\\>\\\\|\\\\%u5287\\\\%u672c\\\\>\", \"scenario_outline\": \"\\\\%u5834\\\\%u666f\\\\%u5927\\\\%u7db1\\\\>\\\\|\\\\%u5287\\\\%u672c\\\\%u5927\\\\%u7db1\\\\>\", \"then\": \"\\\\%u90a3\\\\%u9ebc\", \"when\": \"\\\\%u7576\"}}\n\nfunction! s:pattern(key)\n  let language = matchstr(getline(1),'#\\s*language:\\s*\\zs\\S\\+')\n  if &fileencoding == 'latin1' && language == ''\n    let language = 'en'\n  endif\n  if has_key(g:cucumber_languages, language)\n    let languages = [g:cucumber_languages[language]]\n  else\n    let languages = values(g:cucumber_languages)\n  end\n  return '\\<\\%('.join(map(languages,'get(v:val,a:key,\"\\\\%(a\\\\&b\\\\)\")'),'\\|').'\\)'\nendfunction\n\nfunction! s:Add(name)\n  let next = \" skipempty skipwhite nextgroup=\".join(map([\"Region\",\"AndRegion\",\"ButRegion\",\"Comment\",\"String\",\"Table\"],'\"cucumber\".a:name.v:val'),\",\")\n  exe \"syn region cucumber\".a:name.'Region matchgroup=cucumber'.a:name.' start=\"\\%(^\\s*\\)\\@<=\\%('.s:pattern(tolower(a:name)).'\\)\" end=\"$\"'.next\n  exe 'syn region cucumber'.a:name.'AndRegion matchgroup=cucumber'.a:name.'And start=\"\\%(^\\s*\\)\\@<='.s:pattern('and').'\" end=\"$\" contained'.next\n  exe 'syn region cucumber'.a:name.'ButRegion matchgroup=cucumber'.a:name.'But start=\"\\%(^\\s*\\)\\@<='.s:pattern('but').'\" end=\"$\" contained'.next\n  exe 'syn match cucumber'.a:name.'Comment \"\\%(^\\s*\\)\\@<=#.*\" contained'.next\n  exe 'syn region cucumber'.a:name.'String start=+\\%(^\\s*\\)\\@<=\"\"\"+ end=+\"\"\"+ contained'.next\n  exe 'syn match cucumber'.a:name.'Table \"\\%(^\\s*\\)\\@<=|.*\" contained contains=cucumberDelimiter'.next\n  exe 'hi def link cucumber'.a:name.'Comment cucumberComment'\n  exe 'hi def link cucumber'.a:name.'String cucumberString'\n  exe 'hi def link cucumber'.a:name.'But cucumber'.a:name.'And'\n  exe 'hi def link cucumber'.a:name.'And cucumber'.a:name\n  exe 'syn cluster cucumberStepRegions add=cucumber'.a:name.'Region,cucumber'.a:name.'AndRegion,cucumber'.a:name.'ButRegion'\nendfunction\n\nsyn match   cucumberComment  \"\\%(^\\s*\\)\\@<=#.*\"\nsyn match   cucumberComment  \"\\%(\\%^\\s*\\)\\@<=#.*\" contains=cucumberLanguage\nsyn match   cucumberLanguage \"\\%(#\\s*\\)\\@<=language:\" contained\nsyn match   cucumberUnparsed \"\\S.*\" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberTags,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty contained\nsyn match   cucumberUnparsedComment \"#.*\" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberTags,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty contained\n\nexe 'syn match cucumberFeature \"\\%(^\\s*\\)\\@<='.s:pattern('feature').':\" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty'\nexe 'syn match cucumberBackground \"\\%(^\\s*\\)\\@<='.s:pattern('background').':\"'\nexe 'syn match cucumberScenario \"\\%(^\\s*\\)\\@<='.s:pattern('scenario').':\"'\nexe 'syn match cucumberScenarioOutline \"\\%(^\\s*\\)\\@<='.s:pattern('scenario_outline').':\"'\nexe 'syn match cucumberExamples \"\\%(^\\s*\\)\\@<='.s:pattern('examples').':\" nextgroup=cucumberExampleTable skipempty skipwhite'\n\nsyn match   cucumberPlaceholder   \"<[^<>]*>\" contained containedin=@cucumberStepRegions\nsyn match   cucumberExampleTable  \"\\%(^\\s*\\)\\@<=|.*\" contains=cucumberDelimiter\nsyn match   cucumberDelimiter     \"\\\\\\@<!\\%(\\\\\\\\\\)*\\zs|\" contained\nsyn match   cucumberTags          \"\\%(^\\s*\\)\\@<=\\%(@[^@[:space:]]\\+\\s\\+\\)*@[^@[:space:]]\\+\\s*$\" contains=@NoSpell\n\ncall s:Add('Then')\ncall s:Add('When')\ncall s:Add('Given')\n\nhi def link cucumberUnparsedComment   cucumberComment\nhi def link cucumberComment           Comment\nhi def link cucumberLanguage          SpecialComment\nhi def link cucumberFeature           Macro\nhi def link cucumberBackground        Define\nhi def link cucumberScenario          Define\nhi def link cucumberScenarioOutline   Define\nhi def link cucumberExamples          Define\nhi def link cucumberPlaceholder       Constant\nhi def link cucumberDelimiter         Delimiter\nhi def link cucumberTags              Tag\nhi def link cucumberString            String\nhi def link cucumberGiven             Conditional\nhi def link cucumberWhen              Function\nhi def link cucumberThen              Type\n\nlet b:current_syntax = \"cucumber\"\n\n\" vim:set sts=2 sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-dispatch/CONTRIBUTING.markdown",
    "content": "See the [contribution guidelines for pathogen.vim](https://github.com/tpope/vim-pathogen/blob/master/CONTRIBUTING.markdown).\n"
  },
  {
    "path": ".vim/bundle/vim-dispatch/README.markdown",
    "content": "# dispatch.vim\n\nLeverage the power of Vim's compiler plugins without being bound by\nsynchronicity.  Kick off builds and test suites using one of several\nasynchronous adapters (including tmux, screen, iTerm, Windows, and a headless\nmode), and when the job completes, errors will be loaded and parsed\nautomatically.\n\nIf that doesn't excite you, then perhaps [this video][teaser] will change your\nmind.\n\n[teaser]: http://vimeo.com/tpope/vim-dispatch-teaser\n\n## Installation\n\nIf you don't have a preferred installation method, I recommend\ninstalling [pathogen.vim](https://github.com/tpope/vim-pathogen), and\nthen simply copy and paste:\n\n    cd ~/.vim/bundle\n    git clone git://github.com/tpope/vim-dispatch.git\n\n## Usage\n\nThe core of Vim's compiler system is `:make`, a command similar to `:grep`\nthat runs a build tool and parses the resulting errors.  The default build\ntool is of course `make`, but you can switch it (and the associated error\nparser) with `:compiler`.  There are lots of built-in compilers, and they do\nmore than just compile things.  Plus you can make your own.\n\nWe'll start by looking at dispatch.vim's `:make` wrapper `:Make`, and then\nmove on to higher abstractions.\n\n### Foreground builds\n\nKick off quick tasks with `:Make`.  What happens next depends on which adapter\ntakes charge.\n\n* If you're in tmux, a small split will be opened at the bottom.\n* If you have iTerm running, a new tab is opened.\n* On Windows, a minimized cmd.exe window is spawned.\n* Otherwise, you get a plain old `:make` invocation.\n\nWhen the task completes, the window closes, the errors are loaded and parsed,\nand the quickfix window automatically opens.  At no point will your focus be\nstolen.\n\n### Background builds\n\nUse `:Make!` for longer running tasks, like \"run the entire test suite\".\n\n* If you're in tmux or GNU screen, a new window is created in the background.\n* If you have iTerm running, a new tab is opened but not selected.\n* Windows still spawns a minimized cmd.exe window.\n* Otherwise, you get a headless invocation.  You can't see it, but it's\n  running in the background.\n\nYou won't be interrupted with a quickfix window for a background build.\nInstead, open it at your leisure with `:Copen`.\n\nYou can also use `:Copen` on a build that's still running to retrieve and\nparse any errors that have already happened.\n\n### Compiler switching\n\nAs hinted earlier, it's easy to switch compilers.\n\n    :compiler rubyunit\n    :make test/models/user_test.rb\n\nWait, that's still twice as many commands as it needs to be.  Plus, it\nrequires you to make the leap from `testrb` (the executable) to `rubyunit`\n(the compiler plugin).  The `:Dispatch` command looks for a compiler for an\nexecutable and sets it up automatically.\n\n    :Dispatch testrb test/models/user_test.rb\n\nIf no compiler plugin is found, `:Dispatch` simply captures all output.\n\n    :Dispatch bundle install\n\nAs with `:make`, you can use `%` expansions for the current filename.\n\n    :Dispatch rspec %\n\nThe `:Dispatch` command switches the compiler back afterwards, so you can pick\na primary compiler for `:Make`, and use `:Dispatch` for secondary concerns.\n\n### Default dispatch\n\nWith no arguments, `:Dispatch` looks for a `b:dispatch` variable.  You\ncan set it interactively, or in an autocommand:\n\n    autocmd FileType java let b:dispatch = 'javac %'\n\nIf no `b:dispatch` is found, it falls back to `:Make`.\n\n`:Dispatch` makes a great map:\n\n    nnoremap <F9> :Dispatch<CR>\n\n### Focusing\n\nUse `:FocusDispatch` (or just `:Focus`) to temporarily, globally override the\ndefault dispatch:\n\n    :Focus rake spec:models\n\nNow every bare call to `:Dispatch` will call `:Dispatch rake spec:models`.\nYou'll be getting a lot of mileage out of that `:Dispatch` map.\n\nUse `:Focus!` to reset back to the default.\n\n### Spawning interactive processes\n\nSometimes you just want to kick off a process without any output capturing or\nerror parsing.  That's what `:Start` is for:\n\n    :Start lein repl\n\nUnlike `:Make`, the new window will be in focus, since the idea is that you\nwant to interact with it.  Use `:Start!` to launch it in the background.\n\n### Plugin support\n\nUsing dispatch.vim from a plugin is a simple matter of checking for and using\n`:Make` and `:Start` if they're available instead of `:make` and `:!`.  Your\nfavorite plugin already supports it, assuming your favorite plugin is\n[rails.vim](https://github.com/tpope/vim-rails).\n\n## Self-Promotion\n\nLike dispatch.vim?  Follow the repository on\n[GitHub](https://github.com/tpope/vim-dispatch) and vote for it on\n[vim.org](http://www.vim.org/scripts/script.php?script_id=4504).  And if\nyou're feeling especially charitable, follow [tpope](http://tpo.pe/) on\n[Twitter](http://twitter.com/tpope) and\n[GitHub](https://github.com/tpope).\n\n## License\n\nCopyright © Tim Pope.  Distributed under the same terms as Vim itself.\nSee `:help license`.\n"
  },
  {
    "path": ".vim/bundle/vim-dispatch/autoload/dispatch/headless.vim",
    "content": "\" dispatch.vim headless strategy\n\nif exists('g:autoloaded_dispatch_headless')\n  finish\nendif\nlet g:autoloaded_dispatch_headless = 1\n\nfunction! dispatch#headless#handle(request) abort\n  if !a:request.background || &shell !~# 'sh'\n    return 0\n  endif\n  if a:request.action ==# 'make'\n    let command = dispatch#prepare_make(a:request)\n  elseif a:request.action ==# 'start'\n    let command = dispatch#prepare_start(a:request)\n  else\n    return 0\n  endif\n  if &shellredir =~# '%s'\n    let redir = printf(&shellredir, '/dev/null')\n  else\n    let redir = &shellredir . ' ' . '/dev/null'\n  endif\n  echomsg system(&shell.' '.&shellcmdflag.' '.shellescape(command).redir.' &')\n  return !v:shell_error\nendfunction\n\nfunction! dispatch#headless#activate(pid) abort\n  return 0\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-dispatch/autoload/dispatch/iterm.vim",
    "content": "\" dispatch.vim iTerm strategy\n\nif exists('g:autoloaded_dispatch_iterm')\n  finish\nendif\nlet g:autoloaded_dispatch_iterm = 1\n\nfunction! dispatch#iterm#handle(request) abort\n  if $TERM_PROGRAM !=# 'iTerm.app' && !(has('gui_macvim') && has('gui_running'))\n    return 0\n  endif\n  if a:request.action ==# 'make'\n    if !get(a:request, 'background', 0) && !has('gui_running')\n      return 0\n    endif\n    let exec = dispatch#prepare_make(a:request)\n    return dispatch#iterm#spawn(exec, a:request, 0)\n  elseif a:request.action ==# 'start'\n    return dispatch#iterm#spawn(dispatch#prepare_start(a:request), a:request, !a:request.background)\n  endif\nendfunction\n\nfunction! dispatch#iterm#spawn(command, request, activate) abort\n  let script = dispatch#isolate([], dispatch#set_title(a:request), a:command)\n  return s:osascript(\n      \\ 'if application \"iTerm\" is not running',\n      \\   'error',\n      \\ 'end if') && s:osascript(\n      \\ 'tell application \"iTerm\"',\n      \\   'tell the current terminal',\n      \\     'set oldsession to the current session',\n      \\     'tell (make new session)',\n      \\       'set name to ' . s:escape(a:request.title),\n      \\       'set title to ' . s:escape(a:request.command),\n      \\       'exec command ' . s:escape(script),\n      \\       a:request.background ? 'select oldsession' : '',\n      \\     'end tell',\n      \\   'end tell',\n      \\   a:activate ? 'activate' : '',\n      \\ 'end tell')\nendfunction\n\nfunction! dispatch#iterm#activate(pid) abort\n  let tty = matchstr(system('ps -p '.a:pid), 'tty\\S\\+')\n  if !empty(tty)\n    return s:osascript(\n        \\ 'if application \"iTerm\" is not running',\n        \\   'error',\n        \\ 'end if') && s:osascript(\n        \\ 'tell application \"iTerm\"',\n        \\   'activate',\n        \\   'tell the current terminal',\n        \\      'select session id \"/dev/'.tty.'\"',\n        \\   'end tell',\n        \\ 'end tell')\n  endif\nendfunction\n\nfunction! s:osascript(...) abort\n  call system('osascript'.join(map(copy(a:000), '\" -e \".shellescape(v:val)'), ''))\n  return !v:shell_error\nendfunction\n\nfunction! s:escape(string) abort\n  return '\"'.escape(a:string, '\"\\').'\"'\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-dispatch/autoload/dispatch/screen.vim",
    "content": "\" dispatch.vim GNU Screen strategy\n\nif exists('g:autoloaded_dispatch_screen')\n  finish\nendif\nlet g:autoloaded_dispatch_screen = 1\n\nfunction! dispatch#screen#handle(request) abort\n  if empty($STY) || !executable('screen')\n    return 0\n  endif\n  if a:request.action ==# 'make'\n    if !get(a:request, 'background', 0) && empty(v:servername)\n      return 0\n    endif\n    return dispatch#screen#spawn(dispatch#prepare_make(a:request), a:request)\n  elseif a:request.action ==# 'start'\n    return dispatch#screen#spawn(dispatch#prepare_start(a:request), a:request)\n  endif\nendfunction\n\nfunction! dispatch#screen#spawn(command, request) abort\n  let command = 'screen -ln -fn -t '.dispatch#shellescape(a:request.title)\n        \\ . ' ' . &shell . ' ' . &shellcmdflag . ' '\n        \\ . shellescape('exec ' . dispatch#isolate(['STY', 'WINDOW'],\n        \\ dispatch#set_title(a:request), a:command))\n  silent execute '!' . escape(command, '!#%')\n  if a:request.background\n    silent !screen -X other\n  endif\n  return 1\nendfunction\n\nfunction! dispatch#screen#activate(pid) abort\n  let out = system('ps ewww -p '.a:pid)\n  if empty($STY) || stridx(out, 'STY='.$STY) < 0\n    return 0\n  endif\n  let window = matchstr(out, 'WINDOW=\\zs\\d\\+')\n  if !empty(window)\n    silent execute '!screen -X select '.window\n    return !v:shell_error\n  endif\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-dispatch/autoload/dispatch/tmux.vim",
    "content": "\" dispatch.vim tmux strategy\n\nif exists('g:autoloaded_dispatch_tmux')\n  finish\nendif\nlet g:autoloaded_dispatch_tmux = 1\n\nlet s:waiting = {}\nlet s:make_pane = tempname()\n\nfunction! dispatch#tmux#handle(request) abort\n  let session = get(g:, 'tmux_session', '')\n  if empty($TMUX) && empty(''.session) || !executable('tmux')\n    return 0\n  endif\n  if !empty(system('tmux has-session -t '.shellescape(session))[0:-2])\n    return ''\n  endif\n\n  if a:request.action ==# 'make'\n    return dispatch#tmux#make(a:request)\n  elseif a:request.action ==# 'start'\n    let command = 'tmux new-window -P -t '.shellescape(session.':')\n    let command .= ' -n '.shellescape(a:request.title)\n    if a:request.background\n      let command .= ' -d'\n    endif\n    let command .= ' ' . shellescape('exec ' . dispatch#isolate(\n          \\ ['TMUX', 'TMUX_PANE'], dispatch#prepare_start(a:request)))\n    call system(command)\n    return 1\n  endif\nendfunction\n\nfunction! dispatch#tmux#make(request) abort\n  let pipepane = &shellpipe ==# '2>&1| tee' || &shellpipe ==# '|& tee'\n  let session = get(g:, 'tmux_session', '')\n  let script = dispatch#isolate(['TMUX', 'TMUX_PANE'],\n        \\ call('dispatch#prepare_make',\n        \\ [a:request] + (pipepane ? [a:request.expanded] : [])))\n\n  let title = shellescape(get(a:request, 'compiler', 'make'))\n  if get(a:request, 'background', 0)\n    let cmd = 'new-window -d -n '.title\n  elseif has('gui_running') || empty($TMUX) || (!empty(''.session) && session !=# system('tmux display-message -p \"#S\"')[0:-2])\n    let cmd = 'new-window -n '.title\n  else\n    let cmd = 'split-window -l 10 -d'\n  endif\n\n  let cmd .= ' ' . dispatch#shellescape('-P', '-t', session.':', 'exec ' . script)\n\n  let filter = 'sed'\n  let uname = system('uname')[0:-2]\n  if uname ==# 'Darwin'\n    let filter = '/usr/bin/sed -l'\n  elseif uname ==# 'Linux'\n    let filter .= ' -u'\n  endif\n  let filter .= \" -e \\\"s/\\r//g\\\" -e \\\"s/\\e[[0-9;]*m//g\\\" > \".a:request.file\n  call system('tmux ' . cmd . '|tee ' . s:make_pane .\n        \\ (pipepane ? '|xargs -I {} tmux pipe-pane -t {} '.shellescape(filter) : ''))\n\n  let pane = s:pane_id(get(readfile(s:make_pane, '', 1), 0, ''))\n  if !empty(pane)\n    let s:waiting[pane] = a:request\n    return 1\n  endif\nendfunction\n\nfunction! s:pane_id(pane) abort\n  if a:pane =~# '\\.\\d\\+$'\n    let [window, index] = split(a:pane, '\\.\\%(\\d\\+$\\)\\@=')\n    let out = system('tmux list-panes -F \"#P #{pane_id}\" -t '.shellescape(window))\n    let id = matchstr(\"\\n\".out, '\\n'.index.' \\+\\zs%\\d\\+')\n  else\n    let id = system('tmux list-panes -F \"#{pane_id}\" -t '.shellescape(a:pane))[0:-2]\n  endif\n  return id\nendfunction\n\nfunction! dispatch#tmux#poll() abort\n  if empty(s:waiting)\n    return\n  endif\n  let panes = split(system('tmux list-panes -a -F \"#{pane_id}\"'), \"\\n\")\n  for [pane, request] in items(s:waiting)\n    if index(panes, pane) < 0\n      call remove(s:waiting, pane)\n      call dispatch#complete(request)\n    endif\n  endfor\nendfunction\n\nfunction! dispatch#tmux#activate(pid) abort\n  let out = system('ps ewww -p '.a:pid)\n  let pane = matchstr(out, 'TMUX_PANE=\\zs%\\d\\+')\n  if empty(pane)\n    return 0\n  endif\n  let session = get(g:, 'tmux_session', '')\n  if !empty(session)\n    let session = ' -t '.shellescape(session)\n  endif\n  let panes = split(system('tmux list-panes -s -F \"#{pane_id}\"'.session), \"\\n\")\n  if index(panes, pane) >= 0\n    call system('tmux select-window -t '.pane.'; tmux select-pane -t '.pane)\n    return !v:shell_error\n  endif\nendfunction\n\naugroup dispatch_tmux\n  autocmd!\n  autocmd VimResized * if !has('gui_running') | call dispatch#tmux#poll() | endif\naugroup END\n"
  },
  {
    "path": ".vim/bundle/vim-dispatch/autoload/dispatch/windows.vim",
    "content": "\" dispatch.vim Windows strategy\n\nif exists('g:autoloaded_dispatch_windows')\n  finish\nendif\nlet g:autoloaded_dispatch_windows = 1\n\nfunction! s:escape(str) abort\n  if &shellxquote ==# '\"'\n    return '\"' . substitute(a:str, '\"', '\"\"', 'g') . '\"'\n  else\n    let esc = exists('+shellxescape') ? &shellxescape : '\"&|<>()@^'\n    return &shellxquote .\n          \\ substitute(a:str, '['.esc.']', '^&', 'g') .\n          \\ get({'(': ')', '\"(': ')\"'}, &shellxquote, &shellxquote)\n  endif\nendfunction\n\nfunction! dispatch#windows#handle(request) abort\n  if !has('win32') || empty(v:servername)\n    return 0\n  endif\n  if a:request.action ==# 'make'\n    return dispatch#windows#make(a:request)\n  elseif a:request.action ==# 'start'\n    return dispatch#windows#start(a:request)\n  endif\nendfunction\n\nfunction! dispatch#windows#spawn(title, exec, background) abort\n  let extra = a:background ? ' /min' : ''\n  silent execute '!start /min cmd.exe /cstart ' .\n        \\ '\"' . substitute(a:title, '\"', '', 'g') . '\"' . extra . ' ' .\n        \\ &shell . ' ' . &shellcmdflag . ' ' . s:escape(a:exec)\n  return 1\nendfunction\n\nlet s:pid = \"wmic process where ^(Name='WMIC.exe' AND CommandLine LIKE '\\\\%\\\\%\\\\%TIME\\\\%\\\\%\\\\%'^) get ParentProcessId | more +1 > \"\n\nfunction! dispatch#windows#make(request) abort\n  if &shellxquote ==# '\"'\n    let exec = dispatch#prepare_make(a:request)\n  else\n    let pidfile = a:request.file.'.pid'\n    let exec =\n          \\ s:pid . pidfile .\n          \\ ' & ' . escape(a:request.expanded, '%#!') .\n          \\ ' ' . dispatch#shellpipe(a:request.file) .\n          \\ ' & cd . > ' . a:request.file . '.complete' .\n          \\ ' & del ' . pidfile .\n          \\ ' & ' . dispatch#callback(a:request)\n  endif\n\n  return dispatch#windows#spawn(a:request.title, exec, 1)\nendfunction\n\nfunction! dispatch#windows#start(request) abort\n  if &shellxquote ==# '\"'\n    let exec = dispatch#prepare_start(a:request)\n  else\n    let pidfile = a:request.file.'.pid'\n    let exec =\n          \\ s:pid . pidfile .\n          \\ ' & ' . a:request.command .\n          \\ ' & cd . > ' . a:request.file . '.complete' .\n          \\ ' & del ' . pidfile\n  endif\n\n  let title = get(a:request, 'title', matchstr(a:request.command, '\\S\\+'))\n  return dispatch#windows#spawn(title, exec, a:request.background)\nendfunction\n\nfunction! dispatch#windows#activate(pid) abort\n  if system('tasklist /fi \"pid eq '.a:pid.'\"') !~# '==='\n    return 0\n  endif\n  if !exists('s:activator')\n    let s:activator = tempname().'.vbs'\n    call writefile(['WScript.CreateObject(\"WScript.Shell\").AppActivate(WScript.Arguments(0))'], s:activator)\n  endif\n  call system('cscript //nologo '.s:activator.' '.a:pid)\n  return !v:shell_error\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-dispatch/autoload/dispatch/x11.vim",
    "content": "\" dispatch.vim X11 strategy\n\nif exists('g:autoloaded_dispatch_x11')\n  finish\nendif\nlet g:autoloaded_dispatch_x11 = 1\n\nfunction! dispatch#x11#handle(request) abort\n  if $DISPLAY !~# '^:' || a:request.action !=# 'start'\n    return 0\n  endif\n  if a:request.background && (!v:windowid || !executable('wmctrl'))\n    return 0\n  endif\n  if !empty($TERMINAL)\n    let terminal = $TERMINAL\n  elseif executable('x-terminal-emulator')\n    let terminal = 'x-terminal-emulator'\n  elseif executable('xterm')\n    let terminal = 'xterm'\n  else\n    return 0\n  endif\n  let command = dispatch#set_title(a:request) . '; ' . dispatch#prepare_start(a:request)\n  call system(dispatch#shellescape(terminal, '-e', &shell, &shellcmdflag, command). ' &')\n  if a:request.background\n    sleep 100m\n    call system('wmctrl -i -a '.v:windowid)\n  endif\n  return 1\nendfunction\n\nfunction! dispatch#x11#activate(pid) abort\n  let out = system('ps ewww -p '.a:pid)\n  let window = matchstr(out, 'WINDOWID=\\zs\\d\\+')\n  if !empty(window) && executable('wmctrl')\n    call system('wmctrl -i -a '.window)\n    return !v:shell_error\n  endif\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-dispatch/autoload/dispatch.vim",
    "content": "\" Location:     autoload/dispatch.vim\n\nif exists('g:autoloaded_dispatch')\n  finish\nendif\n\nlet g:autoloaded_dispatch = 1\n\n\" Utility {{{1\n\nfunction! dispatch#uniq(list) abort\n  let i = 0\n  let seen = {}\n  while i < len(a:list)\n    if (a:list[i] ==# '' && exists('empty')) || has_key(seen,a:list[i])\n      call remove(a:list,i)\n    elseif a:list[i] ==# ''\n      let i += 1\n      let empty = 1\n    else\n      let seen[a:list[i]] = 1\n      let i += 1\n    endif\n  endwhile\n  return a:list\nendfunction\n\nfunction! dispatch#shellescape(...) abort\n  let args = []\n  for arg in a:000\n    if arg =~ '^[A-Za-z0-9_/.-]\\+$'\n      let args += [arg]\n    else\n      let args += [shellescape(arg)]\n    endif\n  endfor\n  return join(args, ' ')\nendfunction\n\nlet s:flags = '\\%(:[p8~.htre]\\|:g\\=s\\(.\\).\\{-\\}\\1.\\{-\\}\\1\\)*'\nlet s:expandable = '\\\\*\\%(<\\w\\+>\\|%\\|#\\d*\\)' . s:flags\nfunction! dispatch#expand(string) abort\n  return substitute(a:string, s:expandable, '\\=s:expand(submatch(0))', 'g')\nendfunction\n\nfunction! s:expand(string) abort\n  let slashes = len(matchstr(a:string, '^\\%(\\\\\\\\\\)*'))\n  return repeat('\\', slashes/2) . expand(a:string[slashes : -1])\nendfunction\n\nfunction! dispatch#slash() abort\n  return !exists(\"+shellslash\") || &shellslash ? '/' : '\\'\nendfunction\n\nfunction! dispatch#shellpipe(file) abort\n  if &shellpipe =~# '%s'\n    return ' ' . printf(&shellpipe, dispatch#shellescape(a:file))\n  else\n    return ' ' . &shellpipe . ' ' . dispatch#shellescape(a:file)\n  endif\nendfunction\n\nfunction! dispatch#vim_executable() abort\n  if !exists('s:vim')\n    if has('win32')\n      let roots = [fnamemodify($VIMRUNTIME, ':8') . dispatch#slash(),\n                  \\ fnamemodify($VIM, ':8') . dispatch#slash()]\n    elseif has('gui_macvim')\n      let roots = [fnamemodify($VIM, ':h:h') . '/MacOS/']\n    else\n      let roots = [fnamemodify($VIM, ':h:h') . '/bin/']\n    endif\n    for root in roots\n      if executable(root . v:progname)\n        let s:vim = root . v:progname\n        break\n      endif\n    endfor\n    if !exists('s:vim')\n      if executable(v:progname)\n        let s:vim = v:progname\n      else\n        let s:vim = 'vim'\n      endif\n    endif\n  endif\n  return s:vim\nendfunction\n\nfunction! dispatch#callback(request) abort\n  if !empty(v:servername) && has_key(s:request(a:request), 'id')\n    return dispatch#shellescape(dispatch#vim_executable()) .\n          \\ ' --servername ' . dispatch#shellescape(v:servername) .\n          \\ ' --remote-expr \"' . 'DispatchComplete(' . s:request(a:request).id . ')' . '\"'\n  endif\n  return ''\nendfunction\n\nfunction! dispatch#prepare_start(request, ...) abort\n  let exec = 'echo $$ > ' . a:request.file . '.pid; '\n  if executable('perl')\n    let exec .= 'perl -e \"select(undef,undef,undef,0.1)\"; '\n  else\n    let exec .= 'sleep 1; '\n  endif\n  let exec .= a:0 ? a:1 : a:request.expanded\n  let callback = dispatch#callback(a:request)\n  let after = 'rm -f ' . a:request.file . '.pid; ' .\n        \\ 'touch ' . a:request.file . '.complete' .\n        \\ (empty(callback) ? '' : '; ' . callback)\n  if &shellpipe =~# '2>&1'\n    return 'trap ' . shellescape(after) . ' EXIT INT TERM; ' . exec\n  else\n    \" csh\n    return exec . '; ' . after\n  endif\nendfunction\n\nfunction! dispatch#prepare_make(request, ...) abort\n  let exec = a:0 ? a:1 : (a:request.expanded . dispatch#shellpipe(a:request.file))\n  return dispatch#prepare_start(a:request, exec, 1)\nendfunction\n\nfunction! dispatch#set_title(request) abort\n  return dispatch#shellescape('printf',\n        \\ '\\033]1;%s\\007\\033]2;%s\\007',\n        \\ a:request.title,\n        \\ a:request.expanded)\nendfunction\n\nfunction! dispatch#isolate(keep, ...) abort\n  let command = ['cd ' . shellescape(getcwd())]\n  for line in split(system('env'), \"\\n\")\n    let var = matchstr(line, '^\\w\\+\\ze=')\n    if !empty(var) && var !=# '_' && index(a:keep, var) < 0\n      if &shell =~# 'csh'\n        let command += ['setenv '.var.' '.shellescape(eval('$'.var))]\n      else\n        let command += ['export '.var.'='.shellescape(eval('$'.var))]\n      endif\n    endif\n  endfor\n  let command += a:000\n  let temp = tempname()\n  call writefile(command, temp)\n  return 'env -i ' . join(map(copy(a:keep), 'v:val.\"=\\\"$\". v:val .\"\\\" \"'), '') . &shell . ' ' . temp\nendfunction\n\nfunction! s:set_current_compiler(name) abort\n  if empty(a:name)\n    unlet! b:current_compiler\n  else\n    let b:current_compiler = a:name\n  endif\nendfunction\n\nfunction! s:dispatch(request) abort\n  for handler in g:dispatch_handlers\n    let response = call('dispatch#'.handler.'#handle', [a:request])\n    if !empty(response)\n      redraw\n      let pid = dispatch#pid(a:request)\n      echo ':!'.a:request.expanded . ' ('.handler.'/'.(pid ? pid : '?').')'\n      let a:request.handler = handler\n      return 1\n    endif\n  endfor\n  return 0\nendfunction\n\n\" }}}1\n\" :Start {{{1\n\nfunction! dispatch#start_command(bang, command) abort\n  let command = a:command\n  if empty(command) && exists('*projectile#query_exec')\n    for [root, command] in projectile#query_exec('start')\n      break\n    endfor\n  endif\n  if empty(command) && type(get(b:, 'start', [])) == type('')\n    let command = b:start\n  endif\n  let title = matchstr(command, '-title=\\zs\\%(\\\\.\\|\\S\\)*')\n  if !empty(title)\n    let command = command[strlen(title) + 8 : -1]\n  endif\n  let title = substitute(title, '\\\\\\(\\s\\)', '\\1', 'g')\n  let cd = exists('*haslocaldir') && haslocaldir() ? 'lcd' : 'cd'\n  let restore = ''\n  try\n    if exists('root')\n      let restore = cd . ' ' . fnameescape(getcwd())\n      exe cd fnameescape(root)\n    endif\n    if command =~# '^:.'\n      unlet! g:dispatch_last_start\n      return substitute(command, '\\>', get(a:0 ? a:1 : {}, 'background', 0) ? '!' : '', '')\n    endif\n    if empty(command)\n      let command = &shell\n    endif\n    call dispatch#start(command, {'background': a:bang, 'title': title})\n  finally\n    if exists('root')\n      execute restore\n    endif\n  endtry\n  return ''\nendfunction\n\nif !exists('g:DISPATCH_STARTS')\n  let g:DISPATCH_STARTS = {}\nendif\n\nfunction! dispatch#start(command, ...) abort\n  let request = extend({\n        \\ 'action': 'start',\n        \\ 'background': 0,\n        \\ 'command': a:command,\n        \\ 'directory': getcwd(),\n        \\ 'expanded': dispatch#expand(a:command),\n        \\ 'title': '',\n        \\ }, a:0 ? a:1 : {})\n  let g:dispatch_last_start = request\n  if empty(request.title)\n    let request.title = substitute(fnamemodify(matchstr(request.command, '\\%(\\\\.\\|\\S\\)\\+'), ':t:r'), '\\\\\\(\\s\\)', '\\1', 'g')\n  endif\n  let key = request.directory.\"\\t\".substitute(request.expanded, '\\s*$', '', '')\n  let i = 0\n  while i < len(get(g:DISPATCH_STARTS, key, []))\n    let [handler, pid] = split(g:DISPATCH_STARTS[key][i], '@')\n    if !s:running(pid)\n      call remove(g:DISPATCH_STARTS[key], i)\n      continue\n    endif\n    try\n      if request.background || dispatch#{handler}#activate(pid)\n        let request.handler = handler\n        let request.pid = pid\n        return request\n      endif\n    catch\n    endtry\n    let i += 1\n  endwhile\n  let request.file = tempname()\n  let s:files[request.file] = request\n  if s:dispatch(request)\n    if !has_key(g:DISPATCH_STARTS, key)\n      let g:DISPATCH_STARTS[key] = []\n    endif\n    call add(g:DISPATCH_STARTS[key], request.handler.'@'.dispatch#pid(request))\n  else\n    execute '!' . request.command\n  endif\n  return request\nendfunction\n\n\" }}}1\n\" :Dispatch, :Make {{{1\n\nlet g:dispatch_compilers = get(g:, 'dispatch_compilers', {})\n\nfunction! dispatch#compiler_for_program(args) abort\n  let remove = keys(filter(copy(g:dispatch_compilers), 'empty(v:val)'))\n  let pattern = '\\%('.join(map(remove, 'substitute(escape(v:val, \".*^$~[]\\\\\"), \"\\\\w\\\\zs$\", \" \", \"\")'), '\\s*\\|').'\\)'\n  let args = substitute(a:args, '\\s\\+', ' ', 'g')\n  let args = substitute(args, '^\\s*'.pattern.'*', '', '')\n  for [command, plugin] in items(g:dispatch_compilers)\n    if strpart(args.' ', 0, len(command)+1) ==# command.' ' && !empty(plugin)\n      return plugin\n    endif\n  endfor\n  let program = fnamemodify(matchstr(args, '\\S\\+'), ':t:r')\n  if program ==# 'make'\n    return 'make'\n  endif\n  let plugins = map(reverse(split(globpath(escape(&rtp, ' '), 'compiler/*.vim'), \"\\n\")), '[fnamemodify(v:val, \":t:r\"), readfile(v:val)]')\n  for [plugin, lines] in plugins\n    for line in lines\n      let full = substitute(substitute(\n            \\ matchstr(line, '\\<CompilerSet\\s\\+makeprg=\\zs\\a\\%(\\\\.\\|[^[:space:]\"]\\)*'),\n            \\ '\\\\\\(.\\)', '\\1', 'g'),\n            \\ ' \\=[\"'']\\=\\%(%\\|\\$\\*\\|--\\w\\@!\\).*', '', '')\n      if !empty(full) && strpart(args.' ', 0, len(full)+1) ==# full.' '\n        return plugin\n      endif\n    endfor\n  endfor\n  for [plugin, lines] in plugins\n    for line in lines\n      if matchstr(line, '\\<CompilerSet\\s\\+makeprg=\\zs[[:alnum:]_-]\\+') ==# program\n        return plugin\n      endif\n    endfor\n  endfor\n  return ''\nendfunction\n\nfunction! dispatch#compiler_options(compiler) abort\n  let current_compiler = get(b:, 'current_compiler', '')\n  let makeprg = &l:makeprg\n  let efm = &l:efm\n\n  try\n    if a:compiler ==# 'make'\n      if &makeprg !=# 'make'\n        setlocal efm&\n      endif\n      return {'program': 'make', 'format': &efm}\n    endif\n    let &l:makeprg = ''\n    execute 'compiler '.fnameescape(a:compiler)\n    let options = {'format': &errorformat}\n    if !empty(&l:makeprg)\n      let options.program = &l:makeprg\n    endif\n    return options\n  finally\n    let &l:makeprg = makeprg\n    let &l:efm = efm\n    call s:set_current_compiler(current_compiler)\n  endtry\nendfunction\n\nfunction! dispatch#command_complete(A, L, P) abort\n  if a:L =~# '\\S\\+\\s\\S\\+\\s'\n    return join(map(split(glob(a:A.'*'), \"\\n\"), 'isdirectory(v:val) ? v:val . dispatch#slash() : v:val'), \"\\n\")\n  else\n    let executables = []\n    for dir in split($PATH, has('win32') ? ';' : ':')\n      let executables += map(split(glob(dir.'/'.a:A.'*'), \"\\n\"), 'v:val[strlen(dir)+1 : -1]')\n    endfor\n    return join(sort(dispatch#uniq(executables)), \"\\n\")\n  endif\nendfunction\n\nif !exists('s:makes')\n  let s:makes = []\n  let s:files = {}\nendif\n\nfunction! dispatch#compile_command(bang, args, count) abort\n  if !empty(a:args)\n    let args = a:args\n  else\n    let args = '_'\n    for vars in [b:, g:, t:, w:]\n      if has_key(vars, 'dispatch') && type(vars.dispatch) == type('')\n        let args = vars.dispatch\n      endif\n    endfor\n  endif\n\n  if args =~# '^!'\n    return 'Start' . (a:bang ? '!' : '') . ' ' . args[1:-1]\n  elseif args =~# '^:.'\n    return (a:count ? a:count : '').substitute(args[1:-1], '\\>', (a:bang ? '!' : ''), '')\n  endif\n  let executable = matchstr(args, '\\S\\+')\n\n  let request = {\n        \\ 'action': 'make',\n        \\ 'background': a:bang,\n        \\ 'file': tempname(),\n        \\ 'format': '%+G%.%#'\n        \\ }\n\n  if executable ==# '_'\n    let request.args = matchstr(args, '_\\s*\\zs.*')\n    let request.program = &makeprg\n    if &makeprg =~# '\\$\\*'\n      let request.command = substitute(&makeprg, '\\$\\*', request.args, 'g')\n    elseif empty(request.args)\n      let request.command = &makeprg\n    else\n      let request.command = &makeprg . ' ' . request.args\n    endif\n    let request.format = &errorformat\n    let request.compiler = get((empty(&l:makeprg) ? g: : b:), 'current_compiler', '')\n  else\n    let request.compiler = dispatch#compiler_for_program(args)\n    if !empty(request.compiler)\n      call extend(request,dispatch#compiler_options(request.compiler))\n    endif\n    let request.command = args\n  endif\n  if a:count\n    let request.command = substitute(request.command, '<lnum>'.s:flags, '\\=fnamemodify(a:count, submatch(0)[6:-1])', 'g')\n  else\n    let request.command = substitute(request.command, '<lnum>'.s:flags, '', 'g')\n  endif\n\n  if empty(request.compiler)\n    unlet request.compiler\n  endif\n  let request.title = get(request, 'compiler', 'make')\n\n  if &autowrite || &autowriteall\n    wall\n  endif\n  cclose\n  let &errorfile = request.file\n\n  try\n    silent doautocmd QuickFixCmdPre dispatch\n    let request.directory = getcwd()\n    let request.expanded = dispatch#expand(request.command)\n    call extend(s:makes, [request])\n    let request.id = len(s:makes)\n    let s:files[request.file] = request\n\n    if !s:dispatch(request)\n      execute 'silent !'.request.command dispatch#shellpipe(request.file)\n      call feedkeys(\":redraw!|call dispatch#complete(\".request.id.\")\\r\", 'n')\n    endif\n  finally\n    silent doautocmd QuickFixCmdPost dispatch\n  endtry\n  return ''\nendfunction\n\n\" }}}1\n\" :FocusDispatch {{{1\n\nfunction! dispatch#focus() abort\n  if exists('w:dispatch')\n    let [compiler, why] = [w:dispatch, 'Window local focus']\n  elseif exists('t:dispatch')\n    let [compiler, why] = [t:dispatch, 'Tab local focus']\n  elseif exists('g:dispatch')\n    let [compiler, why] = [g:dispatch, 'Global focus']\n  elseif exists('b:dispatch')\n    let [compiler, why] = [b:dispatch, 'Buffer default']\n  elseif !empty(&l:makeprg)\n    return [':Make', 'Buffer default']\n  else\n    return [':Make', 'Global default']\n  endif\n  if compiler =~# '^_\\>'\n    return [':Make' . compiler[1:-1], why]\n  elseif compiler =~# '^!'\n    return [':Start ' . compiler[1:-1], why]\n  elseif compiler =~# '^:.'\n    return [compiler, why]\n  else\n    return [':Dispatch ' . compiler, why]\n  endif\nendfunction\n\nfunction! dispatch#focus_command(bang, args) abort\n  let args = a:args =~# '^:.' ? a:args : escape(dispatch#expand(a:args), '#%')\n  if empty(a:args) && a:bang\n    unlet! w:dispatch t:dispatch g:dispatch\n    let [what, why] = dispatch#focus()\n    echo 'Reverted default to ' . what\n  elseif empty(a:args)\n    let [what, why] = dispatch#focus()\n    echo printf('%s is %s', why, what)\n  elseif a:bang\n    let w:dispatch = args\n    let [what, why] = dispatch#focus()\n    echo 'Set window local focus to ' . what\n  else\n    unlet! w:dispatch t:dispatch\n    let g:dispatch = args\n    let [what, why] = dispatch#focus()\n    echo 'Set global focus to ' . what\n  endif\n  return ''\nendfunction\n\n\" }}}1\n\" Requests {{{1\n\nfunction! s:file(request) abort\n  if type(a:request) == type('')\n    return a:request\n  elseif type(a:request) == type({})\n    return get(a:request, 'file', '')\n  else\n    return get(get(s:makes, a:request-1, {}), 'file', '')\n  endif\nendfunction\n\nfunction! s:request(request) abort\n  if type(a:request) == type({})\n    return a:request\n  elseif type(a:request) == type(0) && a:request > 0\n    return get(s:makes, a:request-1, {})\n  elseif type(a:request) == type('') && !empty(a:request)\n    return get(s:files, a:request, {})\n  else\n    return {}\n  endif\nendfunction\n\nfunction! dispatch#request(...) abort\n  return a:0 ? s:request(a:1) : get(s:makes, -1, {})\nendfunction\n\nfunction! s:running(pid) abort\n  if !a:pid\n    return 0\n  elseif has('win32')\n    return system('tasklist /fi \"pid eq '.a:pid.'\"') =~# '==='\n  else\n    call system('kill -0 '.a:pid)\n    return !v:shell_error\n  endif\nendfunction\n\nfunction! dispatch#pid(request) abort\n  let request = s:request(a:request)\n  let file = request.file\n  if !has_key(request, 'pid')\n    if has('win32') && !executable('wmic')\n      let request.pid = 0\n      return 0\n    endif\n    for i in range(50)\n      if getfsize(file.'.pid') > 0 || filereadable(file.'.complete')\n        break\n      endif\n      sleep 10m\n    endfor\n    try\n      let request.pid = +readfile(file.'.pid')[0]\n    catch\n      let request.pid = 0\n    endtry\n  endif\n  if request.pid && getfsize(file.'.pid') > 0\n    if s:running(request.pid)\n      return request.pid\n    else\n      let request.pid = 0\n      call delete(file)\n    endif\n  endif\nendfunction\n\nfunction! dispatch#completed(request) abort\n  return get(s:request(a:request), 'completed', 0)\nendfunction\n\nfunction! dispatch#complete(file) abort\n  if !dispatch#completed(a:file)\n    let request = s:request(a:file)\n    let request.completed = 1\n    echo 'Finished:' request.command\n    if !request.background\n      call s:cgetfile(request, 0, 0)\n      redraw\n    endif\n  endif\n  return ''\nendfunction\n\n\" }}}1\n\" Quickfix window {{{1\n\nfunction! dispatch#copen(bang) abort\n  if empty(s:makes)\n    return 'echoerr ' . string('No dispatches yet')\n  endif\n  let request = s:makes[-1]\n  if !dispatch#completed(request) && filereadable(request.file . '.complete')\n    let request.completed = 1\n  endif\n  call s:cgetfile(request, a:bang, 1)\nendfunction\n\nfunction! s:cgetfile(request, all, copen) abort\n  let request = s:request(a:request)\n  let efm = &l:efm\n  let makeprg = &l:makeprg\n  let compiler = get(b:, 'current_compiler', '')\n  let cd = haslocaldir() ? 'lcd' : 'cd'\n  let dir = getcwd()\n  try\n    call s:set_current_compiler(get(request, 'compiler', ''))\n    exe cd fnameescape(request.directory)\n    if a:all\n      let &l:efm = '%+G%.%#'\n    else\n      let &l:efm = request.format\n    endif\n    let &l:makeprg = request.command\n    silent doautocmd QuickFixCmdPre cgetfile\n    execute 'cgetfile '.fnameescape(request.file)\n    silent doautocmd QuickFixCmdPost cgetfile\n  catch '^E40:'\n    return v:exception\n  finally\n    exe cd fnameescape(dir)\n    let &l:efm = efm\n    let &l:makeprg = makeprg\n    call s:set_current_compiler(compiler)\n  endtry\n  call s:open_quickfix(request, a:copen)\nendfunction\n\nfunction! s:open_quickfix(request, copen) abort\n  let was_qf = &buftype ==# 'quickfix'\n  execute 'botright' (!empty(getqflist()) || a:copen) ? 'copen' : 'cwindow'\n  if &buftype ==# 'quickfix' && !was_qf && !a:copen\n    wincmd p\n  endif\n  for winnr in range(1, winnr('$'))\n    if getwinvar(winnr, '&buftype') ==# 'quickfix'\n      call setwinvar(winnr, 'quickfix_title', ':' . a:request.expanded)\n      let bufnr = winbufnr(winnr)\n      call setbufvar(bufnr, '&efm', a:request.format)\n      call setbufvar(bufnr, 'dispatch', escape(a:request.expanded, '%#'))\n      if has_key(a:request, 'program')\n        call setbufvar(bufnr, '&makeprg', a:request.program)\n      endif\n      if has_key(a:request, 'compiler')\n        call setbufvar(bufnr, 'current_compiler', a:request.compiler)\n      endif\n    endif\n  endfor\nendfunction\n\n\" }}}1\n"
  },
  {
    "path": ".vim/bundle/vim-dispatch/doc/dispatch.txt",
    "content": "*dispatch.txt*  Asynchronous build and test dispatcher\n\nAuthor:  Tim Pope <http://tpo.pe/>\nRepo:    https://github.com/tpope/vim-dispatch\nLicense: Same terms as Vim itself (see |license|)\n\nINTRODUCTION                                    *dispatch*\n\nLeverage the power of Vim's compiler system without being constrained by\nsynchronicity.\n\nCOMMANDS                                        *dispatch-commands*\n\n                                                *dispatch-:Make*\n:Make [arguments]       Using the current |:compiler| settings, dispatch a\n                        build in the foreground.  Adapter strategies vary, but\n                        the goal is visibility without stealing focus.  When\n                        the build is complete, load the results into the\n                        |quickfix| list and call |:cwindow|.  This command is\n                        preferred for shorter tasks like \"build this file.\"\n\n:Make! [arguments]      Using the current compiler settings, dispatch a build\n                        in the background.  Use |:Copen| to load the results.\n                        This command is preferred for longer tasks like \"run\n                        the entire test suite.\"\n\n                                                *dispatch-:Copen*\n:Copen                  Load the latest build into the quickfix list and open\n                        it with |:copen|.  You may call this before the\n                        process is finished.\n\n:Copen!                 Load the latest build into the quickfix list using a\n                        catch-all parser.  This is useful when you can't tell\n                        what went wrong.\n\n                                                *dispatch-:Dispatch*\n:Dispatch[!] {program} [arguments]\n                        Find a compiler plugin that sets 'makeprg' to\n                        {command} and use its 'errorformat' to dispatch a\n                        |:Make| for the given {command} and [arguments].  If\n                        no compiler plugin is found, the generic format\n                        %+G%.%# is used.\n\n                        :Dispatch picks a compiler by looking for either\n                        CompilerSet makeprg={program}\\ [arguments] or\n                        CompilerSet makeprg={command} in compiler plugins.\n                        To force a given {program} to use a given {compiler},\n                        create ~/.vim/after/compiler/{compiler}.vim and add to\n                        it a line like the following: >\n\n                        \" CompilerSet makeprg={program}\n<\n                        If you need more control, *g:dispatch_compilers* can\n                        be set to a dictionary with commands for keys and\n                        compiler plugins for values.  Use an empty value to\n                        skip the matched string and try again with the rest of\n                        the command.\n>\n                        let g:dispatch_compilers = {\n                              \\ 'latex': 'tex',\n                              \\ 'bundle exec': ''}\n<\n                                                *b:dispatch*\n:Dispatch[!]            Invoke |:Dispatch| with the command and arguments\n                        found in b:dispatch.  When absent, equivalent to\n                        |:Make|.\n\n                                                *dispatch-:FocusDispatch*\n:FocusDispatch {program} [arguments]\n                        Set a global default command for |:Dispatch| with no\n                        arguments.  Overrides |b:dispatch|.\n\n:FocusDispatch! {program} [arguments]\n                        Set a window local default command for |:Dispatch|\n                        with no arguments.  Overrides |b:dispatch| and the\n                        global default.\n\n:FocusDispatch!         Clear the global and window local defaults for\n                        |:Dispatch|.\n\n:FocusDispatch          Show the task that would run when calling |:Dispatch|\n                        with no arguments.\n\n                                                *dispatch-:Start*\n:Start {command}        Start a process in a new, focused window.  If\n                        {command} and the current working directory match\n                        previous :Start invocation, focus it instead, if\n                        possible.\n\n:Start! {command}       Start a process in a new, unfocused window.  If\n                        {command} and the current working directory match\n                        previous :Start invocation, do nothing.\n\n                                                *b:start*\n:Start[!]               With no arguments, |:Start| the command given by\n                        |b:start|.  If not set, falls back to 'shell'.\n\n:Start[!] -title={title} {command}\n                        Start a process in a window titled {title}.  This is\n                        not normally used interactively.\n\nSTRATEGIES                                      *dispatch-strategies*\n\nStrategies are listed in order of precedence.  The first available one is\nused.  Some strategies only provide for a subset of tasks.\n\nTmux ~\n\nForeground makes open in a small split at the bottom.  The closure of the\npane triggers a |VimResized| event which loads the results into the quickfix\nlist.  (All other strategies use the GUI subsystem to get this to work.)\n\nThe tmux strategy can be used from the GUI as well.  Either start Vim from\ninside of tmux or assign g:tmux_session.  This will use a new window for\nforeground makes rather than a split.\n\nTmux 1.6 or newer is required.\n\nGNU Screen ~\n\nNot used for foreground |:Make| invocations unless you're in GUI Vim.\n\nWindows ~\n\nYou can use either the standard cmd.exe or a cygwin shell.  Both foreground\nand background |:Make| invocations are started minimized to prevent focus\nstealing.\n\niTerm ~\n\nThis strategy fires if you're in MacVim with at least one iTerm window open,\nor if Vim is running in iTerm itself.  In the latter case, you can't use it\nfor foreground |:Make| invocations.\n\nX11 ~\n\nUses $TERMINAL, x-terminal-emulator, or xterm.  Used for |:Start| and, if\nwmctrl installed to aid in switching the focus back, |:Start!|.\n\nHeadless ~\n\nForks tasks into the background.  It's working, you just can't see it.  Don't\nforget to check |:Copen|.  The presence of this strategy means that |:Make!|\nand |:Start!| will never block Vim.\n\nSynchronous ~\n\nWhen all else fails, a vanilla |:make| or |:!| is performed.\n\n vim:tw=78:et:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/vim-dispatch/plugin/dispatch.vim",
    "content": "\" Location:     plugin/dispatch.vim\n\" Maintainer:   Tim Pope <http://tpo.pe/>\n\" Version:      1.1\n\nif exists(\"g:loaded_dispatch\") || v:version < 700 || &cp\n  finish\nendif\nlet g:loaded_dispatch = 1\n\ncommand! -bang -nargs=* -range=0 -complete=custom,dispatch#command_complete Dispatch\n      \\ execute dispatch#compile_command(<bang>0, <q-args>, <count>)\n\ncommand! -bang -nargs=* -complete=custom,dispatch#command_complete FocusDispatch\n      \\ execute dispatch#focus_command(<bang>0, <q-args>)\n\ncommand! -bang -nargs=* -complete=file Make\n      \\ Dispatch<bang> _ <args>\n\ncommand! -bang -nargs=* -complete=custom,dispatch#command_complete Start\n      \\ execute dispatch#start_command(<bang>0, <q-args>)\n\ncommand! -bang -bar Copen call dispatch#copen(<bang>0)\n\nfunction! DispatchComplete(id) abort\n  return dispatch#complete(a:id)\nendfunction\n\nif !exists('g:dispatch_handlers')\n  let g:dispatch_handlers = [\n        \\ 'tmux',\n        \\ 'screen',\n        \\ 'windows',\n        \\ 'iterm',\n        \\ 'x11',\n        \\ 'headless',\n        \\ ]\nendif\n"
  },
  {
    "path": ".vim/bundle/vim-endwise/README.markdown",
    "content": "endwise.vim\n===========\n\nThis is a simple plugin that helps to end certain structures\nautomatically.  In Ruby, this means adding `end` after `if`, `do`, `def`\nand several other keywords. In Vimscript, this amounts to appropriately\nadding `endfunction`, `endif`, etc.  There's also Bourne shell, VB\n(don't ask), C/C++ preprocessor, and Lua support.\n\nA primary guiding principle in designing this plugin was that an\nerroneous insertion is never acceptable.  The behavior is only triggered\nonce pressing enter on the end of the line.  When this happens, endwise\nsearches for a matching end structure and only adds one if none is\nfound.\n\nWhile the goal was to make it customizable, this turned out to be a tall\norder.  Every language has vastly different requirements.  Nonetheless,\nfor those bold enough to attempt it, you can follow the model of the\nautocmds in the plugin to set the three magic variables governing\nendwise's behavior.\n\nInstallation\n------------\n\nIf you don't have a preferred installation method, I recommend\ninstalling [pathogen.vim](https://github.com/tpope/vim-pathogen), and\nthen simply copy and paste:\n\n    cd ~/.vim/bundle\n    git clone git://github.com/tpope/vim-endwise.git\n\nContributing\n------------\n\nSee the contribution guidelines for\n[pathogen.vim](https://github.com/tpope/vim-pathogen#readme).\n\nSelf-Promotion\n--------------\n\nLike endwise.vim? Follow the repository on\n[GitHub](https://github.com/tpope/vim-endwise) and vote for it on\n[vim.org](http://www.vim.org/scripts/script.php?script_id=2386).  And if\nyou're feeling especially charitable, follow [tpope](http://tpo.pe/) on\n[Twitter](http://twitter.com/tpope) and\n[GitHub](https://github.com/tpope).\n\nLicense\n-------\n\nCopyright (c) Tim Pope.  Distributed under the same terms as Vim itself.\nSee `:help license`.\n"
  },
  {
    "path": ".vim/bundle/vim-endwise/plugin/endwise.vim",
    "content": "\" endwise.vim - EndWise\n\" Author:       Tim Pope <http://tpo.pe/>\n\" Version:      1.1\n\" License:      Same as Vim itself.  See :help license\n\" GetLatestVimScripts: 2386 1 :AutoInstall: endwise.vim\n\nif exists(\"g:loaded_endwise\") || &cp\n  finish\nendif\nlet g:loaded_endwise = 1\n\naugroup endwise \" {{{1\n  autocmd!\n  autocmd FileType lua\n        \\ let b:endwise_addition = '\\=submatch(0)==\"{\" ? \"}\" : \"end\"' |\n        \\ let b:endwise_words = 'function,local\\%(\\s\\+\\)function,do,then' |\n        \\ let b:endwise_pattern = '^\\s*\\zs\\%(function\\|local\\s\\+function\\|do\\|then\\)\\>\\%(.*[^.:@$]\\<end\\>\\)\\@!\\|\\<then\\|do\\ze\\%(\\s*|.*|\\)\\=\\s*$' |\n        \\ let b:endwise_syngroups = 'luaFunction,luaStatement,luaCond'\n  autocmd FileType elixir\n        \\ let b:endwise_addition = '\\=submatch(0)==\"{\" ? \"}\" : \"end\"' |\n        \\ let b:endwise_words = 'case,cond,bc,lc,inlist,inbits,if,unless,try,receive,function,fn' |\n        \\ let b:endwise_pattern = '^\\(.*=\\)\\?\\s*\\zs\\%(case\\|cond\\|bc\\|lc\\|inlist\\|inbits\\|if\\|unless\\|try\\|receive\\|function\\|fn\\)\\>\\%(.*[^.:@$]\\<end\\>\\)\\@!\\|\\<do\\ze\\%(\\s*|.*|\\)\\=\\s*$' |\n        \\ let b:endwise_syngroups = 'elixirKeyword'\n  autocmd FileType ruby\n        \\ let b:endwise_addition = '\\=submatch(0)==\"{\" ? \"}\" : \"end\"' |\n        \\ let b:endwise_words = 'module,class,def,if,unless,case,while,until,begin,do' |\n        \\ let b:endwise_pattern = '^\\(.*=\\)\\?\\s*\\zs\\%(module\\|class\\|def\\|if\\|unless\\|case\\|while\\|until\\|for\\|\\|begin\\)\\>\\%(.*[^.:@$]\\<end\\>\\)\\@!\\|\\<do\\ze\\%(\\s*|.*|\\)\\=\\s*$' |\n        \\ let b:endwise_syngroups = 'rubyModule,rubyClass,rubyDefine,rubyControl,rubyConditional,rubyRepeat'\n  autocmd FileType sh,zsh\n        \\ let b:endwise_addition = '\\=submatch(0)==\"if\" ? \"fi\" : submatch(0)==\"case\" ? \"esac\" : \"done\"' |\n        \\ let b:endwise_words = 'if,case,do' |\n        \\ let b:endwise_pattern = '\\%(^\\s*\\zs\\%(if\\|case\\)\\>\\ze\\|\\zs\\<do\\ze$\\|^\\s*\\zsdo\\s*\\ze$\\)' |\n        \\ let b:endwise_syngroups = 'shConditional,shLoop,shIf,shFor,shRepeat,shCaseEsac,zshConditional,zshRepeat,zshDelimiter'\n  autocmd FileType vb,vbnet,aspvbs\n        \\ let b:endwise_addition = 'End &' |\n        \\ let b:endwise_words = 'Function,Sub,Class,Module,Enum,Namespace' |\n        \\ let b:endwise_pattern = '\\%(\\<End\\>.*\\)\\@<!\\<&\\>' |\n        \\ let b:endwise_syngroups = 'vbStatement,vbnetStorage,vbnetProcedure,vbnet.*Words,AspVBSStatement'\n  autocmd FileType vim\n        \\ let b:endwise_addition = 'end&' |\n        \\ let b:endwise_words = 'fu\\%[nction],wh\\%[ile],if,for,try' |\n        \\ let b:endwise_syngroups = 'vimFuncKey,vimNotFunc,vimCommand'\n  autocmd FileType c,cpp,xdefaults\n        \\ let b:endwise_addition = '#endif' |\n        \\ let b:endwise_words = '#if,#ifdef,#ifndef' |\n        \\ let b:endwise_pattern = '^\\s*#\\%(if\\|ifdef\\|ifndef\\)\\s\\+.\\+$' |\n        \\ let b:endwise_syngroups = 'cPreCondit,cCppInWrapper,xdefaultsPreProc'\n  autocmd FileType objc\n        \\ let b:endwise_addition = '@end' |\n        \\ let b:endwise_words = '@interface,@implementation' |\n        \\ let b:endwise_pattern = '\\v^\\s*\\@%(interface|implementation)\\s+.+$' |\n        \\ let b:endwise_syngroups = 'objcObjDef'\n  autocmd FileType matlab\n        \\ let b:endwise_addition = '\\=submatch(0)==\"{\" ? \"}\" : \"end\"' |\n        \\ let b:endwise_words = 'function,if,for' |\n        \\ let b:endwise_syngroups = 'matlabStatement,matlabFunction,matlabConditional,matlabRepeat'\naugroup END \" }}}1\n\n\" Maps {{{1\n\nif maparg(\"<Plug>DiscretionaryEnd\") == \"\"\n  inoremap <silent> <SID>DiscretionaryEnd <C-R>=<SID>crend(0)<CR>\n  inoremap <silent> <SID>AlwaysEnd        <C-R>=<SID>crend(1)<CR>\n  imap    <script> <Plug>DiscretionaryEnd <SID>DiscretionaryEnd\n  imap    <script> <Plug>AlwaysEnd        <SID>AlwaysEnd\nendif\n\nif !exists('g:endwise_no_mappings')\n  if maparg('<CR>','i') =~# '<C-R>=.*crend(.)<CR>\\|<\\%(Plug\\|SNR\\|SID\\)>.*End'\n    \" Already mapped\n  elseif maparg('<CR>','i') =~ '<CR>'\n    exe \"imap <script> <C-X><CR> \".maparg('<CR>','i').\"<SID>AlwaysEnd\"\n    exe \"imap <script> <CR>      \".maparg('<CR>','i').\"<SID>DiscretionaryEnd\"\n  elseif maparg('<CR>','i') =~ '<Plug>\\w\\+CR'\n    exe \"imap <C-X><CR> \".maparg('<CR>', 'i').\"<Plug>AlwaysEnd\"\n    exe \"imap <CR> \".maparg('<CR>', 'i').\"<Plug>DiscretionaryEnd\"\n  else\n    imap <C-X><CR> <CR><Plug>AlwaysEnd\n    imap <CR>      <CR><Plug>DiscretionaryEnd\n  endif\nendif\n\n\" }}}1\n\n\" Code {{{1\n\nfunction! s:mysearchpair(beginpat,endpat,synpat)\n  let g:endwise_syntaxes = \"\"\n  let s:lastline = line('.')\n  call s:synname()\n  let line = searchpair(a:beginpat,'',a:endpat,'Wn','<SID>synname() !~# \"^'.substitute(a:synpat,'\\\\','\\\\\\\\','g').'$\"',line('.')+50)\n  return line\nendfunction\n\nfunction! s:crend(always)\n  let n = \"\"\n  if !exists(\"b:endwise_addition\") || !exists(\"b:endwise_words\") || !exists(\"b:endwise_syngroups\")\n    return n\n  end\n  let synpat  = '\\%('.substitute(b:endwise_syngroups,',','\\\\|','g').'\\)'\n  let wordchoice = '\\%('.substitute(b:endwise_words,',','\\\\|','g').'\\)'\n  if exists(\"b:endwise_pattern\")\n    let beginpat = substitute(b:endwise_pattern,'&',substitute(wordchoice,'\\\\','\\\\&','g'),'g')\n  else\n    let beginpat = '\\<'.wordchoice.'\\>'\n  endif\n  let lnum = line('.') - 1\n  let space = matchstr(getline(lnum),'^\\s*')\n  let col  = match(getline(lnum),beginpat) + 1\n  let word  = matchstr(getline(lnum),beginpat)\n  let endword = substitute(word,'.*',b:endwise_addition,'')\n  let y = n.endword.\"\\<C-O>O\"\n  let endpat = '\\w\\@<!'.endword.'\\w\\@!'\n  if a:always\n    return y\n  elseif col <= 0 || synIDattr(synID(lnum,col,1),'name') !~ '^'.synpat.'$'\n    return n\n  elseif getline('.') !~ '^\\s*#\\=$'\n    return n\n  endif\n  let line = s:mysearchpair(beginpat,endpat,synpat)\n  \" even is false if no end was found, or if the end found was less\n  \" indented than the current line\n  let even = strlen(matchstr(getline(line),'^\\s*')) >= strlen(space)\n  if line == 0\n    let even = 0\n  endif\n  if !even && line == line('.') + 1\n    return y\n  endif\n  if even\n    return n\n  endif\n  return y\nendfunction\n\nfunction! s:synname()\n  \" Checking this helps to force things to stay in sync\n  while s:lastline < line('.')\n    let s = synIDattr(synID(s:lastline,indent(s:lastline)+1,1),'name')\n    let s:lastline = nextnonblank(s:lastline + 1)\n  endwhile\n\n  let s = synIDattr(synID(line('.'),col('.'),1),'name')\n  let g:endwise_syntaxes = g:endwise_syntaxes . line('.').','.col('.').\"=\".s.\"\\n\"\n  let s:lastline = line('.')\n  return s\nendfunction\n\n\" }}}1\n\n\" vim:set sw=2 sts=2:\n"
  },
  {
    "path": ".vim/bundle/vim-fireplace/CONTRIBUTING.markdown",
    "content": "## Contributing\n\nOpen [GitHub issues][] for bug reports and feature requests.\n\nI'm a stickler for [commit messages][], so if you send me a pull\nrequest with so much as superfluous period in the subject line, I will\nreject it, then TP your house.\n\n[GitHub issues]: http://github.com/tpope/vim-fireplace/issues\n[commit messages]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html\n"
  },
  {
    "path": ".vim/bundle/vim-fireplace/README.markdown",
    "content": "# fireplace.vim\n\nThere's a REPL in fireplace, but you probably wouldn't have noticed if I hadn't\ntold you.  Such is the way with fireplace.vim.  By the way, this plugin is for\nClojure.\n\nFireplace.vim used to be called foreplay.vim, but it was renamed so Java\ndevelopers wouldn't have to speak in hushed tones.\n\n## Installation\n\nFireplace.vim doesn't provide indenting or syntax highlighting, so you'll want\n[a set of Clojure runtime files](https://github.com/guns/vim-clojure-static).\nYou might also want [classpath.vim][] to run code when no REPL is available.\n\nIf you don't have a preferred installation method, I recommend\ninstalling [pathogen.vim](https://github.com/tpope/vim-pathogen), and\nthen simply copy and paste:\n\n    cd ~/.vim/bundle\n    git clone git://github.com/tpope/vim-fireplace.git\n    git clone git://github.com/tpope/vim-classpath.git\n    git clone git://github.com/guns/vim-clojure-static.git\n\nOnce help tags have been generated, you can view the manual with\n`:help fireplace`.\n\n## Features\n\nThis list isn't exhaustive; see the `:help` for details.\n\n### Transparent setup\n\nFireplace.vim talks to nREPL.  With Leiningen, it connects automatically based\non `target/repl-port`, otherwise it's just a `:Connect` away.  You can connect\nto multiple instances of nREPL for different projects, and it will use the\nright one automatically.  ClojureScript support is just as seamless with\n[Piggieback][].\n\nThe only external dependency is that you have either a Vim with Python support\ncompiled in, or `python` in your path.\n\nOh, and if you don't have an nREPL connection, installing [classpath.vim][]\nlets it fall back to using `java clojure.main`, using a class path based on\nyour Leiningen or Maven config.  It's a bit slow, but a two-second delay is\nvastly preferable to being forced out of my flow for a single command, in my\nbook.\n\n[Piggieback]: https://github.com/cemerick/piggieback\n[classpath.vim]: https://github.com/tpope/vim-classpath\n\n### Not quite a REPL\n\nYou know that one plugin that provides a REPL in a split window and works\nabsolutely flawlessly, never breaking just because you did something innocuous\nlike backspace through part of the prompt?  No?  Such a shame, you really\nwould have liked it.\n\nI've taken a different approach in fireplace.vim.  `cq`  (Think \"Clojure\nQuasi-REPL\") is the prefix for a set of commands that bring up a *command-line\nwindow* — the same thing you get when you hit `q:` — but set up for Clojure\ncode.\n\n`cqq` prepopulates the command-line window with the expression under the\ncursor.  `cqc` gives you a blank line in insert mode.\n\n### Evaluating from the buffer\n\nStandard stuff here.  `:Eval` evaluates a range (`:%Eval` gets the whole\nfile), `:Require` requires a namespace with `:reload` (`:Require!` does\n`:reload-all`), either the current buffer or a given argument.  There's a `cp`\noperator that evaluates a given motion (`cpp` for the outermost form under the\ncursor). `cm` and `c1m` are similar, but they only run\n`clojure.walk/macroexpand-all` and `macroexpand-1` instead of evaluating the\nform entirely.\n\nAny failed evaluation loads the stack trace into the location list, which\ncan be easily accessed with `:lopen`.\n\n### Navigating and Comprehending\n\nI'm new to Clojure, so stuff that helps me understand code is a top priority.\n\n* `:Source`, `:Doc`, `:FindDoc`, and `:Apropos`, which map to the underlying\n  `clojure.repl` macro (with tab complete, of course).\n\n* `K` is mapped to look up the symbol under the cursor with `doc`.\n\n* `[d` is mapped to look up the symbol under the cursor with `source`.\n\n* `[<C-D>` jumps to the definition of a symbol (even if it's inside a jar\n  file).\n\n* `gf`, everybody's favorite \"go to file\" command, works on namespaces.\n\nWhere possible, I favor enhancing built-ins over inventing a bunch of\n`<Leader>` maps.\n\n### Omnicomplete\n\nBecause why not?  It works in the quasi-REPL too.\n\n## FAQ\n\n> Why does it take so long for Vim to startup?\n\nSee the [classpath.vim FAQ][].  You can uninstall classpath.vim if you only\ncare about nREPL support.\n\n[classpath.vim FAQ]: https://github.com/tpope/vim-classpath#FAQ\n\n## Self-Promotion\n\nLike fireplace.vim? Follow the repository on\n[GitHub](https://github.com/tpope/vim-fireplace). And if\nyou're feeling especially charitable, follow [tpope](http://tpo.pe/) on\n[Twitter](http://twitter.com/tpope) and\n[GitHub](https://github.com/tpope).\n\n## License\n\nCopyright © Tim Pope.  Distributed under the same terms as Vim itself.\nSee `:help license`.\n"
  },
  {
    "path": ".vim/bundle/vim-fireplace/autoload/fireplace/nrepl.vim",
    "content": "\" Fireplace nREPL session\n\nif exists(\"g:autoloaded_fireplace_nrepl\")\n  finish\nendif\nlet g:autoloaded_fireplace_nrepl = 1\n\nfunction! s:function(name) abort\n  return function(substitute(a:name,'^s:',matchstr(expand('<sfile>'), '<SNR>\\d\\+_'),''))\nendfunction\n\nif !exists('s:id')\n  let s:vim_id = localtime()\n  let s:id = 0\nendif\nfunction! fireplace#nrepl#next_id() abort\n  let s:id += 1\n  return 'fireplace-'.hostname().'-'.s:vim_id.'-'.s:id\nendfunction\n\nif !exists('g:fireplace_nrepl_sessions')\n  let g:fireplace_nrepl_sessions = {}\nendif\n\naugroup fireplace_nrepl_connection\n  autocmd!\n  autocmd VimLeave * for s:session in values(g:fireplace_nrepl_sessions)\n        \\ |   call s:session.close()\n        \\ | endfor\naugroup END\n\nfunction! fireplace#nrepl#for(transport) abort\n  let client = copy(s:nrepl)\n  let client.transport = a:transport\n  let client.session = client.process({'op': 'clone', 'session': 0})['new-session']\n  let response = client.process({'op': 'eval', 'code':\n        \\ '(do (println \"success\") (symbol (str (System/getProperty \"path.separator\") (System/getProperty \"java.class.path\"))))'})\n  let client._path = response.value[-1]\n  if has_key(response, 'out')\n    let g:fireplace_nrepl_sessions[client.session] = client\n  else\n    unlet client.session\n  endif\n  return client\nendfunction\n\nfunction! s:nrepl_close() dict abort\n  if has_key(self, 'session')\n    try\n      unlet! g:fireplace_nrepl_sessions[self.session]\n      call self.message({'op': 'close'}, 'ignore')\n    catch\n    finally\n      unlet self.session\n    endtry\n  endif\n  call self.transport.close()\n  return self\nendfunction\n\nfunction! s:nrepl_clone() dict abort\n  let client = copy(self)\n  if has_key(self, 'session')\n    let client.session = client.process({'op': 'clone'})['new-session']\n    let g:fireplace_nrepl_sessions[client.session] = client\n  endif\n  return client\nendfunction\n\nfunction! s:nrepl_path() dict abort\n  return split(self._path[1:-1], self._path[0])\nendfunction\n\nfunction! fireplace#nrepl#combine(responses)\n  let combined = {'status': [], 'session': []}\n  for response in a:responses\n    for key in keys(response)\n      if key ==# 'id' || key ==# 'ns'\n        let combined[key] = response[key]\n      elseif key ==# 'value'\n        let combined.value = extend(get(combined, 'value', []), [response.value])\n      elseif key ==# 'status'\n        for entry in response[key]\n          if index(combined[key], entry) < 0\n            call extend(combined[key], [entry])\n          endif\n        endfor\n      elseif key ==# 'session'\n        if index(combined[key], response[key]) < 0\n          call extend(combined[key], [response[key]])\n        endif\n      elseif type(response[key]) == type('')\n        let combined[key] = get(combined, key, '') . response[key]\n      else\n        let combined[key] = response[key]\n      endif\n    endfor\n  endfor\n  return combined\nendfunction\n\nfunction! s:nrepl_process(msg) dict abort\n  let combined = fireplace#nrepl#combine(self.message(a:msg))\n  if index(combined.status, 'error') < 0\n    return combined\n  endif\n  throw 'nREPL: ' . tr(combined.status[0], '-', ' ')\nendfunction\n\nfunction! s:nrepl_eval(expr, ...) dict abort\n  let msg = {\"op\": \"eval\"}\n  let msg.code = a:expr\n  let options = a:0 ? a:1 : {}\n  if has_key(options, 'ns')\n    let msg.ns = options.ns\n  elseif has_key(self, 'ns')\n    let msg.ns = self.ns\n  endif\n  if has_key(options, 'session')\n    let msg.session = options.session\n  endif\n  let msg.id = fireplace#nrepl#next_id()\n  if has_key(options, 'file_path')\n    let msg.op = 'load-file'\n    let msg['file-path'] = options.file_path\n    let msg['file-name'] = fnamemodify(options.file_path, ':t')\n    if has_key(msg, 'ns')\n      let msg.file = \"(in-ns '\".msg.ns.\") \".msg.code\n      call remove(msg, 'ns')\n    else\n      let msg.file = msg.code\n    endif\n    call remove(msg, 'code')\n  endif\n  try\n    let response = self.process(msg)\n  catch /^Vim:Interrupt$/\n    if has_key(msg, 'session')\n      call self.message({'op': 'interrupt', 'session': msg.session, 'interrupt-id': msg.id}, 'ignore')\n    endif\n    throw 'Clojure: Interrupt'\n  endtry\n  if has_key(response, 'ns') && !has_key(options, 'ns')\n    let self.ns = response.ns\n  endif\n\n  if has_key(response, 'ex') && !empty(get(msg, 'session', 1))\n    let response.stacktrace = s:extract_last_stacktrace(self)\n  endif\n\n  if has_key(response, 'value')\n    let response.value = response.value[-1]\n  endif\n  return response\nendfunction\n\nfunction! s:extract_last_stacktrace(nrepl) abort\n  let format_st = '(clojure.core/symbol (clojure.core/str \"\\n\\b\" (clojure.core/apply clojure.core/str (clojure.core/interleave (clojure.core/repeat \"\\n\") (clojure.core/map clojure.core/str (.getStackTrace *e)))) \"\\n\\b\\n\"))'\n  let stacktrace = split(get(split(a:nrepl.process({'op': 'eval', 'code': '['.format_st.' *3 *2 *1]', 'session': a:nrepl.session}).value[0], \"\\n\\b\\n\"), 1, \"\"), \"\\n\")\n  call a:nrepl.message({'op': 'eval', 'code': '(nth *1 1)', 'session': a:nrepl.session})\n  call a:nrepl.message({'op': 'eval', 'code': '(nth *2 2)', 'session': a:nrepl.session})\n  call a:nrepl.message({'op': 'eval', 'code': '(nth *3 3)', 'session': a:nrepl.session})\n  return stacktrace\nendfunction\n\nlet s:keepalive = tempname()\ncall writefile([getpid()], s:keepalive)\n\nfunction! s:nrepl_prepare(msg) dict abort\n  let msg = copy(a:msg)\n  if !has_key(msg, 'id')\n    let msg.id = fireplace#nrepl#next_id()\n  endif\n  if empty(get(msg, 'session', 1))\n    unlet msg.session\n  elseif !has_key(self, 'session')\n    if &verbose\n      echohl WarningMSG\n      echo \"nREPL: server has bug preventing session support\"\n      echohl None\n    endif\n    unlet! msg.session\n  elseif !has_key(msg, 'session')\n    let msg.session = self.session\n  endif\n  return msg\nendfunction\n\nfunction! fireplace#nrepl#callback(body, type, fn)\n  let response = {'body': a:body, 'type': a:type}\n  if has_key(a:body, 'session')\n    let response.session = g:fireplace_nrepl_sessions[a:body.session]\n  endif\n  call call(a:fn, [response])\nendfunction\n\nfunction! s:nrepl_call(msg, ...) dict abort\n  let terms = a:0 ? a:1 : ['done']\n  let sels = a:0 > 1 ? a:2 : {}\n  return call(self.transport.call, [a:msg, terms, sels] + a:000[2:-1], self.transport)\nendfunction\n\nfunction! s:nrepl_message(msg, ...) dict abort\n  let msg = self.prepare(a:msg)\n  let sel = {'id': msg.id}\n  return call(self.call, [msg, ['done'], sel] + a:000, self)\nendfunction\n\nlet s:nrepl = {\n      \\ 'close': s:function('s:nrepl_close'),\n      \\ 'clone': s:function('s:nrepl_clone'),\n      \\ 'prepare': s:function('s:nrepl_prepare'),\n      \\ 'call': s:function('s:nrepl_call'),\n      \\ 'message': s:function('s:nrepl_message'),\n      \\ 'eval': s:function('s:nrepl_eval'),\n      \\ 'path': s:function('s:nrepl_path'),\n      \\ 'process': s:function('s:nrepl_process')}\n"
  },
  {
    "path": ".vim/bundle/vim-fireplace/autoload/nrepl/fireplace_connection.vim",
    "content": "\" autoload/nrepl/fireplace_connection.vim\n\" Maintainer:   Tim Pope <http://tpo.pe/>\n\nif exists(\"g:autoloaded_nrepl_fireplace_connection\") || &cp\n  finish\nendif\nlet g:autoloaded_nrepl_fireplace_connection = 1\n\nlet s:python_dir = fnamemodify(expand(\"<sfile>\"), ':p:h:h:h') . '/python'\n\nfunction! s:function(name) abort\n  return function(substitute(a:name,'^s:',matchstr(expand('<sfile>'), '<SNR>\\d\\+_'),''))\nendfunction\n\n\" Bencode {{{1\n\nfunction! nrepl#fireplace_connection#bencode(value) abort\n  if type(a:value) == type(0)\n    return 'i'.a:value.'e'\n  elseif type(a:value) == type('')\n    return strlen(a:value).':'.a:value\n  elseif type(a:value) == type([])\n    return 'l'.join(map(copy(a:value),'nrepl#fireplace_connection#bencode(v:val)'),'').'e'\n  elseif type(a:value) == type({})\n    return 'd'.join(values(map(copy(a:value),'nrepl#fireplace_connection#bencode(v:key).nrepl#fireplace_connection#bencode(v:val)')),'').'e'\n  else\n    throw \"Can't bencode \".string(a:value)\n  endif\nendfunction\n\n\" }}}1\n\nfunction! s:shellesc(arg) abort\n  if a:arg =~ '^[A-Za-z0-9_/.-]\\+$'\n    return a:arg\n  elseif &shell =~# 'cmd'\n    return '\"'.substitute(substitute(a:arg, '\"', '\"\"\"\"', 'g'), '%', '\"%\"', 'g').'\"'\n  else\n    let escaped = shellescape(a:arg)\n    if &shell =~# 'sh' && &shell !~# 'csh'\n      return substitute(escaped, '\\\\\\n', '\\n', 'g')\n    else\n      return escaped\n    endif\n  endif\nendfunction\n\nif !exists('s:id')\n  let s:vim_id = localtime()\n  let s:id = 0\nendif\nfunction! s:id() abort\n  let s:id += 1\n  return 'fireplace-'.hostname().'-'.s:vim_id.'-'.s:id\nendfunction\n\nfunction! nrepl#fireplace_connection#prompt() abort\n  return fireplace#input_host_port()\nendfunction\n\nfunction! nrepl#fireplace_connection#open(arg) abort\n  if a:arg =~# '^\\d\\+$'\n    let host = 'localhost'\n    let port = a:arg\n  elseif a:arg =~# ':\\d\\+$'\n    let host = matchstr(a:arg, '.*\\ze:')\n    let port = matchstr(a:arg, ':\\zs.*')\n  else\n    throw \"nREPL: Couldn't find [host:]port in \" . a:arg\n  endif\n  let transport = deepcopy(s:nrepl_transport)\n  let transport.host = host\n  let transport.port = port\n  return fireplace#nrepl#for(transport)\nendfunction\n\nfunction! s:nrepl_transport_close() dict abort\n  return self\nendfunction\n\nlet s:keepalive = tempname()\ncall writefile([getpid()], s:keepalive)\n\nfunction! s:nrepl_transport_command(cmd, args) dict abort\n  return 'python'\n        \\ . ' ' . s:shellesc(s:python_dir.'/nrepl_fireplace.py')\n        \\ . ' ' . s:shellesc(self.host)\n        \\ . ' ' . s:shellesc(self.port)\n        \\ . ' ' . s:shellesc(s:keepalive)\n        \\ . ' ' . s:shellesc(a:cmd)\n        \\ . ' ' . join(map(copy(a:args), 's:shellesc(nrepl#fireplace_connection#bencode(v:val))'), ' ')\nendfunction\n\nfunction! s:nrepl_transport_dispatch(cmd, ...) dict abort\n  let in = self.command(a:cmd, a:000)\n  let out = system(in)\n  if !v:shell_error\n    return eval(out)\n  endif\n  throw 'nREPL: '.out\nendfunction\n\nfunction! s:nrepl_transport_call(msg, terms, sels, ...) dict abort\n  let payload = nrepl#fireplace_connection#bencode(a:msg)\n  let response = self.dispatch('call', payload, a:terms, a:sels)\n  if !a:0\n    return response\n  elseif a:1 !=# 'ignore'\n    return map(response, 'fireplace#nrepl#callback(v:val, \"synchronous\", a:1)')\n  endif\nendfunction\n\nlet s:nrepl_transport = {\n      \\ 'close': s:function('s:nrepl_transport_close'),\n      \\ 'command': s:function('s:nrepl_transport_command'),\n      \\ 'dispatch': s:function('s:nrepl_transport_dispatch'),\n      \\ 'call': s:function('s:nrepl_transport_call')}\n\nif !has('python') || $FIREPLACE_NO_IF_PYTHON\n  finish\nendif\n\nif !exists('s:python')\n  exe 'python sys.path.insert(0, \"'.escape(s:python_dir, '\\\"').'\")'\n  let s:python = 1\n  python import nrepl_fireplace\nelse\n  python reload(nrepl_fireplace)\nendif\n\npython << EOF\nimport vim\n\ndef fireplace_let(var, value):\n  return vim.command('let ' + var + ' = ' + nrepl_fireplace.vim_encode(value))\n\ndef fireplace_check():\n  vim.eval('getchar(1)')\n\ndef fireplace_repl_dispatch(command, *args):\n  try:\n    fireplace_let('out', nrepl_fireplace.dispatch(vim.eval('self.host'), vim.eval('self.port'), fireplace_check, None, command, *args))\n  except Exception, e:\n    fireplace_let('err', str(e))\nEOF\n\nfunction! s:nrepl_transport_dispatch(command, ...) dict abort\n  python fireplace_repl_dispatch(vim.eval('a:command'), *vim.eval('a:000'))\n  if !exists('err')\n    return out\n  endif\n  throw 'nREPL Connection Error: '.err\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-fireplace/compiler/lein.vim",
    "content": "\" Vim compiler file\n\nif exists(\"current_compiler\")\n  finish\nendif\nlet current_compiler = \"lein\"\n\nCompilerSet makeprg=lein\nCompilerSet errorformat=%+G,fireplace\n"
  },
  {
    "path": ".vim/bundle/vim-fireplace/doc/fireplace.txt",
    "content": "*fireplace.txt*  Clojure REPL tease\n\nAuthor:  Tim Pope <http://tpo.pe/>\nLicense: Same terms as Vim itself (see |license|)\n\nThis plugin is only available if 'compatible' is not set.\n\n                                                *fireplace*\nYou need Clojure runtime files to use this plugin.  Try vim-clojure-static.\n\nCONNECTING TO A REPL                            *fireplace-connect*\n\nConnecting to lein repl happens automatically.  If you have a different setup,\nyou can connect by hand.\n\n                                                *fireplace-:Connect*\n:Connect {proto}://{host}:{port} {path}\n                        Connect to a REPL server.  The path is the root of the\n                        project that the REPL applies to.\n\n:Connect                Interactively prompt for the options to connect to a\n                        REPL server.\n\nThe REPL is used for the commands below. If no REPL is found for the current\nbuffer and classpath.vim is installed, java (or $JAVA_CMD) is invoked\ndirectly, which can be quite slow depending on your setup.\n\nThe only adapter shipped with fireplace.vim is for nREPL.  You need either\n|if_pyth| or the python command in your PATH.\n\n                        *fireplace-piggieback* *fireplace-clojurescript*\nClojureScript is can be evaled with Piggieback if the appropriate nREPL\nmiddleware is loaded.  https://github.com/cemerick/piggieback. Be aware that\nyour ClojureScript files must be available on the classpath for this to work\nproperly.\n\n                                                *fireplace-:Piggieback*\n:Piggieback [{env}]     Create a new nREPL session and invoke\n                        cemerick.piggieback/cljs-repl with the given or\n                        default (Rhino) environment.  This will also happen\n                        automatically on first eval in a ClojureScript buffer\n                        if not invoked explicitly.\n\n:Piggieback!            Terminate the most recently created piggieback\n                        session.\n\nLEININGEN                                       *fireplace-leiningen*\n\nIn addition to automatic repl connection, Clojure buffers in a Leiningen\nproject will automatically have their 'makeprg' set to lein and 'efm' set to\n\"%+G,fireplace\".  This combination enables `:make test` to run `lein test` and\nparse the stacktraces in the results.\n\nDOCUMENTATION                                   *fireplace-documentation*\n\n                                                *fireplace-:Doc*\n:Doc {symbol}           Show the docs for the given symbol.\n\n                                                *fireplace-:Javadoc*\n:Javadoc {class}        Open the java docs for the given class in a browser.\n\n                                                *fireplace-K*\nK                       Look up docs for keyword under cursor.\n\n                                                *fireplace-:FindDoc*\n:FindDoc {arg}          Wrapper around (clojure.repl/find-doc ...).\n\n                                                *fireplace-:Apropos*\n:Apropos {arg}          Wrapper around (clojure.repl/apropos ...).\n\n                                                *fireplace-:Source*\n:Source {symbol}        Show the source for the given symbol.\n\n                                                *fireplace-[d*\n[d                      Show source for keyword under cursor.\n]d\n\nNAVIGATING                                      *fireplace-navigating*\n\nThese commands will never use a remote REPL, only a local one, as file paths\non a remote server wouldn't be very useful locally.\n\n                                                *fireplace-[_CTRL-D*\n[<C-D>                  Jump to the source of the keyword under the cursor.\n]<C-D>\n\n                                                *fireplace-CTRL-W_CTRL-D*\n<C-W><C-D>              Jump to the source of the keyword under the cursor in\n<C-W>d                  a split.\n\n                                                *fireplace-gf*\ngf                      Go to the file for the namespace under the cursor.\n\n                                                *fireplace-:Djump*\n:Djump {symbol}         Jump to the definition for the given symbol.\n\n                                                *fireplace-:Dsplit*\n:Dsplit {symbol}        Jump to the definition for the given symbol in a\n                        split.\n\n                                                *fireplace-:A*\n:A                      In a test file, edit the implementation, and vice\n                        versa.  Basically adds or removes -test from the end\n                        of the current namespace and searches for it in the\n                        class path.\n\n                                                *fireplace-:AS*\n:AS                     Like :A, but in a split.\n\n                                                *fireplace-:AV*\n:AV                     Like :A, but in a vertical split.\n\n                                                *fireplace-:AT*\n:AT                     Like :A, but in a tab.\n\nEVALUATING CODE                                 *fireplace-eval*\n\nAll code is evaluated in the namespace of the current file, requiring it if\nnecessary.  If the current file sits outside the class path (project.clj, for\nexample), the user namespace is used instead.  If an exception occurs, the\nstack trace is loaded into the |location-list|.  Use |:lopen| to view it.\n\n                                                *fireplace-:Require*\n:Require [ns]           Require :reload the given/current namespace.\n\n                                                *fireplace-:Require!*\n:Require! [ns]          Require :reload-all the given/current namespace.\n\n                                                *fireplace-:Eval*\n:Eval                   Eval/print the outermost expression for the current\n                        line.\n\n:{range}Eval            Eval/print the given range.\n\n:Eval {expr}            Eval/print the given expression.\n\n                                                *fireplace-:Eval!*\n:[range]Eval!           Eval the given range or outermost expression and\n                        replace it with its result.\n\n:[range]Eval! {expr}    Eval the given expression and insert it after\n                        the given range or current line.\n\n                                                *fireplace-cp*\ncp{motion}              Eval/print the code indicated by {motion}.\n\ncpp                     Eval/print the outermost form at the cursor.\n\n                                                *fireplace-cpr*\ncpr                     Eval a require :reload form.\n\n                                                *fireplace-c!*\nc!{motion}              Eval/replace the code indicated by {motion}.\n\nc!!                     Eval/replace the innermost form at the cursor.\n\n                                                *fireplace-cm*\ncm{motion}              Fully macroexpand the code indicated by {motion}.\n\n                                                *fireplace-cmm*\ncmm                     Fully macroexpand the innermost form at the cursor.\n\n                                                *fireplace-c1m*\nc1m{motion}             Macroexpand the code indicated by {motion} once.\n\n                                                *fireplace-c1mm*\nc1mm                    Macroexpand the innermost form at the cursor once.\n\n                                                *fireplace-cqp*\ncqp                     Bring up a prompt for code to eval/print.\n\n                                                *fireplace-cqc*\ncqc                     Bring up a |command-line-window| for code to\n                        eval/print.  Equivalent to cqp<C-F>i.\n\n                                                *fireplace-cq*\ncq{motion}              Bring up a |command-line-window| with text indicated\n                        by {motion} prepopulated.\n\n                                                *fireplace-:Last*\n:Last                   Open the result of the last evaluation in the preview\n                        window.  Use :2Last to get the next-to-last result,\n                        and so on.  Once the window is open, cycle to older\n                        and newer entries with |:lprevious| and |:lnext|.\n\nAnd insert mode:\n\n                                                *fireplace-i_CTRL-R_(*\n<C-R>(                  Evaluate the given expression and insert the result.\n\nThere's omnicomplete on |CTRL-X_CTRL-O|, which works in Clojure buffers and\nin the |command-line-window|, and tab complete at the cqp prompt.\n\nABOUT                                           *fireplace-about*\n\nGrab the latest version or report a bug on GitHub:\n\nhttp://github.com/tpope/vim-fireplace\n\n vim:tw=78:et:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/vim-fireplace/plugin/fireplace/zip.vim",
    "content": "\" fireplace/zip.vim: zip.vim monkey patch to allow access from quickfix\n\" Maintainer:   Tim Pope <http://tpo.pe>\n\nif exists(\"g:loaded_zip\") || &cp\n  finish\nendif\n\nruntime! autoload/zip.vim\n\n\" Copied and pasted verbatim from autoload/zip.vim.\n\nfun! zip#Read(fname,mode)\n\"  call Dfunc(\"zip#Read(fname<\".a:fname.\">,mode=\".a:mode.\")\")\n  let repkeep= &report\n  set report=10\n\n  if has(\"unix\")\n   let zipfile = substitute(a:fname,'zipfile:\\(.\\{-}\\)::[^\\\\].*$','\\1','')\n   let fname   = substitute(a:fname,'zipfile:.\\{-}::\\([^\\\\].*\\)$','\\1','')\n  else\n   let zipfile = substitute(a:fname,'^.\\{-}zipfile:\\(.\\{-}\\)::[^\\\\].*$','\\1','')\n   let fname   = substitute(a:fname,'^.\\{-}zipfile:.\\{-}::\\([^\\\\].*\\)$','\\1','')\n   let fname = substitute(fname, '[', '[[]', 'g')\n  endif\n\"  call Decho(\"zipfile<\".zipfile.\">\")\n\"  call Decho(\"fname  <\".fname.\">\")\n\n  \" Changes for fireplace.\n  let temp = tempname()\n  let fn = expand('%:p')\n  exe \"sil! ! \".g:zip_unzipcmd.\" -p -- \".shellescape(zipfile,1).\" \".shellescape(fnameescape(fname),1). ' > '.temp\n  silent exe 'keepalt file '.temp\n  silent keepjumps edit!\n  silent exe 'keepalt file '.fnameescape(fn)\n  call delete(temp)\n  filetype detect\n\n  \" Resume regularly scheduled programming.\n  set nomod\nendfun\n"
  },
  {
    "path": ".vim/bundle/vim-fireplace/plugin/fireplace.vim",
    "content": "\" fireplace.vim - Clojure REPL tease\n\" Maintainer:   Tim Pope <http://tpo.pe/>\n\nif exists(\"g:loaded_fireplace\") || v:version < 700 || &cp\n  finish\nendif\nlet g:loaded_fireplace = 1\n\n\" File type {{{1\n\naugroup fireplace_file_type\n  autocmd!\n  autocmd BufNewFile,BufReadPost *.clj setfiletype clojure\naugroup END\n\n\" }}}1\n\" Escaping {{{1\n\nfunction! s:str(string) abort\n  return '\"' . escape(a:string, '\"\\') . '\"'\nendfunction\n\nfunction! s:qsym(symbol) abort\n  if a:symbol =~# '^[[:alnum:]?*!+/=<>.:-]\\+$'\n    return \"'\".a:symbol\n  else\n    return '(symbol '.s:str(a:symbol).')'\n  endif\nendfunction\n\nfunction! s:to_ns(path) abort\n  return tr(substitute(a:path, '\\.\\w\\+$', '', ''), '\\/_', '..-')\nendfunction\n\n\" }}}1\n\" Completion {{{1\n\nlet s:jar_contents = {}\n\nfunction! fireplace#jar_contents(path) abort\n  if !exists('s:zipinfo')\n    if executable('zipinfo')\n      let s:zipinfo = 'zipinfo -1 '\n    elseif executable('python')\n      let s:zipinfo = 'python -c '.shellescape('import zipfile, sys; print chr(10).join(zipfile.ZipFile(sys.argv[1]).namelist())').' '\n    else\n      let s:zipinfo = ''\n    endif\n  endif\n\n  if !has_key(s:jar_contents, a:path) && has('python')\n    python import vim, zipfile\n    python vim.command(\"let s:jar_contents[a:path] = split('\" + \"\\n\".join(zipfile.ZipFile(vim.eval('a:path')).namelist()) + \"', \\\"\\n\\\")\")\n  elseif !has_key(s:jar_contents, a:path) && !empty(s:zipinfo)\n    let s:jar_contents[a:path] = split(system(s:zipinfo.shellescape(a:path)), \"\\n\")\n    if v:shell_error\n      let s:jar_contents[a:path] = []\n    endif\n  endif\n\n  return copy(get(s:jar_contents, a:path, []))\nendfunction\n\nfunction! fireplace#eval_complete(A, L, P) abort\n  let prefix = matchstr(a:A, '\\%(.* \\|^\\)\\%(#\\=[\\[{('']\\)*')\n  let keyword = a:A[strlen(prefix) : -1]\n  return sort(map(fireplace#omnicomplete(0, keyword), 'prefix . v:val.word'))\nendfunction\n\nfunction! fireplace#ns_complete(A, L, P) abort\n  let matches = []\n  for dir in fireplace#path()\n    if dir =~# '\\.jar$'\n      let files = filter(fireplace#jar_contents(dir), 'v:val =~# \"\\\\.clj$\"')\n    else\n      let files = split(glob(dir.\"/**/*.clj\", 1), \"\\n\")\n      call map(files, 'v:val[strlen(dir)+1 : -1]')\n    endif\n    let matches += files\n  endfor\n  return filter(map(matches, 's:to_ns(v:val)'), 'a:A ==# \"\" || a:A ==# v:val[0 : strlen(a:A)-1]')\nendfunction\n\nfunction! fireplace#omnicomplete(findstart, base) abort\n  if a:findstart\n    let line = getline('.')[0 : col('.')-2]\n    return col('.') - strlen(matchstr(line, '\\k\\+$')) - 1\n  else\n    try\n      let omnifier = '(fn [[k v]] (let [{:keys [arglists] :as m} (meta v)]' .\n            \\ ' {:word k :menu (pr-str (or arglists (symbol \"\"))) :info (str (when arglists (str arglists \"\\n\")) \"  \" (:doc m)) :kind (if arglists \"f\" \"v\")}))'\n\n      let ns = fireplace#ns()\n\n      let [aliases, namespaces, maps] = fireplace#evalparse(\n            \\ '[(ns-aliases '.s:qsym(ns).') (all-ns) '.\n            \\ '(sort-by :word (map '.omnifier.' (ns-map '.s:qsym(ns).')))]')\n\n      if a:base =~# '^[^/]*/[^/]*$'\n        let ns = matchstr(a:base, '^.*\\ze/')\n        let prefix = ns . '/'\n        let ns = get(aliases, ns, ns)\n        let keyword = matchstr(a:base, '.*/\\zs.*')\n        let results = fireplace#evalparse(\n              \\ '(sort-by :word (map '.omnifier.' (ns-publics '.s:qsym(ns).')))')\n        for r in results\n          let r.word = prefix . r.word\n        endfor\n      else\n        let keyword = a:base\n        let results = maps + map(sort(keys(aliases) + namespaces), '{\"word\": v:val.\"/\", \"kind\": \"t\", \"info\": \"\"}')\n      endif\n      if type(results) == type([])\n        return filter(results, 'a:base ==# \"\" || a:base ==# v:val.word[0 : strlen(a:base)-1]')\n      else\n        return []\n      endif\n    catch /.*/\n      return []\n    endtry\n  endif\nendfunction\n\naugroup fireplace_completion\n  autocmd!\n  autocmd FileType clojure setlocal omnifunc=fireplace#omnicomplete\naugroup END\n\n\" }}}1\n\" REPL client {{{1\n\nlet s:repl = {\"requires\": {}}\n\nif !exists('s:repls')\n  let s:repls = []\n  let s:repl_paths = {}\nendif\n\nfunction! s:repl.user_ns() abort\n  return 'user'\nendfunction\n\nfunction! s:repl.path() dict abort\n  return self.connection.path()\nendfunction\n\nfunction! s:conn_try(connection, function, ...) abort\n  try\n    return call(a:connection[a:function], a:000, a:connection)\n  catch /^\\w\\+ Connection Error:/\n    call s:unregister_connection(a:connection)\n    throw v:exception\n  endtry\nendfunction\n\nfunction! s:repl.eval(expr, options) dict abort\n  if has_key(a:options, 'ns') && a:options.ns !=# self.user_ns()\n    let error = self.preload(a:options.ns)\n    if !empty(error)\n      return error\n    endif\n  endif\n  return s:conn_try(self.connection, 'eval', a:expr, a:options)\nendfunction\n\nfunction! s:repl.message(payload, ...) dict abort\n  if has_key(a:payload, 'ns') && a:payload.ns !=# self.user_ns()\n    let ignored_error = self.preload(a:payload.ns)\n  endif\n  return call('s:conn_try', [self.connection, 'message', a:payload] + a:000, self)\nendfunction\n\nfunction! s:repl.preload(lib) dict abort\n  if !empty(a:lib) && a:lib !=# self.user_ns() && !get(self.requires, a:lib)\n    let reload = has_key(self.requires, a:lib) ? ' :reload' : ''\n    let self.requires[a:lib] = 0\n    let clone = s:conn_try(self.connection, 'clone')\n    try\n      let result = clone.eval('(ns '.self.user_ns().' (:require '.a:lib.reload.'))', {'ns': self.user_ns()})\n    finally\n      call clone.close()\n    endtry\n    let self.requires[a:lib] = !has_key(result, 'ex')\n    if has_key(result, 'ex')\n      return result\n    endif\n  endif\n  return {}\nendfunction\n\nlet s:piggieback = copy(s:repl)\n\nfunction! s:repl.piggieback(arg, ...) abort\n  if a:0 && a:1\n    if len(self.piggiebacks)\n      call remove(self.piggiebacks, 0)\n    endif\n    return {}\n  endif\n  if empty(a:arg)\n    let arg = ''\n  else\n    let arg = ' :repl-env ' . a:arg\n  endif\n  let connection = s:conn_try(self.connection, 'clone')\n  let response = connection.eval('(cemerick.piggieback/cljs-repl'.arg.')')\n\n  if empty(get(response, 'ex'))\n    call insert(self.piggiebacks, extend({'connection': connection}, deepcopy(s:piggieback)))\n    return {}\n  endif\n  call connection.close()\n  return response\nendfunction\n\nfunction! s:piggieback.user_ns() abort\n  return 'cljs.user'\nendfunction\n\nfunction! s:piggieback.eval(expr, options) abort\n  let options = copy(a:options)\n  if has_key(options, 'file_path')\n    call remove(options, 'file_path')\n  endif\n  return call(s:repl.eval, [a:expr, options], self)\nendfunction\n\nfunction! s:register_connection(conn, ...) abort\n  call insert(s:repls, extend({'connection': a:conn, 'piggiebacks': []}, deepcopy(s:repl)))\n  if a:0 && a:1 !=# ''\n    let s:repl_paths[a:1] = s:repls[0]\n  endif\n  return s:repls[0]\nendfunction\n\nfunction! s:unregister_connection(conn) abort\n  call filter(s:repl_paths, 'v:val.connection.transport isnot# a:conn.transport')\n  call filter(s:repls, 'v:val.connection.transport isnot# a:conn.transport')\nendfunction\n\n\" }}}1\n\" :Connect {{{1\n\ncommand! -bar -complete=customlist,s:connect_complete -nargs=* FireplaceConnect :exe s:Connect(<f-args>)\n\nfunction! fireplace#input_host_port() abort\n  let arg = input('Host> ', 'localhost')\n  if arg ==# ''\n    return ''\n  endif\n  echo \"\\n\"\n  let arg .= ':' . input('Port> ')\n  if arg =~# ':$'\n    return ''\n  endif\n  echo \"\\n\"\n  return arg\nendfunction\n\nfunction! s:protos() abort\n  return map(split(globpath(&runtimepath, 'autoload/*/fireplace_connection.vim'), \"\\n\"), 'fnamemodify(v:val, \":h:t\")')\nendfunction\n\nfunction! s:connect_complete(A, L, P) abort\n  let proto = matchstr(a:A, '\\w\\+\\ze://')\n  if proto ==# ''\n    let options = map(s:protos(), 'v:val.\"://\"')\n  else\n    let rest = matchstr(a:A, '://\\zs.*')\n    try\n      let options = {proto}#fireplace_connection#complete(rest)\n    catch /^Vim(let):E117/\n      let options = ['localhost:']\n    endtry\n    call map(options, 'proto.\"://\".v:val')\n  endif\n  if a:A !=# ''\n    call filter(options, 'v:val[0 : strlen(a:A)-1] ==# a:A')\n  endif\n  return options\nendfunction\n\nfunction! s:Connect(...) abort\n  if (a:0 ? a:1 : '') =~# '^\\w\\+://'\n    let [proto, arg] = split(a:1, '://')\n  elseif a:0\n    return 'echoerr '.string('Usage: :Connect proto://...')\n  else\n    let protos = s:protos()\n    if empty(protos)\n      return 'echoerr '.string('No protocols available')\n    endif\n    let proto = s:inputlist('Protocol> ', protos)\n    if proto ==# ''\n      return\n    endif\n    redraw!\n    echo ':Connect'\n    echo 'Protocol> '.proto\n    let arg = {proto}#fireplace_connection#prompt()\n  endif\n  try\n    let connection = {proto}#fireplace_connection#open(arg)\n  catch /.*/\n    return 'echoerr '.string(v:exception)\n  endtry\n  if type(connection) !=# type({}) || empty(connection)\n    return ''\n  endif\n  let client = s:register_connection(connection)\n  echo 'Connected to '.proto.'://'.arg\n  let path = fnamemodify(exists('b:java_root') ? b:java_root : fnamemodify(expand('%'), ':p:s?.*\\zs[\\/]src[\\/].*??'), ':~')\n  let root = a:0 > 1 ? expand(a:2) : input('Scope connection to: ', path, 'dir')\n  if root !=# '' && root !=# '-'\n    let s:repl_paths[fnamemodify(root, ':p:s?.\\zs[\\/]$??')] = client\n  endif\n  return ''\nendfunction\n\nfunction! s:piggieback(arg, remove) abort\n  let response = fireplace#platform().piggieback(a:arg, a:remove)\n  call s:output_response(response)\nendfunction\n\naugroup fireplace_connect\n  autocmd!\n  autocmd FileType clojure command! -bar -complete=customlist,s:connect_complete -nargs=* Connect :FireplaceConnect <args>\n  autocmd FileType clojure command!      -complete=customlist,fireplace#eval_complete -bang -nargs=* Piggieback :call s:piggieback(<q-args>, <bang>0)\naugroup END\n\n\" }}}1\n\" Java runner {{{1\n\nlet s:oneoff_pr  = tempname()\nlet s:oneoff_ex  = tempname()\nlet s:oneoff_stk = tempname()\nlet s:oneoff_in  = tempname()\nlet s:oneoff_out = tempname()\nlet s:oneoff_err = tempname()\n\nfunction! s:spawning_eval(classpath, expr, ns) abort\n  if a:ns !=# '' && a:ns !=# 'user'\n    let ns = '(require '.s:qsym(a:ns).') (in-ns '.s:qsym(a:ns).') '\n  else\n    let ns = ''\n  endif\n  call writefile([], s:oneoff_pr, 'b')\n  call writefile([], s:oneoff_ex, 'b')\n  call writefile([], s:oneoff_stk, 'b')\n  call writefile(split('(do '.a:expr.')', \"\\n\"), s:oneoff_in, 'b')\n  call writefile([], s:oneoff_out, 'b')\n  call writefile([], s:oneoff_err, 'b')\n  let java_cmd = exists('$JAVA_CMD') ? $JAVA_CMD : 'java'\n  let command = java_cmd.' -cp '.shellescape(a:classpath).' clojure.main -e ' .\n        \\ shellescape(\n        \\   '(clojure.core/binding [*out* (java.io.FileWriter. '.s:str(s:oneoff_out).')' .\n        \\   '                       *err* (java.io.FileWriter. '.s:str(s:oneoff_err).')]' .\n        \\   '  (try' .\n        \\   '    (clojure.core/require ''clojure.repl) '.ns.'(clojure.core/spit '.s:str(s:oneoff_pr).' (clojure.core/pr-str (clojure.core/eval (clojure.core/read-string (clojure.core/slurp '.s:str(s:oneoff_in).')))))' .\n        \\   '    (catch Exception e' .\n        \\   '      (clojure.core/spit *err* (.toString e))' .\n        \\   '      (clojure.core/spit '.s:str(s:oneoff_ex).' (clojure.core/class e))' .\n        \\   '      (clojure.core/spit '.s:str(s:oneoff_stk).' (clojure.core/apply clojure.core/str (clojure.core/interpose \"\\n\" (.getStackTrace e))))))' .\n        \\   '  nil)')\n  let captured = system(command)\n  let result = {}\n  let result.value = join(readfile(s:oneoff_pr, 'b'), \"\\n\")\n  let result.out   = join(readfile(s:oneoff_out, 'b'), \"\\n\")\n  let result.err   = join(readfile(s:oneoff_err, 'b'), \"\\n\")\n  let result.ex    = join(readfile(s:oneoff_ex, 'b'), \"\\n\")\n  let result.stacktrace = readfile(s:oneoff_stk)\n  call filter(result, '!empty(v:val)')\n  if v:shell_error && get(result, 'ex', '') ==# ''\n    throw 'Error running Java: '.get(split(captured, \"\\n\"), -1, '')\n  else\n    return result\n  endif\nendfunction\n\nlet s:oneoff = {}\n\nfunction! s:oneoff.user_ns() abort\n  return 'user'\nendfunction\n\nfunction! s:oneoff.path() dict abort\n  return classpath#split(self.classpath)\nendfunction\n\nfunction! s:oneoff.eval(expr, options) dict abort\n  if &verbose && !empty(get(a:options, 'session', 1))\n    echohl WarningMSG\n    echomsg \"No REPL found. Running java clojure.main ...\"\n    echohl None\n  endif\n  return s:spawning_eval(self.classpath, a:expr, get(a:options, 'ns', self.user_ns()))\nendfunction\n\nfunction! s:oneoff.message(...) abort\n  throw 'No live REPL connection'\nendfunction\n\nlet s:oneoff.piggieback = s:oneoff.message\n\n\" }}}1\n\" Client {{{1\n\nfunction! s:buf() abort\n  if exists('s:input')\n    return s:input\n  elseif has_key(s:qffiles, expand('%:p'))\n    return s:qffiles[expand('%:p')].buffer\n  else\n    return '%'\n  endif\nendfunction\n\nfunction! s:includes_file(file, path) abort\n  let file = substitute(a:file, '\\C^zipfile:\\(.*\\)::', '\\1/', '')\n  let file = substitute(file, '\\C^fugitive:[\\/][\\/]\\(.*\\)\\.git[\\/][\\/][^\\/]\\+[\\/]', '\\1', '')\n  for path in a:path\n    if file[0 : len(path)-1] ==? path\n      return 1\n    endif\n  endfor\nendfunction\n\nfunction! fireplace#path(...) abort\n  let buf = a:0 ? a:1 : s:buf()\n  for repl in s:repls\n    if s:includes_file(fnamemodify(bufname(buf), ':p'), repl.path())\n      return repl.path()\n    endif\n  endfor\n  if exists('*classpath#from_vim')\n    return classpath#split(classpath#from_vim(getbufvar(buf, '&path')))\n  endif\n  return []\nendfunction\n\nfunction! fireplace#platform(...) abort\n  silent doautocmd User FireplacePreConnect\n  let buf = a:0 ? a:1 : s:buf()\n  let root = simplify(fnamemodify(bufname(buf), ':p:s?[\\/]$??'))\n  let previous = \"\"\n  while root !=# previous\n    if has_key(s:repl_paths, root)\n      return s:repl_paths[root]\n    endif\n    let previous = root\n    let root = fnamemodify(root, ':h')\n  endwhile\n  for repl in s:repls\n    if s:includes_file(fnamemodify(bufname(buf), ':p'), repl.path())\n      return repl\n    endif\n  endfor\n  if exists('*classpath#from_vim') && fnamemodify(bufname(buf), ':e') =~# '^cljx\\=$'\n    let cp = classpath#from_vim(getbufvar(buf, '&path'))\n    return extend({'classpath': cp, 'nr': bufnr(buf)}, s:oneoff)\n  endif\n  throw ':Connect to a REPL or install classpath.vim to evaluate code'\nendfunction\n\nfunction! fireplace#client(...) abort\n  let buf = a:0 ? a:1 : s:buf()\n  let client = fireplace#platform(buf)\n  if fnamemodify(bufname(buf), ':e') ==# 'cljs'\n    if !has_key(client, 'connection')\n      throw ':Connect to a REPL to evaluate code'\n    endif\n    if empty(client.piggiebacks)\n      let result = client.piggieback('')\n      if has_key(result, 'ex')\n        return result\n      endif\n    endif\n    return client.piggiebacks[0]\n  endif\n  return client\nendfunction\n\nfunction! fireplace#message(payload, ...) abort\n  let client = fireplace#client()\n  let payload = copy(a:payload)\n  if !has_key(payload, 'ns')\n    let payload.ns = fireplace#ns()\n  endif\n  return call(client.message, [payload] + a:000, client)\nendfunction\n\nfunction! fireplace#findresource(resource, ...) abort\n  if a:resource ==# ''\n    return ''\n  endif\n  let resource = a:resource\n  if a:0 > 2 && type(a:3) == type([])\n    let suffixes = a:3\n  else\n    let suffixes = [''] + split(get(a:000, 2, ''), ',')\n  endif\n  for dir in a:0 ? a:1 : fireplace#path()\n    for suffix in suffixes\n      if fnamemodify(dir, ':e') ==# 'jar' && index(fireplace#jar_contents(dir), resource . suffix) >= 0\n        return 'zipfile:' . dir . '::' . resource . suffix\n      elseif filereadable(dir . '/' . resource . suffix)\n        return dir . (exists('+shellslash') && !&shellslash ? '\\' : '/') . resource . suffix\n      endif\n    endfor\n  endfor\n  return ''\nendfunction\n\nfunction! s:qfmassage(line, path) abort\n  let entry = {'text': a:line}\n  let match = matchlist(a:line, '\\(\\S\\+\\)\\s\\=(\\(\\S\\+\\))')\n  if !empty(match)\n    let [_, class, file; __] = match\n    if file =~# '^NO_SOURCE_FILE:' || file !~# ':'\n      let entry.resource = ''\n      let entry.lnum = 0\n    else\n      let truncated = substitute(class, '\\.[A-Za-z0-9_]\\+\\%([$/].*\\)$', '', '')\n      let entry.resource = tr(truncated, '.', '/').'/'.split(file, ':')[0]\n      let entry.lnum = split(file, ':')[-1]\n    endif\n    let entry.filename = fireplace#findresource(entry.resource, a:path)\n    if empty(entry.filename)\n      let entry.lnum = 0\n    else\n      let entry.text = class\n    endif\n  endif\n  return entry\nendfunction\n\nfunction! fireplace#quickfix_for(stacktrace) abort\n  let path = fireplace#path()\n  return map(copy(a:stacktrace), 's:qfmassage(v:val, path)')\nendfunction\n\nfunction! s:output_response(response) abort\n  if get(a:response, 'err', '') !=# ''\n    echohl ErrorMSG\n    echo substitute(a:response.err, '\\r\\|\\n$', '', 'g')\n    echohl NONE\n  endif\n  if get(a:response, 'out', '') !=# ''\n    echo substitute(a:response.out, '\\r\\|\\n$', '', 'g')\n  endif\nendfunction\n\nfunction! s:eval(expr, ...) abort\n  let options = a:0 ? copy(a:1) : {}\n  let client = fireplace#client()\n  if !has_key(options, 'ns')\n    let options.ns = fireplace#ns()\n  endif\n  return client.eval(a:expr, options)\nendfunction\n\nfunction! s:temp_response(response) abort\n  let output = []\n  if get(a:response, 'err', '') !=# ''\n    let output = map(split(a:response.err, \"\\n\"), '\";!!\".v:val')\n  endif\n  if get(a:response, 'out', '') !=# ''\n    let output = map(split(a:response.out, \"\\n\"), '\";\".v:val')\n  endif\n  if has_key(a:response, 'value')\n    let output += [a:response.value]\n  endif\n  let temp = tempname().'.clj'\n  call writefile(output, temp)\n  return temp\nendfunction\n\nif !exists('s:history')\n  let s:history = []\nendif\n\nif !exists('s:qffiles')\n  let s:qffiles = {}\nendif\n\nfunction! s:qfentry(entry) abort\n  if !has_key(a:entry, 'tempfile')\n    let a:entry.tempfile = s:temp_response(a:entry.response)\n  endif\n  let s:qffiles[a:entry.tempfile] = a:entry\n  return {'filename': a:entry.tempfile, 'text': a:entry.code, 'type': 'E'}\nendfunction\n\nfunction! s:qfhistory() abort\n  let list = []\n  for entry in reverse(s:history)\n    if !has_key(entry, 'tempfile')\n      let entry.tempfile = s:temp_response(entry.response)\n    endif\n    call extend(list, [s:qfentry(entry)])\n  endfor\n  return list\nendfunction\n\nfunction! fireplace#session_eval(expr, ...) abort\n  let response = s:eval(a:expr, a:0 ? a:1 : {})\n\n  if !empty(get(response, 'value', '')) || !empty(get(response, 'err', ''))\n    call insert(s:history, {'buffer': bufnr(''), 'code': a:expr, 'ns': fireplace#ns(), 'response': response})\n  endif\n  if len(s:history) > &history\n    call remove(s:history, &history, -1)\n  endif\n\n  if !empty(get(response, 'stacktrace', []))\n    let nr = 0\n    if has_key(s:qffiles, expand('%:p'))\n      let nr = winbufnr(s:qffiles[expand('%:p')].buffer)\n    endif\n    if nr != -1\n      call setloclist(nr, fireplace#quickfix_for(response.stacktrace))\n    endif\n  endif\n\n  call s:output_response(response)\n\n  if get(response, 'ex', '') !=# ''\n    let err = 'Clojure: '.response.ex\n  elseif has_key(response, 'value')\n    return response.value\n  else\n    let err = 'fireplace.vim: Something went wrong: '.string(response)\n  endif\n  throw err\nendfunction\n\nfunction! fireplace#eval(...) abort\n  return call('fireplace#session_eval', a:000)\nendfunction\n\nfunction! fireplace#echo_session_eval(expr, ...) abort\n  try\n    echo fireplace#session_eval(a:expr, a:0 ? a:1 : {})\n  catch /^Clojure:/\n  endtry\n  return ''\nendfunction\n\nfunction! fireplace#evalprint(expr) abort\n  return fireplace#echo_session_eval(a:expr)\nendfunction\n\nfunction! fireplace#macroexpand(fn, form) abort\n  return fireplace#evalprint('('.a:fn.' (quote '.a:form.'))')\nendfunction\n\nlet g:fireplace#reader =\n      \\ '(symbol ((fn *vimify [x]' .\n      \\  ' (cond' .\n      \\    ' (map? x)     (str \"{\" (apply str (interpose \", \" (map (fn [[k v]] (str (*vimify k) \": \" (*vimify v))) x))) \"}\")' .\n      \\    ' (coll? x)    (str \"[\" (apply str (interpose \", \" (map *vimify x))) \"]\")' .\n      \\    ' (true? x)    \"1\"' .\n      \\    ' (false? x)   \"0\"' .\n      \\    ' (number? x)  (pr-str x)' .\n      \\    ' (keyword? x) (pr-str (name x))' .\n      \\    ' :else        (pr-str (str x)))) %s))'\n\nfunction! fireplace#evalparse(expr, ...) abort\n  let options = extend({'session': 0}, a:0 ? a:1 : {})\n  let response = s:eval(printf(g:fireplace#reader, a:expr), options)\n  call s:output_response(response)\n\n  if get(response, 'ex', '') !=# ''\n    let err = 'Clojure: '.response.ex\n  elseif has_key(response, 'value')\n    return empty(response.value) ? '' : eval(response.value)\n  else\n    let err = 'fireplace.vim: Something went wrong: '.string(response)\n  endif\n  throw err\nendfunction\n\n\" }}}1\n\" Eval {{{1\n\nlet fireplace#skip = 'synIDattr(synID(line(\".\"),col(\".\"),1),\"name\") =~? \"comment\\\\|string\\\\|char\"'\n\nfunction! s:opfunc(type) abort\n  let sel_save = &selection\n  let cb_save = &clipboard\n  let reg_save = @@\n  try\n    set selection=inclusive clipboard-=unnamed clipboard-=unnamedplus\n    if a:type =~# '^.$'\n      silent exe \"normal! `<\" . a:type . \"`>y\"\n    elseif a:type ==# 'line'\n      silent exe \"normal! '[V']y\"\n    elseif a:type ==# 'block'\n      silent exe \"normal! `[\\<C-V>`]y\"\n    elseif a:type ==# 'outer'\n      call searchpair('(','',')', 'Wbcr', g:fireplace#skip)\n      silent exe \"normal! vaby\"\n    else\n      silent exe \"normal! `[v`]y\"\n    endif\n    redraw\n    return @@\n  finally\n    let @@ = reg_save\n    let &selection = sel_save\n    let &clipboard = cb_save\n  endtry\nendfunction\n\nfunction! s:filterop(type) abort\n  let reg_save = @@\n  try\n    let expr = s:opfunc(a:type)\n    let @@ = matchstr(expr, '^\\n\\+').fireplace#session_eval(expr).matchstr(expr, '\\n\\+$')\n    if @@ !~# '^\\n*$'\n      normal! gvp\n    endif\n  catch /^Clojure:/\n    return ''\n  finally\n    let @@ = reg_save\n  endtry\nendfunction\n\nfunction! s:macroexpandop(type) abort\n  call fireplace#macroexpand(\"clojure.walk/macroexpand-all\", s:opfunc(a:type))\nendfunction\n\nfunction! s:macroexpand1op(type) abort\n  call fireplace#macroexpand(\"clojure.core/macroexpand-1\", s:opfunc(a:type))\nendfunction\n\nfunction! s:printop(type) abort\n  let s:todo = s:opfunc(a:type)\n  call feedkeys(\"\\<Plug>FireplacePrintLast\")\nendfunction\n\nfunction! s:print_last() abort\n  call fireplace#echo_session_eval(s:todo)\n  return ''\nendfunction\n\nfunction! s:editop(type) abort\n  call feedkeys(&cedit . \"\\<Home>\", 'n')\n  let input = s:input(substitute(substitute(s:opfunc(a:type), \"\\s*;[^\\n\\\"]*\\\\%(\\n\\\\@=\\\\|$\\\\)\", '', 'g'), '\\n\\+\\s*', ' ', 'g'))\n  if input !=# ''\n    call fireplace#echo_session_eval(input)\n  endif\nendfunction\n\nfunction! s:Eval(bang, line1, line2, count, args) abort\n  let options = {}\n  if a:args !=# ''\n    let expr = a:args\n  else\n    if a:count ==# 0\n      let open = '[[{(]'\n      let close = '[]})]'\n      let [line1, col1] = searchpairpos(open, '', close, 'bcrn', g:fireplace#skip)\n      let [line2, col2] = searchpairpos(open, '', close, 'rn', g:fireplace#skip)\n      if !line1 && !line2\n        let [line1, col1] = searchpairpos(open, '', close, 'brn', g:fireplace#skip)\n        let [line2, col2] = searchpairpos(open, '', close, 'crn', g:fireplace#skip)\n      endif\n      while col1 > 1 && getline(line1)[col1-2] =~# '[#''`~@]'\n        let col1 -= 1\n      endwhile\n    else\n      let line1 = a:line1\n      let line2 = a:line2\n      let col1 = 1\n      let col2 = strlen(getline(line2))\n    endif\n    if !line1 || !line2\n      return ''\n    endif\n    let options.file_path = s:buffer_path()\n    let expr = repeat(\"\\n\", line1-1).repeat(\" \", col1-1)\n    if line1 == line2\n      let expr .= getline(line1)[col1-1 : col2-1]\n    else\n    let expr .= getline(line1)[col1-1 : -1] . \"\\n\"\n          \\ . join(map(getline(line1+1, line2-1), 'v:val . \"\\n\"'))\n          \\ . getline(line2)[0 : col2-1]\n    endif\n    if a:bang\n      exe line1.','.line2.'delete _'\n    endif\n  endif\n  if a:bang\n    try\n      let result = fireplace#session_eval(expr, options)\n      if a:args !=# ''\n        call append(a:line1, result)\n        exe a:line1\n      else\n        call append(a:line1-1, result)\n        exe a:line1-1\n      endif\n    catch /^Clojure:/\n    endtry\n  else\n    call fireplace#echo_session_eval(expr, options)\n  endif\n  return ''\nendfunction\n\n\" If we call input() directly inside a try, and the user opens the command\n\" line window and tries to switch out of it (such as with ctrl-w), Vim will\n\" crash when the command line window closes.  Adding an indirect function call\n\" works around this.\nfunction! s:actually_input(...) abort\n  return call(function('input'), a:000)\nendfunction\n\nfunction! s:input(default) abort\n  if !exists('g:FIREPLACE_HISTORY') || type(g:FIREPLACE_HISTORY) != type([])\n    unlet! g:FIREPLACE_HISTORY\n    let g:FIREPLACE_HISTORY = []\n  endif\n  try\n    let s:input = bufnr('%')\n    let s:oldhist = s:histswap(g:FIREPLACE_HISTORY)\n    return s:actually_input(fireplace#ns().'=> ', a:default, 'customlist,fireplace#eval_complete')\n  finally\n    unlet! s:input\n    if exists('s:oldhist')\n      let g:FIREPLACE_HISTORY = s:histswap(s:oldhist)\n    endif\n  endtry\nendfunction\n\nfunction! s:inputclose() abort\n  let l = substitute(getcmdline(), '\"\\%(\\\\.\\|[^\"]\\)*\"\\|\\\\.', '', 'g')\n  let open = len(substitute(l, '[^(]', '', 'g'))\n  let close = len(substitute(l, '[^)]', '', 'g'))\n  if open - close == 1\n    return \")\\<CR>\"\n  else\n    return \")\"\n  endif\nendfunction\n\nfunction! s:inputeval() abort\n  let input = s:input('')\n  redraw\n  if input !=# ''\n    call fireplace#echo_session_eval(input)\n  endif\n  return ''\nendfunction\n\nfunction! s:recall() abort\n  try\n    cnoremap <expr> ) <SID>inputclose()\n    let input = s:input('(')\n    if input =~# '^(\\=$'\n      return ''\n    else\n      return fireplace#session_eval(input)\n    endif\n  catch /^Clojure:/\n    return ''\n  finally\n    silent! cunmap )\n  endtry\nendfunction\n\nfunction! s:histswap(list) abort\n  let old = []\n  for i in range(1, histnr('@') * (histnr('@') > 0))\n    call extend(old, [histget('@', i)])\n  endfor\n  call histdel('@')\n  for entry in a:list\n    call histadd('@', entry)\n  endfor\n  return old\nendfunction\n\nnnoremap <silent> <Plug>FireplacePrintLast :exe <SID>print_last()<CR>\nnnoremap <silent> <Plug>FireplacePrint  :<C-U>set opfunc=<SID>printop<CR>g@\nxnoremap <silent> <Plug>FireplacePrint  :<C-U>call <SID>printop(visualmode())<CR>\nnnoremap <silent> <Plug>FireplaceCountPrint :<C-U>Eval<CR>\n\nnnoremap <silent> <Plug>FireplaceFilter :<C-U>set opfunc=<SID>filterop<CR>g@\nxnoremap <silent> <Plug>FireplaceFilter :<C-U>call <SID>filterop(visualmode())<CR>\n\nnnoremap <silent> <Plug>FireplaceMacroExpand  :<C-U>set opfunc=<SID>macroexpandop<CR>g@\nxnoremap <silent> <Plug>FireplaceMacroExpand  :<C-U>call <SID>macroexpandop(visualmode())<CR>\nnnoremap <silent> <Plug>FireplaceMacroExpand1 :<C-U>set opfunc=<SID>macroexpand1op<CR>g@\nxnoremap <silent> <Plug>FireplaceMacroExpand1 :<C-U>call <SID>macroexpand1op(visualmode())<CR>\n\nnnoremap <silent> <Plug>FireplaceEdit   :<C-U>set opfunc=<SID>editop<CR>g@\nxnoremap <silent> <Plug>FireplaceEdit   :<C-U>call <SID>editop(visualmode())<CR>\n\nnnoremap          <Plug>FireplacePrompt :exe <SID>inputeval()<CR>\n\nnoremap!          <Plug>FireplaceRecall <C-R>=<SID>recall()<CR>\n\nfunction! s:Last(bang, count) abort\n  if len(s:history) < a:count\n    return 'echoerr \"History entry not found\"'\n  endif\n  let history = s:qfhistory()\n  let last = s:qfhistory()[a:count-1]\n  execute 'pedit '.last.filename\n  if !&previewwindow\n    let nr = winnr()\n    wincmd p\n    wincmd P\n  endif\n  call setloclist(0, history)\n  silent exe 'llast '.(len(history)-a:count+1)\n  if exists('nr') && a:bang\n    wincmd p\n    exe nr.'wincmd w'\n  endif\n  return ''\nendfunction\n\nfunction! s:setup_eval() abort\n  command! -buffer -bang -range=0 -nargs=? -complete=customlist,fireplace#eval_complete Eval :exe s:Eval(<bang>0, <line1>, <line2>, <count>, <q-args>)\n  command! -buffer -bang -bar -count=1 Last exe s:Last(<bang>0, <count>)\n\n  nmap <buffer> cp <Plug>FireplacePrint\n  nmap <buffer> cpp <Plug>FireplaceCountPrint\n\n  nmap <buffer> c! <Plug>FireplaceFilter\n  nmap <buffer> c!! <Plug>FireplaceFilterab\n\n  nmap <buffer> cm <Plug>FireplaceMacroExpand\n  nmap <buffer> cmm <Plug>FireplaceMacroExpandab\n  nmap <buffer> c1m <Plug>FireplaceMacroExpand1\n  nmap <buffer> c1mm <Plug>FireplaceMacroExpand1ab\n\n  nmap <buffer> cq <Plug>FireplaceEdit\n  nmap <buffer> cqq <Plug>FireplaceEditab\n\n  nmap <buffer> cqp <Plug>FireplacePrompt\n  exe 'nmap <buffer> cqc <Plug>FireplacePrompt' . &cedit . 'i'\n\n  map! <buffer> <C-R>( <Plug>FireplaceRecall\nendfunction\n\nfunction! s:setup_historical() abort\n  setlocal readonly nomodifiable\n  nnoremap <buffer><silent>q :bdelete<CR>\nendfunction\n\nfunction! s:cmdwinenter() abort\n  setlocal filetype=clojure\nendfunction\n\nfunction! s:cmdwinleave() abort\n  setlocal filetype< omnifunc<\nendfunction\n\naugroup fireplace_eval\n  autocmd!\n  autocmd FileType clojure call s:setup_eval()\n  autocmd BufReadPost * if has_key(s:qffiles, expand('<amatch>:p')) |\n        \\   call s:setup_historical() |\n        \\ endif\n  autocmd CmdWinEnter @ if exists('s:input') | call s:cmdwinenter() | endif\n  autocmd CmdWinLeave @ if exists('s:input') | call s:cmdwinleave() | endif\naugroup END\n\n\" }}}1\n\" :Require {{{1\n\nfunction! s:Require(bang, ns) abort\n  if expand('%:e') ==# 'cljs'\n    let cmd = '(load-file '.s:str(tr(a:ns ==# '' ? fireplace#ns() : a:ns, '-.', '_/').'.cljs').')'\n  else\n    let cmd = ('(clojure.core/require '.s:qsym(a:ns ==# '' ? fireplace#ns() : a:ns).' :reload'.(a:bang ? '-all' : '').')')\n  endif\n  echo cmd\n  try\n    call fireplace#session_eval(cmd)\n    return ''\n  catch /^Clojure:.*/\n    return ''\n  endtry\nendfunction\n\nfunction! s:setup_require() abort\n  command! -buffer -bar -bang -complete=customlist,fireplace#ns_complete -nargs=? Require :exe s:Require(<bang>0, <q-args>)\n  nnoremap <silent><buffer> cpr :Require<CR>\nendfunction\n\naugroup fireplace_require\n  autocmd!\n  autocmd FileType clojure call s:setup_require()\naugroup END\n\n\" }}}1\n\" Go to source {{{1\n\nfunction! fireplace#source(symbol) abort\n  let cmd =\n        \\ '(when-let [v (resolve ' . s:qsym(a:symbol) .')]' .\n        \\ '  (when-let [filepath (:file (meta v))]' .\n        \\ '    [filepath' .\n        \\ '     (:line (meta v))]))'\n  let result = fireplace#evalparse(cmd)\n  if type(result) == type([])\n    let file = fireplace#findresource(result[0])\n    if !empty(file)\n      return '+' . result[1] . ' ' . fnameescape(file)\n    endif\n  endif\n  return ''\nendfunction\n\nfunction! s:Edit(cmd, keyword) abort\n  try\n    if a:keyword =~# '^\\k\\+[/.]$'\n      let location = fireplace#findfile(a:keyword[0: -2])\n    elseif a:keyword =~# '^\\k\\+\\.[^/.]\\+$'\n      let location = fireplace#findfile(a:keyword)\n    else\n      let location = fireplace#source(a:keyword)\n    endif\n  catch /^Clojure:/\n    return ''\n  endtry\n  if location !=# ''\n    if matchstr(location, '^+\\d\\+ \\zs.*') ==# fnameescape(expand('%:p')) && a:cmd ==# 'edit'\n      return matchstr(location, '\\d\\+')\n    else\n      return a:cmd.' '.location.'|let &l:path = '.string(&l:path)\n    endif\n  endif\n  let v:errmsg = \"Couldn't find source for \".a:keyword\n  return 'echoerr v:errmsg'\nendfunction\n\nnnoremap <silent> <Plug>FireplaceDjump :<C-U>exe <SID>Edit('edit', expand('<cword>'))<CR>\nnnoremap <silent> <Plug>FireplaceDsplit :<C-U>exe <SID>Edit('split', expand('<cword>'))<CR>\nnnoremap <silent> <Plug>FireplaceDtabjump :<C-U>exe <SID>Edit('tabedit', expand('<cword>'))<CR>\n\naugroup fireplace_source\n  autocmd!\n  autocmd FileType clojure setlocal includeexpr=tr(v:fname,'.-','/_')\n  autocmd FileType clojure\n        \\ if expand('%:e') ==# 'cljs' |\n        \\   setlocal suffixesadd=.cljs,.cljx,.clj,.java |\n        \\ else |\n        \\   setlocal suffixesadd=.clj,.cljx,.cljs,.java |\n        \\ endif\n  autocmd FileType clojure setlocal define=^\\\\s*(def\\\\w*\n  autocmd FileType clojure command! -bar -buffer -nargs=1 -complete=customlist,fireplace#eval_complete Djump  :exe s:Edit('edit', <q-args>)\n  autocmd FileType clojure command! -bar -buffer -nargs=1 -complete=customlist,fireplace#eval_complete Dsplit :exe s:Edit('split', <q-args>)\n  autocmd FileType clojure nmap <buffer> [<C-D>     <Plug>FireplaceDjump\n  autocmd FileType clojure nmap <buffer> ]<C-D>     <Plug>FireplaceDjump\n  autocmd FileType clojure nmap <buffer> <C-W><C-D> <Plug>FireplaceDsplit\n  autocmd FileType clojure nmap <buffer> <C-W>d     <Plug>FireplaceDsplit\n  autocmd FileType clojure nmap <buffer> <C-W>gd    <Plug>FireplaceDtabjump\naugroup END\n\n\" }}}1\n\" Go to file {{{1\n\nfunction! fireplace#findfile(path) abort\n  let path = a:path\n  if a:path !~# '/'\n    let path = tr(a:path, '.-', '/_')\n  else\n    let path = substitute(a:path, '^/', '')\n  endif\n  let resource = fireplace#findresource(path, fireplace#path(), 0, &suffixesadd)\n  if !empty(resource)\n    return resource\n  elseif fnamemodify(a:path, ':p') ==# a:path && filereadable(a:path)\n    return path\n  elseif a:path[0] !=# '/' && filereadable(expand('%:h') . '/' . path)\n    return expand('%:h') . '/' . path\n  endif\n  return ''\nendfunction\n\nfunction! s:GF(cmd, file) abort\n  if a:file =~# '^[^/]*/[^/.]*$' && a:file =~# '^\\k\\+$'\n    let [file, jump] = split(a:file, \"/\")\n    if file !~# '\\.'\n      try\n        let file = fireplace#evalparse('((ns-aliases *ns*) '.s:qsym(file).' '.s:qsym(file).')')\n      catch /^Clojure:/\n      endtry\n    endif\n  else\n    let file = a:file\n  endif\n  let file = fireplace#findfile(file)\n  if file ==# ''\n    let v:errmsg = \"Couldn't find file for \".a:file\n    return 'echoerr v:errmsg'\n  endif\n  return a:cmd .\n        \\ (exists('jump') ? ' +sil!\\ djump\\ ' . jump : '') .\n        \\ ' ' . fnameescape(file) .\n        \\ '| let &l:path = ' . string(&l:path)\nendfunction\n\naugroup fireplace_go_to_file\n  autocmd!\n  autocmd FileType clojure nnoremap <silent><buffer> gf         :<C-U>exe <SID>GF('edit', expand('<cfile>'))<CR>\n  autocmd FileType clojure nnoremap <silent><buffer> <C-W>f     :<C-U>exe <SID>GF('split', expand('<cfile>'))<CR>\n  autocmd FileType clojure nnoremap <silent><buffer> <C-W><C-F> :<C-U>exe <SID>GF('split', expand('<cfile>'))<CR>\n  autocmd FileType clojure nnoremap <silent><buffer> <C-W>gf    :<C-U>exe <SID>GF('tabedit', expand('<cfile>'))<CR>\naugroup END\n\n\" }}}1\n\" Documentation {{{1\n\nfunction! s:buffer_path(...) abort\n  let buffer = a:0 ? a:1 : s:buf()\n  if getbufvar(buffer, '&buftype') =~# '^no'\n    return ''\n  endif\n  let path = substitute(fnamemodify(bufname(buffer), ':p'), '\\C^zipfile:\\(.*\\)::', '\\1/', '')\n  for dir in fireplace#path(buffer)\n    if dir !=# '' && path[0 : strlen(dir)-1] ==# dir && path[strlen(dir)] =~# '[\\/]'\n      return path[strlen(dir)+1:-1]\n    endif\n  endfor\n  return ''\nendfunction\n\nfunction! fireplace#ns(...) abort\n  let buffer = a:0 ? a:1 : s:buf()\n  if !empty(getbufvar(buffer, 'fireplace_ns'))\n    return getbufvar(buffer, 'fireplace_ns')\n  endif\n  let head = getbufline(buffer, 1, 500)\n  let blank = '^\\s*\\%(;.*\\)\\=$'\n  call filter(head, 'v:val !~# blank')\n  let keyword_group = '[A-Za-z0-9_?*!+/=<>.-]'\n  let lines = join(head[0:49], ' ')\n  let lines = substitute(lines, '\"\\%(\\\\.\\|[^\"]\\)*\"\\|\\\\.', '', 'g')\n  let lines = substitute(lines, '\\^\\={[^{}]*}', '', '')\n  let lines = substitute(lines, '\\^:'.keyword_group.'\\+', '', 'g')\n  let ns = matchstr(lines, '\\C^(\\s*\\%(in-ns\\s*''\\|ns\\s\\+\\)\\zs'.keyword_group.'\\+\\ze')\n  if ns !=# ''\n    return ns\n  endif\n  let path = s:buffer_path(buffer)\n  return s:to_ns(path ==# '' ? fireplace#client(buffer).user_ns() : path)\nendfunction\n\nfunction! s:Lookup(ns, macro, arg) abort\n  \" doc is in clojure.core in older Clojure versions\n  try\n    call fireplace#session_eval(\"(clojure.core/require '\".a:ns.\") (clojure.core/eval (clojure.core/list (if (ns-resolve 'clojure.core '\".a:macro.\") 'clojure.core/\".a:macro.\" '\".a:ns.'/'.a:macro.\") '\".a:arg.'))')\n  catch /^Clojure:/\n  catch /.*/\n    echohl ErrorMSG\n    echo v:exception\n    echohl None\n  endtry\n  return ''\nendfunction\n\nfunction! s:inputlist(label, entries) abort\n  let choices = [a:label]\n  for i in range(len(a:entries))\n    let choices += [printf('%2d. %s', i+1, a:entries[i])]\n  endfor\n  let choice = inputlist(choices)\n  if choice\n    return a:entries[choice-1]\n  else\n    return ''\n  endif\nendfunction\n\nfunction! s:Apropos(pattern) abort\n  if a:pattern =~# '^#\\=\"'\n    let pattern = a:pattern\n  elseif a:pattern =~# '^^'\n    let pattern = '#\"' . a:pattern . '\"'\n  else\n    let pattern = '\"' . a:pattern . '\"'\n  endif\n  let matches = fireplace#evalparse('(clojure.repl/apropos '.pattern.')')\n  if empty(matches)\n    return ''\n  endif\n  let choice = s:inputlist('Look up docs for:', matches)\n  if choice !=# ''\n    return 'echo \"\\n\"|Doc '.choice\n  else\n    return ''\n  endif\nendfunction\n\nfunction! s:K() abort\n  let word = expand('<cword>')\n  let java_candidate = matchstr(word, '^\\%(\\w\\+\\.\\)*\\u\\l\\w*\\ze\\%(\\.\\|\\/\\w\\+\\)\\=$')\n  if java_candidate !=# ''\n    return 'Javadoc '.java_candidate\n  else\n    return 'Doc '.word\n  endif\nendfunction\n\nnnoremap <Plug>FireplaceK :<C-R>=<SID>K()<CR><CR>\nnnoremap <Plug>FireplaceSource :Source <C-R><C-W><CR>\n\naugroup fireplace_doc\n  autocmd!\n  autocmd FileType clojure nmap <buffer> K  <Plug>FireplaceK\n  autocmd FileType clojure nmap <buffer> [d <Plug>FireplaceSource\n  autocmd FileType clojure nmap <buffer> ]d <Plug>FireplaceSource\n  autocmd FileType clojure command! -buffer -nargs=1 Apropos :exe s:Apropos(<q-args>)\n  autocmd FileType clojure command! -buffer -nargs=1 FindDoc :exe s:Lookup('clojure.repl', 'find-doc', printf('#\"%s\"', <q-args>))\n  autocmd FileType clojure command! -buffer -bar -nargs=1 Javadoc :exe s:Lookup('clojure.java.javadoc', 'javadoc', <q-args>)\n  autocmd FileType clojure command! -buffer -bar -nargs=1 -complete=customlist,fireplace#eval_complete Doc     :exe s:Lookup('clojure.repl', 'doc', <q-args>)\n  autocmd FileType clojure command! -buffer -bar -nargs=1 -complete=customlist,fireplace#eval_complete Source  :exe s:Lookup('clojure.repl', 'source', <q-args>)\naugroup END\n\n\" }}}1\n\" Alternate {{{1\n\naugroup fireplace_alternate\n  autocmd!\n  autocmd FileType clojure command! -buffer -bar -bang A :exe s:Alternate('edit<bang>')\n  autocmd FileType clojure command! -buffer -bar AS :exe s:Alternate('split')\n  autocmd FileType clojure command! -buffer -bar AV :exe s:Alternate('vsplit')\n  autocmd FileType clojure command! -buffer -bar AT :exe s:Alternate('tabedit')\naugroup END\n\nfunction! fireplace#alternates() abort\n  let ns = fireplace#ns()\n  if ns =~# '-test$'\n    let alt = [ns[0:-6]]\n  elseif ns =~# '\\.test\\.'\n    let alt = [substitute(ns, '\\.test\\.', '.', '')]\n  elseif ns =~# '-spec$'\n    let alt = [ns[0:-6], ns . '-test']\n  elseif ns =~# '\\.t-[^\\.]*$'\n    let alt = [substitute(ns, '\\.t-\\([^\\.]*\\)$', '\\.\\1', '')]\n  else\n    let alt = [ns . '-test', substitute(ns, '\\.', '.test.', ''), ns . '-spec',\n             \\ substitute(ns, '\\.\\([^\\.]*\\)$', '.t-\\1', '')]\n  endif\n  return map(alt, 'tr(v:val, \".-\", \"/_\") . \".\" . expand(\"%:e\")')\nendfunction\n\nfunction! s:Alternate(cmd) abort\n  let alternates = fireplace#alternates()\n  for file in alternates\n    let path = fireplace#findresource(file)\n    if !empty(path)\n      return a:cmd . ' ' . fnameescape(path)\n    endif\n  endfor\n  return 'echoerr '.string(\"Couldn't find \" . alternates[0] . \" in class path\")\nendfunction\n\n\" }}}1\n\" Leiningen {{{1\n\nfunction! s:hunt(start, anchor, pattern) abort\n  let root = simplify(fnamemodify(a:start, ':p:s?[\\/]$??'))\n  if !isdirectory(fnamemodify(root, ':h'))\n    return ''\n  endif\n  let previous = \"\"\n  while root !=# previous\n    if filereadable(root . '/' . a:anchor) && join(readfile(root . '/' . a:anchor, '', 50)) =~# a:pattern\n      return root\n    endif\n    let previous = root\n    let root = fnamemodify(root, ':h')\n  endwhile\n  return ''\nendfunction\n\nif !exists('s:leiningen_repls')\n  let s:leiningen_repls = {}\n  let s:leiningen_paths = {}\nendif\n\nfunction! s:portfile() abort\n  if !exists('b:leiningen_root')\n    return ''\n  endif\n\n  let root = b:leiningen_root\n  let portfiles = [root.'/target/repl-port', root.'/target/repl/repl-port', root.'/.nrepl-port']\n\n  for f in portfiles\n    if filereadable(f)\n      return f\n    endif\n  endfor\n  return ''\nendfunction\n\n\nfunction! s:leiningen_connect() abort\n  for [k, v] in items(s:leiningen_repls)\n    if getfsize(v.file) <= 0\n      call remove(s:leiningen_repls, k)\n      call s:unregister_connection(v.connection)\n    endif\n  endfor\n\n  let portfile = s:portfile()\n  if empty(portfile)\n    return\n  endif\n\n  if getfsize(portfile) > 0 && getftime(portfile) !=# get(get(s:leiningen_repls, b:leiningen_root, {}), 'time', -1)\n    let port = matchstr(readfile(portfile, 'b', 1)[0], '\\d\\+')\n    let s:leiningen_repls[b:leiningen_root] = {'time': getftime(portfile), 'file': portfile}\n    try\n      let conn = nrepl#fireplace_connection#open(port)\n      let s:leiningen_repls[b:leiningen_root].connection = conn\n      call s:register_connection(conn, b:leiningen_root)\n      let s:leiningen_paths[b:leiningen_root] = conn.path()\n    catch /^nREPL Connection Error:/\n      if &verbose\n        echohl WarningMSG\n        echomsg v:exception\n        echohl None\n      endif\n    endtry\n  endif\nendfunction\n\nfunction! s:leiningen_init() abort\n\n  if !exists('b:leiningen_root')\n    let root = s:hunt(expand('%:p'), 'project.clj', '(\\s*defproject')\n    if root !=# ''\n      let b:leiningen_root = root\n    endif\n  endif\n  if !exists('b:leiningen_root')\n    return\n  endif\n\n  let b:java_root = b:leiningen_root\n\n  compiler lein\n\n  if exists('classpath#from_vim')\n    let s:leiningen_paths[b:leiningen_root] = classpath#split(classpath#from_vim(&path))\n  endif\n  call s:leiningen_connect()\nendfunction\n\nfunction! s:massage_quickfix() abort\n  if &errorformat !~# 'fireplace$'\n    return\n  endif\n  if has_key(s:leiningen_paths, getcwd())\n    let path = s:leiningen_paths[getcwd()]\n  else\n    return\n  endif\n  let qflist = getqflist()\n  for entry in qflist\n    call extend(entry, s:qfmassage(get(entry, 'text', ''), path))\n  endfor\n  call setqflist(qflist, 'replace')\nendfunction\n\naugroup fireplace_leiningen\n  autocmd!\n  autocmd User FireplacePreConnect call s:leiningen_connect()\n  autocmd FileType clojure call s:leiningen_init()\n  autocmd QuickFixCmdPost make,cfile,cgetfile call s:massage_quickfix()\naugroup END\n\n\" }}}1\n\n\" vim:set et sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-fireplace/python/nrepl_fireplace.py",
    "content": "import os\nimport re\nimport select\nimport socket\nimport sys\n\nfrom StringIO import StringIO\n\ndef noop():\n  pass\n\ndef vim_encode(data):\n  if isinstance(data, list):\n    return \"[\" + \",\".join([vim_encode(x) for x in data]) + \"]\"\n  elif isinstance(data, dict):\n    return \"{\" + \",\".join([vim_encode(x)+\":\"+vim_encode(y) for x,y in data.items()]) + \"}\"\n  elif isinstance(data, str):\n    str_list = []\n    for c in data:\n      if (0 <= ord(c) and ord(c) <= 31) or c == '\"' or c == \"\\\\\":\n        str_list.append(\"\\\\%03o\" % ord(c))\n      else:\n        str_list.append(c)\n    return '\"' + ''.join(str_list) + '\"'\n  elif isinstance(data, int):\n    return str(data)\n  else:\n    raise TypeError(\"can't encode a \" + type(data).__name__)\n\ndef bdecode(f, char=None):\n  if char == None:\n    char = f.read(1)\n  if char == 'l':\n    l = []\n    while True:\n      char = f.read(1)\n      if char == 'e':\n        return l\n      l.append(bdecode(f, char))\n  elif char == 'd':\n    d = {}\n    while True:\n      char = f.read(1)\n      if char == 'e':\n        return d\n      key = bdecode(f, char)\n      d[key] = bdecode(f)\n  elif char == 'i':\n    i = 0\n    while True:\n      char = f.read(1)\n      if char == 'e':\n        return i\n      i = 10 * i + int(char)\n  elif char.isdigit():\n    i = int(char)\n    while True:\n      char = f.read(1)\n      if char == ':':\n        return f.read(i)\n      i = 10 * i + int(char)\n  elif char == '':\n    raise EOFError(\"unexpected end of bencode data\")\n  else:\n    raise TypeError(\"unexpected type \"+char+\"in bencode data\")\n\n\nclass Connection:\n  def __init__(self, host, port, custom_poll=noop, keepalive_file=None):\n    self.custom_poll = custom_poll\n    self.keepalive_file = keepalive_file\n    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n    s.settimeout(8)\n    s.connect((host, int(port)))\n    s.setblocking(1)\n    self.socket = s\n\n  def poll(self):\n    self.custom_poll()\n    if self.keepalive_file and not os.path.exists(self.keepalive_file):\n      exit(0)\n\n  def close(self):\n    return self.socket.close()\n\n  def send(self, payload):\n    self.socket.sendall(payload)\n    return ''\n\n  def receive(self, char=None):\n    while len(select.select([self.socket], [], [], 0.1)[0]) == 0:\n      self.poll()\n    f = self.socket.makefile()\n    try:\n      return bdecode(f)\n    finally:\n      f.close()\n\n  def call(self, payload, terminators, selectors):\n    self.send(payload)\n    responses = []\n    while True:\n      response = self.receive()\n      for key in selectors:\n        if response[key] != selectors[key]:\n          continue\n      responses.append(response)\n      if 'status' in response and set(terminators) & set(response['status']):\n        return responses\n\ndef dispatch(host, port, poll, keepalive, command, *args):\n  conn = Connection(host, port, poll, keepalive)\n  try:\n    return getattr(conn, command)(*args)\n  finally:\n    conn.close()\n\ndef main(host, port, keepalive, command, *args):\n  try:\n    sys.stdout.write(vim_encode(dispatch(host, port, noop, keepalive, command, *[bdecode(StringIO(arg)) for arg in args])))\n  except Exception, e:\n    print(e)\n    exit(1)\n\nif __name__ == \"__main__\":\n  main(*sys.argv[1:])\n"
  },
  {
    "path": ".vim/bundle/vim-fugitive/CONTRIBUTING.markdown",
    "content": "Before reporting a bug, you should try stripping down your Vim configuration\nand removing other plugins.  The sad truth about VimScript is that it is\nfraught with incompatibilities waiting to happen.  I'm happy to work around\nthem where I can, but it's up to you to isolate the conflict.\n\nFugitive is particularly prone to regressions due to Git version issues,\nplatform issues, and interactions with other plugins.  I end up bisecting a\nlot more than other projects, and thus I'm especially meticulous here about\nmaintaining a clean, readable, history.  Squash and force push any requested\nchanges to a pull request.  And if your [commit message\nsucks](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html),\nI'm not going to accept it.  Period.\n\nBeyond that, don't be shy about asking before patching.  What takes you hours\nmight take me minutes simply because I have both domain knowledge and a\nperverse knowledge of VimScript so vast that many would consider it a symptom\nof mental illness.  On the flip side, some ideas I'll reject no matter how\ngood the implementation is.  \"Send a patch\" is an edge case answer in my book.\n"
  },
  {
    "path": ".vim/bundle/vim-fugitive/README.markdown",
    "content": "# fugitive.vim\n\nI'm not going to lie to you; fugitive.vim may very well be the best\nGit wrapper of all time.  Check out these features:\n\nView any blob, tree, commit, or tag in the repository with `:Gedit` (and\n`:Gsplit`, `:Gvsplit`, `:Gtabedit`, ...).  Edit a file in the index and\nwrite to it to stage the changes.  Use `:Gdiff` to bring up the staged\nversion of the file side by side with the working tree version and use\nVim's diff handling capabilities to stage a subset of the file's\nchanges.\n\nBring up the output of `git status` with `:Gstatus`.  Press `-` to\n`add`/`reset` a file's changes, or `p` to `add`/`reset` `--patch` that\nmofo.  And guess what `:Gcommit` does!\n\n`:Gblame` brings up an interactive vertical split with `git blame`\noutput.  Press enter on a line to edit the commit where the line\nchanged, or `o` to open it in a split.  When you're done, use `:Gedit`\nin the historic buffer to go back to the work tree version.\n\n`:Gmove` does a `git mv` on a file and simultaneously renames the\nbuffer.  `:Gremove` does a `git rm` on a file and simultaneously deletes\nthe buffer.\n\nUse `:Ggrep` to search the work tree (or any arbitrary commit) with\n`git grep`, skipping over that which is not tracked in the repository.\n`:Glog` loads all previous revisions of a file into the quickfix list so\nyou can iterate over them and watch the file evolve!\n\n`:Gread` is a variant of `git checkout -- filename` that operates on the\nbuffer rather than the filename.  This means you can use `u` to undo it\nand you never get any warnings about the file changing outside Vim.\n`:Gwrite` writes to both the work tree and index versions of a file,\nmaking it like `git add` when called from a work tree file and like\n`git checkout` when called from the index or a blob in history.\n\nUse `:Gbrowse` to open the current file on GitHub, with optional line\nrange (try it in visual mode!).  If your current repository isn't on\nGitHub, `git instaweb` will be spun up instead.\n\nAdd `%{fugitive#statusline()}` to `'statusline'` to get an indicator\nwith the current branch in (surprise!) your statusline.\n\nLast but not least, there's `:Git` for running any arbitrary command,\nand `Git!` to open the output of a command in a temp file.\n\n## Screencasts\n\n* [A complement to command line git](http://vimcasts.org/e/31)\n* [Working with the git index](http://vimcasts.org/e/32)\n* [Resolving merge conflicts with vimdiff](http://vimcasts.org/e/33)\n* [Browsing the git object database](http://vimcasts.org/e/34)\n* [Exploring the history of a git repository](http://vimcasts.org/e/35)\n\n## Installation\n\nIf you don't have a preferred installation method, I recommend\ninstalling [pathogen.vim](https://github.com/tpope/vim-pathogen), and\nthen simply copy and paste:\n\n    cd ~/.vim/bundle\n    git clone git://github.com/tpope/vim-fugitive.git\n\nOnce help tags have been generated, you can view the manual with\n`:help fugitive`.\n\nIf your Vim version is below 7.2, I recommend also installing\n[vim-git](https://github.com/tpope/vim-git) for syntax highlighting and\nother Git niceties.\n\n## FAQ\n\n> I installed the plugin and started Vim.  Why don't any of the commands\n> exist?\n\nFugitive cares about the current file, not the current working\ndirectory.  Edit a file from the repository.\n\n> I opened a new tab.  Why don't any of the commands exist?\n\nFugitive cares about the current file, not the current working\ndirectory.  Edit a file from the repository.\n\n> Why is `:Gbrowse` not using the right browser?\n\n`:Gbrowse` delegates to `git web--browse`, which is less than perfect\nwhen it comes to finding the right browser.  You can tell it the correct\nbrowser to use with `git config --global web.browser ...`.  On OS X, for\nexample, you might want to set this to `open`.  See `git web--browse --help`\nfor details.\n\n> Here's a patch that automatically opens the quickfix window after\n> `:Ggrep`.\n\nThis is a great example of why I recommend asking before patching.\nThere are valid arguments to be made both for and against automatically\nopening the quickfix window.  Whenever I have to make an arbitrary\ndecision like this, I ask what Vim would do.  And Vim does not open a\nquickfix window after `:grep`.\n\nLuckily, it's easy to implement the desired behavior without changing\nfugitive.vim.  The following autocommand will cause the quickfix window\nto open after any grep invocation:\n\n    autocmd QuickFixCmdPost *grep* cwindow\n\n## Self-Promotion\n\nLike fugitive.vim? Follow the repository on\n[GitHub](https://github.com/tpope/vim-fugitive) and vote for it on\n[vim.org](http://www.vim.org/scripts/script.php?script_id=2975).  And if\nyou're feeling especially charitable, follow [tpope](http://tpo.pe/) on\n[Twitter](http://twitter.com/tpope) and\n[GitHub](https://github.com/tpope).\n\n## License\n\nCopyright (c) Tim Pope.  Distributed under the same terms as Vim itself.\nSee `:help license`.\n"
  },
  {
    "path": ".vim/bundle/vim-fugitive/doc/fugitive.txt",
    "content": "*fugitive.txt*  A Git wrapper so awesome, it should be illegal\n\nAuthor:  Tim Pope <http://tpo.pe/>\nLicense: Same terms as Vim itself (see |license|)\n\nThis plugin is only available if 'compatible' is not set.\n\nINTRODUCTION                                    *fugitive*\n\nWhenever you edit a file from a Git repository, a set of commands is defined\nthat serve as a gateway to Git.\n\nCOMMANDS                                        *fugitive-commands*\n\nThese commands are local to the buffers in which they work (generally, buffers\nthat are part of Git repositories).\n\n                                                *fugitive-:Git*\n:Git [args]             Run an arbitrary git command. Similar to :!git [args]\n                        but chdir to the repository tree first.\n\n                                                *fugitive-:Git!*\n:Git! [args]            Like |:Git|, but capture the output into a temp file,\n                        and edit that temp file.\n\n                                                *fugitive-:Gcd*\n:Gcd [directory]        |:cd| relative to the repository.\n\n                                                *fugitive-:Glcd*\n:Glcd [directory]       |:lcd| relative to the repository.\n\n                                                *fugitive-:Gstatus*\n:Gstatus                Bring up the output of git-status in the preview\n                        window.  The following maps, which work on the cursor\n                        line file where sensible, are provided:\n\n                        <C-N> next file\n                        <C-P> previous file\n                        <CR>  |:Gedit|\n                        -     |:Git| add\n                        -     |:Git| reset (staged files)\n                        cA    |:Gcommit| --amend --reuse-message=HEAD\n                        ca    |:Gcommit| --amend\n                        cc    |:Gcommit|\n                        cva   |:Gcommit| --amend --verbose\n                        cvc   |:Gcommit| --verbose\n                        D     |:Gdiff|\n                        ds    |:Gsdiff|\n                        dp    |:Git!| diff (p for patch; use :Gw to apply)\n                        dp    |:Git| add --intent-to-add (untracked files)\n                        dv    |:Gvdiff|\n                        O     |:Gtabedit|\n                        o     |:Gsplit|\n                        p     |:Git| add --patch\n                        p     |:Git| reset --patch (staged files)\n                        q     close status\n                        R     reload status\n                        S     |:Gvsplit|\n\n                                                *fugitive-:Gcommit*\n:Gcommit [args]         A wrapper around git-commit.  If there is nothing\n                        to commit, |:Gstatus| is called instead.  Unless the\n                        arguments given would skip the invocation of an editor\n                        (e.g., -m), a split window will be used to obtain a\n                        commit message.  Write and close that window (:wq or\n                        |:Gwrite|) to finish the commit.  Unlike when running\n                        the actual git-commit command, it is possible (but\n                        unadvisable) to muck with the index with commands like\n                        git-add and git-reset while a commit message is\n                        pending.\n\n                                                *fugitive-:Ggrep*\n:Ggrep [args]           |:grep| with git-grep as 'grepprg'.\n\n                                                *fugitive-:Glgrep*\n:Glgrep [args]          |:lgrep| with git-grep as 'grepprg'.\n\n                                                *fugitive-:Glog*\n:Glog [args]            Load all previous revisions of the current file into\n                        the quickfix list.  Additional git-log arguments can\n                        be given (for example, --reverse).  If \"--\" appears as\n                        an argument, no file specific filtering is done, and\n                        previous commits rather than previous file revisions\n                        are loaded.\n\n                                                *fugitive-:Gllog*\n:Gllog [args]           Like |:Glog|, but use the location list instead of the\n                        quickfix list.\n\n                                        *fugitive-:Gedit* *fugitive-:Ge*\n:Gedit [revision]       |:edit| a |fugitive-revision|.\n\n                                                *fugitive-:Gsplit*\n:Gsplit [revision]      |:split| a |fugitive-revision|.\n\n                                                *fugitive-:Gvsplit*\n:Gvsplit [revision]     |:vsplit| a |fugitive-revision|.\n\n                                                *fugitive-:Gtabedit*\n:Gtabedit [revision]    |:tabedit| a |fugitive-revision|.\n\n                                                *fugitive-:Gpedit*\n:Gpedit [revision]      |:pedit| a |fugitive-revision|.\n\n:Gsplit! [args]                 *fugitive-:Gsplit!* *fugitive-:Gvsplit!*\n:Gvsplit! [args]                *fugitive-:Gtabedit!* *fugitive-:Gpedit!*\n:Gtabedit! [args]       Like |:Git!|, but open the resulting temp file in a\n:Gpedit! [args]         split, tab, or preview window.\n\n                                                *fugitive-:Gread*\n:Gread [revision]       Empty the buffer and |:read| a |fugitive-revision|.\n                        When the argument is omitted, this is similar to\n                        git-checkout on a work tree file or git-add on a stage\n                        file, but without writing anything to disk.\n\n:{range}Gread [revision]\n                        |:read| in a |fugitive-revision| after {range}.\n\n                                                *fugitive-:Gread!*\n:Gread! [args]          Empty the buffer and |:read| the output of a Git\n                        command.  For example, :Gread! show HEAD:%.\n\n:{range}Gread! [args]  |:read| the output of a Git command after {range}.\n\n                                        *fugitive-:Gw* *fugitive-:Gwrite*\n:Gwrite                 Write to the current file's path and stage the results.\n                        When run in a work tree file, it is effectively git\n                        add.  Elsewhere, it is effectively git-checkout.  A\n                        great deal of effort is expended to behave sensibly\n                        when the work tree or index version of the file is\n                        open in another buffer.\n\n:Gwrite {path}          You can give |:Gwrite| an explicit path of where in\n                        the work tree to write.  You can also give a path like\n                        :0:foo.txt or even :0 to write to just that stage in\n                        the index.\n\n                                                *fugitive-:Gwq*\n:Gwq [path]             Like |:Gwrite| followed by |:quit| if the write\n                        succeeded.\n\n:Gwq! [path]            Like |:Gwrite|! followed by |:quit|! if the write\n                        succeeded.\n\n                                                *fugitive-:Gdiff*\n:Gdiff [revision]       Perform a |vimdiff| against the current file in the\n                        given revision.  With no argument, the version in the\n                        index is used (which means a three-way diff during a\n                        merge conflict, making it a git-mergetool\n                        alternative).  The newer of the two files is placed\n                        to the right.  Use |do| and |dp| and write to the\n                        index file to simulate \"git add --patch\".\n\n                                                *fugitive-:Gsdiff*\n:Gsdiff [revision]      Like |:Gdiff|, but split horizontally.\n\n                                                *fugitive-:Gvdiff*\n:Gvdiff [revision]      Identical to |:Gdiff|.  For symmetry with |:Gsdiff|.\n\n                                                *fugitive-:Gmove*\n:Gmove {destination}    Wrapper around git-mv that renames the buffer\n                        afterward.  The destination is relative to the current\n                        directory except when started with a /, in which case\n                        it is relative to the work tree.  Add a ! to pass -f.\n\n                                                *fugitive-:Gremove*\n:Gremove                Wrapper around git-rm that deletes the buffer\n                        afterward.  When invoked in an index file, --cached is\n                        passed.  Add a ! to pass -f and forcefully discard the\n                        buffer.\n\n                                                *fugitive-:Gblame*\n:Gblame [flags]         Run git-blame on the file and open the results in a\n                        scroll bound vertical split.  Press enter on a line to\n                        reblame the file as it was in that commit.  You can\n                        give any of ltfnsewMC as flags and they will be passed\n                        along to git-blame.  The following maps, which work on\n                        the cursor line commit where sensible, are provided:\n\n                        A     resize to end of author column\n                        C     resize to end of commit column\n                        D     resize to end of date/time column\n                        q     close blame and return to blamed window\n                        gq    q, then |:Gedit| to return to work tree version\n                        <CR>  q, then open commit\n                        o     open commit in horizontal split\n                        O     open commit in new tab\n                        -     reblame at commit\n                        ~     reblame at [count]th first grandparent\n                        P     reblame at [count]th parent (like HEAD^[count])\n\n:[range]Gblame [flags]  Run git-blame on the given range.\n\n                                                *fugitive-:Gbrowse*\n:[range]Gbrowse         If the remote for the current branch is on GitHub,\n                        open the current file, blob, tree, commit, or tag\n                        (with git-web--browse) on GitHub.  Otherwise, open the\n                        current file, blob, tree, commit, or tag in\n                        git-instaweb (if you have issues, verify you can run\n                        \"git instaweb\" from a terminal).  If a range is given,\n                        it is appropriately appended to the URL as an anchor.\n\n                        To use with GitHub FI, point g:fugitive_github_domains\n                        at a list of domains:\n>\n                        let g:fugitive_github_domains = ['https://example.com']\n~\n:[range]Gbrowse!        Like :Gbrowse, but put the URL on the clipboard rather\n                        than opening it.\n\n:[range]Gbrowse {revision}\n                        Like :Gbrowse, but for a given |fugitive-revision|.  A\n                        useful value here is -, which ties the URL to the\n                        latest commit rather than a volatile branch.\n\n:[range]Gbrowse [...]@{remote}\n                        Force using the given remote rather than the remote\n                        for the current branch.  The remote is used to\n                        determine which GitHub repository to link to.\n\nMAPPINGS                                        *fugitive-mappings*\n\nThese maps are available everywhere.\n\n                                                *fugitive-c_CTRL-R_CTRL-G*\n<C-R><C-G>              On the command line, recall the path to the current\n                        object (that is, a representation of the object\n                        recognized by |:Gedit|).\n\n                                                *fugitive-y_CTRL-G*\n[\"x]y<C-G>              Yank the commit SHA and path to the current object.\n\nThese maps are available in Git objects.\n\n                                                *fugitive-<CR>*\n<CR>                    Jump to the revision under the cursor.\n\n                                                *fugitive-o*\no                       Jump to the revision under the cursor in a new split.\n\n                                                *fugitive-S*\nS                       Jump to the revision under the cursor in a new\n                        vertical split.\n\n                                                *fugitive-O*\nO                       Jump to the revision under the cursor in a new tab.\n\n                                                *fugitive--*\n-                       Go to the tree containing the current tree or blob.\n\n                                                *fugitive-~*\n~                       Go to the current file in the [count]th first\n                        ancestor.\n\n                                                *fugitive-P*\nP                       Go to the current file in the [count]th parent.\n\n                                                *fugitive-C*\nC                       Go to the commit containing the current file.\n\n                                                *fugitive-.*\n.                       Start a |:| command line with the current revision\n                        prepopulated at the end of the line.\n\n                                                *fugitive-a*\na                       Show the current tag, commit, or tree in an alternate\n                        format.\n\nSPECIFYING REVISIONS                            *fugitive-revision*\n\nFugitive revisions are similar to Git revisions as defined in the \"SPECIFYING\nREVISIONS\" section in the git-rev-parse man page.  For commands that accept an\noptional revision, the default is the file in the index for work tree files\nand the work tree file for everything else.  Example revisions follow.\n\nRevision        Meaning ~\nHEAD            .git/HEAD\nmaster          .git/refs/heads/master\nHEAD^{}         The commit referenced by HEAD\nHEAD^           The parent of the commit referenced by HEAD\nHEAD:           The tree referenced by HEAD\n/HEAD           The file named HEAD in the work tree\nMakefile        The file named Makefile in the work tree\nHEAD^:Makefile  The file named Makefile in the parent of HEAD\n:Makefile       The file named Makefile in the index (writable)\n-               The current file in HEAD\n^               The current file in the previous commit\n~3              The current file 3 commits ago\n:               .git/index (Same as |:Gstatus|)\n:0              The current file in the index\n:1              The current file's common ancestor during a conflict\n:2              The current file in the target branch during a conflict\n:3              The current file in the merged branch during a conflict\n:/foo           The most recent commit with \"foo\" in the message\n\nSTATUSLINE                                      *fugitive-statusline*\n\n                                                *fugitive#statusline()*\nAdd %{fugitive#statusline()} to your statusline to get an indicator including\nthe current branch and the currently edited file's commit.  If you don't have\na statusline, this one matches the default when 'ruler' is set:\n>\n    set statusline=%<%f\\ %h%m%r%{fugitive#statusline()}%=%-14.(%l,%c%V%)\\ %P\n<\n                                                *fugitive#head(...)*\nUse fugitive#head() to return the name of the current branch. If the current\nHEAD is detached, fugitive#head() will return the empty string, unless the\noptional argument is given, in which case the hash of the current commit will\nbe truncated to the given number of characters.\n\nABOUT                                           *fugitive-about*\n\nGrab the latest version or report a bug on GitHub:\n\nhttp://github.com/tpope/vim-fugitive\n\n vim:tw=78:et:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/vim-fugitive/plugin/fugitive.vim",
    "content": "\" fugitive.vim - A Git wrapper so awesome, it should be illegal\n\" Maintainer:   Tim Pope <http://tpo.pe/>\n\" Version:      2.0\n\" GetLatestVimScripts: 2975 1 :AutoInstall: fugitive.vim\n\nif exists('g:loaded_fugitive') || &cp\n  finish\nendif\nlet g:loaded_fugitive = 1\n\nif !exists('g:fugitive_git_executable')\n  let g:fugitive_git_executable = 'git'\nendif\n\n\" Utility {{{1\n\nfunction! s:function(name) abort\n  return function(substitute(a:name,'^s:',matchstr(expand('<sfile>'), '<SNR>\\d\\+_'),''))\nendfunction\n\nfunction! s:sub(str,pat,rep) abort\n  return substitute(a:str,'\\v\\C'.a:pat,a:rep,'')\nendfunction\n\nfunction! s:gsub(str,pat,rep) abort\n  return substitute(a:str,'\\v\\C'.a:pat,a:rep,'g')\nendfunction\n\nfunction! s:shellesc(arg) abort\n  if a:arg =~ '^[A-Za-z0-9_/.-]\\+$'\n    return a:arg\n  elseif &shell =~# 'cmd'\n    return '\"'.s:gsub(s:gsub(a:arg, '\"', '\"\"'), '\\%', '\"%\"').'\"'\n  else\n    return shellescape(a:arg)\n  endif\nendfunction\n\nfunction! s:fnameescape(file) abort\n  if exists('*fnameescape')\n    return fnameescape(a:file)\n  else\n    return escape(a:file,\" \\t\\n*?[{`$\\\\%#'\\\"|!<\")\n  endif\nendfunction\n\nfunction! s:throw(string) abort\n  let v:errmsg = 'fugitive: '.a:string\n  throw v:errmsg\nendfunction\n\nfunction! s:warn(str)\n  echohl WarningMsg\n  echomsg a:str\n  echohl None\n  let v:warningmsg = a:str\nendfunction\n\nfunction! s:shellslash(path)\n  if exists('+shellslash') && !&shellslash\n    return s:gsub(a:path,'\\\\','/')\n  else\n    return a:path\n  endif\nendfunction\n\nlet s:git_versions = {}\n\nfunction! fugitive#git_version(...) abort\n  if !has_key(s:git_versions, g:fugitive_git_executable)\n    let s:git_versions[g:fugitive_git_executable] = matchstr(system(g:fugitive_git_executable.' --version'), \"\\\\S\\\\+\\n\")\n  endif\n  return s:git_versions[g:fugitive_git_executable]\nendfunction\n\nfunction! s:recall()\n  let rev = s:sub(s:buffer().rev(), '^/', '')\n  if rev ==# ':'\n    return matchstr(getline('.'),'^#\\t\\%([[:alpha:] ]\\+: *\\)\\=\\zs.\\{-\\}\\ze\\%( ([^()[:digit:]]\\+)\\)\\=$\\|^\\d\\{6} \\x\\{40\\} \\d\\t\\zs.*')\n  elseif s:buffer().type('tree')\n    let file = matchstr(getline('.'), '\\t\\zs.*')\n    if empty(file) && line('.') > 2\n      let file = s:sub(getline('.'), '/$', '')\n    endif\n    if !empty(file) && rev !~# ':$'\n      return rev . '/' . file\n    else\n      return rev . file\n    endif\n  endif\n  return rev\nendfunction\n\nfunction! s:add_methods(namespace, method_names) abort\n  for name in a:method_names\n    let s:{a:namespace}_prototype[name] = s:function('s:'.a:namespace.'_'.name)\n  endfor\nendfunction\n\nlet s:commands = []\nfunction! s:command(definition) abort\n  let s:commands += [a:definition]\nendfunction\n\nfunction! s:define_commands()\n  for command in s:commands\n    exe 'command! -buffer '.command\n  endfor\nendfunction\n\naugroup fugitive_utility\n  autocmd!\n  autocmd User Fugitive call s:define_commands()\naugroup END\n\nlet s:abstract_prototype = {}\n\n\" }}}1\n\" Initialization {{{1\n\nfunction! fugitive#is_git_dir(path) abort\n  let path = s:sub(a:path, '[\\/]$', '') . '/'\n  return isdirectory(path.'objects') && isdirectory(path.'refs') && getfsize(path.'HEAD') > 10\nendfunction\n\nfunction! fugitive#extract_git_dir(path) abort\n  if s:shellslash(a:path) =~# '^fugitive://.*//'\n    return matchstr(s:shellslash(a:path), '\\C^fugitive://\\zs.\\{-\\}\\ze//')\n  endif\n  let root = s:shellslash(simplify(fnamemodify(a:path, ':p:s?[\\/]$??')))\n  let previous = \"\"\n  while root !=# previous\n    if root =~# '\\v^//%([^/]+/?)?$'\n      \" This is for accessing network shares from Cygwin Vim. There won't be\n      \" any git directory called //.git or //serverName/.git so let's avoid\n      \" checking for them since such checks are extremely slow.\n      break\n    endif\n    if index(split($GIT_CEILING_DIRECTORIES, ':'), root) >= 0\n      break\n    endif\n    if root ==# $GIT_WORK_TREE && fugitive#is_git_dir($GIT_DIR)\n      return $GIT_DIR\n    endif\n    let dir = s:sub(root, '[\\/]$', '') . '/.git'\n    let type = getftype(dir)\n    if type ==# 'dir' && fugitive#is_git_dir(dir)\n      return dir\n    elseif type ==# 'link' && fugitive#is_git_dir(dir)\n      return resolve(dir)\n    elseif type !=# '' && filereadable(dir)\n      let line = get(readfile(dir, '', 1), 0, '')\n      if line =~# '^gitdir: \\.' && fugitive#is_git_dir(root.'/'.line[8:-1])\n        return simplify(root.'/'.line[8:-1])\n      elseif line =~# '^gitdir: ' && fugitive#is_git_dir(line[8:-1])\n        return line[8:-1]\n      endif\n    elseif fugitive#is_git_dir(root)\n      return root\n    endif\n    let previous = root\n    let root = fnamemodify(root, ':h')\n  endwhile\n  return ''\nendfunction\n\nfunction! fugitive#detect(path)\n  if exists('b:git_dir') && (b:git_dir ==# '' || b:git_dir =~# '/$')\n    unlet b:git_dir\n  endif\n  if !exists('b:git_dir')\n    let dir = fugitive#extract_git_dir(a:path)\n    if dir !=# ''\n      let b:git_dir = dir\n    endif\n  endif\n  if exists('b:git_dir')\n    silent doautocmd User FugitiveBoot\n    cnoremap <buffer> <expr> <C-R><C-G> fnameescape(<SID>recall())\n    nnoremap <buffer> <silent> y<C-G> :call setreg(v:register, <SID>recall())<CR>\n    let buffer = fugitive#buffer()\n    if expand('%:p') =~# '//'\n      call buffer.setvar('&path', s:sub(buffer.getvar('&path'), '^\\.%(,|$)', ''))\n    endif\n    if stridx(buffer.getvar('&tags'), escape(b:git_dir.'/tags', ', ')) == -1\n      call buffer.setvar('&tags', escape(b:git_dir.'/tags', ', ').','.buffer.getvar('&tags'))\n      if &filetype !=# ''\n        call buffer.setvar('&tags', escape(b:git_dir.'/'.&filetype.'.tags', ', ').','.buffer.getvar('&tags'))\n      endif\n    endif\n    silent doautocmd User Fugitive\n  endif\nendfunction\n\naugroup fugitive\n  autocmd!\n  autocmd BufNewFile,BufReadPost * call fugitive#detect(expand('<amatch>:p'))\n  autocmd FileType           netrw call fugitive#detect(expand('%:p'))\n  autocmd User NERDTreeInit,NERDTreeNewRoot call fugitive#detect(b:NERDTreeRoot.path.str())\n  autocmd VimEnter * if expand('<amatch>')==''|call fugitive#detect(getcwd())|endif\n  autocmd BufWinLeave * execute getwinvar(+bufwinnr(+expand('<abuf>')), 'fugitive_leave')\naugroup END\n\n\" }}}1\n\" Repository {{{1\n\nlet s:repo_prototype = {}\nlet s:repos = {}\n\nfunction! s:repo(...) abort\n  let dir = a:0 ? a:1 : (exists('b:git_dir') && b:git_dir !=# '' ? b:git_dir : fugitive#extract_git_dir(expand('%:p')))\n  if dir !=# ''\n    if has_key(s:repos, dir)\n      let repo = get(s:repos, dir)\n    else\n      let repo = {'git_dir': dir}\n      let s:repos[dir] = repo\n    endif\n    return extend(extend(repo, s:repo_prototype, 'keep'), s:abstract_prototype, 'keep')\n  endif\n  call s:throw('not a git repository: '.expand('%:p'))\nendfunction\n\nfunction! fugitive#repo(...)\n  return call('s:repo', a:000)\nendfunction\n\nfunction! s:repo_dir(...) dict abort\n  return join([self.git_dir]+a:000,'/')\nendfunction\n\nfunction! s:repo_configured_tree() dict abort\n  if !has_key(self,'_tree')\n    let self._tree = ''\n    if filereadable(self.dir('config'))\n      let config = readfile(self.dir('config'),'',10)\n      call filter(config,'v:val =~# \"^\\\\s*worktree *=\"')\n      if len(config) == 1\n        let self._tree = matchstr(config[0], '= *\\zs.*')\n      endif\n    endif\n  endif\n  if self._tree =~# '^\\.'\n    return simplify(self.dir(self._tree))\n  else\n    return self._tree\n  endif\nendfunction\n\nfunction! s:repo_tree(...) dict abort\n  if self.dir() =~# '/\\.git$'\n    let dir = self.dir()[0:-6]\n  else\n    let dir = self.configured_tree()\n  endif\n  if dir ==# ''\n    call s:throw('no work tree')\n  else\n    return join([dir]+a:000,'/')\n  endif\nendfunction\n\nfunction! s:repo_bare() dict abort\n  if self.dir() =~# '/\\.git$'\n    return 0\n  else\n    return self.configured_tree() ==# ''\n  endif\nendfunction\n\nfunction! s:repo_translate(spec) dict abort\n  if a:spec ==# '.' || a:spec ==# '/.'\n    return self.bare() ? self.dir() : self.tree()\n  elseif a:spec =~# '^/\\=\\.git$' && self.bare()\n    return self.dir()\n  elseif a:spec =~# '^/\\=\\.git/'\n    return self.dir(s:sub(a:spec, '^/=\\.git/', ''))\n  elseif a:spec =~# '^/'\n    return self.tree().a:spec\n  elseif a:spec =~# '^:[0-3]:'\n    return 'fugitive://'.self.dir().'//'.a:spec[1].'/'.a:spec[3:-1]\n  elseif a:spec ==# ':'\n    if $GIT_INDEX_FILE =~# '/[^/]*index[^/]*\\.lock$' && fnamemodify($GIT_INDEX_FILE,':p')[0:strlen(self.dir())] ==# self.dir('') && filereadable($GIT_INDEX_FILE)\n      return fnamemodify($GIT_INDEX_FILE,':p')\n    else\n      return self.dir('index')\n    endif\n  elseif a:spec =~# '^:/'\n    let ref = self.rev_parse(matchstr(a:spec,'.[^:]*'))\n    return 'fugitive://'.self.dir().'//'.ref\n  elseif a:spec =~# '^:'\n    return 'fugitive://'.self.dir().'//0/'.a:spec[1:-1]\n  elseif a:spec =~# 'HEAD\\|^refs/' && a:spec !~ ':' && filereadable(self.dir(a:spec))\n    return self.dir(a:spec)\n  elseif filereadable(self.dir('refs/'.a:spec))\n    return self.dir('refs/'.a:spec)\n  elseif filereadable(self.dir('refs/tags/'.a:spec))\n    return self.dir('refs/tags/'.a:spec)\n  elseif filereadable(self.dir('refs/heads/'.a:spec))\n    return self.dir('refs/heads/'.a:spec)\n  elseif filereadable(self.dir('refs/remotes/'.a:spec))\n    return self.dir('refs/remotes/'.a:spec)\n  elseif filereadable(self.dir('refs/remotes/'.a:spec.'/HEAD'))\n    return self.dir('refs/remotes/'.a:spec,'/HEAD')\n  else\n    try\n      let ref = self.rev_parse(matchstr(a:spec,'[^:]*'))\n      let path = s:sub(matchstr(a:spec,':.*'),'^:','/')\n      return 'fugitive://'.self.dir().'//'.ref.path\n    catch /^fugitive:/\n      return self.tree(a:spec)\n    endtry\n  endif\nendfunction\n\nfunction! s:repo_head(...) dict abort\n    let head = s:repo().head_ref()\n\n    if head =~# '^ref: '\n      let branch = s:sub(head,'^ref: %(refs/%(heads/|remotes/|tags/)=)=','')\n    elseif head =~# '^\\x\\{40\\}$'\n      \" truncate hash to a:1 characters if we're in detached head mode\n      let len = a:0 ? a:1 : 0\n      let branch = len ? head[0:len-1] : ''\n    endif\n\n    return branch\nendfunction\n\ncall s:add_methods('repo',['dir','configured_tree','tree','bare','translate','head'])\n\nfunction! s:repo_git_command(...) dict abort\n  let git = g:fugitive_git_executable . ' --git-dir='.s:shellesc(self.git_dir)\n  return git.join(map(copy(a:000),'\" \".s:shellesc(v:val)'),'')\nendfunction\n\nfunction! s:repo_git_chomp(...) dict abort\n  return s:sub(system(call(self.git_command,a:000,self)),'\\n$','')\nendfunction\n\nfunction! s:repo_git_chomp_in_tree(...) dict abort\n  let cd = exists('*haslocaldir') && haslocaldir() ? 'lcd ' : 'cd '\n  let dir = getcwd()\n  try\n    execute cd.'`=s:repo().tree()`'\n    return call(s:repo().git_chomp, a:000, s:repo())\n  finally\n    execute cd.'`=dir`'\n  endtry\nendfunction\n\nfunction! s:repo_rev_parse(rev) dict abort\n  let hash = self.git_chomp('rev-parse','--verify',a:rev)\n  if hash =~ '\\<\\x\\{40\\}$'\n    return matchstr(hash,'\\<\\x\\{40\\}$')\n  endif\n  call s:throw('rev-parse '.a:rev.': '.hash)\nendfunction\n\ncall s:add_methods('repo',['git_command','git_chomp','git_chomp_in_tree','rev_parse'])\n\nfunction! s:repo_dirglob(base) dict abort\n  let base = s:sub(a:base,'^/','')\n  let matches = split(glob(self.tree(s:gsub(base,'/','*&').'*/')),\"\\n\")\n  call map(matches,'v:val[ strlen(self.tree())+(a:base !~ \"^/\") : -1 ]')\n  return matches\nendfunction\n\nfunction! s:repo_superglob(base) dict abort\n  if a:base =~# '^/' || a:base !~# ':'\n    let results = []\n    if a:base !~# '^/'\n      let heads = [\"HEAD\",\"ORIG_HEAD\",\"FETCH_HEAD\",\"MERGE_HEAD\"]\n      let heads += sort(split(s:repo().git_chomp(\"rev-parse\",\"--symbolic\",\"--branches\",\"--tags\",\"--remotes\"),\"\\n\"))\n      call filter(heads,'v:val[ 0 : strlen(a:base)-1 ] ==# a:base')\n      let results += heads\n    endif\n    if !self.bare()\n      let base = s:sub(a:base,'^/','')\n      let matches = split(glob(self.tree(s:gsub(base,'/','*&').'*')),\"\\n\")\n      call map(matches,'s:shellslash(v:val)')\n      call map(matches,'v:val !~ \"/$\" && isdirectory(v:val) ? v:val.\"/\" : v:val')\n      call map(matches,'v:val[ strlen(self.tree())+(a:base !~ \"^/\") : -1 ]')\n      let results += matches\n    endif\n    return results\n\n  elseif a:base =~# '^:'\n    let entries = split(self.git_chomp('ls-files','--stage'),\"\\n\")\n    call map(entries,'s:sub(v:val,\".*(\\\\d)\\\\t(.*)\",\":\\\\1:\\\\2\")')\n    if a:base !~# '^:[0-3]\\%(:\\|$\\)'\n      call filter(entries,'v:val[1] == \"0\"')\n      call map(entries,'v:val[2:-1]')\n    endif\n    call filter(entries,'v:val[ 0 : strlen(a:base)-1 ] ==# a:base')\n    return entries\n\n  else\n    let tree = matchstr(a:base,'.*[:/]')\n    let entries = split(self.git_chomp('ls-tree',tree),\"\\n\")\n    call map(entries,'s:sub(v:val,\"^04.*\\\\zs$\",\"/\")')\n    call map(entries,'tree.s:sub(v:val,\".*\\t\",\"\")')\n    return filter(entries,'v:val[ 0 : strlen(a:base)-1 ] ==# a:base')\n  endif\nendfunction\n\ncall s:add_methods('repo',['dirglob','superglob'])\n\nfunction! s:repo_config(conf) dict abort\n  return matchstr(system(s:repo().git_command('config').' '.a:conf),\"[^\\r\\n]*\")\nendfun\n\nfunction! s:repo_user() dict abort\n  let username = s:repo().config('user.name')\n  let useremail = s:repo().config('user.email')\n  return username.' <'.useremail.'>'\nendfun\n\nfunction! s:repo_aliases() dict abort\n  if !has_key(self,'_aliases')\n    let self._aliases = {}\n    for line in split(self.git_chomp('config','--get-regexp','^alias[.]'),\"\\n\")\n      let self._aliases[matchstr(line,'\\.\\zs\\S\\+')] = matchstr(line,' \\zs.*')\n    endfor\n  endif\n  return self._aliases\nendfunction\n\ncall s:add_methods('repo',['config', 'user', 'aliases'])\n\nfunction! s:repo_keywordprg() dict abort\n  let args = ' --git-dir='.escape(self.dir(),\"\\\\\\\"' \")\n  if has('gui_running') && !has('win32')\n    return g:fugitive_git_executable . ' --no-pager' . args . ' log -1'\n  else\n    return g:fugitive_git_executable . args . ' show'\n  endif\nendfunction\n\ncall s:add_methods('repo',['keywordprg'])\n\n\" }}}1\n\" Buffer {{{1\n\nlet s:buffer_prototype = {}\n\nfunction! s:buffer(...) abort\n  let buffer = {'#': bufnr(a:0 ? a:1 : '%')}\n  call extend(extend(buffer,s:buffer_prototype,'keep'),s:abstract_prototype,'keep')\n  if buffer.getvar('git_dir') !=# ''\n    return buffer\n  endif\n  call s:throw('not a git repository: '.expand('%:p'))\nendfunction\n\nfunction! fugitive#buffer(...) abort\n  return s:buffer(a:0 ? a:1 : '%')\nendfunction\n\nfunction! s:buffer_getvar(var) dict abort\n  return getbufvar(self['#'],a:var)\nendfunction\n\nfunction! s:buffer_setvar(var,value) dict abort\n  return setbufvar(self['#'],a:var,a:value)\nendfunction\n\nfunction! s:buffer_getline(lnum) dict abort\n  return getbufline(self['#'],a:lnum)[0]\nendfunction\n\nfunction! s:buffer_repo() dict abort\n  return s:repo(self.getvar('git_dir'))\nendfunction\n\nfunction! s:buffer_type(...) dict abort\n  if self.getvar('fugitive_type') != ''\n    let type = self.getvar('fugitive_type')\n  elseif fnamemodify(self.spec(),':p') =~# '.\\git/refs/\\|\\.git/\\w*HEAD$'\n    let type = 'head'\n  elseif self.getline(1) =~ '^tree \\x\\{40\\}$' && self.getline(2) == ''\n    let type = 'tree'\n  elseif self.getline(1) =~ '^\\d\\{6\\} \\w\\{4\\} \\x\\{40\\}\\>\\t'\n    let type = 'tree'\n  elseif self.getline(1) =~ '^\\d\\{6\\} \\x\\{40\\}\\> \\d\\t'\n    let type = 'index'\n  elseif isdirectory(self.spec())\n    let type = 'directory'\n  elseif self.spec() == ''\n    let type = 'null'\n  else\n    let type = 'file'\n  endif\n  if a:0\n    return !empty(filter(copy(a:000),'v:val ==# type'))\n  else\n    return type\n  endif\nendfunction\n\nif has('win32')\n\n  function! s:buffer_spec() dict abort\n    let bufname = bufname(self['#'])\n    let retval = ''\n    for i in split(bufname,'[^:]\\zs\\\\')\n      let retval = fnamemodify((retval==''?'':retval.'\\').i,':.')\n    endfor\n    return s:shellslash(fnamemodify(retval,':p'))\n  endfunction\n\nelse\n\n  function! s:buffer_spec() dict abort\n    let bufname = bufname(self['#'])\n    return s:shellslash(bufname == '' ? '' : fnamemodify(bufname,':p'))\n  endfunction\n\nendif\n\nfunction! s:buffer_name() dict abort\n  return self.spec()\nendfunction\n\nfunction! s:buffer_commit() dict abort\n  return matchstr(self.spec(),'^fugitive://.\\{-\\}//\\zs\\w*')\nendfunction\n\nfunction! s:buffer_path(...) dict abort\n  let rev = matchstr(self.spec(),'^fugitive://.\\{-\\}//\\zs.*')\n  if rev != ''\n    let rev = s:sub(rev,'\\w*','')\n  elseif self.spec()[0 : len(self.repo().dir())] ==# self.repo().dir() . '/'\n    let rev = '/.git'.self.spec()[strlen(self.repo().dir()) : -1]\n  elseif !self.repo().bare() && self.spec()[0 : len(self.repo().tree())] ==# self.repo().tree() . '/'\n    let rev = self.spec()[strlen(self.repo().tree()) : -1]\n  endif\n  return s:sub(s:sub(rev,'.\\zs/$',''),'^/',a:0 ? a:1 : '')\nendfunction\n\nfunction! s:buffer_rev() dict abort\n  let rev = matchstr(self.spec(),'^fugitive://.\\{-\\}//\\zs.*')\n  if rev =~ '^\\x/'\n    return ':'.rev[0].':'.rev[2:-1]\n  elseif rev =~ '.'\n    return s:sub(rev,'/',':')\n  elseif self.spec() =~ '\\.git/index$'\n    return ':'\n  elseif self.spec() =~ '\\.git/refs/\\|\\.git/.*HEAD$'\n    return self.spec()[strlen(self.repo().dir())+1 : -1]\n  else\n    return self.path('/')\n  endif\nendfunction\n\nfunction! s:buffer_sha1() dict abort\n  if self.spec() =~ '^fugitive://' || self.spec() =~ '\\.git/refs/\\|\\.git/.*HEAD$'\n    return self.repo().rev_parse(self.rev())\n  else\n    return ''\n  endif\nendfunction\n\nfunction! s:buffer_expand(rev) dict abort\n  if a:rev =~# '^:[0-3]$'\n    let file = a:rev.self.path(':')\n  elseif a:rev =~# '^[-:]/$'\n    let file = '/'.self.path()\n  elseif a:rev =~# '^-'\n    let file = 'HEAD^{}'.a:rev[1:-1].self.path(':')\n  elseif a:rev =~# '^@{'\n    let file = 'HEAD'.a:rev.self.path(':')\n  elseif a:rev =~# '^[~^]'\n    let commit = s:sub(self.commit(),'^\\d=$','HEAD')\n    let file = commit.a:rev.self.path(':')\n  else\n    let file = a:rev\n  endif\n  return s:sub(s:sub(file,'\\%$',self.path()),'\\.\\@<=/$','')\nendfunction\n\nfunction! s:buffer_containing_commit() dict abort\n  if self.commit() =~# '^\\d$'\n    return ':'\n  elseif self.commit() =~# '.'\n    return self.commit()\n  else\n    return 'HEAD'\n  endif\nendfunction\n\nfunction! s:buffer_up(...) dict abort\n  let rev = self.rev()\n  let c = a:0 ? a:1 : 1\n  while c\n    if rev =~# '^[/:]$'\n      let rev = 'HEAD'\n    elseif rev =~# '^:'\n      let rev = ':'\n    elseif rev =~# '^refs/[^^~:]*$\\|^[^^~:]*HEAD$'\n      let rev .= '^{}'\n    elseif rev =~# '^/\\|:.*/'\n      let rev = s:sub(rev, '.*\\zs/.*', '')\n    elseif rev =~# ':.'\n      let rev = matchstr(rev, '^[^:]*:')\n    elseif rev =~# ':$'\n      let rev = rev[0:-2]\n    else\n      return rev.'~'.c\n    endif\n    let c -= 1\n  endwhile\n  return rev\nendfunction\n\ncall s:add_methods('buffer',['getvar','setvar','getline','repo','type','spec','name','commit','path','rev','sha1','expand','containing_commit','up'])\n\n\" }}}1\n\" Git {{{1\n\ncall s:command(\"-bang -nargs=? -complete=customlist,s:GitComplete Git :execute s:Git(<bang>0,<q-args>)\")\n\nfunction! s:ExecuteInTree(cmd) abort\n  let cd = exists('*haslocaldir') && haslocaldir() ? 'lcd ' : 'cd '\n  let dir = getcwd()\n  try\n    execute cd.'`=s:repo().tree()`'\n    execute a:cmd\n  finally\n    execute cd.'`=dir`'\n  endtry\nendfunction\n\nfunction! s:Git(bang,cmd) abort\n  if a:bang\n    return s:Edit('edit',1,a:cmd)\n  endif\n  let git = s:repo().git_command()\n  if has('gui_running') && !has('win32')\n    let git .= ' --no-pager'\n  endif\n  let cmd = matchstr(a:cmd,'\\v\\C.{-}%($|\\\\@<!%(\\\\\\\\)*\\|)@=')\n  call s:ExecuteInTree('!'.git.' '.cmd)\n  call fugitive#reload_status()\n  return matchstr(a:cmd,'\\v\\C\\\\@<!%(\\\\\\\\)*\\|\\zs.*')\nendfunction\n\nfunction! s:GitComplete(A,L,P) abort\n  if !exists('s:exec_path')\n    let s:exec_path = s:sub(system(g:fugitive_git_executable.' --exec-path'),'\\n$','')\n  endif\n  let cmds = map(split(glob(s:exec_path.'/git-*'),\"\\n\"),'s:sub(v:val[strlen(s:exec_path)+5 : -1],\"\\\\.exe$\",\"\")')\n  if a:L =~ ' [[:alnum:]-]\\+ '\n    return s:repo().superglob(a:A)\n  elseif a:A == ''\n    return sort(cmds+keys(s:repo().aliases()))\n  else\n    return filter(sort(cmds+keys(s:repo().aliases())),'v:val[0:strlen(a:A)-1] ==# a:A')\n  endif\nendfunction\n\n\" }}}1\n\" Gcd, Glcd {{{1\n\nfunction! s:DirComplete(A,L,P) abort\n  let matches = s:repo().dirglob(a:A)\n  return matches\nendfunction\n\ncall s:command(\"-bar -bang -nargs=? -complete=customlist,s:DirComplete Gcd  :cd<bang>  `=s:repo().bare() ? s:repo().dir(<q-args>) : s:repo().tree(<q-args>)`\")\ncall s:command(\"-bar -bang -nargs=? -complete=customlist,s:DirComplete Glcd :lcd<bang> `=s:repo().bare() ? s:repo().dir(<q-args>) : s:repo().tree(<q-args>)`\")\n\n\" }}}1\n\" Gstatus {{{1\n\ncall s:command(\"-bar Gstatus :execute s:Status()\")\naugroup fugitive_status\n  autocmd!\n  if !has('win32')\n    autocmd FocusGained,ShellCmdPost * call fugitive#reload_status()\n  endif\naugroup END\n\nfunction! s:Status() abort\n  try\n    Gpedit :\n    wincmd P\n    setlocal foldmethod=syntax foldlevel=1\n    nnoremap <buffer> <silent> q    :<C-U>bdelete<CR>\n  catch /^fugitive:/\n    return 'echoerr v:errmsg'\n  endtry\n  return ''\nendfunction\n\nfunction! fugitive#reload_status() abort\n  if exists('s:reloading_status')\n    return\n  endif\n  try\n    let s:reloading_status = 1\n    let mytab = tabpagenr()\n    for tab in [mytab] + range(1,tabpagenr('$'))\n      for winnr in range(1,tabpagewinnr(tab,'$'))\n        if getbufvar(tabpagebuflist(tab)[winnr-1],'fugitive_type') ==# 'index'\n          execute 'tabnext '.tab\n          if winnr != winnr()\n            execute winnr.'wincmd w'\n            let restorewinnr = 1\n          endif\n          try\n            if !&modified\n              call s:BufReadIndex()\n            endif\n          finally\n            if exists('restorewinnr')\n              wincmd p\n            endif\n            execute 'tabnext '.mytab\n          endtry\n        endif\n      endfor\n    endfor\n  finally\n    unlet! s:reloading_status\n  endtry\nendfunction\n\nfunction! s:stage_info(lnum) abort\n  let filename = matchstr(getline(a:lnum),'^#\\t\\zs.\\{-\\}\\ze\\%( ([^()[:digit:]]\\+)\\)\\=$')\n  let lnum = a:lnum\n  if has('multi_byte_encoding')\n    let colon = '\\%(:\\|\\%uff1a\\)'\n  else\n    let colon = ':'\n  endif\n  while lnum && getline(lnum) !~# colon.'$'\n    let lnum -= 1\n  endwhile\n  if !lnum\n    return ['', '']\n  elseif (getline(lnum+1) =~# '^# .*\\<git \\%(reset\\|rm --cached\\) ' && getline(lnum+2) ==# '#') || getline(lnum) ==# '# Changes to be committed:'\n    return [matchstr(filename, colon.' *\\zs.*'), 'staged']\n  elseif (getline(lnum+1) =~# '^# .*\\<git add ' && getline(lnum+2) ==# '#') || getline(lnum) ==# '# Untracked files:'\n    return [filename, 'untracked']\n  elseif getline(lnum+2) =~# '^# .*\\<git checkout ' || getline(lnum) ==# '# Changes not staged for commit:'\n    return [matchstr(filename, colon.' *\\zs.*'), 'unstaged']\n  elseif getline(lnum+2) =~# '^# .*\\<git \\%(add\\|rm\\)' || getline(lnum) ==# '# Unmerged paths:'\n    return [matchstr(filename, colon.' *\\zs.*'), 'unmerged']\n  else\n    return ['', 'unknown']\n  endif\nendfunction\n\nfunction! s:StageNext(count)\n  for i in range(a:count)\n    call search('^#\\t.*','W')\n  endfor\n  return '.'\nendfunction\n\nfunction! s:StagePrevious(count)\n  if line('.') == 1 && exists(':CtrlP')\n    return 'CtrlP '.fnameescape(s:repo().tree())\n  else\n    for i in range(a:count)\n      call search('^#\\t.*','Wbe')\n    endfor\n    return '.'\n  endif\nendfunction\n\nfunction! s:StageReloadSeek(target,lnum1,lnum2)\n  let jump = a:target\n  let f = matchstr(getline(a:lnum1-1),'^#\\t\\%([[:alpha:] ]\\+: *\\|.*\\%uff1a *\\)\\=\\zs.*')\n  if f !=# '' | let jump = f | endif\n  let f = matchstr(getline(a:lnum2+1),'^#\\t\\%([[:alpha:] ]\\+: *\\|.*\\%uff1a *\\)\\=\\zs.*')\n  if f !=# '' | let jump = f | endif\n  silent! edit!\n  1\n  redraw\n  call search('^#\\t\\%([[:alpha:] ]\\+: *\\|.*\\%uff1a *\\)\\=\\V'.jump.'\\%( ([^()[:digit:]]\\+)\\)\\=\\$','W')\nendfunction\n\nfunction! s:StageDiff(diff) abort\n  let [filename, section] = s:stage_info(line('.'))\n  if filename ==# '' && section ==# 'staged'\n    return 'Git! diff --no-ext-diff --cached'\n  elseif filename ==# ''\n    return 'Git! diff --no-ext-diff'\n  elseif filename =~# ' -> '\n    let [old, new] = split(filename,' -> ')\n    execute 'Gedit '.s:fnameescape(':0:'.new)\n    return a:diff.' HEAD:'.s:fnameescape(old)\n  elseif section ==# 'staged'\n    execute 'Gedit '.s:fnameescape(':0:'.filename)\n    return a:diff.' -'\n  else\n    execute 'Gedit '.s:fnameescape('/'.filename)\n    return a:diff\n  endif\nendfunction\n\nfunction! s:StageDiffEdit() abort\n  let [filename, section] = s:stage_info(line('.'))\n  let arg = (filename ==# '' ? '.' : filename)\n  if section ==# 'staged'\n    return 'Git! diff --no-ext-diff --cached '.s:shellesc(arg)\n  elseif section ==# 'untracked'\n    let repo = s:repo()\n    call repo.git_chomp_in_tree('add','--intent-to-add',arg)\n    if arg ==# '.'\n      silent! edit!\n      1\n      if !search('^# .*:\\n#.*\\n# .*\"git checkout \\|^# Changes not staged for commit:$','W')\n        call search('^# .*:$','W')\n      endif\n    else\n      call s:StageReloadSeek(arg,line('.'),line('.'))\n    endif\n    return ''\n  else\n    return 'Git! diff --no-ext-diff '.s:shellesc(arg)\n  endif\nendfunction\n\nfunction! s:StageToggle(lnum1,lnum2) abort\n  if a:lnum1 == 1 && a:lnum2 == 1\n    return 'Gedit /.git|call search(\"^index$\", \"wc\")'\n  endif\n  try\n    let output = ''\n    for lnum in range(a:lnum1,a:lnum2)\n      let [filename, section] = s:stage_info(lnum)\n      let repo = s:repo()\n      if getline('.') =~# '^# .*:$'\n        if section ==# 'staged'\n          call repo.git_chomp_in_tree('reset','-q')\n          silent! edit!\n          1\n          if !search('^# .*:\\n# .*\"git add .*\\n#\\n\\|^# Untracked files:$','W')\n            call search('^# .*:$','W')\n          endif\n          return ''\n        elseif section ==# 'unstaged'\n          call repo.git_chomp_in_tree('add','-u')\n          silent! edit!\n          1\n          if !search('^# .*:\\n# .*\"git add .*\\n#\\n\\|^# Untracked files:$','W')\n            call search('^# .*:$','W')\n          endif\n          return ''\n        else\n          call repo.git_chomp_in_tree('add','.')\n          silent! edit!\n          1\n          call search('^# .*:$','W')\n          return ''\n        endif\n      endif\n      if filename ==# ''\n        continue\n      endif\n      if !exists('first_filename')\n        let first_filename = filename\n      endif\n      execute lnum\n      if filename =~ ' -> '\n        let cmd = ['mv','--'] + reverse(split(filename,' -> '))\n        let filename = cmd[-1]\n      elseif section ==# 'staged'\n        let cmd = ['reset','-q','--',filename]\n      elseif getline(lnum) =~# '^#\\tdeleted:'\n        let cmd = ['rm','--',filename]\n      elseif getline(lnum) =~# '^#\\tmodified:'\n        let cmd = ['add','--',filename]\n      else\n        let cmd = ['add','-A','--',filename]\n      endif\n      let output .= call(repo.git_chomp_in_tree,cmd,s:repo()).\"\\n\"\n    endfor\n    if exists('first_filename')\n      call s:StageReloadSeek(first_filename,a:lnum1,a:lnum2)\n    endif\n    echo s:sub(s:gsub(output,'\\n+','\\n'),'\\n$','')\n  catch /^fugitive:/\n    return 'echoerr v:errmsg'\n  endtry\n  return 'checktime'\nendfunction\n\nfunction! s:StagePatch(lnum1,lnum2) abort\n  let add = []\n  let reset = []\n\n  for lnum in range(a:lnum1,a:lnum2)\n    let [filename, section] = s:stage_info(lnum)\n    if getline('.') =~# '^# .*:$' && section ==# 'staged'\n      return 'Git reset --patch'\n    elseif getline('.') =~# '^# .*:$' && section ==# 'unstaged'\n      return 'Git add --patch'\n    elseif getline('.') =~# '^# .*:$' && section ==# 'untracked'\n      return 'Git add -N .'\n    elseif filename ==# ''\n      continue\n    endif\n    if !exists('first_filename')\n      let first_filename = filename\n    endif\n    execute lnum\n    if filename =~ ' -> '\n      let reset += [split(filename,' -> ')[1]]\n    elseif section ==# 'staged'\n      let reset += [filename]\n    elseif getline(lnum) !~# '^#\\tdeleted:'\n      let add += [filename]\n    endif\n  endfor\n  try\n    if !empty(add)\n      execute \"Git add --patch -- \".join(map(add,'s:shellesc(v:val)'))\n    endif\n    if !empty(reset)\n      execute \"Git reset --patch -- \".join(map(add,'s:shellesc(v:val)'))\n    endif\n    if exists('first_filename')\n      silent! edit!\n      1\n      redraw\n      call search('^#\\t\\%([[:alpha:] ]\\+: *\\)\\=\\V'.first_filename.'\\%( ([^()[:digit:]]\\+)\\)\\=\\$','W')\n    endif\n  catch /^fugitive:/\n    return 'echoerr v:errmsg'\n  endtry\n  return 'checktime'\nendfunction\n\n\" }}}1\n\" Gcommit {{{1\n\ncall s:command(\"-nargs=? -complete=customlist,s:CommitComplete Gcommit :execute s:Commit(<q-args>)\")\n\nfunction! s:Commit(args) abort\n  let cd = exists('*haslocaldir') && haslocaldir() ? 'lcd ' : 'cd '\n  let dir = getcwd()\n  let msgfile = s:repo().dir('COMMIT_EDITMSG')\n  let outfile = tempname()\n  let errorfile = tempname()\n  try\n    try\n      execute cd.s:fnameescape(s:repo().tree())\n      if &shell =~# 'cmd'\n        let command = ''\n        let old_editor = $GIT_EDITOR\n        let $GIT_EDITOR = 'false'\n      else\n        let command = 'env GIT_EDITOR=false '\n      endif\n      let command .= s:repo().git_command('commit').' '.a:args\n      if &shell =~# 'csh'\n        noautocmd silent execute '!('.command.' > '.outfile.') >& '.errorfile\n      elseif a:args =~# '\\%(^\\| \\)--interactive\\>'\n        noautocmd execute '!'.command.' 2> '.errorfile\n      else\n        noautocmd silent execute '!'.command.' > '.outfile.' 2> '.errorfile\n      endif\n    finally\n      execute cd.'`=dir`'\n    endtry\n    if !has('gui_running')\n      redraw!\n    endif\n    if !v:shell_error\n      if filereadable(outfile)\n        for line in readfile(outfile)\n          echo line\n        endfor\n      endif\n      return ''\n    else\n      let errors = readfile(errorfile)\n      let error = get(errors,-2,get(errors,-1,'!'))\n      if error =~# 'false''\\=\\.$'\n        let args = a:args\n        let args = s:gsub(args,'%(%(^| )-- )@<!%(^| )@<=%(-[es]|--edit|--interactive|--signoff)%($| )','')\n        let args = s:gsub(args,'%(%(^| )-- )@<!%(^| )@<=%(-F|--file|-m|--message)%(\\s+|\\=)%(''[^'']*''|\"%(\\\\.|[^\"])*\"|\\\\.|\\S)*','')\n        let args = s:gsub(args,'%(^| )@<=[%#]%(:\\w)*','\\=expand(submatch(0))')\n        let args = '-F '.s:shellesc(msgfile).' '.args\n        if args !~# '\\%(^\\| \\)--cleanup\\>'\n          let args = '--cleanup=strip '.args\n        endif\n        if bufname('%') == '' && line('$') == 1 && getline(1) == '' && !&mod\n          execute 'keepalt edit '.s:fnameescape(msgfile)\n        elseif s:buffer().type() ==# 'index'\n          execute 'keepalt edit '.s:fnameescape(msgfile)\n          execute (search('^#','n')+1).'wincmd+'\n          setlocal nopreviewwindow\n        else\n          execute 'keepalt split '.s:fnameescape(msgfile)\n        endif\n        let b:fugitive_commit_arguments = args\n        setlocal bufhidden=wipe filetype=gitcommit\n        return '1'\n      elseif error ==# '!'\n        return s:Status()\n      else\n        call s:throw(error)\n      endif\n    endif\n  catch /^fugitive:/\n    return 'echoerr v:errmsg'\n  finally\n    if exists('old_editor')\n      let $GIT_EDITOR = old_editor\n    endif\n    call delete(outfile)\n    call delete(errorfile)\n    call fugitive#reload_status()\n  endtry\nendfunction\n\nfunction! s:CommitComplete(A,L,P) abort\n  if a:A =~ '^-' || type(a:A) == type(0) \" a:A is 0 on :Gcommit -<Tab>\n    let args = ['-C', '-F', '-a', '-c', '-e', '-i', '-m', '-n', '-o', '-q', '-s', '-t', '-u', '-v', '--all', '--allow-empty', '--amend', '--author=', '--cleanup=', '--dry-run', '--edit', '--file=', '--include', '--interactive', '--message=', '--no-verify', '--only', '--quiet', '--reedit-message=', '--reuse-message=', '--signoff', '--template=', '--untracked-files', '--verbose']\n    return filter(args,'v:val[0 : strlen(a:A)-1] ==# a:A')\n  else\n    return s:repo().superglob(a:A)\n  endif\nendfunction\n\nfunction! s:FinishCommit()\n  let args = getbufvar(+expand('<abuf>'),'fugitive_commit_arguments')\n  if !empty(args)\n    call setbufvar(+expand('<abuf>'),'fugitive_commit_arguments','')\n    return s:Commit(args)\n  endif\n  return ''\nendfunction\n\naugroup fugitive_commit\n  autocmd!\n  autocmd VimLeavePre,BufDelete COMMIT_EDITMSG execute s:sub(s:FinishCommit(), '^echoerr (.*)', 'echohl ErrorMsg|echo \\1|echohl NONE')\naugroup END\n\n\" }}}1\n\" Ggrep, Glog {{{1\n\nif !exists('g:fugitive_summary_format')\n  let g:fugitive_summary_format = '%s'\nendif\n\ncall s:command(\"-bang -nargs=? -complete=customlist,s:EditComplete Ggrep :execute s:Grep('grep',<bang>0,<q-args>)\")\ncall s:command(\"-bang -nargs=? -complete=customlist,s:EditComplete Glgrep :execute s:Grep('lgrep',<bang>0,<q-args>)\")\ncall s:command(\"-bar -bang -nargs=* -complete=customlist,s:EditComplete Glog :execute s:Log('grep<bang>',<f-args>)\")\ncall s:command(\"-bar -bang -nargs=* -complete=customlist,s:EditComplete Gllog :execute s:Log('lgrep<bang>',<f-args>)\")\n\nfunction! s:Grep(cmd,bang,arg) abort\n  let grepprg = &grepprg\n  let grepformat = &grepformat\n  let cd = exists('*haslocaldir') && haslocaldir() ? 'lcd ' : 'cd '\n  let dir = getcwd()\n  try\n    execute cd.'`=s:repo().tree()`'\n    let &grepprg = s:repo().git_command('--no-pager', 'grep', '-n')\n    let &grepformat = '%f:%l:%m'\n    exe a:cmd.'! '.escape(matchstr(a:arg,'\\v\\C.{-}%($|[''\" ]\\@=\\|)@='),'|')\n    let list = a:cmd =~# '^l' ? getloclist(0) : getqflist()\n    for entry in list\n      if bufname(entry.bufnr) =~ ':'\n        let entry.filename = s:repo().translate(bufname(entry.bufnr))\n        unlet! entry.bufnr\n      elseif a:arg =~# '\\%(^\\| \\)--cached\\>'\n        let entry.filename = s:repo().translate(':0:'.bufname(entry.bufnr))\n        unlet! entry.bufnr\n      endif\n    endfor\n    if a:cmd =~# '^l'\n      call setloclist(0, list, 'r')\n    else\n      call setqflist(list, 'r')\n    endif\n    if !a:bang && !empty(list)\n      return (a:cmd =~# '^l' ? 'l' : 'c').'first'.matchstr(a:arg,'\\v\\C[''\" ]\\zs\\|.*')\n    else\n      return matchstr(a:arg,'\\v\\C[''\" ]\\|\\zs.*')\n    endif\n  finally\n    let &grepprg = grepprg\n    let &grepformat = grepformat\n    execute cd.'`=dir`'\n  endtry\nendfunction\n\nfunction! s:Log(cmd,...)\n  let path = s:buffer().path('/')\n  if path =~# '^/\\.git\\%(/\\|$\\)' || index(a:000,'--') != -1\n    let path = ''\n  endif\n  let cmd = ['--no-pager', 'log', '--no-color']\n  let cmd += ['--pretty=format:fugitive://'.s:repo().dir().'//%H'.path.'::'.g:fugitive_summary_format]\n  if empty(filter(a:000[0 : index(a:000,'--')],'v:val !~# \"^-\"'))\n    if s:buffer().commit() =~# '\\x\\{40\\}'\n      let cmd += [s:buffer().commit()]\n    elseif s:buffer().path() =~# '^\\.git/refs/\\|^\\.git/.*HEAD$'\n      let cmd += [s:buffer().path()[5:-1]]\n    endif\n  end\n  let cmd += map(copy(a:000),'s:sub(v:val,\"^\\\\%(%(:\\\\w)*)\",\"\\\\=fnamemodify(s:buffer().path(),submatch(1))\")')\n  if path =~# '/.'\n    let cmd += ['--',path[1:-1]]\n  endif\n  let grepformat = &grepformat\n  let grepprg = &grepprg\n  let cd = exists('*haslocaldir') && haslocaldir() ? 'lcd ' : 'cd '\n  let dir = getcwd()\n  try\n    execute cd.'`=s:repo().tree()`'\n    let &grepprg = escape(call(s:repo().git_command,cmd,s:repo()),'%#')\n    let &grepformat = '%f::%m'\n    exe a:cmd\n  finally\n    let &grepformat = grepformat\n    let &grepprg = grepprg\n    execute cd.'`=dir`'\n  endtry\nendfunction\n\n\" }}}1\n\" Gedit, Gpedit, Gsplit, Gvsplit, Gtabedit, Gread {{{1\n\nfunction! s:Edit(cmd,bang,...) abort\n  let buffer = s:buffer()\n  if a:cmd !~# 'read'\n    if &previewwindow && getbufvar('','fugitive_type') ==# 'index'\n      wincmd p\n      if &diff\n        let mywinnr = winnr()\n        for winnr in range(winnr('$'),1,-1)\n          if winnr != mywinnr && getwinvar(winnr,'&diff')\n            execute winnr.'wincmd w'\n            close\n            wincmd p\n          endif\n        endfor\n      endif\n    endif\n  endif\n\n  if a:bang\n    let arglist = map(copy(a:000), 's:gsub(v:val, ''\\\\@<!%(\\\\\\\\)*\\zs[%#]'', ''\\=s:buffer().expand(submatch(0))'')')\n    let args = join(arglist, ' ')\n    if a:cmd =~# 'read'\n      let git = buffer.repo().git_command()\n      let last = line('$')\n      silent call s:ExecuteInTree((a:cmd ==# 'read' ? '$read' : a:cmd).'!'.git.' --no-pager '.args)\n      if a:cmd ==# 'read'\n        silent execute '1,'.last.'delete_'\n      endif\n      call fugitive#reload_status()\n      diffupdate\n      return 'redraw|echo '.string(':!'.git.' '.args)\n    else\n      let temp = resolve(tempname())\n      let s:temp_files[temp] = { 'dir': buffer.repo().dir(), 'args': arglist }\n      silent execute a:cmd.' '.temp\n      if a:cmd =~# 'pedit'\n        wincmd P\n      endif\n      let echo = s:Edit('read',1,args)\n      silent write!\n      setlocal buftype=nowrite nomodified filetype=git foldmarker=<<<<<<<,>>>>>>>\n      if getline(1) !~# '^diff '\n        setlocal readonly nomodifiable\n      endif\n      if a:cmd =~# 'pedit'\n        wincmd p\n      endif\n      return echo\n    endif\n    return ''\n  endif\n\n  if a:0 && a:1 == ''\n    return ''\n  elseif a:0\n    let file = buffer.expand(join(a:000, ' '))\n  elseif expand('%') ==# ''\n    let file = ':'\n  elseif buffer.commit() ==# '' && buffer.path('/') !~# '^/.git\\>'\n    let file = buffer.path(':')\n  else\n    let file = buffer.path('/')\n  endif\n  try\n    let file = buffer.repo().translate(file)\n  catch /^fugitive:/\n    return 'echoerr v:errmsg'\n  endtry\n  if a:cmd ==# 'read'\n    return 'silent %delete_|read '.s:fnameescape(file).'|silent 1delete_|diffupdate|'.line('.')\n  else\n    return a:cmd.' '.s:fnameescape(file)\n  endif\nendfunction\n\nfunction! s:EditComplete(A,L,P) abort\n  return map(s:repo().superglob(a:A), 'fnameescape(v:val)')\nendfunction\n\nfunction! s:EditRunComplete(A,L,P) abort\n  if a:L =~# '^\\w\\+!'\n    return s:GitComplete(a:A,a:L,a:P)\n  else\n    return s:repo().superglob(a:A)\n  endif\nendfunction\n\ncall s:command(\"-bar -bang -nargs=* -complete=customlist,s:EditComplete Ge       :execute s:Edit('edit<bang>',0,<f-args>)\")\ncall s:command(\"-bar -bang -nargs=* -complete=customlist,s:EditComplete Gedit    :execute s:Edit('edit<bang>',0,<f-args>)\")\ncall s:command(\"-bar -bang -nargs=* -complete=customlist,s:EditRunComplete Gpedit   :execute s:Edit('pedit',<bang>0,<f-args>)\")\ncall s:command(\"-bar -bang -nargs=* -complete=customlist,s:EditRunComplete Gsplit   :execute s:Edit('split',<bang>0,<f-args>)\")\ncall s:command(\"-bar -bang -nargs=* -complete=customlist,s:EditRunComplete Gvsplit  :execute s:Edit('vsplit',<bang>0,<f-args>)\")\ncall s:command(\"-bar -bang -nargs=* -complete=customlist,s:EditRunComplete Gtabedit :execute s:Edit('tabedit',<bang>0,<f-args>)\")\ncall s:command(\"-bar -bang -nargs=* -count -complete=customlist,s:EditRunComplete Gread :execute s:Edit((!<count> && <line1> ? '' : <count>).'read',<bang>0,<f-args>)\")\n\n\" }}}1\n\" Gwrite, Gwq {{{1\n\ncall s:command(\"-bar -bang -nargs=* -complete=customlist,s:EditComplete Gwrite :execute s:Write(<bang>0,<f-args>)\")\ncall s:command(\"-bar -bang -nargs=* -complete=customlist,s:EditComplete Gw :execute s:Write(<bang>0,<f-args>)\")\ncall s:command(\"-bar -bang -nargs=* -complete=customlist,s:EditComplete Gwq :execute s:Wq(<bang>0,<f-args>)\")\n\nfunction! s:Write(force,...) abort\n  if exists('b:fugitive_commit_arguments')\n    return 'write|bdelete'\n  elseif expand('%:t') == 'COMMIT_EDITMSG' && $GIT_INDEX_FILE != ''\n    return 'wq'\n  elseif s:buffer().type() == 'index'\n    return 'Gcommit'\n  elseif s:buffer().path() ==# '' && getline(4) =~# '^+++ '\n    let filename = getline(4)[6:-1]\n    setlocal buftype=\n    silent write\n    setlocal buftype=nowrite\n    if matchstr(getline(2),'index [[:xdigit:]]\\+\\.\\.\\zs[[:xdigit:]]\\{7\\}') ==# s:repo().rev_parse(':0:'.filename)[0:6]\n      let err = s:repo().git_chomp('apply','--cached','--reverse',s:buffer().spec())\n    else\n      let err = s:repo().git_chomp('apply','--cached',s:buffer().spec())\n    endif\n    if err !=# ''\n      let v:errmsg = split(err,\"\\n\")[0]\n      return 'echoerr v:errmsg'\n    elseif a:force\n      return 'bdelete'\n    else\n      return 'Gedit '.fnameescape(filename)\n    endif\n  endif\n  let mytab = tabpagenr()\n  let mybufnr = bufnr('')\n  let path = a:0 ? join(a:000, ' ') : s:buffer().path()\n  if path =~# '^:\\d\\>'\n    return 'write'.(a:force ? '! ' : ' ').s:fnameescape(s:repo().translate(s:buffer().expand(path)))\n  endif\n  let always_permitted = (s:buffer().path() ==# path && s:buffer().commit() =~# '^0\\=$')\n  if !always_permitted && !a:force && s:repo().git_chomp_in_tree('diff','--name-status','HEAD','--',path) . s:repo().git_chomp_in_tree('ls-files','--others','--',path) !=# ''\n    let v:errmsg = 'fugitive: file has uncommitted changes (use ! to override)'\n    return 'echoerr v:errmsg'\n  endif\n  let file = s:repo().translate(path)\n  let treebufnr = 0\n  for nr in range(1,bufnr('$'))\n    if fnamemodify(bufname(nr),':p') ==# file\n      let treebufnr = nr\n    endif\n  endfor\n\n  if treebufnr > 0 && treebufnr != bufnr('')\n    let temp = tempname()\n    silent execute '%write '.temp\n    for tab in [mytab] + range(1,tabpagenr('$'))\n      for winnr in range(1,tabpagewinnr(tab,'$'))\n        if tabpagebuflist(tab)[winnr-1] == treebufnr\n          execute 'tabnext '.tab\n          if winnr != winnr()\n            execute winnr.'wincmd w'\n            let restorewinnr = 1\n          endif\n          try\n            let lnum = line('.')\n            let last = line('$')\n            silent execute '$read '.temp\n            silent execute '1,'.last.'delete_'\n            silent write!\n            silent execute lnum\n            let did = 1\n          finally\n            if exists('restorewinnr')\n              wincmd p\n            endif\n            execute 'tabnext '.mytab\n          endtry\n        endif\n      endfor\n    endfor\n    if !exists('did')\n      call writefile(readfile(temp,'b'),file,'b')\n    endif\n  else\n    execute 'write! '.s:fnameescape(s:repo().translate(path))\n  endif\n\n  if a:force\n    let error = s:repo().git_chomp_in_tree('add', '--force', file)\n  else\n    let error = s:repo().git_chomp_in_tree('add', file)\n  endif\n  if v:shell_error\n    let v:errmsg = 'fugitive: '.error\n    return 'echoerr v:errmsg'\n  endif\n  if s:buffer().path() ==# path && s:buffer().commit() =~# '^\\d$'\n    set nomodified\n  endif\n\n  let one = s:repo().translate(':1:'.path)\n  let two = s:repo().translate(':2:'.path)\n  let three = s:repo().translate(':3:'.path)\n  for nr in range(1,bufnr('$'))\n    let name = fnamemodify(bufname(nr), ':p')\n    if bufloaded(nr) && !getbufvar(nr,'&modified') && (name ==# one || name ==# two || name ==# three)\n      execute nr.'bdelete'\n    endif\n  endfor\n\n  unlet! restorewinnr\n  let zero = s:repo().translate(':0:'.path)\n  for tab in range(1,tabpagenr('$'))\n    for winnr in range(1,tabpagewinnr(tab,'$'))\n      let bufnr = tabpagebuflist(tab)[winnr-1]\n      let bufname = fnamemodify(bufname(bufnr), ':p')\n      if bufname ==# zero && bufnr != mybufnr\n        execute 'tabnext '.tab\n        if winnr != winnr()\n          execute winnr.'wincmd w'\n          let restorewinnr = 1\n        endif\n        try\n          let lnum = line('.')\n          let last = line('$')\n          silent execute '$read '.s:fnameescape(file)\n          silent execute '1,'.last.'delete_'\n          silent execute lnum\n          set nomodified\n          diffupdate\n        finally\n          if exists('restorewinnr')\n            wincmd p\n          endif\n          execute 'tabnext '.mytab\n        endtry\n        break\n      endif\n    endfor\n  endfor\n  call fugitive#reload_status()\n  return 'checktime'\nendfunction\n\nfunction! s:Wq(force,...) abort\n  let bang = a:force ? '!' : ''\n  if exists('b:fugitive_commit_arguments')\n    return 'wq'.bang\n  endif\n  let result = call(s:function('s:Write'),[a:force]+a:000)\n  if result =~# '^\\%(write\\|wq\\|echoerr\\)'\n    return s:sub(result,'^write','wq')\n  else\n    return result.'|quit'.bang\n  endif\nendfunction\n\n\" }}}1\n\" Gdiff {{{1\n\ncall s:command(\"-bang -bar -nargs=* -complete=customlist,s:EditComplete Gdiff :execute s:Diff(<bang>0,<f-args>)\")\ncall s:command(\"-bar -nargs=* -complete=customlist,s:EditComplete Gvdiff :execute s:Diff(0,<f-args>)\")\ncall s:command(\"-bar -nargs=* -complete=customlist,s:EditComplete Gsdiff :execute s:Diff(1,<f-args>)\")\n\naugroup fugitive_diff\n  autocmd!\n  autocmd BufWinLeave * if &diff && s:diff_window_count() == 2 && getbufvar(+expand('<abuf>'), 'git_dir') !=# '' | call s:diffoff_all(getbufvar(+expand('<abuf>'), 'git_dir')) | endif\n  autocmd BufWinEnter * if &diff && s:diff_window_count() == 1 && getbufvar(+expand('<abuf>'), 'git_dir') !=# '' | call s:diffoff() | endif\naugroup END\n\nfunction! s:diff_window_count()\n  let c = 0\n  for nr in range(1,winnr('$'))\n    let c += getwinvar(nr,'&diff')\n  endfor\n  return c\nendfunction\n\nfunction! s:diff_restore()\n  let restore = 'setlocal nodiff noscrollbind'\n        \\ . ' scrollopt=' . &l:scrollopt\n        \\ . (&l:wrap ? ' wrap' : ' nowrap')\n        \\ . ' foldlevel=999'\n        \\ . ' foldmethod=' . &l:foldmethod\n        \\ . ' foldcolumn=' . &l:foldcolumn\n        \\ . ' foldlevel=' . &l:foldlevel\n  if has('cursorbind')\n    let restore .= (&l:cursorbind ? ' ' : ' no') . 'cursorbind'\n  endif\n  return restore\nendfunction\n\nfunction! s:diffthis()\n  if !&diff\n    let w:fugitive_diff_restore = s:diff_restore()\n    diffthis\n  endif\nendfunction\n\nfunction! s:diffoff()\n  if exists('w:fugitive_diff_restore')\n    execute w:fugitive_diff_restore\n    unlet w:fugitive_diff_restore\n  else\n    diffoff\n  endif\nendfunction\n\nfunction! s:diffoff_all(dir)\n  for nr in range(1,winnr('$'))\n    if getwinvar(nr,'&diff')\n      if nr != winnr()\n        execute nr.'wincmd w'\n        let restorewinnr = 1\n      endif\n      if exists('b:git_dir') && b:git_dir ==# a:dir\n        call s:diffoff()\n      endif\n    endif\n  endfor\nendfunction\n\nfunction! s:buffer_compare_age(commit) dict abort\n  let scores = {':0': 1, ':1': 2, ':2': 3, ':': 4, ':3': 5}\n  let my_score    = get(scores,':'.self.commit(),0)\n  let their_score = get(scores,':'.a:commit,0)\n  if my_score || their_score\n    return my_score < their_score ? -1 : my_score != their_score\n  elseif self.commit() ==# a:commit\n    return 0\n  endif\n  let base = self.repo().git_chomp('merge-base',self.commit(),a:commit)\n  if base ==# self.commit()\n    return -1\n  elseif base ==# a:commit\n    return 1\n  endif\n  let my_time    = +self.repo().git_chomp('log','--max-count=1','--pretty=format:%at',self.commit())\n  let their_time = +self.repo().git_chomp('log','--max-count=1','--pretty=format:%at',a:commit)\n  return my_time < their_time ? -1 : my_time != their_time\nendfunction\n\ncall s:add_methods('buffer',['compare_age'])\n\nfunction! s:Diff(bang,...)\n  let vert = a:bang ? '' : 'vertical '\n  if exists(':DiffGitCached')\n    return 'DiffGitCached'\n  elseif (!a:0 || a:1 == ':') && s:buffer().commit() =~# '^[0-1]\\=$' && s:repo().git_chomp_in_tree('ls-files', '--unmerged', '--', s:buffer().path()) !=# ''\n    let nr = bufnr('')\n    execute 'leftabove '.vert.'split `=fugitive#buffer().repo().translate(s:buffer().expand('':2''))`'\n    execute 'nnoremap <buffer> <silent> dp :diffput '.nr.'<Bar>diffupdate<CR>'\n    call s:diffthis()\n    wincmd p\n    execute 'rightbelow '.vert.'split `=fugitive#buffer().repo().translate(s:buffer().expand('':3''))`'\n    execute 'nnoremap <buffer> <silent> dp :diffput '.nr.'<Bar>diffupdate<CR>'\n    call s:diffthis()\n    wincmd p\n    call s:diffthis()\n    return ''\n  elseif a:0\n    let arg = join(a:000, ' ')\n    if arg ==# ''\n      return ''\n    elseif arg ==# '/'\n      let file = s:buffer().path('/')\n    elseif arg ==# ':'\n      let file = s:buffer().path(':0:')\n    elseif arg =~# '^:/.'\n      try\n        let file = s:repo().rev_parse(arg).s:buffer().path(':')\n      catch /^fugitive:/\n        return 'echoerr v:errmsg'\n      endtry\n    else\n      let file = s:buffer().expand(arg)\n    endif\n    if file !~# ':' && file !~# '^/' && s:repo().git_chomp('cat-file','-t',file) =~# '^\\%(tag\\|commit\\)$'\n      let file = file.s:buffer().path(':')\n    endif\n  else\n    let file = s:buffer().path(s:buffer().commit() == '' ? ':0:' : '/')\n  endif\n  try\n    let spec = s:repo().translate(file)\n    let commit = matchstr(spec,'\\C[^:/]//\\zs\\x\\+')\n    let restore = s:diff_restore()\n    let w:fugitive_diff_restore = restore\n    if s:buffer().compare_age(commit) < 0\n      execute 'rightbelow '.vert.'diffsplit '.s:fnameescape(spec)\n    else\n      execute 'leftabove '.vert.'diffsplit '.s:fnameescape(spec)\n    endif\n    let w:fugitive_diff_restore = restore\n    return ''\n  catch /^fugitive:/\n    return 'echoerr v:errmsg'\n  endtry\nendfunction\n\n\" }}}1\n\" Gmove, Gremove {{{1\n\nfunction! s:Move(force,destination)\n  if a:destination =~# '^/'\n    let destination = a:destination[1:-1]\n  else\n    let destination = s:shellslash(fnamemodify(s:sub(a:destination,'[%#]%(:\\w)*','\\=expand(submatch(0))'),':p'))\n    if destination[0:strlen(s:repo().tree())] ==# s:repo().tree('')\n      let destination = destination[strlen(s:repo().tree('')):-1]\n    endif\n  endif\n  if isdirectory(s:buffer().spec())\n    \" Work around Vim parser idiosyncrasy\n    let discarded = s:buffer().setvar('&swapfile',0)\n  endif\n  let message = call(s:repo().git_chomp_in_tree,['mv']+(a:force ? ['-f'] : [])+['--', s:buffer().path(), destination], s:repo())\n  if v:shell_error\n    let v:errmsg = 'fugitive: '.message\n    return 'echoerr v:errmsg'\n  endif\n  let destination = s:repo().tree(destination)\n  if isdirectory(destination)\n    let destination = fnamemodify(s:sub(destination,'/$','').'/'.expand('%:t'),':.')\n  endif\n  call fugitive#reload_status()\n  if s:buffer().commit() == ''\n    if isdirectory(destination)\n      return 'keepalt edit '.s:fnameescape(destination)\n    else\n      return 'keepalt saveas! '.s:fnameescape(destination)\n    endif\n  else\n    return 'file '.s:fnameescape(s:repo().translate(':0:'.destination))\n  endif\nendfunction\n\nfunction! s:MoveComplete(A,L,P)\n  if a:A =~ '^/'\n    return s:repo().superglob(a:A)\n  else\n    let matches = split(glob(a:A.'*'),\"\\n\")\n    call map(matches,'v:val !~ \"/$\" && isdirectory(v:val) ? v:val.\"/\" : v:val')\n    return matches\n  endif\nendfunction\n\nfunction! s:Remove(force)\n  if s:buffer().commit() ==# ''\n    let cmd = ['rm']\n  elseif s:buffer().commit() ==# '0'\n    let cmd = ['rm','--cached']\n  else\n    let v:errmsg = 'fugitive: rm not supported here'\n    return 'echoerr v:errmsg'\n  endif\n  if a:force\n    let cmd += ['--force']\n  endif\n  let message = call(s:repo().git_chomp_in_tree,cmd+['--',s:buffer().path()],s:repo())\n  if v:shell_error\n    let v:errmsg = 'fugitive: '.s:sub(message,'error:.*\\zs\\n\\(.*-f.*',' (add ! to force)')\n    return 'echoerr '.string(v:errmsg)\n  else\n    call fugitive#reload_status()\n    return 'bdelete'.(a:force ? '!' : '')\n  endif\nendfunction\n\naugroup fugitive_remove\n  autocmd!\n  autocmd User Fugitive if s:buffer().commit() =~# '^0\\=$' |\n        \\ exe \"command! -buffer -bar -bang -nargs=1 -complete=customlist,s:MoveComplete Gmove :execute s:Move(<bang>0,<q-args>)\" |\n        \\ exe \"command! -buffer -bar -bang Gremove :execute s:Remove(<bang>0)\" |\n        \\ endif\naugroup END\n\n\" }}}1\n\" Gblame {{{1\n\naugroup fugitive_blame\n  autocmd!\n  autocmd BufReadPost *.fugitiveblame setfiletype fugitiveblame\n  autocmd FileType fugitiveblame setlocal nomodeline | if exists('b:git_dir') | let &l:keywordprg = s:repo().keywordprg() | endif\n  autocmd Syntax fugitiveblame call s:BlameSyntax()\n  autocmd User Fugitive if s:buffer().type('file', 'blob') | exe \"command! -buffer -bar -bang -range=0 -nargs=* Gblame :execute s:Blame(<bang>0,<line1>,<line2>,<count>,[<f-args>])\" | endif\naugroup END\n\nfunction! s:linechars(pattern)\n  let chars = strlen(s:gsub(matchstr(getline('.'), a:pattern), '.', '.'))\n  if exists('*synconcealed') && &conceallevel > 1\n    for col in range(1, chars)\n      let chars -= synconcealed(line('.'), col)[0]\n    endfor\n  endif\n  return chars\nendfunction\n\nfunction! s:Blame(bang,line1,line2,count,args) abort\n  try\n    if s:buffer().path() == ''\n      call s:throw('file or blob required')\n    endif\n    if filter(copy(a:args),'v:val !~# \"^\\\\%(--root\\|--show-name\\\\|-\\\\=\\\\%([ltfnsew]\\\\|[MC]\\\\d*\\\\)\\\\+\\\\)$\"') != []\n      call s:throw('unsupported option')\n    endif\n    call map(a:args,'s:sub(v:val,\"^\\\\ze[^-]\",\"-\")')\n    let cmd = ['--no-pager', 'blame', '--show-number'] + a:args\n    if s:buffer().commit() =~# '\\D\\|..'\n      let cmd += [s:buffer().commit()]\n    else\n      let cmd += ['--contents', '-']\n    endif\n    let cmd += ['--', s:buffer().path()]\n    let basecmd = escape(call(s:repo().git_command,cmd,s:repo()),'!')\n    try\n      let cd = exists('*haslocaldir') && haslocaldir() ? 'lcd ' : 'cd '\n      if !s:repo().bare()\n        let dir = getcwd()\n        execute cd.'`=s:repo().tree()`'\n      endif\n      if a:count\n        execute 'write !'.substitute(basecmd,' blame ',' blame -L '.a:line1.','.a:line2.' ','g')\n      else\n        let error = resolve(tempname())\n        let temp = error.'.fugitiveblame'\n        if &shell =~# 'csh'\n          silent! execute '%write !('.basecmd.' > '.temp.') >& '.error\n        else\n          silent! execute '%write !'.basecmd.' > '.temp.' 2> '.error\n        endif\n        if exists('l:dir')\n          execute cd.'`=dir`'\n          unlet dir\n        endif\n        if v:shell_error\n          call s:throw(join(readfile(error),\"\\n\"))\n        endif\n        for winnr in range(winnr('$'),1,-1)\n          call setwinvar(winnr, '&scrollbind', 0)\n          if getbufvar(winbufnr(winnr), 'fugitive_blamed_bufnr')\n            execute winbufnr(winnr).'bdelete'\n          endif\n        endfor\n        let bufnr = bufnr('')\n        let restore = 'call setwinvar(bufwinnr('.bufnr.'),\"&scrollbind\",0)'\n        if &l:wrap\n          let restore .= '|call setwinvar(bufwinnr('.bufnr.'),\"&wrap\",1)'\n        endif\n        if &l:foldenable\n          let restore .= '|call setwinvar(bufwinnr('.bufnr.'),\"&foldenable\",1)'\n        endif\n        setlocal scrollbind nowrap nofoldenable\n        let top = line('w0') + &scrolloff\n        let current = line('.')\n        let s:temp_files[temp] = { 'dir': s:repo().dir(), 'args': cmd }\n        exe 'keepalt leftabove vsplit '.temp\n        let b:fugitive_blamed_bufnr = bufnr\n        let w:fugitive_leave = restore\n        let b:fugitive_blame_arguments = join(a:args,' ')\n        execute top\n        normal! zt\n        execute current\n        setlocal nomodified nomodifiable nonumber scrollbind nowrap foldcolumn=0 nofoldenable filetype=fugitiveblame\n        if exists('+concealcursor')\n          setlocal concealcursor=nc conceallevel=2\n        endif\n        if exists('+relativenumber')\n          setlocal norelativenumber\n        endif\n        execute \"vertical resize \".(s:linechars('.\\{-\\}\\ze\\s\\+\\d\\+)')+1)\n        nnoremap <buffer> <silent> q    :exe substitute(bufwinnr(b:fugitive_blamed_bufnr).' wincmd w<Bar>'.bufnr('').'bdelete','^-1','','')<CR>\n        nnoremap <buffer> <silent> gq   :exe substitute(bufwinnr(b:fugitive_blamed_bufnr).' wincmd w<Bar>'.bufnr('').'bdelete<Bar>if expand(\"%:p\") =~# \"^fugitive:[\\\\/][\\\\/]\"<Bar>Gedit<Bar>endif','^-1','','')<CR>\n        nnoremap <buffer> <silent> <CR> :<C-U>exe <SID>BlameCommit(\"exe 'norm q'<Bar>edit\")<CR>\n        nnoremap <buffer> <silent> -    :<C-U>exe <SID>BlameJump('')<CR>\n        nnoremap <buffer> <silent> P    :<C-U>exe <SID>BlameJump('^'.v:count1)<CR>\n        nnoremap <buffer> <silent> ~    :<C-U>exe <SID>BlameJump('~'.v:count1)<CR>\n        nnoremap <buffer> <silent> i    :<C-U>exe <SID>BlameCommit(\"exe 'norm q'<Bar>edit\")<CR>\n        nnoremap <buffer> <silent> o    :<C-U>exe <SID>BlameCommit((&splitbelow ? \"botright\" : \"topleft\").\" split\")<CR>\n        nnoremap <buffer> <silent> O    :<C-U>exe <SID>BlameCommit(\"tabedit\")<CR>\n        nnoremap <buffer> <silent> A    :<C-u>exe \"vertical resize \".(<SID>linechars('.\\{-\\}\\ze [0-9:/+-][0-9:/+ -]* \\d\\+)')+1+v:count)<CR>\n        nnoremap <buffer> <silent> C    :<C-u>exe \"vertical resize \".(<SID>linechars('^\\S\\+')+1+v:count)<CR>\n        nnoremap <buffer> <silent> D    :<C-u>exe \"vertical resize \".(<SID>linechars('.\\{-\\}\\ze\\d\\ze\\s\\+\\d\\+)')+1-v:count)<CR>\n        redraw\n        syncbind\n      endif\n    finally\n      if exists('l:dir')\n        execute cd.'`=dir`'\n      endif\n    endtry\n    return ''\n  catch /^fugitive:/\n    return 'echoerr v:errmsg'\n  endtry\nendfunction\n\nfunction! s:BlameCommit(cmd) abort\n  let cmd = s:Edit(a:cmd, 0, matchstr(getline('.'),'\\x\\+'))\n  if cmd =~# '^echoerr'\n    return cmd\n  endif\n  let lnum = matchstr(getline('.'),' \\zs\\d\\+\\ze\\s\\+[([:digit:]]')\n  let path = matchstr(getline('.'),'^\\^\\=\\x\\+\\s\\+\\zs.\\{-\\}\\ze\\s*\\d\\+ ')\n  if path ==# ''\n    let path = s:buffer(b:fugitive_blamed_bufnr).path()\n  endif\n  execute cmd\n  if search('^diff .* b/\\M'.escape(path,'\\').'$','W')\n    call search('^+++')\n    let head = line('.')\n    while search('^@@ \\|^diff ') && getline('.') =~# '^@@ '\n      let top = +matchstr(getline('.'),' +\\zs\\d\\+')\n      let len = +matchstr(getline('.'),' +\\d\\+,\\zs\\d\\+')\n      if lnum >= top && lnum <= top + len\n        let offset = lnum - top\n        if &scrolloff\n          +\n          normal! zt\n        else\n          normal! zt\n          +\n        endif\n        while offset > 0 && line('.') < line('$')\n          +\n          if getline('.') =~# '^[ +]'\n            let offset -= 1\n          endif\n        endwhile\n        return 'if foldlevel(\".\")|foldopen!|endif'\n      endif\n    endwhile\n    execute head\n    normal! zt\n  endif\n  return ''\nendfunction\n\nfunction! s:BlameJump(suffix) abort\n  let commit = matchstr(getline('.'),'^\\^\\=\\zs\\x\\+')\n  if commit =~# '^0\\+$'\n    let commit = ':0'\n  endif\n  let lnum = matchstr(getline('.'),' \\zs\\d\\+\\ze\\s\\+[([:digit:]]')\n  let path = matchstr(getline('.'),'^\\^\\=\\x\\+\\s\\+\\zs.\\{-\\}\\ze\\s*\\d\\+ ')\n  if path ==# ''\n    let path = s:buffer(b:fugitive_blamed_bufnr).path()\n  endif\n  let args = b:fugitive_blame_arguments\n  let offset = line('.') - line('w0')\n  let bufnr = bufnr('%')\n  let winnr = bufwinnr(b:fugitive_blamed_bufnr)\n  if winnr > 0\n    exe winnr.'wincmd w'\n  endif\n  execute s:Edit('edit', 0, commit.a:suffix.':'.path)\n  execute lnum\n  if winnr > 0\n    exe bufnr.'bdelete'\n  endif\n  execute 'Gblame '.args\n  execute lnum\n  let delta = line('.') - line('w0') - offset\n  if delta > 0\n    execute 'normal! '.delta.\"\\<C-E>\"\n  elseif delta < 0\n    execute 'normal! '.(-delta).\"\\<C-Y>\"\n  endif\n  syncbind\n  return ''\nendfunction\n\nfunction! s:BlameSyntax() abort\n  let b:current_syntax = 'fugitiveblame'\n  let conceal = has('conceal') ? ' conceal' : ''\n  let arg = exists('b:fugitive_blame_arguments') ? b:fugitive_blame_arguments : ''\n  syn match FugitiveblameBoundary \"^\\^\"\n  syn match FugitiveblameBlank                      \"^\\s\\+\\s\\@=\" nextgroup=FugitiveblameAnnotation,fugitiveblameOriginalFile,FugitiveblameOriginalLineNumber skipwhite\n  syn match FugitiveblameHash       \"\\%(^\\^\\=\\)\\@<=\\x\\{7,40\\}\\>\" nextgroup=FugitiveblameAnnotation,FugitiveblameOriginalLineNumber,fugitiveblameOriginalFile skipwhite\n  syn match FugitiveblameUncommitted \"\\%(^\\^\\=\\)\\@<=0\\{7,40\\}\\>\" nextgroup=FugitiveblameAnnotation,FugitiveblameOriginalLineNumber,fugitiveblameOriginalFile skipwhite\n  syn region FugitiveblameAnnotation matchgroup=FugitiveblameDelimiter start=\"(\" end=\"\\%( \\d\\+\\)\\@<=)\" contained keepend oneline\n  syn match FugitiveblameTime \"[0-9:/+-][0-9:/+ -]*[0-9:/+-]\\%( \\+\\d\\+)\\)\\@=\" contained containedin=FugitiveblameAnnotation\n  exec 'syn match FugitiveblameLineNumber         \" *\\d\\+)\\@=\" contained containedin=FugitiveblameAnnotation'.conceal\n  exec 'syn match FugitiveblameOriginalFile       \" \\%(\\f\\+\\D\\@<=\\|\\D\\@=\\f\\+\\)\\%(\\%(\\s\\+\\d\\+\\)\\=\\s\\%((\\|\\s*\\d\\+)\\)\\)\\@=\" contained nextgroup=FugitiveblameOriginalLineNumber,FugitiveblameAnnotation skipwhite'.(arg =~# 'f' ? '' : conceal)\n  exec 'syn match FugitiveblameOriginalLineNumber \" *\\d\\+\\%(\\s(\\)\\@=\" contained nextgroup=FugitiveblameAnnotation skipwhite'.(arg =~# 'n' ? '' : conceal)\n  exec 'syn match FugitiveblameOriginalLineNumber \" *\\d\\+\\%(\\s\\+\\d\\+)\\)\\@=\" contained nextgroup=FugitiveblameShort skipwhite'.(arg =~# 'n' ? '' : conceal)\n  syn match FugitiveblameShort              \" \\d\\+)\" contained contains=FugitiveblameLineNumber\n  syn match FugitiveblameNotCommittedYet \"(\\@<=Not Committed Yet\\>\" contained containedin=FugitiveblameAnnotation\n  hi def link FugitiveblameBoundary           Keyword\n  hi def link FugitiveblameHash               Identifier\n  hi def link FugitiveblameUncommitted        Function\n  hi def link FugitiveblameTime               PreProc\n  hi def link FugitiveblameLineNumber         Number\n  hi def link FugitiveblameOriginalFile       String\n  hi def link FugitiveblameOriginalLineNumber Float\n  hi def link FugitiveblameShort              FugitiveblameDelimiter\n  hi def link FugitiveblameDelimiter          Delimiter\n  hi def link FugitiveblameNotCommittedYet    Comment\nendfunction\n\n\" }}}1\n\" Gbrowse {{{1\n\ncall s:command(\"-bar -bang -range -nargs=* -complete=customlist,s:EditComplete Gbrowse :execute s:Browse(<bang>0,<line1>,<count>,<f-args>)\")\n\nfunction! s:Browse(bang,line1,count,...) abort\n  try\n    let rev = a:0 ? substitute(join(a:000, ' '),'@[[:alnum:]_-]*\\%(://.\\{-\\}\\)\\=$','','') : ''\n    if rev ==# ''\n      let expanded = s:buffer().rev()\n    elseif rev ==# ':'\n      let expanded = s:buffer().path('/')\n    else\n      let expanded = s:buffer().expand(rev)\n    endif\n    let full = s:repo().translate(expanded)\n    let commit = ''\n    if full =~# '^fugitive://'\n      let commit = matchstr(full,'://.*//\\zs\\w\\+')\n      let path = matchstr(full,'://.*//\\w\\+\\zs/.*')\n      if commit =~ '..'\n        let type = s:repo().git_chomp('cat-file','-t',commit.s:sub(path,'^/',':'))\n      else\n        let type = 'blob'\n      endif\n      let path = path[1:-1]\n    elseif s:repo().bare()\n      let path = '.git/' . full[strlen(s:repo().dir())+1:-1]\n      let type = ''\n    else\n      let path = full[strlen(s:repo().tree())+1:-1]\n      if path =~# '^\\.git/'\n        let type = ''\n      elseif isdirectory(full)\n        let type = 'tree'\n      else\n        let type = 'blob'\n      endif\n    endif\n    if path =~# '^\\.git/.*HEAD' && filereadable(s:repo().dir(path[5:-1]))\n      let body = readfile(s:repo().dir(path[5:-1]))[0]\n      if body =~# '^\\x\\{40\\}$'\n        let commit = body\n        let type = 'commit'\n        let path = ''\n      elseif body =~# '^ref: refs/'\n        let path = '.git/' . matchstr(body,'ref: \\zs.*')\n      endif\n    endif\n\n    if a:0 && join(a:000, ' ') =~# '@[[:alnum:]_-]*\\%(://.\\{-\\}\\)\\=$'\n      let remote = matchstr(join(a:000, ' '),'@\\zs[[:alnum:]_-]\\+\\%(://.\\{-\\}\\)\\=$')\n    elseif path =~# '^\\.git/refs/remotes/.'\n      let remote = matchstr(path,'^\\.git/refs/remotes/\\zs[^/]\\+')\n    else\n      let remote = 'origin'\n      let branch = matchstr(rev,'^[[:alnum:]/._-]\\+\\ze[:^~@]')\n      if branch ==# '' && path =~# '^\\.git/refs/\\w\\+/'\n        let branch = s:sub(path,'^\\.git/refs/\\w+/','')\n      endif\n      if filereadable(s:repo().dir('refs/remotes/'.branch))\n        let remote = matchstr(branch,'[^/]\\+')\n        let rev = rev[strlen(remote)+1:-1]\n      else\n        if branch ==# ''\n          let branch = matchstr(s:repo().head_ref(),'\\<refs/heads/\\zs.*')\n        endif\n        if branch != ''\n          let remote = s:repo().git_chomp('config','branch.'.branch.'.remote')\n          if remote =~# '^\\.\\=$'\n            let remote = 'origin'\n          elseif rev[0:strlen(branch)-1] ==# branch && rev[strlen(branch)] =~# '[:^~@]'\n            let rev = s:repo().git_chomp('config','branch.'.branch.'.merge')[11:-1] . rev[strlen(branch):-1]\n          endif\n        endif\n      endif\n    endif\n\n    let raw = s:repo().git_chomp('config','remote.'.remote.'.url')\n    if raw ==# ''\n      let raw = remote\n    endif\n\n    let url = s:github_url(s:repo(),raw,rev,commit,path,type,a:line1,a:count)\n    if url == ''\n      let url = s:instaweb_url(s:repo(),rev,commit,path,type,a:count > 0 ? a:line1 : 0)\n    endif\n\n    if url == ''\n      call s:throw(\"Instaweb failed to start and '\".remote.\"' is not a GitHub remote\")\n    endif\n\n    if a:bang\n      let @* = url\n      return 'echomsg '.string(url)\n    else\n      return 'echomsg '.string(url).'|call fugitive#buffer().repo().git_chomp(\"web--browse\",'.string(url).')'\n    endif\n  catch /^fugitive:/\n    return 'echoerr v:errmsg'\n  endtry\nendfunction\n\nfunction! s:github_url(repo,url,rev,commit,path,type,line1,line2) abort\n  let path = a:path\n  let domain_pattern = 'github\\.com'\n  let domains = exists('g:fugitive_github_domains') ? g:fugitive_github_domains : []\n  for domain in domains\n    let domain_pattern .= '\\|' . escape(split(domain, '://')[-1], '.')\n  endfor\n  let repo = matchstr(a:url,'^\\%(https\\=://\\|git://\\|git@\\)\\zs\\('.domain_pattern.'\\)[/:].\\{-\\}\\ze\\%(\\.git\\)\\=$')\n  if repo ==# ''\n    return ''\n  endif\n  if index(domains, 'http://' . matchstr(repo, '^[^:/]*')) >= 0\n    let root = 'http://' . s:sub(repo,':','/')\n  else\n    let root = 'https://' . s:sub(repo,':','/')\n  endif\n  if path =~# '^\\.git/refs/heads/'\n    let branch = a:repo.git_chomp('config','branch.'.path[16:-1].'.merge')[11:-1]\n    if branch ==# ''\n      return root . '/commits/' . path[16:-1]\n    else\n      return root . '/commits/' . branch\n    endif\n  elseif path =~# '^\\.git/refs/.'\n    return root . '/commits/' . matchstr(path,'[^/]\\+$')\n  elseif path =~# '.git/\\%(config$\\|hooks\\>\\)'\n    return root . '/admin'\n  elseif path =~# '^\\.git\\>'\n    return root\n  endif\n  if a:rev =~# '^[[:alnum:]._-]\\+:'\n    let commit = matchstr(a:rev,'^[^:]*')\n  elseif a:commit =~# '^\\d\\=$'\n    let local = matchstr(a:repo.head_ref(),'\\<refs/heads/\\zs.*')\n    let commit = a:repo.git_chomp('config','branch.'.local.'.merge')[11:-1]\n    if commit ==# ''\n      let commit = local\n    endif\n  else\n    let commit = a:commit\n  endif\n  if a:type == 'tree'\n    let url = s:sub(root . '/tree/' . commit . '/' . path,'/$','')\n  elseif a:type == 'blob'\n    let url = root . '/blob/' . commit . '/' . path\n    if a:line2 > 0 && a:line1 == a:line2\n      let url .= '#L' . a:line1\n    elseif a:line2 > 0\n      let url .= '#L' . a:line1 . '-' . a:line2\n    endif\n  elseif a:type == 'tag'\n    let commit = matchstr(getline(3),'^tag \\zs.*')\n    let url = root . '/tree/' . commit\n  else\n    let url = root . '/commit/' . commit\n  endif\n  return url\nendfunction\n\nfunction! s:instaweb_url(repo,rev,commit,path,type,...) abort\n  let output = a:repo.git_chomp('instaweb','-b','unknown')\n  if output =~# 'http://'\n    let root = matchstr(output,'http://.*').'/?p='.fnamemodify(a:repo.dir(),':t')\n  else\n    return ''\n  endif\n  if a:path =~# '^\\.git/refs/.'\n    return root . ';a=shortlog;h=' . matchstr(a:path,'^\\.git/\\zs.*')\n  elseif a:path =~# '^\\.git\\>'\n    return root\n  endif\n  let url = root\n  if a:commit =~# '^\\x\\{40\\}$'\n    if a:type ==# 'commit'\n      let url .= ';a=commit'\n    endif\n    let url .= ';h=' . a:repo.rev_parse(a:commit . (a:path == '' ? '' : ':' . a:path))\n  else\n    if a:type ==# 'blob'\n      let tmp = tempname()\n      silent execute 'write !'.a:repo.git_command('hash-object','-w','--stdin').' > '.tmp\n      let url .= ';h=' . readfile(tmp)[0]\n    else\n      try\n        let url .= ';h=' . a:repo.rev_parse((a:commit == '' ? 'HEAD' : ':' . a:commit) . ':' . a:path)\n      catch /^fugitive:/\n        call s:throw('fugitive: cannot browse uncommitted file')\n      endtry\n    endif\n    let root .= ';hb=' . matchstr(a:repo.head_ref(),'[^ ]\\+$')\n  endif\n  if a:path !=# ''\n    let url .= ';f=' . a:path\n  endif\n  if a:0 && a:1\n    let url .= '#l' . a:1\n  endif\n  return url\nendfunction\n\n\" }}}1\n\" File access {{{1\n\nfunction! s:ReplaceCmd(cmd,...) abort\n  let fn = expand('%:p')\n  let tmp = tempname()\n  let prefix = ''\n  try\n    if a:0 && a:1 != ''\n      if &shell =~# 'cmd'\n        let old_index = $GIT_INDEX_FILE\n        let $GIT_INDEX_FILE = a:1\n      else\n        let prefix = 'env GIT_INDEX_FILE='.s:shellesc(a:1).' '\n      endif\n    endif\n    if &shell =~# 'cmd'\n      let cmd_escape_char = &shellxquote == '(' ?  '^' : '^^^'\n      call system('cmd /c \"'.prefix.s:gsub(a:cmd,'[<>]', cmd_escape_char.'&').' > '.tmp.'\"')\n    else\n      call system(' ('.prefix.a:cmd.' > '.tmp.') ')\n    endif\n  finally\n    if exists('old_index')\n      let $GIT_INDEX_FILE = old_index\n    endif\n  endtry\n  silent exe 'keepalt file '.tmp\n  try\n    silent edit!\n  finally\n    silent exe 'keepalt file '.s:fnameescape(fn)\n    call delete(tmp)\n    if fnamemodify(bufname('$'), ':p') ==# tmp\n      silent execute 'bwipeout '.bufnr('$')\n    endif\n    silent exe 'doau BufReadPost '.s:fnameescape(fn)\n  endtry\nendfunction\n\nfunction! s:BufReadIndex()\n  if !exists('b:fugitive_display_format')\n    let b:fugitive_display_format = filereadable(expand('%').'.lock')\n  endif\n  let b:fugitive_display_format = b:fugitive_display_format % 2\n  let b:fugitive_type = 'index'\n  try\n    let b:git_dir = s:repo().dir()\n    setlocal noro ma nomodeline\n    if fnamemodify($GIT_INDEX_FILE !=# '' ? $GIT_INDEX_FILE : b:git_dir . '/index', ':p') ==# expand('%:p')\n      let index = ''\n    else\n      let index = expand('%:p')\n    endif\n    if b:fugitive_display_format\n      call s:ReplaceCmd(s:repo().git_command('ls-files','--stage'),index)\n      set ft=git nospell\n    else\n      let cd = exists('*haslocaldir') && haslocaldir() ? 'lcd ' : 'cd '\n      let dir = getcwd()\n      if fugitive#git_version() =~# '^0\\|^1\\.[1-7]\\.'\n        let cmd = s:repo().git_command('status')\n      else\n        let cmd = s:repo().git_command(\n              \\ '-c', 'status.displayCommentPrefix=true',\n              \\ '-c', 'color.status=false',\n              \\ 'status')\n      endif\n      try\n        execute cd.'`=s:repo().tree()`'\n        call s:ReplaceCmd(cmd, index)\n      finally\n        execute cd.'`=dir`'\n      endtry\n      set ft=gitcommit\n      set foldtext=fugitive#foldtext()\n    endif\n    setlocal ro noma nomod noswapfile\n    if &bufhidden ==# ''\n      setlocal bufhidden=delete\n    endif\n    call s:JumpInit()\n    nunmap   <buffer>          P\n    nunmap   <buffer>          ~\n    nnoremap <buffer> <silent> <C-N> :<C-U>execute <SID>StageNext(v:count1)<CR>\n    nnoremap <buffer> <silent> <C-P> :<C-U>execute <SID>StagePrevious(v:count1)<CR>\n    nnoremap <buffer> <silent> - :<C-U>silent execute <SID>StageToggle(line('.'),line('.')+v:count1-1)<CR>\n    xnoremap <buffer> <silent> - :<C-U>silent execute <SID>StageToggle(line(\"'<\"),line(\"'>\"))<CR>\n    nnoremap <buffer> <silent> a :<C-U>let b:fugitive_display_format += 1<Bar>exe <SID>BufReadIndex()<CR>\n    nnoremap <buffer> <silent> i :<C-U>let b:fugitive_display_format -= 1<Bar>exe <SID>BufReadIndex()<CR>\n    nnoremap <buffer> <silent> C :<C-U>Gcommit<CR>\n    nnoremap <buffer> <silent> cA :<C-U>Gcommit --amend --reuse-message=HEAD<CR>\n    nnoremap <buffer> <silent> ca :<C-U>Gcommit --amend<CR>\n    nnoremap <buffer> <silent> cc :<C-U>Gcommit<CR>\n    nnoremap <buffer> <silent> cva :<C-U>Gcommit --amend --verbose<CR>\n    nnoremap <buffer> <silent> cvc :<C-U>Gcommit --verbose<CR>\n    nnoremap <buffer> <silent> D :<C-U>execute <SID>StageDiff('Gvdiff')<CR>\n    nnoremap <buffer> <silent> dd :<C-U>execute <SID>StageDiff('Gvdiff')<CR>\n    nnoremap <buffer> <silent> dh :<C-U>execute <SID>StageDiff('Gsdiff')<CR>\n    nnoremap <buffer> <silent> ds :<C-U>execute <SID>StageDiff('Gsdiff')<CR>\n    nnoremap <buffer> <silent> dp :<C-U>execute <SID>StageDiffEdit()<CR>\n    nnoremap <buffer> <silent> dv :<C-U>execute <SID>StageDiff('Gvdiff')<CR>\n    nnoremap <buffer> <silent> p :<C-U>execute <SID>StagePatch(line('.'),line('.')+v:count1-1)<CR>\n    xnoremap <buffer> <silent> p :<C-U>execute <SID>StagePatch(line(\"'<\"),line(\"'>\"))<CR>\n    nnoremap <buffer> <silent> q :<C-U>if bufnr('$') == 1<Bar>quit<Bar>else<Bar>bdelete<Bar>endif<CR>\n    nnoremap <buffer> <silent> R :<C-U>edit<CR>\n  catch /^fugitive:/\n    return 'echoerr v:errmsg'\n  endtry\nendfunction\n\nfunction! s:FileRead()\n  try\n    let repo = s:repo(fugitive#extract_git_dir(expand('<amatch>')))\n    let path = s:sub(s:sub(matchstr(expand('<amatch>'),'fugitive://.\\{-\\}//\\zs.*'),'/',':'),'^\\d:',':&')\n    let hash = repo.rev_parse(path)\n    if path =~ '^:'\n      let type = 'blob'\n    else\n      let type = repo.git_chomp('cat-file','-t',hash)\n    endif\n    \" TODO: use count, if possible\n    return \"read !\".escape(repo.git_command('cat-file',type,hash),'%#\\')\n  catch /^fugitive:/\n    return 'echoerr v:errmsg'\n  endtry\nendfunction\n\nfunction! s:BufReadIndexFile()\n  try\n    let b:fugitive_type = 'blob'\n    let b:git_dir = s:repo().dir()\n    try\n      call s:ReplaceCmd(s:repo().git_command('cat-file','blob',s:buffer().sha1()))\n    finally\n      if &bufhidden ==# ''\n        setlocal bufhidden=delete\n      endif\n    endtry\n    return ''\n  catch /^fugitive: rev-parse/\n    silent exe 'doau BufNewFile '.s:fnameescape(expand('%:p'))\n    return ''\n  catch /^fugitive:/\n    return 'echoerr v:errmsg'\n  endtry\nendfunction\n\nfunction! s:BufWriteIndexFile()\n  let tmp = tempname()\n  try\n    let path = matchstr(expand('<amatch>'),'//\\d/\\zs.*')\n    let stage = matchstr(expand('<amatch>'),'//\\zs\\d')\n    silent execute 'write !'.s:repo().git_command('hash-object','-w','--stdin').' > '.tmp\n    let sha1 = readfile(tmp)[0]\n    let old_mode = matchstr(s:repo().git_chomp('ls-files','--stage',path),'^\\d\\+')\n    if old_mode == ''\n      let old_mode = executable(s:repo().tree(path)) ? '100755' : '100644'\n    endif\n    let info = old_mode.' '.sha1.' '.stage.\"\\t\".path\n    call writefile([info],tmp)\n    if &shell =~# 'cmd'\n      let error = system('type '.s:gsub(tmp,'/','\\\\').'|'.s:repo().git_command('update-index','--index-info'))\n    else\n      let error = system(s:repo().git_command('update-index','--index-info').' < '.tmp)\n    endif\n    if v:shell_error == 0\n      setlocal nomodified\n      silent execute 'doautocmd BufWritePost '.s:fnameescape(expand('%:p'))\n      call fugitive#reload_status()\n      return ''\n    else\n      return 'echoerr '.string('fugitive: '.error)\n    endif\n  finally\n    call delete(tmp)\n  endtry\nendfunction\n\nfunction! s:BufReadObject()\n  try\n    setlocal noro ma\n    let b:git_dir = s:repo().dir()\n    let hash = s:buffer().sha1()\n    if !exists(\"b:fugitive_type\")\n      let b:fugitive_type = s:repo().git_chomp('cat-file','-t',hash)\n    endif\n    if b:fugitive_type !~# '^\\%(tag\\|commit\\|tree\\|blob\\)$'\n      return \"echoerr 'fugitive: unrecognized git type'\"\n    endif\n    let firstline = getline('.')\n    if !exists('b:fugitive_display_format') && b:fugitive_type != 'blob'\n      let b:fugitive_display_format = +getbufvar('#','fugitive_display_format')\n    endif\n\n    if b:fugitive_type !=# 'blob'\n      setlocal nomodeline\n    endif\n\n    let pos = getpos('.')\n    silent %delete\n    setlocal endofline\n\n    try\n      if b:fugitive_type ==# 'tree'\n        let b:fugitive_display_format = b:fugitive_display_format % 2\n        if b:fugitive_display_format\n          call s:ReplaceCmd(s:repo().git_command('ls-tree',hash))\n        else\n          call s:ReplaceCmd(s:repo().git_command('show','--no-color',hash))\n        endif\n      elseif b:fugitive_type ==# 'tag'\n        let b:fugitive_display_format = b:fugitive_display_format % 2\n        if b:fugitive_display_format\n          call s:ReplaceCmd(s:repo().git_command('cat-file',b:fugitive_type,hash))\n        else\n          call s:ReplaceCmd(s:repo().git_command('cat-file','-p',hash))\n        endif\n      elseif b:fugitive_type ==# 'commit'\n        let b:fugitive_display_format = b:fugitive_display_format % 2\n        if b:fugitive_display_format\n          call s:ReplaceCmd(s:repo().git_command('cat-file',b:fugitive_type,hash))\n        else\n          call s:ReplaceCmd(s:repo().git_command('show','--no-color','--pretty=format:tree %T%nparent %P%nauthor %an <%ae> %ad%ncommitter %cn <%ce> %cd%nencoding %e%n%n%s%n%n%b',hash))\n          call search('^parent ')\n          if getline('.') ==# 'parent '\n            silent delete_\n          else\n            silent s/\\%(^parent\\)\\@<! /\\rparent /ge\n          endif\n          if search('^encoding \\%(<unknown>\\)\\=$','W',line('.')+3)\n            silent delete_\n          end\n          1\n        endif\n      elseif b:fugitive_type ==# 'blob'\n        call s:ReplaceCmd(s:repo().git_command('cat-file',b:fugitive_type,hash))\n      endif\n    finally\n      call setpos('.',pos)\n      setlocal ro noma nomod\n      if &bufhidden ==# ''\n        setlocal bufhidden=delete\n      endif\n      if b:fugitive_type !=# 'blob'\n        set filetype=git\n        nnoremap <buffer> <silent> a :<C-U>let b:fugitive_display_format += v:count1<Bar>exe <SID>BufReadObject()<CR>\n        nnoremap <buffer> <silent> i :<C-U>let b:fugitive_display_format -= v:count1<Bar>exe <SID>BufReadObject()<CR>\n      else\n        call s:JumpInit()\n      endif\n    endtry\n\n    return ''\n  catch /^fugitive:/\n    return 'echoerr v:errmsg'\n  endtry\nendfunction\n\naugroup fugitive_files\n  autocmd!\n  autocmd BufReadCmd  index{,.lock}\n        \\ if fugitive#is_git_dir(expand('<amatch>:p:h')) |\n        \\   exe s:BufReadIndex() |\n        \\ elseif filereadable(expand('<amatch>')) |\n        \\   read <amatch> |\n        \\   1delete |\n        \\ endif\n  autocmd FileReadCmd fugitive://**//[0-3]/**          exe s:FileRead()\n  autocmd BufReadCmd  fugitive://**//[0-3]/**          exe s:BufReadIndexFile()\n  autocmd BufWriteCmd fugitive://**//[0-3]/**          exe s:BufWriteIndexFile()\n  autocmd BufReadCmd  fugitive://**//[0-9a-f][0-9a-f]* exe s:BufReadObject()\n  autocmd FileReadCmd fugitive://**//[0-9a-f][0-9a-f]* exe s:FileRead()\n  autocmd FileType git\n        \\ if exists('b:git_dir') |\n        \\  call s:JumpInit() |\n        \\ endif\naugroup END\n\n\" }}}1\n\" Temp files {{{1\n\nif !exists('s:temp_files')\n  let s:temp_files = {}\nendif\n\naugroup fugitive_temp\n  autocmd!\n  autocmd BufNewFile,BufReadPost *\n        \\ if has_key(s:temp_files,expand('<afile>:p')) |\n        \\   let b:git_dir = s:temp_files[expand('<afile>:p')].dir |\n        \\   let b:git_type = 'temp' |\n        \\   let b:git_args = s:temp_files[expand('<afile>:p')].args |\n        \\   call fugitive#detect(expand('<afile>:p')) |\n        \\   setlocal bufhidden=delete |\n        \\   nnoremap <buffer> <silent> q    :<C-U>bdelete<CR>|\n        \\ endif\naugroup END\n\n\" }}}1\n\" Go to file {{{1\n\nfunction! s:JumpInit() abort\n  nnoremap <buffer> <silent> <CR>    :<C-U>exe <SID>GF(\"edit\")<CR>\n  if !&modifiable\n    if exists(':CtrlP')\n      nnoremap <buffer> <silent> <C-P> :<C-U>exe 'CtrlP '.fnameescape(<SID>repo().tree())<CR>\n    endif\n    nnoremap <buffer> <silent> o     :<C-U>exe <SID>GF(\"split\")<CR>\n    nnoremap <buffer> <silent> S     :<C-U>exe <SID>GF(\"vsplit\")<CR>\n    nnoremap <buffer> <silent> O     :<C-U>exe <SID>GF(\"tabedit\")<CR>\n    nnoremap <buffer> <silent> -     :<C-U>exe <SID>Edit('edit',0,<SID>buffer().up(v:count1))<Bar> if fugitive#buffer().type('tree')<Bar>call search('^'.escape(expand('#:t'),'.*[]~\\').'/\\=$','wc')<Bar>endif<CR>\n    nnoremap <buffer> <silent> P     :<C-U>exe <SID>Edit('edit',0,<SID>buffer().commit().'^'.v:count1.<SID>buffer().path(':'))<CR>\n    nnoremap <buffer> <silent> ~     :<C-U>exe <SID>Edit('edit',0,<SID>buffer().commit().'~'.v:count1.<SID>buffer().path(':'))<CR>\n    nnoremap <buffer> <silent> C     :<C-U>exe <SID>Edit('edit',0,<SID>buffer().containing_commit())<CR>\n    nnoremap <buffer> <silent> cc    :<C-U>exe <SID>Edit('edit',0,<SID>buffer().containing_commit())<CR>\n    nnoremap <buffer> <silent> co    :<C-U>exe <SID>Edit('split',0,<SID>buffer().containing_commit())<CR>\n    nnoremap <buffer> <silent> cS    :<C-U>exe <SID>Edit('vsplit',0,<SID>buffer().containing_commit())<CR>\n    nnoremap <buffer> <silent> cO    :<C-U>exe <SID>Edit('tabedit',0,<SID>buffer().containing_commit())<CR>\n    nnoremap <buffer> <silent> cP    :<C-U>exe <SID>Edit('pedit',0,<SID>buffer().containing_commit())<CR>\n    nnoremap <buffer>          .     : <C-R>=fnameescape(<SID>recall())<CR><Home>\n  endif\nendfunction\n\nfunction! s:GF(mode) abort\n  try\n    let buffer = s:buffer()\n    let myhash = buffer.sha1()\n    if myhash ==# '' && getline(1) =~# '^\\%(commit\\|tag\\) \\w'\n      let myhash = matchstr(getline(1),'^\\w\\+ \\zs\\S\\+')\n    endif\n\n    if buffer.type('tree')\n      let showtree = (getline(1) =~# '^tree ' && getline(2) == \"\")\n      if showtree && line('.') == 1\n        return \"\"\n      elseif showtree && line('.') > 2\n        return s:Edit(a:mode,0,buffer.commit().':'.s:buffer().path().(buffer.path() =~# '^$\\|/$' ? '' : '/').s:sub(getline('.'),'/$',''))\n      elseif getline('.') =~# '^\\d\\{6\\} \\l\\{3,8\\} \\x\\{40\\}\\t'\n        return s:Edit(a:mode,0,buffer.commit().':'.s:buffer().path().(buffer.path() =~# '^$\\|/$' ? '' : '/').s:sub(matchstr(getline('.'),'\\t\\zs.*'),'/$',''))\n      endif\n\n    elseif buffer.type('blob')\n      let ref = expand(\"<cfile>\")\n      try\n        let sha1 = buffer.repo().rev_parse(ref)\n      catch /^fugitive:/\n      endtry\n      if exists('sha1')\n        return s:Edit(a:mode,0,ref)\n      endif\n\n    else\n\n      \" Index\n      if getline('.') =~# '^\\d\\{6\\} \\x\\{40\\} \\d\\t'\n        let ref = matchstr(getline('.'),'\\x\\{40\\}')\n        let file = ':'.s:sub(matchstr(getline('.'),'\\d\\t.*'),'\\t',':')\n        return s:Edit(a:mode,0,file)\n\n      elseif getline('.') =~# '^#\\trenamed:.* -> '\n        let file = '/'.matchstr(getline('.'),' -> \\zs.*')\n        return s:Edit(a:mode,0,file)\n      elseif getline('.') =~# '^#\\t[[:alpha:] ]\\+: *.'\n        let file = '/'.matchstr(getline('.'),': *\\zs.\\{-\\}\\ze\\%( ([^()[:digit:]]\\+)\\)\\=$')\n        return s:Edit(a:mode,0,file)\n      elseif getline('.') =~# '^#\\t.'\n        let file = '/'.matchstr(getline('.'),'#\\t\\zs.*')\n        return s:Edit(a:mode,0,file)\n      elseif getline('.') =~# ': needs merge$'\n        let file = '/'.matchstr(getline('.'),'.*\\ze: needs merge$')\n        return s:Edit(a:mode,0,file).'|Gdiff'\n\n      elseif getline('.') ==# '# Not currently on any branch.'\n        return s:Edit(a:mode,0,'HEAD')\n      elseif getline('.') =~# '^# On branch '\n        let file = 'refs/heads/'.getline('.')[12:]\n        return s:Edit(a:mode,0,file)\n      elseif getline('.') =~# \"^# Your branch .*'\"\n        let file = matchstr(getline('.'),\"'\\\\zs\\\\S\\\\+\\\\ze'\")\n        return s:Edit(a:mode,0,file)\n      endif\n\n      let showtree = (getline(1) =~# '^tree ' && getline(2) == \"\")\n\n      if getline('.') =~# '^ref: '\n        let ref = strpart(getline('.'),5)\n\n      elseif getline('.') =~# '^commit \\x\\{40\\}\\>'\n        let ref = matchstr(getline('.'),'\\x\\{40\\}')\n        return s:Edit(a:mode,0,ref)\n\n      elseif getline('.') =~# '^parent \\x\\{40\\}\\>'\n        let ref = matchstr(getline('.'),'\\x\\{40\\}')\n        let line = line('.')\n        let parent = 0\n        while getline(line) =~# '^parent '\n          let parent += 1\n          let line -= 1\n        endwhile\n        return s:Edit(a:mode,0,ref)\n\n      elseif getline('.') =~ '^tree \\x\\{40\\}$'\n        let ref = matchstr(getline('.'),'\\x\\{40\\}')\n        if s:repo().rev_parse(myhash.':') == ref\n          let ref = myhash.':'\n        endif\n        return s:Edit(a:mode,0,ref)\n\n      elseif getline('.') =~# '^object \\x\\{40\\}$' && getline(line('.')+1) =~ '^type \\%(commit\\|tree\\|blob\\)$'\n        let ref = matchstr(getline('.'),'\\x\\{40\\}')\n        let type = matchstr(getline(line('.')+1),'type \\zs.*')\n\n      elseif getline('.') =~# '^\\l\\{3,8\\} '.myhash.'$'\n        return ''\n\n      elseif getline('.') =~# '^\\l\\{3,8\\} \\x\\{40\\}\\>'\n        let ref = matchstr(getline('.'),'\\x\\{40\\}')\n        echoerr \"warning: unknown context \".matchstr(getline('.'),'^\\l*')\n\n      elseif getline('.') =~# '^[+-]\\{3\\} [ab/]'\n        let ref = getline('.')[4:]\n\n      elseif getline('.') =~# '^[+-]' && search('^@@ -\\d\\+,\\d\\+ +\\d\\+,','bnW')\n        let type = getline('.')[0]\n        let lnum = line('.') - 1\n        let offset = -1\n        while getline(lnum) !~# '^@@ -\\d\\+,\\d\\+ +\\d\\+,'\n          if getline(lnum) =~# '^[ '.type.']'\n            let offset += 1\n          endif\n          let lnum -= 1\n        endwhile\n        let offset += matchstr(getline(lnum), type.'\\zs\\d\\+')\n        let ref = getline(search('^'.type.'\\{3\\} [ab]/','bnW'))[4:-1]\n        let dcmd = '+'.offset.'|if foldlevel(\".\")|foldopen!|endif'\n        let dref = ''\n\n      elseif getline('.') =~# '^rename from '\n        let ref = 'a/'.getline('.')[12:]\n      elseif getline('.') =~# '^rename to '\n        let ref = 'b/'.getline('.')[10:]\n\n      elseif getline('.') =~# '^diff --git \\%(a/.*\\|/dev/null\\) \\%(b/.*\\|/dev/null\\)'\n        let dref = matchstr(getline('.'),'\\Cdiff --git \\zs\\%(a/.*\\|/dev/null\\)\\ze \\%(b/.*\\|/dev/null\\)')\n        let ref = matchstr(getline('.'),'\\Cdiff --git \\%(a/.*\\|/dev/null\\) \\zs\\%(b/.*\\|/dev/null\\)')\n        let dcmd = 'Gdiff'\n\n      elseif getline('.') =~# '^index ' && getline(line('.')-1) =~# '^diff --git \\%(a/.*\\|/dev/null\\) \\%(b/.*\\|/dev/null\\)'\n        let line = getline(line('.')-1)\n        let dref = matchstr(line,'\\Cdiff --git \\zs\\%(a/.*\\|/dev/null\\)\\ze \\%(b/.*\\|/dev/null\\)')\n        let ref = matchstr(line,'\\Cdiff --git \\%(a/.*\\|/dev/null\\) \\zs\\%(b/.*\\|/dev/null\\)')\n        let dcmd = 'Gdiff!'\n\n      elseif line('$') == 1 && getline('.') =~ '^\\x\\{40\\}$'\n        let ref = getline('.')\n      else\n        let ref = ''\n      endif\n\n      if myhash ==# ''\n        let ref = s:sub(ref,'^a/','HEAD:')\n        let ref = s:sub(ref,'^b/',':0:')\n        if exists('dref')\n          let dref = s:sub(dref,'^a/','HEAD:')\n        endif\n      else\n        let ref = s:sub(ref,'^a/',myhash.'^:')\n        let ref = s:sub(ref,'^b/',myhash.':')\n        if exists('dref')\n          let dref = s:sub(dref,'^a/',myhash.'^:')\n        endif\n      endif\n\n      if ref ==# '/dev/null'\n        \" Empty blob\n        let ref = 'e69de29bb2d1d6434b8b29ae775ad8c2e48c5391'\n      endif\n\n      if exists('dref')\n        return s:Edit(a:mode,0,ref) . '|'.dcmd.' '.s:fnameescape(dref)\n      elseif ref != \"\"\n        return s:Edit(a:mode,0,ref)\n      endif\n\n    endif\n    return ''\n  catch /^fugitive:/\n    return 'echoerr v:errmsg'\n  endtry\nendfunction\n\n\" }}}1\n\" Statusline {{{1\n\nfunction! s:repo_head_ref() dict abort\n  return readfile(self.dir('HEAD'))[0]\nendfunction\n\ncall s:add_methods('repo',['head_ref'])\n\nfunction! fugitive#statusline(...)\n  if !exists('b:git_dir')\n    return ''\n  endif\n  let status = ''\n  if s:buffer().commit() != ''\n    let status .= ':' . s:buffer().commit()[0:7]\n  endif\n  let status .= '('.fugitive#head(7).')'\n  if &statusline =~# '%[MRHWY]' && &statusline !~# '%[mrhwy]'\n    return ',GIT'.status\n  else\n    return '[Git'.status.']'\n  endif\nendfunction\n\nfunction! fugitive#head(...)\n  if !exists('b:git_dir')\n    return ''\n  endif\n\n  return s:repo().head(a:0 ? a:1 : 0)\nendfunction\n\n\" }}}1\n\" Folding {{{1\n\nfunction! fugitive#foldtext() abort\n  if &foldmethod !=# 'syntax'\n    return foldtext()\n  elseif getline(v:foldstart) =~# '^diff '\n    let [add, remove] = [-1, -1]\n    let filename = ''\n    for lnum in range(v:foldstart, v:foldend)\n      if filename ==# '' && getline(lnum) =~# '^[+-]\\{3\\} [abciow12]/'\n        let filename = getline(lnum)[6:-1]\n      endif\n      if getline(lnum) =~# '^+'\n        let add += 1\n      elseif getline(lnum) =~# '^-'\n        let remove += 1\n      elseif getline(lnum) =~# '^Binary '\n        let binary = 1\n      endif\n    endfor\n    if filename ==# ''\n      let filename = matchstr(getline(v:foldstart), '^diff .\\{-\\} a/\\zs.*\\ze b/')\n    endif\n    if filename ==# ''\n      let filename = getline(v:foldstart)[5:-1]\n    endif\n    if exists('binary')\n      return 'Binary: '.filename\n    else\n      return (add<10&&remove<100?' ':'') . add . '+ ' . (remove<10&&add<100?' ':'') . remove . '- ' . filename\n    endif\n  elseif getline(v:foldstart) =~# '^# .*:$'\n    let lines = getline(v:foldstart, v:foldend)\n    call filter(lines, 'v:val =~# \"^#\\t\"')\n    cal map(lines,'s:sub(v:val, \"^#\\t%(modified: +|renamed: +)=\", \"\")')\n    cal map(lines,'s:sub(v:val, \"^([[:alpha:] ]+): +(.*)\", \"\\\\2 (\\\\1)\")')\n    return getline(v:foldstart).' '.join(lines, ', ')\n  endif\n  return foldtext()\nendfunction\n\naugroup fugitive_foldtext\n  autocmd!\n  autocmd User Fugitive\n        \\ if &filetype =~# '^git\\%(commit\\)\\=$' && &foldtext ==# 'foldtext()' |\n        \\    set foldtext=fugitive#foldtext() |\n        \\ endif\naugroup END\n\n\" }}}1\n\n\" vim:set et sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-gitgutter/README.mkd",
    "content": "## vim-gitgutter\n\nA Vim plugin which shows a git diff in the 'gutter' (sign column).  It shows whether each line has been added, modified, and where lines have been removed.  You can also stage and revert individual hunks.\n\nFeatures:\n\n* Shows signs for added, modified, and removed lines.\n* Ensures signs are always as up to date as possible (but without running more than necessary).\n* Quick jumping between blocks of changed lines (\"hunks\").\n* Stage/revert individual hunks.\n* Optional line highlighting.\n* Fully customisable (signs, sign column, line highlights, mappings, extra git-diff arguments, etc).\n* Can be toggled on/off.\n* Preserves signs from other plugins.\n* Easy to integrate diff stats into status line; built-in integration with [vim-airline](https://github.com/bling/vim-airline/).\n\nConstraints:\n\n* Supports git only.\n\n\n### Screenshot\n\n![screenshot](https://raw.github.com/airblade/vim-gitgutter/master/screenshot.png)\n\nIn the screenshot above you can see:\n\n* Line 15 has been modified.\n* Lines 21-24 are new.\n* A line or lines were removed between lines 25 and 26.\n\n\n### Installation\n\nBefore installation, please check your Vim supports signs by running `:echo has('signs')`.  `1` means you're all set; `0` means you need to install a Vim with signs support.  If you're compiling Vim yourself you need the 'big' or 'huge' feature set.  [MacVim][] supports signs.\n\nIf you don't have a preferred installation method, I recommend installing [pathogen.vim][pathogen], and then simply copy and paste:\n\n```\ncd ~/.vim/bundle\ngit clone git://github.com/airblade/vim-gitgutter.git\n```\n\nOr for [Vundle](https://github.com/gmarik/vundle) users:\n\nAdd `Bundle 'airblade/vim-gitgutter'` to your `~/.vimrc` and then:\n\n* either within Vim: `:BundleInstall`\n* or in your shell: `vim +BundleInstall +qall`\n\n\n### Usage\n\nYou don't have to do anything: it just works.\n\n\n#### Activation\n\nYou can explicitly turn vim-gitgutter off and on (defaults to on):\n\n* turn off with `:GitGutterDisable`\n* turn on with `:GitGutterEnable`\n* toggle with `:GitGutterToggle`.\n\nYou can turn the signs on and off (defaults to on):\n\n* turn on with `:GitGutterSignsEnable`\n* turn off with `:GitGutterSignsDisable`\n* toggle with `:GitGutterSignsToggle`.\n\nAnd you can turn line highlighting on and off (defaults to off):\n\n* turn on with `:GitGutterLineHighlightsEnable`\n* turn off with `:GitGutterLineHighlightsDisable`\n* toggle with `:GitGutterLineHighlightsToggle`.\n\n\n#### Hunks\n\nYou can jump between hunks:\n\n* jump to next hunk (change): `]c`\n* jump to previous hunk (change): `[c`.\n\nBoth of those take a preceding count.\n\nTo set your own mappings for these, for example `]h` and `[h`:\n\n```viml\nnmap ]h <Plug>GitGutterNextHunk\nnmap [h <Plug>GitGutterPrevHunk\n```\n\nYou can stage or revert an individual hunk when your cursor is in it:\n\n* stage the hunk with `<Leader>hs` or\n* revert it with `<Leader>hr`.\n\nTo set your own mappings for these, for example if you prefer the mnemonics hunk-add and hunk-undo:\n\n```viml\nnmap <Leader>ha <Plug>GitGutterStageHunk\nnmap <Leader>hu <Plug>GitGutterRevertHunk\n```\n\nIf you don't want vim-gitgutter to set up any mappings at all, use this:\n\n```viml\nlet g:gitgutter_map_keys = 0\n```\n\nFinally, you can force vim-gitgutter to update its signs across all visible buffers with `:GitGutterAll`.\n\nSee the customisation section below for how to change the defaults.\n\n\n### When are the signs updated?\n\nBy default the signs are updated as follows:\n\n| Event                     | Reason for update                    | Configuration          |\n|---------------------------|--------------------------------------|------------------------|\n| Stop typing               | So the signs are real time           | `g:gitgutter_realtime` |\n| Switch buffer             | To notice change to git index        | `g:gitgutter_eager`    |\n| Switch tab                | To notice change to git index        | `g:gitgutter_eager`    |\n| Focus the GUI             | To notice change to git index        | `g:gitgutter_eager` (not gVim on Windows) |\n| Read a file into a buffer | To display initial signs             | [always]               |\n| Save a buffer             | So non-realtime signs are up to date | [always]               |\n| Change a file outside Vim | To notice `git stash`                | [always]               |\n\nIf you experience a lag, you can trade speed for accuracy:\n\n```viml\nlet g:gitgutter_realtime = 0\nlet g:gitgutter_eager = 0\n```\n\nNote the realtime updating requires Vim 7.3.105 or higher.\n\n\n### Customisation\n\nYou can customise:\n\n* The sign column's colours\n* Whether or not the sign column is shown when there aren't any signs (defaults to no)\n* The signs' colours and symbols\n* Line highlights\n* Extra arguments for `git diff`\n* Key mappings\n* Whether or not to escape `grep` (default to no)\n* Whether or not vim-gitgutter is on initially (defaults to on)\n* Whether or not signs are shown (defaults to yes)\n* Whether or not line highlighting is on initially (defaults to off)\n* Whether or not vim-gitgutter runs in \"realtime\" (defaults to yes)\n* Whether or not vim-gitgutter runs eagerly (defaults to yes)\n\nPlease note that vim-gitgutter won't override any colours or highlights you've set in your colorscheme.\n\n\n#### Sign column\n\nThe background colour of the sign column is controlled by the `SignColumn` highlight group.  This will be either set in your colorscheme or Vim's default.\n\nTo find out where it's set, and to what it's set, use `:verbose highlight SignColumn`.\n\nIf your `SignColumn` is not set (`:highlight SignColumn` gives you `SignColumn xxx cleared`), vim-gitgutter will set it to the same as your line number column (i.e. the `LineNr` highlight group).\n\nTo change your sign column's appearance, update your colorscheme or `~/.vimrc` like this:\n\n* For the same appearance as your line number column: `highlight clear SignColumn`\n* For a specific appearance on terminal Vim: `highlight SignColumn ctermbg=whatever`\n* For a specific appearance on gVim/MacVim: `highlight SignColumn guibg=whatever`\n\nBy default the sign column will appear when there are signs to show and disappear when there aren't.  If you would always like the sign column to be there, add `let g:gitgutter_sign_column_always = 1` to your `~/.vimrc`.\n\n\n#### Signs' colours and symbols\n\nTo customise the colours, set up the following highlight groups in your colorscheme or `~/.vimrc`:\n\n```viml\nGitGutterAdd          \" an added line\nGitGutterChange       \" a changed line\nGitGutterDelete       \" at least one removed line\nGitGutterChangeDelete \" a changed line followed by at least one removed line\n```\n\nYou can either set these with `highlight GitGutterAdd {key}={arg}...` or link them to existing highlight groups with, say, `highlight link GitGutterAdd DiffAdd`.\n\nTo customise the symbols, add the following to your `~/.vimrc`:\n\n```viml\nlet g:gitgutter_sign_added = 'xx'\nlet g:gitgutter_sign_modified = 'yy'\nlet g:gitgutter_sign_removed = 'zz'\nlet g:gitgutter_sign_modified_removed = 'ww'\n```\n\n\n#### Line highlights\n\nSimilarly to the signs' colours, set up the following highlight groups in your colorscheme or `~/.vimrc`:\n\n```viml\nGitGutterAddLine          \" default: links to DiffAdd\nGitGutterChangeLine       \" default: links to DiffChange\nGitGutterDeleteLine       \" default: links to DiffDelete\nGitGutterChangeDeleteLine \" default: links to GitGutterChangeLineDefault, i.e. DiffChange\n```\n\n#### Extra arguments for `git diff`\n\nIf you want to pass extra arguments to `git diff`, for example to ignore whitespace, do so like this:\n\n```viml\nlet g:gitgutter_diff_args = '-w'\n```\n\n#### Key mappings\n\nTo disable all key mappings:\n\n```viml\nlet g:gitgutter_map_keys = 0\n```\n\nSee above for configuring maps for hunk-jumping and staging/reverting.\n\n\n#### Whether or not to escape `grep`\n\nIf you have `grep` aliased to something which changes its output, for example `grep --color=auto -H`, you will need to tell vim-gitgutter to use raw grep:\n\n```viml\nlet g:gitgutter_escape_grep = 1\n```\n\n#### To turn off vim-gitgutter by default\n\nAdd `let g:gitgutter_enabled = 0` to your `~/.vimrc`.\n\n\n#### To turn off signs by default\n\nAdd `let g:gitgutter_signs = 0` to your `~/.vimrc`.\n\n\n#### To turn on line highlighting by default\n\nAdd `let g:gitgutter_highlight_lines = 1` to your `~/.vimrc`.\n\n\n### FAQ\n\n> Why are the colours in the sign column weird?\n\nYour colorscheme is configuring the `SignColumn` highlight group weirdly.  Please see the section above on customising the sign column.\n\n> There's a noticeable lag when vim-gitter runs; how can I avoid it?\n\nBy default vim-gitgutter runs often so the signs are as accurate as possible.  However on some systems this causes a noticeable lag.  If you would like to trade a little accuracy for speed, add this to your `~/.vimrc`:\n\n```viml\nlet g:gitgutter_realtime = 0\nlet g:gitgutter_eager = 0\n```\n\n> Why is no sign shown if I delete the first line(s) in a file?\n\nvim-gitgutter shows removed lines with a sign on the line above.  In this case there isn't a line above so vim-gitgutter can't show the sign.  In due course I'll fix this with an overline character on the first line.\n\n> What happens if I also use another plugin which uses signs (e.g. Syntastic)?\n\nVim only allows one sign per line.  Before adding a sign to a line, vim-gitgutter checks whether a sign has already been added by somebody else.  If so it doesn't do anything.  In other words vim-gitgutter won't overwrite another plugin's signs.  It also won't remove another plugin's signs.\n\n> Why aren't any signs showing at all?\n\nHere are some things you can check:\n\n* Your git config is compatible with the version of git which your Vim is calling (`:echo system('git --version')`).\n* Your Vim supports signs (`:echo has('signs')` should give `1`).\n* Your file is being tracked by git and has unstaged, saved changes.\n* If you use the Fish shell, add `set shell=/bin/bash` to your `~/.vimrc`.\n\n\n### Shameless Plug\n\nIf this plugin has helped you, or you'd like to learn more about Vim, why not check out these two screencasts I wrote for PeepCode:\n\n* [Smash Into Vim I][siv1]\n* [Smash Into Vim II][siv2]\n\nYou can read reviews at PeepCode and also on my [portfolio][].\n\n\n### Intellectual Property\n\nCopyright Andrew Stewart, AirBlade Software Ltd.  Released under the MIT licence.\n\n\n  [pathogen]: https://github.com/tpope/vim-pathogen\n  [siv1]: https://peepcode.com/products/smash-into-vim-i\n  [siv2]: https://peepcode.com/products/smash-into-vim-ii\n  [portfolio]: http://airbladesoftware.com/portfolio#vim\n  [macvim]: http://code.google.com/p/macvim/\n"
  },
  {
    "path": ".vim/bundle/vim-gitgutter/autoload/debug.vim",
    "content": "function! debug#debug()\n  \" Open a scratch buffer\n  vsplit __GitGutter_Debug__\n  normal! ggdG\n  setlocal buftype=nofile\n  setlocal bufhidden=delete\n  setlocal noswapfile\n\n  call debug#vim_version()\n  call debug#separator()\n\n  call debug#git_version()\n  call debug#separator()\n\n  call debug#option('shell')\n  call debug#option('shellcmdflag')\n  call debug#option('shellpipe')\n  call debug#option('shellquote')\n  call debug#option('shellredir')\n  call debug#option('shellslash')\n  call debug#option('shelltemp')\n  call debug#option('shelltype')\n  call debug#option('shellxescape')\n  call debug#option('shellxquote')\nendfunction\n\n\nfunction! debug#separator()\n  call debug#output('')\nendfunction\n\nfunction! debug#vim_version()\n  redir => version_info\n    silent execute 'version'\n  redir END\n  call debug#output(split(version_info, '\\n')[0:2])\nendfunction\n\nfunction! debug#git_version()\n  let v = system('git --version')\n  call debug#output( substitute(v, '\\n$', '', '') )\nendfunction\n\nfunction! debug#option(name)\n  if exists('+' . a:name)\n    let v = eval('&' . a:name)\n    call debug#output(a:name . '=' . v)\n    \" redir => output\n    \"   silent execute \"verbose set \" . a:name . \"?\"\n    \" redir END\n    \" call debug#output(a:name . '=' . output)\n  else\n    call debug#output(a:name . ' [n/a]')\n  end\nendfunction\n\nfunction! debug#output(text)\n  call append(line('$'), a:text)\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-gitgutter/autoload/diff.vim",
    "content": "let s:grep_available = executable('grep')\nlet s:grep_command = ' | ' . (g:gitgutter_escape_grep ? '\\grep' : 'grep') . ' -e ' . utility#shellescape('^@@ ')\nlet s:hunk_re = '^@@ -\\(\\d\\+\\),\\?\\(\\d*\\) +\\(\\d\\+\\),\\?\\(\\d*\\) @@'\n\n\nfunction! diff#run_diff(realtime, use_external_grep)\n  \" Wrap compound command in parentheses to make Windows happy.\n  let cmd = '(git ls-files --error-unmatch ' . utility#shellescape(utility#filename()) . ' && ('\n\n  if a:realtime\n    let blob_name = ':' . utility#shellescape(utility#file_relative_to_repo_root())\n    let blob_file = tempname()\n    let cmd .= 'git show ' . blob_name . ' > ' . blob_file .\n          \\ ' && diff -U0 ' . g:gitgutter_diff_args . ' ' . blob_file . ' - '\n  else\n    let cmd .= 'git diff --no-ext-diff --no-color -U0 ' . g:gitgutter_diff_args . ' ' . utility#shellescape(utility#filename())\n  endif\n\n  if a:use_external_grep && s:grep_available\n    let cmd .= s:grep_command\n  endif\n\n  if (a:use_external_grep && s:grep_available) || a:realtime\n    \" grep exits with 1 when no matches are found; diff exits with 1 when\n    \" differences are found.  However we want to treat non-matches and\n    \" differences as non-erroneous behaviour; so we OR the command with one\n    \" which always exits with success (0).\n    let cmd.= ' || exit 0'\n  endif\n\n  let cmd .= '))'\n\n  if a:realtime\n    let diff = system(utility#command_in_directory_of_file(cmd), utility#buffer_contents())\n  else\n    let diff = system(utility#command_in_directory_of_file(cmd))\n  endif\n\n  if v:shell_error\n    \" A shell error indicates the file is not tracked by git (unless something\n    \" bizarre is going on).\n    throw 'diff failed'\n  endif\n\n  return diff\nendfunction\n\nfunction! diff#parse_diff(diff)\n  let hunks = []\n  for line in split(a:diff, '\\n')\n    let hunk_info = diff#parse_hunk(line)\n    if len(hunk_info) == 4\n      call add(hunks, hunk_info)\n    endif\n  endfor\n  return hunks\nendfunction\n\nfunction! diff#parse_hunk(line)\n  let matches = matchlist(a:line, s:hunk_re)\n  if len(matches) > 0\n    let from_line  = str2nr(matches[1])\n    let from_count = (matches[2] == '') ? 1 : str2nr(matches[2])\n    let to_line    = str2nr(matches[3])\n    let to_count   = (matches[4] == '') ? 1 : str2nr(matches[4])\n    return [from_line, from_count, to_line, to_count]\n  else\n    return []\n  end\nendfunction\n\nfunction! diff#process_hunks(hunks)\n  call hunk#reset()\n  let modified_lines = []\n  for hunk in a:hunks\n    call extend(modified_lines, diff#process_hunk(hunk))\n  endfor\n  return modified_lines\nendfunction\n\n\" Returns [ [<line_number (number)>, <name (string)>], ...]\nfunction! diff#process_hunk(hunk)\n  let modifications = []\n  let from_line  = a:hunk[0]\n  let from_count = a:hunk[1]\n  let to_line    = a:hunk[2]\n  let to_count   = a:hunk[3]\n\n  if diff#is_added(from_count, to_count)\n    call diff#process_added(modifications, from_count, to_count, to_line)\n    call hunk#increment_lines_added(to_count)\n\n  elseif diff#is_removed(from_count, to_count)\n    call diff#process_removed(modifications, from_count, to_count, to_line)\n    call hunk#increment_lines_removed(from_count)\n\n  elseif diff#is_modified(from_count, to_count)\n    call diff#process_modified(modifications, from_count, to_count, to_line)\n    call hunk#increment_lines_modified(to_count)\n\n  elseif diff#is_modified_and_added(from_count, to_count)\n    call diff#process_modified_and_added(modifications, from_count, to_count, to_line)\n    call hunk#increment_lines_added(to_count - from_count)\n    call hunk#increment_lines_modified(from_count)\n\n  elseif diff#is_modified_and_removed(from_count, to_count)\n    call diff#process_modified_and_removed(modifications, from_count, to_count, to_line)\n    call hunk#increment_lines_modified(to_count)\n    call hunk#increment_lines_removed(from_count - to_count)\n\n  endif\n  return modifications\nendfunction\n\nfunction! diff#is_added(from_count, to_count)\n  return a:from_count == 0 && a:to_count > 0\nendfunction\n\nfunction! diff#is_removed(from_count, to_count)\n  return a:from_count > 0 && a:to_count == 0\nendfunction\n\nfunction! diff#is_modified(from_count, to_count)\n  return a:from_count > 0 && a:to_count > 0 && a:from_count == a:to_count\nendfunction\n\nfunction! diff#is_modified_and_added(from_count, to_count)\n  return a:from_count > 0 && a:to_count > 0 && a:from_count < a:to_count\nendfunction\n\nfunction! diff#is_modified_and_removed(from_count, to_count)\n  return a:from_count > 0 && a:to_count > 0 && a:from_count > a:to_count\nendfunction\n\nfunction! diff#process_added(modifications, from_count, to_count, to_line)\n  let offset = 0\n  while offset < a:to_count\n    let line_number = a:to_line + offset\n    call add(a:modifications, [line_number, 'added'])\n    let offset += 1\n  endwhile\nendfunction\n\nfunction! diff#process_removed(modifications, from_count, to_count, to_line)\n  call add(a:modifications, [a:to_line, 'removed'])\nendfunction\n\nfunction! diff#process_modified(modifications, from_count, to_count, to_line)\n  let offset = 0\n  while offset < a:to_count\n    let line_number = a:to_line + offset\n    call add(a:modifications, [line_number, 'modified'])\n    let offset += 1\n  endwhile\nendfunction\n\nfunction! diff#process_modified_and_added(modifications, from_count, to_count, to_line)\n  let offset = 0\n  while offset < a:from_count\n    let line_number = a:to_line + offset\n    call add(a:modifications, [line_number, 'modified'])\n    let offset += 1\n  endwhile\n  while offset < a:to_count\n    let line_number = a:to_line + offset\n    call add(a:modifications, [line_number, 'added'])\n    let offset += 1\n  endwhile\nendfunction\n\nfunction! diff#process_modified_and_removed(modifications, from_count, to_count, to_line)\n  let offset = 0\n  while offset < a:to_count\n    let line_number = a:to_line + offset\n    call add(a:modifications, [line_number, 'modified'])\n    let offset += 1\n  endwhile\n  let a:modifications[-1] = [a:to_line + offset - 1, 'modified_removed']\nendfunction\n\nfunction! diff#generate_diff_for_hunk(hunk)\n  return diff#discard_hunks(diff#run_diff(0, 0), a:hunk)\nendfunction\n\nfunction! diff#discard_hunks(diff, hunk_to_keep)\n  let modified_diff = []\n  let keep_line = 1  \" start by keeping header\n  for line in split(a:diff, '\\n')\n    let hunk_info = diff#parse_hunk(line)\n    if len(hunk_info) == 4  \" start of new hunk\n      let keep_line = (hunk_info == a:hunk_to_keep)\n    endif\n    if keep_line\n      call add(modified_diff, line)\n    endif\n  endfor\n  return join(modified_diff, \"\\n\") . \"\\n\"\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-gitgutter/autoload/highlight.vim",
    "content": "function! highlight#define_sign_column_highlight()\n  highlight default link SignColumn LineNr\nendfunction\n\nfunction! highlight#define_highlights()\n  \" Highlights used by the signs.\n  highlight GitGutterAddDefault          guifg=#009900 guibg=NONE ctermfg=2 ctermbg=NONE\n  highlight GitGutterChangeDefault       guifg=#bbbb00 guibg=NONE ctermfg=3 ctermbg=NONE\n  highlight GitGutterDeleteDefault       guifg=#ff2222 guibg=NONE ctermfg=1 ctermbg=NONE\n  highlight default link GitGutterChangeDeleteDefault GitGutterChangeDefault\n\n  highlight default link GitGutterAdd          GitGutterAddDefault\n  highlight default link GitGutterChange       GitGutterChangeDefault\n  highlight default link GitGutterDelete       GitGutterDeleteDefault\n  highlight default link GitGutterChangeDelete GitGutterChangeDeleteDefault\n\n  \" Highlights used for the whole line.\n  highlight default link GitGutterAddLine          DiffAdd\n  highlight default link GitGutterChangeLine       DiffChange\n  highlight default link GitGutterDeleteLine       DiffDelete\n  highlight default link GitGutterChangeDeleteLine GitGutterChangeLineDefault\nendfunction\n\nfunction! highlight#define_signs()\n  sign define GitGutterLineAdded\n  sign define GitGutterLineModified\n  sign define GitGutterLineRemoved\n  sign define GitGutterLineModifiedRemoved\n  sign define GitGutterDummy\n\n  call highlight#define_sign_symbols()\n  call highlight#define_sign_text_highlights()\n  call highlight#define_sign_line_highlights()\nendfunction\n\nfunction! highlight#define_sign_symbols()\n  execute \"sign define GitGutterLineAdded           text=\" . g:gitgutter_sign_added\n  execute \"sign define GitGutterLineModified        text=\" . g:gitgutter_sign_modified\n  execute \"sign define GitGutterLineRemoved         text=\" . g:gitgutter_sign_removed\n  execute \"sign define GitGutterLineModifiedRemoved text=\" . g:gitgutter_sign_modified_removed\nendfunction\n\nfunction! highlight#define_sign_text_highlights()\n  sign define GitGutterLineAdded           texthl=GitGutterAdd\n  sign define GitGutterLineModified        texthl=GitGutterChange\n  sign define GitGutterLineRemoved         texthl=GitGutterDelete\n  sign define GitGutterLineModifiedRemoved texthl=GitGutterChangeDelete\nendfunction\n\nfunction! highlight#define_sign_line_highlights()\n  if g:gitgutter_highlight_lines\n    sign define GitGutterLineAdded           linehl=GitGutterAddLine\n    sign define GitGutterLineModified        linehl=GitGutterChangeLine\n    sign define GitGutterLineRemoved         linehl=GitGutterDeleteLine\n    sign define GitGutterLineModifiedRemoved linehl=GitGutterChangeDeleteLine\n  else\n    sign define GitGutterLineAdded           linehl=\n    sign define GitGutterLineModified        linehl=\n    sign define GitGutterLineRemoved         linehl=\n    sign define GitGutterLineModifiedRemoved linehl=\n  endif\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-gitgutter/autoload/hunk.vim",
    "content": "\" number of lines [added, modified, removed]\nlet s:summary = [0, 0, 0]\n\nfunction! hunk#summary()\n  return s:summary\nendfunction\n\nfunction! hunk#reset()\n  let s:summary = [0, 0, 0]  \" TODO: is bling/airline expecting [-1, -1, -1]?\nendfunction\n\nfunction! hunk#increment_lines_added(count)\n  let s:summary[0] += a:count\nendfunction\n\nfunction! hunk#increment_lines_modified(count)\n  let s:summary[1] += a:count\nendfunction\n\nfunction! hunk#increment_lines_removed(count)\n  let s:summary[2] += a:count\nendfunction\n\n\n"
  },
  {
    "path": ".vim/bundle/vim-gitgutter/autoload/sign.vim",
    "content": "\" Vim doesn't namespace sign ids so every plugin shares the same\n\" namespace.  Sign ids are simply integers so to avoid clashes with other\n\" signs we guess at a clear run.\n\"\n\" Note also we currently never reset s:next_sign_id.\nlet s:first_sign_id = 3000\nlet s:next_sign_id  = s:first_sign_id\nlet s:dummy_sign_id = s:first_sign_id - 1\n\n\n\" Removes gitgutter's signs (excluding dummy sign) from the given file.\nfunction! sign#clear_signs(file_name)\n  call sign#find_current_signs(a:file_name)\n  for sign in values(getbufvar(a:file_name, 'gitgutter_gitgutter_signs'))\n    execute \"sign unplace\" sign.id\n  endfor\n  call setbufvar(a:file_name, 'gitgutter_gitgutter_signs', {})\nendfunction\n\n\n\" Updates gitgutter's signs in the given file.\n\"\n\" modified_lines: list of [<line_number (number)>, <name (string)>]\n\" where name = 'added|removed|modified|modified_removed'\nfunction! sign#update_signs(file_name, modified_lines)\n  call sign#find_current_signs(a:file_name)\n\n  let new_gitgutter_signs_line_numbers = map(copy(a:modified_lines), 'v:val[0]')\n  let obsolete_signs = sign#obsolete_gitgutter_signs_to_remove(a:file_name, new_gitgutter_signs_line_numbers)\n\n  let flicker_possible = s:remove_all_old_signs && !empty(a:modified_lines)\n  if flicker_possible\n    call sign#add_dummy_sign()\n  endif\n\n  call sign#remove_signs(obsolete_signs)\n  call sign#upsert_new_gitgutter_signs(a:file_name, a:modified_lines)\n\n  if flicker_possible\n    call sign#remove_dummy_sign(0)\n  endif\nendfunction\n\n\nfunction! sign#add_dummy_sign()\n  if !getbufvar(utility#file(), 'gitgutter_dummy_sign')\n    execute \"sign place\" s:dummy_sign_id \"line=\" . 9999 \"name=GitGutterDummy file=\" . utility#file()\n    call setbufvar(utility#file(), 'gitgutter_dummy_sign', 1)\n  endif\nendfunction\n\nfunction! sign#remove_dummy_sign(force)\n  if getbufvar(utility#file(), 'gitgutter_dummy_sign') && (a:force || !g:gitgutter_sign_column_always)\n    execute \"sign unplace\" s:dummy_sign_id \"file=\" . utility#file()\n    call setbufvar(utility#file(), 'gitgutter_dummy_sign', 0)\n  endif\nendfunction\n\n\n\"\n\" Internal functions\n\"\n\n\nfunction! sign#find_current_signs(file_name)\n  let gitgutter_signs = {}  \" <line_number (string)>: {'id': <id (number)>, 'name': <name (string)>}\n  let other_signs = []      \" [<line_number (number),...]\n  let dummy_sign_placed = 0\n\n  redir => signs\n    silent execute \"sign place file=\" . a:file_name\n  redir END\n\n  for sign_line in filter(split(signs, '\\n'), 'v:val =~# \"=\"')\n    \" Typical sign line:  line=88 id=1234 name=GitGutterLineAdded\n    \" We assume splitting is faster than a regexp.\n    let components  = split(sign_line)\n    let name        = split(components[2], '=')[1]\n    if name =~# 'GitGutterDummy'\n      let dummy_sign_placed = 1\n    else\n      let line_number = str2nr(split(components[0], '=')[1])\n      if name =~# 'GitGutter'\n        let id = str2nr(split(components[1], '=')[1])\n        \" Remove orphaned signs (signs placed on lines which have been deleted).\n        \" (When a line is deleted its sign lingers.  Subsequent lines' signs'\n        \" line numbers are decremented appropriately.)\n        if has_key(gitgutter_signs, line_number)\n          execute \"sign unplace\" gitgutter_signs[line_number].id\n        endif\n        let gitgutter_signs[line_number] = {'id': id, 'name': name}\n      else\n        call add(other_signs, line_number)\n      endif\n    end\n  endfor\n\n  call setbufvar(a:file_name, 'gitgutter_dummy_sign', dummy_sign_placed)\n  call setbufvar(a:file_name, 'gitgutter_gitgutter_signs', gitgutter_signs)\n  call setbufvar(a:file_name, 'gitgutter_other_signs', other_signs)\nendfunction\n\n\n\" Returns a list of [<id (number)>, ...]\nfunction! sign#obsolete_gitgutter_signs_to_remove(file_name, new_gitgutter_signs_line_numbers)\n  let signs_to_remove = []  \" list of [<id (number)>, ...]\n  let remove_all_signs = 1\n  let old_gitgutter_signs = getbufvar(a:file_name, 'gitgutter_gitgutter_signs')\n  for line_number in keys(old_gitgutter_signs)\n    if index(a:new_gitgutter_signs_line_numbers, str2nr(line_number)) == -1\n      call add(signs_to_remove, old_gitgutter_signs[line_number].id)\n    else\n      let remove_all_signs = 0\n    endif\n  endfor\n  let s:remove_all_old_signs = remove_all_signs\n  return signs_to_remove\nendfunction\n\nfunction! sign#remove_signs(sign_ids)\n  for id in a:sign_ids\n    execute \"sign unplace\" id\n  endfor\nendfunction\n\n\nfunction! sign#upsert_new_gitgutter_signs(file_name, modified_lines)\n  let other_signs         = getbufvar(a:file_name, 'gitgutter_other_signs')\n  let old_gitgutter_signs = getbufvar(a:file_name, 'gitgutter_gitgutter_signs')\n\n  for line in a:modified_lines\n    let line_number = line[0]  \" <number>\n    if index(other_signs, line_number) == -1  \" don't clobber others' signs\n      let name = utility#highlight_name_for_change(line[1])\n      if !has_key(old_gitgutter_signs, line_number)  \" insert\n        let id = sign#next_sign_id()\n        execute \"sign place\" id \"line=\" . line_number \"name=\" . name \"file=\" . a:file_name\n      else  \" update if sign has changed\n        let old_sign = old_gitgutter_signs[line_number]\n        if old_sign.name !=# name\n          execute \"sign place\" old_sign.id \"name=\" . name \"file=\" . a:file_name\n        end\n      endif\n    endif\n  endfor\n  \" At this point b:gitgutter_gitgutter_signs is out of date.\nendfunction\n\n\nfunction! sign#next_sign_id()\n  let next_id = s:next_sign_id\n  let s:next_sign_id += 1\n  return next_id\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-gitgutter/autoload/utility.vim",
    "content": "let s:file = ''\n\nfunction! utility#is_active()\n  return g:gitgutter_enabled && utility#exists_file()\nendfunction\n\n\" A replacement for the built-in `shellescape(arg)`.\n\"\n\" Recent versions of Vim handle shell escaping pretty well.  However older\n\" versions aren't as good.  This attempts to do the right thing.\n\"\n\" See:\n\" https://github.com/tpope/vim-fugitive/blob/8f0b8edfbd246c0026b7a2388e1d883d579ac7f6/plugin/fugitive.vim#L29-L37\nfunction! utility#shellescape(arg)\n  if a:arg =~ '^[A-Za-z0-9_/.-]\\+$'\n    return a:arg\n  elseif &shell =~# 'cmd'\n    return '\"' . substitute(substitute(a:arg, '\"', '\"\"', 'g'), '%', '\"%\"', 'g') . '\"'\n  else\n    return shellescape(a:arg)\n  endif\nendfunction\n\nfunction! utility#current_file()\n  return expand('%:p')\nendfunction\n\nfunction! utility#set_file(file)\n  let s:file = a:file\nendfunction\n\nfunction! utility#file()\n  return s:file\nendfunction\n\nfunction! utility#filename()\n  return fnamemodify(s:file, ':t')\nendfunction\n\nfunction! utility#directory_of_file()\n  return fnamemodify(s:file, ':h')\nendfunction\n\nfunction! utility#exists_file()\n  return filereadable(utility#file())\nendfunction\n\nfunction! utility#has_unsaved_changes(file)\n  return getbufvar(a:file, \"&mod\")\nendfunction\n\nfunction! utility#has_fresh_changes(file)\n  return getbufvar(a:file, 'changedtick') != getbufvar(a:file, 'gitgutter_last_tick')\nendfunction\n\nfunction! utility#save_last_seen_change(file)\n  call setbufvar(a:file, 'gitgutter_last_tick', getbufvar(a:file, 'changedtick'))\nendfunction\n\nfunction! utility#buffer_contents()\n  if &fileformat ==# \"dos\"\n    let eol = \"\\r\\n\"\n  elseif &fileformat ==# \"mac\"\n    let eol = \"\\r\"\n  else\n    let eol = \"\\n\"\n  endif\n  return join(getbufline(s:file, 1, '$'), eol) . eol\nendfunction\n\nfunction! utility#file_relative_to_repo_root()\n  let file_path_relative_to_repo_root = getbufvar(s:file, 'gitgutter_repo_relative_path')\n  if empty(file_path_relative_to_repo_root)\n    let dir_path_relative_to_repo_root = system(utility#command_in_directory_of_file('git rev-parse --show-prefix'))\n    let dir_path_relative_to_repo_root = utility#strip_trailing_new_line(dir_path_relative_to_repo_root)\n    let file_path_relative_to_repo_root = dir_path_relative_to_repo_root . utility#filename()\n    call setbufvar(s:file, 'gitgutter_repo_relative_path', file_path_relative_to_repo_root)\n  endif\n  return file_path_relative_to_repo_root\nendfunction\n\nfunction! utility#command_in_directory_of_file(cmd)\n  return 'cd ' . utility#shellescape(utility#directory_of_file()) . ' && ' . a:cmd\nendfunction\n\nfunction! utility#highlight_name_for_change(text)\n  if a:text ==# 'added'\n    return 'GitGutterLineAdded'\n  elseif a:text ==# 'removed'\n    return 'GitGutterLineRemoved'\n  elseif a:text ==# 'modified'\n    return 'GitGutterLineModified'\n  elseif a:text ==# 'modified_removed'\n    return 'GitGutterLineModifiedRemoved'\n  endif\nendfunction\n\nfunction utility#strip_trailing_new_line(line)\n  return substitute(a:line, '\\n$', '', '')\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-gitgutter/doc/gitgutter.txt",
    "content": "*gitgutter.txt*              A Vim plugin which shows a git diff in the gutter.\n\n\n                           Vim Git Gutter\n\n\nAuthor:            Andy Stewart <http://airbladesoftware.com/>\nPlugin Homepage:   <https://github.com/airblade/vim-gitgutter>\n\n===============================================================================\nCONTENTS                                                    *GitGutterContents*\n\n  1.  Introduction ................. |GitGutterIntroduction|\n  2.  Installation ................. |GitGutterInstallation|\n  3.  Usage ........................ |GitGutterUsage|\n  4.  Commands ..................... |GitGutterCommands|\n  5.  FAQ .......................... |GitGutterFAQ|\n\n===============================================================================\n1. INTRODUCTION                                         *GitGutterIntroduction*\n                                                                    *GitGutter*\n\nVim Git Gutter is a Vim plugin which shows a git diff in the 'gutter' (sign\ncolumn). It shows whether each line has been added, modified, and where lines\nhave been removed.\n\nThis is a port of the Git Gutter plugin for Sublime Text 2.\n\n===============================================================================\n2. INSTALLATION                                         *GitGutterInstallation*\n\nIf you don't have a preferred installation method, I recommend installing\npathogen.vim, and then simply copy and paste:\n>\n  cd ~/.vim/bundle\n  git clone git://github.com/airblade/vim-gitgutter.git\n<\nOr for Vundle users:\n\nAdd Bundle 'airblade/vim-gitgutter' to your |vimrc| and then:\n\n  - either within Vim: :BundleInstall\n  - or in your shell: vim +BundleInstall +qall\n\n===============================================================================\n3. USAGE                                                       *GitGutterUsage*\n\nYou don't have to do anything: it just works.\n\n===============================================================================\n4. COMMANDS                                                 *GitGutterCommands*\n\nCommands for turning Git Gutter on and off:\n\n  :GitGutterDisable                                         *:GitGutterDisable*\n      Explicitly turn Git Gutter off.\n\n  :GitGutterEnable                                           *:GitGutterEnable*\n      Explicitly turn Git Gutter on.\n\n  :GitGutterToggle                                           *:GitGutterToggle*\n      Explicitly turn Git Gutter on if it was off and vice versa.\n\n  :GitGutter                                                       *:GitGutter*\n      Update signs for the current buffer.\n\n  :GitGutterAll                                                 *:GitGutterAll*\n      Update signs across all buffers.\n\nCommands for turning signs on and off (defaults to on):\n\n  :GitGutterSignsEnable                                 *:GitGutterSignsEnable*\n      Explicitly turn line signs on.\n\n  :GitGutterSignsDisable                               *:GitGutterSignsDisable*\n      Explicitly turn line signs off.\n\n  :GitGutterSignsToggle                                 *:GitGutterSignsToggle*\n      Explicitly turn line signs on if it was off and vice versa.\n\nCommands for turning line highlighting on and off (defaults to off):\n\n  :GitGutterLineHighlightsEnable               *:GitGutterLineHighlightsEnable*\n      Explicitly turn line highlighting on.\n\n  :GitGutterLineHighlightsDisable             *:GitGutterLineHighlightsDisable*\n      Explicitly turn line highlighting off.\n\n  :GitGutterLineHighlightsToggle               *:GitGutterLineHighlightsToggle*\n      Explicitly turn line highlighting on if it was off and vice versa.\n\nCommands for jumping between marked hunks:\n\n  :GitGutterNextHunk                                       *:GitGutterNextHunk*\n      Jump to the next marked hunk.  Takes a count.\n\n  :GitGutterPrevHunk                                       *:GitGutterPrevHunk*\n      Jump to the previous marked hunk.  Takes a count.\n\nCommands for staging or reverting individual hunks:\n\n  :GitGutterStageHunk                                     *:GitGutterStageHunk*\n      Stage the hunk the cursor is in.\n\n  :GitGutterRevertHunk                                   *:GitGutterRevertHunk*\n      Revert the hunk the cursor is in.\n\n===============================================================================\n5. CUSTOMISATION                                       *GitGutterCustomisation*\n\nYou can customise:\n\n- The sign column's colours\n- The signs' colours and symbols\n- Line highlights\n- Extra arguments for git-diff\n- Key mappings\n- Whether or not to escape grep (defaults to no)\n- Whether or not vim-gitgutter is on initially (defaults to on)\n- Whether or not signs are shown (defaults to yes)\n- Whether or not line highlighting is on initially (defaults to off)\n- Whether or not vim-gitgutter runs in realtime (defaults to yes)\n- Whether or not vim-gitgutter runs eagerly (defaults to yes)\n\nPlease note that vim-gitgutter won't override any colours or highlights you've\nset in your colorscheme.\n\nSIGN COLUMN\n\nThe background colour of the sign column is controlled by the |hlSignColumn|\nhighlight group.  This will be either set in your colorscheme or Vim's default.\n\nTo find out where it's set, and to what it's set, use:\n>\n  :verbose highlight SignColumn\n<\n\nIf your `SignColumn` is not set, i.e if\n>\n  :highlight SignColumn  \" gives you `SignColumn xxx cleared`\n<\nvim-gitgutter will set it to the same as your line number column (i.e. the\n|hl-LineNr| highlight group).\n\nTo change your sign column's appearance, update your colorscheme or |vimrc|\nlike this:\n\n  Desired appearance                  Command ~\n  Same as line number column          highlight clear SignColumn\n  User-defined (terminal Vim)         highlight SignColumn ctermbg={whatever}\n  User-defined (graphical Vim)        highlight SignColumn guibg={whatever}\n\nSIGNS' COLOURS AND SYMBOLS\n\nTo customise the colours, set up the following highlight groups in your\ncolorscheme or |vimrc|:\n\n>\n  GitGutterAdd          \" an added line\n  GitGutterChange       \" a changed line\n  GitGutterDelete       \" at least one removed line\n  GitGutterChangeDelete \" a changed line followed by at least one removed line\n<\n\nYou can either set these with `highlight GitGutterAdd {key}={arg}...` or link\nthem to existing highlight groups with, say:\n>\n  highlight link GitGutterAdd DiffAdd\n<\n\nTo customise the symbols, add the following to your |vimrc|:\n>\n  let g:gitgutter_sign_added = 'xx'\n  let g:gitgutter_sign_modified = 'yy'\n  let g:gitgutter_sign_removed = 'zz'\n  let g:gitgutter_sign_modified_removed = 'ww'\n<\n\nLINE HIGHLIGHTS\n\nSimilarly to the signs' colours, set up the following highlight groups in your\ncolorscheme or |vimrc|:\n>\n  GitGutterAddLine          \" default: links to DiffAdd\n  GitGutterChangeLine       \" default: links to DiffChange\n  GitGutterDeleteLine       \" default: links to DiffDelete\n  GitGutterChangeDeleteLine \" default: links to GitGutterChangeLineDefault\n<\n\nEXTRA ARGUMENTS FOR GIT-DIFF\n\nTo pass extra arguments to git-diff, add this to your |vimrc|:\n>\n  let g:gitgutter_diff_args = '-w'\n<\n\nKEY MAPPINGS\n\nTo disable all key maps:\n>\n  let g:gitgutter_map_keys = 0\n<\n\nTo change the hunk-jumping maps:\n>\n  nmap [h <Plug>GitGutterPrevHunk\n  nmap ]h <Plug>GitGutterNextHunk\n<\n\nTo change the hunk-staging/reverting maps:\n>\n  nmap <Leader>hs <Plug>GitGutterStageHunk\n  nmap <Leader>hr <Plug>GitGutterRevertHunk\n<\n\nTO ESCAPE GREP\n\nTo avoid any alias you have for grep, use this:\n>\n  let g:gitgutter_escape_grep = 1\n<\n\nTO TURN OFF VIM-GITGUTTER BY DEFAULT\n\nAdd to your |vimrc|\n>\n  let g:gitgutter_enabled = 0\n<\n\nTO TURN OFF SIGNS BY DEFAULT\n\nAdd to your |vimrc|\n>\n  let g:gitgutter_signs = 0\n<\n\nTO TURN ON LINE HIGHLIGHTING BY DEFAULT\n\nAdd to your |vimrc|\n>\n  let g:gitgutter_highlight_lines = 1\n<\n\nTO STOP VIM-GITGUTTER RUNNING IN REALTIME\n\nAdd to your |vimrc|\n>\n  let g:gitgutter_realtime = 0\n<\n\nTO STOP VIM-GITGUTTER RUNNING EAGERLY\n\nAdd to your |vimrc|\n>\n  let g:gitgutter_eager = 0\n<\n\n\n===============================================================================\n6. FAQ                                                           *GitGutterFAQ*\n\na. Why are the colours in the sign column weird?\n\n  Your colorscheme is configuring the |hl-SignColumn| highlight group weirdly.\n  Please see |GitGutterCustomisation| on customising the sign column.\n\nb. Why is no sign shown if I delete the first line(s) in a file?\n\n  vim-gitgutter shows removed lines with a sign on the line above.  In this\n  case there isn't a line above so vim-gitgutter can't show the sign.\n\nc. What happens if I also use another plugin which uses signs (e.g. Syntastic)?\n\n  Vim only allows one sign per line. Before adding a sign to a line,\n  vim-gitgutter checks whether a sign has already been added by somebody else.\n  If so it doesn't do anything. In other words vim-gitgutter won't overwrite\n  another plugin's signs. It also won't remove another plugin's signs.\n"
  },
  {
    "path": ".vim/bundle/vim-gitgutter/plugin/gitgutter.vim",
    "content": "if exists('g:loaded_gitgutter') || !executable('git') || !has('signs') || &cp\n  finish\nendif\nlet g:loaded_gitgutter = 1\n\n\" Initialisation {{{\n\n\" Realtime sign updates require Vim 7.3.105+.\nif v:version < 703 || (v:version == 703 && !has(\"patch105\"))\n  let g:gitgutter_realtime = 0\nendif\n\nfunction! s:set(var, default)\n  if !exists(a:var)\n    if type(a:default)\n      execute 'let' a:var '=' string(a:default)\n    else\n      execute 'let' a:var '=' a:default\n    endif\n  endif\nendfunction\n\ncall s:set('g:gitgutter_enabled',               1)\ncall s:set('g:gitgutter_signs',                 1)\ncall s:set('g:gitgutter_highlight_lines',       0)\ncall s:set('g:gitgutter_sign_column_always',    0)\ncall s:set('g:gitgutter_realtime',              1)\ncall s:set('g:gitgutter_eager',                 1)\ncall s:set('g:gitgutter_sign_added',            '+')\ncall s:set('g:gitgutter_sign_modified',         '~')\ncall s:set('g:gitgutter_sign_removed',          '_')\ncall s:set('g:gitgutter_sign_modified_removed', '~_')\ncall s:set('g:gitgutter_diff_args',             '')\ncall s:set('g:gitgutter_escape_grep',           0)\ncall s:set('g:gitgutter_map_keys',              1)\n\ncall highlight#define_sign_column_highlight()\ncall highlight#define_highlights()\ncall highlight#define_signs()\n\n\" }}}\n\n\n\" Primary functions {{{\n\nfunction! GitGutterAll()\n  for buffer_id in tabpagebuflist()\n    let file = expand('#' . buffer_id . ':p')\n    if !empty(file)\n      call GitGutter(file, 0)\n    endif\n  endfor\nendfunction\ncommand GitGutterAll call GitGutterAll()\n\n\" Does the actual work.\n\"\n\" file: (string) the file to process.\n\" realtime: (boolean) when truthy, do a realtime diff; otherwise do a disk-based diff.\nfunction! GitGutter(file, realtime)\n  call utility#set_file(a:file)\n  if utility#is_active()\n    if g:gitgutter_sign_column_always\n      call sign#add_dummy_sign()\n    endif\n    try\n      if !a:realtime || utility#has_fresh_changes(a:file)\n        let diff           = diff#run_diff(a:realtime || utility#has_unsaved_changes(a:file), 1)\n        let s:hunks        = diff#parse_diff(diff)\n        let modified_lines = diff#process_hunks(s:hunks)\n\n        if g:gitgutter_signs\n          call sign#update_signs(a:file, modified_lines)\n        endif\n\n        call utility#save_last_seen_change(a:file)\n      endif\n    catch /diff failed/\n      call hunk#reset()\n    endtry\n  else\n    call hunk#reset()\n  endif\nendfunction\ncommand GitGutter call GitGutter(utility#current_file(), 0)\n\n\" }}}\n\n\n\" The plugin: enable / disable / toggle {{{\n\nfunction! GitGutterDisable()\n  let g:gitgutter_enabled = 0\n  call sign#clear_signs(utility#file())\n  call sign#remove_dummy_sign(1)\n  call hunk#reset()\nendfunction\ncommand GitGutterDisable call GitGutterDisable()\n\nfunction! GitGutterEnable()\n  let g:gitgutter_enabled = 1\n  call GitGutter(utility#current_file(), 0)\nendfunction\ncommand GitGutterEnable call GitGutterEnable()\n\nfunction! GitGutterToggle()\n  if g:gitgutter_enabled\n    call GitGutterDisable()\n  else\n    call GitGutterEnable()\n  endif\nendfunction\ncommand GitGutterToggle call GitGutterToggle()\n\n\" }}}\n\n\n\" Line highlights: enable / disable / toggle {{{\n\nfunction! GitGutterLineHighlightsDisable()\n  let g:gitgutter_highlight_lines = 0\n  call highlight#define_sign_line_highlights()\n  redraw!\nendfunction\ncommand GitGutterLineHighlightsDisable call GitGutterLineHighlightsDisable()\n\nfunction! GitGutterLineHighlightsEnable()\n  let g:gitgutter_highlight_lines = 1\n  call highlight#define_sign_line_highlights()\n  redraw!\nendfunction\ncommand GitGutterLineHighlightsEnable call GitGutterLineHighlightsEnable()\n\nfunction! GitGutterLineHighlightsToggle()\n  let g:gitgutter_highlight_lines = !g:gitgutter_highlight_lines\n  call highlight#define_sign_line_highlights()\n  redraw!\nendfunction\ncommand GitGutterLineHighlightsToggle call GitGutterLineHighlightsToggle()\n\n\" }}}\n\n\n\" Signs: enable / disable / toggle {{{\n\nfunction! GitGutterSignsEnable()\n  let g:gitgutter_signs = 1\n  call GitGutterAll()\nendfunction\ncommand GitGutterSignsEnable call GitGutterSignsEnable()\n\nfunction! GitGutterSignsDisable()\n  let g:gitgutter_signs = 0\n  call sign#clear_signs(utility#file())\n  call sign#remove_dummy_sign(0)\nendfunction\ncommand GitGutterSignsDisable call GitGutterSignsDisable()\n\nfunction! GitGutterSignsToggle()\n  if g:gitgutter_signs\n    call GitGutterSignsDisable()\n  else\n    call GitGutterSignsEnable()\n  endif\nendfunction\ncommand GitGutterSignsToggle call GitGutterSignsToggle()\n\n\" }}}\n\n\n\" Hunks: jump to next/previous {{{\n\nfunction! GitGutterNextHunk(count)\n  if utility#is_active()\n    let current_line = line('.')\n    let hunk_count = 0\n    for hunk in s:hunks\n      if hunk[2] > current_line\n        let hunk_count += 1\n        if hunk_count == a:count\n          execute 'normal!' hunk[2] . 'G'\n          break\n        endif\n      endif\n    endfor\n  endif\nendfunction\ncommand -count=1 GitGutterNextHunk call GitGutterNextHunk(<count>)\n\nfunction! GitGutterPrevHunk(count)\n  if utility#is_active()\n    let current_line = line('.')\n    let hunk_count = 0\n    for hunk in reverse(copy(s:hunks))\n      if hunk[2] < current_line\n        let hunk_count += 1\n        if hunk_count == a:count\n          execute 'normal!' hunk[2] . 'G'\n          break\n        endif\n      endif\n    endfor\n  endif\nendfunction\ncommand -count=1 GitGutterPrevHunk call GitGutterPrevHunk(<count>)\n\n\" }}}\n\n\n\" Hunks: stage/revert {{{\n\nfunction! GitGutterStageHunk()\n  if utility#is_active()\n    \" Ensure the working copy of the file is up to date.\n    \" It doesn't make sense to stage a hunk otherwise.\n    silent write\n\n    \" find current hunk (i.e. which one the cursor is in)\n    let current_hunk = []\n    let current_line = line('.')\n    for hunk in s:hunks\n      if current_line >= hunk[2] && current_line < hunk[2] + (hunk[3] == 0 ? 1 : hunk[3])\n        let current_hunk = hunk\n        break\n      endif\n    endfor\n    if len(current_hunk) != 4\n      return\n    endif\n\n    \" construct a diff\n    let diff_for_hunk = diff#generate_diff_for_hunk(current_hunk)\n\n    \" apply the diff\n    call system(utility#command_in_directory_of_file('git apply --cached --unidiff-zero - '), diff_for_hunk)\n\n    \" refresh gitgutter's view of buffer\n    silent execute \"GitGutter\"\n  endif\nendfunction\ncommand GitGutterStageHunk call GitGutterStageHunk()\n\nfunction! GitGutterRevertHunk()\n  if utility#is_active()\n    \" Ensure the working copy of the file is up to date.\n    \" It doesn't make sense to stage a hunk otherwise.\n    write\n\n    \" find current hunk (i.e. which one the cursor is in)\n    let current_hunk = []\n    let current_line = line('.')\n    for hunk in s:hunks\n      if current_line >= hunk[2] && current_line < hunk[2] + (hunk[3] == 0 ? 1 : hunk[3])\n        let current_hunk = hunk\n        break\n      endif\n    endfor\n    if len(current_hunk) != 4\n      return\n    endif\n\n    \" construct a diff\n    let diff_for_hunk = diff#generate_diff_for_hunk(current_hunk)\n\n    \" apply the diff\n    call system(utility#command_in_directory_of_file('git apply --reverse --unidiff-zero - '), diff_for_hunk)\n\n    \" reload file\n    silent edit\n  endif\nendfunction\ncommand GitGutterRevertHunk call GitGutterRevertHunk()\n\n\" }}}\n\n\n\" Hunk stats {{{\n\n\" Returns the git-diff hunks for the file or an empty list if there\n\" aren't any hunks.\n\"\n\" The return value is a list of lists.  There is one inner list per hunk.\n\"\n\"   [\n\"     [from_line, from_count, to_line, to_count],\n\"     [from_line, from_count, to_line, to_count],\n\"     ...\n\"   ]\n\"\n\" where:\n\"\n\" `from`  - refers to the staged file\n\" `to`    - refers to the working tree's file\n\" `line`  - refers to the line number where the change starts\n\" `count` - refers to the number of lines the change covers\nfunction! GitGutterGetHunks()\n  return utility#is_active() ? s:hunks : []\nendfunction\n\n\" Returns an array that contains a summary of the current hunk status.\n\" The format is [ added, modified, removed ], where each value represents\n\" the number of lines added/modified/removed respectively.\nfunction! GitGutterGetHunkSummary()\n  return hunk#summary()\nendfunction\n\n\" }}}\n\ncommand GitGutterDebug call debug#debug()\n\n\" Maps {{{\n\nnnoremap <silent> <expr> <Plug>GitGutterNextHunk &diff ? ']c' : \":\\<C-U>execute v:count1 . 'GitGutterNextHunk'\\<CR>\"\nnnoremap <silent> <expr> <Plug>GitGutterPrevHunk &diff ? '[c' : \":\\<C-U>execute v:count1 . 'GitGutterPrevHunk'\\<CR>\"\n\nif g:gitgutter_map_keys\n  if !hasmapto('<Plug>GitGutterPrevHunk') && maparg('[c', 'n') ==# ''\n    nmap [c <Plug>GitGutterPrevHunk\n  endif\n  if !hasmapto('<Plug>GitGutterNextHunk') && maparg(']c', 'n') ==# ''\n    nmap ]c <Plug>GitGutterNextHunk\n  endif\nendif\n\n\nnnoremap <silent> <Plug>GitGutterStageHunk :GitGutterStageHunk<CR>\nnnoremap <silent> <Plug>GitGutterRevertHunk :GitGutterRevertHunk<CR>\n\nif g:gitgutter_map_keys\n  if !hasmapto('<Plug>GitGutterStageHunk') && maparg('<Leader>hs', 'n') ==# ''\n    nmap <Leader>hs <Plug>GitGutterStageHunk\n  endif\n  if !hasmapto('<Plug>GitGutterRevertHunk') && maparg('<Leader>hr', 'n') ==# ''\n    nmap <Leader>hr <Plug>GitGutterRevertHunk\n  endif\nendif\n\n\" }}}\n\n\n\" Autocommands {{{\n\naugroup gitgutter\n  autocmd!\n\n  if g:gitgutter_realtime\n    autocmd CursorHold,CursorHoldI * call GitGutter(utility#current_file(), 1)\n  endif\n\n  if g:gitgutter_eager\n    autocmd BufEnter,BufWritePost,FileChangedShellPost *\n          \\  if gettabvar(tabpagenr(), 'gitgutter_didtabenter')\n          \\|   call settabvar(tabpagenr(), 'gitgutter_didtabenter', 0)\n          \\| else\n          \\|   call GitGutter(utility#current_file(), 0)\n          \\| endif\n    autocmd TabEnter *\n          \\  call settabvar(tabpagenr(), 'gitgutter_didtabenter', 1)\n          \\| call GitGutterAll()\n    if !has('gui_win32')\n      autocmd FocusGained * call GitGutterAll()\n    endif\n  else\n    autocmd BufRead,BufWritePost,FileChangedShellPost * call GitGutter(utility#current_file(), 0)\n  endif\n\n  autocmd ColorScheme * call highlight#define_sign_column_highlight() | call highlight#define_highlights()\n\n  \" Disable during :vimgrep\n  autocmd QuickFixCmdPre  *vimgrep* let g:gitgutter_enabled = 0\n  autocmd QuickFixCmdPost *vimgrep* let g:gitgutter_enabled = 1\naugroup END\n\n\" }}}\n\n\n\" vim:set et sw=2 fdm=marker:\n"
  },
  {
    "path": ".vim/bundle/vim-haml/compiler/haml.vim",
    "content": "\" Vim compiler file\n\" Compiler:\tHaml\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2013 May 30\n\nif exists(\"current_compiler\")\n  finish\nendif\nlet current_compiler = \"haml\"\n\nif exists(\":CompilerSet\") != 2\t\t\" older Vim always used :setlocal\n  command -nargs=* CompilerSet setlocal <args>\nendif\n\nlet s:cpo_save = &cpo\nset cpo-=C\n\nCompilerSet makeprg=haml\\ -c\n\nCompilerSet errorformat=\n      \\Haml\\ %trror\\ on\\ line\\ %l:\\ %m,\n      \\Syntax\\ %trror\\ on\\ line\\ %l:\\ %m,\n      \\%-G%.%#\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim:set sw=2 sts=2:\n"
  },
  {
    "path": ".vim/bundle/vim-haml/compiler/sass.vim",
    "content": "\" Vim compiler file\n\" Compiler:\tSass\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2013 May 30\n\nif exists(\"current_compiler\")\n  finish\nendif\nlet current_compiler = \"sass\"\n\nif exists(\":CompilerSet\") != 2\t\t\" older Vim always used :setlocal\n  command -nargs=* CompilerSet setlocal <args>\nendif\n\nlet s:cpo_save = &cpo\nset cpo-=C\n\nCompilerSet makeprg=sass\\ -c\n\nCompilerSet errorformat=\n      \\%f:%l:%m\\ (Sass::Syntax%trror),\n      \\%ESyntax\\ %trror:%m,\n      \\%C%\\\\s%\\\\+on\\ line\\ %l\\ of\\ %f,\n      \\%Z%.%#,\n      \\%-G%.%#\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim:set sw=2 sts=2:\n"
  },
  {
    "path": ".vim/bundle/vim-haml/ftdetect/haml.vim",
    "content": "autocmd BufNewFile,BufRead *.haml,*.hamlbars setf haml\nautocmd BufNewFile,BufRead *.sass setf sass\nautocmd BufNewFile,BufRead *.scss setf scss\n"
  },
  {
    "path": ".vim/bundle/vim-haml/ftplugin/haml.vim",
    "content": "\" Vim filetype plugin\n\" Language:\tHaml\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 May 21\n\n\" Only do this when not done yet for this buffer\nif exists(\"b:did_ftplugin\")\n  finish\nendif\n\nlet s:save_cpo = &cpo\nset cpo-=C\n\n\" Define some defaults in case the included ftplugins don't set them.\nlet s:undo_ftplugin = \"\"\nlet s:browsefilter = \"All Files (*.*)\\t*.*\\n\"\nlet s:match_words = \"\"\n\nruntime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim\nunlet! b:did_ftplugin\nset matchpairs-=<:>\n\n\" Override our defaults if these were set by an included ftplugin.\nif exists(\"b:undo_ftplugin\")\n  let s:undo_ftplugin = b:undo_ftplugin\n  unlet b:undo_ftplugin\nendif\nif exists(\"b:browsefilter\")\n  let s:browsefilter = b:browsefilter\n  unlet b:browsefilter\nendif\nif exists(\"b:match_words\")\n  let s:match_words = b:match_words\n  unlet b:match_words\nendif\n\nruntime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim\nlet b:did_ftplugin = 1\n\n\" Combine the new set of values with those previously included.\nif exists(\"b:undo_ftplugin\")\n  let s:undo_ftplugin = b:undo_ftplugin . \" | \" . s:undo_ftplugin\nendif\nif exists (\"b:browsefilter\")\n  let s:browsefilter = substitute(b:browsefilter,'\\cAll Files (\\*\\.\\*)\\t\\*\\.\\*\\n','','') . s:browsefilter\nendif\nif exists(\"b:match_words\")\n  let s:match_words = b:match_words . ',' . s:match_words\nendif\n\n\" Change the browse dialog on Win32 to show mainly Haml-related files\nif has(\"gui_win32\")\n  let b:browsefilter=\"Haml Files (*.haml)\\t*.haml\\nSass Files (*.sass)\\t*.sass\\n\" . s:browsefilter\nendif\n\n\" Load the combined list of match_words for matchit.vim\nif exists(\"loaded_matchit\")\n  let b:match_words = s:match_words\nendif\n\nsetlocal comments= commentstring=-#\\ %s\n\nlet b:undo_ftplugin = \"setl cms< com< \"\n      \\ \" | unlet! b:browsefilter b:match_words | \" . s:undo_ftplugin\n\nlet &cpo = s:save_cpo\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-haml/ftplugin/sass.vim",
    "content": "\" Vim filetype plugin\n\" Language:\tSass\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 Jul 26\n\n\" Only do this when not done yet for this buffer\nif exists(\"b:did_ftplugin\")\n  finish\nendif\nlet b:did_ftplugin = 1\n\nlet b:undo_ftplugin = \"setl cms< def< inc< inex< ofu< sua<\"\n\nsetlocal commentstring=//\\ %s\nsetlocal define=^\\\\s*\\\\%(@mixin\\\\\\|=\\\\)\nsetlocal includeexpr=substitute(v:fname,'\\\\%(.*/\\\\\\|^\\\\)\\\\zs','_','')\nsetlocal omnifunc=csscomplete#CompleteCSS\nsetlocal suffixesadd=.sass,.scss,.css\n\nlet &l:include = '^\\s*@import\\s\\+\\%(url(\\)\\=[\"'']\\='\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-haml/ftplugin/scss.vim",
    "content": "\" Vim filetype plugin\n\" Language:\tSCSS\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 Jul 26\n\nif exists(\"b:did_ftplugin\")\n  finish\nendif\n\nruntime! ftplugin/sass.vim\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-haml/indent/haml.vim",
    "content": "\" Vim indent file\n\" Language:\tHaml\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 May 21\n\nif exists(\"b:did_indent\")\n  finish\nendif\nruntime! indent/ruby.vim\nunlet! b:did_indent\nlet b:did_indent = 1\n\nsetlocal autoindent sw=2 et\nsetlocal indentexpr=GetHamlIndent()\nsetlocal indentkeys=o,O,*<Return>,},],0),!^F,=end,=else,=elsif,=rescue,=ensure,=when\n\n\" Only define the function once.\nif exists(\"*GetHamlIndent\")\n  finish\nendif\n\nlet s:attributes = '\\%({.\\{-\\}}\\|\\[.\\{-\\}\\]\\)'\nlet s:tag = '\\%([%.#][[:alnum:]_-]\\+\\|'.s:attributes.'\\)*[<>]*'\n\nif !exists('g:haml_self_closing_tags')\n  let g:haml_self_closing_tags = 'base|link|meta|br|hr|img|input'\nendif\n\nfunction! GetHamlIndent()\n  let lnum = prevnonblank(v:lnum-1)\n  if lnum == 0\n    return 0\n  endif\n  let line = substitute(getline(lnum),'\\s\\+$','','')\n  let cline = substitute(substitute(getline(v:lnum),'\\s\\+$','',''),'^\\s\\+','','')\n  let lastcol = strlen(line)\n  let line = substitute(line,'^\\s\\+','','')\n  let indent = indent(lnum)\n  let cindent = indent(v:lnum)\n  if cline =~# '\\v^-\\s*%(elsif|else|when)>'\n    let indent = cindent < indent ? cindent : indent - &sw\n  endif\n  let increase = indent + &sw\n  if indent == indent(lnum)\n    let indent = cindent <= indent ? -1 : increase\n  endif\n\n  let group = synIDattr(synID(lnum,lastcol,1),'name')\n\n  if line =~ '^!!!'\n    return indent\n  elseif line =~ '^/\\%(\\[[^]]*\\]\\)\\=$'\n    return increase\n  elseif group == 'hamlFilter'\n    return increase\n  elseif line =~ '^'.s:tag.'[&!]\\=[=~-]\\s*\\%(\\%(if\\|else\\|elsif\\|unless\\|case\\|when\\|while\\|until\\|for\\|begin\\|module\\|class\\|def\\)\\>\\%(.*\\<end\\>\\)\\@!\\|.*do\\%(\\s*|[^|]*|\\)\\=\\s*$\\)'\n    return increase\n  elseif line =~ '^'.s:tag.'[&!]\\=[=~-].*,\\s*$'\n    return increase\n  elseif line == '-#'\n    return increase\n  elseif group =~? '\\v^(hamlSelfCloser)$' || line =~? '^%\\v%('.g:haml_self_closing_tags.')>'\n    return indent\n  elseif group =~? '\\v^%(hamlTag|hamlAttributesDelimiter|hamlObjectDelimiter|hamlClass|hamlId|htmlTagName|htmlSpecialTagName)$'\n    return increase\n  elseif synIDattr(synID(v:lnum,1,1),'name') ==? 'hamlRubyFilter'\n    return GetRubyIndent()\n  else\n    return indent\n  endif\nendfunction\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-haml/indent/sass.vim",
    "content": "\" Vim indent file\n\" Language:\tSass\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 May 21\n\nif exists(\"b:did_indent\")\n  finish\nendif\nlet b:did_indent = 1\n\nsetlocal autoindent sw=2 et\nsetlocal indentexpr=GetSassIndent()\nsetlocal indentkeys=o,O,*<Return>,<:>,!^F\n\n\" Only define the function once.\nif exists(\"*GetSassIndent\")\n  finish\nendif\n\nlet s:property = '^\\s*:\\|^\\s*[[:alnum:]#{}-]\\+\\%(:\\|\\s*=\\)'\nlet s:extend = '^\\s*\\%(@extend\\|@include\\|+\\)'\n\nfunction! GetSassIndent()\n  let lnum = prevnonblank(v:lnum-1)\n  let line = substitute(getline(lnum),'\\s\\+$','','')\n  let cline = substitute(substitute(getline(v:lnum),'\\s\\+$','',''),'^\\s\\+','','')\n  let lastcol = strlen(line)\n  let line = substitute(line,'^\\s\\+','','')\n  let indent = indent(lnum)\n  let cindent = indent(v:lnum)\n  if line !~ s:property && line !~ s:extend && cline =~ s:property\n    return indent + &sw\n  \"elseif line =~ s:property && cline !~ s:property\n    \"return indent - &sw\n  else\n    return -1\n  endif\nendfunction\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-haml/indent/scss.vim",
    "content": "\" Vim indent file\n\" Language:\tSCSS\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 Jul 26\n\nif exists(\"b:did_indent\")\n  finish\nendif\n\nruntime! indent/css.vim\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-haml/syntax/haml.vim",
    "content": "\" Vim syntax file\n\" Language:\tHaml\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Filenames:\t*.haml\n\" Last Change:\t2010 Aug 09\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nif !exists(\"main_syntax\")\n  let main_syntax = 'haml'\nendif\nlet b:ruby_no_expensive = 1\n\nruntime! syntax/html.vim\nunlet! b:current_syntax\nsilent! syn include @hamlSassTop syntax/sass.vim\nunlet! b:current_syntax\nsyn include @hamlRubyTop syntax/ruby.vim\n\nsyn case match\n\nsyn region  rubyCurlyBlock   start=\"{\" end=\"}\" contains=@hamlRubyTop contained\nsyn cluster hamlRubyTop add=rubyCurlyBlock\n\nsyn cluster hamlComponent    contains=hamlAttributes,hamlAttributesHash,hamlClassChar,hamlIdChar,hamlObject,hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable\nsyn cluster hamlEmbeddedRuby contains=hamlAttributesHash,hamlObject,hamlRuby,hamlRubyFilter\nsyn cluster hamlTop          contains=hamlBegin,hamlPlainFilter,hamlRubyFilter,hamlSassFilter,hamlComment,hamlHtmlComment\n\nsyn match   hamlBegin \"^\\s*\\%([<>]\\|&[^=~ ]\\)\\@!\" nextgroup=hamlTag,hamlClassChar,hamlIdChar,hamlRuby,hamlPlainChar,hamlInterpolatable\n\nsyn match   hamlTag        \"%\\w\\+\\%(:\\w\\+\\)\\=\" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@hamlComponent\nsyn region  hamlAttributes     matchgroup=hamlAttributesDelimiter start=\"(\" end=\")\" contained contains=htmlArg,hamlAttributeString,hamlAttributeVariable,htmlEvent,htmlCssDefinition nextgroup=@hamlComponent\nsyn region  hamlAttributesHash matchgroup=hamlAttributesDelimiter start=\"{\" end=\"}\" contained contains=@hamlRubyTop nextgroup=@hamlComponent\nsyn region  hamlObject         matchgroup=hamlObjectDelimiter     start=\"\\[\" end=\"\\]\" contained contains=@hamlRubyTop nextgroup=@hamlComponent\nsyn match   hamlDespacer \"[<>]\" contained nextgroup=hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable\nsyn match   hamlSelfCloser \"/\" contained\nsyn match   hamlClassChar \"\\.\" contained nextgroup=hamlClass\nsyn match   hamlIdChar \"#{\\@!\" contained nextgroup=hamlId\nsyn match   hamlClass \"\\%(\\w\\|-\\)\\+\" contained nextgroup=@hamlComponent\nsyn match   hamlId    \"\\%(\\w\\|-\\)\\+\" contained nextgroup=@hamlComponent\nsyn region  hamlDocType start=\"^\\s*!!!\" end=\"$\"\n\nsyn region  hamlRuby   matchgroup=hamlRubyOutputChar start=\"[!&]\\==\\|\\~\" skip=\",\\s*$\" end=\"$\" contained contains=@hamlRubyTop keepend\nsyn region  hamlRuby   matchgroup=hamlRubyChar       start=\"-\"           skip=\",\\s*$\" end=\"$\" contained contains=@hamlRubyTop keepend\nsyn match   hamlPlainChar \"\\\\\" contained\nsyn region hamlInterpolatable matchgroup=hamlInterpolatableChar start=\"!\\===\\|!=\\@!\" end=\"$\" keepend contained contains=hamlInterpolation,hamlInterpolationEscape,@hamlHtmlTop\nsyn region hamlInterpolatable matchgroup=hamlInterpolatableChar start=\"&==\\|&=\\@!\"   end=\"$\" keepend contained contains=hamlInterpolation,hamlInterpolationEscape\nsyn region hamlInterpolation matchgroup=hamlInterpolationDelimiter start=\"#{\" end=\"}\" contains=@hamlRubyTop containedin=javascriptStringS,javascriptStringD\nsyn match  hamlInterpolationEscape \"\\\\\\@<!\\%(\\\\\\\\\\)*\\\\\\%(\\\\\\ze#{\\|#\\ze{\\)\"\nsyn region hamlErbInterpolation matchgroup=hamlInterpolationDelimiter start=\"<%[=-]\\=\" end=\"-\\=%>\" contained contains=@hamlRubyTop\n\nsyn region  hamlAttributeString start=+\\%(=\\s*\\)\\@<='+ skip=+\\%(\\\\\\\\\\)*\\\\'+ end=+'+ contains=hamlInterpolation,hamlInterpolationEscape\nsyn region  hamlAttributeString start=+\\%(=\\s*\\)\\@<=\"+ skip=+\\%(\\\\\\\\\\)*\\\\\"+ end=+\"+ contains=hamlInterpolation,hamlInterpolationEscape\nsyn match   hamlAttributeVariable \"\\%(=\\s*\\)\\@<=\\%(@@\\=\\|\\$\\)\\=\\w\\+\" contained\n\nsyn match   hamlHelper  \"\\<action_view?\\|\\<block_is_haml?\\|\\<is_haml?\\|\\.\\@<!\\<flatten\" contained containedin=@hamlEmbeddedRuby,@hamlRubyTop\nsyn keyword hamlHelper   capture_haml escape_once find_and_preserve haml_concat haml_indent haml_tag html_attrs html_esape init_haml_helpers list_of non_haml precede preserve succeed surround tab_down tab_up page_class contained containedin=@hamlEmbeddedRuby,@hamlRubyTop\n\nsyn cluster hamlHtmlTop contains=@htmlTop,htmlBold,htmlItalic,htmlUnderline\nsyn region  hamlPlainFilter      matchgroup=hamlFilter start=\"^\\z(\\s*\\):\\%(plain\\|preserve\\|redcloth\\|textile\\|markdown\\|maruku\\)\\s*$\" end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@hamlHtmlTop,hamlInterpolation\nsyn region  hamlEscapedFilter    matchgroup=hamlFilter start=\"^\\z(\\s*\\):\\%(escaped\\|cdata\\)\\s*$\"    end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=hamlInterpolation\nsyn region  hamlErbFilter        matchgroup=hamlFilter start=\"^\\z(\\s*\\):erb\\s*$\"        end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@hamlHtmlTop,hamlErbInterpolation\nsyn region  hamlRubyFilter       matchgroup=hamlFilter start=\"^\\z(\\s*\\):ruby\\s*$\"       end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@hamlRubyTop\nsyn region  hamlJavascriptFilter matchgroup=hamlFilter start=\"^\\z(\\s*\\):javascript\\s*$\" end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@htmlJavaScript,hamlInterpolation keepend\nsyn region  hamlCSSFilter        matchgroup=hamlFilter start=\"^\\z(\\s*\\):css\\s*$\"        end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@htmlCss,hamlInterpolation keepend\nsyn region  hamlSassFilter       matchgroup=hamlFilter start=\"^\\z(\\s*\\):sass\\s*$\"       end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@hamlSassTop\n\nsyn region  hamlJavascriptBlock start=\"^\\z(\\s*\\)%script\" nextgroup=@hamlComponent,hamlError end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@hamlTop,@htmlJavaScript keepend\nsyn region  hamlCssBlock        start=\"^\\z(\\s*\\)%style\" nextgroup=@hamlComponent,hamlError  end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@hamlTop,@htmlCss keepend\nsyn match   hamlError \"\\$\" contained\n\nsyn region  hamlComment     start=\"^\\z(\\s*\\)-#\" end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=rubyTodo\nsyn region  hamlHtmlComment start=\"^\\z(\\s*\\)/\"  end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@hamlTop,rubyTodo\nsyn match   hamlIEConditional \"\\%(^\\s*/\\)\\@<=\\[if\\>[^]]*]\" contained containedin=hamlHtmlComment\n\nhi def link hamlSelfCloser             Special\nhi def link hamlDespacer               Special\nhi def link hamlClassChar              Special\nhi def link hamlIdChar                 Special\nhi def link hamlTag                    Special\nhi def link hamlClass                  Type\nhi def link hamlId                     Identifier\nhi def link hamlPlainChar              Special\nhi def link hamlInterpolatableChar     hamlRubyChar\nhi def link hamlRubyOutputChar         hamlRubyChar\nhi def link hamlRubyChar               Special\nhi def link hamlInterpolationDelimiter Delimiter\nhi def link hamlInterpolationEscape    Special\nhi def link hamlAttributeString        String\nhi def link hamlAttributeVariable      Identifier\nhi def link hamlDocType                PreProc\nhi def link hamlFilter                 PreProc\nhi def link hamlAttributesDelimiter    Delimiter\nhi def link hamlObjectDelimiter        Delimiter\nhi def link hamlHelper                 Function\nhi def link hamlHtmlComment            hamlComment\nhi def link hamlComment                Comment\nhi def link hamlIEConditional          SpecialComment\nhi def link hamlError                  Error\n\nlet b:current_syntax = \"haml\"\n\nif main_syntax == \"haml\"\n  unlet main_syntax\nendif\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-haml/syntax/sass.vim",
    "content": "\" Vim syntax file\n\" Language:\tSass\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Filenames:\t*.sass\n\" Last Change:\t2010 Aug 09\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nruntime! syntax/css.vim\n\nsyn case ignore\n\nsyn cluster sassCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp\nsyn cluster sassCssAttributes contains=css.*Attr,sassEndOfLineComment,scssComment,cssValue.*,cssColor,cssURL,sassDefault,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp\n\nsyn region sassDefinition matchgroup=cssBraces start=\"{\" end=\"}\" contains=TOP\n\nsyn match sassProperty \"\\%([{};]\\s*\\|^\\)\\@<=\\%([[:alnum:]-]\\|#{[^{}]*}\\)\\+\\s*:\" contains=css.*Prop skipwhite nextgroup=sassCssAttribute contained containedin=sassDefinition\nsyn match sassProperty \"^\\s*\\zs\\s\\%(\\%([[:alnum:]-]\\|#{[^{}]*}\\)\\+\\s*:\\|:[[:alnum:]-]\\+\\)\"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute\nsyn match sassProperty \"^\\s*\\zs\\s\\%(:\\=[[:alnum:]-]\\+\\s*=\\)\"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute\nsyn match sassCssAttribute +\\%(\"\\%([^\"]\\|\\\\\"\\)*\"\\|'\\%([^']\\|\\\\'\\)*'\\|#{[^{}]*}\\|[^{};]\\)*+ contained contains=@sassCssAttributes,sassVariable,sassFunction,sassInterpolation\nsyn match sassDefault \"!default\\>\" contained\nsyn match sassVariable \"!\\%(important\\>\\|default\\>\\)\\@![[:alnum:]_-]\\+\"\nsyn match sassVariable \"$[[:alnum:]_-]\\+\"\nsyn match sassVariableAssignment \"\\%([!$][[:alnum:]_-]\\+\\s*\\)\\@<=\\%(||\\)\\==\" nextgroup=sassCssAttribute skipwhite\nsyn match sassVariableAssignment \"\\%([!$][[:alnum:]_-]\\+\\s*\\)\\@<=:\" nextgroup=sassCssAttribute skipwhite\n\nsyn match sassFunction \"\\<\\%(rgb\\|rgba\\|red\\|green\\|blue\\|mix\\)\\>(\\@=\" contained\nsyn match sassFunction \"\\<\\%(hsl\\|hsla\\|hue\\|saturation\\|lightness\\|adjust-hue\\|lighten\\|darken\\|saturate\\|desaturate\\|grayscale\\|complement\\)\\>(\\@=\" contained\nsyn match sassFunction \"\\<\\%(alpha\\|opacity\\|rgba\\|opacify\\|fade-in\\|transparentize\\|fade-out\\)\\>(\\@=\" contained\nsyn match sassFunction \"\\<\\%(unquote\\|quote\\)\\>(\\@=\" contained\nsyn match sassFunction \"\\<\\%(percentage\\|round\\|ceil\\|floor\\|abs\\)\\>(\\@=\" contained\nsyn match sassFunction \"\\<\\%(type-of\\|unit\\|unitless\\|comparable\\)\\>(\\@=\" contained\n\nsyn region sassInterpolation matchgroup=sassInterpolationDelimiter start=\"#{\" end=\"}\" contains=@sassCssAttributes,sassVariable,sassFunction containedin=cssStringQ,cssStringQQ,cssPseudoClass,sassProperty\n\nsyn match sassMixinName \"[[:alnum:]_-]\\+\" contained nextgroup=sassCssAttribute\nsyn match sassMixin  \"^=\"               nextgroup=sassMixinName skipwhite\nsyn match sassMixin  \"\\%([{};]\\s*\\|^\\s*\\)\\@<=@mixin\"   nextgroup=sassMixinName skipwhite\nsyn match sassMixing \"^\\s\\+\\zs+\"        nextgroup=sassMixinName\nsyn match sassMixing \"\\%([{};]\\s*\\|^\\s*\\)\\@<=@include\" nextgroup=sassMixinName skipwhite\nsyn match sassExtend \"\\%([{};]\\s*\\|^\\s*\\)\\@<=@extend\"\nsyn match sassPlaceholder \"\\%([{};]\\s*\\|^\\s*\\)\\@<=%\"   nextgroup=sassMixinName skipwhite\n\nsyn match sassFunctionName \"[[:alnum:]_-]\\+\" contained nextgroup=sassCssAttribute\nsyn match sassFunctionDecl \"\\%([{};]\\s*\\|^\\s*\\)\\@<=@function\"   nextgroup=sassFunctionName skipwhite\nsyn match sassReturn \"\\%([{};]\\s*\\|^\\s*\\)\\@<=@return\"\n\nsyn match sassEscape     \"^\\s*\\zs\\\\\"\nsyn match sassIdChar     \"#[[:alnum:]_-]\\@=\" nextgroup=sassId\nsyn match sassId         \"[[:alnum:]_-]\\+\" contained\nsyn match sassClassChar  \"\\.[[:alnum:]_-]\\@=\" nextgroup=sassClass\nsyn match sassClass      \"[[:alnum:]_-]\\+\" contained\nsyn match sassAmpersand  \"&\"\n\n\" TODO: Attribute namespaces\n\" TODO: Arithmetic (including strings and concatenation)\n\nsyn region sassInclude start=\"@import\" end=\";\\|$\" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType\nsyn region sassDebugLine end=\";\\|$\" matchgroup=sassDebug start=\"@debug\\>\" contains=@sassCssAttributes,sassVariable,sassFunction\nsyn region sassWarnLine end=\";\\|$\" matchgroup=sassWarn start=\"@warn\\>\" contains=@sassCssAttributes,sassVariable,sassFunction\nsyn region sassControlLine matchgroup=sassControl start=\"@\\%(if\\|else\\%(\\s\\+if\\)\\=\\|while\\|for\\|each\\)\\>\" end=\"[{};]\\@=\\|$\" contains=sassFor,@sassCssAttributes,sassVariable,sassFunction\nsyn keyword sassFor from to through in contained\n\nsyn keyword sassTodo        FIXME NOTE TODO OPTIMIZE XXX contained\nsyn region  sassComment     start=\"^\\z(\\s*\\)//\"  end=\"^\\%(\\z1 \\)\\@!\" contains=sassTodo,@Spell\nsyn region  sassCssComment  start=\"^\\z(\\s*\\)/\\*\" end=\"^\\%(\\z1 \\)\\@!\" contains=sassTodo,@Spell\nsyn match   sassEndOfLineComment \"//.*\" contains=sassComment,sassTodo,@Spell\n\nhi def link sassEndOfLineComment        sassComment\nhi def link sassCssComment              sassComment\nhi def link sassComment                 Comment\nhi def link sassDefault                 cssImportant\nhi def link sassVariable                Identifier\nhi def link sassFunction                Function\nhi def link sassMixing                  PreProc\nhi def link sassMixin                   PreProc\nhi def link sassPlaceholder             PreProc\nhi def link sassExtend                  PreProc\nhi def link sassFunctionDecl            PreProc\nhi def link sassReturn                  PreProc\nhi def link sassTodo                    Todo\nhi def link sassInclude                 Include\nhi def link sassDebug                   sassControl\nhi def link sassWarn                    sassControl\nhi def link sassControl                 PreProc\nhi def link sassFor                     PreProc\nhi def link sassEscape                  Special\nhi def link sassIdChar                  Special\nhi def link sassClassChar               Special\nhi def link sassInterpolationDelimiter  Delimiter\nhi def link sassAmpersand               Character\nhi def link sassId                      Identifier\nhi def link sassClass                   Type\n\nlet b:current_syntax = \"sass\"\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-haml/syntax/scss.vim",
    "content": "\" Vim syntax file\n\" Language:\tSCSS\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Filenames:\t*.scss\n\" Last Change:\t2010 Jul 26\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nruntime! syntax/sass.vim\n\nsyn match scssComment \"//.*\" contains=sassTodo,@Spell\nsyn region scssComment start=\"/\\*\" end=\"\\*/\" contains=sassTodo,@Spell\n\nhi def link scssComment sassComment\n\nlet b:current_syntax = \"scss\"\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-localrc/autoload/localrc.vim",
    "content": "\" Enable configuration file of each directory.\n\" Version: 0.2.0\n\" Author : thinca <thinca+vim@gmail.com>\n\" License: zlib License\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\n\nfunction! localrc#load(fnames, ...)\n  for file in localrc#search(a:fnames,\n  \\                          1 <= a:0 ? a:1 : expand('%:p:h'),\n  \\                          2 <= a:0 ? a:2 : -1)\n    \" XXX: Handle error?\n    source `=file`\n  endfor\nendfunction\n\nfunction! localrc#search(fnames, ...)\n  let path = 1 <= a:0 ? a:1 : expand('%:p:h')\n  if empty(a:fnames) || !isdirectory(path)\n    return []\n  endif\n\n  let depth = 2 <= a:0 ? a:2 : -1\n  let targets = []\n  let dir = fnamemodify(path, ':p:h')\n  let updir = ''\n  while depth != 0 && dir !=# updir\n    let targets = s:match_files(dir, a:fnames) + targets\n    let updir = dir\n    let dir = fnamemodify(dir, ':h')\n    if (has('win32') || has('win64')) && dir =~ '^\\\\\\\\[^\\\\]\\+$'\n      break\n    endif\n    let depth -= 1\n  endwhile\n  return targets\nendfunction\n\nfunction! s:match_files(path, fname)\n  if type(a:fname) == type([])\n    let files = []\n    for f in a:fname\n      let files += s:match_files(a:path, f)\n    endfor\n    return s:uniq(files)\n  endif\n\n  let path = escape(a:path, '*?[,')\n  if a:fname[0] == '/'\n    let files = split(globpath(path, '/.*', 1), \"\\n\")\n    \\         + split(globpath(path, '/*' , 1), \"\\n\")\n    let pat = a:fname[1:]\n    call filter(map(files, 'fnamemodify(v:val, \":t\")'), 'v:val =~# pat')\n\n  else\n    let files = map(split(globpath(path, a:fname, 1), \"\\n\"),\n    \\               'fnamemodify(v:val, \":t\")')\n  endif\n\n  return filter(map(files, 'a:path . \"/\" . v:val'), 'filereadable(v:val)')\nendfunction\n\n\" - string only.\n\" - can not treat a empty string.\nfunction! s:uniq(list)\n  let i = 0\n  let len = len(a:list)\n  let seen = {}\n  while i < len\n    if has_key(seen, a:list[i])\n      call remove(a:list, i)\n    else\n      let seen[a:list[i]] = 1\n      let i += 1\n    endif\n  endwhile\n  return a:list\nendfunction\n\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n"
  },
  {
    "path": ".vim/bundle/vim-localrc/doc/localrc.txt",
    "content": "*localrc.txt*\tEnable configuration file of each directory.\n\nVersion: 0.2.0\nAuthor : thinca <thinca+vim@gmail.com>\nLicense: zlib License\n\n==============================================================================\nCONTENTS\t\t\t\t\t*localrc-contents*\n\nINTRODUCTION\t\t\t|localrc-introduction|\nUSAGE\t\t\t\t|localrc-usage|\nINTERFACE\t\t\t|localrc-interface|\n  FUNCTIONS\t\t\t  |localrc-functions|\nCUSTOMIZING\t\t\t|localrc-customizing|\nEXAMPLES\t\t\t|localrc-examples|\nCHANGELOG\t\t\t|localrc-changelog|\n\n\n==============================================================================\nINTRODUCTION\t\t\t\t\t*localrc-introduction*\n\n*localrc* is a Vim plugin to enable configuration file of each directory.\n\n\nRequirements:\n- Vim 7.2 or later\n\nLatest version:\nhttps://github.com/thinca/vim-localrc\n\n\n\n==============================================================================\nUSAGE\t\t\t\t\t\t*localrc-usage*\n\nYou can put a configuration file for the files below the certain directory.\n\nThe configuration file is a Vim script of a decided file name like \".vimrc\".\nThe file name is specified by |g:localrc_filename|.\n\nThe configuration file is loaded at the timing of |BufReadPost| and\n|BufNewFile|.  And, it is loaded also at the timing of |VimEnter| if you start\nVim with no file.\n\nConfiguration file applied only to a specific filetype can be put.  The file\nname is specified by |g:localrc_filetype|.\n\nWhen two or more configuration files exist, it is sequentially loaded from a\nshallow hierarchy.\nFor example: >\n\t~/\n\t|- .local.vimrc\t\t(1)\n\t`- project/\n\t   |- .local.vimrc\t(2)\n\t   `- src/\n\t      |- .local.vimrc\t(3)\n\t      `- main.c\nIn this case, when main.c is loaded, the configuration files are loaded in\norder of the number.\n\n\n\n==============================================================================\nINTERFACE\t\t\t\t\t*localrc-interface*\n\n------------------------------------------------------------------------------\nFUNCTIONS\t\t\t\t\t*localrc-functions*\n\nlocalrc#load({fnames} [, {path} [, {depth}]])\t*localrc#load()*\n\tLoad settings with |:source|.\n\n\t{fnames} is file names to load.  This is a |List| or a string.\n\t|wildcards| can be used for this.  Additionally, this is treated as a\n\tregular expression if it starts with \"/\".\n\t{path} is a directory for search base directory.  The directory must\n\texist.  If omitted, a directory with a file of current buffer is used.\n\t{depth} is a number of hierarchies of the traced directory.  -1 is\n\tall.  If omitted, -1 is used.\n\nlocalrc#search({fnames} [, {path} [, {depth}]])\t*localrc#search()*\n\tSearch the files to load and return it as |List|.\n\tThe arguments are same to |localrc#load()|.\n\n\n\n==============================================================================\nCUSTOMIZING\t\t\t\t\t*localrc-customizing*\n\ng:localrc_filename\t\t\t\t*g:localrc_filename*\n\tThe configuration file name.  This is passed to {fnames} argument of\n\t|localrc#load()|.\n\n\tdefault: \".local.vimrc\"\n\ng:localrc_filetype\t\t\t\t*g:localrc_filetype*\n\tThe name of configuration file for specific filetype.\n\t\"%s\" is replaced by filetype.\n\n\tdefault: '/^\\.local\\..*\\<%s\\>.*\\.vimrc$'\n\n\n\n==============================================================================\nEXAMPLES\t\t\t\t\t*localrc-examples*\n\nExamples of configuration file.\n>\n\t\" cd to the directory with the configuration file.\n\tlcd <sfile>:h\n\n\t\" Setting of indent to project.\n\tsetlocal tabstop=4 noexpandtab\n<\nYou can load configuration files by favorite timing.\nFor example, in vimrc...\n>\n\t\" Read the configuration file for the directory that starts Vim.\n\tcall localrc#load('.init.vimrc', getcwd())\n<\n\n\n\n==============================================================================\nCHANGELOG\t\t\t\t\t*localrc-changelog*\n\n0.2.0\t2013-02-28\n\t- Use |autocmd-nested| for autocmds.\n\t- Add |VimEnter| autocmd.\n\n0.1.2\t2011-01-25\n\t- Improved the default value of |g:localrc_filetype|.\n\n0.1.1\t2011-01-17\n\t- Use \"%\" instead of \"<afile>\".\n\n0.1.0\t2011-01-08\n\t- Initial version.\n\n\n==============================================================================\nvim:tw=78:fo=tcq2mM:ts=8:ft=help:norl\n"
  },
  {
    "path": ".vim/bundle/vim-localrc/plugin/localrc.vim",
    "content": "\" Enable configuration file of each directory.\n\" Version: 0.2.0\n\" Author : thinca <thinca+vim@gmail.com>\n\" License: zlib License\n\nif exists('g:loaded_localrc')\n  finish\nendif\nlet g:loaded_localrc = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nif !exists('g:localrc_filename')\n  let g:localrc_filename = '.local.vimrc'\nendif\n\nif !exists('g:localrc_filetype')\n  let g:localrc_filetype = '/^\\.local\\..*\\<%s\\>.*\\.vimrc$'\nendif\n\n\naugroup plugin-localrc\n  autocmd!\n  autocmd VimEnter * nested\n  \\                  if argc() == 0\n  \\                |   call localrc#load(g:localrc_filename)\n  \\                | endif\n  autocmd BufNewFile,BufReadPost * nested\n  \\   call localrc#load(g:localrc_filename)\n  autocmd FileType * nested\n  \\   call localrc#load(\n  \\     map(type(g:localrc_filetype) == type([]) ? copy(g:localrc_filetype)\n  \\                                              : [g:localrc_filetype],\n  \\         'printf(v:val, expand(\"<amatch>\"))'))\naugroup END\n\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n"
  },
  {
    "path": ".vim/bundle/vim-markdown/ftdetect/markdown.vim",
    "content": "autocmd BufNewFile,BufRead *.markdown,*.md,*.mdown,*.mkd,*.mkdn\n      \\ if &ft =~# '^\\%(conf\\|modula2\\)$' |\n      \\   set ft=markdown |\n      \\ else |\n      \\   setf markdown |\n      \\ endif\n"
  },
  {
    "path": ".vim/bundle/vim-markdown/ftplugin/markdown.vim",
    "content": "\" Vim filetype plugin\n\" Language:\t\tMarkdown\n\" Maintainer:\t\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t\t2013 May 30\n\nif exists(\"b:did_ftplugin\")\n  finish\nendif\n\nruntime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim\n\nsetlocal comments=fb:*,fb:-,fb:+,n:> commentstring=>\\ %s\nsetlocal formatoptions+=tcqln formatoptions-=r formatoptions-=o\nsetlocal formatlistpat=^\\\\s*\\\\d\\\\+\\\\.\\\\s\\\\+\\\\\\|^[-*+]\\\\s\\\\+\n\nif exists('b:undo_ftplugin')\n  let b:undo_ftplugin .= \"|setl cms< com< fo< flp<\"\nelse\n  let b:undo_ftplugin = \"setl cms< com< fo< flp<\"\nendif\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-markdown/syntax/markdown.vim",
    "content": "\" Vim syntax file\n\" Language:     Markdown\n\" Maintainer:   Tim Pope <vimNOSPAM@tpope.org>\n\" Filenames:    *.markdown\n\" Last Change:  2013 May 30\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nif !exists('main_syntax')\n  let main_syntax = 'markdown'\nendif\n\nruntime! syntax/html.vim\nunlet! b:current_syntax\n\nif !exists('g:markdown_fenced_languages')\n  let g:markdown_fenced_languages = []\nendif\nfor s:type in map(copy(g:markdown_fenced_languages),'matchstr(v:val,\"[^=]*$\")')\n  if s:type =~ '\\.'\n    let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\\.\\zs.*')\n  endif\n  exe 'syn include @markdownHighlight'.substitute(s:type,'\\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim'\n  unlet! b:current_syntax\nendfor\nunlet! s:type\n\nsyn sync minlines=10\nsyn case ignore\n\nsyn match markdownValid '[<>]\\c[a-z/$!]\\@!'\nsyn match markdownValid '&\\%(#\\=\\w*;\\)\\@!'\n\nsyn match markdownLineStart \"^[<@]\\@!\" nextgroup=@markdownBlock,htmlSpecialChar\n\nsyn cluster markdownBlock contains=markdownH1,markdownH2,markdownH3,markdownH4,markdownH5,markdownH6,markdownBlockquote,markdownListMarker,markdownOrderedListMarker,markdownCodeBlock,markdownRule\nsyn cluster markdownInline contains=markdownLineBreak,markdownLinkText,markdownItalic,markdownBold,markdownCode,markdownEscape,@htmlTop,markdownError\n\nsyn match markdownH1 \"^.\\+\\n=\\+$\" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink\nsyn match markdownH2 \"^.\\+\\n-\\+$\" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink\n\nsyn match markdownHeadingRule \"^[=-]\\+$\" contained\n\nsyn region markdownH1 matchgroup=markdownHeadingDelimiter start=\"##\\@!\"      end=\"#*\\s*$\" keepend oneline contains=@markdownInline,markdownAutomaticLink contained\nsyn region markdownH2 matchgroup=markdownHeadingDelimiter start=\"###\\@!\"     end=\"#*\\s*$\" keepend oneline contains=@markdownInline,markdownAutomaticLink contained\nsyn region markdownH3 matchgroup=markdownHeadingDelimiter start=\"####\\@!\"    end=\"#*\\s*$\" keepend oneline contains=@markdownInline,markdownAutomaticLink contained\nsyn region markdownH4 matchgroup=markdownHeadingDelimiter start=\"#####\\@!\"   end=\"#*\\s*$\" keepend oneline contains=@markdownInline,markdownAutomaticLink contained\nsyn region markdownH5 matchgroup=markdownHeadingDelimiter start=\"######\\@!\"  end=\"#*\\s*$\" keepend oneline contains=@markdownInline,markdownAutomaticLink contained\nsyn region markdownH6 matchgroup=markdownHeadingDelimiter start=\"#######\\@!\" end=\"#*\\s*$\" keepend oneline contains=@markdownInline,markdownAutomaticLink contained\n\nsyn match markdownBlockquote \">\\%(\\s\\|$\\)\" contained nextgroup=@markdownBlock\n\nsyn region markdownCodeBlock start=\"    \\|\\t\" end=\"$\" contained\n\n\" TODO: real nesting\nsyn match markdownListMarker \"\\%(\\t\\| \\{0,4\\}\\)[-*+]\\%(\\s\\+\\S\\)\\@=\" contained\nsyn match markdownOrderedListMarker \"\\%(\\t\\| \\{0,4}\\)\\<\\d\\+\\.\\%(\\s\\+\\S\\)\\@=\" contained\n\nsyn match markdownRule \"\\* *\\* *\\*[ *]*$\" contained\nsyn match markdownRule \"- *- *-[ -]*$\" contained\n\nsyn match markdownLineBreak \" \\{2,\\}$\"\n\nsyn region markdownIdDeclaration matchgroup=markdownLinkDelimiter start=\"^ \\{0,3\\}!\\=\\[\" end=\"\\]:\" oneline keepend nextgroup=markdownUrl skipwhite\nsyn match markdownUrl \"\\S\\+\" nextgroup=markdownUrlTitle skipwhite contained\nsyn region markdownUrl matchgroup=markdownUrlDelimiter start=\"<\" end=\">\" oneline keepend nextgroup=markdownUrlTitle skipwhite contained\nsyn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+\"+ end=+\"+ keepend contained\nsyn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+'+ end=+'+ keepend contained\nsyn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+(+ end=+)+ keepend contained\n\nsyn region markdownLinkText matchgroup=markdownLinkTextDelimiter start=\"!\\=\\[\\%(\\_[^]]*]\\%( \\=[[(]\\)\\)\\@=\" end=\"\\]\\%( \\=[[(]\\)\\@=\" nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart\nsyn region markdownLink matchgroup=markdownLinkDelimiter start=\"(\" end=\")\" contains=markdownUrl keepend contained\nsyn region markdownId matchgroup=markdownIdDelimiter start=\"\\[\" end=\"\\]\" keepend contained\nsyn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start=\"<\\%(\\w\\+:\\|[[:alnum:]_+-]\\+@\\)\\@=\" end=\">\" keepend oneline\n\nsyn region markdownItalic start=\"\\S\\@<=\\*\\|\\*\\S\\@=\" end=\"\\S\\@<=\\*\\|\\*\\S\\@=\" keepend contains=markdownLineStart\nsyn region markdownItalic start=\"\\S\\@<=_\\|_\\S\\@=\" end=\"\\S\\@<=_\\|_\\S\\@=\" keepend contains=markdownLineStart\nsyn region markdownBold start=\"\\S\\@<=\\*\\*\\|\\*\\*\\S\\@=\" end=\"\\S\\@<=\\*\\*\\|\\*\\*\\S\\@=\" keepend contains=markdownLineStart,markdownItalic\nsyn region markdownBold start=\"\\S\\@<=__\\|__\\S\\@=\" end=\"\\S\\@<=__\\|__\\S\\@=\" keepend contains=markdownLineStart,markdownItalic\nsyn region markdownBoldItalic start=\"\\S\\@<=\\*\\*\\*\\|\\*\\*\\*\\S\\@=\" end=\"\\S\\@<=\\*\\*\\*\\|\\*\\*\\*\\S\\@=\" keepend contains=markdownLineStart\nsyn region markdownBoldItalic start=\"\\S\\@<=___\\|___\\S\\@=\" end=\"\\S\\@<=___\\|___\\S\\@=\" keepend contains=markdownLineStart\nsyn region markdownCode matchgroup=markdownCodeDelimiter start=\"`\" end=\"`\" keepend contains=markdownLineStart\nsyn region markdownCode matchgroup=markdownCodeDelimiter start=\"`` \\=\" end=\" \\=``\" keepend contains=markdownLineStart\nsyn region markdownCode matchgroup=markdownCodeDelimiter start=\"^\\s*```.*$\" end=\"^\\s*```\\ze\\s*$\" keepend\n\nsyn match markdownFootnote \"\\[^[^\\]]\\]\\s*$\"\nsyn match markdownFootnoteDefinition \"^\\[^[^\\]]\\]:\"\n\nif main_syntax ==# 'markdown'\n  for s:type in g:markdown_fenced_languages\n    exe 'syn region markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\\..*','','').' matchgroup=markdownCodeDelimiter start=\"^\\s*```\\s*'.matchstr(s:type,'[^=]*').'\\>.*$\" end=\"^\\s*```\\ze\\s*$\" keepend contains=@markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\\.','','g')\n  endfor\n  unlet! s:type\nendif\n\nsyn match markdownEscape \"\\\\[][\\\\`*_{}()#+.!-]\"\nsyn match markdownError \"\\w\\@<=_\\w\\@=\"\n\nhi def link markdownH1                    htmlH1\nhi def link markdownH2                    htmlH2\nhi def link markdownH3                    htmlH3\nhi def link markdownH4                    htmlH4\nhi def link markdownH5                    htmlH5\nhi def link markdownH6                    htmlH6\nhi def link markdownHeadingRule           markdownRule\nhi def link markdownHeadingDelimiter      Delimiter\nhi def link markdownOrderedListMarker     markdownListMarker\nhi def link markdownListMarker            htmlTagName\nhi def link markdownBlockquote            Comment\nhi def link markdownRule                  PreProc\n\nhi def link markdownFootnote              Typedef\nhi def link markdownFootnoteDefinition    Typedef\n\nhi def link markdownLinkText              htmlLink\nhi def link markdownIdDeclaration         Typedef\nhi def link markdownId                    Type\nhi def link markdownAutomaticLink         markdownUrl\nhi def link markdownUrl                   Float\nhi def link markdownUrlTitle              String\nhi def link markdownIdDelimiter           markdownLinkDelimiter\nhi def link markdownUrlDelimiter          htmlTag\nhi def link markdownUrlTitleDelimiter     Delimiter\n\nhi def link markdownItalic                htmlItalic\nhi def link markdownBold                  htmlBold\nhi def link markdownBoldItalic            htmlBoldItalic\nhi def link markdownCodeDelimiter         Delimiter\n\nhi def link markdownEscape                Special\nhi def link markdownError                 Error\n\nlet b:current_syntax = \"markdown\"\nif main_syntax ==# 'markdown'\n  unlet main_syntax\nendif\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/.travis.yml",
    "content": "language: ruby\nrvm:\n  - 1.9.3\nbefore_install: sudo apt-get install vim-gtk\nbefore_script:\n  - \"export DISPLAY=:99.0\"\n  - \"sh -e /etc/init.d/xvfb start\"\nscript: bundle exec rspec --format=documentation\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/Gemfile",
    "content": "source 'https://rubygems.org'\n\ngem 'vimrunner'\ngem 'rspec'\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/README.md",
    "content": "# vim-polyglot [![Build Status][travis-img-url]][travis-url]\n\n[travis-img-url]: https://travis-ci.org/sheerun/vim-polyglot.png\n[travis-url]: https://travis-ci.org/sheerun/vim-polyglot\n\nA collection of language packs for Vim.\n\nOne to rule them all, one to find them, one to bring them all and in the darkness bind them.\n\n- It **won't affect your startup time**, as scripts are loaded only on demand\\*. \n- It **installs 40x faster** (unparallelized), as language packs are not submoduled, but merged.\n- It clones even faster as all unnecessary files are ignored (like enormous documentation from php support).\n- Best syntax and indentation support. If someone releases better language pack, it will be replaced here.\n- No support for esoteric languages (vim-polyglot supports modern ones like `slim` though).\n- Each build is tested by automated Travis CI setup using vimrunner gem. Spee `spec` directory.\n\n\\*To be completely honest, concatenated `ftdetect` script takes around `3ms` to load.\n\n## Installation\n\n1. Install pathogen, Vundle or NeoBundle package manager.\n2. Use this repository as submodule or package.\n\nOptionally download one of the [releases](https://github.com/sheerun/vim-polyglot/releases) and unpack it directly under `~/.vim` directory.\n\n## Language packs\n\n- [arduino](https://github.com/sudar/vim-arduino-syntax) (syntax, indent, ftdetect)\n- [c++11](https://github.com/octol/vim-cpp-enhanced-highlight) (syntax)\n- [c/c++](https://github.com/vim-jp/cpp-vim) (syntax)\n- [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, autoload, ftplugin, ftdetect)\n- [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, indent, compiler, autoload, ftplugin, ftdetect)\n- [csv](https://github.com/chrisbra/csv.vim) (syntax, ftplugin, ftdetect)\n- [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin, ftdetect)\n- [dockerfile](https://github.com/honza/dockerfile.vim) (syntax, ftdetect)\n- [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, ftplugin, ftdetect)\n- [erlang](https://github.com/oscarh/vimerl) (syntax, indent, compiler, autoload, ftplugin)\n- [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin, ftdetect)\n- [go](https://github.com/jnwhiteh/vim-golang) (syntax, indent, compiler, autoload, ftplugin, ftdetect)\n- [haml](https://github.com/tpope/vim-haml) (syntax, indent, compiler, ftplugin, ftdetect)\n- [handlebars](https://github.com/mustache/vim-mustache-handlebars) (syntax, ftplugin, ftdetect)\n- [haskell](https://github.com/travitch/hasksyn) (syntax, indent, ftplugin)\n- [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload)\n- [jade](https://github.com/digitaltoad/vim-jade) (syntax, indent, ftplugin, ftdetect)\n- [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, ftdetect)\n- [json](https://github.com/leshill/vim-json) (syntax, ftdetect)\n- [jst](https://github.com/briancollins/vim-jst) (syntax, indent, ftdetect)\n- [latex](https://github.com/LaTeX-Box-Team/LaTeX-Box) (syntax, indent, ftplugin)\n- [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin, ftdetect)\n- [markdown](https://github.com/tpope/vim-markdown) (syntax, ftplugin, ftdetect)\n- [nginx](https://github.com/mutewinter/nginx.vim) (syntax, ftdetect)\n- [ocaml](https://github.com/jrk/vim-ocaml) (syntax, indent, ftplugin)\n- [octave](https://github.com/vim-scripts/octave.vim--) (syntax)\n- [opencl](https://github.com/petRUShka/vim-opencl) (syntax, indent, ftplugin, ftdetect)\n- [perl](https://github.com/vim-perl/vim-perl) (syntax, indent, ftplugin, ftdetect)\n- [php](https://github.com/StanAngeloff/php.vim) (syntax)\n- [puppet](https://github.com/ajf/puppet-vim) (syntax, indent, ftplugin, ftdetect)\n- [protobuf](https://github.com/uarun/vim-protobuf) (syntax, ftdetect)\n- [python](https://github.com/vim-scripts/python.vim--Vasiliev) (syntax)\n- [r-lang](https://github.com/vim-scripts/R.vim) (syntax, ftplugin)\n- [rspec](https://github.com/sheerun/rspec.vim) (syntax, ftdetect)\n- [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin, ftdetect)\n- [rust](https://github.com/wting/rust.vim) (syntax, indent, compiler, ftplugin, ftdetect)\n- [sbt](https://github.com/derekwyatt/vim-sbt) (syntax, ftdetect)\n- [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, ftplugin, ftdetect)\n- [slim](https://github.com/slim-template/vim-slim) (syntax, indent, ftdetect)\n- [stylus](https://github.com/wavded/vim-stylus) (syntax, indent, ftplugin, ftdetect)\n- [textile](https://github.com/timcharper/textile.vim) (syntax, ftplugin, ftdetect)\n- [tmux](https://github.com/acustodioo/vim-tmux) (syntax, ftdetect)\n- [tomdoc](https://github.com/duwanis/tomdoc.vim) (syntax)\n- [typescript](https://github.com/leafgarland/typescript-vim) (syntax, compiler, ftplugin, ftdetect)\n- [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax)\n- [twig](https://github.com/beyondwords/vim-twig) (syntax, ftplugin, ftdetect)\n- [xls](https://github.com/vim-scripts/XSLT-syntax) (syntax)\n- [css-color](https://github.com/gorodinskiy/vim-coloresque) (syntax)\n\n## Contributing\n\nLanguage packs are periodically updated using automated `build` script.\n\nFeel free to add your language, and send pull-request.\n\n## License\n\nSee linked repositories for detailed license information.\n\n\n[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/sheerun/vim-polyglot/trend.png)](https://bitdeli.com/free \"Bitdeli Badge\")\n\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/ftdetect/rspec.vim",
    "content": "autocmd BufReadPost,BufNewFile *_spec.rb set syntax=rspec\nautocmd BufReadPost,BufNewFile *_spec.rb setlocal commentstring=#\\ %s\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/ftplugin/haskell.vim",
    "content": "\" Vim ftplugin file\n\" Language: Haskell\n\" Maintainer: Tristan Ravitch\n\n\" I don't fully understand what the vim-default ftplugin does, but I do know\n\" that the three-part comment entry really messes up this indenter (I also\n\" hate the leading '-'s it puts in on each line).  Disable it here.\nsetlocal comments&\nsetlocal comments=:--\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/indent/html.vim",
    "content": "\" Language:    CoffeeScript\n\" Maintainer:  Mick Koch <kchmck@gmail.com>\n\" URL:         http://github.com/kchmck/vim-coffee-script\n\" License:     WTFPL\n\n\" Load the coffee and html indent functions.\nsilent! unlet b:did_indent\nruntime indent/coffee.vim\nlet s:coffeeIndentExpr = &l:indentexpr\n\n\" Load html last so it can overwrite coffee settings.\nsilent! unlet b:did_indent\nruntime indent/html.vim\nlet s:htmlIndentExpr = &l:indentexpr\n\n\" Inject our wrapper indent function.\nsetlocal indentexpr=GetCoffeeHtmlIndent(v:lnum)\n\nfunction! GetCoffeeHtmlIndent(curlinenum)\n  \" See if we're inside a coffeescript block.\n  let scriptlnum = searchpair('<script [^>]*type=\"text/coffeescript\"[^>]*>', '',\n  \\                           '</script>', 'bWn')\n  let prevlnum = prevnonblank(a:curlinenum)\n\n  \" If we're in the script block and the previous line isn't the script tag\n  \" itself, use coffee indenting.\n  if scriptlnum && scriptlnum != prevlnum\n    exec 'return ' s:coffeeIndentExpr\n  endif\n\n  \" Otherwise use html indenting.\n  exec 'return ' s:htmlIndentExpr\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/syntax/coffee.vim",
    "content": "\" This file describes a very basic syntax for TomDoc comments in a\n\" CoffeeScript file.\n\"\n\" For more information on TomDoc, check it out here: http://tomdoc.org/\n\"\n\nsyn keyword tomdocKeywords Returns containedin=coffeeComment contained\nsyn keyword tomdocKeywords Throws containedin=coffeeComment contained\nsyn keyword tomdocKeywords Examples containedin=coffeeComment contained\nsyn keyword tomdocKeywords Signature containedin=coffeeComment contained\n\nsyn match tomdocArguments +\\s*[A-Za-z0-9_\\-&\\*:]*\\(\\s*- \\)+he=e-3 containedin=coffeeComment contained\n\nsyn match tomdocDescriptions +\\s*Public:+he=e-1 containedin=coffeeComment contained\nsyn match tomdocDescriptions +\\s*Internal:+he=e-1 containedin=coffeeComment contained\nsyn match tomdocDescriptions +\\s*Deprecated:+he=e-1 containedin=coffeeComment contained\n\nhi default link tomdocDescriptions String\nhi default link tomdocKeywords String\nhi default link tomdocArguments HELP\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/syntax/cpp.vim",
    "content": "\" Vim syntax file\n\" Language: C++ Additions\n\" Maintainer: Jon Haggblad <jon@haeggblad.com>\n\" URL: http://www.haeggblad.com\n\" Last Change: 26 Jan 2014\n\" Version: 0.2\n\" Changelog:\n\"   0.1 - initial version.\n\"   0.2 - C++14\n\"\n\" Additional Vim syntax highlighting for C++ (including C++11)\n\"\n\" This file contains additional syntax highlighting that I use for my C++11\n\" development in Vim. Compared to the standard syntax highlighting for C++ it\n\" adds highlighting of (user defined) functions and the containers and types\n\" in the standard library / boost.\n\"\n\" Based on:\n\"   http://stackoverflow.com/questions/736701/class-function-names-highlighting-in-vim\n\"   http://www.vim.org/scripts/script.php?script_id=4293\n\"   http://www.vim.org/scripts/script.php?script_id=2224\n\"   http://www.vim.org/scripts/script.php?script_id=1640\n\"   http://www.vim.org/scripts/script.php?script_id=3064\n\n\" -----------------------------------------------------------------------------\n\"  Highlight Class and Function names.\n\"\n\" Based on the discussion in:\n\"   http://stackoverflow.com/questions/736701/class-function-names-highlighting-in-vim\n\" -----------------------------------------------------------------------------\nsyn match    cCustomParen    \"(\" contains=cParen contains=cCppParen\nsyn match    cCustomFunc     \"\\w\\+\\s*(\\@=\" contains=cCustomParen\nsyn match    cCustomScope    \"::\"\nsyn match    cCustomClass    \"\\w\\+\\s*::\" contains=cCustomScope\n\nhi def link cCustomFunc  Function\n\n\" Uncomment this to also highlight 'class::' and 'namespace::'\n\"hi def link cCustomClass Function\n\n\" Alternative syntax that is used in:\n\"  http://www.vim.org/scripts/script.php?script_id=3064\n\"syn match cUserFunction \"\\<\\h\\w*\\>\\(\\s\\|\\n\\)*(\"me=e-1 contains=cType,cDelimiter,cDefine\n\"hi def link cCustomFunc  Function\n\n\" -----------------------------------------------------------------------------\n\"  Standard library types and functions.\n\"\n\" Mainly based on the excellent STL Syntax vim script by \n\" Mizuchi <ytj000@gmail.com>\n\"   http://www.vim.org/scripts/script.php?script_id=4293\n\" which in turn is based on the scripts\n\"   http://www.vim.org/scripts/script.php?script_id=2224\n\"   http://www.vim.org/scripts/script.php?script_id=1640\n\" -----------------------------------------------------------------------------\nsyntax keyword cppSTLconstant badbit\nsyntax keyword cppSTLconstant digits\nsyntax keyword cppSTLconstant digits10\nsyntax keyword cppSTLconstant eofbit\nsyntax keyword cppSTLconstant failbit\nsyntax keyword cppSTLconstant goodbit\nsyntax keyword cppSTLconstant has_denorm\nsyntax keyword cppSTLconstant has_denorm_loss\nsyntax keyword cppSTLconstant has_infinity\nsyntax keyword cppSTLconstant has_quiet_NaN\nsyntax keyword cppSTLconstant has_signaling_NaN\nsyntax keyword cppSTLconstant is_bounded\nsyntax keyword cppSTLconstant is_exact\nsyntax keyword cppSTLconstant is_iec559\nsyntax keyword cppSTLconstant is_integer\nsyntax keyword cppSTLconstant is_modulo\nsyntax keyword cppSTLconstant is_signed\nsyntax keyword cppSTLconstant is_specialized\nsyntax keyword cppSTLconstant max_digits10\nsyntax keyword cppSTLconstant max_exponent\nsyntax keyword cppSTLconstant max_exponent10\nsyntax keyword cppSTLconstant min_exponent\nsyntax keyword cppSTLconstant min_exponent10\nsyntax keyword cppSTLconstant nothrow\nsyntax keyword cppSTLconstant npos\nsyntax keyword cppSTLconstant radix\nsyntax keyword cppSTLconstant round_style\nsyntax keyword cppSTLconstant tinyness_before\nsyntax keyword cppSTLconstant traps\nsyntax keyword cppSTLexception bad_alloc\nsyntax keyword cppSTLexception bad_array_new_length\nsyntax keyword cppSTLexception bad_exception\nsyntax keyword cppSTLexception bad_typeid bad_cast\nsyntax keyword cppSTLexception domain_error\nsyntax keyword cppSTLexception exception\nsyntax keyword cppSTLexception invalid_argument\nsyntax keyword cppSTLexception length_error\nsyntax keyword cppSTLexception logic_error\nsyntax keyword cppSTLexception out_of_range\nsyntax keyword cppSTLexception overflow_error\nsyntax keyword cppSTLexception range_error\nsyntax keyword cppSTLexception runtime_error\nsyntax keyword cppSTLexception underflow_error\nsyntax keyword cppSTLfunction abort\nsyntax keyword cppSTLfunction abs\nsyntax keyword cppSTLfunction accumulate\nsyntax keyword cppSTLfunction acos\nsyntax keyword cppSTLfunction adjacent_difference\nsyntax keyword cppSTLfunction adjacent_find\nsyntax keyword cppSTLfunction adjacent_find_if\nsyntax keyword cppSTLfunction advance\nsyntax keyword cppSTLfunctional binary_function\nsyntax keyword cppSTLfunctional binary_negate\nsyntax keyword cppSTLfunctional bit_and\nsyntax keyword cppSTLfunctional bit_not\nsyntax keyword cppSTLfunctional bit_or\nsyntax keyword cppSTLfunctional divides\nsyntax keyword cppSTLfunctional equal_to\nsyntax keyword cppSTLfunctional greater\nsyntax keyword cppSTLfunctional greater_equal\nsyntax keyword cppSTLfunctional less\nsyntax keyword cppSTLfunctional less_equal\nsyntax keyword cppSTLfunctional logical_and\nsyntax keyword cppSTLfunctional logical_not\nsyntax keyword cppSTLfunctional logical_or\nsyntax keyword cppSTLfunctional minus\nsyntax keyword cppSTLfunctional modulus\nsyntax keyword cppSTLfunctional multiplies\nsyntax keyword cppSTLfunctional negate\nsyntax keyword cppSTLfunctional not_equal_to\nsyntax keyword cppSTLfunctional plus\nsyntax keyword cppSTLfunctional unary_function\nsyntax keyword cppSTLfunctional unary_negate\n\"syntax keyword cppSTLfunction any\nsyntax keyword cppSTLfunction append\nsyntax keyword cppSTLfunction arg\nsyntax keyword cppSTLfunction asctime\nsyntax keyword cppSTLfunction asin\nsyntax keyword cppSTLfunction assert\nsyntax keyword cppSTLfunction assign\nsyntax keyword cppSTLfunction at\nsyntax keyword cppSTLfunction atan\nsyntax keyword cppSTLfunction atan2\nsyntax keyword cppSTLfunction atexit\nsyntax keyword cppSTLfunction atof\nsyntax keyword cppSTLfunction atoi\nsyntax keyword cppSTLfunction atol\nsyntax keyword cppSTLfunction atoll\nsyntax keyword cppSTLfunction back\nsyntax keyword cppSTLfunction back_inserter\nsyntax keyword cppSTLfunction bad\nsyntax keyword cppSTLfunction beg\nsyntax keyword cppSTLfunction begin\nsyntax keyword cppSTLfunction binary_compose\nsyntax keyword cppSTLfunction binary_negate\nsyntax keyword cppSTLfunction binary_search\nsyntax keyword cppSTLfunction bind1st\nsyntax keyword cppSTLfunction bind2nd\nsyntax keyword cppSTLfunction binder1st\nsyntax keyword cppSTLfunction binder2nd\nsyntax keyword cppSTLfunction bsearch\nsyntax keyword cppSTLfunction calloc\nsyntax keyword cppSTLfunction capacity\nsyntax keyword cppSTLfunction ceil\nsyntax keyword cppSTLfunction cerr\nsyntax keyword cppSTLfunction cin\nsyntax keyword cppSTLfunction clear\nsyntax keyword cppSTLfunction clearerr\nsyntax keyword cppSTLfunction clock\nsyntax keyword cppSTLfunction clog\nsyntax keyword cppSTLfunction close\nsyntax keyword cppSTLfunction compare\nsyntax keyword cppSTLfunction conj\nsyntax keyword cppSTLfunction construct\nsyntax keyword cppSTLfunction copy\nsyntax keyword cppSTLfunction copy_backward\nsyntax keyword cppSTLfunction cos\nsyntax keyword cppSTLfunction cosh\nsyntax keyword cppSTLfunction count\nsyntax keyword cppSTLfunction count_if\nsyntax keyword cppSTLfunction cout\nsyntax keyword cppSTLfunction c_str\nsyntax keyword cppSTLfunction ctime\nsyntax keyword cppSTLfunction data\nsyntax keyword cppSTLfunction denorm_min\nsyntax keyword cppSTLfunction destroy\nsyntax keyword cppSTLfunction difftime\nsyntax keyword cppSTLfunction distance\nsyntax keyword cppSTLfunction div\nsyntax keyword cppSTLfunction empty\nsyntax keyword cppSTLfunction end\nsyntax keyword cppSTLfunction eof\nsyntax keyword cppSTLfunction epsilon\nsyntax keyword cppSTLfunction equal\nsyntax keyword cppSTLfunction equal_range\nsyntax keyword cppSTLfunction erase\nsyntax keyword cppSTLfunction exit\nsyntax keyword cppSTLfunction exp\nsyntax keyword cppSTLfunction fabs\nsyntax keyword cppSTLfunction fail\nsyntax keyword cppSTLfunction failure\nsyntax keyword cppSTLfunction fclose\nsyntax keyword cppSTLfunction feof\nsyntax keyword cppSTLfunction ferror\nsyntax keyword cppSTLfunction fflush\nsyntax keyword cppSTLfunction fgetc\nsyntax keyword cppSTLfunction fgetpos\nsyntax keyword cppSTLfunction fgets\nsyntax keyword cppSTLfunction fill\nsyntax keyword cppSTLfunction fill_n\nsyntax keyword cppSTLfunction find\nsyntax keyword cppSTLfunction find_end\nsyntax keyword cppSTLfunction find_first_not_of\nsyntax keyword cppSTLfunction find_first_of\nsyntax keyword cppSTLfunction find_if\nsyntax keyword cppSTLfunction find_last_not_of\nsyntax keyword cppSTLfunction find_last_of\nsyntax keyword cppSTLfunction first\nsyntax keyword cppSTLfunction flags\nsyntax keyword cppSTLfunction flip\nsyntax keyword cppSTLfunction floor\nsyntax keyword cppSTLfunction flush\nsyntax keyword cppSTLfunction fmod\nsyntax keyword cppSTLfunction fopen\nsyntax keyword cppSTLfunction for_each\nsyntax keyword cppSTLfunction fprintf\nsyntax keyword cppSTLfunction fputc\nsyntax keyword cppSTLfunction fputs\nsyntax keyword cppSTLfunction fread\nsyntax keyword cppSTLfunction free\nsyntax keyword cppSTLfunction freopen\nsyntax keyword cppSTLfunction frexp\nsyntax keyword cppSTLfunction front\nsyntax keyword cppSTLfunction fscanf\nsyntax keyword cppSTLfunction fseek\nsyntax keyword cppSTLfunction fsetpos\nsyntax keyword cppSTLfunction ftell\nsyntax keyword cppSTLfunction fwide\nsyntax keyword cppSTLfunction fwprintf\nsyntax keyword cppSTLfunction fwrite\nsyntax keyword cppSTLfunction fwscanf\nsyntax keyword cppSTLfunction gcount\nsyntax keyword cppSTLfunction generate\nsyntax keyword cppSTLfunction generate_n\nsyntax keyword cppSTLfunction get\nsyntax keyword cppSTLfunction get_allocator\nsyntax keyword cppSTLfunction getc\nsyntax keyword cppSTLfunction getchar\nsyntax keyword cppSTLfunction getenv\nsyntax keyword cppSTLfunction getline\nsyntax keyword cppSTLfunction gets\nsyntax keyword cppSTLfunction get_temporary_buffer\nsyntax keyword cppSTLfunction gmtime\nsyntax keyword cppSTLfunction good\nsyntax keyword cppSTLfunction ignore\nsyntax keyword cppSTLfunction imag\nsyntax keyword cppSTLfunction in\nsyntax keyword cppSTLfunction includes\nsyntax keyword cppSTLfunction infinity\nsyntax keyword cppSTLfunction inner_product\nsyntax keyword cppSTLfunction inplace_merge\nsyntax keyword cppSTLfunction insert\nsyntax keyword cppSTLfunction inserter\nsyntax keyword cppSTLfunction ios\nsyntax keyword cppSTLfunction ios_base\nsyntax keyword cppSTLfunction iostate\nsyntax keyword cppSTLfunction iota\nsyntax keyword cppSTLfunction isalnum\nsyntax keyword cppSTLfunction isalpha\nsyntax keyword cppSTLfunction iscntrl\nsyntax keyword cppSTLfunction isdigit\nsyntax keyword cppSTLfunction isgraph\nsyntax keyword cppSTLfunction is_heap\nsyntax keyword cppSTLfunction islower\nsyntax keyword cppSTLfunction is_open\nsyntax keyword cppSTLfunction isprint\nsyntax keyword cppSTLfunction ispunct\nsyntax keyword cppSTLfunction isspace\nsyntax keyword cppSTLfunction isupper\nsyntax keyword cppSTLfunction isxdigit\nsyntax keyword cppSTLfunction iterator_category\nsyntax keyword cppSTLfunction iter_swap\nsyntax keyword cppSTLfunction jmp_buf\nsyntax keyword cppSTLfunction key_comp\nsyntax keyword cppSTLfunction labs\nsyntax keyword cppSTLfunction ldexp\nsyntax keyword cppSTLfunction ldiv\nsyntax keyword cppSTLfunction length\nsyntax keyword cppSTLfunction lexicographical_compare\nsyntax keyword cppSTLfunction lexicographical_compare_3way\nsyntax keyword cppSTLfunction llabs\nsyntax keyword cppSTLfunction lldiv\nsyntax keyword cppSTLfunction localtime\nsyntax keyword cppSTLfunction log\nsyntax keyword cppSTLfunction log10\nsyntax keyword cppSTLfunction longjmp\nsyntax keyword cppSTLfunction lower_bound\nsyntax keyword cppSTLfunction make_heap\nsyntax keyword cppSTLfunction make_pair\nsyntax keyword cppSTLfunction malloc\nsyntax keyword cppSTLfunction max\nsyntax keyword cppSTLfunction max_element\nsyntax keyword cppSTLfunction max_size\nsyntax keyword cppSTLfunction memchr\nsyntax keyword cppSTLfunction memcpy\nsyntax keyword cppSTLfunction mem_fun\nsyntax keyword cppSTLfunction mem_fun_ref\nsyntax keyword cppSTLfunction memmove\nsyntax keyword cppSTLfunction memset\nsyntax keyword cppSTLfunction merge\nsyntax keyword cppSTLfunction min\nsyntax keyword cppSTLfunction min_element\nsyntax keyword cppSTLfunction mismatch\nsyntax keyword cppSTLfunction mktime\nsyntax keyword cppSTLfunction modf\nsyntax keyword cppSTLfunction next_permutation\nsyntax keyword cppSTLfunction none\nsyntax keyword cppSTLfunction norm\nsyntax keyword cppSTLfunction not1\nsyntax keyword cppSTLfunction not2\nsyntax keyword cppSTLfunction nth_element\nsyntax keyword cppSTLfunction numeric_limits\nsyntax keyword cppSTLfunction open\nsyntax keyword cppSTLfunction partial_sort\nsyntax keyword cppSTLfunction partial_sort_copy\nsyntax keyword cppSTLfunction partial_sum\nsyntax keyword cppSTLfunction partition\nsyntax keyword cppSTLfunction peek\nsyntax keyword cppSTLfunction perror\nsyntax keyword cppSTLfunction polar\nsyntax keyword cppSTLfunction pop\nsyntax keyword cppSTLfunction pop_back\nsyntax keyword cppSTLfunction pop_front\nsyntax keyword cppSTLfunction pop_heap\nsyntax keyword cppSTLfunction pow\nsyntax keyword cppSTLfunction power\nsyntax keyword cppSTLfunction precision\nsyntax keyword cppSTLfunction prev_permutation\nsyntax keyword cppSTLfunction printf\nsyntax keyword cppSTLfunction ptr_fun\nsyntax keyword cppSTLfunction push\nsyntax keyword cppSTLfunction push_back\nsyntax keyword cppSTLfunction push_front\nsyntax keyword cppSTLfunction push_heap\nsyntax keyword cppSTLfunction put\nsyntax keyword cppSTLfunction putback\nsyntax keyword cppSTLfunction putc\nsyntax keyword cppSTLfunction putchar\nsyntax keyword cppSTLfunction puts\nsyntax keyword cppSTLfunction qsort\nsyntax keyword cppSTLfunction quiet_NaN\nsyntax keyword cppSTLfunction raise\nsyntax keyword cppSTLfunction rand\nsyntax keyword cppSTLfunction random_sample\nsyntax keyword cppSTLfunction random_sample_n\nsyntax keyword cppSTLfunction random_shuffle\nsyntax keyword cppSTLfunction rbegin\nsyntax keyword cppSTLfunction rdbuf\nsyntax keyword cppSTLfunction rdstate\nsyntax keyword cppSTLfunction read\nsyntax keyword cppSTLfunction real\nsyntax keyword cppSTLfunction realloc\nsyntax keyword cppSTLfunction remove\nsyntax keyword cppSTLfunction remove_copy\nsyntax keyword cppSTLfunction remove_copy_if\nsyntax keyword cppSTLfunction remove_if\nsyntax keyword cppSTLfunction rename\nsyntax keyword cppSTLfunction rend\nsyntax keyword cppSTLfunction replace\nsyntax keyword cppSTLfunction replace_copy\nsyntax keyword cppSTLfunction replace_copy_if\nsyntax keyword cppSTLfunction replace_if\nsyntax keyword cppSTLfunction reserve\nsyntax keyword cppSTLfunction reset\nsyntax keyword cppSTLfunction resize\nsyntax keyword cppSTLfunction return_temporary_buffer\nsyntax keyword cppSTLfunction reverse\nsyntax keyword cppSTLfunction reverse_copy\nsyntax keyword cppSTLfunction rewind\nsyntax keyword cppSTLfunction rfind\nsyntax keyword cppSTLfunction rotate\nsyntax keyword cppSTLfunction rotate_copy\nsyntax keyword cppSTLfunction round_error\nsyntax keyword cppSTLfunction scanf\nsyntax keyword cppSTLfunction search\nsyntax keyword cppSTLfunction search_n\nsyntax keyword cppSTLfunction second\nsyntax keyword cppSTLfunction seekg\nsyntax keyword cppSTLfunction seekp\nsyntax keyword cppSTLfunction setbuf\nsyntax keyword cppSTLfunction set_difference\nsyntax keyword cppSTLfunction setf\nsyntax keyword cppSTLfunction set_intersection\nsyntax keyword cppSTLfunction setjmp\nsyntax keyword cppSTLfunction setlocale\nsyntax keyword cppSTLfunction set_new_handler\nsyntax keyword cppSTLfunction set_symmetric_difference\nsyntax keyword cppSTLfunction set_union\nsyntax keyword cppSTLfunction setvbuf\nsyntax keyword cppSTLfunction signal\nsyntax keyword cppSTLfunction signaling_NaN\nsyntax keyword cppSTLfunction sin\nsyntax keyword cppSTLfunction sinh\nsyntax keyword cppSTLfunction size\nsyntax keyword cppSTLfunction sort\nsyntax keyword cppSTLfunction sort_heap\nsyntax keyword cppSTLfunction splice\nsyntax keyword cppSTLfunction sprintf\nsyntax keyword cppSTLfunction sqrt\nsyntax keyword cppSTLfunction srand\nsyntax keyword cppSTLfunction sscanf\nsyntax keyword cppSTLfunction stable_partition\nsyntax keyword cppSTLfunction stable_sort\nsyntax keyword cppSTLfunction str\nsyntax keyword cppSTLfunction strcat\nsyntax keyword cppSTLfunction strchr\nsyntax keyword cppSTLfunction strcmp\nsyntax keyword cppSTLfunction strcoll\nsyntax keyword cppSTLfunction strcpy\nsyntax keyword cppSTLfunction strcspn\nsyntax keyword cppSTLfunction strerror\nsyntax keyword cppSTLfunction strftime\nsyntax keyword cppSTLfunction string\nsyntax keyword cppSTLfunction strlen\nsyntax keyword cppSTLfunction strncat\nsyntax keyword cppSTLfunction strncmp\nsyntax keyword cppSTLfunction strncpy\nsyntax keyword cppSTLfunction strpbrk\nsyntax keyword cppSTLfunction strrchr\nsyntax keyword cppSTLfunction strspn\nsyntax keyword cppSTLfunction strstr\nsyntax keyword cppSTLfunction strtod\nsyntax keyword cppSTLfunction strtof\nsyntax keyword cppSTLfunction strtold\nsyntax keyword cppSTLfunction strtok\nsyntax keyword cppSTLfunction strtol\nsyntax keyword cppSTLfunction strtoll\nsyntax keyword cppSTLfunction strtoul\nsyntax keyword cppSTLfunction strxfrm\nsyntax keyword cppSTLfunction substr\nsyntax keyword cppSTLfunction swap\nsyntax keyword cppSTLfunction swap_ranges\nsyntax keyword cppSTLfunction swprintf\nsyntax keyword cppSTLfunction swscanf\nsyntax keyword cppSTLfunction sync_with_stdio\nsyntax keyword cppSTLfunction system\nsyntax keyword cppSTLfunction tan\nsyntax keyword cppSTLfunction tanh\nsyntax keyword cppSTLfunction tellg\nsyntax keyword cppSTLfunction tellp\nsyntax keyword cppSTLfunction test\nsyntax keyword cppSTLfunction time\nsyntax keyword cppSTLfunction tmpfile\nsyntax keyword cppSTLfunction tmpnam\nsyntax keyword cppSTLfunction tolower\nsyntax keyword cppSTLfunction top\nsyntax keyword cppSTLfunction to_string\nsyntax keyword cppSTLfunction to_ulong\nsyntax keyword cppSTLfunction toupper\nsyntax keyword cppSTLfunction to_wstring\nsyntax keyword cppSTLfunction transform\nsyntax keyword cppSTLfunction unary_compose\nsyntax keyword cppSTLfunction unget\nsyntax keyword cppSTLfunction ungetc\nsyntax keyword cppSTLfunction uninitialized_copy\nsyntax keyword cppSTLfunction uninitialized_copy_n\nsyntax keyword cppSTLfunction uninitialized_fill\nsyntax keyword cppSTLfunction uninitialized_fill_n\nsyntax keyword cppSTLfunction unique\nsyntax keyword cppSTLfunction unique_copy\nsyntax keyword cppSTLfunction unsetf\nsyntax keyword cppSTLfunction upper_bound\nsyntax keyword cppSTLfunction va_arg\nsyntax keyword cppSTLfunction va_arg\nsyntax keyword cppSTLfunction va_copy\nsyntax keyword cppSTLfunction va_end\nsyntax keyword cppSTLfunction value_comp\nsyntax keyword cppSTLfunction va_start\nsyntax keyword cppSTLfunction vfprintf\nsyntax keyword cppSTLfunction vfwprintf\nsyntax keyword cppSTLfunction vprintf\nsyntax keyword cppSTLfunction vsprintf\nsyntax keyword cppSTLfunction vswprintf\nsyntax keyword cppSTLfunction vwprintf\nsyntax keyword cppSTLfunction width\nsyntax keyword cppSTLfunction wprintf\nsyntax keyword cppSTLfunction write\nsyntax keyword cppSTLfunction wscanf\nsyntax keyword cppSTLios boolalpha\nsyntax keyword cppSTLios dec\nsyntax keyword cppSTLios defaultfloat\nsyntax keyword cppSTLios endl\nsyntax keyword cppSTLios ends\nsyntax keyword cppSTLios fixed\nsyntax keyword cppSTLios flush\nsyntax keyword cppSTLios get_money\nsyntax keyword cppSTLios get_time\nsyntax keyword cppSTLios hex\nsyntax keyword cppSTLios hexfloat\nsyntax keyword cppSTLios internal\nsyntax keyword cppSTLios noboolalpha\nsyntax keyword cppSTLios noshowbase\nsyntax keyword cppSTLios noshowpoint\nsyntax keyword cppSTLios noshowpos\nsyntax keyword cppSTLios noskipws\nsyntax keyword cppSTLios nounitbuf\nsyntax keyword cppSTLios nouppercase\nsyntax keyword cppSTLios oct\nsyntax keyword cppSTLios put_money\nsyntax keyword cppSTLios put_time\nsyntax keyword cppSTLios resetiosflags\nsyntax keyword cppSTLios scientific\nsyntax keyword cppSTLios setbase\nsyntax keyword cppSTLios setfill\nsyntax keyword cppSTLios setiosflags\nsyntax keyword cppSTLios setprecision\nsyntax keyword cppSTLios setw\nsyntax keyword cppSTLios showbase\nsyntax keyword cppSTLios showpoint\nsyntax keyword cppSTLios showpos\nsyntax keyword cppSTLios skipws\nsyntax keyword cppSTLios unitbuf\nsyntax keyword cppSTLios uppercase\n\"syntax keyword cppSTLios ws\nsyntax keyword cppSTLiterator back_insert_iterator\nsyntax keyword cppSTLiterator bidirectional_iterator\nsyntax keyword cppSTLiterator const_iterator\nsyntax keyword cppSTLiterator const_reverse_iterator\nsyntax keyword cppSTLiterator forward_iterator\nsyntax keyword cppSTLiterator front_insert_iterator\nsyntax keyword cppSTLiterator input_iterator\nsyntax keyword cppSTLiterator insert_iterator\nsyntax keyword cppSTLiterator istreambuf_iterator\nsyntax keyword cppSTLiterator istream_iterator\nsyntax keyword cppSTLiterator iterator\nsyntax keyword cppSTLiterator ostream_iterator\nsyntax keyword cppSTLiterator output_iterator\nsyntax keyword cppSTLiterator random_access_iterator\nsyntax keyword cppSTLiterator raw_storage_iterator\nsyntax keyword cppSTLiterator reverse_bidirectional_iterator\nsyntax keyword cppSTLiterator reverse_iterator\nsyntax keyword cppSTLiterator_tag bidirectional_iterator_tag\nsyntax keyword cppSTLiterator_tag forward_iterator_tag\nsyntax keyword cppSTLiterator_tag input_iterator_tag\nsyntax keyword cppSTLiterator_tag output_iterator_tag\nsyntax keyword cppSTLiterator_tag random_access_iterator_tag\nsyntax keyword cppSTLnamespace rel_ops\nsyntax keyword cppSTLnamespace std\nsyntax keyword cppSTLtype allocator\nsyntax keyword cppSTLtype auto_ptr\nsyntax keyword cppSTLtype basic_fstream\nsyntax keyword cppSTLtype basic_ifstream\nsyntax keyword cppSTLtype basic_istringstream\nsyntax keyword cppSTLtype basic_ofstream\nsyntax keyword cppSTLtype basic_ostringstream\nsyntax keyword cppSTLtype basic_string\nsyntax keyword cppSTLtype basic_stringstream\nsyntax keyword cppSTLtype binary_compose\nsyntax keyword cppSTLtype binder1st\nsyntax keyword cppSTLtype binder2nd\nsyntax keyword cppSTLtype bitset\nsyntax keyword cppSTLtype char_traits\nsyntax keyword cppSTLtype char_type\nsyntax keyword cppSTLtype const_mem_fun1_t\nsyntax keyword cppSTLtype const_mem_fun_ref1_t\nsyntax keyword cppSTLtype const_mem_fun_ref_t\nsyntax keyword cppSTLtype const_mem_fun_t\nsyntax keyword cppSTLtype const_pointer\nsyntax keyword cppSTLtype const_reference\nsyntax keyword cppSTLtype deque\nsyntax keyword cppSTLtype difference_type\nsyntax keyword cppSTLtype div_t\nsyntax keyword cppSTLtype double_t\nsyntax keyword cppSTLtype filebuf\nsyntax keyword cppSTLtype first_type\nsyntax keyword cppSTLtype float_denorm_style\nsyntax keyword cppSTLtype float_round_style\nsyntax keyword cppSTLtype float_t\nsyntax keyword cppSTLtype fstream\nsyntax keyword cppSTLtype gslice_array\nsyntax keyword cppSTLtype ifstream\nsyntax keyword cppSTLtype imaxdiv_t\nsyntax keyword cppSTLtype indirect_array\nsyntax keyword cppSTLtype int_type\nsyntax keyword cppSTLtype istringstream\nsyntax keyword cppSTLtype iterator_traits\nsyntax keyword cppSTLtype key_compare\nsyntax keyword cppSTLtype key_type\nsyntax keyword cppSTLtype ldiv_t\nsyntax keyword cppSTLtype list\nsyntax keyword cppSTLtype lldiv_t\nsyntax keyword cppSTLtype map\nsyntax keyword cppSTLtype mapped_type\nsyntax keyword cppSTLtype mask_array\nsyntax keyword cppSTLtype mem_fun1_t\nsyntax keyword cppSTLtype mem_fun_ref1_t\nsyntax keyword cppSTLtype mem_fun_ref_t\nsyntax keyword cppSTLtype mem_fun_t\nsyntax keyword cppSTLtype multimap\nsyntax keyword cppSTLtype multiset\nsyntax keyword cppSTLtype nothrow_t\nsyntax keyword cppSTLtype off_type\nsyntax keyword cppSTLtype ofstream\nsyntax keyword cppSTLtype ostream\nsyntax keyword cppSTLtype ostringstream\nsyntax keyword cppSTLtype pair\nsyntax keyword cppSTLtype pointer\nsyntax keyword cppSTLtype pointer_to_binary_function\nsyntax keyword cppSTLtype pointer_to_unary_function\nsyntax keyword cppSTLtype pos_type\nsyntax keyword cppSTLtype priority_queue\nsyntax keyword cppSTLtype queue\nsyntax keyword cppSTLtype reference\nsyntax keyword cppSTLtype second_type\nsyntax keyword cppSTLtype sequence_buffer\nsyntax keyword cppSTLtype set\nsyntax keyword cppSTLtype sig_atomic_t\nsyntax keyword cppSTLtype size_type\nsyntax keyword cppSTLtype slice_array\nsyntax keyword cppSTLtype stack\nsyntax keyword cppSTLtype stream\nsyntax keyword cppSTLtype string\nsyntax keyword cppSTLtype stringbuf\nsyntax keyword cppSTLtype stringstream\nsyntax keyword cppSTLtype temporary_buffer\nsyntax keyword cppSTLtype test_type\nsyntax keyword cppSTLtype time_t\nsyntax keyword cppSTLtype tm\nsyntax keyword cppSTLtype traits_type\nsyntax keyword cppSTLtype type_info\nsyntax keyword cppSTLtype u16string\nsyntax keyword cppSTLtype u32string\nsyntax keyword cppSTLtype unary_compose\nsyntax keyword cppSTLtype unary_negate\nsyntax keyword cppSTLtype valarray\nsyntax keyword cppSTLtype value_compare\nsyntax keyword cppSTLtype value_type\nsyntax keyword cppSTLtype vector\nsyntax keyword cppSTLtype wfstream\nsyntax keyword cppSTLtype wifstream\nsyntax keyword cppSTLtype wistringstream\nsyntax keyword cppSTLtype wofstream\nsyntax keyword cppSTLtype wostringstream\nsyntax keyword cppSTLtype wstring\nsyntax keyword cppSTLtype wstringbuf\nsyntax keyword cppSTLtype wstringstream\n\nsyntax keyword cppSTLfunction mblen\nsyntax keyword cppSTLfunction mbtowc\nsyntax keyword cppSTLfunction wctomb\nsyntax keyword cppSTLfunction mbstowcs\nsyntax keyword cppSTLfunction wcstombs\nsyntax keyword cppSTLfunction mbsinit\nsyntax keyword cppSTLfunction btowc\nsyntax keyword cppSTLfunction wctob\nsyntax keyword cppSTLfunction mbrlen\nsyntax keyword cppSTLfunction mbrtowc\nsyntax keyword cppSTLfunction wcrtomb\nsyntax keyword cppSTLfunction mbsrtowcs\nsyntax keyword cppSTLfunction wcsrtombs\n\nsyntax keyword cppSTLtype mbstate_t\n\nsyntax keyword cppSTLconstant MB_LEN_MAX\nsyntax keyword cppSTLconstant MB_CUR_MAX\nsyntax keyword cppSTLconstant __STDC_UTF_16__\nsyntax keyword cppSTLconstant __STDC_UTF_32__\n\nsyntax keyword cppSTLfunction iswalnum\nsyntax keyword cppSTLfunction iswalpha\nsyntax keyword cppSTLfunction iswlower\nsyntax keyword cppSTLfunction iswupper\nsyntax keyword cppSTLfunction iswdigit\nsyntax keyword cppSTLfunction iswxdigit\nsyntax keyword cppSTLfunction iswcntrl\nsyntax keyword cppSTLfunction iswgraph\nsyntax keyword cppSTLfunction iswspace\nsyntax keyword cppSTLfunction iswprint\nsyntax keyword cppSTLfunction iswpunct\nsyntax keyword cppSTLfunction iswctype\nsyntax keyword cppSTLfunction wctype\n\nsyntax keyword cppSTLfunction towlower\nsyntax keyword cppSTLfunction towupper\nsyntax keyword cppSTLfunction towctrans\nsyntax keyword cppSTLfunction wctrans\n\nsyntax keyword cppSTLfunction wcstol\nsyntax keyword cppSTLfunction wcstoll\nsyntax keyword cppSTLfunction wcstoul\nsyntax keyword cppSTLfunction wcstoull\nsyntax keyword cppSTLfunction wcstof\nsyntax keyword cppSTLfunction wcstod\nsyntax keyword cppSTLfunction wcstold\n\nsyntax keyword cppSTLfunction wcscpy\nsyntax keyword cppSTLfunction wcsncpy\nsyntax keyword cppSTLfunction wcscat\nsyntax keyword cppSTLfunction wcsncat\nsyntax keyword cppSTLfunction wcsxfrm\nsyntax keyword cppSTLfunction wcslen\nsyntax keyword cppSTLfunction wcscmp\nsyntax keyword cppSTLfunction wcsncmp\nsyntax keyword cppSTLfunction wcscoll\nsyntax keyword cppSTLfunction wcschr\nsyntax keyword cppSTLfunction wcsrchr\nsyntax keyword cppSTLfunction wcsspn\nsyntax keyword cppSTLfunction wcscspn\nsyntax keyword cppSTLfunction wcspbrk\nsyntax keyword cppSTLfunction wcsstr\nsyntax keyword cppSTLfunction wcstok\nsyntax keyword cppSTLfunction wmemcpy\nsyntax keyword cppSTLfunction wmemmove\nsyntax keyword cppSTLfunction wmemcmp\nsyntax keyword cppSTLfunction wmemchr\nsyntax keyword cppSTLfunction wmemset\n\nsyntax keyword cppSTLtype wctrans_t\nsyntax keyword cppSTLtype wctype_t\nsyntax keyword cppSTLtype wint_t\n\nsyntax keyword cppSTLconstant WEOF\nsyntax keyword cppSTLconstant WCHAR_MIN\nsyntax keyword cppSTLconstant WCHAR_MAX\n\nif !exists(\"cpp_no_cpp11\")\n    syntax keyword cppSTLtype nullptr_t max_align_t\n    syntax keyword cppSTLtype type_index\n\n    \" type_traits\n    syntax keyword cppSTLtype is_void\n    syntax keyword cppSTLtype is_integral\n    syntax keyword cppSTLtype is_floating_point\n    syntax keyword cppSTLtype is_array\n    syntax keyword cppSTLtype is_enum\n    syntax keyword cppSTLtype is_union\n    syntax keyword cppSTLtype is_class\n    syntax keyword cppSTLtype is_function\n    syntax keyword cppSTLtype is_pointer\n    syntax keyword cppSTLtype is_lvalue_reference\n    syntax keyword cppSTLtype is_rvalue_reference\n    syntax keyword cppSTLtype is_member_object_pointer\n    syntax keyword cppSTLtype is_member_function_pointer\n    syntax keyword cppSTLtype is_fundamental\n    syntax keyword cppSTLtype is_arithmetic\n    syntax keyword cppSTLtype is_scalar\n    syntax keyword cppSTLtype is_object\n    syntax keyword cppSTLtype is_compound\n    syntax keyword cppSTLtype is_reference\n    syntax keyword cppSTLtype is_member_pointer\n    syntax keyword cppSTLtype is_const\n    syntax keyword cppSTLtype is_volatile\n    syntax keyword cppSTLtype is_trivial\n    syntax keyword cppSTLtype is_trivially_copyable\n    syntax keyword cppSTLtype is_standard_layout\n    syntax keyword cppSTLtype is_pod\n    syntax keyword cppSTLtype is_literal_type\n    syntax keyword cppSTLtype is_empty\n    syntax keyword cppSTLtype is_polymorphic\n    syntax keyword cppSTLtype is_abstract\n    syntax keyword cppSTLtype is_signed\n    syntax keyword cppSTLtype is_unsigned\n    syntax keyword cppSTLtype is_constructible\n    syntax keyword cppSTLtype is_trivially_constructible\n    syntax keyword cppSTLtype is_nothrow_constructible\n    syntax keyword cppSTLtype is_default_constructible\n    syntax keyword cppSTLtype is_trivially_default_constructible\n    syntax keyword cppSTLtype is_nothrow_default_constructible\n    syntax keyword cppSTLtype is_copy_constructible\n    syntax keyword cppSTLtype is_trivially_copy_constructible\n    syntax keyword cppSTLtype is_nothrow_copy_constructible\n    syntax keyword cppSTLtype is_move_constructible\n    syntax keyword cppSTLtype is_trivially_move_constructible\n    syntax keyword cppSTLtype is_nothrow_move_constructible\n    syntax keyword cppSTLtype is_assignable\n    syntax keyword cppSTLtype is_trivially_assignable\n    syntax keyword cppSTLtype is_nothrow_assignable\n    syntax keyword cppSTLtype is_copy_assignable\n    syntax keyword cppSTLtype is_trivially_copy_assignable\n    syntax keyword cppSTLtype is_nothrow_copy_assignable\n    syntax keyword cppSTLtype is_move_assignable\n    syntax keyword cppSTLtype is_trivially_move_assignable\n    syntax keyword cppSTLtype is_nothrow_move_assignable\n    syntax keyword cppSTLtype is_destructible\n    syntax keyword cppSTLtype is_trivially_destructible\n    syntax keyword cppSTLtype alignment_of\n    syntax keyword cppSTLtype rank\n    syntax keyword cppSTLtype extent\n    syntax keyword cppSTLtype is_same\n    syntax keyword cppSTLtype is_base_of\n    syntax keyword cppSTLtype is_convertible\n    syntax keyword cppSTLtype remove_cv\n    syntax keyword cppSTLtype remove_const\n    syntax keyword cppSTLtype remove_volatile\n    syntax keyword cppSTLtype add_cv\n    syntax keyword cppSTLtype add_const\n    syntax keyword cppSTLtype add_volatile\n    syntax keyword cppSTLtype remove_reference\n    syntax keyword cppSTLtype add_lvalue_reference\n    syntax keyword cppSTLtype add_rvalue_reference\n    syntax keyword cppSTLtype remove_pointer\n    syntax keyword cppSTLtype add_pointer\n    syntax keyword cppSTLtype make_signed\n    syntax keyword cppSTLtype make_unsigned\n    syntax keyword cppSTLtype remove_extent\n    syntax keyword cppSTLtype remove_all_extents\n    syntax keyword cppSTLtype aligned_storage\n    syntax keyword cppSTLtype aligned_union\n    syntax keyword cppSTLtype decay\n    syntax keyword cppSTLtype enable_if\n    syntax keyword cppSTLtype conditional\n    syntax keyword cppSTLtype common_type\n    syntax keyword cppSTLtype underlying_type\n    syntax keyword cppSTLtype result_of\n    syntax keyword cppSTLtype integral_constant\n    syntax keyword cppSTLtype true_type\n    syntax keyword cppSTLtype false_type\n\n    \" memory\n    syntax keyword cppSTLtype unique_ptr\n    syntax keyword cppSTLtype shared_ptr\n    syntax keyword cppSTLtype weak_ptr\n    syntax keyword cppSTLtype owner_less\n    syntax keyword cppSTLtype enable_shared_from_this\n    syntax keyword cppSTLexception bad_weak_ptr\n    syntax keyword cppSTLtype default_delete\n    syntax keyword cppSTLtype allocator_traits\n    syntax keyword cppSTLtype allocator_type\n    syntax keyword cppSTLtype allocator_arg_t\n    syntax keyword cppSTLconstant allocator_arg\n    syntax keyword cppSTLtype uses_allocator\n    syntax keyword cppSTLtype scoped_allocator_adaptor\n    syntax keyword cppSTLfunction declare_reachable\n    syntax keyword cppSTLfunction undeclare_reachable\n    syntax keyword cppSTLfunction declare_no_pointers\n    syntax keyword cppSTLfunction undeclare_no_pointers\n    syntax keyword cppSTLfunction get_pointer_safety\n    syntax keyword cppSTLtype pointer_safety\n    syntax keyword cppSTLtype pointer_traits\n    syntax keyword cppSTLfunction addressof\n    syntax keyword cppSTLfunction align\n\n    \" function object\n    syntax keyword cppSTLfunction bind\n    syntax keyword cppSTLtype is_bind_expression\n    syntax keyword cppSTLtype is_placeholder\n    syntax keyword cppSTLconstant _1 _2 _3 _4 _5 _6 _7 _8 _9\n    syntax keyword cppSTLfunction mem_fn\n    syntax keyword cppSTLfunctional function\n    syntax keyword cppSTLexception bad_function_call\n    syntax keyword cppSTLtype reference_wrapper\n    syntax keyword cppSTLfunction ref cref\n\n    \" bitset\n    syntax keyword cppSTLfunction all\n    syntax keyword cppSTLfunction to_ullong\n\n    \" iterator\n    syntax keyword cppSTLiterator move_iterator\n    syntax keyword cppSTLfunction make_move_iterator\n    syntax keyword cppSTLfunction next prev\n\n    \" program support utilities\n    syntax keyword cppSTLfunction quick_exit\n    syntax keyword cppSTLfunction _Exit\n    syntax keyword cppSTLfunction at_quick_exit\n\n    \" date and time\n    syntax keyword cppSTLnamespace chrono\n    syntax keyword cppSTLtype duration\n    syntax keyword cppSTLtype system_clock\n    syntax keyword cppSTLtype steady_clock\n    syntax keyword cppSTLtype high_resolution_clock\n    syntax keyword cppSTLtype time_point\n\n    \" tuple\n    syntax keyword cppSTLtype tuple\n    syntax keyword cppSTLfunction make_tuple\n    syntax keyword cppSTLfunction tie\n    syntax keyword cppSTLfunction forward_as_tuple\n    syntax keyword cppSTLfunction tuple_cat\n    syntax keyword cppSTLtype tuple_size tuple_element\n\n    \" Container\n    syntax keyword cppSTLtype array\n    syntax keyword cppSTLtype forward_list\n    syntax keyword cppSTLtype unordered_map\n    syntax keyword cppSTLtype unordered_set\n    syntax keyword cppSTLtype unordered_multimap\n    syntax keyword cppSTLtype unordered_multiset\n    syntax keyword cppSTLtype tuple\n    syntax keyword cppSTLfunction cbegin\n    syntax keyword cppSTLfunction cend\n    syntax keyword cppSTLfunction crbegin\n    syntax keyword cppSTLfunction crend\n    syntax keyword cppSTLfunction shrink_to_fit\n    syntax keyword cppSTLfunction emplace\n    syntax keyword cppSTLfunction emplace_back\n    syntax keyword cppSTLfunction emplace_front\n    syntax keyword cppSTLfunction emplace_hint\n\n    \"forward_list\n    syntax keyword cppSTLfunction before_begin\n    syntax keyword cppSTLfunction cbefore_begin\n    syntax keyword cppSTLfunction insert_after\n    syntax keyword cppSTLfunction emplace_after\n    syntax keyword cppSTLfunction erase_after\n    syntax keyword cppSTLfunction splice_after\n\n    \" unordered\n    syntax keyword cppSTLtype hash\n    syntax keyword cppSTLtype hasher\n    syntax keyword cppSTLtype key_equal\n    syntax keyword cppSTLiterator local_iterator\n    syntax keyword cppSTLiterator const_local_iterator\n    syntax keyword cppSTLfunction bucket_count\n    syntax keyword cppSTLfunction max_bucket_count\n    syntax keyword cppSTLfunction bucket_size\n    syntax keyword cppSTLfunction bucket\n    syntax keyword cppSTLfunction load_factor\n    syntax keyword cppSTLfunction max_load_factor\n    syntax keyword cppSTLfunction rehash\n    syntax keyword cppSTLfunction reserve\n    syntax keyword cppSTLfunction hash_function\n    syntax keyword cppSTLfunction key_eq\n\n    \" algorithm\n    syntax keyword cppSTLfunction all_of any_of none_of\n    syntax keyword cppSTLfunction find_if_not\n    syntax keyword cppSTLfunction copy_if\n    syntax keyword cppSTLfunction copy_n\n    syntax keyword cppSTLfunction move\n    syntax keyword cppSTLfunction move_backward\n    syntax keyword cppSTLfunction shuffle\n    syntax keyword cppSTLfunction is_partitioned\n    syntax keyword cppSTLfunction partition_copy\n    syntax keyword cppSTLfunction partition_point\n    syntax keyword cppSTLfunction is_sorted\n    syntax keyword cppSTLfunction is_sorted_until\n    syntax keyword cppSTLfunction is_heap_until\n    syntax keyword cppSTLfunction minmax\n    syntax keyword cppSTLfunction minmax_element\n    syntax keyword cppSTLfunction is_permutation\n    syntax keyword cppSTLfunction itoa\n\n    \" numerics\n    syntax keyword cppSTLfunction imaxabs\n    syntax keyword cppSTLfunction imaxdiv\n    syntax keyword cppSTLfunction remainder\n    syntax keyword cppSTLfunction remquo\n    syntax keyword cppSTLfunction fma\n    syntax keyword cppSTLfunction fmax\n    syntax keyword cppSTLfunction fmin\n    syntax keyword cppSTLfunction fdim\n    syntax keyword cppSTLfunction nan\n    syntax keyword cppSTLfunction nanf\n    syntax keyword cppSTLfunction nanl\n    syntax keyword cppSTLfunction exp2\n    syntax keyword cppSTLfunction expm1\n    syntax keyword cppSTLfunction log1p\n    syntax keyword cppSTLfunction log2\n    syntax keyword cppSTLfunction cbrt\n    syntax keyword cppSTLfunction hypot\n    syntax keyword cppSTLfunction asinh\n    syntax keyword cppSTLfunction acosh\n    syntax keyword cppSTLfunction atanh\n    syntax keyword cppSTLfunction erf\n    syntax keyword cppSTLfunction erfc\n    syntax keyword cppSTLfunction lgamma\n    syntax keyword cppSTLfunction tgamma\n    syntax keyword cppSTLfunction trunc\n    syntax keyword cppSTLfunction round\n    syntax keyword cppSTLfunction lround\n    syntax keyword cppSTLfunction llround\n    syntax keyword cppSTLfunction nearbyint\n    syntax keyword cppSTLfunction rint\n    syntax keyword cppSTLfunction lrint\n    syntax keyword cppSTLfunction llrint\n    syntax keyword cppSTLfunction scalbn\n    syntax keyword cppSTLfunction scalbln\n    syntax keyword cppSTLfunction ilogb\n    syntax keyword cppSTLfunction logb\n    syntax keyword cppSTLfunction nextafter\n    syntax keyword cppSTLfunction nexttoward\n    syntax keyword cppSTLfunction copysign\n    syntax keyword cppSTLfunction fpclassify\n    syntax keyword cppSTLfunction isfinite\n    syntax keyword cppSTLfunction isinf\n    syntax keyword cppSTLfunction isnan\n    syntax keyword cppSTLfunction isnormal\n    syntax keyword cppSTLfunction signbit\n    syntax keyword cppSTLconstant HUGE_VALF\n    syntax keyword cppSTLconstant HUGE_VALL\n    syntax keyword cppSTLconstant INFINITY\n    syntax keyword cppSTLconstant NAN\n    syntax keyword cppSTLconstant math_errhandling\n    syntax keyword cppSTLconstant MATH_ERRNO\n    syntax keyword cppSTLconstant MATH_ERREXCEPT\n    syntax keyword cppSTLconstant FP_NORMAL\n    syntax keyword cppSTLconstant FP_SUBNORMAL\n    syntax keyword cppSTLconstant FP_ZERO\n    syntax keyword cppSTLconstant FP_INFINITY\n    syntax keyword cppSTLconstant FP_NAN\n    syntax keyword cppSTLconstant FLT_EVAL_METHOD\n\n    \" complex\n    syntax keyword cppSTLfunction proj\n\n    \" random\n    syntax keyword cppSTLtype linear_congruential_engine\n    syntax keyword cppSTLtype mersenne_twister_engine\n    syntax keyword cppSTLtype subtract_with_carry_engine\n    syntax keyword cppSTLtype discard_block_engine\n    syntax keyword cppSTLtype independent_bits_engine\n    syntax keyword cppSTLtype shuffle_order_engine\n    syntax keyword cppSTLtype random_device\n    syntax keyword cppSTLtype default_random_engine\n    syntax keyword cppSTLtype minstd_rand0\n    syntax keyword cppSTLtype minstd_rand\n    syntax keyword cppSTLtype mt19937\n    syntax keyword cppSTLtype mt19937_64\n    syntax keyword cppSTLtype ranlux24_base\n    syntax keyword cppSTLtype ranlux48_base\n    syntax keyword cppSTLtype ranlux24\n    syntax keyword cppSTLtype ranlux48\n    syntax keyword cppSTLtype knuth_b\n    syntax keyword cppSTLfunction generate_canonical\n    syntax keyword cppSTLtype uniform_int_distribution\n    syntax keyword cppSTLtype uniform_real_distribution\n    syntax keyword cppSTLtype bernoulli_distribution\n    syntax keyword cppSTLtype binomial_distribution\n    syntax keyword cppSTLtype negative_binomial_distribution\n    syntax keyword cppSTLtype geometric_distribution\n    syntax keyword cppSTLtype poisson_distribution\n    syntax keyword cppSTLtype exponential_distribution\n    syntax keyword cppSTLtype gamma_distribution\n    syntax keyword cppSTLtype weibull_distribution\n    syntax keyword cppSTLtype extreme_value_distribution\n    syntax keyword cppSTLtype normal_distribution\n    syntax keyword cppSTLtype lognormal_distribution\n    syntax keyword cppSTLtype chi_squared_distribution\n    syntax keyword cppSTLtype cauchy_distribution\n    syntax keyword cppSTLtype fisher_f_distribution\n    syntax keyword cppSTLtype student_t_distribution\n    syntax keyword cppSTLtype discrete_distribution\n    syntax keyword cppSTLtype piecewise_constant_distribution\n    syntax keyword cppSTLtype piecewise_linear_distribution\n    syntax keyword cppSTLtype seed_seq\n\n    \" io\n    syntax keyword cppSTLfunction iostream_category\n    syntax keyword cppSTLenum io_errc\n    syntax keyword cppSTLfunction vscanf vfscanf vsscanf\n    syntax keyword cppSTLfunction snprintf vsnprintf\n    syntax keyword cppSTLfunction vwscanf vfwscanf vswscanf\n\n    \" locale\n    syntax keyword cppSTLfunction isblank\n    syntax keyword cppSTLfunction iswblank\n    syntax keyword cppSTLtype wstring_convert\n    syntax keyword cppSTLtype wbuffer_convert\n    syntax keyword cppSTLtype codecvt_utf8\n    syntax keyword cppSTLtype codecvt_utf16\n    syntax keyword cppSTLtype codecvt_utf8_utf16\n    syntax keyword cppSTLtype codecvt_mode\n\n    \" regex\n    syntax keyword cppSTLtype basic_regex\n    syntax keyword cppSTLtype sub_match\n    syntax keyword cppSTLtype match_results\n    syntax keyword cppSTLtype regex_traits\n    syntax keyword cppSTLtype regex_match regex_search regex_replace\n    syntax keyword cppSTLiterator regex_iterator\n    syntax keyword cppSTLiterator regex_token_iterator\n    syntax keyword cppSTLexception regex_error\n    syntax keyword cppSTLtype syntax_option_type match_flag_type error_type\n\n    \" atomic\n    syntax keyword cppSTLtype atomic\n    syntax keyword cppSTLfunction atomic_is_lock_free\n    syntax keyword cppSTLfunction atomic_store\n    syntax keyword cppSTLfunction atomic_store_explicit\n    syntax keyword cppSTLfunction atomic_load\n    syntax keyword cppSTLfunction atomic_load_explicit\n    syntax keyword cppSTLfunction atomic_exchange\n    syntax keyword cppSTLfunction atomic_exchange_explicit\n    syntax keyword cppSTLfunction atomic_compare_exchange_weak\n    syntax keyword cppSTLfunction atomic_compare_exchange_weak_explicit\n    syntax keyword cppSTLfunction atomic_compare_exchange_strong\n    syntax keyword cppSTLfunction atomic_compare_exchange_strong_explicit\n    syntax keyword cppSTLfunction atomic_fetch_add\n    syntax keyword cppSTLfunction atomic_fetch_add_explicit\n    syntax keyword cppSTLfunction atomic_fetch_sub\n    syntax keyword cppSTLfunction atomic_fetch_sub_explicit\n    syntax keyword cppSTLfunction atomic_fetch_and\n    syntax keyword cppSTLfunction atomic_fetch_and_explicit\n    syntax keyword cppSTLfunction atomic_fetch_or\n    syntax keyword cppSTLfunction atomic_fetch_or_explicit\n    syntax keyword cppSTLfunction atomic_fetch_xor\n    syntax keyword cppSTLfunction atomic_fetch_xor_explicit\n\n    syntax keyword cppSTLtype atomic_flag\n    syntax keyword cppSTLfunction atomic_flag_test_and_set\n    syntax keyword cppSTLfunction atomic_flag_test_and_set_explicit\n    syntax keyword cppSTLfunction atomic_flag_clear\n    syntax keyword cppSTLfunction atomic_flag_clear_explicit\n\n    syntax keyword cppSTLtype atomic_bool\n    syntax keyword cppSTLtype atomic_char\n    syntax keyword cppSTLtype atomic_schar\n    syntax keyword cppSTLtype atomic_uchar\n    syntax keyword cppSTLtype atomic_short\n    syntax keyword cppSTLtype atomic_ushort\n    syntax keyword cppSTLtype atomic_int\n    syntax keyword cppSTLtype atomic_uint\n    syntax keyword cppSTLtype atomic_long\n    syntax keyword cppSTLtype atomic_ulong\n    syntax keyword cppSTLtype atomic_llong\n    syntax keyword cppSTLtype atomic_ullong\n    syntax keyword cppSTLtype atomic_char16_t\n    syntax keyword cppSTLtype atomic_char32_t\n    syntax keyword cppSTLtype atomic_wchar_t\n    syntax keyword cppSTLtype atomic_int_least8_t\n    syntax keyword cppSTLtype atomic_uint_least8_t\n    syntax keyword cppSTLtype atomic_int_least16_t\n    syntax keyword cppSTLtype atomic_uint_least16_t\n    syntax keyword cppSTLtype atomic_int_least32_t\n    syntax keyword cppSTLtype atomic_uint_least32_t\n    syntax keyword cppSTLtype atomic_int_least64_t\n    syntax keyword cppSTLtype atomic_uint_least64_t\n    syntax keyword cppSTLtype atomic_int_fast8_t\n    syntax keyword cppSTLtype atomic_uint_fast8_t\n    syntax keyword cppSTLtype atomic_int_fast16_t\n    syntax keyword cppSTLtype atomic_uint_fast16_t\n    syntax keyword cppSTLtype atomic_int_fast32_t\n    syntax keyword cppSTLtype atomic_uint_fast32_t\n    syntax keyword cppSTLtype atomic_int_fast64_t\n    syntax keyword cppSTLtype atomic_uint_fast64_t\n    syntax keyword cppSTLtype atomic_intptr_t\n    syntax keyword cppSTLtype atomic_uintptr_t\n    syntax keyword cppSTLtype atomic_size_t\n    syntax keyword cppSTLtype atomic_ptrdiff_t\n    syntax keyword cppSTLtype atomic_intmax_t\n    syntax keyword cppSTLtype atomic_uintmax_t\n\n    syntax keyword cppSTLtype memory_order\n    syntax keyword cppSTLfunction atomic_init\n    syntax keyword cppSTLfunction ATOMIC_VAR_INIT\n    syntax keyword cppSTLconstant ATOMIC_FLAG_INIT\n    syntax keyword cppSTLfunction kill_dependency\n    syntax keyword cppSTLfunction atomic_thread_fence\n    syntax keyword cppSTLfunction atomic_signal_fence\n\n    \" thread\n    syntax keyword cppSTLtype thread\n    syntax keyword cppSTLfunction yield\n    syntax keyword cppSTLfunction get_id\n    syntax keyword cppSTLfunction sleep_for\n    syntax keyword cppSTLfunction sleep_until\n\n    syntax keyword cppSTLfunction joinable\n    syntax keyword cppSTLfunction get_id\n    syntax keyword cppSTLfunction native_handle\n    syntax keyword cppSTLfunction hardware_concurrency\n    syntax keyword cppSTLfunction join\n    syntax keyword cppSTLfunction detach\n\n    syntax keyword cppSTLtype mutex\n    syntax keyword cppSTLtype timed_mutex\n    syntax keyword cppSTLtype recursive_mutex\n    syntax keyword cppSTLtype recursive_timed_mutex\n    syntax keyword cppSTLtype lock_guard\n    syntax keyword cppSTLtype unique_lock\n    syntax keyword cppSTLtype defer_lock_t\n    syntax keyword cppSTLtype try_to_lock_t\n    syntax keyword cppSTLtype adopt_lock_t\n    syntax keyword cppSTLconstant defer_lock try_to_lock adopt_lock\n    syntax keyword cppSTLfunction try_lock lock\n    syntax keyword cppSTLfunction call_once\n    syntax keyword cppSTLtype once_flag\n    syntax keyword cppSTLtype condition_variable\n    syntax keyword cppSTLtype condition_variable_any\n    syntax keyword cppSTLfunction notify_all_at_thread_exit\n    syntax keyword cppSTLenum cv_status\n\n    syntax keyword cppSTLtype promise\n    syntax keyword cppSTLtype packaged_task\n    syntax keyword cppSTLtype future\n    syntax keyword cppSTLtype shared_future\n\n    syntax keyword cppSTLfunction async\n    syntax keyword cppSTLenum launch\n\n    syntax keyword cppSTLenum future_status\n    syntax keyword cppSTLenum future_errc\n    syntax keyword cppSTLtype future_error\n    syntax keyword cppSTLfunction future_category\n\n    \" string\n    syntax keyword cppSTLfunction stoi\n    syntax keyword cppSTLfunction stol\n    syntax keyword cppSTLfunction stoll\n    syntax keyword cppSTLfunction stoul\n    syntax keyword cppSTLfunction stoull\n    syntax keyword cppSTLfunction stof\n    syntax keyword cppSTLfunction stod\n    syntax keyword cppSTLfunction stold\n\n    \" ratio\n    syntax keyword cppSTLtype ratio\n    syntax keyword cppSTLtype yocto\n    syntax keyword cppSTLtype zepto\n    syntax keyword cppSTLtype atto\n    syntax keyword cppSTLtype femto\n    syntax keyword cppSTLtype pico\n    syntax keyword cppSTLtype nano\n    syntax keyword cppSTLtype micro\n    syntax keyword cppSTLtype milli\n    syntax keyword cppSTLtype centi\n    syntax keyword cppSTLtype deci\n    syntax keyword cppSTLtype deca\n    syntax keyword cppSTLtype hecto\n    syntax keyword cppSTLtype kilo\n    syntax keyword cppSTLtype mega\n    syntax keyword cppSTLtype giga\n    syntax keyword cppSTLtype tera\n    syntax keyword cppSTLtype peta\n    syntax keyword cppSTLtype exa\n    syntax keyword cppSTLtype zetta\n    syntax keyword cppSTLtype yotta\n    syntax keyword cppSTLtype ratio_add\n    syntax keyword cppSTLtype ratio_subtract\n    syntax keyword cppSTLtype ratio_multiply\n    syntax keyword cppSTLtype ratio_divide\n    syntax keyword cppSTLtype ratio_equal\n    syntax keyword cppSTLtype ratio_not_equal\n    syntax keyword cppSTLtype ratio_less\n    syntax keyword cppSTLtype ratio_less_equal\n    syntax keyword cppSTLtype ratio_greater\n    syntax keyword cppSTLtype ratio_greater_equal\n\n    \"limits\n    syntax keyword cppSTLfunction lowest\n\n    \"cuchar\n    syntax keyword cppSTLfunction mbrtoc16\n    syntax keyword cppSTLfunction c16rtomb\n    syntax keyword cppSTLfunction mbrtoc32\n    syntax keyword cppSTLfunction c32rtomb\n\n    \"cinttypes\n    syntax keyword cppSTLfunction strtoimax\n    syntax keyword cppSTLfunction strtoumax\n    syntax keyword cppSTLfunction wcstoimax\n    syntax keyword cppSTLfunction wcstoumax\n\nendif \" C++11\n\nif !exists(\"cpp_no_cpp14\")\n\n    \"optional\n    syntax keyword cppSTLtype optional\n    \"syntax keyword cppSTLfunction value\n    syntax keyword cppSTLfunction value_or\n    syntax keyword cppSTLfunction make_optional\n\n    \"dynarray\n    syntax keyword cppSTLtype dynarray\n\n    \"thread\n    syntax keyword cppSTLtype shared_mutex\n    syntax keyword cppSTLtype shared_lock\nendif \" C++14\n\n\" Default highlighting\nif version >= 508 || !exists(\"did_cpp_syntax_inits\")\n  if version < 508\n    let did_cpp_syntax_inits = 1\n    command -nargs=+ HiLink hi link <args>\n  else\n    command -nargs=+ HiLink hi def link <args>\n  endif\n  HiLink cppSTLfunction     Function\n  HiLink cppSTLfunctional   Type\n  HiLink cppSTLconstant     Constant\n  HiLink cppSTLnamespace    Constant\n  HiLink cppSTLtype         Type\n  HiLink cppSTLexception    Type\n  HiLink cppSTLiterator     Type\n  HiLink cppSTLiterator_tag Type\n  HiLink cppSTLenum         Type\n  HiLink cppSTLios          Function\n  delcommand HiLink\nendif\n\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/syntax/css/vim-coloresque.vim",
    "content": "\" Name:         Coloresque\n\" Language:     color preview in vim\n\" Author:       Gorodinskii Konstantin <gor.konstantin@gmail.com>\n\" Licence:      Vim license\n\" Version:      0.9.5\n\" based on\n\" https://github.com/ap/vim-css-color\n\" https://github.com/lilydjwg/colorizer\n\" vim:et:ts=2 sw=2 sts=2\n\nlet s:hex={}\nlet b:matchescache = {}\nlet b:color_pattern = {}\n\nlet w:colorDictRegExp=''\nfor i in range(0, 255)\n  let s:hex[ printf( '%02x', i ) ] = i\nendfor\n\nlet s:black = '#000000'\nlet s:white = '#ffffff'\n\nfunction! s:FGForBG(color)\n  \" pick suitable text color given a background color\n  let color = tolower(a:color)\n  let r = s:hex[color[0:1]]\n  let g = s:hex[color[2:3]]\n  let b = s:hex[color[4:5]]\n  return r*30 + g*59 + b*11 > 12000 ? s:black : s:white\nendfunction\n\nlet s:color_prefix  = 'gui'\nlet s:fg_color_calc = 'let color = \"#\" . toupper(a:color)'\n\nfunction! s:RestoreColors()\n    for part in keys(b:color_pattern)\n\n      \"if b:color_pattern[part]==\"ffffff\"\n        \"echoe part\n      \"endif\n      \n      call s:MatchColorValue(b:color_pattern[part], part)\n      \"echoe color\n      \"echoe b:color_pattern[color]\n      \"let group = 'cssColor' . tolower(strpart(b:color_pattern[part][\"color\"], 1))\n      \"\"exe 'syn match' group '/'.escape(pattern, '/').'/ contained'\n      \"exe 'syn cluster cssColors add='.group\n      \"exe 'hi' group s:color_prefix.'bg='.b:color_pattern[part][\"bg\"] s:color_prefix.'fg='.b:color_pattern[part][\"fg\"]\n      \n      \"if !exists('b:matchescache')\n        \"let b:matchescache={}\n      \"endif\n\n      \"let b:matchescache[part] = matchadd(group, part, -1)\n    endfor\nendfunction\n\nfunction! s:MatchColorValue(color, part)\n  if ! len(a:color) | return | endif\n\n    let group = 'cssColor' . tolower(a:color)\n\n  if !exists('b:color_pattern[a:part]')\n    exe s:fg_color_calc\n    exe 'syn cluster cssColors add='.group\n    exe 'hi' group s:color_prefix.'bg='.color s:color_prefix.'fg='.s:FGForBG(a:color)\n    let b:color_pattern[a:part] = a:color\n  endif\n\n  if !exists('b:matchescache')\n    let b:matchescache = {}\n  elseif !exists('b:matchescache[a:part]')\n    let b:matchescache[a:part] = matchadd(group, a:part, -1)\n  endif\n\n  \"call add(w:matchescache, matchadd(group, a:part, -1))\n\n  return ''\nendfunction\n\nfunction! s:HexForRGBValue(r,g,b)\n  \" Convert 80% -> 204, 100% -> 255, etc.\n  let rgb = map( [a:r,a:g,a:b], 'v:val =~ \"%$\" ? ( 255 * v:val ) / 100 : v:val' )\n  return printf( '%02x%02x%02x', rgb[0], rgb[1], rgb[2] )\nendfunction\n\nfunction! s:HexForHSLValue(h,s,l)\n  \" Convert 80% -> 0.8, 100% -> 1.0, etc.\n  let [s,l] = map( [a:s, a:l], 'v:val =~ \"%$\" ? v:val / 100.0 : str2float(v:val)' )\n  \" algorithm transcoded to vim from http://www.w3.org/TR/css3-color/#hsl-color\n  let hh = ( a:h % 360 ) / 360.0\n  let m2 = l <= 0.5 ? l * ( s + 1 ) : l + s - l * s\n  let m1 = l * 2 - m2\n  let rgb = []\n  for h in [ hh + (1/3.0), hh, hh - (1/3.0) ]\n    let h = h < 0 ? h + 1 : h > 1 ? h - 1 : h\n    let v =\n          \\ h * 6 < 1 ? m1 + ( m2 - m1 ) * h * 6 :\n          \\ h * 2 < 1 ? m2 :\n          \\ h * 3 < 2 ? m1 + ( m2 - m1 ) * ( 2/3.0 - h ) * 6 :\n          \\ m1\n    if v > 1.0 | return '' | endif\n    let rgb += [ float2nr( 255 * v ) ]\n  endfor\n  return printf( '%02x%02x%02x', rgb[0], rgb[1], rgb[2] )\nendfunction\n\nfunction! s:ClearMatches()\n  call clearmatches()\n  \n  if !exists('b:matchescache')\n    return\n  endif\n  \"for i in values(b:matchescache)\n    \"call matchdelete(i)\n  \"endfor\n  unlet b:matchescache\nendfunction\n\nfunction! s:VimCssInit(update)\n\n    if a:update==1\n        call s:ClearMatches()\n    endif\n    :set isk+=-\n    :set isk+=#\n    :set isk+=.\n\n    if len(keys(b:color_pattern))>0\n        call s:RestoreColors()\n        return\n    endif\n\n    \"let b:matchescache = {}\n\n    call s:AdditionalColors()\n\n    \"for i in range(1, line(\"$\"))\n        call s:PreviewCSSColor(join(getline(1,'$'), \"\\n\"))\n    \"endfor\n\nendfunction\n\nfunction! s:AdditionalColors()\n    \"if exists('&b:colorDictRegExp')&&b:colorDictRegExp!=''\n        \"return\n    \"endif\n\n  \" w3c Colors\n  \" plus extra colors\n    let w:colorDict = {\n      \\'black': '#000000',\n      \\'red': '#ff0000',\n      \\'silver': '#c0c0c0',\n      \\'gray': '#808080',\n      \\'white': '#ffffff',\n      \\'maroon': '#800000',\n      \\'purple': '#800080',\n      \\'fuchsia': '#ff00ff',\n      \\'green': '#008000',\n      \\'lime': '#00ff00',\n      \\'olive': '#808000',\n      \\'yellow': '#ffff00',\n      \\'navy': '#000080',\n      \\'blue': '#0000ff',\n      \\'teal': '#008080',\n      \\'aqua': '#00ffff',\n      \\'aliceblue': '#f0f8ff',\n      \\'antiquewhite': '#faebd7',\n      \\'aquamarine': '#7fffd4',\n      \\'azure': '#f0ffff',\n      \\'beige': '#f5f5dc',\n      \\'bisque': '#ffe4c4',\n      \\'blanchedalmond': '#ffebcd',\n      \\'blueviolet': '#8a2be2',\n      \\'brown': '#a52a2a',\n      \\'burlywood': '#deb887',\n      \\'cadetblue': '#5f9ea0',\n      \\'chartreuse': '#7fff00',\n      \\'chocolate': '#d2691e',\n      \\'coral': '#ff7f50',\n      \\'cornflowerblue': '#6495ed',\n      \\'cornsilk': '#fff8dc',\n      \\'crimson': '#dc143c',\n      \\'cyan': '#00ffff',\n      \\'darkblue': '#00008b',\n      \\'darkcyan': '#008b8b',\n      \\'darkgoldenrod': '#b8860b',\n      \\'darkgray': '#a9a9a9',\n      \\'darkgreen': '#006400',\n      \\'darkgrey': '#a9a9a9',\n      \\'darkkhaki': '#bdb76b',\n      \\'darkmagenta': '#8b008b',\n      \\'darkolivegreen': '#556b2f',\n      \\'darkorchid': '#9932cc',\n      \\'darkred': '#8b0000',\n      \\'darksalmon': '#e9967a',\n      \\'darkseagreen': '#8fbc8f',\n      \\'darkslateblue': '#483d8b',\n      \\'darkslategray': '#2f4f4f',\n      \\'darkslategrey': '#2f4f4f',\n      \\'darkturquoise': '#00ced1',\n      \\'darkviolet': '#9400d3',\n      \\'darkorange': '#ff8c00',\n      \\'deeppink': '#ff1493',\n      \\'deepskyblue': '#00bfff',\n      \\'dimgray': '#696969',\n      \\'dimgrey': '#696969',\n      \\'dodgerblue': '#1e90ff',\n      \\'firebrick': '#b22222',\n      \\'floralwhite': '#fffaf0',\n      \\'forestgreen': '#228b22',\n      \\'gainsboro': '#dcdcdc',\n      \\'ghostwhite': '#f8f8ff',\n      \\'gold': '#ffd700',\n      \\'goldenrod': '#daa520',\n      \\'greenyellow': '#adff2f',\n      \\'grey': '#808080',\n      \\'honeydew': '#f0fff0',\n      \\'hotpink': '#ff69b4',\n      \\'indianred': '#cd5c5c',\n      \\'indigo': '#4b0082',\n      \\'ivory': '#fffff0',\n      \\'khaki': '#f0e68c',\n      \\'lavender': '#e6e6fa',\n      \\'lavenderblush': '#fff0f5',\n      \\'lawngreen': '#7cfc00',\n      \\'lemonchiffon': '#fffacd',\n      \\'lightblue': '#add8e6',\n      \\'lightcoral': '#f08080',\n      \\'lightcyan': '#e0ffff',\n      \\'lightgoldenrodyellow': '#fafad2',\n      \\'lightgray': '#d3d3d3',\n      \\'lightgreen': '#90ee90',\n      \\'lightgrey': '#d3d3d3',\n      \\'lightpink': '#ffb6c1',\n      \\'lightsalmon': '#ffa07a',\n      \\'lightseagreen': '#20b2aa',\n      \\'lightskyblue': '#87cefa',\n      \\'lightslategray': '#778899',\n      \\'lightslategrey': '#778899',\n      \\'lightsteelblue': '#b0c4de',\n      \\'lightyellow': '#ffffe0',\n      \\'limegreen': '#32cd32',\n      \\'linen': '#faf0e6',\n      \\'magenta': '#ff00ff',\n      \\'mediumaquamarine': '#66cdaa',\n      \\'mediumblue': '#0000cd',\n      \\'mediumorchid': '#ba55d3',\n      \\'mediumpurple': '#9370d8',\n      \\'mediumseagreen': '#3cb371',\n      \\'mediumslateblue': '#7b68ee',\n      \\'mediumspringgreen': '#00fa9a',\n      \\'mediumturquoise': '#48d1cc',\n      \\'mediumvioletred': '#c71585',\n      \\'midnightblue': '#191970',\n      \\'mintcream': '#f5fffa',\n      \\'mistyrose': '#ffe4e1',\n      \\'moccasin': '#ffe4b5',\n      \\'navajowhite': '#ffdead',\n      \\'oldlace': '#fdf5e6',\n      \\'olivedrab': '#6b8e23',\n      \\'orange': '#ffa500',\n      \\'orangered': '#ff4500',\n      \\'orchid': '#da70d6',\n      \\'palegoldenrod': '#eee8aa',\n      \\'palegreen': '#98fb98',\n      \\'paleturquoise': '#afeeee',\n      \\'palevioletred': '#d87093',\n      \\'papayawhip': '#ffefd5',\n      \\'peachpuff': '#ffdab9',\n      \\'peru': '#cd853f',\n      \\'pink': '#ffc0cb',\n      \\'plum': '#dda0dd',\n      \\'powderblue': '#b0e0e6',\n      \\'rosybrown': '#bc8f8f',\n      \\'royalblue': '#4169e1',\n      \\'saddlebrown': '#8b4513',\n      \\'salmon': '#fa8072',\n      \\'sandybrown': '#f4a460',\n      \\'seagreen': '#2e8b57',\n      \\'seashell': '#fff5ee',\n      \\'sienna': '#a0522d',\n      \\'skyblue': '#87ceeb',\n      \\'slateblue': '#6a5acd',\n      \\'slategray': '#708090',\n      \\'slategrey': '#708090',\n      \\'snow': '#fffafa',\n      \\'springgreen': '#00ff7f',\n      \\'steelblue': '#4682b4',\n      \\'tan': '#d2b48c',\n      \\'thistle': '#d8bfd8',\n      \\'tomato': '#ff6347',\n      \\'turquoise': '#40e0d0',\n      \\'violet': '#ee82ee',\n      \\'wheat': '#f5deb3',\n      \\'whitesmoke': '#f5f5f5',\n      \\'yellowgreen': '#9acd32'\n    \\}\n\n  \"let w:colorDictRegExp = '\\(' \n  for _color in keys(w:colorDict)\n    \"let w:colorDictRegExp.='\\<'._color.'\\>\\|' \n    call s:MatchColorValue(strpart(w:colorDict[tolower(_color)], 1), '\\<\\c'._color.'\\>')\n  endfor\n  \"let w:colorDictRegExp=strpart(w:colorDictRegExp, 0, len(w:colorDictRegExp)-2).'\\)\\c'\nendfunction\n\nfunction! s:ProcessByLine(w)\n  call s:PreviewCSSColor(getline(a:w))\nendfunction\n\nfunction! s:PreviewCSSColor(str)\n  \"if !exists('&w:colorDictRegExp')\n  \"endif\n\n  let line=a:str \"getline(a:w)\n  let colorexps = {\n    \\ 'hex'  : '#[0-9A-Fa-f]\\{3\\}\\>\\|#[0-9A-Fa-f]\\{6\\}\\>',\n    \\ 'rgba' : 'rgba\\?(\\s*\\(\\d\\{1,3}%\\?\\)\\s*,\\s*\\(\\d\\{1,3}%\\?\\)\\s*,\\s*\\(\\d\\{1,3}%\\?\\)\\s*\\%(,[^)]*\\)\\?)',\n    \\ 'hsla' : 'hsla\\?(\\s*\\(\\d\\{1,3}%\\?\\)\\s*,\\s*\\(\\d\\{1,3}%\\?\\)\\s*,\\s*\\(\\d\\{1,3}%\\?\\)\\s*\\%(,[^)]*\\)\\?)'\n    \\ }\n    \"\\ 'color': w:colorDictRegExp\n\n  \"let foundcolor=''\n\n  for exp in keys(colorexps)\n      let place=0\n\n      if exists(\"foundcolor\")\n          unlet foundcolor\n      endif\n\n      while 1\n          if exp=='rgba'||exp=='hsla'\n              let foundcolor = matchlist(a:str, colorexps[exp], place)\n          else\n              let foundcolor = matchstr(a:str, colorexps[exp], place)\n          endif\n\n          let place = matchend(a:str, colorexps[exp], place)\n\n          if empty(foundcolor)\n              break\n          endif\n\n          if exp=='hex'\n              let part = foundcolor.'\\>'\n          else\n              let part = foundcolor[0]\n          endif\n\n          if exp=='hex'\n              if len(foundcolor) == 4\n                  let foundcolor = substitute(foundcolor, '[[:xdigit:]]', '&&', 'g')\n              endif\n              call s:MatchColorValue(strpart(foundcolor, 1), part)\n          elseif exp=='rgba'\n              \"TODO get rid of duplicated variables\n              call s:MatchColorValue(s:HexForRGBValue(foundcolor[1], foundcolor[2], foundcolor[3]), part)\n          elseif exp=='hsla'\n              call s:MatchColorValue(s:HexForHSLValue(foundcolor[1], foundcolor[2], foundcolor[3]), part)\n          endif\n      endwhile\n  endfor\n\nendfunction\n\nif has(\"gui_running\") || &t_Co==256\n  \" HACK modify cssDefinition to add @cssColors to its contains\n  redir => cssdef\n  silent! syn list cssDefinition\n  redir END\n  if len( cssdef )\n    for out in split( cssdef, \"\\n\" )\n      if out !~ '^cssDefinition ' | continue | endif\n      let out = substitute( out, ' \\+xxx \\+', ' ', '' )\n      let out = substitute( out, ' contains=\\zs', '@cssColors,', '' )\n      exe 'syn region' out\n    endfor\n  endif\n\n  if ! has('gui_running')\n\n    let s:black = 0\n    let s:white = 15\n\n    let s:color_prefix  = 'cterm'\n    let s:fg_color_calc = 'let color = s:XTermColorForRGB(a:color)'\n\n    \" preset 16 vt100 colors\n    let s:xtermcolor = [\n      \\ [ 0x00, 0x00, 0x00,  0 ],\n      \\ [ 0xCD, 0x00, 0x00,  1 ],\n      \\ [ 0x00, 0xCD, 0x00,  2 ],\n      \\ [ 0xCD, 0xCD, 0x00,  3 ],\n      \\ [ 0x00, 0x00, 0xEE,  4 ],\n      \\ [ 0xCD, 0x00, 0xCD,  5 ],\n      \\ [ 0x00, 0xCD, 0xCD,  6 ],\n      \\ [ 0xE5, 0xE5, 0xE5,  7 ],\n      \\ [ 0x7F, 0x7F, 0x7F,  8 ],\n      \\ [ 0xFF, 0x00, 0x00,  9 ],\n      \\ [ 0x00, 0xFF, 0x00, 10 ],\n      \\ [ 0xFF, 0xFF, 0x00, 11 ],\n      \\ [ 0x5C, 0x5C, 0xFF, 12 ],\n      \\ [ 0xFF, 0x00, 0xFF, 13 ],\n      \\ [ 0x00, 0xFF, 0xFF, 14 ],\n      \\ [ 0xFF, 0xFF, 0xFF, 15 ]]\n    \" grayscale ramp\n    \" (value is 8+10*lum for lum in 0..23)\n    let s:xtermcolor += [\n      \\ [ 0x08, 0x08, 0x08, 232 ],\n      \\ [ 0x12, 0x12, 0x12, 233 ],\n      \\ [ 0x1C, 0x1C, 0x1C, 234 ],\n      \\ [ 0x26, 0x26, 0x26, 235 ],\n      \\ [ 0x30, 0x30, 0x30, 236 ],\n      \\ [ 0x3A, 0x3A, 0x3A, 237 ],\n      \\ [ 0x44, 0x44, 0x44, 238 ],\n      \\ [ 0x4E, 0x4E, 0x4E, 239 ],\n      \\ [ 0x58, 0x58, 0x58, 240 ],\n      \\ [ 0x62, 0x62, 0x62, 241 ],\n      \\ [ 0x6C, 0x6C, 0x6C, 242 ],\n      \\ [ 0x76, 0x76, 0x76, 243 ],\n      \\ [ 0x80, 0x80, 0x80, 244 ],\n      \\ [ 0x8A, 0x8A, 0x8A, 245 ],\n      \\ [ 0x94, 0x94, 0x94, 246 ],\n      \\ [ 0x9E, 0x9E, 0x9E, 247 ],\n      \\ [ 0xA8, 0xA8, 0xA8, 248 ],\n      \\ [ 0xB2, 0xB2, 0xB2, 249 ],\n      \\ [ 0xBC, 0xBC, 0xBC, 250 ],\n      \\ [ 0xC6, 0xC6, 0xC6, 251 ],\n      \\ [ 0xD0, 0xD0, 0xD0, 252 ],\n      \\ [ 0xDA, 0xDA, 0xDA, 253 ],\n      \\ [ 0xE4, 0xE4, 0xE4, 254 ],\n      \\ [ 0xEE, 0xEE, 0xEE, 255 ]]\n\n    \" the 6 values used in the xterm color cube\n    \"                    0    95   135   175   215   255\n    let s:cubergb = [ 0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF ]\n\n    \" 0..255 mapped to 0..5 based on the color cube values\n    let s:xvquant = repeat([0],48)\n        \\         + repeat([1],68)\n        \\         + repeat([2],40)\n        \\         + repeat([3],40)\n        \\         + repeat([4],40)\n        \\         + repeat([5],20)\n    \" tweak the mapping for the exact matches (0 and 1 already correct)\n    let s:xvquant[s:cubergb[2]] = 2\n    let s:xvquant[s:cubergb[3]] = 3\n    let s:xvquant[s:cubergb[4]] = 4\n    let s:xvquant[s:cubergb[5]] = 5\n\n    \" selects the nearest xterm color for a rgb value like #FF0000\n    function! s:XTermColorForRGB(color)\n      let best_match=0\n      let smallest_distance = 10000000000\n      let color = tolower(a:color)\n      let r = s:hex[color[0:1]]\n      let g = s:hex[color[2:3]]\n      let b = s:hex[color[4:5]]\n\n      let vr = s:xvquant[r]\n      let vg = s:xvquant[g]\n      let vb = s:xvquant[b]\n      let cidx = vr * 36 + vg * 6 + vb + 16\n      let ccol = [ s:cubergb[vr], s:cubergb[vg], s:cubergb[vb], cidx ]\n\n      for [tr,tg,tb,idx] in [ ccol ] + s:xtermcolor\n        let dr = tr - r\n        let dg = tg - g\n        let db = tb - b\n        let distance = dr*dr + dg*dg + db*db\n        if distance == 0 | return idx | endif\n        if distance > smallest_distance | continue | endif\n        let smallest_distance = distance\n        let best_match = idx\n      endfor\n      return best_match\n    endfunction\n  endif\n\n  hi cssColor000000 guibg=#000000 guifg=#FFFFFF ctermbg=16  ctermfg=231 | syn cluster cssColors add=cssColor000000\n  hi cssColor000080 guibg=#000080 guifg=#FFFFFF ctermbg=235 ctermfg=231 | syn cluster cssColors add=cssColor000080\n  hi cssColor00008b guibg=#00008B guifg=#FFFFFF ctermbg=4   ctermfg=231 | syn cluster cssColors add=cssColor00008b\n  hi cssColor0000cd guibg=#0000CD guifg=#FFFFFF ctermbg=4   ctermfg=231 | syn cluster cssColors add=cssColor0000cd\n  hi cssColor0000ff guibg=#0000FF guifg=#FFFFFF ctermbg=4   ctermfg=231 | syn cluster cssColors add=cssColor0000ff\n  hi cssColor006400 guibg=#006400 guifg=#FFFFFF ctermbg=235 ctermfg=231 | syn cluster cssColors add=cssColor006400\n  hi cssColor008000 guibg=#008000 guifg=#FFFFFF ctermbg=2   ctermfg=231 | syn cluster cssColors add=cssColor008000\n  hi cssColor008080 guibg=#008080 guifg=#FFFFFF ctermbg=30  ctermfg=231 | syn cluster cssColors add=cssColor008080\n  hi cssColor008b8b guibg=#008B8B guifg=#FFFFFF ctermbg=30  ctermfg=231 | syn cluster cssColors add=cssColor008b8b\n  hi cssColor00bfff guibg=#00BFFF guifg=#000000 ctermbg=6   ctermfg=16  | syn cluster cssColors add=cssColor00bfff\n  hi cssColor00ced1 guibg=#00CED1 guifg=#000000 ctermbg=6   ctermfg=16  | syn cluster cssColors add=cssColor00ced1\n  hi cssColor00fa9a guibg=#00FA9A guifg=#000000 ctermbg=6   ctermfg=16  | syn cluster cssColors add=cssColor00fa9a\n  hi cssColor00ff00 guibg=#00FF00 guifg=#000000 ctermbg=10  ctermfg=16  | syn cluster cssColors add=cssColor00ff00\n  hi cssColor00ff7f guibg=#00FF7F guifg=#000000 ctermbg=6   ctermfg=16  | syn cluster cssColors add=cssColor00ff7f\n  hi cssColor00ffff guibg=#00FFFF guifg=#000000 ctermbg=51  ctermfg=16  | syn cluster cssColors add=cssColor00ffff\n  hi cssColor191970 guibg=#191970 guifg=#FFFFFF ctermbg=237 ctermfg=231 | syn cluster cssColors add=cssColor191970\n  hi cssColor1e90ff guibg=#1E90FF guifg=#000000 ctermbg=12  ctermfg=16  | syn cluster cssColors add=cssColor1e90ff\n  hi cssColor20b2aa guibg=#20B2AA guifg=#000000 ctermbg=37  ctermfg=16  | syn cluster cssColors add=cssColor20b2aa\n  hi cssColor228b22 guibg=#228B22 guifg=#FFFFFF ctermbg=2   ctermfg=231 | syn cluster cssColors add=cssColor228b22\n  hi cssColor2e8b57 guibg=#2E8B57 guifg=#FFFFFF ctermbg=240 ctermfg=231 | syn cluster cssColors add=cssColor2e8b57\n  hi cssColor2f4f4f guibg=#2F4F4F guifg=#FFFFFF ctermbg=238 ctermfg=231 | syn cluster cssColors add=cssColor2f4f4f\n  hi cssColor32cd32 guibg=#32CD32 guifg=#000000 ctermbg=2   ctermfg=16  | syn cluster cssColors add=cssColor32cd32\n  hi cssColor3cb371 guibg=#3CB371 guifg=#000000 ctermbg=71  ctermfg=16  | syn cluster cssColors add=cssColor3cb371\n  hi cssColor40e0d0 guibg=#40E0D0 guifg=#000000 ctermbg=80  ctermfg=16  | syn cluster cssColors add=cssColor40e0d0\n  hi cssColor4169e1 guibg=#4169E1 guifg=#FFFFFF ctermbg=12  ctermfg=231 | syn cluster cssColors add=cssColor4169e1\n  hi cssColor4682b4 guibg=#4682B4 guifg=#FFFFFF ctermbg=67  ctermfg=231 | syn cluster cssColors add=cssColor4682b4\n  hi cssColor483d8b guibg=#483D8B guifg=#FFFFFF ctermbg=240 ctermfg=231 | syn cluster cssColors add=cssColor483d8b\n  hi cssColor48d1cc guibg=#48D1CC guifg=#000000 ctermbg=80  ctermfg=16  | syn cluster cssColors add=cssColor48d1cc\n  hi cssColor4b0082 guibg=#4B0082 guifg=#FFFFFF ctermbg=238 ctermfg=231 | syn cluster cssColors add=cssColor4b0082\n  hi cssColor556b2f guibg=#556B2F guifg=#FFFFFF ctermbg=239 ctermfg=231 | syn cluster cssColors add=cssColor556b2f\n  hi cssColor5f9ea0 guibg=#5F9EA0 guifg=#000000 ctermbg=73  ctermfg=16  | syn cluster cssColors add=cssColor5f9ea0\n  hi cssColor6495ed guibg=#6495ED guifg=#000000 ctermbg=12  ctermfg=16  | syn cluster cssColors add=cssColor6495ed\n  hi cssColor66cdaa guibg=#66CDAA guifg=#000000 ctermbg=79  ctermfg=16  | syn cluster cssColors add=cssColor66cdaa\n  hi cssColor696969 guibg=#696969 guifg=#FFFFFF ctermbg=242 ctermfg=231 | syn cluster cssColors add=cssColor696969\n  hi cssColor6a5acd guibg=#6A5ACD guifg=#FFFFFF ctermbg=12  ctermfg=231 | syn cluster cssColors add=cssColor6a5acd\n  hi cssColor6b8e23 guibg=#6B8E23 guifg=#FFFFFF ctermbg=241 ctermfg=231 | syn cluster cssColors add=cssColor6b8e23\n  hi cssColor708090 guibg=#708090 guifg=#000000 ctermbg=66  ctermfg=16  | syn cluster cssColors add=cssColor708090\n  hi cssColor778899 guibg=#778899 guifg=#000000 ctermbg=102 ctermfg=16  | syn cluster cssColors add=cssColor778899\n  hi cssColor7b68ee guibg=#7B68EE guifg=#000000 ctermbg=12  ctermfg=16  | syn cluster cssColors add=cssColor7b68ee\n  hi cssColor7cfc00 guibg=#7CFC00 guifg=#000000 ctermbg=3   ctermfg=16  | syn cluster cssColors add=cssColor7cfc00\n  hi cssColor7fff00 guibg=#7FFF00 guifg=#000000 ctermbg=3   ctermfg=16  | syn cluster cssColors add=cssColor7fff00\n  hi cssColor7fffd4 guibg=#7FFFD4 guifg=#000000 ctermbg=122 ctermfg=16  | syn cluster cssColors add=cssColor7fffd4\n  hi cssColor800000 guibg=#800000 guifg=#FFFFFF ctermbg=88  ctermfg=231 | syn cluster cssColors add=cssColor800000\n  hi cssColor800080 guibg=#800080 guifg=#FFFFFF ctermbg=240 ctermfg=231 | syn cluster cssColors add=cssColor800080\n  hi cssColor808000 guibg=#808000 guifg=#FFFFFF ctermbg=240 ctermfg=231 | syn cluster cssColors add=cssColor808000\n  hi cssColor808080 guibg=#808080 guifg=#000000 ctermbg=244 ctermfg=16  | syn cluster cssColors add=cssColor808080\n  hi cssColor87ceeb guibg=#87CEEB guifg=#000000 ctermbg=117 ctermfg=16  | syn cluster cssColors add=cssColor87ceeb\n  hi cssColor87cefa guibg=#87CEFA guifg=#000000 ctermbg=117 ctermfg=16  | syn cluster cssColors add=cssColor87cefa\n  hi cssColor8a2be2 guibg=#8A2BE2 guifg=#FFFFFF ctermbg=12  ctermfg=231 | syn cluster cssColors add=cssColor8a2be2\n  hi cssColor8b0000 guibg=#8B0000 guifg=#FFFFFF ctermbg=88  ctermfg=231 | syn cluster cssColors add=cssColor8b0000\n  hi cssColor8b008b guibg=#8B008B guifg=#FFFFFF ctermbg=5   ctermfg=231 | syn cluster cssColors add=cssColor8b008b\n  hi cssColor8b4513 guibg=#8B4513 guifg=#FFFFFF ctermbg=94  ctermfg=231 | syn cluster cssColors add=cssColor8b4513\n  hi cssColor8fbc8f guibg=#8FBC8F guifg=#000000 ctermbg=108 ctermfg=16  | syn cluster cssColors add=cssColor8fbc8f\n  hi cssColor90ee90 guibg=#90EE90 guifg=#000000 ctermbg=249 ctermfg=16  | syn cluster cssColors add=cssColor90ee90\n  hi cssColor9370d8 guibg=#9370D8 guifg=#000000 ctermbg=12  ctermfg=16  | syn cluster cssColors add=cssColor9370d8\n  hi cssColor9400d3 guibg=#9400D3 guifg=#FFFFFF ctermbg=5   ctermfg=231 | syn cluster cssColors add=cssColor9400d3\n  hi cssColor98fb98 guibg=#98FB98 guifg=#000000 ctermbg=250 ctermfg=16  | syn cluster cssColors add=cssColor98fb98\n  hi cssColor9932cc guibg=#9932CC guifg=#FFFFFF ctermbg=5   ctermfg=231 | syn cluster cssColors add=cssColor9932cc\n  hi cssColor9acd32 guibg=#9ACD32 guifg=#000000 ctermbg=3   ctermfg=16  | syn cluster cssColors add=cssColor9acd32\n  hi cssColora0522d guibg=#A0522D guifg=#FFFFFF ctermbg=130 ctermfg=231 | syn cluster cssColors add=cssColora0522d\n  hi cssColora52a2a guibg=#A52A2A guifg=#FFFFFF ctermbg=124 ctermfg=231 | syn cluster cssColors add=cssColora52a2a\n  hi cssColora9a9a9 guibg=#A9A9A9 guifg=#000000 ctermbg=248 ctermfg=16  | syn cluster cssColors add=cssColora9a9a9\n  hi cssColoradd8e6 guibg=#ADD8E6 guifg=#000000 ctermbg=152 ctermfg=16  | syn cluster cssColors add=cssColoradd8e6\n  hi cssColoradff2f guibg=#ADFF2F guifg=#000000 ctermbg=3   ctermfg=16  | syn cluster cssColors add=cssColoradff2f\n  hi cssColorafeeee guibg=#AFEEEE guifg=#000000 ctermbg=159 ctermfg=16  | syn cluster cssColors add=cssColorafeeee\n  hi cssColorb0c4de guibg=#B0C4DE guifg=#000000 ctermbg=152 ctermfg=16  | syn cluster cssColors add=cssColorb0c4de\n  hi cssColorb0e0e6 guibg=#B0E0E6 guifg=#000000 ctermbg=152 ctermfg=16  | syn cluster cssColors add=cssColorb0e0e6\n  hi cssColorb22222 guibg=#B22222 guifg=#FFFFFF ctermbg=124 ctermfg=231 | syn cluster cssColors add=cssColorb22222\n  hi cssColorb8860b guibg=#B8860B guifg=#000000 ctermbg=3   ctermfg=16  | syn cluster cssColors add=cssColorb8860b\n  hi cssColorba55d3 guibg=#BA55D3 guifg=#000000 ctermbg=5   ctermfg=16  | syn cluster cssColors add=cssColorba55d3\n  hi cssColorbc8f8f guibg=#BC8F8F guifg=#000000 ctermbg=138 ctermfg=16  | syn cluster cssColors add=cssColorbc8f8f\n  hi cssColorbdb76b guibg=#BDB76B guifg=#000000 ctermbg=247 ctermfg=16  | syn cluster cssColors add=cssColorbdb76b\n  hi cssColorc0c0c0 guibg=#C0C0C0 guifg=#000000 ctermbg=250 ctermfg=16  | syn cluster cssColors add=cssColorc0c0c0\n  hi cssColorc71585 guibg=#C71585 guifg=#FFFFFF ctermbg=5   ctermfg=231 | syn cluster cssColors add=cssColorc71585\n  hi cssColorcd5c5c guibg=#CD5C5C guifg=#000000 ctermbg=167 ctermfg=16  | syn cluster cssColors add=cssColorcd5c5c\n  hi cssColorcd853f guibg=#CD853F guifg=#000000 ctermbg=173 ctermfg=16  | syn cluster cssColors add=cssColorcd853f\n  hi cssColord2691e guibg=#D2691E guifg=#000000 ctermbg=166 ctermfg=16  | syn cluster cssColors add=cssColord2691e\n  hi cssColord2b48c guibg=#D2B48C guifg=#000000 ctermbg=180 ctermfg=16  | syn cluster cssColors add=cssColord2b48c\n  hi cssColord3d3d3 guibg=#D3D3D3 guifg=#000000 ctermbg=252 ctermfg=16  | syn cluster cssColors add=cssColord3d3d3\n  hi cssColord87093 guibg=#D87093 guifg=#000000 ctermbg=168 ctermfg=16  | syn cluster cssColors add=cssColord87093\n  hi cssColord8bfd8 guibg=#D8BFD8 guifg=#000000 ctermbg=252 ctermfg=16  | syn cluster cssColors add=cssColord8bfd8\n  hi cssColorda70d6 guibg=#DA70D6 guifg=#000000 ctermbg=249 ctermfg=16  | syn cluster cssColors add=cssColorda70d6\n  hi cssColordaa520 guibg=#DAA520 guifg=#000000 ctermbg=3   ctermfg=16  | syn cluster cssColors add=cssColordaa520\n  hi cssColordc143c guibg=#DC143C guifg=#FFFFFF ctermbg=161 ctermfg=231 | syn cluster cssColors add=cssColordc143c\n  hi cssColordcdcdc guibg=#DCDCDC guifg=#000000 ctermbg=253 ctermfg=16  | syn cluster cssColors add=cssColordcdcdc\n  hi cssColordda0dd guibg=#DDA0DD guifg=#000000 ctermbg=182 ctermfg=16  | syn cluster cssColors add=cssColordda0dd\n  hi cssColordeb887 guibg=#DEB887 guifg=#000000 ctermbg=180 ctermfg=16  | syn cluster cssColors add=cssColordeb887\n  hi cssColore0ffff guibg=#E0FFFF guifg=#000000 ctermbg=195 ctermfg=16  | syn cluster cssColors add=cssColore0ffff\n  hi cssColore6e6fa guibg=#E6E6FA guifg=#000000 ctermbg=255 ctermfg=16  | syn cluster cssColors add=cssColore6e6fa\n  hi cssColore9967a guibg=#E9967A guifg=#000000 ctermbg=174 ctermfg=16  | syn cluster cssColors add=cssColore9967a\n  hi cssColoree82ee guibg=#EE82EE guifg=#000000 ctermbg=251 ctermfg=16  | syn cluster cssColors add=cssColoree82ee\n  hi cssColoreee8aa guibg=#EEE8AA guifg=#000000 ctermbg=223 ctermfg=16  | syn cluster cssColors add=cssColoreee8aa\n  hi cssColorf08080 guibg=#F08080 guifg=#000000 ctermbg=210 ctermfg=16  | syn cluster cssColors add=cssColorf08080\n  hi cssColorf0e68c guibg=#F0E68C guifg=#000000 ctermbg=222 ctermfg=16  | syn cluster cssColors add=cssColorf0e68c\n  hi cssColorf0f8ff guibg=#F0F8FF guifg=#000000 ctermbg=15  ctermfg=16  | syn cluster cssColors add=cssColorf0f8ff\n  hi cssColorf0fff0 guibg=#F0FFF0 guifg=#000000 ctermbg=255 ctermfg=16  | syn cluster cssColors add=cssColorf0fff0\n  hi cssColorf0ffff guibg=#F0FFFF guifg=#000000 ctermbg=15  ctermfg=16  | syn cluster cssColors add=cssColorf0ffff\n  hi cssColorf4a460 guibg=#F4A460 guifg=#000000 ctermbg=215 ctermfg=16  | syn cluster cssColors add=cssColorf4a460\n  hi cssColorf5deb3 guibg=#F5DEB3 guifg=#000000 ctermbg=223 ctermfg=16  | syn cluster cssColors add=cssColorf5deb3\n  hi cssColorf5f5dc guibg=#F5F5DC guifg=#000000 ctermbg=255 ctermfg=16  | syn cluster cssColors add=cssColorf5f5dc\n  hi cssColorf5f5f5 guibg=#F5F5F5 guifg=#000000 ctermbg=255 ctermfg=16  | syn cluster cssColors add=cssColorf5f5f5\n  hi cssColorf5fffa guibg=#F5FFFA guifg=#000000 ctermbg=15  ctermfg=16  | syn cluster cssColors add=cssColorf5fffa\n  hi cssColorf8f8ff guibg=#F8F8FF guifg=#000000 ctermbg=15  ctermfg=16  | syn cluster cssColors add=cssColorf8f8ff\n  hi cssColorfa8072 guibg=#FA8072 guifg=#000000 ctermbg=209 ctermfg=16  | syn cluster cssColors add=cssColorfa8072\n  hi cssColorfaebd7 guibg=#FAEBD7 guifg=#000000 ctermbg=7   ctermfg=16  | syn cluster cssColors add=cssColorfaebd7\n  hi cssColorfaf0e6 guibg=#FAF0E6 guifg=#000000 ctermbg=255 ctermfg=16  | syn cluster cssColors add=cssColorfaf0e6\n  hi cssColorfafad2 guibg=#FAFAD2 guifg=#000000 ctermbg=255 ctermfg=16  | syn cluster cssColors add=cssColorfafad2\n  hi cssColorfdf5e6 guibg=#FDF5E6 guifg=#000000 ctermbg=255 ctermfg=16  | syn cluster cssColors add=cssColorfdf5e6\n  hi cssColorff0000 guibg=#FF0000 guifg=#FFFFFF ctermbg=196 ctermfg=231 | syn cluster cssColors add=cssColorff0000\n  hi cssColorff00ff guibg=#FF00FF guifg=#FFFFFF ctermbg=13  ctermfg=231 | syn cluster cssColors add=cssColorff00ff\n  hi cssColorff1493 guibg=#FF1493 guifg=#FFFFFF ctermbg=5   ctermfg=231 | syn cluster cssColors add=cssColorff1493\n  hi cssColorff4500 guibg=#FF4500 guifg=#FFFFFF ctermbg=9   ctermfg=231 | syn cluster cssColors add=cssColorff4500\n  hi cssColorff6347 guibg=#FF6347 guifg=#000000 ctermbg=203 ctermfg=16  | syn cluster cssColors add=cssColorff6347\n  hi cssColorff69b4 guibg=#FF69B4 guifg=#000000 ctermbg=205 ctermfg=16  | syn cluster cssColors add=cssColorff69b4\n  hi cssColorff7f50 guibg=#FF7F50 guifg=#000000 ctermbg=209 ctermfg=16  | syn cluster cssColors add=cssColorff7f50\n  hi cssColorff8c00 guibg=#FF8C00 guifg=#000000 ctermbg=3   ctermfg=16  | syn cluster cssColors add=cssColorff8c00\n  hi cssColorffa07a guibg=#FFA07A guifg=#000000 ctermbg=216 ctermfg=16  | syn cluster cssColors add=cssColorffa07a\n  hi cssColorffa500 guibg=#FFA500 guifg=#000000 ctermbg=3   ctermfg=16  | syn cluster cssColors add=cssColorffa500\n  hi cssColorffb6c1 guibg=#FFB6C1 guifg=#000000 ctermbg=217 ctermfg=16  | syn cluster cssColors add=cssColorffb6c1\n  hi cssColorffc0cb guibg=#FFC0CB guifg=#000000 ctermbg=218 ctermfg=16  | syn cluster cssColors add=cssColorffc0cb\n  hi cssColorffd700 guibg=#FFD700 guifg=#000000 ctermbg=11  ctermfg=16  | syn cluster cssColors add=cssColorffd700\n  hi cssColorffdab9 guibg=#FFDAB9 guifg=#000000 ctermbg=223 ctermfg=16  | syn cluster cssColors add=cssColorffdab9\n  hi cssColorffdead guibg=#FFDEAD guifg=#000000 ctermbg=223 ctermfg=16  | syn cluster cssColors add=cssColorffdead\n  hi cssColorffe4b5 guibg=#FFE4B5 guifg=#000000 ctermbg=223 ctermfg=16  | syn cluster cssColors add=cssColorffe4b5\n  hi cssColorffe4c4 guibg=#FFE4C4 guifg=#000000 ctermbg=224 ctermfg=16  | syn cluster cssColors add=cssColorffe4c4\n  hi cssColorffe4e1 guibg=#FFE4E1 guifg=#000000 ctermbg=224 ctermfg=16  | syn cluster cssColors add=cssColorffe4e1\n  hi cssColorffebcd guibg=#FFEBCD guifg=#000000 ctermbg=7   ctermfg=16  | syn cluster cssColors add=cssColorffebcd\n  hi cssColorffefd5 guibg=#FFEFD5 guifg=#000000 ctermbg=255 ctermfg=16  | syn cluster cssColors add=cssColorffefd5\n  hi cssColorfff0f5 guibg=#FFF0F5 guifg=#000000 ctermbg=15  ctermfg=16  | syn cluster cssColors add=cssColorfff0f5\n  hi cssColorfff5ee guibg=#FFF5EE guifg=#000000 ctermbg=255 ctermfg=16  | syn cluster cssColors add=cssColorfff5ee\n  hi cssColorfff8dc guibg=#FFF8DC guifg=#000000 ctermbg=255 ctermfg=16  | syn cluster cssColors add=cssColorfff8dc\n  hi cssColorfffacd guibg=#FFFACD guifg=#000000 ctermbg=255 ctermfg=16  | syn cluster cssColors add=cssColorfffacd\n  hi cssColorfffaf0 guibg=#FFFAF0 guifg=#000000 ctermbg=15  ctermfg=16  | syn cluster cssColors add=cssColorfffaf0\n  hi cssColorfffafa guibg=#FFFAFA guifg=#000000 ctermbg=15  ctermfg=16  | syn cluster cssColors add=cssColorfffafa\n  hi cssColorffff00 guibg=#FFFF00 guifg=#000000 ctermbg=11  ctermfg=16  | syn cluster cssColors add=cssColorffff00\n  hi cssColorffffe0 guibg=#FFFFE0 guifg=#000000 ctermbg=255 ctermfg=16  | syn cluster cssColors add=cssColorffffe0\n  hi cssColorfffff0 guibg=#FFFFF0 guifg=#000000 ctermbg=15  ctermfg=16  | syn cluster cssColors add=cssColorfffff0\n  hi cssColorffffff guibg=#FFFFFF guifg=#000000 ctermbg=231 ctermfg=16  | syn cluster cssColors add=cssColorffffff\n\n  \"call s:VimCssInit(1)\n\n  \":augroup css\n    \"au!\n    autocmd CursorMovedI <buffer> silent call s:ProcessByLine('.')\n    autocmd ColorScheme <buffer> silent call s:VimCssInit(1)\n    autocmd BufEnter <buffer> silent call s:VimCssInit(1)\n  \":augroup END\n\n  \"autocmd CursorMoved  <buffer> silent call s:ProcessByLine('.')\nendif\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/syntax/haml.vim",
    "content": "\" Language:    CoffeeScript\n\" Maintainer:  Sven Felix Oberquelle <Svelix.Github@gmail.com>\n\" URL:         http://github.com/kchmck/vim-coffee-script\n\" License:     WTFPL\n\n\" Inherit coffee from html so coffeeComment isn't redefined and given higher\n\" priority than hamlInterpolation.\nsyn cluster hamlCoffeescript contains=@htmlCoffeeScript\nsyn region  hamlCoffeescriptFilter matchgroup=hamlFilter\n\\                                  start=\"^\\z(\\s*\\):coffee\\z(script\\)\\?\\s*$\"\n\\                                  end=\"^\\%(\\z1 \\| *$\\)\\@!\"\n\\                                  contains=@hamlCoffeeScript,hamlInterpolation\n\\                                  keepend\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/syntax/help.vim",
    "content": "let b:current_syntax = ''\nunlet b:current_syntax\nsyntax include @ScalaCode syntax/scala.vim\nif has('conceal')\n  syntax region rgnScala matchgroup=Ignore concealends start='!sc!' end='!/sc!' contains=@ScalaCode\nelse\n  syntax region rgnScala matchgroup=Ignore start='!sc!' end='!/sc!' contains=@ScalaCode\nendif\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/syntax/html.vim",
    "content": "\" Language:    CoffeeScript\n\" Maintainer:  Mick Koch <kchmck@gmail.com>\n\" URL:         http://github.com/kchmck/vim-coffee-script\n\" License:     WTFPL\n\n\" Syntax highlighting for text/coffeescript script tags\nsyn include @htmlCoffeeScript syntax/coffee.vim\nsyn region coffeeScript start=#<script [^>]*type=\"text/coffeescript\"[^>]*>#\n\\                       end=#</script>#me=s-1 keepend\n\\                       contains=@htmlCoffeeScript,htmlScriptTag,@htmlPreproc\n\\                       containedin=htmlHead\nsyn include syntax/css/vim-coloresque.vim\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/syntax/less.vim",
    "content": "syn include syntax/css/vim-coloresque.vim\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/syntax/rspec.vim",
    "content": "\"\n\" An rspec syntax file\n\" Originally from http://www.vim.org/scripts/script.php?script_id=2286\n\"\n\"\n\nruntime! syntax/ruby.vim\nunlet! b:current_syntax\n\nsyntax keyword rspecGroupMethods context describe example it its let it_should_behave_like shared_examples_for subject it_behaves_like pending specify When Then Given Invariant feature scenario given\nhighlight link rspecGroupMethods Type\n\nsyntax keyword rspecBeforeAndAfter after after_suite_parts append_after append_before before before_suite_parts prepend_after prepend_before around\nhighlight link rspecBeforeAndAfter Statement\n\nsyntax keyword rspecMocks double mock stub stub_chain\nhighlight link rspecMocks Constant\n\nsyntax keyword rspecMockMethods and_raise and_return and_throw and_yield build_child called_max_times expected_args invoke matches\nhighlight link rspecMockMethods Function\n\nsyntax keyword rspecKeywords should should_not should_not_receive should_receive\nhighlight link rspecKeywords Constant\n\nsyntax keyword rspecMatchers be change eql equal exist expect have have_at_least have_at_most have_exactly include match matcher raise_error raise_exception respond_to satisfy throw_symbol to to_not not_to when wrap_expectation\nsyntax match rspecMatchers /\\<\\(be\\|have\\)_\\w\\+\\>/\nhighlight link rspecMatchers Function\n\nsyntax keyword rspecMessageExpectation advise any_args any_number_of_times anything at_least at_most exactly expected_messages_received generate_error hash_including hash_not_including ignoring_args instance_of matches_at_least_count matches_at_most_count matches_exact_count matches_name_but_not_args negative_expectation_for never no_args once ordered similar_messages times twice verify_messages_received with \nhighlight link rspecMessageExpectation Function\n\nlet b:current_syntax = 'rspec'\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/syntax/ruby.vim",
    "content": "\" This file describes a very basic syntax for TomDoc comments in a Ruby file.\n\"\n\" For more information on TomDoc, check it out here: http://tomdoc.org/\n\"\n\nsyn keyword tomdocKeywords Returns containedin=rubyComment contained\nsyn keyword tomdocKeywords Yields containedin=rubyComment contained\nsyn keyword tomdocKeywords Raises containedin=rubyComment contained\nsyn keyword tomdocKeywords Examples containedin=rubyComment contained\nsyn keyword tomdocKeywords Signature containedin=rubyComment contained\n\nsyn match tomdocArguments +\\s*[A-Za-z0-9_\\-&\\*:]*\\(\\s*- \\)+he=e-3 containedin=rubyComment contained\n\nsyn match tomdocDescriptions +\\s*Public:+he=e-1 containedin=rubyComment contained\nsyn match tomdocDescriptions +\\s*Internal:+he=e-1 containedin=rubyComment contained\nsyn match tomdocDescriptions +\\s*Deprecated:+he=e-1 containedin=rubyComment contained\n\nhi default link tomdocDescriptions String\nhi default link tomdocKeywords String\nhi default link tomdocArguments HELP\n\" Ruby syntax extensions for highlighting YARD documentation.\n\"\n\" Author: Joel Holdbrooks <https://github.com/noprompt>\n\" URI: https://github.com/noprompt/vim-yardoc\n\" Version: 0.0.1\n\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\" Tags\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\nsyn match yardGenericTag \"@\\h\\+\" contained\nsyn match yardAbstract \"@abstract\" contained\nsyn match yardApi \"@api\" contained\nsyn match yardAttr \"@attr\" contained\nsyn match yardAttrReader \"@attr_reader\" contained\nsyn match yardAttrWriter \"@attr_writer\" contained\nsyn match yardAuthor \"@author\" contained\nsyn match yardDeprecated \"@deprecated\" contained\nsyn match yardExample \"@example\" contained\nsyn match yardNote \"@note\" contained\nsyn match yardOption \"@option\" contained\nsyn match yardOverload \"@overload\" contained\nsyn match yardParam \"@param\" contained\nsyn match yardPrivate \"@private\" contained\nsyn match yardRaise \"@raise\" contained\nsyn match yardReturn \"@return\" contained\nsyn match yardSee \"@see\" contained\nsyn match yardSince \"@since\" contained\nsyn match yardTodo \"@todo\" contained\nsyn match yardVersion \"@version\" contained\nsyn match yardYield \"@yield\" contained\nsyn match yardYieldParam \"@yieldparam\" contained\nsyn match yardYieldReturn \"@yieldreturn\" contained\nsyn cluster yardTags contains=yardGenericTag,yardAbstract,yardApi,yardAttr,yardAttrReader,yardAttrWriter,yardAuthor,yardDeprecated,yardExample,yardNote,yardOption,yardOverload,yardParam,yardPrivate,yardRaise,yardReturn,yardSee,yardSince,yardTodo,yardVersion,yardYield,yardYieldParam,yardYieldReturn\n\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\" Directives\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\nsyn match yardGenericDirective \"@!\\h\\+\" contained\nsyn match yardAttribute \"@!attribute\" contained\nsyn match yardEndGroup \"@!endgroup\" contained\nsyn match yardGroup \"@!group\" contained\nsyn match yardMacro \"@!macro\" contained\nsyn match yardMethod \"@!method\" contained\nsyn match yardParse \"@!parse\" contained\nsyn match yardScope \"@!scope\" contained\nsyn match yardVisibility \"@!visibility\" contained\n\nsyn cluster yardDirectives contains=yardGenericDirective,yardAttribute,yardEndGroup,yardGroup,yardMacro,yardMethod,yardParse,yardScope,yardVisibility\n\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\" Types, Lists, and Hashes\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\nsyn match yardDuckType \"#\\h\\+\" contained\nsyn match yardType \"[A-Z]\\h\\+\" contained\nsyn match yardLiteral \"\\(true\\|false\\|nil\\|self\\|void\\)\" contained\nsyn match yardComma \",\" nextgroup=@yardTypes contained\nsyn match yardArrow \"=>\" nextgroup=@yardTypes contained\n\nsyn region yardParametricType start=\"[A-Z]\\+\\h\\+<\" end=\">\" contains=yardType,yardOrderDependentList,yardComma skipwhite contained\nsyn region yardOrderDependentList start=\"(\" end=\")\" contains=@yardTypes,yardComma skipwhite contained\nsyn region yardTypeList start=\"\\[\" end=\"]\" contains=@yardTypes,yardOrderDependentList,@yardHashes skipwhite contained\nsyn region yardHashAngle start=\"Hash<\" end=\">\" contains=yardDuckType,yardType,yardLiteral,yardArrow,yardComma skipwhite contained\nsyn region yardHashCurly start=\"Hash{\" end=\"}\" contains=@yardTypes,yardArrow,yardComma skipwhite contained\n\nsyn cluster yardTypes contains=yardDuckType,yardType,yardLiteral,yardParametricType\nsyn cluster yardHashes contains=yardArrow,yardHashAngle,yardHashCurly\nsyn cluster yardLists contains=yardComma,yardTypeList,yardOrderDependentList\n\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\" Yard\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\nsyn match yardComment \"#\\s*@!\\{,1}\\h\\+.*\" contains=@yardTags,@yardDirectives,yardTypeList\nsyn match rubyComment \"#.*\" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell,yardComment\nsyn region rubyMultilineComment start=\"\\%(\\%(^\\s*#.*\\n\\)\\@<!\\%(^\\s*#.*\\n\\)\\)\\%(\\(^\\s*#.*\\n\\)\\{1,}\\)\\@=\" end=\"\\%(^\\s*#.*\\n\\)\\@<=\\%(^\\s*#.*\\n\\)\\%(^\\s*#\\)\\@!\" contains=rubyComment transparent fold keepend\nsyn cluster rubyNotTop add=@yardTags,@yardDirectives,@yardTypes,@yardLists,@yardHashes\n\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\" Links\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\nhi def link yardComment rubyComment\n\" Tags\nhi def link yardGenericTag rubyKeyword\nhi def link yardAbstract yardGenericTag\nhi def link yardApi yardGenericTag\nhi def link yardAttr yardGenericTag\nhi def link yardAttrReader yardGenericTag\nhi def link yardAttrWriter yardGenericTag\nhi def link yardAuthor yardGenericTag\nhi def link yardDeprecated yardGenericTag\nhi def link yardExample yardGenericTag\nhi def link yardNote yardGenericTag\nhi def link yardOption yardGenericTag\nhi def link yardOverload yardGenericTag\nhi def link yardParam yardGenericTag\nhi def link yardPrivate yardGenericTag\nhi def link yardRaise yardGenericTag\nhi def link yardReturn yardGenericTag\nhi def link yardSee yardGenericTag\nhi def link yardSince yardGenericTag\nhi def link yardTodo yardGenericTag\nhi def link yardVersion yardGenericTag\nhi def link yield yardGenericTag\nhi def link yieldparam yardGenericTag\nhi def link yieldreturn yardGenericTag\n\" Directives\nhi def link yardGenericDirective rubyKeyword\nhi def link yardAttribute yardGenericDirective\nhi def link yardEndGroup yardGenericDirective\nhi def link yardGroup yardGenericDirective\nhi def link yardMacro yardGenericDirective\nhi def link yardMethod yardGenericDirective\nhi def link yardParse yardGenericDirective\nhi def link yardScope yardGenericDirective\nhi def link yardVisibility yardGenericDirective\n\" Types\nhi def link yardComma yardComment\nhi def link yardType yardComment\nhi def link yardDuckType yardComment\nhi def link yardLiteral yardComment\n\" Lists\nhi def link yardTypeList yardComment\nhi def link yardParametricType yardComment\n\" Hashes\nhi def link yardArrow yardComment\nhi def link yardHashAngle yardComment\nhi def link yardHashCurly yardComment\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/syntax/rust.vim",
    "content": "if !exists('g:rust_conceal') || !has('conceal') || &enc != 'utf-8'\n\tfinish\nendif\n\n\" For those who don't want to see `::`...\nif exists('g:rust_conceal_mod_path')\n\tsyn match rustNiceOperator \"::\" conceal cchar=ㆍ\nendif\n\nsyn match rustRightArrowHead contained \">\" conceal cchar= \nsyn match rustRightArrowTail contained \"-\" conceal cchar=⟶\nsyn match rustNiceOperator \"->\" contains=rustRightArrowHead,rustRightArrowTail\n\nsyn match rustFatRightArrowHead contained \">\" conceal cchar= \nsyn match rustFatRightArrowTail contained \"=\" conceal cchar=⟹\nsyn match rustNiceOperator \"=>\" contains=rustFatRightArrowHead,rustFatRightArrowTail\n\nsyn match rustNiceOperator /\\<\\@!_\\(_*\\>\\)\\@=/ conceal cchar=′\n\n\" For those who don't want to see `pub`...\nif exists('g:rust_conceal_pub')\n    syn match rustPublicSigil contained \"pu\" conceal cchar=＊\n    syn match rustPublicRest contained \"b\" conceal cchar= \n    syn match rustNiceOperator \"pub \" contains=rustPublicSigil,rustPublicRest\nendif\n\nhi link rustNiceOperator Operator\n\nif !exists('g:rust_conceal_mod_path')\n    hi! link Conceal Operator\nendif\n\nsetlocal conceallevel=2\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/syntax/sass.vim",
    "content": "syn include syntax/css/vim-coloresque.vim\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/syntax/scss.vim",
    "content": "syn include syntax/css/vim-coloresque.vim\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/syntax/stylus.vim",
    "content": "syn include syntax/css/vim-coloresque.vim\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/syntax/tex.vim",
    "content": "\" adds support for cleverref package\n\" \\Cref, \\cref, \\cpageref, \\labelcref, \\labelcpageref\nsyn region texRefZone\t\tmatchgroup=texStatement start=\"\\\\Cref{\"\t\t\t\tend=\"}\\|%stopzone\\>\"\tcontains=@texRefGroup\nsyn region texRefZone\t\tmatchgroup=texStatement start=\"\\\\\\(label\\|\\)c\\(page\\|\\)ref{\"\tend=\"}\\|%stopzone\\>\"\tcontains=@texRefGroup\n\n\" adds support for listings package\nsyn region texZone start=\"\\\\begin{lstlisting}\" end=\"\\\\end{lstlisting}\\|%stopzone\\>\"\nsyn region texZone  start=\"\\\\lstinputlisting\" end=\"{\\s*[a-zA-Z/.0-9_^]\\+\\s*}\"\nsyn match texInputFile \"\\\\lstinline\\s*\\(\\[.*\\]\\)\\={.\\{-}}\" contains=texStatement,texInputCurlies,texInputFileOpt\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/after/syntax/vim.vim",
    "content": "syn include syntax/css/vim-coloresque.vim\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/autoload/clojurecomplete.vim",
    "content": "\" Vim completion script\n\" Language:\tClojure\n\" Maintainer:\tSung Pae <self@sungpae.com>\n\" URL:\t\thttps://github.com/guns/vim-clojure-static\n\" License:\tSame as Vim\n\" Last Change:\t%%RELEASE_DATE%%\n\n\" Special forms and public vars in clojure.core\n\" Generated from https://github.com/guns/vim-clojure-static/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj\n\" Clojure version 1.5.1\nlet s:words = [\"*\",\"*'\",\"*1\",\"*2\",\"*3\",\"*agent*\",\"*allow-unresolved-vars*\",\"*assert*\",\"*clojure-version*\",\"*command-line-args*\",\"*compile-files*\",\"*compile-path*\",\"*compiler-options*\",\"*data-readers*\",\"*default-data-reader-fn*\",\"*e\",\"*err*\",\"*file*\",\"*flush-on-newline*\",\"*fn-loader*\",\"*in*\",\"*math-context*\",\"*ns*\",\"*out*\",\"*print-dup*\",\"*print-length*\",\"*print-level*\",\"*print-meta*\",\"*print-readably*\",\"*read-eval*\",\"*source-path*\",\"*unchecked-math*\",\"*use-context-classloader*\",\"*verbose-defrecords*\",\"*warn-on-reflection*\",\"+\",\"+'\",\"-\",\"-'\",\"->\",\"->>\",\"->ArrayChunk\",\"->Vec\",\"->VecNode\",\"->VecSeq\",\"-cache-protocol-fn\",\"-reset-methods\",\".\",\"..\",\"/\",\"<\",\"<=\",\"=\",\"==\",\">\",\">=\",\"EMPTY-NODE\",\"accessor\",\"aclone\",\"add-classpath\",\"add-watch\",\"agent\",\"agent-error\",\"agent-errors\",\"aget\",\"alength\",\"alias\",\"all-ns\",\"alter\",\"alter-meta!\",\"alter-var-root\",\"amap\",\"ancestors\",\"and\",\"apply\",\"areduce\",\"array-map\",\"as->\",\"aset\",\"aset-boolean\",\"aset-byte\",\"aset-char\",\"aset-double\",\"aset-float\",\"aset-int\",\"aset-long\",\"aset-short\",\"assert\",\"assoc!\",\"assoc\",\"assoc-in\",\"associative?\",\"atom\",\"await\",\"await-for\",\"await1\",\"bases\",\"bean\",\"bigdec\",\"bigint\",\"biginteger\",\"binding\",\"bit-and\",\"bit-and-not\",\"bit-clear\",\"bit-flip\",\"bit-not\",\"bit-or\",\"bit-set\",\"bit-shift-left\",\"bit-shift-right\",\"bit-test\",\"bit-xor\",\"boolean\",\"boolean-array\",\"booleans\",\"bound-fn\",\"bound-fn*\",\"bound?\",\"butlast\",\"byte\",\"byte-array\",\"bytes\",\"case\",\"cast\",\"catch\",\"char\",\"char-array\",\"char-escape-string\",\"char-name-string\",\"char?\",\"chars\",\"chunk\",\"chunk-append\",\"chunk-buffer\",\"chunk-cons\",\"chunk-first\",\"chunk-next\",\"chunk-rest\",\"chunked-seq?\",\"class\",\"class?\",\"clear-agent-errors\",\"clojure-version\",\"coll?\",\"comment\",\"commute\",\"comp\",\"comparator\",\"compare\",\"compare-and-set!\",\"compile\",\"complement\",\"concat\",\"cond\",\"cond->\",\"cond->>\",\"condp\",\"conj!\",\"conj\",\"cons\",\"constantly\",\"construct-proxy\",\"contains?\",\"count\",\"counted?\",\"create-ns\",\"create-struct\",\"cycle\",\"dec\",\"dec'\",\"decimal?\",\"declare\",\"def\",\"default-data-readers\",\"definline\",\"definterface\",\"defmacro\",\"defmethod\",\"defmulti\",\"defn\",\"defn-\",\"defonce\",\"defprotocol\",\"defrecord\",\"defstruct\",\"deftype\",\"delay\",\"delay?\",\"deliver\",\"denominator\",\"deref\",\"derive\",\"descendants\",\"destructure\",\"disj!\",\"disj\",\"dissoc!\",\"dissoc\",\"distinct\",\"distinct?\",\"do\",\"doall\",\"dorun\",\"doseq\",\"dosync\",\"dotimes\",\"doto\",\"double\",\"double-array\",\"doubles\",\"drop\",\"drop-last\",\"drop-while\",\"empty\",\"empty?\",\"ensure\",\"enumeration-seq\",\"error-handler\",\"error-mode\",\"eval\",\"even?\",\"every-pred\",\"every?\",\"ex-data\",\"ex-info\",\"extend\",\"extend-protocol\",\"extend-type\",\"extenders\",\"extends?\",\"false?\",\"ffirst\",\"file-seq\",\"filter\",\"filterv\",\"finally\",\"find\",\"find-keyword\",\"find-ns\",\"find-protocol-impl\",\"find-protocol-method\",\"find-var\",\"first\",\"flatten\",\"float\",\"float-array\",\"float?\",\"floats\",\"flush\",\"fn\",\"fn\",\"fn?\",\"fnext\",\"fnil\",\"for\",\"force\",\"format\",\"frequencies\",\"future\",\"future-call\",\"future-cancel\",\"future-cancelled?\",\"future-done?\",\"future?\",\"gen-class\",\"gen-interface\",\"gensym\",\"get\",\"get-in\",\"get-method\",\"get-proxy-class\",\"get-thread-bindings\",\"get-validator\",\"group-by\",\"hash\",\"hash-combine\",\"hash-map\",\"hash-set\",\"identical?\",\"identity\",\"if\",\"if-let\",\"if-not\",\"ifn?\",\"import\",\"in-ns\",\"inc\",\"inc'\",\"init-proxy\",\"instance?\",\"int\",\"int-array\",\"integer?\",\"interleave\",\"intern\",\"interpose\",\"into\",\"into-array\",\"ints\",\"io!\",\"isa?\",\"iterate\",\"iterator-seq\",\"juxt\",\"keep\",\"keep-indexed\",\"key\",\"keys\",\"keyword\",\"keyword?\",\"last\",\"lazy-cat\",\"lazy-seq\",\"let\",\"let\",\"letfn\",\"line-seq\",\"list\",\"list*\",\"list?\",\"load\",\"load-file\",\"load-reader\",\"load-string\",\"loaded-libs\",\"locking\",\"long\",\"long-array\",\"longs\",\"loop\",\"loop\",\"macroexpand\",\"macroexpand-1\",\"make-array\",\"make-hierarchy\",\"map\",\"map-indexed\",\"map?\",\"mapcat\",\"mapv\",\"max\",\"max-key\",\"memfn\",\"memoize\",\"merge\",\"merge-with\",\"meta\",\"method-sig\",\"methods\",\"min\",\"min-key\",\"mod\",\"monitor-enter\",\"monitor-exit\",\"munge\",\"name\",\"namespace\",\"namespace-munge\",\"neg?\",\"new\",\"newline\",\"next\",\"nfirst\",\"nil?\",\"nnext\",\"not\",\"not-any?\",\"not-empty\",\"not-every?\",\"not=\",\"ns\",\"ns-aliases\",\"ns-imports\",\"ns-interns\",\"ns-map\",\"ns-name\",\"ns-publics\",\"ns-refers\",\"ns-resolve\",\"ns-unalias\",\"ns-unmap\",\"nth\",\"nthnext\",\"nthrest\",\"num\",\"number?\",\"numerator\",\"object-array\",\"odd?\",\"or\",\"parents\",\"partial\",\"partition\",\"partition-all\",\"partition-by\",\"pcalls\",\"peek\",\"persistent!\",\"pmap\",\"pop!\",\"pop\",\"pop-thread-bindings\",\"pos?\",\"pr\",\"pr-str\",\"prefer-method\",\"prefers\",\"primitives-classnames\",\"print\",\"print-ctor\",\"print-dup\",\"print-method\",\"print-simple\",\"print-str\",\"printf\",\"println\",\"println-str\",\"prn\",\"prn-str\",\"promise\",\"proxy\",\"proxy-call-with-super\",\"proxy-mappings\",\"proxy-name\",\"proxy-super\",\"push-thread-bindings\",\"pvalues\",\"quot\",\"quote\",\"rand\",\"rand-int\",\"rand-nth\",\"range\",\"ratio?\",\"rational?\",\"rationalize\",\"re-find\",\"re-groups\",\"re-matcher\",\"re-matches\",\"re-pattern\",\"re-seq\",\"read\",\"read-line\",\"read-string\",\"realized?\",\"recur\",\"reduce\",\"reduce-kv\",\"reduced\",\"reduced?\",\"reductions\",\"ref\",\"ref-history-count\",\"ref-max-history\",\"ref-min-history\",\"ref-set\",\"refer\",\"refer-clojure\",\"reify\",\"release-pending-sends\",\"rem\",\"remove\",\"remove-all-methods\",\"remove-method\",\"remove-ns\",\"remove-watch\",\"repeat\",\"repeatedly\",\"replace\",\"replicate\",\"require\",\"reset!\",\"reset-meta!\",\"resolve\",\"rest\",\"restart-agent\",\"resultset-seq\",\"reverse\",\"reversible?\",\"rseq\",\"rsubseq\",\"satisfies?\",\"second\",\"select-keys\",\"send\",\"send-off\",\"send-via\",\"seq\",\"seq?\",\"seque\",\"sequence\",\"sequential?\",\"set!\",\"set\",\"set-agent-send-executor!\",\"set-agent-send-off-executor!\",\"set-error-handler!\",\"set-error-mode!\",\"set-validator!\",\"set?\",\"short\",\"short-array\",\"shorts\",\"shuffle\",\"shutdown-agents\",\"slurp\",\"some\",\"some->\",\"some->>\",\"some-fn\",\"sort\",\"sort-by\",\"sorted-map\",\"sorted-map-by\",\"sorted-set\",\"sorted-set-by\",\"sorted?\",\"special-symbol?\",\"spit\",\"split-at\",\"split-with\",\"str\",\"string?\",\"struct\",\"struct-map\",\"subs\",\"subseq\",\"subvec\",\"supers\",\"swap!\",\"symbol\",\"symbol?\",\"sync\",\"take\",\"take-last\",\"take-nth\",\"take-while\",\"test\",\"the-ns\",\"thread-bound?\",\"throw\",\"time\",\"to-array\",\"to-array-2d\",\"trampoline\",\"transient\",\"tree-seq\",\"true?\",\"try\",\"type\",\"unchecked-add\",\"unchecked-add-int\",\"unchecked-byte\",\"unchecked-char\",\"unchecked-dec\",\"unchecked-dec-int\",\"unchecked-divide-int\",\"unchecked-double\",\"unchecked-float\",\"unchecked-inc\",\"unchecked-inc-int\",\"unchecked-int\",\"unchecked-long\",\"unchecked-multiply\",\"unchecked-multiply-int\",\"unchecked-negate\",\"unchecked-negate-int\",\"unchecked-remainder-int\",\"unchecked-short\",\"unchecked-subtract\",\"unchecked-subtract-int\",\"underive\",\"unquote\",\"unquote-splicing\",\"update-in\",\"update-proxy\",\"use\",\"val\",\"vals\",\"var\",\"var-get\",\"var-set\",\"var?\",\"vary-meta\",\"vec\",\"vector\",\"vector-of\",\"vector?\",\"when\",\"when-first\",\"when-let\",\"when-not\",\"while\",\"with-bindings\",\"with-bindings*\",\"with-in-str\",\"with-loading-context\",\"with-local-vars\",\"with-meta\",\"with-open\",\"with-out-str\",\"with-precision\",\"with-redefs\",\"with-redefs-fn\",\"xml-seq\",\"zero?\",\"zipmap\"]\n\n\" Simple word completion omnifunc\nfunction! clojurecomplete#Complete(findstart, base)\n\tif a:findstart\n\t\treturn searchpos('\\<', 'bnW', line('.'))[1] - 1\n\telse\n\t\treturn { 'words': filter(copy(s:words), 'v:val =~# \"\\\\V\\\\^' . a:base . '\"') }\n\tendif\nendfunction\n\n\" vim:sts=8:sw=8:ts=8:noet\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/autoload/coffee.vim",
    "content": "\" Language:    CoffeeScript\n\" Maintainer:  Mick Koch <kchmck@gmail.com>\n\" URL:         http://github.com/kchmck/vim-coffee-script\n\" License:     WTFPL\n\n\" Set up some common global/buffer variables.\nfunction! coffee#CoffeeSetUpVariables()\n  \" Path to coffee executable\n  if !exists('g:coffee_compiler')\n    let g:coffee_compiler = 'coffee'\n  endif\n\n  \" Options passed to coffee with make\n  if !exists('g:coffee_make_options')\n    let g:coffee_make_options = ''\n  endif\n\n  \" Path to cake executable\n  if !exists('g:coffee_cake')\n    let g:coffee_cake = 'cake'\n  endif\n\n  \" Extra options passed to cake\n  if !exists('g:coffee_cake_options')\n    let g:coffee_cake_options = ''\n  endif\n\n  \" Path to coffeelint executable\n  if !exists('g:coffee_linter')\n    let g:coffee_linter = 'coffeelint'\n  endif\n\n  \" Options passed to CoffeeLint\n  if !exists('g:coffee_lint_options')\n    let g:coffee_lint_options = ''\n  endif\n\n  \" Pass the litcoffee flag to tools in this buffer if a litcoffee file is open.\n  \" Let the variable be overwritten so it can be updated if a different filetype\n  \" is set.\n  if &filetype == 'litcoffee'\n    let b:coffee_litcoffee = '--literate'\n  else\n    let b:coffee_litcoffee = ''\n  endif\nendfunction\n\nfunction! coffee#CoffeeSetUpErrorFormat()\n  CompilerSet errorformat=Error:\\ In\\ %f\\\\,\\ %m\\ on\\ line\\ %l,\n                         \\Error:\\ In\\ %f\\\\,\\ Parse\\ error\\ on\\ line\\ %l:\\ %m,\n                         \\SyntaxError:\\ In\\ %f\\\\,\\ %m,\n                         \\%f:%l:%c:\\ error:\\ %m,\n                         \\%-G%.%#\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/autoload/erlangcomplete.vim",
    "content": "\" ------------------------------------------------------------------------------\n\" Vim omni-completion script\n\" Author: Oscar Hellström\n\" Email: oscar@oscarh.net\n\" Version: 2010-08-10\n\" Contributors: kTT (http://github.com/kTT)\n\" \t\tRicardo Catalinas Jiménez <jimenezrick@gmail.com>\n\" ------------------------------------------------------------------------------\n\n\" Patterns for completions {{{1\nlet s:erlangLocalFuncBeg    = '\\(\\<[0-9A-Za-z_-]*\\|\\s*\\)$'\nlet s:erlangExternalFuncBeg = '\\<[0-9A-Za-z_-]\\+:[0-9A-Za-z_-]*$'\nlet s:ErlangBlankLine       = '^\\s*\\(%.*\\)\\?$'\nlet s:erlangCompletionPath  = expand('<sfile>:p:h') . '/erlang_completion.erl'\n\nif !exists('g:erlangCompletionGrep')\n\tlet g:erlangCompletionGrep = 'grep'\nendif\n\nif !exists('g:erlangManSuffix')\n\tlet g:erlangManSuffix = ''\nendif\n\nif !exists('g:erlangManPath')\n\tlet g:erlangManPath = '/usr/lib/erlang/man'\nendif\n\nif !exists('g:erlangCompletionDisplayDoc')\n\tlet g:erlangCompletionDisplayDoc = 1\nendif\n\n\" Main function for completion {{{1\nfunction! erlangcomplete#Complete(findstart, base)\n\t\" 0) Init {{{2\n\tlet lnum = line('.')\n\tlet column = col('.') \n\tlet line = strpart(getline('.'), 0, column - 1)\n\n\t\" 1) First, check if completion is impossible {{{2\n\tif line =~ '[^~\\\\]%'\n\t\treturn -1\n\tendif\n\n\t\"echo \"line[col - 1]:\" . line[column - 1] . \" line[col - 2]:\" . line[column - 2] .  \"\\n\" . line . \"\\n\"\n\n\t\" 2) Check if the char to the left of us are part of a function call {{{2\n\t\"\n\t\" Nothing interesting is written at the char just before the cursor\n\t\" This means _anything_ could be started here\n\t\" In this case, keyword completion should probably be used,\n\t\" for now we'll only try and complete local functions.\n\t\" TODO: Examine if we can stare Identifiers end complete on them\n\t\" Is this worth it? Is /completion/ of a \"blank\" wanted? Can we consider (\n\t\" interesting and check if we are in a function call etc.?\n\tif line[column - 2] !~ '[0-9A-Za-z:_-]'\n\t\tif a:findstart\n\t\t\treturn column\n\t\telse\n\t\t\treturn s:erlangFindLocalFunc(a:base)\n\t\tendif\n\tendif\n\t\n\n\t\" 3) Function in external module {{{2\n\tif line =~ s:erlangExternalFuncBeg\n\t\tlet delimiter = match(line, ':[0-9A-Za-z_-]*$') + 1\n\t\tif a:findstart\n\t\t\treturn delimiter\n\t\telse\n                        let module = matchstr(line[:-2], '\\<\\k*\\>$')\n\t\t\treturn s:erlangFindExternalFunc(module, a:base)\n\t\tendif\n\tendif\n\n\t\" 4) Local function {{{2\n\tif line =~ s:erlangLocalFuncBeg\n\t\tlet funcstart = match(line, ':\\@<![0-9A-Za-z_-]*$')\n\t\tif a:findstart\n\t\t\treturn funcstart\n\t\telse\n\t\t\treturn s:erlangFindLocalFunc(a:base)\n\t\tendif\n\tendif\n\n\t\" 5) Unhandled situation {{{2\n\tif a:findstart\n\t\treturn -1\n\telse\n\t\treturn []\n\tendif\nendfunction\n\n\" Auxiliary functions for completion {{{1 \n\" Find the next non-blank line {{{2\nfunction s:erlangFindNextNonBlank(lnum)\n\tlet lnum = nextnonblank(a:lnum + 1)\n\tlet line = getline(lnum)\n\twhile line =~ s:ErlangBlankLine && 0 != lnum\n\t\tlet lnum = nextnonblank(lnum + 1)\n\t\tlet line = getline(lnum)\n   endwhile\n   return lnum\nendfunction\n\t\t\t\n\" vim: foldmethod=marker:\n\" Find external function names {{{2\nfunction s:erlangFindExternalFunc(module, base)\n        \" If it's a local module, try to compile it\n        if filereadable(a:module . '.erl') && !filereadable(a:module . '.beam')\n            silent execute '!erlc' a:module . '.erl' '>/dev/null' '2>/dev/null'\n            redraw!\n        endif\n        let functions = system(s:erlangCompletionPath . ' ' . a:module)\n        for element in sort(split(functions, '\\n'))\n            if match(element, a:base) == 0\n                let function_name = matchstr(element, a:base . '\\w\\+')\n                let number_of_args = matchstr(element, '\\d\\+', len(function_name))\n                let number_of_comma = max([number_of_args - 1, 0])\n                let file_path = g:erlangManPath . '/man?/' . a:module . '\\.?' . g:erlangManSuffix\n                \" [:-2] cutting some weird characters at the end\n                \" becouse grep doesn't support multilines, we have to filter\n                \" first by .B and next by looking via function name\n                \" if someone have better idea, please change it\n                let description = ''\n                \" Don't look man pages if the module is present in the current directory\n                if g:erlangCompletionDisplayDoc != 0 && !filereadable(a:module . '.erl')\n                    let system_command = g:erlangCompletionGrep . ' -A 1 \"\\.B\" ' . file_path . ' | grep -EZo \"\\<' .\n\\                           function_name . '\\>\\((\\w+, ){' . number_of_comma . '}[^),]*\\) -> .*\"'\n                    let description = system(system_command)\n                    let description = description[:-2]\n                endif\n                if description == ''\n                    let description = element \" if function doesn't have description e.g. lists:rmerge, put rmerge/2 instead\n                endif\n                let field = {'word': function_name . '(', 'abbr': description, 'kind': 'f', 'dup': 1} \" always duplicate functions\n                call complete_add(field)\n            endif\n        endfor\n        return []\nendfunction\n\n\" Find local function names {{{2\nfunction s:erlangFindLocalFunc(base)\n\t\" begin at line 1\n\tlet lnum = s:erlangFindNextNonBlank(1)\n\tif \"\" == a:base\n\t\tlet base = '\\w' \" used to match against word symbol\n\telse\n\t\tlet base = a:base\n\tendif\n\twhile 0 != lnum && !complete_check()\n\t\tlet line = getline(lnum)\n\t\tlet function_name = matchstr(line, '^' . base . '[0-9A-Za-z_-]\\+(\\@=')\n\t\tif function_name != \"\"\n\t\t\tcall complete_add(function_name)\n\t\tendif\n\t\tlet lnum = s:erlangFindNextNonBlank(lnum)\n\tendwhile\n\treturn []\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/autoload/go/complete.vim",
    "content": "\" Copyright 2011 The Go Authors. All rights reserved.\n\" Use of this source code is governed by a BSD-style\n\" license that can be found in the LICENSE file.\n\"\n\" This file provides a utility function that performs auto-completion of\n\" package names, for use by other commands.\n\nlet s:goos = $GOOS\nlet s:goarch = $GOARCH\n\nif len(s:goos) == 0\n  if exists('g:golang_goos')\n    let s:goos = g:golang_goos\n  elseif has('win32') || has('win64')\n    let s:goos = 'windows'\n  elseif has('macunix')\n    let s:goos = 'darwin'\n  else\n    let s:goos = '*'\n  endif\nendif\n\nif len(s:goarch) == 0\n  if exists('g:golang_goarch')\n    let s:goarch = g:golang_goarch\n  else\n    let s:goarch = '*'\n  endif\nendif\n\nfunction! go#complete#PackageMembers(package, member)\n  silent! let content = system('godoc ' . a:package)\n  if v:shell_error || !len(content)\n    return []\n  endif\n  let lines = filter(split(content, \"\\n\"),\"v:val !~ '^\\\\s\\\\+$'\")\n  try\n    let mx1 = '^\\s\\+\\(\\S+\\)\\s\\+=\\s\\+.*'\n    let mx2 = '^\\%(const\\|var\\|type\\|func\\) \\([A-Z][^ (]\\+\\).*'\n    let candidates =\n    \\   map(filter(copy(lines), 'v:val =~ mx1'), 'substitute(v:val, mx1, \"\\\\1\", \"\")')\n    \\ + map(filter(copy(lines), 'v:val =~ mx2'), 'substitute(v:val, mx2, \"\\\\1\", \"\")')\n    return filter(candidates, '!stridx(v:val, a:member)')\n  catch\n    return []\n  endtry\nendfunction\n\nfunction! go#complete#Package(ArgLead, CmdLine, CursorPos)\n  let dirs = []\n\n  let words = split(a:CmdLine, '\\s\\+', 1)\n  if len(words) > 2\n    \" Complete package members\n    return go#complete#PackageMembers(words[1], words[2])\n  endif\n\n  if executable('go')\n    let goroot = substitute(system('go env GOROOT'), '\\n', '', 'g')\n    if v:shell_error\n      echomsg '\\'go env GOROOT\\' failed'\n    endif\n  else\n    let goroot = $GOROOT\n  endif\n\n  if len(goroot) != 0 && isdirectory(goroot)\n    let dirs += [goroot]\n  endif\n\n  let pathsep = ':'\n  if s:goos == 'windows'\n    let pathsep = ';'\n  endif\n  let workspaces = split($GOPATH, pathsep)\n  if workspaces != []\n    let dirs += workspaces\n  endif\n\n  if len(dirs) == 0\n    \" should not happen\n    return []\n  endif\n\n  let ret = {}\n  for dir in dirs\n    \" this may expand to multiple lines\n    let root = split(expand(dir . '/pkg/' . s:goos . '_' . s:goarch), \"\\n\")\n    call add(root, expand(dir . '/src'))\n    for r in root\n      for i in split(globpath(r, a:ArgLead.'*'), \"\\n\")\n        if isdirectory(i)\n          let i .= '/'\n        elseif i !~ '\\.a$'\n          continue\n        endif\n        let i = substitute(substitute(i[len(r)+1:], '[\\\\]', '/', 'g'), '\\.a$', '', 'g')\n        let ret[i] = i\n      endfor\n    endfor\n  endfor\n  return sort(keys(ret))\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/autoload/htmlcomplete.vim",
    "content": "\" Vim completion script\n\" Language:\tHTML and XHTML\n\" Maintainer:\tMikolaj Machowski ( mikmach AT wp DOT pl )\n\" Last Change:\t2006 Oct 19\n\" Modified:     othree <othree@gmail.com>\n\" Changes:      Add HTML5, WAI-ARIA support\n\" Last Change:\t2010 Sep 25\n\nif !exists('g:aria_attributes_complete')\n    let g:aria_attributes_complete = 1\nendif\n\nfunction! htmlcomplete#CompleteTags(findstart, base)\n  if a:findstart\n    \" locate the start of the word\n    let line = getline('.')\n    let start = col('.') - 1\n\tlet curline = line('.')\n\tlet compl_begin = col('.') - 2\n    while start >= 0 && line[start - 1] =~ '\\(\\k\\|[!:.-]\\)'\n\t\tlet start -= 1\n    endwhile\n\t\" Handling of entities {{{\n\tif start >= 0 && line[start - 1] =~ '&'\n\t\tlet b:entitiescompl = 1\n\t\tlet b:compl_context = ''\n\t\treturn start\n\tendif\n\t\" }}}\n\t\" Handling of <style> tag {{{\n\tlet stylestart = searchpair('<style\\>', '', '<\\/style\\>', \"bnW\")\n\tlet styleend   = searchpair('<style\\>', '', '<\\/style\\>', \"nW\")\n\tif stylestart != 0 && styleend != 0\n\t\tif stylestart <= curline && styleend >= curline\n\t\t\tlet start = col('.') - 1\n\t\t\tlet b:csscompl = 1\n\t\t\twhile start >= 0 && line[start - 1] =~ '\\(\\k\\|-\\)'\n\t\t\t\tlet start -= 1\n\t\t\tendwhile\n\t\tendif\n\tendif\n\t\" }}}\n\t\" Handling of <script> tag {{{\n\tlet scriptstart = searchpair('<script\\>', '', '<\\/script\\>', \"bnW\")\n\tlet scriptend   = searchpair('<script\\>', '', '<\\/script\\>', \"nW\")\n\tif scriptstart != 0 && scriptend != 0\n\t\tif scriptstart <= curline && scriptend >= curline\n\t\t\tlet start = col('.') - 1\n\t\t\tlet b:jscompl = 1\n\t\t\tlet b:jsrange = [scriptstart, scriptend]\n\t\t\twhile start >= 0 && line[start - 1] =~ '\\k'\n\t\t\t\tlet start -= 1\n\t\t\tendwhile\n\t\t\t\" We are inside of <script> tag. But we should also get contents\n\t\t\t\" of all linked external files and (secondary, less probably) other <script> tags\n\t\t\t\" This logic could possible be done in separate function - may be\n\t\t\t\" reused in events scripting (also with option could be reused for\n\t\t\t\" CSS\n\t\t\tlet b:js_extfiles = []\n\t\t\tlet l = line('.')\n\t\t\tlet c = col('.')\n\t\t\tcall cursor(1,1)\n\t\t\twhile search('<\\@<=script\\>', 'W') && line('.') <= l\n\t\t\t\tif synIDattr(synID(line('.'),col('.')-1,0),\"name\") !~? 'comment'\n\t\t\t\t\tlet sname = matchstr(getline('.'), '<script[^>]*src\\s*=\\s*\\([''\"]\\)\\zs.\\{-}\\ze\\1')\n\t\t\t\t\tif filereadable(sname)\n\t\t\t\t\t\tlet b:js_extfiles += readfile(sname)\n\t\t\t\t\tendif\n\t\t\t\tendif\n\t\t\tendwhile\n\t\t\tcall cursor(1,1)\n\t\t\tlet js_scripttags = []\n\t\t\twhile search('<script\\>', 'W') && line('.') < l\n\t\t\t\tif matchstr(getline('.'), '<script[^>]*src') == ''\n\t\t\t\t\tlet js_scripttag = getline(line('.'), search('</script>', 'W'))\n\t\t\t\t\tlet js_scripttags += js_scripttag\n\t\t\t\tendif\n\t\t\tendwhile\n\t\t\tlet b:js_extfiles += js_scripttags\n\t\t\tcall cursor(l,c)\n\t\t\tunlet! l c\n\t\tendif\n\tendif\n\t\" }}}\n\tif !exists(\"b:csscompl\") && !exists(\"b:jscompl\")\n\t\tlet b:compl_context = getline('.')[0:(compl_begin)]\n\t\tif b:compl_context !~ '<[^>]*$'\n\t\t\t\" Look like we may have broken tag. Check previous lines.\n\t\t\tlet i = 1\n\t\t\twhile 1\n\t\t\t\tlet context_line = getline(curline-i)\n\t\t\t\tif context_line =~ '<[^>]*$'\n\t\t\t\t\t\" Yep, this is this line\n\t\t\t\t\tlet context_lines = getline(curline-i, curline-1) + [b:compl_context]\n\t\t\t\t\tlet b:compl_context = join(context_lines, ' ')\n\t\t\t\t\tbreak\n\t\t\t\telseif context_line =~ '>[^<]*$' || i == curline\n\t\t\t\t\t\" We are in normal tag line, no need for completion at all\n\t\t\t\t\t\" OR reached first line without tag at all\n\t\t\t\t\tlet b:compl_context = ''\n\t\t\t\t\tbreak\n\t\t\t\tendif\n\t\t\t\tlet i += 1\n\t\t\tendwhile\n\t\t\t\" Make sure we don't have counter\n\t\t\tunlet! i\n\t\tendif\n\t\tlet b:compl_context = matchstr(b:compl_context, '.*\\zs<.*')\n\n\t\t\" Return proper start for on-events. Without that beginning of\n\t\t\" completion will be badly reported\n\t\tif b:compl_context =~? 'on[a-z]*\\s*=\\s*\\(''[^'']*\\|\"[^\"]*\\)$'\n\t\t\tlet start = col('.') - 1\n\t\t\twhile start >= 0 && line[start - 1] =~ '\\k'\n\t\t\t\tlet start -= 1\n\t\t\tendwhile\n\t\tendif\n\t\t\" If b:compl_context begins with <? we are inside of PHP code. It\n\t\t\" wasn't closed so PHP completion passed it to HTML\n\t\tif &filetype =~? 'php' && b:compl_context =~ '^<?'\n\t\t\tlet b:phpcompl = 1\n\t\t\tlet start = col('.') - 1\n\t\t\twhile start >= 0 && line[start - 1] =~ '[a-zA-Z_0-9\\x7f-\\xff$]'\n\t\t\t\tlet start -= 1\n\t\t\tendwhile\n\t\tendif\n\telse\n\t\tlet b:compl_context = getline('.')[0:compl_begin]\n\tendif\n    return start\n  else\n\t\" Initialize base return lists\n    let res = []\n    let res2 = []\n\t\" a:base is very short - we need context\n\tlet context = b:compl_context\n\t\" Check if we should do CSS completion inside of <style> tag\n\t\" or JS completion inside of <script> tag or PHP completion in case of <?\n\t\" tag AND &ft==php\n\tif exists(\"b:csscompl\")\n\t\tunlet! b:csscompl\n\t\tlet context = b:compl_context\n\t\tunlet! b:compl_context\n\t\treturn csscomplete#CompleteCSS(0, context)\n\telseif exists(\"b:jscompl\")\n\t\tunlet! b:jscompl\n\t\treturn javascriptcomplete#CompleteJS(0, a:base)\n\telseif exists(\"b:phpcompl\")\n\t\tunlet! b:phpcompl\n\t\tlet context = b:compl_context\n\t\treturn phpcomplete#CompletePHP(0, a:base)\n\telse\n\t\tif len(b:compl_context) == 0 && !exists(\"b:entitiescompl\")\n\t\t\treturn []\n\t\tendif\n\t\tlet context = matchstr(b:compl_context, '.\\zs.*')\n\tendif\n\tunlet! b:compl_context\n\t\" Entities completion {{{\n\tif exists(\"b:entitiescompl\")\n\t\tunlet! b:entitiescompl\n\n\t\tif !exists(\"b:html_doctype\")\n\t\t\tcall htmlcomplete#CheckDoctype()\n\t\tendif\n\t\tif !exists(\"b:html_omni\")\n\t\t\t\"runtime! autoload/xml/xhtml10s.vim\n\t\t\tcall htmlcomplete#LoadData()\n\t\tendif\n        if g:aria_attributes_complete == 1 && !exists(\"b:aria_omni\")\n            call htmlcomplete#LoadAria()\n        endif\n\n\t    let entities =  b:html_omni['vimxmlentities']\n\n\t\tif len(a:base) == 1\n\t\t\tfor m in entities\n\t\t\t\tif m =~ '^'.a:base\n\t\t\t\t\tcall add(res, m.';')\n\t\t\t\tendif\n\t\t\tendfor\n\t\t\treturn res\n\t\telse\n\t\t\tfor m in entities\n\t\t\t\tif m =~? '^'.a:base\n\t\t\t\t\tcall add(res, m.';')\n\t\t\t\telseif m =~? a:base\n\t\t\t\t\tcall add(res2, m.';')\n\t\t\t\tendif\n\t\t\tendfor\n\n\t\t\treturn res + res2\n\t\tendif\n\n\n\tendif\n\t\" }}}\n\tif context =~ '>'\n\t\t\" Generally if context contains > it means we are outside of tag and\n\t\t\" should abandon action - with one exception: <style> span { bo\n\t\tif context =~ 'style[^>]\\{-}>[^<]\\{-}$'\n\t\t\treturn csscomplete#CompleteCSS(0, context)\n\t\telseif context =~ 'script[^>]\\{-}>[^<]\\{-}$'\n\t\t\tlet b:jsrange = [line('.'), search('<\\/script\\>', 'nW')]\n\t\t\treturn javascriptcomplete#CompleteJS(0, context)\n\t\telse\n\t\t\treturn []\n\t\tendif\n\tendif\n\n\t\" If context contains > it means we are already outside of tag and we\n\t\" should abandon action\n\t\" If context contains white space it is attribute.\n\t\" It can be also value of attribute.\n\t\" We have to get first word to offer proper completions\n\tif context == ''\n\t\tlet tag = ''\n\telse\n\t\tlet tag = split(context)[0]\n\t\t\" Detect if tag is uppercase to return in proper case,\n\t\t\" we need to make it lowercase for processing\n\t\tif tag =~ '^\\u*$'\n\t\t\tlet uppercase_tag = 1\n\t\t\tlet tag = tolower(tag)\n\t\telse\n\t\t\tlet uppercase_tag = 0\n\t\tendif\n\tendif\n\t\" Get last word, it should be attr name\n\tlet attr = matchstr(context, '\\S\\+=\"[^\"]*$')\n    if attr == ''\n        let attr = matchstr(context, '.*\\s\\zs.*')\n    endif\n\t\" Possible situations where any prediction would be difficult:\n\t\" 1. Events attributes\n\tif context =~ '\\s'\n\t\t\" Sort out style, class, and on* cases\n\t\tif context =~? \"\\\\s\\\\(on[a-z]+\\\\|id\\\\|style\\\\|class\\\\)\\\\s*=\\\\s*[\\\"']\"\n\t\t\t\" Id, class completion {{{\n\t\t\tif context =~? \"\\\\(id\\\\|class\\\\)\\\\s*=\\\\s*[\\\"'][a-zA-Z0-9_ -]*$\"\n\t\t\t\tif context =~? \"class\\\\s*=\\\\s*[\\\"'][a-zA-Z0-9_ -]*$\"\n\t\t\t\t\tlet search_for = \"class\"\n\t\t\t\telseif context =~? \"id\\\\s*=\\\\s*[\\\"'][a-zA-Z0-9_ -]*$\"\n\t\t\t\t\tlet search_for = \"id\"\n\t\t\t\tendif\n\t\t\t\t\" Handle class name completion\n\t\t\t\t\" 1. Find lines of <link stylesheet>\n\t\t\t\t\" 1a. Check file for @import\n\t\t\t\t\" 2. Extract filename(s?) of stylesheet,\n\t\t\t\tcall cursor(1,1)\n\t\t\t\tlet head = getline(search('<head\\>'), search('<\\/head>'))\n\t\t\t\tlet headjoined = join(copy(head), ' ')\n\t\t\t\tif headjoined =~ '<style'\n\t\t\t\t\t\" Remove possibly confusing CSS operators\n\t\t\t\t\tlet stylehead = substitute(headjoined, '+>\\*[,', ' ', 'g')\n\t\t\t\t\tif search_for == 'class'\n\t\t\t\t\t\tlet styleheadlines = split(stylehead)\n\t\t\t\t\t\tlet headclasslines = filter(copy(styleheadlines), \"v:val =~ '\\\\([a-zA-Z0-9:]\\\\+\\\\)\\\\?\\\\.[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\telse\n\t\t\t\t\t\tlet stylesheet = split(headjoined, '[{}]')\n\t\t\t\t\t\t\" Get all lines which fit id syntax\n\t\t\t\t\t\tlet classlines = filter(copy(stylesheet), \"v:val =~ '#[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\t\t\" Filter out possible color definitions\n\t\t\t\t\t\tcall filter(classlines, \"v:val !~ ':\\\\s*#[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\t\t\" Filter out complex border definitions\n\t\t\t\t\t\tcall filter(classlines, \"v:val !~ '\\\\(none\\\\|hidden\\\\|dotted\\\\|dashed\\\\|solid\\\\|double\\\\|groove\\\\|ridge\\\\|inset\\\\|outset\\\\)\\\\s*#[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\t\tlet templines = join(classlines, ' ')\n\t\t\t\t\t\tlet headclasslines = split(templines)\n\t\t\t\t\t\tcall filter(headclasslines, \"v:val =~ '#[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\tendif\n\t\t\t\t\tlet internal = 1\n\t\t\t\telse\n\t\t\t\t\tlet internal = 0\n\t\t\t\tendif\n\t\t\t\tlet styletable = []\n\t\t\t\tlet secimportfiles = []\n\t\t\t\tlet filestable = filter(copy(head), \"v:val =~ '\\\\(@import\\\\|link.*stylesheet\\\\)'\")\n\t\t\t\tfor line in filestable\n\t\t\t\t\tif line =~ \"@import\"\n\t\t\t\t\t\tlet styletable += [matchstr(line, \"import\\\\s\\\\+\\\\(url(\\\\)\\\\?[\\\"']\\\\?\\\\zs\\\\f\\\\+\\\\ze\")]\n\t\t\t\t\telseif line =~ \"<link\"\n\t\t\t\t\t\tlet styletable += [matchstr(line, \"href\\\\s*=\\\\s*[\\\"']\\\\zs\\\\f\\\\+\\\\ze\")]\n\t\t\t\t\tendif\n\t\t\t\tendfor\n\t\t\t\tfor file in styletable\n\t\t\t\t\tif filereadable(file)\n\t\t\t\t\t\tlet stylesheet = readfile(file)\n\t\t\t\t\t\tlet secimport = filter(copy(stylesheet), \"v:val =~ '@import'\")\n\t\t\t\t\t\tif len(secimport) > 0\n\t\t\t\t\t\t\tfor line in secimport\n\t\t\t\t\t\t\t\tlet secfile = matchstr(line, \"import\\\\s\\\\+\\\\(url(\\\\)\\\\?[\\\"']\\\\?\\\\zs\\\\f\\\\+\\\\ze\")\n\t\t\t\t\t\t\t\tlet secfile = fnamemodify(file, \":p:h\").'/'.secfile\n\t\t\t\t\t\t\t\tlet secimportfiles += [secfile]\n\t\t\t\t\t\t\tendfor\n\t\t\t\t\t\tendif\n\t\t\t\t\tendif\n\t\t\t\tendfor\n\t\t\t\tlet cssfiles = styletable + secimportfiles\n\t\t\t\tlet classes = []\n\t\t\t\tfor file in cssfiles\n\t\t\t\t\tif filereadable(file)\n\t\t\t\t\t\tlet stylesheet = readfile(file)\n\t\t\t\t\t\tlet stylefile = join(stylesheet, ' ')\n\t\t\t\t\t\tlet stylefile = substitute(stylefile, '+>\\*[,', ' ', 'g')\n\t\t\t\t\t\tif search_for == 'class'\n\t\t\t\t\t\t\tlet stylesheet = split(stylefile)\n\t\t\t\t\t\t\tlet classlines = filter(copy(stylesheet), \"v:val =~ '\\\\([a-zA-Z0-9:]\\\\+\\\\)\\\\?\\\\.[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tlet stylesheet = split(stylefile, '[{}]')\n\t\t\t\t\t\t\t\" Get all lines which fit id syntax\n\t\t\t\t\t\t\tlet classlines = filter(copy(stylesheet), \"v:val =~ '#[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\t\t\t\" Filter out possible color definitions\n\t\t\t\t\t\t\tcall filter(classlines, \"v:val !~ ':\\\\s*#[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\t\t\t\" Filter out complex border definitions\n\t\t\t\t\t\t\tcall filter(classlines, \"v:val !~ '\\\\(none\\\\|hidden\\\\|dotted\\\\|dashed\\\\|solid\\\\|double\\\\|groove\\\\|ridge\\\\|inset\\\\|outset\\\\)\\\\s*#[a-zA-Z0-9_-]\\\\+'\")\n\t\t\t\t\t\t\tlet templines = join(classlines, ' ')\n\t\t\t\t\t\t\tlet stylelines = split(templines)\n\t\t\t\t\t\t\tlet classlines = filter(stylelines, \"v:val =~ '#[a-zA-Z0-9_-]\\\\+'\")\n\n\t\t\t\t\t\tendif\n                        \" We gathered classes definitions from all external files\n                        let classes += classlines\n\t\t\t\t\tendif\n\t\t\t\tendfor\n\t\t\t\tif internal == 1\n\t\t\t\t\tlet classes += headclasslines\n\t\t\t\tendif\n\n\t\t\t\tif search_for == 'class'\n\t\t\t\t\tlet elements = {}\n\t\t\t\t\tfor element in classes\n\t\t\t\t\t\tif element =~ '^\\.'\n\t\t\t\t\t\t\tlet class = matchstr(element, '^\\.\\zs[a-zA-Z][a-zA-Z0-9_-]*\\ze')\n\t\t\t\t\t\t\tlet class = substitute(class, ':.*', '', '')\n\t\t\t\t\t\t\tif has_key(elements, 'common')\n\t\t\t\t\t\t\t\tlet elements['common'] .= ' '.class\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tlet elements['common'] = class\n\t\t\t\t\t\t\tendif\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tlet class = matchstr(element, '[a-zA-Z1-6]*\\.\\zs[a-zA-Z][a-zA-Z0-9_-]*\\ze')\n\t\t\t\t\t\t\tlet tagname = tolower(matchstr(element, '[a-zA-Z1-6]*\\ze.'))\n\t\t\t\t\t\t\tif tagname != ''\n\t\t\t\t\t\t\t\tif has_key(elements, tagname)\n\t\t\t\t\t\t\t\t\tlet elements[tagname] .= ' '.class\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tlet elements[tagname] = class\n\t\t\t\t\t\t\t\tendif\n\t\t\t\t\t\t\tendif\n\t\t\t\t\t\tendif\n\t\t\t\t\tendfor\n\n\t\t\t\t\tif has_key(elements, tag) && has_key(elements, 'common')\n\t\t\t\t\t\tlet values = split(elements[tag].\" \".elements['common'])\n\t\t\t\t\telseif has_key(elements, tag) && !has_key(elements, 'common')\n\t\t\t\t\t\tlet values = split(elements[tag])\n\t\t\t\t\telseif !has_key(elements, tag) && has_key(elements, 'common')\n\t\t\t\t\t\tlet values = split(elements['common'])\n\t\t\t\t\telse\n\t\t\t\t\t\treturn []\n\t\t\t\t\tendif\n\n\t\t\t\telseif search_for == 'id'\n\t\t\t\t\t\" Find used IDs\n\t\t\t\t\t\" 1. Catch whole file\n\t\t\t\t\tlet filelines = getline(1, line('$'))\n\t\t\t\t\t\" 2. Find lines with possible id\n\t\t\t\t\tlet used_id_lines = filter(filelines, 'v:val =~ \"id\\\\s*=\\\\s*[\\\"''][a-zA-Z0-9_-]\\\\+\"')\n\t\t\t\t\t\" 3a. Join all filtered lines\n\t\t\t\t\tlet id_string = join(used_id_lines, ' ')\n\t\t\t\t\t\" 3b. And split them to be sure each id is in separate item\n\t\t\t\t\tlet id_list = split(id_string, 'id\\s*=\\s*')\n\t\t\t\t\t\" 4. Extract id values\n\t\t\t\t\tlet used_id = map(id_list, 'matchstr(v:val, \"[\\\"'']\\\\zs[a-zA-Z0-9_-]\\\\+\\\\ze\")')\n\t\t\t\t\tlet joined_used_id = ','.join(used_id, ',').','\n\n\t\t\t\t\tlet allvalues = map(classes, 'matchstr(v:val, \".*#\\\\zs[a-zA-Z0-9_-]\\\\+\")')\n\n\t\t\t\t\tlet values = []\n\n\t\t\t\t\tfor element in classes\n\t\t\t\t\t\tif joined_used_id !~ ','.element.','\n\t\t\t\t\t\t\tlet values += [element]\n\t\t\t\t\t\tendif\n\n\t\t\t\t\tendfor\n\n\t\t\t\tendif\n\n\t\t\t\t\" We need special version of sbase\n\t\t\t\tlet classbase = matchstr(context, \".*[\\\"']\")\n\t\t\t\tlet classquote = matchstr(classbase, '.$')\n\n\t\t\t\tlet entered_class = matchstr(attr, \".*=\\\\s*[\\\"']\\\\zs.*\")\n\n\t\t\t\tfor m in sort(values)\n\t\t\t\t\tif m =~? '^'.entered_class\n\t\t\t\t\t\tcall add(res, m . classquote)\n\t\t\t\t\telseif m =~? entered_class\n\t\t\t\t\t\tcall add(res2, m . classquote)\n\t\t\t\t\tendif\n\t\t\t\tendfor\n\n\t\t\t\treturn res + res2\n\n\t\t\telseif context =~? \"style\\\\s*=\\\\s*[\\\"'][^\\\"']*$\"\n\t\t\t\treturn csscomplete#CompleteCSS(0, context)\n\n\t\t\tendif\n\t\t\t\" }}}\n\t\t\t\" Complete on-events {{{\n\t\t\tif context =~? 'on[a-z]*\\s*=\\s*\\(''[^'']*\\|\"[^\"]*\\)$'\n\t\t\t\t\" We have to:\n\t\t\t\t\" 1. Find external files\n\t\t\t\tlet b:js_extfiles = []\n\t\t\t\tlet l = line('.')\n\t\t\t\tlet c = col('.')\n\t\t\t\tcall cursor(1,1)\n\t\t\t\twhile search('<\\@<=script\\>', 'W') && line('.') <= l\n\t\t\t\t\tif synIDattr(synID(line('.'),col('.')-1,0),\"name\") !~? 'comment'\n\t\t\t\t\t\tlet sname = matchstr(getline('.'), '<script[^>]*src\\s*=\\s*\\([''\"]\\)\\zs.\\{-}\\ze\\1')\n\t\t\t\t\t\tif filereadable(sname)\n\t\t\t\t\t\t\tlet b:js_extfiles += readfile(sname)\n\t\t\t\t\t\tendif\n\t\t\t\t\tendif\n\t\t\t\tendwhile\n\t\t\t\t\" 2. Find at least one <script> tag\n\t\t\t\tcall cursor(1,1)\n\t\t\t\tlet js_scripttags = []\n\t\t\t\twhile search('<script\\>', 'W') && line('.') < l\n\t\t\t\t\tif matchstr(getline('.'), '<script[^>]*src') == ''\n\t\t\t\t\t\tlet js_scripttag = getline(line('.'), search('</script>', 'W'))\n\t\t\t\t\t\tlet js_scripttags += js_scripttag\n\t\t\t\t\tendif\n\t\t\t\tendwhile\n\t\t\t\tlet b:js_extfiles += js_scripttags\n\n\t\t\t\t\" 3. Proper call for javascriptcomplete#CompleteJS\n\t\t\t\tcall cursor(l,c)\n\t\t\t\tlet js_context = matchstr(a:base, '\\k\\+$')\n\t\t\t\tlet js_shortcontext = substitute(a:base, js_context.'$', '', '')\n\t\t\t\tlet b:compl_context = context\n\t\t\t\tlet b:jsrange = [l, l]\n\t\t\t\tunlet! l c\n\t\t\t\treturn javascriptcomplete#CompleteJS(0, js_context)\n\n\t\t\tendif\n\n\t\t\t\" }}}\n\t\t\tlet stripbase = matchstr(context, \".*\\\\(on[a-zA-Z]*\\\\|style\\\\|class\\\\)\\\\s*=\\\\s*[\\\"']\\\\zs.*\")\n\t\t\t\" Now we have context stripped from all chars up to style/class.\n\t\t\t\" It may fail with some strange style value combinations.\n\t\t\tif stripbase !~ \"[\\\"']\"\n\t\t\t\treturn []\n\t\t\tendif\n\t\tendif\n\t\t\" Value of attribute completion {{{\n\t\t\" If attr contains =\\s*[\\\"'] we catched value of attribute\n\t\tif attr =~ \"=\\s*[\\\"']\" || attr =~ \"=\\s*$\"\n\t\t\t\" Let do attribute specific completion\n\t\t\tlet attrname = matchstr(attr, '.*\\ze\\s*=')\n\t\t\tlet entered_value = matchstr(attr, \".*=\\\\s*[\\\"']\\\\?\\\\zs.*\")\n\t\t\tlet values = []\n\t\t\t\" Load data {{{\n\t\t\tif !exists(\"b:html_doctype\")\n\t\t\t\tcall htmlcomplete#CheckDoctype()\n\t\t\tendif\n\t\t\tif !exists(\"b:html_omni\")\n\t\t\t\t\"runtime! autoload/xml/xhtml10s.vim\n\t\t\t\tcall htmlcomplete#LoadData()\n\t\t\tendif\n            if g:aria_attributes_complete == 1 && !exists(\"b:aria_omni\")\n                call htmlcomplete#LoadAria()\n            endif\n\t\t\t\" }}}\n\t\t\tif attrname == 'href'\n\t\t\t\t\" Now we are looking for local anchors defined by name or id\n\t\t\t\tif entered_value =~ '^#'\n\t\t\t\t\tlet file = join(getline(1, line('$')), ' ')\n\t\t\t\t\t\" Split it be sure there will be one id/name element in\n\t\t\t\t\t\" item, it will be also first word [a-zA-Z0-9_-] in element\n\t\t\t\t\tlet oneelement = split(file, \"\\\\(meta \\\\)\\\\@<!\\\\(name\\\\|id\\\\)\\\\s*=\\\\s*[\\\"']\")\n\t\t\t\t\tfor i in oneelement\n\t\t\t\t\t\tlet values += ['#'.matchstr(i, \"^[a-zA-Z][a-zA-Z0-9%_-]*\")]\n\t\t\t\t\tendfor\n\t\t\t\tendif\n\t\t\telse\n\t\t\t\tif has_key(b:html_omni, tag) && has_key(b:html_omni[tag][1], attrname)\n\t\t\t\t\tlet values = b:html_omni[tag][1][attrname]\n                elseif attrname =~ '^aria-' && exists(\"b:aria_omni\") && has_key(b:aria_omni['aria_attributes'], attrname)\n\t\t\t\t\tlet values = b:aria_omni['aria_attributes'][attrname]\n\t\t\t\telse\n\t\t\t\t\treturn []\n\t\t\t\tendif\n\t\t\tendif\n\n\t\t\tif len(values) == 0\n\t\t\t\treturn []\n            endif\n\n\t\t\t\" We need special version of sbase\n\t\t\tlet attrbase = matchstr(context, \".*[\\\"']\")\n\t\t\tlet attrquote = matchstr(attrbase, '.$')\n\t\t\tif attrquote !~ \"['\\\"]\"\n\t\t\t\tlet attrquoteopen = '\"'\n                let attrquote = '\"'\n\t\t\telse\n\t\t\t\tlet attrquoteopen = ''\n            endif\n            \" Multi value attributes don't need ending quote\n            let info = ''\n            if has_key(b:html_omni['vimxmlattrinfo'], attrname)\n                let info = b:html_omni['vimxmlattrinfo'][attrname][0]\n            elseif exists(\"b:aria_omni\") && has_key(b:aria_omni['vimariaattrinfo'], attrname)\n                let info = b:aria_omni['vimariaattrinfo'][attrname][0]\n            endif\n            if info =~ \"^\\\\*\"\n                let attrquote = ''\n            endif\n\n            if len(entered_value) > 0\n                if entered_value =~ \"\\\\s$\"\n                    let entered_value = ''\n                else\n                    let entered_value = split(entered_value)[-1]\n                endif\n            endif\n\t\t\tfor m in values\n\t\t\t\t\" This if is needed to not offer all completions as-is\n\t\t\t\t\" alphabetically but sort them. Those beginning with entered\n\t\t\t\t\" part will be as first choices\n\t\t\t\tif m =~ '^'.entered_value\n\t\t\t\t\tcall add(res, attrquoteopen . m . attrquote)\n\t\t\t\telseif m =~ entered_value\n\t\t\t\t\tcall add(res2, attrquoteopen . m . attrquote)\n\t\t\t\tendif\n\t\t\tendfor\n\n\t\t\treturn res + res2\n\n\t\tendif\n\t\t\" }}}\n\t\t\" Attribute completion {{{\n\t\t\" Shorten context to not include last word\n\t\tlet sbase = matchstr(context, '.*\\ze\\s.*')\n\n\t\t\" Load data {{{\n\t\tif !exists(\"b:html_doctype\")\n\t\t\tcall htmlcomplete#CheckDoctype()\n\t\tendif\n\t\tif !exists(\"b:html_omni\")\n\t\t\tcall htmlcomplete#LoadData()\n\t\tendif\n        if g:aria_attributes_complete == 1 && !exists(\"b:aria_omni\")\n            call htmlcomplete#LoadAria()\n        endif\n\t\t\" }}}\n\n\t\tif has_key(b:html_omni, tag)\n\t\t\tlet attrs = keys(b:html_omni[tag][1])\n\t\telse\n\t\t\treturn []\n        endif\n        if exists(\"b:aria_omni\")\n            let roles = []\n            if has_key(b:aria_omni['default_role'], tag)\n                let roles = [b:aria_omni['default_role'][tag]]\n            endif\n            if context =~ 'role='\n                let start = matchend(context, \"role=['\\\"]\")\n                let end   = matchend(context, \"[a-z ]\\\\+['\\\"]\", start)\n                if start != -1 && end != -1\n                    let roles = split(strpart(context, start, end-start-1), \" \")\n                endif\n            endif\n            for i in range(len(roles))\n                let role = roles[i]\n                if has_key(b:aria_omni['role_attributes'], role)\n                    let attrs = extend(attrs, b:aria_omni['role_attributes'][role])\n                endif\n            endfor\n        endif\n\n\t\tfor m in sort(attrs)\n\t\t\tif m =~ '^'.attr\n\t\t\t\tcall add(res, m)\n\t\t\telseif m =~ attr\n\t\t\t\tcall add(res2, m)\n\t\t\tendif\n\t\tendfor\n\t\t\"let menu = res + res2\n\t\tlet menu = res\n\t\tif has_key(b:html_omni, 'vimxmlattrinfo') || (exists(\"b:aria_omni\") && has_key(b:aria_omni, 'vimariaattrinfo'))\n\t\t\tlet final_menu = []\n\t\t\tfor i in range(len(menu))\n\t\t\t\tlet item = menu[i]\n\t\t\t\tif has_key(b:html_omni['vimxmlattrinfo'], item)\n\t\t\t\t\tlet m_menu = b:html_omni['vimxmlattrinfo'][item][0]\n\t\t\t\t\tlet m_info = b:html_omni['vimxmlattrinfo'][item][1]\n                elseif exists(\"b:aria_omni\") && has_key(b:aria_omni['vimariaattrinfo'], item)\n\t\t\t\t\tlet m_menu = b:aria_omni['vimariaattrinfo'][item][0]\n\t\t\t\t\tlet m_info = b:aria_omni['vimariaattrinfo'][item][1]\n                else\n\t\t\t\t\tlet m_menu = ''\n\t\t\t\t\tlet m_info = ''\n                endif\n                if item =~ '^aria-' && exists(\"b:aria_omni\")\n                    if len(b:aria_omni['aria_attributes'][item]) > 0 && b:aria_omni['aria_attributes'][item][0] =~ '^\\(BOOL\\|'.item.'\\)$'\n                        let item = item\n                        let m_menu = 'Bool'\n                    else\n                        let item .= '=\"'\n                    endif\n                else\n                    if len(b:html_omni[tag][1][item]) > 0 && b:html_omni[tag][1][item][0] =~ '^\\(BOOL\\|'.item.'\\)$'\n                        let item = item\n                        let m_menu = 'Bool'\n                    else\n                        let item .= '=\"'\n                    endif\n                endif\n\t\t\t\tlet final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]\n\t\t\tendfor\n\t\telse\n\t\t\tlet final_menu = []\n\t\t\tfor i in range(len(menu))\n\t\t\t\tlet item = menu[i]\n\t\t\t\tif len(b:html_omni[tag][1][item]) > 0 && b:html_omni[tag][1][item][0] =~ '^\\(BOOL\\|'.item.'\\)$'\n\t\t\t\t\tlet item = item\n\t\t\t\telse\n\t\t\t\t\tlet item .= '=\"'\n\t\t\t\tendif\n\t\t\t\tlet final_menu += [item]\n\t\t\tendfor\n\t\t\treturn final_menu\n\n\t\tendif\n\t\treturn final_menu\n\n\tendif\n\t\" }}}\n\t\" Close tag {{{\n\tlet b:unaryTagsStack = \"area base br col command embed hr img input keygen link meta param source track wbr\"\n\tif context =~ '^\\/'\n\t\tif context =~ '^\\/.'\n\t\t\treturn []\n\t\telse\n\t\t\tlet opentag = xmlcomplete#GetLastOpenTag(\"b:unaryTagsStack\")\n\t\t\treturn [opentag.\">\"]\n\t\tendif\n\tendif\n\t\" }}}\n\t\" Load data {{{\n\tif !exists(\"b:html_doctype\")\n\t\tcall htmlcomplete#CheckDoctype()\n\tendif\n\tif !exists(\"b:html_omni\")\n\t\t\"runtime! autoload/xml/xhtml10s.vim\n\t\tcall htmlcomplete#LoadData()\n\tendif\n    if g:aria_attributes_complete == 1 && !exists(\"b:aria_omni\")\n        call htmlcomplete#LoadAria()\n    endif\n\t\" }}}\n\t\" Tag completion {{{\n\t\" Deal with tag completion.\n\tlet opentag = tolower(xmlcomplete#GetLastOpenTag(\"b:unaryTagsStack\"))\n\t\" MM: TODO: GLOT works always the same but with some weird situation it\n\t\" behaves as intended in HTML but screws in PHP\n\tif opentag == '' || &filetype == 'php' && !has_key(b:html_omni, opentag)\n\t\t\" Hack for sometimes failing GetLastOpenTag.\n\t\t\" As far as I tested fail isn't GLOT fault but problem\n\t\t\" of invalid document - not properly closed tags and other mish-mash.\n\t\t\" Also when document is empty. Return list of *all* tags.\n\t    let tags = keys(b:html_omni)\n\t\tcall filter(tags, 'v:val !~ \"^vimxml\"')\n\telse\n\t\tif has_key(b:html_omni, opentag)\n\t\t\tlet tags = b:html_omni[opentag][0]\n\t\telse\n\t\t\treturn []\n\t\tendif\n\tendif\n\t\" }}}\n\n\tif exists(\"uppercase_tag\") && uppercase_tag == 1\n\t\tlet context = tolower(context)\n\tendif\n\t\" Handle XML keywords: DOCTYPE\n\tif opentag == ''\n\t\tlet tags = [\n\t\t\t\t\\ '!DOCTYPE html>',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Frameset//EN\" \"http://www.w3.org/TR/REC-html40/frameset.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" \"http://www.w3.org/TR/html4/frameset.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">',\n\t\t\t\t\\ '!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/1999/xhtml\">'\n\t\t\t\t\\ ] + sort(tags)\n\tendif\n\n\t\"for m in sort(tags)\n\tfor m in tags\n\t\tif m =~ '^'.context\n\t\t\tcall add(res, m)\n\t\telseif m =~ context\n\t\t\tcall add(res2, m)\n\t\tendif\n\tendfor\n\tlet menu = res + res2\n\tif has_key(b:html_omni, 'vimxmltaginfo')\n\t\tlet final_menu = []\n\t\tfor i in range(len(menu))\n\t\t\tlet item = menu[i]\n\t\t\tif has_key(b:html_omni['vimxmltaginfo'], item)\n\t\t\t\tlet m_menu = b:html_omni['vimxmltaginfo'][item][0]\n\t\t\t\tlet m_info = b:html_omni['vimxmltaginfo'][item][1]\n\t\t\telse\n\t\t\t\tlet m_menu = ''\n\t\t\t\tlet m_info = ''\n\t\t\tendif\n\t\t\tif &filetype == 'html' && exists(\"uppercase_tag\") && uppercase_tag == 1 && item !~ 'DOCTYPE'\n\t\t\t\tlet item = toupper(item)\n\t\t\tendif\n\t\t\tif item =~ 'DOCTYPE'\n                if item =~ 'DTD'\n                    let abbr = 'DOCTYPE '.matchstr(item, 'DTD \\zsX\\?HTML .\\{-}\\ze\\/\\/')\n                else\n                    let abbr = 'DOCTYPE HTML 5'\n                endif\n\t\t\telse\n\t\t\t\tlet abbr = item\n\t\t\tendif\n\t\t\tlet final_menu += [{'abbr':abbr, 'word':item, 'menu':m_menu, 'info':m_info}]\n\t\tendfor\n\telse\n\t\tlet final_menu = menu\n\tendif\n\treturn final_menu\n\n\t\" }}}\n  endif\nendfunction\n\nfunction! htmlcomplete#LoadAria() \" {{{\n    runtime! autoload/xml/aria.vim\n    if exists(\"g:xmldata_aria\")\n        \\ && has_key(g:xmldata_aria, 'default_role') \n        \\ && has_key(g:xmldata_aria, 'role_attributes') \n        \\ && has_key(g:xmldata_aria, 'vimariaattrinfo')\n        \\ && has_key(g:xmldata_aria, 'aria_attributes')\n        let b:aria_omni = g:xmldata_aria\n    else\n        let g:aria_attributes_complete = 0\n    endif\nendfunction\n\" }}}\nfunction! htmlcomplete#LoadData() \" {{{\n\tif !exists(\"b:html_omni_flavor\")\n\t\tif &filetype == 'html'\n\t\t\tlet b:html_omni_flavor = 'html401t'\n\t\telse\n\t\t\tlet b:html_omni_flavor = 'xhtml10s'\n\t\tendif\n\tendif\n\t\" With that if we still have bloated memory but create new buffer\n\t\" variables only by linking to existing g:variable, not sourcing whole\n\t\" file.\n\tif exists('g:xmldata_'.b:html_omni_flavor)\n\t\texe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor\n\telse\n\t\texe 'runtime! autoload/xml/'.b:html_omni_flavor.'.vim'\n\t\texe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor\n\tendif\nendfunction\n\" }}}\nfunction! htmlcomplete#CheckDoctype() \" {{{\n\tif exists('b:html_omni_flavor')\n\t\tlet old_flavor = b:html_omni_flavor\n\telse\n\t\tlet old_flavor = ''\n\tendif\n\tlet i = 1\n\twhile i < 10 && i < line(\"$\")\n\t\tlet line = getline(i)\n\t\tif line =~ '<!DOCTYPE.*\\<DTD HTML 3\\.2'\n\t\t\tlet b:html_omni_flavor = 'html32'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD HTML 4\\.0 Transitional'\n\t\t\tlet b:html_omni_flavor = 'html40t'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD HTML 4\\.0 Frameset'\n\t\t\tlet b:html_omni_flavor = 'html40f'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD HTML 4\\.0'\n\t\t\tlet b:html_omni_flavor = 'html40s'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD HTML 4\\.01 Transitional'\n\t\t\tlet b:html_omni_flavor = 'html401t'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD HTML 4\\.01 Frameset'\n\t\t\tlet b:html_omni_flavor = 'html401f'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD HTML 4\\.01'\n\t\t\tlet b:html_omni_flavor = 'html401s'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD XHTML 1\\.0 Transitional'\n\t\t\tlet b:html_omni_flavor = 'xhtml10t'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD XHTML 1\\.0 Frameset'\n\t\t\tlet b:html_omni_flavor = 'xhtml10f'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD XHTML 1\\.0 Strict'\n\t\t\tlet b:html_omni_flavor = 'xhtml10s'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE.*\\<DTD XHTML 1\\.1'\n\t\t\tlet b:html_omni_flavor = 'xhtml11'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\telseif line =~ '<!DOCTYPE html'\n\t\t\tlet b:html_omni_flavor = 'html5'\n\t\t\tlet b:html_doctype = 1\n\t\t\tbreak\n\t\tendif\n\t\tlet i += 1\n\tendwhile\n\tif !exists(\"b:html_doctype\")\n\t\treturn\n\telse\n\t\t\" Tie g:xmldata with b:html_omni this way we need to sourca data file only\n\t\t\" once, not every time per buffer.\n\t\tif old_flavor == b:html_omni_flavor\n\t\t\treturn\n\t\telse\n\t\t\tif exists('g:xmldata_'.b:html_omni_flavor)\n\t\t\t\texe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor\n\t\t\telse\n\t\t\t\texe 'runtime! autoload/xml/'.b:html_omni_flavor.'.vim'\n\t\t\t\texe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor\n\t\t\tendif\n\t\t\treturn\n\t\tendif\n\tendif\nendfunction\n\" }}}\n\" vim:set foldmethod=marker:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/autoload/rubycomplete.vim",
    "content": "\" Vim completion script\n\" Language:             Ruby\n\" Maintainer:           Mark Guzman <segfault@hasno.info>\n\" URL:                  https://github.com/vim-ruby/vim-ruby\n\" Release Coordinator:  Doug Kearns <dougkearns@gmail.com>\n\" Maintainer Version:   0.8.1\n\" ----------------------------------------------------------------------------\n\"\n\" Ruby IRB/Complete author: Keiju ISHITSUKA(keiju@ishitsuka.com)\n\" ----------------------------------------------------------------------------\n\n\" {{{ requirement checks\n\nfunction! s:ErrMsg(msg)\n    echohl ErrorMsg\n    echo a:msg\n    echohl None\nendfunction\n\nif !has('ruby')\n    call s:ErrMsg( \"Error: Rubycomplete requires vim compiled with +ruby\" )\n    call s:ErrMsg( \"Error: falling back to syntax completion\" )\n    \" lets fall back to syntax completion\n    setlocal omnifunc=syntaxcomplete#Complete\n    finish\nendif\n\nif version < 700\n    call s:ErrMsg( \"Error: Required vim >= 7.0\" )\n    finish\nendif\n\" }}} requirement checks\n\n\" {{{ configuration failsafe initialization\nif !exists(\"g:rubycomplete_rails\")\n    let g:rubycomplete_rails = 0\nendif\n\nif !exists(\"g:rubycomplete_classes_in_global\")\n    let g:rubycomplete_classes_in_global = 0\nendif\n\nif !exists(\"g:rubycomplete_buffer_loading\")\n    let g:rubycomplete_buffer_loading = 0\nendif\n\nif !exists(\"g:rubycomplete_include_object\")\n    let g:rubycomplete_include_object = 0\nendif\n\nif !exists(\"g:rubycomplete_include_objectspace\")\n    let g:rubycomplete_include_objectspace = 0\nendif\n\" }}} configuration failsafe initialization\n\n\" {{{ vim-side support functions\nlet s:rubycomplete_debug = 0\n\nfunction! s:dprint(msg)\n    if s:rubycomplete_debug == 1\n        echom a:msg\n    endif\nendfunction\n\nfunction! s:GetBufferRubyModule(name, ...)\n    if a:0 == 1\n        let [snum,enum] = s:GetBufferRubyEntity(a:name, \"module\", a:1)\n    else\n        let [snum,enum] = s:GetBufferRubyEntity(a:name, \"module\")\n    endif\n    return snum . '..' . enum\nendfunction\n\nfunction! s:GetBufferRubyClass(name, ...)\n    if a:0 >= 1\n        let [snum,enum] = s:GetBufferRubyEntity(a:name, \"class\", a:1)\n    else\n        let [snum,enum] = s:GetBufferRubyEntity(a:name, \"class\")\n    endif\n    return snum . '..' . enum\nendfunction\n\nfunction! s:GetBufferRubySingletonMethods(name)\nendfunction\n\nfunction! s:GetBufferRubyEntity( name, type, ... )\n    let lastpos = getpos(\".\")\n    let lastline = lastpos\n    if (a:0 >= 1)\n        let lastline = [ 0, a:1, 0, 0 ]\n        call cursor( a:1, 0 )\n    endif\n\n    let stopline = 1\n\n    let crex = '^\\s*\\<' . a:type . '\\>\\s*\\<' . escape(a:name, '*') . '\\>\\s*\\(<\\s*.*\\s*\\)\\?'\n    let [lnum,lcol] = searchpos( crex, 'w' )\n    \"let [lnum,lcol] = searchpairpos( crex . '\\zs', '', '\\(end\\|}\\)', 'w' )\n\n    if lnum == 0 && lcol == 0\n        call cursor(lastpos[1], lastpos[2])\n        return [0,0]\n    endif\n\n    let curpos = getpos(\".\")\n    let [enum,ecol] = searchpairpos( crex, '', '\\(end\\|}\\)', 'wr' )\n    call cursor(lastpos[1], lastpos[2])\n\n    if lnum > enum\n        return [0,0]\n    endif\n    \" we found a the class def\n    return [lnum,enum]\nendfunction\n\nfunction! s:IsInClassDef()\n    return s:IsPosInClassDef( line('.') )\nendfunction\n\nfunction! s:IsPosInClassDef(pos)\n    let [snum,enum] = s:GetBufferRubyEntity( '.*', \"class\" )\n    let ret = 'nil'\n\n    if snum < a:pos && a:pos < enum\n        let ret = snum . '..' . enum\n    endif\n\n    return ret\nendfunction\n\nfunction! s:GetRubyVarType(v)\n    let stopline = 1\n    let vtp = ''\n    let pos = getpos('.')\n    let sstr = '^\\s*#\\s*@var\\s*'.escape(a:v, '*').'\\>\\s\\+[^ \\t]\\+\\s*$'\n    let [lnum,lcol] = searchpos(sstr,'nb',stopline)\n    if lnum != 0 && lcol != 0\n        call setpos('.',pos)\n        let str = getline(lnum)\n        let vtp = substitute(str,sstr,'\\1','')\n        return vtp\n    endif\n    call setpos('.',pos)\n    let ctors = '\\(now\\|new\\|open\\|get_instance'\n    if exists('g:rubycomplete_rails') && g:rubycomplete_rails == 1 && s:rubycomplete_rails_loaded == 1\n        let ctors = ctors.'\\|find\\|create'\n    else\n    endif\n    let ctors = ctors.'\\)'\n\n    let fstr = '=\\s*\\([^ \\t]\\+.' . ctors .'\\>\\|[\\[{\"''/]\\|%[xwQqr][(\\[{@]\\|[A-Za-z0-9@:\\-()\\.]\\+...\\?\\|lambda\\|&\\)'\n    let sstr = ''.escape(a:v, '*').'\\>\\s*[+\\-*/]*'.fstr\n    let [lnum,lcol] = searchpos(sstr,'nb',stopline)\n    if lnum != 0 && lcol != 0\n        let str = matchstr(getline(lnum),fstr,lcol)\n        let str = substitute(str,'^=\\s*','','')\n\n        call setpos('.',pos)\n        if str == '\"' || str == '''' || stridx(tolower(str), '%q[') != -1\n            return 'String'\n        elseif str == '[' || stridx(str, '%w[') != -1\n            return 'Array'\n        elseif str == '{'\n            return 'Hash'\n        elseif str == '/' || str == '%r{'\n            return 'Regexp'\n        elseif strlen(str) >= 4 && stridx(str,'..') != -1\n            return 'Range'\n        elseif stridx(str, 'lambda') != -1 || str == '&'\n            return 'Proc'\n        elseif strlen(str) > 4\n            let l = stridx(str,'.')\n            return str[0:l-1]\n        end\n        return ''\n    endif\n    call setpos('.',pos)\n    return ''\nendfunction\n\n\"}}} vim-side support functions\n\n\"{{{ vim-side completion function\nfunction! rubycomplete#Init()\n    execute \"ruby VimRubyCompletion.preload_rails\"\nendfunction\n\nfunction! rubycomplete#Complete(findstart, base)\n     \"findstart = 1 when we need to get the text length\n    if a:findstart\n        let line = getline('.')\n        let idx = col('.')\n        while idx > 0\n            let idx -= 1\n            let c = line[idx-1]\n            if c =~ '\\w'\n                continue\n            elseif ! c =~ '\\.'\n                idx = -1\n                break\n            else\n                break\n            endif\n        endwhile\n\n        return idx\n    \"findstart = 0 when we need to return the list of completions\n    else\n        let g:rubycomplete_completions = []\n        execute \"ruby VimRubyCompletion.get_completions('\" . a:base . \"')\"\n        return g:rubycomplete_completions\n    endif\nendfunction\n\"}}} vim-side completion function\n\n\"{{{ ruby-side code\nfunction! s:DefRuby()\nruby << RUBYEOF\n# {{{ ruby completion\n\nbegin\n    require 'rubygems' # let's assume this is safe...?\nrescue Exception\n    #ignore?\nend\nclass VimRubyCompletion\n# {{{ constants\n  @@debug = false\n  @@ReservedWords = [\n        \"BEGIN\", \"END\",\n        \"alias\", \"and\",\n        \"begin\", \"break\",\n        \"case\", \"class\",\n        \"def\", \"defined\", \"do\",\n        \"else\", \"elsif\", \"end\", \"ensure\",\n        \"false\", \"for\",\n        \"if\", \"in\",\n        \"module\",\n        \"next\", \"nil\", \"not\",\n        \"or\",\n        \"redo\", \"rescue\", \"retry\", \"return\",\n        \"self\", \"super\",\n        \"then\", \"true\",\n        \"undef\", \"unless\", \"until\",\n        \"when\", \"while\",\n        \"yield\",\n      ]\n\n  @@Operators = [ \"%\", \"&\", \"*\", \"**\", \"+\",  \"-\",  \"/\",\n        \"<\", \"<<\", \"<=\", \"<=>\", \"==\", \"===\", \"=~\", \">\", \">=\", \">>\",\n        \"[]\", \"[]=\", \"^\", ]\n# }}} constants\n\n# {{{ buffer analysis magic\n  def load_requires\n    buf = VIM::Buffer.current\n    enum = buf.line_number\n    nums = Range.new( 1, enum )\n    nums.each do |x|\n      ln = buf[x]\n      begin\n        eval( \"require %s\" % $1 ) if /.*require\\s*(.*)$/.match( ln )\n      rescue Exception\n        #ignore?\n      end\n    end\n  end\n\n  def load_gems\n    fpath = VIM::evaluate(\"get(g:, 'rubycomplete_gemfile_path', 'Gemfile')\")\n    return unless File.file?(fpath) && File.readable?(fpath)\n    want_bundler = VIM::evaluate(\"get(g:, 'rubycomplete_use_bundler')\")\n    parse_file = !want_bundler\n    begin\n      require 'bundler'\n      Bundler.setup\n      Bundler.require\n    rescue Exception\n      parse_file = true\n    end\n    if parse_file\n      File.new(fpath).each_line do |line|\n        begin\n          require $1 if /\\s*gem\\s*['\"]([^'\"]+)/.match(line)\n        rescue Exception\n        end\n      end\n    end\n  end\n\n  def load_buffer_class(name)\n    dprint \"load_buffer_class(%s) START\" % name\n    classdef = get_buffer_entity(name, 's:GetBufferRubyClass(\"%s\")')\n    return if classdef == nil\n\n    pare = /^\\s*class\\s*(.*)\\s*<\\s*(.*)\\s*\\n/.match( classdef )\n    load_buffer_class( $2 ) if pare != nil  && $2 != name # load parent class if needed\n\n    mixre = /.*\\n\\s*(include|prepend)\\s*(.*)\\s*\\n/.match( classdef )\n    load_buffer_module( $2 ) if mixre != nil && $2 != name # load mixins if needed\n\n    begin\n      eval classdef\n    rescue Exception\n      VIM::evaluate( \"s:ErrMsg( 'Problem loading class \\\"%s\\\", was it already completed?' )\" % name )\n    end\n    dprint \"load_buffer_class(%s) END\" % name\n  end\n\n  def load_buffer_module(name)\n    dprint \"load_buffer_module(%s) START\" % name\n    classdef = get_buffer_entity(name, 's:GetBufferRubyModule(\"%s\")')\n    return if classdef == nil\n\n    begin\n      eval classdef\n    rescue Exception\n      VIM::evaluate( \"s:ErrMsg( 'Problem loading module \\\"%s\\\", was it already completed?' )\" % name )\n    end\n    dprint \"load_buffer_module(%s) END\" % name\n  end\n\n  def get_buffer_entity(name, vimfun)\n    loading_allowed = VIM::evaluate(\"exists('g:rubycomplete_buffer_loading') && g:rubycomplete_buffer_loading\")\n    return nil if loading_allowed.to_i.zero?\n    return nil if /(\\\"|\\')+/.match( name )\n    buf = VIM::Buffer.current\n    nums = eval( VIM::evaluate( vimfun % name ) )\n    return nil if nums == nil\n    return nil if nums.min == nums.max && nums.min == 0\n\n    dprint \"get_buffer_entity START\"\n    visited = []\n    clscnt = 0\n    bufname = VIM::Buffer.current.name\n    classdef = \"\"\n    cur_line = VIM::Buffer.current.line_number\n    while (nums != nil && !(nums.min == 0 && nums.max == 0) )\n      dprint \"visited: %s\" % visited.to_s\n      break if visited.index( nums )\n      visited << nums\n\n      nums.each do |x|\n        if x != cur_line\n          next if x == 0\n          ln = buf[x]\n          if /^\\s*(module|class|def|include)\\s+/.match(ln)\n            clscnt += 1 if $1 == \"class\"\n            #dprint \"\\$1$1\n            classdef += \"%s\\n\" % ln\n            classdef += \"end\\n\" if /def\\s+/.match(ln)\n            dprint ln\n          end\n        end\n      end\n\n      nm = \"%s(::.*)*\\\", %s, \\\"\" % [ name, nums.last ]\n      nums = eval( VIM::evaluate( vimfun % nm ) )\n      dprint \"nm: \\\"%s\\\"\" % nm\n      dprint \"vimfun: %s\" % (vimfun % nm)\n      dprint \"got nums: %s\" % nums.to_s\n    end\n    if classdef.length > 1\n        classdef += \"end\\n\"*clscnt\n        # classdef = \"class %s\\n%s\\nend\\n\" % [ bufname.gsub( /\\/|\\\\/, \"_\" ), classdef ]\n    end\n\n    dprint \"get_buffer_entity END\"\n    dprint \"classdef====start\"\n    lns = classdef.split( \"\\n\" )\n    lns.each { |x| dprint x }\n    dprint \"classdef====end\"\n    return classdef\n  end\n\n  def get_var_type( receiver )\n    if /(\\\"|\\')+/.match( receiver )\n      \"String\"\n    else\n      VIM::evaluate(\"s:GetRubyVarType('%s')\" % receiver)\n    end\n  end\n\n  def dprint( txt )\n    print txt if @@debug\n  end\n\n  def escape_vim_singlequote_string(str)\n    str.to_s.gsub(/'/,\"\\\\'\")\n  end\n\n  def get_buffer_entity_list( type )\n    # this will be a little expensive.\n    loading_allowed = VIM::evaluate(\"exists('g:rubycomplete_buffer_loading') && g:rubycomplete_buffer_loading\")\n    allow_aggressive_load = VIM::evaluate(\"exists('g:rubycomplete_classes_in_global') && g:rubycomplete_classes_in_global\")\n    return [] if allow_aggressive_load.to_i.zero? || loading_allowed.to_i.zero?\n\n    buf = VIM::Buffer.current\n    eob = buf.length\n    ret = []\n    rg = 1..eob\n    re = eval( \"/^\\s*%s\\s*([A-Za-z0-9_:-]*)(\\s*<\\s*([A-Za-z0-9_:-]*))?\\s*/\" % type )\n\n    rg.each do |x|\n      if re.match( buf[x] )\n        next if type == \"def\" && eval( VIM::evaluate(\"s:IsPosInClassDef(%s)\" % x) ) != nil\n        ret.push $1\n      end\n    end\n\n    return ret\n  end\n\n  def get_buffer_modules\n    return get_buffer_entity_list( \"modules\" )\n  end\n\n  def get_buffer_methods\n    return get_buffer_entity_list( \"def\" )\n  end\n\n  def get_buffer_classes\n    return get_buffer_entity_list( \"class\" )\n  end\n\n\n  def load_rails\n    allow_rails = VIM::evaluate(\"exists('g:rubycomplete_rails') && g:rubycomplete_rails\")\n    return if allow_rails.to_i.zero?\n\n    buf_path = VIM::evaluate('expand(\"%:p\")')\n    file_name = VIM::evaluate('expand(\"%:t\")')\n    vim_dir = VIM::evaluate('getcwd()')\n    file_dir = buf_path.gsub( file_name, '' )\n    file_dir.gsub!( /\\\\/, \"/\" )\n    vim_dir.gsub!( /\\\\/, \"/\" )\n    vim_dir << \"/\"\n    dirs = [ vim_dir, file_dir ]\n    sdirs = [ \"\", \"./\", \"../\", \"../../\", \"../../../\", \"../../../../\" ]\n    rails_base = nil\n\n    dirs.each do |dir|\n      sdirs.each do |sub|\n        trail = \"%s%s\" % [ dir, sub ]\n        tcfg = \"%sconfig\" % trail\n\n        if File.exists?( tcfg )\n          rails_base = trail\n          break\n        end\n      end\n      break if rails_base\n    end\n\n    return if rails_base == nil\n    $:.push rails_base unless $:.index( rails_base )\n\n    rails_config = rails_base + \"config/\"\n    rails_lib = rails_base + \"lib/\"\n    $:.push rails_config unless $:.index( rails_config )\n    $:.push rails_lib unless $:.index( rails_lib )\n\n    bootfile = rails_config + \"boot.rb\"\n    envfile = rails_config + \"environment.rb\"\n    if File.exists?( bootfile ) && File.exists?( envfile )\n      begin\n        require bootfile\n        require envfile\n        begin\n          require 'console_app'\n          require 'console_with_helpers'\n        rescue Exception\n          dprint \"Rails 1.1+ Error %s\" % $!\n          # assume 1.0\n        end\n        #eval( \"Rails::Initializer.run\" ) #not necessary?\n        VIM::command('let s:rubycomplete_rails_loaded = 1')\n        dprint \"rails loaded\"\n      rescue Exception\n        dprint \"Rails Error %s\" % $!\n        VIM::evaluate( \"s:ErrMsg('Error loading rails environment')\" )\n      end\n    end\n  end\n\n  def get_rails_helpers\n    allow_rails = VIM::evaluate(\"exists('g:rubycomplete_rails') && g:rubycomplete_rails\")\n    rails_loaded = VIM::evaluate('s:rubycomplete_rails_loaded')\n    return [] if allow_rails.to_i.zero? || rails_loaded.to_i.zero?\n\n    buf_path = VIM::evaluate('expand(\"%:p\")')\n    buf_path.gsub!( /\\\\/, \"/\" )\n    path_elm = buf_path.split( \"/\" )\n    dprint \"buf_path: %s\" % buf_path\n    types = [ \"app\", \"db\", \"lib\", \"test\", \"components\", \"script\" ]\n\n    i = nil\n    ret = []\n    type = nil\n    types.each do |t|\n      i = path_elm.index( t )\n      break if i\n    end\n    type = path_elm[i]\n    type.downcase!\n\n    dprint \"type: %s\" % type\n    case type\n      when \"app\"\n        i += 1\n        subtype = path_elm[i]\n        subtype.downcase!\n\n        dprint \"subtype: %s\" % subtype\n        case subtype\n          when \"views\"\n            ret += ActionView::Base.instance_methods\n            ret += ActionView::Base.methods\n          when \"controllers\"\n            ret += ActionController::Base.instance_methods\n            ret += ActionController::Base.methods\n          when \"models\"\n            ret += ActiveRecord::Base.instance_methods\n            ret += ActiveRecord::Base.methods\n        end\n\n      when \"db\"\n        ret += ActiveRecord::ConnectionAdapters::SchemaStatements.instance_methods\n        ret += ActiveRecord::ConnectionAdapters::SchemaStatements.methods\n    end\n\n\n    return ret\n  end\n\n  def add_rails_columns( cls )\n    allow_rails = VIM::evaluate(\"exists('g:rubycomplete_rails') && g:rubycomplete_rails\")\n    rails_loaded = VIM::evaluate('s:rubycomplete_rails_loaded')\n    return [] if allow_rails.to_i.zero? || rails_loaded.to_i.zero?\n\n    begin\n        eval( \"#{cls}.establish_connection\" )\n        return [] unless eval( \"#{cls}.ancestors.include?(ActiveRecord::Base).to_s\" )\n        col = eval( \"#{cls}.column_names\" )\n        return col if col\n    rescue\n        dprint \"add_rails_columns err: (cls: %s) %s\" % [ cls, $! ]\n        return []\n    end\n    return []\n  end\n\n  def clean_sel(sel, msg)\n    ret = sel.reject{|x|x.nil?}.uniq\n    ret = ret.grep(/^#{Regexp.quote(msg)}/) if msg != nil\n    ret\n  end\n\n  def get_rails_view_methods\n    allow_rails = VIM::evaluate(\"exists('g:rubycomplete_rails') && g:rubycomplete_rails\")\n    rails_loaded = VIM::evaluate('s:rubycomplete_rails_loaded')\n    return [] if allow_rails.to_i.zero? || rails_loaded.to_i.zero?\n\n    buf_path = VIM::evaluate('expand(\"%:p\")')\n    buf_path.gsub!( /\\\\/, \"/\" )\n    pelm = buf_path.split( \"/\" )\n    idx = pelm.index( \"views\" )\n\n    return [] unless idx\n    idx += 1\n\n    clspl = pelm[idx].camelize.pluralize\n    cls = clspl.singularize\n\n    ret = []\n    begin\n      ret += eval( \"#{cls}.instance_methods\" )\n      ret += eval( \"#{clspl}Helper.instance_methods\" )\n    rescue Exception\n      dprint \"Error: Unable to load rails view helpers for %s: %s\" % [ cls, $! ]\n    end\n\n    return ret\n  end\n# }}} buffer analysis magic\n\n# {{{ main completion code\n  def self.preload_rails\n    a = VimRubyCompletion.new\n    require 'Thread'\n    Thread.new(a) do |b|\n      begin\n      b.load_rails\n      rescue\n      end\n    end\n    a.load_rails\n  rescue\n  end\n\n  def self.get_completions(base)\n    b = VimRubyCompletion.new\n    b.get_completions base\n  end\n\n  def get_completions(base)\n    loading_allowed = VIM::evaluate(\"exists('g:rubycomplete_buffer_loading') && g:rubycomplete_buffer_loading\")\n    if loading_allowed.to_i == 1\n      load_requires\n      load_rails\n    end\n\n    want_gems = VIM::evaluate(\"get(g:, 'rubycomplete_load_gemfile')\")\n    load_gems unless want_gems.to_i.zero?\n    \n\n    input = VIM::Buffer.current.line\n    cpos = VIM::Window.current.cursor[1] - 1\n    input = input[0..cpos]\n    input += base\n    input.sub!(/.*[ \\t\\n\\\"\\\\'`><=;|&{(]/, '') # Readline.basic_word_break_characters\n    input.sub!(/self\\./, '')\n    input.sub!(/.*((\\.\\.[\\[(]?)|([\\[(]))/, '')\n\n    dprint 'input %s' % input\n    message = nil\n    receiver = nil\n    methods = []\n    variables = []\n    classes = []\n    constants = []\n\n    case input\n      when /^(\\/[^\\/]*\\/)\\.([^.]*)$/ # Regexp\n        receiver = $1\n        message = Regexp.quote($2)\n        methods = Regexp.instance_methods(true)\n\n      when /^([^\\]]*\\])\\.([^.]*)$/ # Array\n        receiver = $1\n        message = Regexp.quote($2)\n        methods = Array.instance_methods(true)\n\n      when /^([^\\}]*\\})\\.([^.]*)$/ # Proc or Hash\n        receiver = $1\n        message = Regexp.quote($2)\n        methods = Proc.instance_methods(true) | Hash.instance_methods(true)\n\n      when /^(:[^:.]*)$/ # Symbol\n        dprint \"symbol\"\n        if Symbol.respond_to?(:all_symbols)\n          receiver = $1\n          message = $1.sub( /:/, '' )\n          methods = Symbol.all_symbols.collect{|s| s.id2name}\n          methods.delete_if { |c| c.match( /'/ ) }\n        end\n\n      when /^::([A-Z][^:\\.\\(]*)$/ # Absolute Constant or class methods\n        dprint \"const or cls\"\n        receiver = $1\n        methods = Object.constants\n        methods.grep(/^#{receiver}/).collect{|e| \"::\" + e}\n\n      when /^(((::)?[A-Z][^:.\\(]*)+?)::?([^:.]*)$/ # Constant or class methods\n        receiver = $1\n        message = Regexp.quote($4)\n        dprint \"const or cls 2 [recv: \\'%s\\', msg: \\'%s\\']\" % [ receiver, message ]\n        load_buffer_class( receiver )\n        begin\n          classes = eval(\"#{receiver}.constants\")\n          #methods = eval(\"#{receiver}.methods\")\n        rescue Exception\n          dprint \"exception: %s\" % $!\n          methods = []\n        end\n        methods.grep(/^#{message}/).collect{|e| receiver + \"::\" + e}\n\n      when /^(:[^:.]+)\\.([^.]*)$/ # Symbol\n        dprint \"symbol\"\n        receiver = $1\n        message = Regexp.quote($2)\n        methods = Symbol.instance_methods(true)\n\n      when /^([0-9_]+(\\.[0-9_]+)?(e[0-9]+)?)\\.([^.]*)$/ # Numeric\n        dprint \"numeric\"\n        receiver = $1\n        message = Regexp.quote($4)\n        begin\n          methods = eval(receiver).methods\n        rescue Exception\n          methods = []\n        end\n\n      when /^(\\$[^.]*)$/ #global\n        dprint \"global\"\n        methods = global_variables.grep(Regexp.new(Regexp.quote($1)))\n\n      when /^((\\.?[^.]+)+?)\\.([^.]*)$/ # variable\n        dprint \"variable\"\n        receiver = $1\n        message = Regexp.quote($3)\n        load_buffer_class( receiver )\n\n        cv = eval(\"self.class.constants\")\n        vartype = get_var_type( receiver )\n        dprint \"vartype: %s\" % vartype\n        if vartype != ''\n          load_buffer_class( vartype )\n\n          begin\n            methods = eval(\"#{vartype}.instance_methods\")\n            variables = eval(\"#{vartype}.instance_variables\")\n          rescue Exception\n            dprint \"load_buffer_class err: %s\" % $!\n          end\n        elsif (cv).include?(receiver)\n          # foo.func and foo is local var.\n          methods = eval(\"#{receiver}.methods\")\n          vartype = receiver\n        elsif /^[A-Z]/ =~ receiver and /\\./ !~ receiver\n          vartype = receiver\n          # Foo::Bar.func\n          begin\n            methods = eval(\"#{receiver}.methods\")\n          rescue Exception\n          end\n        else\n          # func1.func2\n          ObjectSpace.each_object(Module){|m|\n            next if m.name != \"IRB::Context\" and\n              /^(IRB|SLex|RubyLex|RubyToken)/ =~ m.name\n            methods.concat m.instance_methods(false)\n          }\n        end\n        variables += add_rails_columns( \"#{vartype}\" ) if vartype && vartype.length > 0\n\n      when /^\\(?\\s*[A-Za-z0-9:^@.%\\/+*\\(\\)]+\\.\\.\\.?[A-Za-z0-9:^@.%\\/+*\\(\\)]+\\s*\\)?\\.([^.]*)/\n        message = $1\n        methods = Range.instance_methods(true)\n\n      when /^\\.([^.]*)$/ # unknown(maybe String)\n        message = Regexp.quote($1)\n        methods = String.instance_methods(true)\n\n    else\n      dprint \"default/other\"\n      inclass = eval( VIM::evaluate(\"s:IsInClassDef()\") )\n\n      if inclass != nil\n        dprint \"inclass\"\n        classdef = \"%s\\n\" % VIM::Buffer.current[ inclass.min ]\n        found = /^\\s*class\\s*([A-Za-z0-9_-]*)(\\s*<\\s*([A-Za-z0-9_:-]*))?\\s*\\n$/.match( classdef )\n\n        if found != nil\n          receiver = $1\n          message = input\n          load_buffer_class( receiver )\n          begin\n            methods = eval( \"#{receiver}.instance_methods\" )\n            variables += add_rails_columns( \"#{receiver}\" )\n          rescue Exception\n            found = nil\n          end\n        end\n      end\n\n      if inclass == nil || found == nil\n        dprint \"inclass == nil\"\n        methods = get_buffer_methods\n        methods += get_rails_view_methods\n\n        cls_const = Class.constants\n        constants = cls_const.select { |c| /^[A-Z_-]+$/.match( c ) }\n        classes = eval(\"self.class.constants\") - constants\n        classes += get_buffer_classes\n        classes += get_buffer_modules\n\n        include_objectspace = VIM::evaluate(\"exists('g:rubycomplete_include_objectspace') && g:rubycomplete_include_objectspace\")\n        ObjectSpace.each_object(Class) { |cls| classes << cls.to_s } if include_objectspace == \"1\"\n        message = receiver = input\n      end\n\n      methods += get_rails_helpers\n      methods += Kernel.public_methods\n    end\n\n\n    include_object = VIM::evaluate(\"exists('g:rubycomplete_include_object') && g:rubycomplete_include_object\")\n    methods = clean_sel( methods, message )\n    methods = (methods-Object.instance_methods) if include_object == \"0\"\n    rbcmeth = (VimRubyCompletion.instance_methods-Object.instance_methods) # lets remove those rubycomplete methods\n    methods = (methods-rbcmeth)\n\n    variables = clean_sel( variables, message )\n    classes = clean_sel( classes, message ) - [\"VimRubyCompletion\"]\n    constants = clean_sel( constants, message )\n\n    valid = []\n    valid += methods.collect { |m| { :name => m.to_s, :type => 'm' } }\n    valid += variables.collect { |v| { :name => v.to_s, :type => 'v' } }\n    valid += classes.collect { |c| { :name => c.to_s, :type => 't' } }\n    valid += constants.collect { |d| { :name => d.to_s, :type => 'd' } }\n    valid.sort! { |x,y| x[:name] <=> y[:name] }\n\n    outp = \"\"\n\n    rg = 0..valid.length\n    rg.step(150) do |x|\n      stpos = 0+x\n      enpos = 150+x\n      valid[stpos..enpos].each { |c| outp += \"{'word':'%s','item':'%s','kind':'%s'},\" % [ c[:name], c[:name], c[:type] ].map{|x|escape_vim_singlequote_string(x)} }\n      outp.sub!(/,$/, '')\n\n      VIM::command(\"call extend(g:rubycomplete_completions, [%s])\" % outp)\n      outp = \"\"\n    end\n  end\n# }}} main completion code\n\nend # VimRubyCompletion\n# }}} ruby completion\nRUBYEOF\nendfunction\n\nlet s:rubycomplete_rails_loaded = 0\n\ncall s:DefRuby()\n\"}}} ruby-side code\n\n\n\" vim:tw=78:sw=4:ts=8:et:fdm=marker:ft=vim:norl:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/autoload/xml/aria.vim",
    "content": "\" Vim completion for WAI-ARIA data file\n\" Language:       HTML + WAI-ARIA\n\" Maintainer:     othree <othree@gmail.com>\n\" Last Change:    2010 Sep 09\n\n\" WAI_ARIA: {{{\n\" Ref: http://www.w3.org/TR/wai-aria/\n\" Version: Draft 15 December 2009\n\nlet abstract_role = {}\nlet role_attributes = {}\nlet default_role = {}\n\n\" Ref: http://www.w3.org/TR/wai-aria/roles\n\" Version: Draft 15 December 2009\nlet widget_role = ['alert', 'alertdialog', 'button', 'checkbox', 'combobox', 'dialog', 'gridcell', 'link', 'log', 'marquee', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'progressbar', 'radio', 'radiogroup', 'scrollbar', 'slider', 'spinbutton', 'status', 'tab', 'tabpanel', 'textbox', 'timer', 'tooltip', 'treeitem', 'combobox', 'grid', 'listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid']\nlet document_structure = ['article', 'columnheader', 'definition', 'directory', 'document', 'group', 'heading', 'img', 'list', 'listitem', 'math', 'note', 'presentation', 'region', 'row', 'rowheader', 'separator']\nlet landmark_role = ['application', 'banner', 'complementary', 'contentinfo', 'form', 'main', 'navigation', 'search']\nlet role = extend(widget_role, document_structure)\nlet role = extend(role, landmark_role)\n\n\" http://www.w3.org/TR/wai-aria/states_and_properties#state_prop_taxonomy\n\"let global_states_and_properties = {'aria-atomic': ['true', 'false'], 'aria-busy': ['true', 'false'], 'aria-controls': [], 'aria-describedby': [], 'aria-disabled': ['true', 'false'], 'aria-dropeffect': ['copy', 'move', 'link', 'execute', 'popup', 'none'], 'aria-flowto': [], 'aria-grabbed': ['true', 'false', 'undefined'], 'aria-haspopup': ['true', 'false'], 'aria-hidden': ['true', 'false'], 'aria-invalid': ['grammar', 'spelling', 'true', 'false'], 'aria-label': [], 'aria-labelledby': [], 'aria-live': ['off', 'polite', 'assertive'], 'aria-owns': [], 'aria-relevant': ['additions', 'removals', 'text', 'all']}\nlet widget_attributes = {'aria-autocomplete': ['inline', 'list', 'both', 'none'], 'aria-checked': ['true', 'false', 'mixed', 'undefined'], 'aria-disabled': ['true', 'false'], 'aria-expanded': ['true', 'false', 'undefined'], 'aria-haspopup': ['true', 'false'], 'aria-hidden': ['true', 'false'], 'aria-invalid': ['grammar', 'spelling', 'true', 'false'], 'aria-label': [], 'aria-level': [], 'aria-multiline': ['true', 'false'], 'aria-multiselectable': ['true', 'false'], 'aria-orientation': ['horizontal', 'vertical'], 'aria-pressed': ['true', 'false', 'mixed', 'undefined'], 'aria-readonly': ['true', 'false'], 'aria-required': ['true', 'false'], 'aria-selected': ['true', 'false', 'undefined'], 'aria-sort': ['ascending', 'descending', 'none', 'other'], 'aria-valuemax': [], 'aria-valuemin': [], 'aria-valuenow': [], 'aria-valuetext': []}\nlet live_region_attributes = {'aria-atomic': ['true', 'false'], 'aria-busy': ['true', 'false'], 'aria-live': ['off', 'polite', 'assertive'], 'aria-relevant': ['additions', 'removals', 'text', 'all', 'additions text']}\nlet drag_and_drop_attributes = {'aria-dropeffect': ['copy', 'move', 'link', 'execute', 'popup', 'none'], 'aria-grabbed': ['true', 'false', 'undefined']}\nlet relationship_attributes = {'aria-activedescendant': [], 'aria-controls': [], 'aria-describedby': [], 'aria-flowto': [], 'aria-labelledby': [], 'aria-owns': [], 'aria-posinset': [], 'aria-setsize': []}\nlet aria_attributes = widget_attributes\nlet aria_attributes = extend(aria_attributes, live_region_attributes)\nlet aria_attributes = extend(aria_attributes, drag_and_drop_attributes)\nlet aria_attributes = extend(aria_attributes, relationship_attributes)\n\n\" Abstract Roles\nlet abstract_role['roletype'] = ['aria-atomic', 'aria-busy', 'aria-controls', 'aria-describedby', 'aria-disabled', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant']\nlet role_attributes['default'] = abstract_role['roletype']\nlet abstract_role['structure'] = abstract_role['roletype']\nlet abstract_role['widget'] = abstract_role['roletype']\nlet abstract_role['window'] = abstract_role['roletype'] + ['aria-expanded']\nlet abstract_role['composite'] = abstract_role['widget'] + ['aria-activedescendant']\nlet abstract_role['input'] = abstract_role['widget']\nlet abstract_role['section'] = abstract_role['structure'] + ['aria-expanded']\nlet abstract_role['sectionhead'] = abstract_role['structure'] + ['aria-expanded']\n\nlet role_attributes['group'] = abstract_role['section']\nlet abstract_role['select'] = abstract_role['composite'] + role_attributes['group'] + abstract_role['input']\n\nlet abstract_role['range'] = abstract_role['input'] + ['aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext']\n\nlet role_attributes['region'] = abstract_role['section']\nlet abstract_role['landmark'] = role_attributes['region']\n\n\" Widget Roles\nlet role_attributes['list'] = role_attributes['region'] \nlet role_attributes['listitem'] = abstract_role['section']\n\nlet role_attributes['dialog'] = abstract_role['window']\nlet role_attributes['menuitem'] = abstract_role['input'] \nlet role_attributes['checkbox'] = abstract_role['input'] + ['aria-checked'] \nlet role_attributes['menuitemcheckbox'] = role_attributes['menuitem'] + role_attributes['checkbox']\nlet role_attributes['option'] = abstract_role['input'] + ['aria-checked', 'aria-posinset', 'aria-selected', 'aria-setsize']\nlet role_attributes['radio'] = role_attributes['checkbox'] + role_attributes['option']\n\nlet role_attributes['directory'] = role_attributes['list'] \n\nlet role_attributes['alert'] = role_attributes['region']\nlet role_attributes['alertdialog'] = role_attributes['alert'] + role_attributes['dialog']\nlet role_attributes['button'] = role_attributes['region'] + role_attributes['menuitemcheckbox']\nlet role_attributes['combobox'] = abstract_role['select'] + ['aria-expanded', 'aria-required'] \nlet role_attributes['gridcell'] = abstract_role['section'] + abstract_role['widget']\nlet role_attributes['link'] = abstract_role['widget'] \nlet role_attributes['log'] = role_attributes['region'] \nlet role_attributes['marquee'] = role_attributes['region'] \nlet role_attributes['menuitemradio'] = role_attributes['menuitemcheckbox'] + role_attributes['radio']\nlet role_attributes['progressbar'] = abstract_role['widget'] + ['aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext']\nlet role_attributes['radiogroup'] = abstract_role['select'] + ['aria-required']\nlet role_attributes['scrollbar'] = abstract_role['range'] + ['aria-controls', 'aria-orientation', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow']\nlet role_attributes['slider'] = abstract_role['range'] + ['aria-valuemax', 'aria-valuemin', 'aria-valuenow']\nlet role_attributes['spinbutton'] = abstract_role['composite'] + abstract_role['range'] + ['aria-required'] \nlet role_attributes['status'] = abstract_role['composite'] + role_attributes['region']\nlet role_attributes['tab'] = abstract_role['sectionhead'] + abstract_role['widget'] + ['aria-selected']\nlet role_attributes['tabpanel'] = role_attributes['region']\nlet role_attributes['textbox'] = abstract_role['input'] + ['aria-autocomplete', 'aria-multiline', 'aria-readonly', 'aria-required']\nlet role_attributes['timer'] = role_attributes['status'] \nlet role_attributes['tooltip'] = abstract_role['section'] \nlet role_attributes['treeitem'] = role_attributes['listitem'] + role_attributes['option']\n\nlet role_attributes['grid'] = abstract_role['composite'] + role_attributes['region'] + ['aria-level', 'aria-multiselectable', 'aria-readonly']\nlet role_attributes['listbox'] = role_attributes['list'] + abstract_role['select'] + ['aria-multiselectable', 'aria-required']\nlet role_attributes['menu'] =  role_attributes['list'] + abstract_role['select'] \nlet role_attributes['menubar'] = role_attributes['menu'] \nlet role_attributes['tablist'] = abstract_role['composite'] + role_attributes['directory']\nlet role_attributes['toolbar'] = role_attributes['group'] \nlet role_attributes['tree'] = abstract_role['select'] + ['aria-multiselectable', 'aria-required']\nlet role_attributes['treegrid'] = role_attributes['grid'] + role_attributes['tree']\n\n\" Document Structure\nlet role_attributes['document'] = abstract_role['structure'] + ['aria-expanded'] \n\nlet role_attributes['article'] = role_attributes['document'] + role_attributes['region'] \nlet role_attributes['columnheader'] = role_attributes['gridcell'] + abstract_role['sectionhead'] + ['aria-sort']\nlet role_attributes['definition'] = abstract_role['section'] \nlet role_attributes['heading'] = abstract_role['sectionhead'] + ['aria-level'] \nlet role_attributes['img'] = abstract_role['section'] \nlet role_attributes['math'] = abstract_role['section'] \nlet role_attributes['note'] = abstract_role['section'] \nlet role_attributes['presentation'] = abstract_role['structure']\nlet role_attributes['row'] = role_attributes['group'] + ['aria-level', 'aria-selected']\nlet role_attributes['rowheader'] = role_attributes['gridcell'] + abstract_role['sectionhead']\nlet role_attributes['separator'] = abstract_role['structure'] + ['aria-expanded'] \n\n\" Landmark Roles\nlet role_attributes['application'] = abstract_role['landmark'] \nlet role_attributes['banner'] = abstract_role['landmark'] \nlet role_attributes['complementary'] = abstract_role['landmark'] \nlet role_attributes['contentinfo'] = abstract_role['landmark'] \nlet role_attributes['form'] = abstract_role['landmark'] \nlet role_attributes['main'] = abstract_role['landmark'] \nlet role_attributes['navigation'] = abstract_role['landmark'] \nlet role_attributes['search'] = abstract_role['landmark']\n\n\" http://www.w3.org/TR/wai-aria/states_and_properties#state_prop_def\nlet aria_attributes_value = {\n    \\ 'aria-autocomplete': ['ID', ''],\n    \\ 'aria-checked': ['Token', ''],\n    \\ 'aria-disabled': ['true/false', ''],\n    \\ 'aria-expanded': ['Token', ''],\n    \\ 'aria-haspopup': ['true/false', ''],\n    \\ 'aria-hidden': ['true/false', ''],\n    \\ 'aria-invalid': ['Token', ''],\n    \\ 'aria-label': ['String', ''],\n    \\ 'aria-level': ['Int', ''],\n    \\ 'aria-multiline': ['true/false', ''],\n    \\ 'aria-multiselectable': ['true/false', ''],\n    \\ 'aria-orientation': ['Token', ''],\n    \\ 'aria-pressed': ['Token', ''],\n    \\ 'aria-readonly': ['true/false', ''],\n    \\ 'aria-required': ['true/false', ''],\n    \\ 'aria-selected': ['Token', ''],\n    \\ 'aria-sort': ['Token', ''],\n    \\ 'aria-valuemax': ['Number', ''],\n    \\ 'aria-valuemin': ['Number', ''],\n    \\ 'aria-valuenow': ['Number', ''],\n    \\ 'aria-valuetext': ['String', ''],\n    \\ 'aria-atomic': ['true/false', ''],\n    \\ 'aria-busy': ['true/false', ''],\n    \\ 'aria-live': ['Token', ''],\n    \\ 'aria-relevant': ['*Token', ''],\n    \\ 'aria-dropeffect': ['*Token', ''],\n    \\ 'aria-grabbed': ['Token', ''],\n    \\ 'aria-activedescendant': ['ID', ''],\n    \\ 'aria-controls': ['*ID', ''],\n    \\ 'aria-describedby': ['*ID', ''],\n    \\ 'aria-flowto': ['*ID', ''],\n    \\ 'aria-labelledby': ['*ID', ''],\n    \\ 'aria-owns': ['*ID', ''],\n    \\ 'aria-posinset': ['Int', ''],\n    \\ 'aria-setsize': ['Int', '']\n\\ }\n\n\" http://dev.w3.org/html5/spec/content-models.html#annotations-for-assistive-technology-products-aria\nlet default_role = {\n    \\ 'a': 'link',\n    \\ 'area': 'link',\n    \\ 'body': 'document',\n    \\ 'button': 'button',\n    \\ 'datalist': 'listbox',\n    \\ 'h1': 'heading',\n    \\ 'h2': 'heading',\n    \\ 'h3': 'heading',\n    \\ 'h4': 'heading',\n    \\ 'h5': 'heading',\n    \\ 'h6': 'heading',\n    \\ 'hgroup': 'heading',\n    \\ 'hr': 'separator',\n    \\ 'img[alt=]': 'presentation',\n    \\ 'input[type=button]': 'button',\n    \\ 'input[type=email]': 'textbox',\n    \\ 'input[type=image]': 'button',\n    \\ 'input[type=number]': 'spinbutton',\n    \\ 'input[type=password]': 'textbox',\n    \\ 'input[type=range]': 'slider',\n    \\ 'input[type=reset]': 'button',\n    \\ 'input[type=search]': 'textbox',\n    \\ 'input[type=submit]': 'button',\n    \\ 'input[type=tel]': 'textbox',\n    \\ 'input[type=text]': 'textbox',\n    \\ 'input[list]': 'combobox',\n    \\ 'input[type=url]': 'textbox',\n    \\ 'input': 'textbox',\n    \\ 'keygen': 'default',\n    \\ 'label': 'default',\n    \\ 'menu[type=list]': 'menu',\n    \\ 'menu[type=toolbar]': 'toolbar',\n    \\ 'menu': 'default',\n    \\ 'link': 'link',\n    \\ 'nav': 'navigation',\n    \\ 'optgroup': 'default',\n    \\ 'option': 'option',\n    \\ 'progress': 'progressbar',\n    \\ 'select': 'listbox',\n    \\ 'summary': 'heading',\n    \\ 'tbody': 'rowgroup',\n    \\ 'td': 'gridcell',\n    \\ 'textarea': 'textbox',\n    \\ 'tfoot': 'rowgroup',\n    \\ 'th[scope=col]': 'columnheader',\n    \\ 'th[scope=row]': 'rowheader',\n    \\ 'tr': 'row',\n    \\ 'address': 'default',\n    \\ 'article': 'article',\n    \\ 'aside': 'note',\n    \\ 'footer': 'default',\n    \\ 'header': 'default',\n    \\ 'details': 'group',\n    \\ 'img': 'img',\n    \\ 'input[type=checkbox]': 'checkbox',\n    \\ 'input[type=radio]': 'radio',\n    \\ 'li': 'listitem',\n    \\ 'ol': 'list',\n    \\ 'output': 'status',\n    \\ 'section': 'region',\n    \\ 'table': 'grid',\n    \\ 'ul': 'list',\n\\ }\n\" }}}\n\nlet g:xmldata_aria = {\n    \\ 'aria_attributes': aria_attributes,\n    \\ 'role_attributes': role_attributes,\n    \\ 'default_role': default_role,\n    \\ 'vimariaattrinfo': aria_attributes_value\n\\ }\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/autoload/xml/html5.vim",
    "content": "\" Vim completion for HTML5 data file\n\" Language:       HTML5\n\" Maintainer:     othree <othree@gmail.com>\n\" Last Change:    2011 Apr 9\n\n\n\" Lang Tag: {{{\n\" Ref: http://www.iana.org/assignments/language-subtag-registry\n\" Version: 2010/09/07\n\" Description: only get two-letter language tag\nlet lang_tag = [\n    \\ 'aa', 'ab', 'ae', 'af', 'ak', 'am', 'an', 'ar', 'as', 'av', 'ay', 'az', 'ba', 'be', 'bg', 'bh', 'bi', 'bm',\n    \\ 'bn', 'bo', 'br', 'bs', 'ca', 'ce', 'ch', 'co', 'cr', 'cs', 'cu', 'cv', 'cy', 'da', 'de', 'dv', 'dz', 'ee',\n    \\ 'el', 'en', 'eo', 'es', 'et', 'eu', 'fa', 'ff', 'fi', 'fj', 'fo', 'fr', 'fy', 'ga', 'gd', 'gl', 'gn', 'gu',\n    \\ 'gv', 'ha', 'he', 'hi', 'ho', 'hr', 'ht', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'in', 'io',\n    \\ 'is', 'it', 'iu', 'iw', 'ja', 'ji', 'jv', 'jw', 'ka', 'kg', 'ki', 'kj', 'kk', 'kl', 'km', 'kn', 'ko', 'kr',\n    \\ 'ks', 'ku', 'kv', 'kw', 'ky', 'la', 'lb', 'lg', 'li', 'ln', 'lo', 'lt', 'lu', 'lv', 'mg', 'mh', 'mi', 'mk',\n    \\ 'ml', 'mn', 'mo', 'mr', 'ms', 'mt', 'my', 'na', 'nb', 'nd', 'ne', 'ng', 'nl', 'nn', 'no', 'nr', 'nv', 'ny',\n    \\ 'oc', 'oj', 'om', 'or', 'os', 'pa', 'pi', 'pl', 'ps', 'pt', 'qu', 'rm', 'rn', 'ro', 'ru', 'rw', 'sa', 'sc',\n    \\ 'sd', 'se', 'sg', 'sh', 'si', 'sk', 'sl', 'sm', 'sn', 'so', 'sq', 'sr', 'ss', 'st', 'su', 'sv', 'sw', 'ta',\n    \\ 'te', 'tg', 'th', 'ti', 'tk', 'tl', 'tn', 'to', 'tr', 'ts', 'tt', 'tw', 'ty', 'ug', 'uk', 'ur', 'uz', 've',\n    \\ 'vi', 'vo', 'wa', 'wo', 'xh', 'yi', 'yo', 'za', 'zh', 'zu', 'zh-CN', 'zh-TW']\n\" }}}\n\n\" Charset: {{{\n\" Ref: http://www.iana.org/assignments/character-sets \n\" Version: 2010/09/07\nlet charset = [\n    \\ 'ANSI_X3.4-1968', 'ISO_8859-1:1987', 'ISO_8859-2:1987', 'ISO_8859-3:1988', 'ISO_8859-4:1988', 'ISO_8859-5:1988', \n    \\ 'ISO_8859-6:1987', 'ISO_8859-7:1987', 'ISO_8859-8:1988', 'ISO_8859-9:1989', 'ISO-8859-10', 'ISO_6937-2-add', 'JIS_X0201', \n    \\ 'JIS_Encoding', 'Shift_JIS', 'Extended_UNIX_Code_Packed_Format_for_Japanese', 'Extended_UNIX_Code_Fixed_Width_for_Japanese',\n    \\ 'BS_4730', 'SEN_850200_C', 'IT', 'ES', 'DIN_66003', 'NS_4551-1', 'NF_Z_62-010', 'ISO-10646-UTF-1', 'ISO_646.basic:1983', \n    \\ 'INVARIANT', 'ISO_646.irv:1983', 'NATS-SEFI', 'NATS-SEFI-ADD', 'NATS-DANO', 'NATS-DANO-ADD', 'SEN_850200_B', 'KS_C_5601-1987',\n    \\ 'ISO-2022-KR', 'EUC-KR', 'ISO-2022-JP', 'ISO-2022-JP-2', 'JIS_C6220-1969-jp', 'JIS_C6220-1969-ro', 'PT', 'greek7-old', \n    \\ 'latin-greek', 'NF_Z_62-010_(1973)', 'Latin-greek-1', 'ISO_5427', 'JIS_C6226-1978', 'BS_viewdata', 'INIS', 'INIS-8', \n    \\ 'INIS-cyrillic', 'ISO_5427:1981', 'ISO_5428:1980', 'GB_1988-80', 'GB_2312-80', 'NS_4551-2', 'videotex-suppl', 'PT2', \n    \\ 'ES2', 'MSZ_7795.3', 'JIS_C6226-1983', 'greek7', 'ASMO_449', 'iso-ir-90', 'JIS_C6229-1984-a', 'JIS_C6229-1984-b', \n    \\ 'JIS_C6229-1984-b-add', 'JIS_C6229-1984-hand', 'JIS_C6229-1984-hand-add', 'JIS_C6229-1984-kana', 'ISO_2033-1983', \n    \\ 'ANSI_X3.110-1983', 'T.61-7bit', 'T.61-8bit', 'ECMA-cyrillic', 'CSA_Z243.4-1985-1', 'CSA_Z243.4-1985-2', 'CSA_Z243.4-1985-gr', \n    \\ 'ISO_8859-6-E', 'ISO_8859-6-I', 'T.101-G2', 'ISO_8859-8-E', 'ISO_8859-8-I', 'CSN_369103', 'JUS_I.B1.002', 'IEC_P27-1', \n    \\ 'JUS_I.B1.003-serb', 'JUS_I.B1.003-mac', 'greek-ccitt', 'NC_NC00-10:81', 'ISO_6937-2-25', 'GOST_19768-74', 'ISO_8859-supp', \n    \\ 'ISO_10367-box', 'latin-lap', 'JIS_X0212-1990', 'DS_2089', 'us-dk', 'dk-us', 'KSC5636', 'UNICODE-1-1-UTF-7', 'ISO-2022-CN', \n    \\ 'ISO-2022-CN-EXT', 'UTF-8', 'ISO-8859-13', 'ISO-8859-14', 'ISO-8859-15', 'ISO-8859-16', 'GBK', 'GB18030', 'OSD_EBCDIC_DF04_15', \n    \\ 'OSD_EBCDIC_DF03_IRV', 'OSD_EBCDIC_DF04_1', 'ISO-11548-1', 'KZ-1048', 'ISO-10646-UCS-2', 'ISO-10646-UCS-4', 'ISO-10646-UCS-Basic',\n    \\ 'ISO-10646-Unicode-Latin1', 'ISO-10646-J-1', 'ISO-Unicode-IBM-1261', 'ISO-Unicode-IBM-1268', 'ISO-Unicode-IBM-1276', \n    \\ 'ISO-Unicode-IBM-1264', 'ISO-Unicode-IBM-1265', 'UNICODE-1-1', 'SCSU', 'UTF-7', 'UTF-16BE', 'UTF-16LE', 'UTF-16', 'CESU-8', \n    \\ 'UTF-32', 'UTF-32BE', 'UTF-32LE', 'BOCU-1', 'ISO-8859-1-Windows-3.0-Latin-1', 'ISO-8859-1-Windows-3.1-Latin-1', \n    \\ 'ISO-8859-2-Windows-Latin-2', 'ISO-8859-9-Windows-Latin-5', 'hp-roman8', 'Adobe-Standard-Encoding', 'Ventura-US', \n    \\ 'Ventura-International', 'DEC-MCS', 'IBM850', 'PC8-Danish-Norwegian', 'IBM862', 'PC8-Turkish', 'IBM-Symbols', 'IBM-Thai', \n    \\ 'HP-Legal', 'HP-Pi-font', 'HP-Math8', 'Adobe-Symbol-Encoding', 'HP-DeskTop', 'Ventura-Math', 'Microsoft-Publishing', \n    \\ 'Windows-31J', 'GB2312', 'Big5', 'macintosh', 'IBM037', 'IBM038', 'IBM273', 'IBM274', 'IBM275', 'IBM277', 'IBM278', \n    \\ 'IBM280', 'IBM281', 'IBM284', 'IBM285', 'IBM290', 'IBM297', 'IBM420', 'IBM423', 'IBM424', 'IBM437', 'IBM500', 'IBM851', \n    \\ 'IBM852', 'IBM855', 'IBM857', 'IBM860', 'IBM861', 'IBM863', 'IBM864', 'IBM865', 'IBM868', 'IBM869', 'IBM870', 'IBM871', \n    \\ 'IBM880', 'IBM891', 'IBM903', 'IBM904', 'IBM905', 'IBM918', 'IBM1026', 'EBCDIC-AT-DE', 'EBCDIC-AT-DE-A', 'EBCDIC-CA-FR', \n    \\ 'EBCDIC-DK-NO', 'EBCDIC-DK-NO-A', 'EBCDIC-FI-SE', 'EBCDIC-FI-SE-A', 'EBCDIC-FR', 'EBCDIC-IT', 'EBCDIC-PT', 'EBCDIC-ES', \n    \\ 'EBCDIC-ES-A', 'EBCDIC-ES-S', 'EBCDIC-UK', 'EBCDIC-US', 'UNKNOWN-8BIT', 'MNEMONIC', 'MNEM', 'VISCII', 'VIQR', 'KOI8-R', \n    \\ 'HZ-GB-2312', 'IBM866', 'IBM775', 'KOI8-U', 'IBM00858', 'IBM00924', 'IBM01140', 'IBM01141', 'IBM01142', 'IBM01143', \n    \\ 'IBM01144', 'IBM01145', 'IBM01146', 'IBM01147', 'IBM01148', 'IBM01149', 'Big5-HKSCS', 'IBM1047', 'PTCP154', 'Amiga-1251', \n    \\ 'KOI7-switched', 'BRF', 'TSCII', 'windows-1250', 'windows-1251', 'windows-1252', 'windows-1253', 'windows-1254', 'windows-1255', \n    \\ 'windows-1256', 'windows-1257', 'windows-1258', 'TIS-620', ]\n\" }}}\n\n\" Attributes_and_Settings: {{{\nlet core_attributes = {'accesskey': [], 'class': [], 'contenteditable': ['true', 'false', ''], 'contextmenu': [], 'dir': ['ltr', 'rtl'], 'draggable': ['true', 'false'], 'hidden': ['hidden', ''], 'id': [], 'is': [], 'lang': lang_tag, 'spellcheck': ['true', 'false', ''], 'style': [], 'tabindex': [], 'title': []}\nlet xml_attributes = {'xml:lang': lang_tag, 'xml:space': ['preserve'], 'xml:base': [], 'xmlns': ['http://www.w3.org/1999/xhtml', 'http://www.w3.org/1998/Math/MathML', 'http://www.w3.org/2000/svg', 'http://www.w3.org/1999/xlink']}\n\nlet body_attributes = {}\nlet global_attributes = extend(core_attributes, xml_attributes)\nif !exists('g:html5_event_handler_attributes_complete')\n    let g:html5_event_handler_attributes_complete = 1\nendif\n\n\" http://dev.w3.org/html5/spec/Overview.html#attributes-1\nlet attributes_value = {\n    \\ 'accept': ['MIME', ''],\n    \\ 'accept-charset': ['Charset', ''],\n    \\ 'accesskey': ['Character', ''],\n    \\ 'action': ['URL', ''],\n    \\ 'alt': ['Text', ''],\n    \\ 'async': ['Bool', ''],\n    \\ 'autocomplete': ['on/off', ''],\n    \\ 'autofocus': ['Bool', ''],\n    \\ 'autoplay': ['Bool', ''],\n    \\ 'border': ['1', ''],\n    \\ 'challenge': ['Text', ''],\n    \\ 'charset': ['Charset', ''],\n    \\ 'checked': ['Bool', ''],\n    \\ 'cite': ['URL', ''],\n    \\ 'class': ['*Token', ''],\n    \\ 'cols': ['Int', ''],\n    \\ 'colspan': ['Int', ''],\n    \\ 'content': ['Text', ''],\n    \\ 'contenteditable': ['true/false', ''],\n    \\ 'contextmenu': ['ID', ''],\n    \\ 'controls': ['Bool', ''],\n    \\ 'coords': ['*Int', ''],\n    \\ 'data': ['URL', ''],\n    \\ 'datetime': ['Datetime', ''],\n    \\ 'defer': ['Bool', ''],\n    \\ 'dir': ['ltr/rtl', ''],\n    \\ 'disabled': ['Bool', ''],\n    \\ 'draggable': ['true/false', ''],\n    \\ 'enctype': ['Token', ''],\n    \\ 'extends': ['Text', ''],\n    \\ 'for': ['ID', ''],\n    \\ 'form': ['ID', ''],\n    \\ 'formaction': ['URL', ''],\n    \\ 'formenctype': ['Token', ''],\n    \\ 'formmethod': ['HTTP Method', ''],\n    \\ 'formnovalidate': ['Bool', ''],\n    \\ 'formtarget': ['Name', ''],\n    \\ 'headers': ['*ID', ''],\n    \\ 'height': ['Int', ''],\n    \\ 'hidden': ['Bool', ''],\n    \\ 'high': ['Number', ''],\n    \\ 'href': ['URL', ''],\n    \\ 'hreflang': ['Lang Tag', ''],\n    \\ 'http-equiv': ['Text', ''],\n    \\ 'icon': ['URL', ''],\n    \\ 'id': ['Text', ''],\n    \\ 'ismap': ['Bool', ''],\n    \\ 'keytype': ['Text', ''],\n    \\ 'label': ['Text', ''],\n    \\ 'lang': ['Lang Tag', ''],\n    \\ 'list': ['ID', ''],\n    \\ 'loop': ['Bool', ''],\n    \\ 'low': ['Number', ''],\n    \\ 'manifest': ['URL', ''],\n    \\ 'max': ['Number', ''],\n    \\ 'maxlength': ['Int', ''],\n    \\ 'media': ['Text', ''],\n    \\ 'method': ['HTTP Method', ''],\n    \\ 'min': ['Number', ''],\n    \\ 'multiple': ['Bool', ''],\n    \\ 'name': ['Text', ''],\n    \\ 'novalidate': ['Bool', ''],\n    \\ 'open': ['Bool', ''],\n    \\ 'optimum': ['Number', ''],\n    \\ 'pattern': ['Pattern', ''],\n    \\ 'placeholder': ['Text', ''],\n    \\ 'poster': ['URL', ''],\n    \\ 'preload': ['Token', ''],\n    \\ 'pubdate': ['Bool', ''],\n    \\ 'radiogroup': ['Text', ''],\n    \\ 'readonly': ['Bool', ''],\n    \\ 'rel': ['*Token', ''],\n    \\ 'required': ['Bool', ''],\n    \\ 'reversed': ['Bool', ''],\n    \\ 'rows': ['Int', ''],\n    \\ 'rowspan': ['Int', ''],\n    \\ 'sandbox': ['*Token', ''],\n    \\ 'spellcheck': ['true/false', ''],\n    \\ 'scope': ['Token', ''],\n    \\ 'scoped': ['Bool', ''],\n    \\ 'seamless': ['Bool', ''],\n    \\ 'select': ['Text', ''],\n    \\ 'selected': ['Bool', ''],\n    \\ 'shape': ['Token', ''],\n    \\ 'size': ['Int', ''],\n    \\ 'sizes': ['*Token', ''],\n    \\ 'span': ['Int', ''],\n    \\ 'src': ['Int', ''],\n    \\ 'srcdoc': ['Document', ''],\n    \\ 'start': ['Int', ''],\n    \\ 'step': ['Int', ''],\n    \\ 'style': ['Style', ''],\n    \\ 'summary': ['Text', ''],\n    \\ 'tabindex': ['Int', ''],\n    \\ 'target': ['Name', ''],\n    \\ 'title': ['Text', ''],\n    \\ 'type': ['Token', ''],\n    \\ 'usemap': ['Name', ''],\n    \\ 'value': ['Text', ''],\n    \\ 'width': ['Int', ''],\n    \\ 'wrap': ['soft/hard', ''],\n    \\ 'xml:lang': ['Lang tag', ''],\n    \\ 'xml:base': ['*URI', ''],\n    \\ 'xml:space': ['preserve', ''],\n    \\ 'xmlns': ['URI', ''],\n    \\ 'version': ['HTML+RDFa 1.1', ''],\n    \\ 'role': ['*Token', '']\n\\ }\n\nif g:html5_event_handler_attributes_complete == 1\n    let event_handler_attributes = {'onabort': [], 'onblur': [], 'oncanplay': [], 'oncanplaythrough': [], 'onchange': [], 'onclick': [], 'oncontextmenu': [], 'ondblclick': [], 'ondrag': [], 'ondragend': [], 'ondragenter': [], 'ondragleave': [], 'ondragover': [], 'ondragstart': [], 'ondrop': [], 'ondurationchange': [], 'onemptied': [], 'onended': [], 'onerror': [], 'onfocus': [], 'onformchange': [], 'onforminput': [], 'oninput': [], 'oninvalid': [], 'onkeydown': [], 'onkeypress': [], 'onkeyup': [], 'onload': [], 'onloadeddata': [], 'onloadedmetadata': [], 'onloadstart': [], 'onmousedown': [], 'onmousemove': [], 'onmouseout': [], 'onmouseover': [], 'onmouseup': [], 'onmousewheel': [], 'onpause': [], 'onplay': [], 'onplaying': [], 'onprogress': [], 'onratechange': [], 'onreadystatechange': [], 'onscroll': [], 'onseeked': [], 'onseeking': [], 'onselect': [], 'onshow': [], 'onstalled': [], 'onsubmit': [], 'onsuspend': [], 'ontimeupdate': [], 'onvolumechange': [], 'onwaiting': []}\n    let global_attributes = extend(global_attributes, event_handler_attributes)\n    \n    let body_attributes = {'onafterprint': [], 'onbeforeprint': [], 'onbeforeunload': [], 'onblur': [], 'onerror': [], 'onfocus': [], 'onhashchange': [], 'onload': [], 'onmessage': [], 'onoffline': [], 'ononline': [], 'onpopstate': [], 'onredo': [], 'onresize': [], 'onstorage': [], 'onundo': [], 'onunload': []}\n\n    let event_attributes_value = {\n        \\ 'onabort': ['Script', ''],\n        \\ 'onafterprint': ['Script', ''],\n        \\ 'onbeforeprint': ['Script', ''],\n        \\ 'onbeforeunload': ['Script', ''],\n        \\ 'onblur': ['Script', ''],\n        \\ 'oncanplay': ['Script', ''],\n        \\ 'oncanplaythrough': ['Script', ''],\n        \\ 'onchange': ['Script', ''],\n        \\ 'onclick': ['Script', ''],\n        \\ 'oncontextmenu': ['Script', ''],\n        \\ 'ondblclick': ['Script', ''],\n        \\ 'ondrag': ['Script', ''],\n        \\ 'ondragend': ['Script', ''],\n        \\ 'ondragenter': ['Script', ''],\n        \\ 'ondragleave': ['Script', ''],\n        \\ 'ondragover': ['Script', ''],\n        \\ 'ondragstart': ['Script', ''],\n        \\ 'ondrop': ['Script', ''],\n        \\ 'ondurationchange': ['Script', ''],\n        \\ 'onemptied': ['Script', ''],\n        \\ 'onended': ['Script', ''],\n        \\ 'onerror': ['Script', ''],\n        \\ 'onfocus': ['Script', ''],\n        \\ 'onformchange': ['Script', ''],\n        \\ 'onforminput': ['Script', ''],\n        \\ 'onhashchange': ['Script', ''],\n        \\ 'oninput': ['Script', ''],\n        \\ 'oninvalid': ['Script', ''],\n        \\ 'onkeydown': ['Script', ''],\n        \\ 'onkeypress': ['Script', ''],\n        \\ 'onkeyup': ['Script', ''],\n        \\ 'onload': ['Script', ''],\n        \\ 'onloadeddata': ['Script', ''],\n        \\ 'onloadedmetadata': ['Script', ''],\n        \\ 'onloadstart': ['Script', ''],\n        \\ 'onmessage': ['Script', ''],\n        \\ 'onmousedown': ['Script', ''],\n        \\ 'onmousemove': ['Script', ''],\n        \\ 'onmouseout': ['Script', ''],\n        \\ 'onmouseover': ['Script', ''],\n        \\ 'onmouseup': ['Script', ''],\n        \\ 'onmousewheel': ['Script', ''],\n        \\ 'onoffline': ['Script', ''],\n        \\ 'ononline': ['Script', ''],\n        \\ 'onpagehide': ['Script', ''],\n        \\ 'onpageshow': ['Script', ''],\n        \\ 'onpause': ['Script', ''],\n        \\ 'onplay': ['Script', ''],\n        \\ 'onplaying': ['Script', ''],\n        \\ 'onpopstate': ['Script', ''],\n        \\ 'onprogress': ['Script', ''],\n        \\ 'onratechange': ['Script', ''],\n        \\ 'onreadystatechange': ['Script', ''],\n        \\ 'onredo': ['Script', ''],\n        \\ 'onresize': ['Script', ''],\n        \\ 'onscroll': ['Script', ''],\n        \\ 'onseeked': ['Script', ''],\n        \\ 'onseeking': ['Script', ''],\n        \\ 'onselect': ['Script', ''],\n        \\ 'onshow': ['Script', ''],\n        \\ 'onstalled': ['Script', ''],\n        \\ 'onstorage': ['Script', ''],\n        \\ 'onsubmit': ['Script', ''],\n        \\ 'onsuspend': ['Script', ''],\n        \\ 'ontimeupdate': ['Script', ''],\n        \\ 'onundo': ['Script', ''],\n        \\ 'onunload': ['Script', ''],\n        \\ 'onvolumechange': ['Script', ''],\n        \\ 'onwaiting': ['Script', '']\n    \\ }\n\n    let attributes_value = extend(attributes_value, event_attributes_value)\nendif\nif !exists('g:html5_rdfa_attributes_complete')\n    let g:html5_rdfa_attributes_complete = 1\nendif\nif g:html5_rdfa_attributes_complete == 1\n    \" http://www.w3.org/TR/rdfa-syntax/#s_metaAttributes\n    \" http://www.w3.org/TR/rdfa-core/#s_syntax\n    let relrev = ['chapter', 'contents', 'copyright', 'first', 'glossary', 'help', 'icon', 'index', 'last', 'license', 'meta', 'next', 'p3pv1', 'prev', 'role', 'section', 'stylesheet', 'subsection', 'start', 'top', 'up']\n    let rdfa_attributes = {'about': [], 'content': [], 'datatype': [], 'prefix': [], 'profile': [], 'property': [], 'resource': [], 'rel': relrev, 'rev': relrev, 'typeof': [], 'vocab': []}\n    let global_attributes = extend(global_attributes, rdfa_attributes)\n\n    let rdfa_attributes_value = {\n        \\ 'about': ['SafeCURIEorCURIEorURI', ''],\n        \\ 'content': ['CDATA String', ''],\n        \\ 'datatype': ['CURIE', ''],\n        \\ 'prefix': ['*Prefix', ''],\n        \\ 'profile': ['String', ''],\n        \\ 'property': ['*TERMorCURIEorAbsURIs', ''],\n        \\ 'resource': ['URIorSafeCURIE', ''],\n        \\ 'rel': ['*TERMorCURIEorAbsURIs', ''],\n        \\ 'rev': ['*TERMorCURIEorAbsURIs', ''],\n        \\ 'typeof': ['*TERMorCURIEorAbsURIs', ''],\n        \\ 'vocab': ['URI', '']\n    \\ }\n    let attributes_value = extend(attributes_value, rdfa_attributes_value)\nendif\nif !exists('g:html5_microdata_attributes_complete')\n    let g:html5_microdata_attributes_complete = 1\nendif\nif g:html5_microdata_attributes_complete == 1\n    let microdata_attributes = {'itemid': [], 'itemscope': ['itemscope', ''], 'itemtype': [], 'itemprop': [], 'itemref': []}\n    let global_attributes = extend(global_attributes, microdata_attributes)\n\n    let microdata_attributes_value = {\n        \\ 'itemid': ['URI', ''],\n        \\ 'itemscope': ['Bool', ''],\n        \\ 'itemtype': ['URI', ''],\n        \\ 'itemprop': ['String', ''],\n        \\ 'itemref': ['*ID', '']\n    \\ }\n    let attributes_value = extend(attributes_value, microdata_attributes_value)\nendif\n\" }}}\n\n\" WAI_ARIA: {{{\n\" Ref: http://www.w3.org/TR/wai-aria/\n\" Version: Draft 15 December 2009\nif !exists('g:html5_aria_attributes_complete')\n    let g:html5_aria_attributes_complete = 1\nendif\nif g:html5_aria_attributes_complete == 1\n    \" Ref: http://www.w3.org/TR/wai-aria/roles\n    \" Version: Draft 15 December 2009\n    let widget_role = ['alert', 'alertdialog', 'button', 'checkbox', 'combobox', 'dialog', 'gridcell', 'link', 'log', 'marquee', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'progressbar', 'radio', 'radiogroup', 'scrollbar', 'slider', 'spinbutton', 'status', 'tab', 'tabpanel', 'textbox', 'timer', 'tooltip', 'treeitem', 'combobox', 'grid', 'listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid']\n    let document_structure = ['article', 'columnheader', 'definition', 'directory', 'document', 'group', 'heading', 'img', 'list', 'listitem', 'math', 'note', 'presentation', 'region', 'row', 'rowheader', 'separator']\n    let landmark_role = ['application', 'banner', 'complementary', 'contentinfo', 'form', 'main', 'navigation', 'search']\n    let role = extend(widget_role, document_structure)\n    let role = extend(role, landmark_role)\n    let global_attributes = extend(global_attributes, {'role': role})\nendif\n\" }}}\n\n\" Ref: http://dev.w3.org/html5/markup/\n\" Version: Draft 05 April 2011\nlet phrasing_elements = ['a', 'em', 'strong', 'small', 'mark', 'abbr', 'dfn', 'i', 'b', 'u', 'code', 'var', 'samp', 'kbd', 'sup', 'sub', 'q', 'cite', 'span', 'bdo', 'bdi', 'br', 'wbr', 'ins', 'del', 'img', 'embed', 'object', 'iframe', 'map', 'area', 'script', 'noscript', 'ruby', 'video', 'audio', 'input', 'textarea', 'select', 'button', 'label', 'output', 'datalist', 'keygen', 'progress', 'command', 'canvas', 'time', 'meter', 'data', 'content', 'shadow']\n\nlet metadata_elements = ['link', 'style', 'meta', 'script', 'noscript', 'command']\n\nlet flow_elements = phrasing_elements + ['p', 'hr', 'pre', 'ul', 'ol', 'dl', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hgroup', 'address', 'blockquote', 'ins', 'del', 'element', 'object', 'main', 'map', 'noscript', 'section', 'nav', 'article', 'aside', 'header', 'footer', 'video', 'audio', 'figure', 'table', 'template', 'form', 'fieldset', 'menu', 'canvas', 'details']\n\n\" http://dev.w3.org/html5/spec/Overview.html#linkTypes\nlet linktypes = ['alternate', 'author', 'bookmark', 'external', 'help', 'icon', 'license', 'next', 'nofollow', 'noreferrer', 'pingback', 'prefetch', 'prev', 'search', 'stylesheet', 'sidebar', 'tag']\n\" http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html\nlet linkreltypes = linktypes + ['canonical', 'import']\n\n\" a and button are special elements for interactive, some element can't be its descendent\nlet abutton_dec = 'details\\\\|embed\\\\|iframe\\\\|keygen\\\\|label\\\\|menu\\\\|select\\\\|textarea'\n\n\n\nlet g:xmldata_html5 = {\n\\ 'vimxmlentities': ['AElig', 'Aacute', 'Acirc', 'Agrave', 'Alpha', 'Aring', 'Atilde', 'Auml', 'Beta', 'Ccedil', 'Chi', 'Dagger', 'Delta', 'ETH', 'Eacute', 'Ecirc', 'Egrave', 'Epsilon', 'Eta', 'Euml', 'Gamma', 'Iacute', 'Icirc', 'Igrave', 'Iota', 'Iuml', 'Kappa', 'Lambda', 'Mu', 'Ntilde', 'Nu', 'OElig', 'Oacute', 'Ocirc', 'Ograve', 'Omega', 'Omicron', 'Oslash', 'Otilde', 'Ouml', 'Phi', 'Pi', 'Prime', 'Psi', 'Rho', 'Scaron', 'Sigma', 'THORN', 'Tau', 'Theta', 'Uacute', 'Ucirc', 'Ugrave', 'Upsilon', 'Uuml', 'Xi', 'Yacute', 'Yuml', 'Zeta', 'aacute', 'acirc', 'acute', 'aelig', 'agrave', 'alefsym', 'alpha', 'amp', 'and', 'ang', 'apos', 'aring', 'asymp', 'atilde', 'auml', 'bdquo', 'beta', 'brvbar', 'bull', 'cap', 'ccedil', 'cedil', 'cent', 'chi', 'circ', 'clubs', 'cong', 'copy', 'crarr', 'cup', 'curren', 'dArr', 'dagger', 'darr', 'deg', 'delta', 'diams', 'divide', 'eacute', 'ecirc', 'egrave', 'empty', 'emsp', 'ensp', 'epsilon', 'equiv', 'eta', 'eth', 'euml', 'euro', 'exist', 'fnof', 'forall', 'frac12', 'frac14', 'frac34', 'frasl', 'gamma', 'ge', 'gt', 'hArr', 'harr', 'hearts', 'hellip', 'iacute', 'icirc', 'iexcl', 'igrave', 'image', 'infin', 'int', 'iota', 'iquest', 'isin', 'iuml', 'kappa', 'lArr', 'lambda', 'lang', 'laquo', 'larr', 'lceil', 'ldquo', 'le', 'lfloor', 'lowast', 'loz', 'lrm', 'lsaquo', 'lsquo', 'lt', 'macr', 'mdash', 'micro', 'middot', 'minus', 'mu', 'nabla', 'nbsp', 'ndash', 'ne', 'ni', 'not', 'notin', 'nsub', 'ntilde', 'nu', 'oacute', 'ocirc', 'oelig', 'ograve', 'oline', 'omega', 'omicron', 'oplus', 'or', 'ordf', 'ordm', 'oslash', 'otilde', 'otimes', 'ouml', 'para', 'part', 'permil', 'perp', 'phi', 'pi', 'piv', 'plusmn', 'pound', 'prime', 'prod', 'prop', 'psi', 'quot', 'rArr', 'radic', 'rang', 'raquo', 'rarr', 'rceil', 'rdquo', 'real', 'reg', 'rfloor', 'rho', 'rlm', 'rsaquo', 'rsquo', 'sbquo', 'scaron', 'sdot', 'sect', 'shy', 'sigma', 'sigmaf', 'sim', 'spades', 'sub', 'sube', 'sum', 'sup', 'sup1', 'sup2', 'sup3', 'supe', 'szlig', 'tau', 'there4', 'theta', 'thetasym', 'thinsp', 'thorn', 'tilde', 'times', 'trade', 'uArr', 'uacute', 'uarr', 'ucirc', 'ugrave', 'uml', 'upsih', 'upsilon', 'uuml', 'weierp', 'xi', 'yacute', 'yen', 'yuml', 'zeta', 'zwj', 'zwnj'],\n\\ 'vimxmlroot': ['html'],\n\\ 'a': [\n    \\ filter(copy(flow_elements), \"!(v:val =~ '\". abutton_dec .\"')\"),\n    \\ extend(copy(global_attributes), {'name': [], 'href': [], 'target': [], 'rel': linktypes, 'hreflang': lang_tag, 'media': [], 'type': []}) \n\\ ],\n\\ 'abbr': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'address': [\n    \\ filter(copy(flow_elements), \"!(v:val =~ 'address\\\\|nav\\\\|article\\\\|header\\\\|footer\\\\|section\\\\|aside\\\\|h1\\\\|h2\\\\|h3\\\\|h4\\\\|h5\\\\|h6')\"),\n    \\ global_attributes\n\\ ],\n\\ 'area': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'alt': [], 'href': [], 'target': [], 'rel': linktypes, 'media': [], 'hreflang': lang_tag, 'type': [], 'shape': ['rect', 'circle', 'poly', 'default'], 'coords': []})\n\\ ],\n\\ 'article': [\n    \\ flow_elements + ['style'],\n    \\ global_attributes\n\\ ],\n\\ 'aside': [\n    \\ flow_elements + ['style'],\n    \\ global_attributes\n\\ ],\n\\ 'audio': [\n    \\ flow_elements + ['source', 'track'],\n    \\ extend(copy(global_attributes), {'autoplay': ['autoplay', ''], 'preload': ['none', 'metadata', 'auto', ''], 'controls': ['controls', ''], 'loop': ['loop', ''], 'src': []})\n\\ ],\n\\ 'b': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'base': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'href': [], 'target': []})\n\\ ],\n\\ 'bdo': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'bdi': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'blockquote': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), {'cite': []})\n\\ ],\n\\ 'body': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), body_attributes)\n\\ ],\n\\ 'br': [\n    \\ [],\n    \\ global_attributes\n\\ ],\n\\ 'button': [\n    \\ filter(copy(phrasing_elements), \"!(v:val =~ '\". abutton_dec .\"')\"),\n    \\ extend(copy(global_attributes), {'type': ['submit', 'reset', 'button'], 'name': [], 'disabled': ['disabled', ''], 'form': [], 'value': [], 'formaction': [], 'autofocus': ['autofocus', ''], 'formenctype': ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'], 'formmethod': ['get', 'post', 'put', 'delete'], 'formtarget': [], 'formnovalidate': ['formnovalidate', '']})\n\\ ],\n\\ 'canvas': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), {'height': [], 'width': []})\n\\ ],\n\\ 'caption': [\n    \\ filter(copy(flow_elements), \"!(v:val =~ 'table')\"),\n    \\ global_attributes\n\\ ],\n\\ 'cite': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'code': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'col': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'span': []})\n\\ ],\n\\ 'colgroup': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'span': []})\n\\ ],\n\\ 'content': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'select': []})\n\\ ],\n\\ 'command': [\n    \\ ['col'],\n    \\ extend(copy(global_attributes), {'type': ['command', 'radio', 'checkbox'], 'radiogroup': [], 'checked': ['checked', ''], 'label': [], 'icon': [], 'disabled': ['disabled', '']})\n\\ ],\n\\ 'datalist': [\n    \\ phrasing_elements + ['option'],\n    \\ global_attributes\n\\ ],\n\\ 'dd': [\n    \\ flow_elements,\n    \\ global_attributes\n\\ ],\n\\ 'del': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), {'cite': [], 'datetime': []})\n\\ ],\n\\ 'details': [\n    \\ flow_elements + ['summary'],\n    \\ extend(copy(global_attributes), {'open': ['open', '']})\n\\ ],\n\\ 'dfn': [\n    \\ filter(copy(phrasing_elements), \"!(v:val =~ 'dfn')\"),\n    \\ global_attributes\n\\ ],\n\\ 'div': [\n    \\ flow_elements + ['style'],\n    \\ global_attributes\n\\ ],\n\\ 'dl': [\n    \\ ['dt', 'dd'],\n    \\ global_attributes\n\\ ],\n\\ 'dt': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'em': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'embed': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'src': [], 'type': [], 'height': [], 'width': []})\n\\ ],\n\\ 'fieldset': [\n    \\ flow_elements + ['legend'],\n    \\ extend(copy(global_attributes), {'name': [], 'disabled': ['disabled', ''], 'form': []})\n\\ ],\n\\ 'figcaption': [\n    \\ flow_elements,\n    \\ global_attributes\n\\ ],\n\\ 'figure': [\n    \\ flow_elements + ['figcaption'],\n    \\ global_attributes\n\\ ],\n\\ 'footer': [\n    \\ filter(copy(flow_elements), \"!(v:val =~ 'address\\\\|header\\\\|footer')\"),\n    \\ global_attributes\n\\ ],\n\\ 'form': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), {'name': [], 'action': [], 'enctype': ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'], 'method': ['get', 'post', 'put', 'delete'], 'target': [], 'novalidate': ['novalidate', ''], 'accept-charset': charset, 'autocomplete': ['on', 'off']})\n\\ ],\n\\ 'h1': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'h2': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'h3': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'h4': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'h5': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'h6': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'head': [\n    \\ metadata_elements + ['title', 'base'],\n    \\ global_attributes\n\\ ],\n\\ 'header': [\n    \\ filter(copy(flow_elements), \"!(v:val =~ 'address\\\\|header\\\\|footer')\"),\n    \\ global_attributes\n\\ ],\n\\ 'hgroup': [\n    \\ ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'],\n    \\ global_attributes\n\\ ],\n\\ 'hr': [\n    \\ [],\n    \\ global_attributes\n\\ ],\n\\ 'html': [\n    \\ ['head', 'body'],\n    \\ extend(copy(global_attributes), {'manifest': [], 'version': ['HTML+RDFa 1.1']})\n\\ ],\n\\ 'i': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'iframe': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'src': [], 'name': [], 'width': [], 'height': [], 'sandbox': ['allow-same-origin', 'allow-forms', 'allow-scripts'], 'seamless': ['seamless', '']})\n\\ ],\n\\ 'img': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'src': [], 'alt': [], 'height': [], 'width': [], 'usemap': [], 'ismap': ['ismap', '']})\n\\ ],\n\\ 'input': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'type': ['text', 'password', 'checkbox', 'radio', 'button', 'submit', 'reset', 'file', 'hidden', 'image', 'datetime', 'datetime-local', 'date', 'month', 'time', 'week', 'number', 'range', 'email', 'url', 'search', 'tel', 'coloe'], 'name': [], 'disabled': ['disabled', ''], 'form': [], 'maxlength': [], 'readonly': ['readonly', ''], 'size': [], 'value': [], 'autocomplete': ['on', 'off'], 'autofocus': ['autofocus', ''], 'list': [], 'pattern': [], 'required': ['required', ''], 'placeholder': [], 'checked': ['checked'], 'accept': [], 'multiple': ['multiple', ''], 'alt': [], 'src': [], 'height': [], 'width': [], 'min': [], 'max': [], 'step': [], 'formenctype': ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'], 'formmethod': ['get', 'post', 'put', 'delete'], 'formtarget': [], 'formnovalidate': ['formnovalidate', '']})\n\\ ],\n\\ 'ins': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), {'cite': [], 'datetime': []})\n\\ ],\n\\ 'kbd': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'keygen': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'challenge': [], 'keytype': ['rsa'], 'autofocus': ['autofocus', ''], 'name': [], 'disabled': ['disabled', ''], 'form': []})\n\\ ],\n\\ 'label': [\n    \\ filter(copy(phrasing_elements), \"!(v:val =~ 'label')\"),\n    \\ extend(copy(global_attributes), {'for': [], 'form': []})\n\\ ],\n\\ 'legend': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'li': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), {'value': []})\n\\ ],\n\\ 'link': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'href': [], 'rel': linkreltypes, 'hreflang': lang_tag, 'media': [], 'type': [], 'sizes': ['any']})\n\\ ],\n\\ 'main': [\n    \\ flow_elements + ['style'],\n    \\ global_attributes\n\\ ],\n\\ 'map': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), {'name': []})\n\\ ],\n\\ 'mark': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'menu': [\n    \\ flow_elements + ['li'],\n    \\ extend(copy(global_attributes), {'type': ['toolbar', 'context'], 'label': []})\n\\ ],\n\\ 'meta': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'name': [], 'http-equiv': ['refresh', 'default-style', 'content-type'], 'content': [], 'charset': charset})\n\\ ],\n\\ 'meter': [\n    \\ phrasing_elements,\n    \\ extend(copy(global_attributes), {'value': [], 'min': [], 'low': [], 'high': [], 'max': [], 'optimum': []})\n\\ ],\n\\ 'nav': [\n    \\ flow_elements,\n    \\ global_attributes\n\\ ],\n\\ 'noscript': [\n    \\ flow_elements + ['link', 'meta', 'style'],\n    \\ global_attributes\n\\ ],\n\\ 'object': [\n    \\ flow_elements + ['param'],\n    \\ extend(copy(global_attributes), {'data': [], 'type': [], 'height': [], 'width': [], 'usemap': [], 'name': [], 'form': []})\n\\ ],\n\\ 'ol': [\n    \\ ['li'],\n    \\ extend(copy(global_attributes), {'start': [], 'reversed': ['reversed', '']})\n\\ ],\n\\ 'optgroup': [\n    \\ ['option'],\n    \\ extend(copy(global_attributes), {'label': [], 'disabled': ['disabled', '']})\n\\ ],\n\\ 'option': [\n    \\ [''],\n    \\ extend(copy(global_attributes), {'disabled': ['disabled', ''], 'selected': ['selected', ''], 'label': [], 'value': []})\n\\ ],\n\\ 'output': [\n    \\ phrasing_elements,\n    \\ extend(copy(global_attributes), {'name': [], 'form': [], 'for': []})\n\\ ],\n\\ 'p': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'param': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'name': [], 'value': []})\n\\ ],\n\\ 'pre': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'progress': [\n    \\ filter(copy(phrasing_elements), \"!(v:val =~ 'progress')\"),\n    \\ extend(copy(global_attributes), {'value': [], 'max': []})\n\\ ],\n\\ 'q': [\n    \\ phrasing_elements,\n    \\ extend(copy(global_attributes), {'cite': []})\n\\ ],\n\\ 'rp': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'rt': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'ruby': [\n    \\ phrasing_elements + ['rp', 'rt'],\n    \\ global_attributes\n\\ ],\n\\ 'samp': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'script': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'src': [], 'defer': ['defer', ''], 'async': ['async', ''], 'type': [], 'charset': charset})\n\\ ],\n\\ 'section': [\n    \\ flow_elements + ['style'],\n    \\ global_attributes\n\\ ],\n\\ 'select': [\n    \\ ['optgroup', 'option'],\n    \\ extend(copy(global_attributes), {'name': [], 'disabled': ['disabled', ''], 'form': [], 'size': [], 'multiple': ['multiple', '']})\n\\ ],\n\\ 'shadow': [\n    \\ [],\n    \\ global_attributes\n\\ ],\n\\ 'small': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'source': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'src': [], 'type': [], 'media': []})\n\\ ],\n\\ 'span': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'strong': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'style': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'type': [], 'media': [], 'scoped': ['scoped', '']})\n\\ ],\n\\ 'sub': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'summary': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'sup': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'table': [\n    \\ ['caption', 'col', 'colgroup', 'thead', 'tfoot', 'tbody', 'tr'],\n    \\ extend(copy(global_attributes), {'border': []})\n\\ ],\n\\ 'tbody': [\n    \\ ['tr'],\n    \\ global_attributes\n\\ ],\n\\ 'td': [\n    \\ flow_elements,\n    \\ extend(copy(global_attributes), {'colspan': [], 'rowspan': [], 'headers': []})\n\\ ],\n\\ 'template': [\n    \\ flow_elements + ['style'],\n    \\ global_attributes\n\\ ],\n\\ 'textarea': [\n    \\ [''],\n    \\ extend(copy(global_attributes), {'name': [], 'disabled': ['disabled', ''], 'form': [], 'readonly': ['readonly', ''], 'maxlength': [], 'autofocus': ['autofocus', ''], 'required': ['required', ''], 'placeholder': [], 'rows': [], 'wrap': ['hard', 'soft'], 'cols': []})\n\\ ],\n\\ 'tfoot': [\n    \\ ['tr'],\n    \\ global_attributes\n\\ ],\n\\ 'th': [\n    \\ phrasing_elements,\n    \\ extend(copy(global_attributes), {'scope': ['row', 'col', 'rowgroup', 'colgroup'], 'colspan': [], 'rowspan': [], 'headers': []})\n\\ ],\n\\ 'thead': [\n    \\ ['tr'],\n    \\ global_attributes\n\\ ],\n\\ 'time': [\n    \\ phrasing_elements,\n    \\ extend(copy(global_attributes), {'datetime': [], 'pubdate': ['pubdate', '']})\n\\ ],\n\\ 'data': [\n    \\ phrasing_elements,\n    \\ extend(copy(global_attributes), {'value': []})\n\\ ],\n\\ 'title': [\n    \\ [''],\n    \\ global_attributes\n\\ ],\n\\ 'tr': [\n    \\ ['th', 'td'],\n    \\ global_attributes\n\\ ],\n\\ 'track': [\n    \\ [],\n    \\ extend(copy(global_attributes), {'kind': ['subtitles', 'captions', 'descriptions', 'chapters', 'metadata'], 'src': [], 'charset': charset, 'srclang': lang_tag, 'label': []})\n\\ ],\n\\ 'u': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'ul': [\n    \\ ['li'],\n    \\ global_attributes\n\\ ],\n\\ 'var': [\n    \\ phrasing_elements,\n    \\ global_attributes\n\\ ],\n\\ 'video': [\n    \\ flow_elements + ['source', 'track'],\n    \\ extend(copy(global_attributes), {'autoplay': ['autoplay', ''], 'preload': ['none', 'metadata', 'auto', ''], 'controls': ['controls', ''], 'loop': ['loop', ''], 'poster': [], 'height': [], 'width': [], 'src': []})\n\\ ],\n\\ 'wbr': [\n    \\ [],\n    \\ global_attributes\n\\ ],\n\\ 'vimxmlattrinfo' : attributes_value,\n\\ 'vimxmltaginfo': {\n    \\ 'area': ['/>', ''],\n    \\ 'base': ['/>', ''],\n    \\ 'br': ['/>', ''],\n    \\ 'col': ['/>', ''],\n    \\ 'command': ['/>', ''],\n    \\ 'embed': ['/>', ''],\n    \\ 'hr': ['/>', ''],\n    \\ 'img': ['/>', ''],\n    \\ 'input': ['/>', ''],\n    \\ 'keygen': ['/>', ''],\n    \\ 'link': ['/>', ''],\n    \\ 'meta': ['/>', ''],\n    \\ 'param': ['/>', ''],\n    \\ 'source': ['/>', ''],\n    \\ 'track': ['/>', ''],\n    \\ 'wbr': ['/>', ''],\n\\ },\n\\ }\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/build",
    "content": "#!/usr/bin/env bash\n\nset -E\n\nDIRS=\"syntax indent compiler autoload ftplugin ftdetect after/syntax after/indent after/ftplugin after/ftdetect\"\n\ndownload() {\n  for pack in $1; do\n    path=\"$(printf \"$pack\" | cut -d ':' -f 2)\"\n    dir=\"tmp/$(printf \"$path\" | cut -d '/' -f 2)\"\n    rm -rf \"$dir\"\n    (git clone -q --recursive \"https://github.com/$path.git\" \"$dir\" && printf '.') &\n  done\n\n  wait\n}\n\nextract() {\n  printf \"\\n\"\n  for pack in $1; do\n    name=\"$(printf \"$pack\" | cut -d ':' -f 1)\"\n    path=\"$(printf \"$pack\" | cut -d ':' -f 2)\"\n    dir=\"tmp/$(printf \"$path\" | cut -d '/' -f 2)\"\n    printf -- \"- [$name](https://github.com/$path) (\"\n\n    subdirs=\"\"\n    for subdir in $DIRS; do\n      if [ -d \"$dir/$subdir\" ]; then\n        base=\"$(basename \"$subdir\")\"\n        if [[ \"$subdirs\" != *\"$base\"* ]]; then\n          subdirs=\"$subdirs, $base\"\n        fi\n\n        copy_dir \"$dir\" \"$subdir\"\n      fi\n    done\n\n\n    printf \"${subdirs##, })\\n\"\n  done\n\n  for pack in $1; do\n    name=\"$(printf \"$pack\" | cut -d ':' -f 1)\"\n    path=\"$(printf \"$pack\" | cut -d ':' -f 2)\"\n    dir=\"tmp/$(printf \"$path\" | cut -d '/' -f 2)\"\n\n    if [ -d \"$dir/plugin\" ]; then\n      printf \"Possible error (plugin directory exists): $path\\n\"\n    fi\n  done\n}\n\ncopy_dir() {\n  for file in $(find \"$1/$2\" -name '*.vim'); do\n    file_path=\"$(dirname \"${file##$1/}\")\"\n    mkdir -p \"$file_path\"\n    touch \"$file_path/$(basename \"$file\")\"\n    cat $file >> $file_path/$(basename \"$file\")\n  done\n}\n\nconcat_ftdetect() {\n  cat ftdetect/* | grep -E '^[^\"]' > tmp/polyglot.vim\n  rm -f ftdetect/*\n  mv tmp/polyglot.vim ftdetect/\n}\n\nPACKS=\"\n  arduino:sudar/vim-arduino-syntax\n  c++11:octol/vim-cpp-enhanced-highlight\n  c/c++:vim-jp/cpp-vim\n  clojure:guns/vim-clojure-static\n  coffee-script:kchmck/vim-coffee-script\n  csv:chrisbra/csv.vim\n  cucumber:tpope/vim-cucumber\n  dockerfile:honza/dockerfile.vim\n  elixir:elixir-lang/vim-elixir\n  erlang:oscarh/vimerl\n  git:tpope/vim-git\n  go:jnwhiteh/vim-golang\n  haml:tpope/vim-haml\n  handlebars:mustache/vim-mustache-handlebars\n  haskell:travitch/hasksyn\n  html5:othree/html5.vim\n  jade:digitaltoad/vim-jade\n  javascript:pangloss/vim-javascript\n  json:leshill/vim-json\n  jst:briancollins/vim-jst\n  latex:LaTeX-Box-Team/LaTeX-Box\n  less:groenewege/vim-less\n  markdown:tpope/vim-markdown\n  nginx:mutewinter/nginx.vim\n  ocaml:jrk/vim-ocaml\n  octave:vim-scripts/octave.vim--\n  opencl:petRUShka/vim-opencl\n  perl:vim-perl/vim-perl\n  php:StanAngeloff/php.vim\n  puppet:ajf/puppet-vim\n  protobuf:uarun/vim-protobuf\n  python:vim-scripts/python.vim--Vasiliev\n  r-lang:vim-scripts/R.vim\n  rspec:sheerun/rspec.vim\n  ruby:vim-ruby/vim-ruby\n  rust:wting/rust.vim\n  sbt:derekwyatt/vim-sbt\n  scala:derekwyatt/vim-scala\n  slim:slim-template/vim-slim\n  stylus:wavded/vim-stylus\n  textile:timcharper/textile.vim\n  tmux:acustodioo/vim-tmux\n  tomdoc:duwanis/tomdoc.vim\n  typescript:leafgarland/typescript-vim\n  vbnet:vim-scripts/vbnet.vim\n  twig:beyondwords/vim-twig\n  xls:vim-scripts/XSLT-syntax\n  yard:sheerun/vim-yardoc\n  css-color:gorodinskiy/vim-coloresque\n\"\n\nrm -rf tmp\nrm -rf $DIRS\nmkdir tmp\n\nprintf \"Downloading packs...\"\ndownload \"$PACKS\"\nextract \"$PACKS\"\nconcat_ftdetect\n\nrm -rf tmp\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/compiler/cake.vim",
    "content": "\" Language:    CoffeeScript\n\" Maintainer:  Mick Koch <kchmck@gmail.com>\n\" URL:         http://github.com/kchmck/vim-coffee-script\n\" License:     WTFPL\n\nif exists('current_compiler')\n  finish\nendif\n\nlet current_compiler = 'cake'\ncall coffee#CoffeeSetUpVariables()\n\nexec 'CompilerSet makeprg=' . escape(g:coffee_cake . ' ' .\n\\                                    g:coffee_cake_options . ' $*', ' ')\ncall coffee#CoffeeSetUpErrorFormat()\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/compiler/coffee.vim",
    "content": "\" Language:    CoffeeScript\n\" Maintainer:  Mick Koch <kchmck@gmail.com>\n\" URL:         http://github.com/kchmck/vim-coffee-script\n\" License:     WTFPL\n\n\" All this is needed to support compiling filenames with spaces, quotes, and\n\" such. The filename is escaped and embedded into the `makeprg` setting.\n\"\n\" Because of this, `makeprg` must be updated on every file rename. And because\n\" of that, `CompilerSet` can't be used because it doesn't exist when the\n\" rename autocmd is ran. So, we have to do some checks to see whether `compiler`\n\" was called locally or globally, and respect that in the rest of the script.\n\nif exists('current_compiler')\n  finish\nendif\n\nlet current_compiler = 'coffee'\ncall coffee#CoffeeSetUpVariables()\n\n\" Pattern to check if coffee is the compiler\nlet s:pat = '^' . current_compiler\n\n\" Get a `makeprg` for the current filename.\nfunction! s:GetMakePrg()\n  return g:coffee_compiler .\n  \\      ' -c' .\n  \\      ' ' . b:coffee_litcoffee .\n  \\      ' ' . g:coffee_make_options .\n  \\      ' $*' .\n  \\      ' ' . fnameescape(expand('%'))\nendfunction\n\n\" Set `makeprg` and return 1 if coffee is still the compiler, else return 0.\nfunction! s:SetMakePrg()\n  if &l:makeprg =~ s:pat\n    let &l:makeprg = s:GetMakePrg()\n  elseif &g:makeprg =~ s:pat\n    let &g:makeprg = s:GetMakePrg()\n  else\n    return 0\n  endif\n\n  return 1\nendfunction\n\n\" Set a dummy compiler so we can check whether to set locally or globally.\nexec 'CompilerSet makeprg=' . current_compiler\n\" Then actually set the compiler.\ncall s:SetMakePrg()\ncall coffee#CoffeeSetUpErrorFormat()\n\nfunction! s:CoffeeMakeDeprecated(bang, args)\n  echoerr 'CoffeeMake is deprecated! Please use :make instead, its behavior ' .\n  \\       'is identical.'\n  sleep 5\n  exec 'make' . a:bang a:args\nendfunction\n\n\" Compile the current file.\ncommand! -bang -bar -nargs=* CoffeeMake\n\\        call s:CoffeeMakeDeprecated(<q-bang>, <q-args>)\n\n\" Set `makeprg` on rename since we embed the filename in the setting.\naugroup CoffeeUpdateMakePrg\n  autocmd!\n\n  \" Update `makeprg` if coffee is still the compiler, else stop running this\n  \" function.\n  function! s:UpdateMakePrg()\n    if !s:SetMakePrg()\n      autocmd! CoffeeUpdateMakePrg\n    endif\n  endfunction\n\n  \" Set autocmd locally if compiler was set locally.\n  if &l:makeprg =~ s:pat\n    autocmd BufWritePre,BufFilePost <buffer> call s:UpdateMakePrg()\n  else\n    autocmd BufWritePre,BufFilePost          call s:UpdateMakePrg()\n  endif\naugroup END\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/compiler/cucumber.vim",
    "content": "\" Vim compiler file\n\" Compiler:\tCucumber\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 Aug 09\n\nif exists(\"current_compiler\")\n  finish\nendif\nlet current_compiler = \"cucumber\"\n\nif exists(\":CompilerSet\") != 2\t\t\" older Vim always used :setlocal\n  command -nargs=* CompilerSet setlocal <args>\nendif\n\nlet s:cpo_save = &cpo\nset cpo-=C\n\nCompilerSet makeprg=cucumber\n\nCompilerSet errorformat=\n      \\%W%m\\ (Cucumber::Undefined),\n      \\%E%m\\ (%.%#),\n      \\%Z%f:%l,\n      \\%Z%f:%l:%.%#\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim:set sw=2 sts=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/compiler/erlang.vim",
    "content": "\" Erlang compiler file\n\" Language:   Erlang\n\" Maintainer: Pawel 'kTT' Salata <rockplayer.pl@gmail.com>\n\" URL:        http://ktototaki.info\n\nif exists(\"current_compiler\")\n    finish\nendif\nlet current_compiler = \"erlang\"\n\nif exists(\":CompilerSet\") != 2\n    command -nargs=* CompilerSet setlocal <args>\nendif\n\nif !exists('g:erlangCheckFile')\n    let g:erlangCheckFile = \"~/.vim/compiler/erlang_check_file.erl\"\nendif\n\nif !exists('g:erlangHighlightErrors')\n    let g:erlangHighlightErrors = 0\nendif\n\nlet b:error_list = {}\nlet b:is_showing_msg = 0\n\nfunction! HighlightErlangErrors()\n    if match(getline(1), \"#!.*escript\") != -1\n        setlocal makeprg=escript\\ -s\\ %\n    else\n        execute \"setlocal makeprg=\" . g:erlangCheckFile . \"\\\\ \\%\"\n    endif\n    silent make!\n    call s:clear_matches()\n    for error in getqflist()\n        let item = {}\n        let item['lnum'] = error.lnum\n        let item['msg'] = error.text\n        let b:error_list[error.lnum] = item\n        call matchadd('SpellBad', \"\\\\%\" . error.lnum . \"l\")\n    endfor\n    if len(getqflist())\n        redraw!\n    endif\n    call s:show_msg()\n    setlocal makeprg=erlc\\ %\nendfunction\n\nfunction! s:show_msg()\n    let pos = getpos(\".\")\n    if has_key(b:error_list, pos[1])\n        let item = get(b:error_list, pos[1])\n        echo item.msg\n        let b:is_showing_msg = 1\n    else\n        if exists(\"b:is_showing_msg\") && b:is_showing_msg == 1\n            echo\n            let b:is_showing_msg = 0\n        endif\n    endif\nendf\n\nfunction! s:clear_matches()\n    call clearmatches()\n    let b:error_list = {}\n    if exists(\"b:is_showing_msg\") && b:is_showing_msg == 1\n        echo\n        let b:is_showing_msg = 0\n    endif\nendfunction\n\nCompilerSet makeprg=erlc\\ %\nCompilerSet errorformat=%f:%l:\\ %tarning:\\ %m,%E%f:%l:\\ %m\n\nif g:erlangHighlightErrors\n    autocmd BufLeave *.erl call s:clear_matches()\n    autocmd BufEnter *.erl call s:clear_matches()\n    autocmd BufWritePost *.erl call HighlightErlangErrors()\n    autocmd CursorHold *.erl call s:show_msg()\n    autocmd CursorMoved *.erl call s:show_msg()\nendif\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/compiler/eruby.vim",
    "content": "\" Vim compiler file\n\" Language:\t\teRuby\n\" Maintainer:\t\tDoug Kearns <dougkearns@gmail.com>\n\" URL:\t\t\thttps://github.com/vim-ruby/vim-ruby\n\" Release Coordinator:\tDoug Kearns <dougkearns@gmail.com>\n\nif exists(\"current_compiler\")\n  finish\nendif\nlet current_compiler = \"eruby\"\n\nif exists(\":CompilerSet\") != 2\t\t\" older Vim always used :setlocal\n  command -nargs=* CompilerSet setlocal <args>\nendif\n\nlet s:cpo_save = &cpo\nset cpo-=C\n\nif exists(\"eruby_compiler\") && eruby_compiler == \"eruby\"\n  CompilerSet makeprg=eruby\nelse\n  CompilerSet makeprg=erb\nendif\n\nCompilerSet errorformat=\n    \\eruby:\\ %f:%l:%m,\n    \\%+E%f:%l:\\ parse\\ error,\n    \\%W%f:%l:\\ warning:\\ %m,\n    \\%E%f:%l:in\\ %*[^:]:\\ %m,\n    \\%E%f:%l:\\ %m,\n    \\%-C%\\tfrom\\ %f:%l:in\\ %.%#,\n    \\%-Z%\\tfrom\\ %f:%l,\n    \\%-Z%p^,\n    \\%-G%.%#\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim: nowrap sw=2 sts=2 ts=8:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/compiler/exunit.vim",
    "content": "\" Vim compiler file\n\" Language:     ExUnit\n\" Maintainer:   Rein Henrichs <rein.henrichs@gmail.com>\n\" URL:          https://github.com/elixir-lang/vim-elixir\n\nif exists(\"current_compiler\")\n  finish\nendif\nlet current_compiler = \"exunit\"\n\nif exists(\":CompilerSet\") != 2    \" older Vim always used :setlocal\n  command -nargs=* CompilerSet setlocal <args>\nendif\n\nlet s:cpo_save = &cpo\nset cpo-=C\n\nCompilerSet makeprg=mix\\ test\nCompilerSet errorformat=%A\\ \\ %.)\\ %m(%.%#),%C\\ \\ \\ \\ \\ **%m,%C\\ \\ \\ \\ \\ \\ \\ %m,%Z\\ \\ \\ \\ \\ at\\ %f:%l,%-G%.%#\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim: nowrap sw=2 sts=2 ts=8:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/compiler/go.vim",
    "content": "\" Copyright 2013 The Go Authors. All rights reserved.\n\" Use of this source code is governed by a BSD-style\n\" license that can be found in the LICENSE file.\n\"\n\" compiler/go.vim: Vim compiler file for Go.\n\nif exists(\"current_compiler\")\n    finish\nendif\nlet current_compiler = \"go\"\n\nif exists(\":CompilerSet\") != 2\n    command -nargs=* CompilerSet setlocal <args>\nendif\n\nlet s:save_cpo = &cpo\nset cpo-=C\n\nCompilerSet makeprg=go\\ build\nCompilerSet errorformat=\n        \\%-G#\\ %.%#,\n        \\%A%f:%l:%c:\\ %m,\n        \\%A%f:%l:\\ %m,\n        \\%C%*\\\\s%m,\n        \\%-G%.%#\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim:ts=4:sw=4:et\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/compiler/haml.vim",
    "content": "\" Vim compiler file\n\" Compiler:\tHaml\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2013 May 30\n\nif exists(\"current_compiler\")\n  finish\nendif\nlet current_compiler = \"haml\"\n\nif exists(\":CompilerSet\") != 2\t\t\" older Vim always used :setlocal\n  command -nargs=* CompilerSet setlocal <args>\nendif\n\nlet s:cpo_save = &cpo\nset cpo-=C\n\nCompilerSet makeprg=haml\\ -c\n\nCompilerSet errorformat=\n      \\Haml\\ %trror\\ on\\ line\\ %l:\\ %m,\n      \\Syntax\\ %trror\\ on\\ line\\ %l:\\ %m,\n      \\%-G%.%#\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim:set sw=2 sts=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/compiler/rake.vim",
    "content": "\" Vim compiler file\n\" Language:\t\tRake\n\" Maintainer:\t\tTim Pope <vimNOSPAM@tpope.org>\n\" URL:\t\t\thttps://github.com/vim-ruby/vim-ruby\n\" Release Coordinator:\tDoug Kearns <dougkearns@gmail.com>\n\nif exists(\"current_compiler\")\n  finish\nendif\nlet current_compiler = \"rake\"\n\nif exists(\":CompilerSet\") != 2\t\t\" older Vim always used :setlocal\n  command -nargs=* CompilerSet setlocal <args>\nendif\n\nlet s:cpo_save = &cpo\nset cpo-=C\n\nCompilerSet makeprg=rake\n\nCompilerSet errorformat=\n      \\%D(in\\ %f),\n      \\%\\\\s%#from\\ %f:%l:%m,\n      \\%\\\\s%#from\\ %f:%l:,\n      \\%\\\\s%##\\ %f:%l:%m,\n      \\%\\\\s%##\\ %f:%l,\n      \\%\\\\s%#[%f:%l:\\ %#%m,\n      \\%\\\\s%#%f:%l:\\ %#%m,\n      \\%\\\\s%#%f:%l:,\n      \\%m\\ [%f:%l]:\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim: nowrap sw=2 sts=2 ts=8:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/compiler/rspec.vim",
    "content": "\" Vim compiler file\n\" Language:\t\tRSpec\n\" Maintainer:\t\tTim Pope <vimNOSPAM@tpope.org>\n\" URL:\t\t\thttps://github.com/vim-ruby/vim-ruby\n\" Release Coordinator:\tDoug Kearns <dougkearns@gmail.com>\n\nif exists(\"current_compiler\")\n  finish\nendif\nlet current_compiler = \"rspec\"\n\nif exists(\":CompilerSet\") != 2\t\t\" older Vim always used :setlocal\n  command -nargs=* CompilerSet setlocal <args>\nendif\n\nlet s:cpo_save = &cpo\nset cpo-=C\n\nCompilerSet makeprg=rspec\n\nCompilerSet errorformat=\n    \\%f:%l:\\ %tarning:\\ %m,\n    \\%E%.%#:in\\ `load':\\ %f:%l:%m,\n    \\%E%f:%l:in\\ `%*[^']':\\ %m,\n    \\%-Z\\ \\ \\ \\ \\ \\#\\ %f:%l:%.%#,\n    \\%E\\ \\ %\\\\d%\\\\+)%.%#,\n    \\%C\\ \\ \\ \\ \\ %m,\n    \\%-G%.%#\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim: nowrap sw=2 sts=2 ts=8:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/compiler/ruby.vim",
    "content": "\" Vim compiler file\n\" Language:\t\tRuby\n\" Function:\t\tSyntax check and/or error reporting\n\" Maintainer:\t\tTim Pope <vimNOSPAM@tpope.org>\n\" URL:\t\t\thttps://github.com/vim-ruby/vim-ruby\n\" Release Coordinator:\tDoug Kearns <dougkearns@gmail.com>\n\" ----------------------------------------------------------------------------\n\nif exists(\"current_compiler\")\n  finish\nendif\nlet current_compiler = \"ruby\"\n\nif exists(\":CompilerSet\") != 2\t\t\" older Vim always used :setlocal\n  command -nargs=* CompilerSet setlocal <args>\nendif\n\nlet s:cpo_save = &cpo\nset cpo-=C\n\n\" default settings runs script normally\n\" add '-c' switch to run syntax check only:\n\"\n\"   CompilerSet makeprg=ruby\\ -wc\\ $*\n\"\n\" or add '-c' at :make command line:\n\"\n\"   :make -c %<CR>\n\"\nCompilerSet makeprg=ruby\\ -w\\ $*\n\nCompilerSet errorformat=\n    \\%+E%f:%l:\\ parse\\ error,\n    \\%W%f:%l:\\ warning:\\ %m,\n    \\%E%f:%l:in\\ %*[^:]:\\ %m,\n    \\%E%f:%l:\\ %m,\n    \\%-C%\\tfrom\\ %f:%l:in\\ %.%#,\n    \\%-Z%\\tfrom\\ %f:%l,\n    \\%-Z%p^,\n    \\%-G%.%#\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim: nowrap sw=2 sts=2 ts=8:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/compiler/rubyunit.vim",
    "content": "\" Vim compiler file\n\" Language:\t\tTest::Unit - Ruby Unit Testing Framework\n\" Maintainer:\t\tDoug Kearns <dougkearns@gmail.com>\n\" URL:\t\t\thttps://github.com/vim-ruby/vim-ruby\n\" Release Coordinator:\tDoug Kearns <dougkearns@gmail.com>\n\nif exists(\"current_compiler\")\n  finish\nendif\nlet current_compiler = \"rubyunit\"\n\nif exists(\":CompilerSet\") != 2\t\t\" older Vim always used :setlocal\n  command -nargs=* CompilerSet setlocal <args>\nendif\n\nlet s:cpo_save = &cpo\nset cpo-=C\n\nCompilerSet makeprg=testrb\n\nCompilerSet errorformat=\\%W\\ %\\\\+%\\\\d%\\\\+)\\ Failure:,\n\t\t\t\\%C%m\\ [%f:%l]:,\n\t\t\t\\%E\\ %\\\\+%\\\\d%\\\\+)\\ Error:,\n\t\t\t\\%C%m:,\n\t\t\t\\%C\\ \\ \\ \\ %f:%l:%.%#,\n\t\t\t\\%C%m,\n\t\t\t\\%Z\\ %#,\n\t\t\t\\%-G%.%#\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim: nowrap sw=2 sts=2 ts=8:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/compiler/rustc.vim",
    "content": "\" Vim compiler file\n\" Compiler:         Rust Compiler\n\" Maintainer:       Chris Morgan <me@chrismorgan.info>\n\" Latest Revision:  2013 Jul 12\n\nif exists(\"current_compiler\")\n  finish\nendif\nlet current_compiler = \"rustc\"\n\nlet s:cpo_save = &cpo\nset cpo&vim\n\nif exists(\":CompilerSet\") != 2\n\tcommand -nargs=* CompilerSet setlocal <args>\nendif\n\nif exists(\"g:rustc_makeprg_no_percent\") && g:rustc_makeprg_no_percent == 1\n\tCompilerSet makeprg=rustc\nelse\n\tCompilerSet makeprg=rustc\\ \\%\nendif\n\nCompilerSet errorformat=\n\t\t\t\\%f:%l:%c:\\ %t%*[^:]:\\ %m,\n\t\t\t\\%f:%l:%c:\\ %*\\\\d:%*\\\\d\\ %t%*[^:]:\\ %m,\n\t\t\t\\%-G%f:%l\\ %s,\n\t\t\t\\%-G%*[\\ ]^,\n\t\t\t\\%-G%*[\\ ]^%*[~],\n\t\t\t\\%-G%*[\\ ]...\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/compiler/sass.vim",
    "content": "\" Vim compiler file\n\" Compiler:\tSass\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2013 May 30\n\nif exists(\"current_compiler\")\n  finish\nendif\nlet current_compiler = \"sass\"\n\nif exists(\":CompilerSet\") != 2\t\t\" older Vim always used :setlocal\n  command -nargs=* CompilerSet setlocal <args>\nendif\n\nlet s:cpo_save = &cpo\nset cpo-=C\n\nCompilerSet makeprg=sass\\ -c\n\nCompilerSet errorformat=\n      \\%f:%l:%m\\ (Sass::Syntax%trror),\n      \\%ESyntax\\ %trror:%m,\n      \\%C%\\\\s%\\\\+on\\ line\\ %l\\ of\\ %f,\n      \\%Z%.%#,\n      \\%-G%.%#\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim:set sw=2 sts=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/compiler/typescript.vim",
    "content": "if exists(\"current_compiler\")\n  finish\nendif\nlet current_compiler = \"typescript\"\n\nCompilerSet makeprg=tsc\\ $*\\ %\n\nCompilerSet errorformat=%+A\\ %#%f\\ %#(%l\\\\\\,%c):\\ %m,%C%m\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftdetect/polyglot.vim",
    "content": "au BufRead,BufNewFile *.ino,*.pde set filetype=arduino\nautocmd BufNewFile,BufRead *.clj,*.cljs,*.edn setlocal filetype=clojure\nautocmd BufNewFile,BufRead *.coffee set filetype=coffee\nautocmd BufNewFile,BufRead *Cakefile set filetype=coffee\nautocmd BufNewFile,BufRead *.coffeekup,*.ck set filetype=coffee\nautocmd BufNewFile,BufRead *._coffee set filetype=coffee\nfunction! s:DetectCoffee()\n    if getline(1) =~ '^#!.*\\<coffee\\>'\n        set filetype=coffee\n    endif\nendfunction\nautocmd BufNewFile,BufRead * call s:DetectCoffee()\nau BufRead,BufNewFile *.csv,*.dat,*.tsv,*.tab set filetype=csv\nautocmd BufNewFile,BufReadPost *.feature,*.story set filetype=cucumber\nau BufNewFile,BufRead Dockerfile set filetype=dockerfile\nau BufRead,BufNewFile *.ex,*.exs set filetype=elixir\nau FileType elixir setl sw=2 sts=2 et iskeyword+=!,?\nautocmd BufNewFile,BufRead *.git/{,modules/**/}{COMMIT_EDIT,MERGE_}MSG set ft=gitcommit\nautocmd BufNewFile,BufRead *.git/config,.gitconfig,.gitmodules set ft=gitconfig\nautocmd BufNewFile,BufRead */.config/git/config                set ft=gitconfig\nautocmd BufNewFile,BufRead *.git/modules/**/config             set ft=gitconfig\nautocmd BufNewFile,BufRead git-rebase-todo                     set ft=gitrebase\nautocmd BufNewFile,BufRead .gitsendemail.*                     set ft=gitsendemail\nautocmd BufNewFile,BufRead *.git/**\n      \\ if getline(1) =~ '^\\x\\{40\\}\\>\\|^ref: ' |\n      \\   set ft=git |\n      \\ endif\nautocmd BufNewFile,BufRead,StdinReadPost *\n      \\ if getline(1) =~ '^\\(commit\\|tree\\|object\\) \\x\\{40\\}\\>\\|^tag \\S\\+$' |\n      \\   set ft=git |\n      \\ endif\nlet s:current_fileformats = ''\nlet s:current_fileencodings = ''\nfunction! s:gofiletype_pre()\n  let s:current_fileformats = &g:fileformats\n  let s:current_fileencodings = &g:fileencodings\n  set fileencodings=utf-8 fileformats=unix\n  setlocal filetype=go\nendfunction\nfunction! s:gofiletype_post()\n  let &g:fileformats = s:current_fileformats\n  let &g:fileencodings = s:current_fileencodings\nendfunction\nau BufNewFile *.go setlocal filetype=go fileencoding=utf-8 fileformat=unix\nau BufRead *.go call s:gofiletype_pre()\nau BufReadPost *.go call s:gofiletype_post()\nautocmd BufNewFile,BufRead *.haml,*.hamlbars setf haml\nautocmd BufNewFile,BufRead *.sass setf sass\nautocmd BufNewFile,BufRead *.scss setf scss\nautocmd BufNewFile,BufReadPost *.jade set filetype=jade\nau BufNewFile,BufRead *.js setf javascript\nau BufNewFile,BufRead *.jsm setf javascript\nau BufNewFile,BufRead Jakefile setf javascript\nfun! s:SelectJavascript()\n  if getline(1) =~# '^#!.*/bin/env\\s\\+node\\>'\n    set ft=javascript\n  endif\nendfun\nau BufNewFile,BufRead * call s:SelectJavascript()\nautocmd BufNewFile,BufRead *.json set filetype=json\naugroup json_autocmd\n  autocmd!\n  autocmd FileType json setlocal autoindent\n  autocmd FileType json setlocal formatoptions=tcq2l\n  autocmd FileType json setlocal foldmethod=syntax\naugroup END\nau BufNewFile,BufRead *.ejs\t\tset filetype=jst\nau BufNewFile,BufRead *.jst  \t\tset filetype=jst\nau BufNewFile,BufRead *.hamljs set filetype=jst\nautocmd BufNewFile,BufRead *.less setf less\nautocmd BufNewFile,BufRead *.markdown,*.md,*.mdown,*.mkd,*.mkdn\n      \\ if &ft =~# '^\\%(conf\\|modula2\\)$' |\n      \\   set ft=markdown |\n      \\ else |\n      \\   setf markdown |\n      \\ endif\nautocmd BufRead *.html\n    \\ if getline(1) =~ '^\\(%\\|<[%&].*>\\)' |\n    \\     set filetype=mason |\n    \\ endif\nif has(\"autocmd\")\n  au  BufNewFile,BufRead *.mustache,*.handlebars,*.hbs,*.hogan,*.hulk,*.hjs set filetype=html syntax=mustache | runtime! ftplugin/mustache.vim ftplugin/mustache*.vim ftplugin/mustache/*.vim\nendif\nau BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/*,*/nginx/vhosts.d/*,nginx.conf if &ft == '' | setfiletype nginx | endif\nau BufRead,BufNewFile *.cl set filetype=opencl\nautocmd BufNewFile,BufRead *.proto setfiletype proto\nau BufRead,BufNewFile *.pp              set filetype=puppet\nau BufNewFile,BufRead *.rb,*.rbw,*.gemspec\tset filetype=ruby\nau BufNewFile,BufRead *.builder,*.rxml,*.rjs,*.ruby\tset filetype=ruby\nau BufNewFile,BufRead [rR]akefile,*.rake\tset filetype=ruby\nau BufNewFile,BufRead [rR]antfile,*.rant\tset filetype=ruby\nau BufNewFile,BufRead .irbrc,irbrc\t\tset filetype=ruby\nau BufNewFile,BufRead .pryrc\t\t\tset filetype=ruby\nau BufNewFile,BufRead *.ru\t\t\tset filetype=ruby\nau BufNewFile,BufRead Capfile\t\t\tset filetype=ruby\nau BufNewFile,BufRead Gemfile\t\t\tset filetype=ruby\nau BufNewFile,BufRead Guardfile,.Guardfile\tset filetype=ruby\nau BufNewFile,BufRead Cheffile\t\t\tset filetype=ruby\nau BufNewFile,BufRead Berksfile\t\t\tset filetype=ruby\nau BufNewFile,BufRead [vV]agrantfile\t\tset filetype=ruby\nau BufNewFile,BufRead .autotest\t\t\tset filetype=ruby\nau BufNewFile,BufRead *.erb,*.rhtml\t\tset filetype=eruby\nau BufNewFile,BufRead [tT]horfile,*.thor\tset filetype=ruby\nau BufNewFile,BufRead *.rabl\t\t\tset filetype=ruby\nau BufNewFile,BufRead *.jbuilder\t\tset filetype=ruby\nau BufNewFile,BufRead Puppetfile\t\tset filetype=ruby\nau BufNewFile,BufRead [Bb]uildfile\t\tset filetype=ruby\nau BufNewFile,BufRead Appraisals\t\tset filetype=ruby\nau BufNewFile,BufRead Podfile,*.podspec\t\tset filetype=ruby\nau BufRead,BufNewFile *.rs set filetype=rust\nau BufRead,BufNewFile *.sbt set filetype=sbt\nfun! s:DetectScala()\n    if getline(1) == '#!/usr/bin/env scala'\n        set filetype=scala\n    endif\nendfun\nau BufRead,BufNewFile *.scala,*.sbt set filetype=scala\nau BufRead,BufNewFile * call s:DetectScala()\nautocmd BufNewFile,BufRead *.slim set filetype=slim\nautocmd BufNewFile,BufReadPost *.styl set filetype=stylus\nautocmd BufNewFile,BufReadPost *.stylus set filetype=stylus\nau BufRead,BufNewFile *.textile set filetype=textile\nautocmd BufNewFile,BufRead .tmux.conf*,tmux.conf* setf tmux\nautocmd BufNewFile,BufRead *.twig set filetype=twig\nautocmd BufNewFile,BufRead *.html.twig set filetype=html.twig\nautocmd BufNewFile,BufRead *.ts setlocal filetype=typescript\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/clojure.vim",
    "content": "\" Vim filetype plugin file\n\" Language:\tClojure\n\" Author:\tMeikel Brandmeyer <mb@kotka.de>\n\"\n\" Maintainer:\tSung Pae <self@sungpae.com>\n\" URL:\t\thttps://github.com/guns/vim-clojure-static\n\" License:\tSame as Vim\n\" Last Change:\t%%RELEASE_DATE%%\n\nif exists(\"b:did_ftplugin\")\n\tfinish\nendif\nlet b:did_ftplugin = 1\n\nlet s:cpo_save = &cpo\nset cpo&vim\n\nlet b:undo_ftplugin = 'setlocal iskeyword< define< formatoptions< comments< commentstring< lispwords<'\n\nsetlocal iskeyword+=?,-,*,!,+,/,=,<,>,.,:,$\n\n\" There will be false positives, but this is better than missing the whole set\n\" of user-defined def* definitions.\nsetlocal define=\\\\v[(/]def(ault)@!\\\\S*\n\n\" Remove 't' from 'formatoptions' to avoid auto-wrapping code.\nsetlocal formatoptions-=t\n\n\" Lisp comments are routinely nested (e.g. ;;; SECTION HEADING)\nsetlocal comments=n:;\nsetlocal commentstring=;\\ %s\n\n\" Specially indented symbols from clojure.core and clojure.test.\n\"\n\" Clojure symbols are indented in the defn style when they:\n\"\n\"   * Define vars and anonymous functions\n\"   * Create new lexical scopes or scopes with altered environments\n\"   * Create conditional branches from a predicate function or value\n\"\n\" The arglists for these functions are generally in the form of [x & body];\n\" Functions that accept a flat list of forms do not treat the first argument\n\" specially and hence are not indented specially.\n\"\n\" Generated from https://github.com/guns/vim-clojure-static/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj\nsetlocal lispwords=as->,binding,bound-fn,case,catch,cond->,cond->>,condp,def,definline,definterface,defmacro,defmethod,defmulti,defn,defn-,defonce,defprotocol,defrecord,defstruct,deftest,deftest-,deftype,doall,dorun,doseq,dotimes,doto,extend,extend-protocol,extend-type,fn,for,if,if-let,if-not,let,letfn,locking,loop,ns,proxy,reify,set-test,testing,when,when-first,when-let,when-not,while,with-bindings,with-in-str,with-local-vars,with-open,with-precision,with-redefs,with-redefs-fn,with-test\n\n\" Provide insert mode completions for special forms and clojure.core. As\n\" 'omnifunc' is set by popular Clojure REPL client plugins, we also set\n\" 'completefunc' so that the user has some form of completion available when\n\" 'omnifunc' is set and no REPL connection exists.\nfor s:setting in ['omnifunc', 'completefunc']\n\tif exists('&' . s:setting) && empty(eval('&' . s:setting))\n\t\texecute 'setlocal ' . s:setting . '=clojurecomplete#Complete'\n\t\tlet b:undo_ftplugin .= ' | setlocal ' . s:setting . '<'\n\tendif\nendfor\n\n\" Take all directories of the CLOJURE_SOURCE_DIRS environment variable\n\" and add them to the path option.\n\"\n\" This is a legacy option for VimClojure users.\nif exists('$CLOJURE_SOURCE_DIRS')\n\tfor s:dir in split($CLOJURE_SOURCE_DIRS, (has(\"win32\") || has(\"win64\")) ? ';' : ':')\n\t\tlet s:dir = fnameescape(s:dir)\n\t\t\" Whitespace escaping for Windows\n\t\tlet s:dir = substitute(s:dir, '\\', '\\\\\\\\', 'g')\n\t\tlet s:dir = substitute(s:dir, '\\ ', '\\\\ ', 'g')\n\t\texecute \"setlocal path+=\" . s:dir . \"/**\"\n\tendfor\n\tlet b:undo_ftplugin .= ' | setlocal path<'\nendif\n\n\" Skip brackets in ignored syntax regions when using the % command\nif exists('loaded_matchit')\n\tlet b:match_words = &matchpairs\n\tlet b:match_skip = 's:comment\\|string\\|regex\\|character'\n\tlet b:undo_ftplugin .= ' | unlet! b:match_words b:match_skip'\nendif\n\n\" Win32 can filter files in the browse dialog\nif has(\"gui_win32\") && !exists(\"b:browsefilter\")\n\tlet b:browsefilter = \"Clojure Source Files (*.clj)\\t*.clj\\n\" .\n\t\t\t   \\ \"ClojureScript Source Files (*.cljs)\\t*.cljs\\n\" .\n\t\t\t   \\ \"Java Source Files (*.java)\\t*.java\\n\" .\n\t\t\t   \\ \"All Files (*.*)\\t*.*\\n\"\n\tlet b:undo_ftplugin .= ' | unlet! b:browsefilter'\nendif\n\nlet &cpo = s:cpo_save\n\nunlet! s:cpo_save s:setting s:dir\n\n\" vim:sts=8:sw=8:ts=8:noet\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/coffee.vim",
    "content": "\" Language:    CoffeeScript\n\" Maintainer:  Mick Koch <kchmck@gmail.com>\n\" URL:         http://github.com/kchmck/vim-coffee-script\n\" License:     WTFPL\n\nif exists('b:did_ftplugin')\n  finish\nendif\n\nlet b:did_ftplugin = 1\ncall coffee#CoffeeSetUpVariables()\n\nsetlocal formatoptions-=t formatoptions+=croql\nsetlocal comments=:# commentstring=#\\ %s\nsetlocal omnifunc=javascriptcomplete#CompleteJS\n\n\" Create custom augroups.\naugroup CoffeeBufUpdate | augroup END\naugroup CoffeeBufNew | augroup END\n\n\" Enable coffee compiler if a compiler isn't set already.\nif !len(&l:makeprg)\n  compiler coffee\nendif\n\n\" Switch to the window for buf.\nfunction! s:SwitchWindow(buf)\n  exec bufwinnr(a:buf) 'wincmd w'\nendfunction\n\n\" Create a new scratch buffer and return the bufnr of it. After the function\n\" returns, vim remains in the scratch buffer so more set up can be done.\nfunction! s:ScratchBufBuild(src, vert, size)\n  if a:size <= 0\n    if a:vert\n      let size = winwidth(bufwinnr(a:src)) / 2\n    else\n      let size = winheight(bufwinnr(a:src)) / 2\n    endif\n  endif\n\n  if a:vert\n    vertical belowright new\n    exec 'vertical resize' size\n  else\n    belowright new\n    exec 'resize' size\n  endif\n\n  setlocal bufhidden=wipe buftype=nofile nobuflisted noswapfile nomodifiable\n  nnoremap <buffer> <silent> q :hide<CR>\n\n  return bufnr('%')\nendfunction\n\n\" Replace buffer contents with text and delete the last empty line.\nfunction! s:ScratchBufUpdate(buf, text)\n  \" Move to the scratch buffer.\n  call s:SwitchWindow(a:buf)\n\n  \" Double check we're in the scratch buffer before overwriting.\n  if bufnr('%') != a:buf\n    throw 'unable to change to scratch buffer'\n  endif\n\n  setlocal modifiable\n    silent exec '% delete _'\n    silent put! =a:text\n    silent exec '$ delete _'\n  setlocal nomodifiable\nendfunction\n\n\" Parse the output of coffee into a qflist entry for src buffer.\nfunction! s:ParseCoffeeError(output, src, startline)\n  \" Coffee error is always on first line?\n  let match = matchlist(a:output,\n  \\                     '^\\(\\f\\+\\|\\[stdin\\]\\):\\(\\d\\):\\(\\d\\): error: \\(.\\{-}\\)' . \"\\n\")\n\n  if !len(match)\n    return\n  endif\n\n  \" Consider the line number from coffee as relative and add it to the beginning\n  \" line number of the range the command was called on, then subtract one for\n  \" zero-based relativity.\n  call setqflist([{'bufnr': a:src, 'lnum': a:startline + str2nr(match[2]) - 1,\n  \\                'type': 'E', 'col': str2nr(match[3]), 'text': match[4]}], 'r')\nendfunction\n\n\" Reset source buffer variables.\nfunction! s:CoffeeCompileResetVars()\n  \" Variables defined in source buffer:\n  \"   b:coffee_compile_buf: bufnr of output buffer\n  \" Variables defined in output buffer:\n  \"   b:coffee_src_buf: bufnr of source buffer\n  \"   b:coffee_compile_pos: previous cursor position in output buffer\n\n  let b:coffee_compile_buf = -1\nendfunction\n\nfunction! s:CoffeeWatchResetVars()\n  \" Variables defined in source buffer:\n  \"   b:coffee_watch_buf: bufnr of output buffer\n  \" Variables defined in output buffer:\n  \"   b:coffee_src_buf: bufnr of source buffer\n  \"   b:coffee_watch_pos: previous cursor position in output buffer\n\n  let b:coffee_watch_buf = -1\nendfunction\n\nfunction! s:CoffeeRunResetVars()\n  \" Variables defined in CoffeeRun source buffer:\n  \"   b:coffee_run_buf: bufnr of output buffer\n  \" Variables defined in CoffeeRun output buffer:\n  \"   b:coffee_src_buf: bufnr of source buffer\n  \"   b:coffee_run_pos: previous cursor position in output buffer\n\n  let b:coffee_run_buf = -1\nendfunction\n\n\" Clean things up in the source buffers.\nfunction! s:CoffeeCompileClose()\n  \" Switch to the source buffer if not already in it.\n  silent! call s:SwitchWindow(b:coffee_src_buf)\n  call s:CoffeeCompileResetVars()\nendfunction\n\nfunction! s:CoffeeWatchClose()\n  silent! call s:SwitchWindow(b:coffee_src_buf)\n  silent! autocmd! CoffeeAuWatch * <buffer>\n  call s:CoffeeWatchResetVars()\nendfunction\n\nfunction! s:CoffeeRunClose()\n  silent! call s:SwitchWindow(b:coffee_src_buf)\n  call s:CoffeeRunResetVars()\nendfunction\n\n\" Compile the lines between startline and endline and put the result into buf.\nfunction! s:CoffeeCompileToBuf(buf, startline, endline)\n  let src = bufnr('%')\n  let input = join(getline(a:startline, a:endline), \"\\n\")\n\n  \" Coffee doesn't like empty input.\n  if !len(input)\n    \" Function should still return within output buffer.\n    call s:SwitchWindow(a:buf)\n    return\n  endif\n\n  \" Pipe lines into coffee.\n  let output = system(g:coffee_compiler .\n  \\                   ' -scb' .\n  \\                   ' ' . b:coffee_litcoffee .\n  \\                   ' 2>&1', input)\n\n  \" Paste output into output buffer.\n  call s:ScratchBufUpdate(a:buf, output)\n\n  \" Highlight as JavaScript if there were no compile errors.\n  if v:shell_error\n    call s:ParseCoffeeError(output, src, a:startline)\n    setlocal filetype=\n  else\n    \" Clear the quickfix list.\n    call setqflist([], 'r')\n    setlocal filetype=javascript\n  endif\nendfunction\n\n\" Peek at compiled CoffeeScript in a scratch buffer. We handle ranges like this\n\" to prevent the cursor from being moved (and its position saved) before the\n\" function is called.\nfunction! s:CoffeeCompile(startline, endline, args)\n  if a:args =~ '\\<watch\\>'\n    echoerr 'CoffeeCompile watch is deprecated! Please use CoffeeWatch instead'\n    sleep 5\n    call s:CoffeeWatch(a:args)\n    return\n  endif\n\n  \" Switch to the source buffer if not already in it.\n  silent! call s:SwitchWindow(b:coffee_src_buf)\n\n  \" Bail if not in source buffer.\n  if !exists('b:coffee_compile_buf')\n    return\n  endif\n\n  \" Build the output buffer if it doesn't exist.\n  if bufwinnr(b:coffee_compile_buf) == -1\n    let src = bufnr('%')\n\n    let vert = exists('g:coffee_compile_vert') || a:args =~ '\\<vert\\%[ical]\\>'\n    let size = str2nr(matchstr(a:args, '\\<\\d\\+\\>'))\n\n    \" Build the output buffer and save the source bufnr.\n    let buf = s:ScratchBufBuild(src, vert, size)\n    let b:coffee_src_buf = src\n\n    \" Set the buffer name.\n    exec 'silent! file [CoffeeCompile ' . src . ']'\n\n    \" Clean up the source buffer when the output buffer is closed.\n    autocmd BufWipeout <buffer> call s:CoffeeCompileClose()\n    \" Save the cursor when leaving the output buffer.\n    autocmd BufLeave <buffer> let b:coffee_compile_pos = getpos('.')\n\n    \" Run user-defined commands on new buffer.\n    silent doautocmd CoffeeBufNew User CoffeeCompile\n\n    \" Switch back to the source buffer and save the output bufnr. This also\n    \" triggers BufLeave above.\n    call s:SwitchWindow(src)\n    let b:coffee_compile_buf = buf\n  endif\n\n  \" Fill the scratch buffer.\n  call s:CoffeeCompileToBuf(b:coffee_compile_buf, a:startline, a:endline)\n  \" Reset cursor to previous position.\n  call setpos('.', b:coffee_compile_pos)\n\n  \" Run any user-defined commands on the scratch buffer.\n  silent doautocmd CoffeeBufUpdate User CoffeeCompile\nendfunction\n\n\" Update the scratch buffer and switch back to the source buffer.\nfunction! s:CoffeeWatchUpdate()\n  call s:CoffeeCompileToBuf(b:coffee_watch_buf, 1, '$')\n  call setpos('.', b:coffee_watch_pos)\n  silent doautocmd CoffeeBufUpdate User CoffeeWatch\n  call s:SwitchWindow(b:coffee_src_buf)\nendfunction\n\n\" Continually compile a source buffer.\nfunction! s:CoffeeWatch(args)\n  silent! call s:SwitchWindow(b:coffee_src_buf)\n\n  if !exists('b:coffee_watch_buf')\n    return\n  endif\n\n  if bufwinnr(b:coffee_watch_buf) == -1\n    let src = bufnr('%')\n\n    let vert = exists('g:coffee_watch_vert') || a:args =~ '\\<vert\\%[ical]\\>'\n    let size = str2nr(matchstr(a:args, '\\<\\d\\+\\>'))\n\n    let buf = s:ScratchBufBuild(src, vert, size)\n    let b:coffee_src_buf = src\n\n    exec 'silent! file [CoffeeWatch ' . src . ']'\n\n    autocmd BufWipeout <buffer> call s:CoffeeWatchClose()\n    autocmd BufLeave <buffer> let b:coffee_watch_pos = getpos('.')\n\n    silent doautocmd CoffeeBufNew User CoffeeWatch\n\n    call s:SwitchWindow(src)\n    let b:coffee_watch_buf = buf\n  endif\n\n  \" Make sure only one watch autocmd is defined on this buffer.\n  silent! autocmd! CoffeeAuWatch * <buffer>\n\n  augroup CoffeeAuWatch\n    autocmd InsertLeave <buffer> call s:CoffeeWatchUpdate()\n    autocmd BufWritePost <buffer> call s:CoffeeWatchUpdate()\n  augroup END\n\n  call s:CoffeeWatchUpdate()\nendfunction\n\n\" Run a snippet of CoffeeScript between startline and endline.\nfunction! s:CoffeeRun(startline, endline, args)\n  silent! call s:SwitchWindow(b:coffee_src_buf)\n\n  if !exists('b:coffee_run_buf')\n    return\n  endif\n\n  if bufwinnr(b:coffee_run_buf) == -1\n    let src = bufnr('%')\n\n    let buf = s:ScratchBufBuild(src, exists('g:coffee_run_vert'), 0)\n    let b:coffee_src_buf = src\n\n    exec 'silent! file [CoffeeRun ' . src . ']'\n\n    autocmd BufWipeout <buffer> call s:CoffeeRunClose()\n    autocmd BufLeave <buffer> let b:coffee_run_pos = getpos('.')\n\n    silent doautocmd CoffeeBufNew User CoffeeRun\n\n    call s:SwitchWindow(src)\n    let b:coffee_run_buf = buf\n  endif\n\n  if a:startline == 1 && a:endline == line('$')\n    let output = system(g:coffee_compiler .\n    \\                   ' ' . b:coffee_litcoffee .\n    \\                   ' ' . fnameescape(expand('%')) .\n    \\                   ' ' . a:args)\n  else\n    let input = join(getline(a:startline, a:endline), \"\\n\")\n\n    if !len(input)\n      return\n    endif\n\n    let output = system(g:coffee_compiler .\n    \\                   ' -s' .\n    \\                   ' ' . b:coffee_litcoffee .\n    \\                   ' ' . a:args, input)\n  endif\n\n  call s:ScratchBufUpdate(b:coffee_run_buf, output)\n  call setpos('.', b:coffee_run_pos)\n\n  silent doautocmd CoffeeBufUpdate User CoffeeRun\nendfunction\n\n\" Run coffeelint on a file, and add any errors between startline and endline\n\" to the quickfix list.\nfunction! s:CoffeeLint(startline, endline, bang, args)\n  let input = join(getline(a:startline, a:endline), \"\\n\")\n\n  if !len(input)\n    return\n  endif\n\n  let output = system(g:coffee_linter .\n  \\                   ' -s --csv' .\n  \\                   ' ' . b:coffee_litcoffee .\n  \\                   ' ' . g:coffee_lint_options .\n  \\                   ' ' . a:args .\n  \\                   ' 2>&1', input)\n\n  \" Convert output into an array and strip off the csv header.\n  let lines = split(output, \"\\n\")[1:]\n  let buf = bufnr('%')\n  let qflist = []\n\n  for line in lines\n    let match = matchlist(line, '^stdin,\\(\\d\\+\\),\\d*,\\(error\\|warn\\),\\(.\\+\\)$')\n\n    \" Ignore unmatched lines.\n    if !len(match)\n      continue\n    endif\n\n    \" The 'type' will result in either 'E' or 'W'.\n    call add(qflist, {'bufnr': buf, 'lnum': a:startline + str2nr(match[1]) - 1,\n    \\                 'type': toupper(match[2][0]), 'text': match[3]})\n  endfor\n\n  \" Replace the quicklist with our items.\n  call setqflist(qflist, 'r')\n\n  \" If not given a bang, jump to first error.\n  if !len(a:bang)\n    silent! cc 1\n  endif\nendfunction\n\n\" Complete arguments for Coffee* commands.\nfunction! s:CoffeeComplete(cmd, cmdline, cursor)\n  let args = ['vertical']\n\n  \" If no partial command, return all possibilities.\n  if !len(a:cmd)\n    return args\n  endif\n\n  let pat = '^' . a:cmd\n\n  for arg in args\n    if arg =~ pat\n      return [arg]\n    endif\n  endfor\nendfunction\n\n\" Set initial state variables if they don't exist\nif !exists('b:coffee_compile_buf')\n  call s:CoffeeCompileResetVars()\nendif\n\nif !exists('b:coffee_watch_buf')\n  call s:CoffeeWatchResetVars()\nendif\n\nif !exists('b:coffee_run_buf')\n  call s:CoffeeRunResetVars()\nendif\n\ncommand! -range=% -bar -nargs=* -complete=customlist,s:CoffeeComplete\n\\        CoffeeCompile call s:CoffeeCompile(<line1>, <line2>, <q-args>)\ncommand! -bar -nargs=* -complete=customlist,s:CoffeeComplete\n\\        CoffeeWatch call s:CoffeeWatch(<q-args>)\ncommand! -range=% -bar -nargs=* CoffeeRun\n\\        call s:CoffeeRun(<line1>, <line2>, <q-args>)\ncommand! -range=% -bang -bar -nargs=* CoffeeLint\n\\        call s:CoffeeLint(<line1>, <line2>, <q-bang>, <q-args>)\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/csv.vim",
    "content": "\" Filetype plugin for editing CSV files. \"{{{1\n\" Author:  Christian Brabandt <cb@256bit.org>\n\" Version: 0.29\n\" Script:  http://www.vim.org/scripts/script.php?script_id=2830\n\" License: VIM License\n\" Last Change: Wed, 14 Aug 2013 22:05:39 +0200\n\" Documentation: see :help ft-csv.txt\n\" GetLatestVimScripts: 2830 28 :AutoInstall: csv.vim\n\"\n\" Some ideas are taken from the wiki http://vim.wikia.com/wiki/VimTip667\n\" though, implementation differs.\n\n\" Plugin folklore \"{{{2\nif v:version < 700 || exists('b:did_ftplugin')\n  finish\nendif\nlet b:did_ftplugin = 1\n\nlet s:cpo_save = &cpo\nset cpo&vim\n\n\" Function definitions: \"{{{2\n\"\n\" Script specific functions \"{{{2\nfu! <sid>Warn(mess) \"{{{3\n    echohl WarningMsg\n    echomsg \"CSV: \" . a:mess\n    echohl Normal\nendfu\n\nfu! <sid>Init(startline, endline) \"{{{3\n    \" Hilight Group for Columns\n    if exists(\"g:csv_hiGroup\")\n        let s:hiGroup = g:csv_hiGroup\n    else\n        let s:hiGroup=\"WildMenu\"\n    endif\n    if !exists(\"g:csv_hiHeader\")\n        let s:hiHeader = \"Title\"\n    else\n        let s:hiHeader = g:csv_hiHeader\n    endif\n    exe \"hi link CSVHeaderLine\" s:hiHeader\n\n    \" Determine default Delimiter\n    if !exists(\"g:csv_delim\")\n        let b:delimiter=<SID>GetDelimiter(a:startline, a:endline)\n    else\n        let b:delimiter=g:csv_delim\n    endif\n\n    \" Define custom commentstring\n    if !exists(\"g:csv_comment\")\n        let b:csv_cmt = split(&cms, '%s')\n    else\n        let b:csv_cmt = split(g:csv_comment, '%s')\n    endif\n\n    if empty(b:delimiter) && !exists(\"b:csv_fixed_width\")\n        call <SID>Warn(\"No delimiter found. See :h csv-delimiter to set it manually!\")\n        \" Use a sane default as delimiter:\n        let b:delimiter = ','\n    endif\n\n    let s:del='\\%(' . b:delimiter . '\\|$\\)'\n    let s:del_noend='\\%(' . b:delimiter . '\\)'\n    \" Pattern for matching a single column\n    if !exists(\"g:csv_strict_columns\") && !exists(\"g:csv_col\")\n        \\ && !exists(\"b:csv_fixed_width\")\n        \" - Allow double quotes as escaped quotes only insides double quotes\n        \" - Allow linebreaks only, if g:csv_nl isn't set (this is\n        \"   only allowed in double quoted strings see RFC4180), though this\n        \"   does not work with :WhatColumn and might mess up syntax\n        \"   highlighting.\n        \" - optionally allow whitespace in front of the fields (to make it\n        \"   work with :ArrangeCol (that is actually not RFC4180 valid))\n        \" - Should work with most ugly solutions that are available\n        let b:col='\\%(\\%(\\%(' . (b:delimiter !~ '\\s' ? '\\s*' : '') .\n                \\ '\"\\%(' . (exists(\"g:csv_nl\") ? '\\_' : '' ) .\n                \\ '[^\"]\\|\"\"\\)*\"\\)' . s:del . '\\)\\|\\%(' .\n                \\  '[^' .  b:delimiter . ']*' . s:del . '\\)\\)'\n        let b:col_end='\\%(\\%(\\%(' . (b:delimiter !~ '\\s' ? '\\s*' : '') .\n                \\ '\"\\%(' . (exists(\"g:csv_nl\") ? '\\_' : '' ) .\n                \\ '[^\"]\\|\"\"\\)*\"\\)' . s:del_noend . '\\)\\|\\%(' .\n                \\  '[^' .  b:delimiter . ']*' . s:del_noend . '\\)\\)'\n    elseif !exists(\"g:csv_col\") && exists(\"g:csv_strict_columns\")\n        \" strict columns\n        let b:col='\\%([^' . b:delimiter . ']*' . s:del . '\\)'\n        let b:col_end='\\%([^' . b:delimiter . ']*' . s:del_noend . '\\)'\n    elseif exists(\"b:csv_fixed_width\")\n        \" Fixed width column\n        let b:col=''\n        \" Check for sane default\n        if b:csv_fixed_width =~? '[^0-9,]'\n            call <sid>Warn(\"Please specify the list of character columns\" .\n                \\ \"like this: '1,3,5'. See also :h csv-fixedwidth\")\n            return\n        endif\n        let b:csv_fixed_width_cols=split(b:csv_fixed_width, ',')\n        \" Force evaluating as numbers\n        call map(b:csv_fixed_width_cols, 'v:val+0')\n    else\n        \" User given column definition\n        let b:col = g:csv_col\n        let b:col_noend = g:csv_col\n    endif\n\n    \" set filetype specific options\n    call <sid>LocalSettings('all')\n\n    \" define buffer-local commands\n    call <SID>CommandDefinitions()\n\n    \" Check Header line\n    \" Defines which line is considered to be a header line\n    call <sid>CheckHeaderLine()\n\n    \" CSV specific mappings\n    call <SID>CSVMappings()\n\n    \" force reloading CSV Syntax Highlighting\n    if exists(\"b:current_syntax\")\n        unlet b:current_syntax\n        \" Force reloading syntax file\n    endif\n    call <sid>DoAutoCommands()\n    \" enable CSV Menu\n    call <sid>Menu(1)\n    call <sid>DisableFolding()\n    silent do Syntax\n    unlet! b:csv_start b:csv_end\n\n    \" Remove configuration variables\n    let b:undo_ftplugin .=  \"| unlet! b:delimiter b:col\"\n        \\ . \"| unlet! b:csv_fixed_width_cols b:csv_filter\"\n        \\ . \"| unlet! b:csv_fixed_width b:csv_list b:col_width\"\n        \\ . \"| unlet! b:csv_SplitWindow b:csv_headerline\"\n        \\ . \"| unlet! b:csv_thousands_sep b:csv_decimal_sep\"\n        \\. \" | unlet! b:browsefilter b:csv_cmt\"\n        \\. \" | unlet! b:csv_arrange_leftalign\"\n\n \" Delete all functions\n \" disabled currently, because otherwise when switching ft\n \"          I think, all functions need to be read in again and this\n \"          costs time.\n \"\n \" let b:undo_ftplugin .= \"| delf <sid>Warn | delf <sid>Init |\n \" \\ delf <sid>GetPat | delf <sid>SearchColumn | delf <sid>DelColumn |\n \" \\ delf <sid>HiCol | delf <sid>GetDelimiter | delf <sid>WColumn |\n \" \\ delf <sid>MaxColumns | delf <sid>ColWidth | delf <sid>ArCol |\n \" \\ delf <sid>PrepUnArCol | delf <sid>UnArCol |\n \" \\ delf <sid>CalculateColumnWidth | delf <sid>Columnize |\n \" \\ delf <sid>GetColPat | delf <sid>SplitHeaderLine |\n \" \\ delf <sid>SplitHeaderToggle | delf <sid>MoveCol |\n \" \\ delf <sid>SortComplete | delf <sid>SortList | delf <sid>Sort |\n \" \\ delf CSV_WCol | delf <sid>CopyCol | delf <sid>MoveColumn |\n \" \\ delf <sid>SumColumn csv#EvalColumn | delf <sid>DoForEachColumn |\n \" \\ delf <sid>PrepareDoForEachColumn | delf <sid>CSVMappings |\n \" \\ delf <sid>Map | delf <sid>EscapeValue | delf <sid>FoldValue |\n \" \\ delf <sid>PrepareFolding | delf <sid>OutputFilters |\n \" \\ delf <sid>SortFilter | delf <sid>GetColumn |\n \" \\ delf <sid>RemoveLastItem | delf <sid>DisableFolding |\n \" \\ delf <sid>GetSID | delf <sid>CheckHeaderLine |\n \" \\ delf <sid>AnalyzeColumn | delf <sid>Vertfold |\n \" \\ delf <sid>InitCSVFixedWidth | delf <sid>LocalCmd |\n \" \\ delf <sid>CommandDefinitions | delf <sid>NumberFormat |\n \" \\ delf <sid>NewRecord | delf <sid>MoveOver | delf <sid>Menu |\n \" \\ delf <sid>NewDelimiter | delf <sid>DuplicateRows | delf <sid>IN |\n \" \\ delf <sid>SaveOptions | delf <sid>CheckDuplicates |\n \" \\ delf <sid>CompleteColumnNr | delf <sid>CSVPat | delf <sid>Transpose |\n \" \\ delf <sid>LocalSettings() | delf <sid>AddColumn | delf <sid>SubstituteInColumn\n \" \\ delf <sid>SetupQuitPre() | delf CSV_CloseBuffer\nendfu\n\nfu! <sid>LocalSettings(type) \"{{{3\n    if a:type == 'all'\n        \" CSV local settings\n        setl nostartofline tw=0 nowrap\n\n        \" undo when setting a new filetype\n        let b:undo_ftplugin = \"setlocal sol& tw< wrap<\"\n\n        \" Set browsefilter\n        if (v:version > 703 || (v:version == 703 && has(\"patch593\")))\n                    \\ && exists(\"browsefilter\")\n            let b:browsefilter=\"CSV Files (*.csv, *.dat)\\t*.csv;*.dat\\n\".\n                 \\ \"All Files\\t*.*\\n\"\n        endif\n\n        if has(\"conceal\")\n            setl cole=2 cocu=nc\n            let b:undo_ftplugin .= '| setl cole< cocu< '\n        endif\n\n    elseif a:type == 'fold'\n        let s:fdt = &l:fdt\n        let s:fcs = &l:fcs\n\n        if a:type == 'fold'\n            \" Be sure to also fold away single screen lines\n            setl fen fdm=expr\n            setl fdl=0 fml=0 fdc=2\n            if !get(g:, 'csv_disable_fdt',0)\n                let &l:foldtext=strlen(v:folddashes) . ' lines hidden'\n                let &fcs=substitute(&fcs, 'fold:.,', '', '')\n                if !exists(\"b:csv_did_foldsettings\")\n                    let b:undo_ftplugin .= printf(\"|set fdt<|setl fcs=%s\", escape(s:fcs, '\\\\| '))\n                endif\n            endif\n            if !exists(\"b:csv_did_foldsettings\")\n                let b:undo_ftplugin .=\n                \\ \"| setl fen< fdm< fdl< fdc< fml< fde<\"\n                let b:csv_did_foldsettings = 1\n                let b:undo_ftplugin .= \"| unlet! b:csv_did_foldsettings\"\n            endif\n        endif\n    endif\nendfu\n\nfu! <sid>DoAutoCommands() \"{{{3\n    \" Highlight column, on which the cursor is?\n    if exists(\"g:csv_highlight_column\") && g:csv_highlight_column =~? 'y' &&\n        \\ !exists(\"#CSV_HI#CursorMoved\")\n        aug CSV_HI\n            au!\n            au CursorMoved <buffer> HiColumn\n        aug end\n        \" Set highlighting for column, on which the cursor is currently\n        HiColumn\n    elseif exists(\"#CSV_HI#CursorMoved\")\n        aug CSV_HI\n            au! CursorMoved <buffer>\n        aug end\n        aug! CSV_HI\n        \" Remove any existing highlighting\n        HiColumn!\n    endif\n    \" undo autocommand:\n    let b:undo_ftplugin .= '| exe \"sil! au! CSV_HI CursorMoved <buffer> \"'\n    let b:undo_ftplugin .= '| exe \"sil! aug! CSV_HI\" |exe \"sil! HiColumn!\"'\n\n    \" Visually arrange columns when opening a csv file\n    if exists(\"g:csv_autocmd_arrange\") &&\n        \\ !exists(\"#CSV_Edit#BufReadPost\")\n        aug CSV_Edit\n            au!\n            au BufReadPost,BufWritePost *.csv,*.dat :sil %ArrangeColumn\n            au BufWritePre *.csv,*.dat :sil %UnArrangeColumn\n        aug end\n    elseif exists(\"#CSV_Edit#BufReadPost\")\n        aug CSV_Edit\n            au!\n        aug end\n        aug! CSV_Edit\n    endif\n    \" undo autocommand:\n    let b:undo_ftplugin .= '| exe \"sil! au! CSV_Edit \"'\n    let b:undo_ftplugin .= '| exe \"sil! aug! CSV_Edit\"'\n\n\"    if !exists(\"#CSV_ColorScheme#ColorScheme\")\n\"        \" Make sure, syntax highlighting is applied\n\"        \" after changing the colorscheme\n\"        augroup CSV_ColorScheme\n\"            au!\n\"            au ColorScheme *.csv,*.dat,*.tsv,*.tab do Syntax\n\"        augroup end\n\"    endif\n\"    let b:undo_ftplugin .= '| exe \"sil! au! CSV_ColorScheme \"'\n\"    let b:undo_ftplugin .= '| exe \"sil! aug! CSV_ColorScheme\"'\n\n    if has(\"gui_running\") && !exists(\"#CSV_Menu#FileType\")\n        augroup CSV_Menu\n            au!\n            au FileType * call <sid>Menu(&ft=='csv')\n            au BufEnter <buffer> call <sid>Menu(1) \" enable\n            au BufLeave <buffer> call <sid>Menu(0) \" disable\n            au BufNewFile,BufNew * call <sid>Menu(0)\n        augroup END\n        \"let b:undo_ftplugin .= '| sil! amenu disable CSV'\n        \"\n        \" b:undo_ftplugin does not support calling <sid> Functions\n        \"let b:undo_ftplugin .= '| sil! call <sid>Menu(0)'\n    endif\nendfu\n\nfu! <sid>GetPat(colnr, maxcolnr, pat) \"{{{3\n    if a:colnr > 1 && a:colnr < a:maxcolnr\n        if !exists(\"b:csv_fixed_width_cols\")\n            return '^' . <SID>GetColPat(a:colnr-1,0) . '\\%([^' .\n                \\ b:delimiter . ']\\{-}\\)\\?\\zs' . a:pat . '\\ze' .\n                \\ '\\%([^' . b:delimiter .']\\{-}\\)\\?' .\n                \\ b:delimiter . <SID>GetColPat(a:maxcolnr - a:colnr, 0) .\n                \\ '$'\n        else\n            return '\\%' . b:csv_fixed_width_cols[(a:colnr - 1)] . 'c\\zs'\n                \\ . a:pat . '.\\{-}\\ze\\%'\n                \\ . (b:csv_fixed_width_cols[a:colnr]) . 'c\\ze'\n        endif\n    elseif a:colnr == a:maxcolnr\n        if !exists(\"b:csv_fixed_width_cols\")\n            return '^' . <SID>GetColPat(a:colnr - 1,0) .\n                \\ '\\%([^' . b:delimiter .\n                \\ ']\\{-}\\)\\?\\zs' . a:pat . '\\ze'\n        else\n            return '\\%' . b:csv_fixed_width_cols[-1] .\n                \\ 'c\\zs' . a:pat . '\\ze'\n        endif\n    else \" colnr = 1\n        if !exists(\"b:csv_fixed_width_cols\")\n            return '^' . '\\%([^' . b:delimiter . ']\\{-}\\)\\?\\zs' . a:pat .\n            \\ '\\ze\\%([^' . b:delimiter . ']*\\)\\?' . b:delimiter .\n            \\ <SID>GetColPat(a:maxcolnr -1 , 0) . '$'\n        else\n            return a:pat . '\\ze.\\{-}\\%' . b:csv_fixed_width_cols[1] . 'c'\n        endif\n    endif\n    return ''\nendfu\n\nfu! <sid>SearchColumn(arg) \"{{{3\n    try\n        let arglist=split(a:arg)\n        if len(arglist) == 1\n            let colnr=<SID>WColumn()\n            let pat=substitute(arglist[0], '^\\(.\\)\\(.*\\)\\1$', '\\2', '')\n            if pat == arglist[0]\n                throw \"E684\"\n            endif\n        else\n            \" Determine whether the first word in the argument is a number\n            \" (of the column to search).\n            let colnr = substitute( a:arg, '^\\s*\\(\\d\\+\\)\\s.*', '\\1', '' )\n            \" If it is _not_ a number,\n            if colnr == a:arg\n                \" treat the whole argument as the pattern.\n                let pat = substitute(a:arg,\n                    \\ '^\\s*\\(\\S\\)\\(.*\\)\\1\\s*$', '\\2', '' )\n                if pat == a:arg\n                    throw \"E684\"\n                endif\n                let colnr = <SID>WColumn()\n            else\n                \" if the first word tells us the number of the column,\n                \" treat the rest of the argument as the pattern.\n                let pat = substitute(a:arg,\n                    \\ '^\\s*\\d\\+\\s*\\(\\S\\)\\(.*\\)\\1\\s*$', '\\2', '' )\n                if pat == a:arg\n                    throw \"E684\"\n                endif\n            endif\n\"             let colnr=arglist[0]\n\"             let pat=substitute(arglist[1], '^\\(.\\)\\(.*\\)\\1$', '\\2', '')\n\"             if pat == arglist[1]\n\"                 throw \"E684\"\n\"             endif\n        endif\n    \"catch /^Vim\\%((\\a\\+)\\)\\=:E684/\n    catch /E684/\t\" catch error index out of bounds\n        call <SID>Warn(\"Error! Usage :SearchInColumn [<colnr>] /pattern/\")\n        return 1\n    endtry\n    let maxcolnr = <SID>MaxColumns()\n    if colnr > maxcolnr\n        call <SID>Warn(\"There exists no column \" . colnr)\n        return 1\n    endif\n    let @/ = <sid>GetPat(colnr, maxcolnr, pat)\n    try\n        norm! n\n    catch /^Vim\\%((\\a\\+)\\)\\=:E486/\n        \" Pattern not found\n        echohl Error\n        echomsg \"E486: Pattern not found in column \" . colnr . \": \" . pat\n        if &vbs > 0\n            echomsg substitute(v:exception, '^[^:]*:', '','')\n        endif\n        echohl Normal\n    endtry\nendfu\n\n\nfu! <sid>DeleteColumn(arg) \"{{{3\n    let _wsv = winsaveview()\n    if a:arg =~ '^[/]'\n        let i = 0\n        let pat = a:arg[1:]\n        call cursor(1,1)\n        while search(pat, 'cW')\n            \" Delete matching column\n            sil call <sid>DelColumn('')\n            let i+=1\n        endw\n    else\n        let i = 1\n        sil call <sid>DelColumn(a:arg)\n    endif\n    if i > 1\n        call <sid>Warn(printf(\"%d columns deleted\", i))\n    else\n        call <sid>Warn(\"1 column deleted\")\n    endif\n    call winrestview(_wsv)\nendfu\n\nfu! <sid>DelColumn(colnr) \"{{{3\n    let maxcolnr = <SID>MaxColumns()\n    let _p = getpos('.')\n\n    if empty(a:colnr)\n       let colnr=<SID>WColumn()\n    else\n       let colnr=a:colnr\n    endif\n\n    if colnr > maxcolnr\n        call <SID>Warn(\"There exists no column \" . colnr)\n        return\n    endif\n\n    if colnr != '1'\n        if !exists(\"b:csv_fixed_width_cols\")\n            let pat= '^' . <SID>GetColPat(colnr-1,1) . b:col\n        else\n            let pat= <SID>GetColPat(colnr,0)\n        endif\n    else\n        \" distinction between csv and fixed width does not matter here\n        let pat= '^' . <SID>GetColPat(colnr,0)\n    endif\n    if &ro\n        let ro = 1\n        setl noro\n    else\n        let ro = 0\n    endif\n    exe ':%s/' . escape(pat, '/') . '//'\n    call setpos('.', _p)\n    if ro\n        setl ro\n    endif\nendfu\n\nfu! <sid>HiCol(colnr, bang) \"{{{3\n    if a:colnr > <SID>MaxColumns() && !a:bang\n        call <SID>Warn(\"There exists no column \" . a:colnr)\n        return\n    endif\n    if !a:bang\n        if empty(a:colnr)\n            let colnr=<SID>WColumn()\n        else\n            let colnr=a:colnr\n        endif\n\n        if colnr==1\n            let pat='^'. <SID>GetColPat(colnr,0)\n        elseif !exists(\"b:csv_fixed_width_cols\")\n            let pat='^'. <SID>GetColPat(colnr-1,1) . b:col\n        else\n            let pat=<SID>GetColPat(colnr,0)\n        endif\n    endif\n\n    if exists(\"*matchadd\")\n        if exists(\"s:matchid\")\n            \" ignore errors, that come from already deleted matches\n            sil! call matchdelete(s:matchid)\n        endif\n        \" Additionally, filter all matches, that could have been used earlier\n        let matchlist=getmatches()\n        call filter(matchlist, 'v:val[\"group\"] !~ s:hiGroup')\n        call setmatches(matchlist)\n        if a:bang\n            return\n        endif\n        let s:matchid=matchadd(s:hiGroup, pat, 0)\n    elseif !a:bang\n        exe \":2match \" . s:hiGroup . ' /' . pat . '/'\n    endif\nendfu\n\nfu! <sid>GetDelimiter(first, last) \"{{{3\n    if !exists(\"b:csv_fixed_width_cols\")\n        let _cur = getpos('.')\n        let _s   = @/\n        let Delim= {0: ';', 1:  ',', 2: '|', 3: '\t'}\n        let temp = {}\n        \" :silent :s does not work with lazyredraw\n        let _lz  = &lz\n        set nolz\n        for i in  values(Delim)\n            redir => temp[i]\n            exe \"silent! \". a:first. \",\". a:last. \"s/\" . i . \"/&/nge\"\n            redir END\n        endfor\n        let &lz = _lz\n        let Delim = map(temp, 'matchstr(substitute(v:val, \"\\n\", \"\", \"\"), \"^\\\\d\\\\+\")')\n        let Delim = filter(temp, 'v:val=~''\\d''')\n        let max   = max(values(temp))\n\n        let result=[]\n        call setpos('.', _cur)\n        let @/ = _s\n        for [key, value] in items(Delim)\n            if value == max\n                return key\n            endif\n        endfor\n        return ''\n    else\n        \" There is no delimiter for fixedwidth files\n        return ''\n    endif\nendfu\n\nfu! <sid>WColumn(...) \"{{{3\n    \" Return on which column the cursor is\n    let _cur = getpos('.')\n    if !exists(\"b:csv_fixed_width_cols\")\n        let line=getline('.')\n        \" move cursor to end of field\n        \"call search(b:col, 'ec', line('.'))\n        call search(b:col, 'ec')\n        let end=col('.')-1\n        let fields=(split(line[0:end],b:col.'\\zs'))\n        let ret=len(fields)\n        if exists(\"a:1\") && a:1 > 0\n            \" bang attribute\n            let head  = split(getline(1),b:col.'\\zs')\n            \" remove preceeding whitespace\n            let ret   = substitute(head[ret-1], '^\\s\\+', '', '')\n            \" remove delimiter\n            let ret   = substitute(ret, b:delimiter. '$', '', '')\n        endif\n    else\n        let temp=getpos('.')[2]\n        let j=1\n        let ret = 1\n        for i in sort(b:csv_fixed_width_cols, \"<sid>SortList\")\n            if temp >= i\n                let ret = j\n            endif\n            let j += 1\n        endfor\n    endif\n    call setpos('.',_cur)\n    return ret\nendfu\n\nfu! <sid>MaxColumns(...) \"{{{3\n    if exists(\"a:0\") && a:0 == 1\n        let this_col = 1\n    else\n        let this_col = 0\n    endif\n    \"return maximum number of columns in first 10 lines\n    if !exists(\"b:csv_fixed_width_cols\")\n        if this_col\n            let i = a:1\n        else\n            let i = 1\n        endif\n        while 1\n            let l = getline(i, i+10)\n\n            \" Filter comments out\n            let pat = '^\\s*\\V'. escape(b:csv_cmt[0], '\\\\')\n            call filter(l, 'v:val !~ pat')\n            if !empty(l) || this_col\n                break\n            else\n                let i+=10\n            endif\n        endw\n\n        if empty(l)\n            throw 'csv:no_col'\n        endif\n        let fields=[]\n        let result=0\n        for item in l\n            let temp=len(split(item, b:col.'\\zs'))\n            let result=(temp>result ? temp : result)\n        endfor\n        return result\n    else\n        return len(b:csv_fixed_width_cols)\n    endif\nendfu\n\nfu! <sid>ColWidth(colnr) \"{{{3\n    \" Return the width of a column\n    \" Internal function\n    let width=20 \"Fallback (wild guess)\n    let tlist=[]\n\n    if !exists(\"b:csv_fixed_width_cols\")\n        if !exists(\"b:csv_list\")\n            let b:csv_list=getline(1,'$')\n            let pat = '^\\s*\\V'. escape(b:csv_cmt[0], '\\\\')\n            call filter(b:csv_list, 'v:val !~ pat')\n            call filter(b:csv_list, '!empty(v:val)')\n            call map(b:csv_list, 'split(v:val, b:col.''\\zs'')')\n        endif\n        try\n            for item in b:csv_list\n                call add(tlist, item[a:colnr-1])\n            endfor\n            \" we have a list of the first 10 rows\n            \" Now transform it to a list of field a:colnr\n            \" and then return the maximum strlen\n            \" That could be done in 1 line, but that would look ugly\n            \"call map(list, 'split(v:val, b:col.\"\\\\zs\")[a:colnr-1]')\n            call map(tlist, 'substitute(v:val, \".\", \"x\", \"g\")')\n            call map(tlist, 'strlen(v:val)')\n            return max(tlist)\n        catch\n            throw \"ColWidth-error\"\n            return width\n        endtry\n    else\n        let cols = len(b:csv_fixed_width_cols)\n        if a:colnr == cols\n            return strlen(substitute(getline('$'), '.', 'x', 'g')) -\n                \\ b:csv_fixed_width_cols[cols-1] + 1\n        elseif a:colnr < cols && a:colnr > 0\n            return b:csv_fixed_width_cols[a:colnr] -\n                \\ b:csv_fixed_width_cols[(a:colnr - 1)]\n        else\n            throw \"ColWidth-error\"\n            return 0\n        endif\n    endif\nendfu\n\nfu! <sid>ArrangeCol(first, last, bang) range \"{{{3\n    \"TODO: Why doesn't that work?\n    \" is this because of the range flag?\n    \" It's because of the way, Vim works with\n    \" a:firstline and a:lastline parameter, therefore\n    \" explicitly give the range as argument to the function\n    if exists(\"b:csv_fixed_width_cols\")\n        \" Nothing to do\n        call <sid>Warn(\"ArrangeColumn does not work with fixed width column!\")\n        return\n    endif\n    let cur=winsaveview()\n    if a:bang || !exists(\"b:col_width\")\n        if a:bang\n            \" Force recalculating the Column width\n            unlet! b:csv_list\n        endif\n        \" Force recalculation of Column width\n        call <sid>CalculateColumnWidth()\n    endif\n\n    if &ro\n       \" Just in case, to prevent the Warning\n       \" Warning: W10: Changing read-only file\n       let ro = 1\n       setl noro\n    else\n       let ro = 0\n    endif\n    exe \"sil\". a:first . ',' . a:last .'s/' . (b:col) .\n    \\ '/\\=<SID>Columnize(submatch(0))/' . (&gd ? '' : 'g')\n    \" Clean up variables, that were only needed for <sid>Columnize() function\n    unlet! s:columnize_count s:max_cols s:prev_line\n    if ro\n        setl ro\n        unlet ro\n    endif\n    call winrestview(cur)\nendfu\n\nfu! <sid>PrepUnArrangeCol(first, last) \"{{{3\n    \" Because of the way, Vim works with\n    \" a:firstline and a:lastline parameter,\n    \" explicitly give the range as argument to the function\n    if exists(\"b:csv_fixed_width_cols\")\n        \" Nothing to do\n        call <sid>Warn(\"UnArrangeColumn does not work with fixed width column!\")\n        return\n    endif\n    let cur=winsaveview()\n\n    if &ro\n       \" Just in case, to prevent the Warning\n       \" Warning: W10: Changing read-only file\n       setl noro\n    endif\n    exe a:first . ',' . a:last .'s/' . (b:col) .\n    \\ '/\\=<SID>UnArrangeCol(submatch(0))/' . (&gd ? '' : 'g')\n    \" Clean up variables, that were only needed for <sid>Columnize() function\n    call winrestview(cur)\nendfu\n\nfu! <sid>UnArrangeCol(match) \"{{{3\n    \" Strip leading white space, also trims empty records:\n    if get(b:, 'csv_arrange_leftalign',0)\n        return substitute(a:match, '\\s\\+\\ze'. b:delimiter. '\\?$', '', '')\n    else\n        return substitute(a:match, '^\\s\\+', '', '')\n    endif\n    \" only strip leading white space, if a non-white space follows:\n    \"return substitute(a:match, '^\\s\\+\\ze\\S', '', '')\nendfu\n\nfu! <sid>CalculateColumnWidth() \"{{{3\n    \" Internal function, not called from external,\n    \" does not work with fixed width columns\n    let b:col_width=[]\n    try\n        let s:max_cols=<SID>MaxColumns(line('.'))\n        for i in range(1,s:max_cols)\n            call add(b:col_width, <SID>ColWidth(i))\n        endfor\n    catch /csv:no_col/\n        call <sid>Warn(\"Error: getting Column numbers, aborting!\")\n    catch /ColWidth/\n        call <sid>Warn(\"Error: getting Column Width, using default!\")\n    endtry\n    \" delete buffer content in variable b:csv_list,\n    \" this was only necessary for calculating the max width\n    unlet! b:csv_list\nendfu\n\nfu! <sid>Columnize(field) \"{{{3\n    \" Internal function, not called from external,\n    \" does not work with fixed width columns\n    if !exists(\"s:columnize_count\")\n        let s:columnize_count = 0\n    endif\n\n    if !exists(\"s:max_cols\")\n        let s:max_cols = len(b:col_width)\n    endif\n\n    if exists(\"s:prev_line\") && s:prev_line != line('.')\n        let s:columnize_count = 0\n    endif\n\n    let s:prev_line = line('.')\n    \" convert zero based indexed list to 1 based indexed list,\n    \" Default: 20 width, in case that column width isn't defined\n    \" Careful: Keep this fast! Using\n    \" let width=get(b:col_width,<SID>WColumn()-1,20)\n    \" is too slow, so we are using:\n    let width=get(b:col_width, (s:columnize_count % s:max_cols), 20)\n\n    let s:columnize_count += 1\n    let has_delimiter = (a:field =~# b:delimiter.'$')\n    if v:version > 703 || v:version == 703 && has(\"patch713\")\n        \" printf knows about %S (e.g. can handle char length\n        if get(b:, 'csv_arrange_leftalign',0)\n            \" left-align content\n            return printf(\"%-*S%s\", width+1 , \n                \\ (has_delimiter ?\n                \\ matchstr(a:field, '.*\\%('.b:delimiter.'\\)\\@=') : a:field),\n                \\ (has_delimiter ? b:delimiter : ''))\n        else\n            return printf(\"%*S\", width+1 ,  a:field)\n        endif\n    else\n        \" printf only handles bytes\n        if !exists(\"g:csv_no_multibyte\") &&\n            \\ match(a:field, '[^ -~]') != -1\n            \" match characters outside the ascii range\n            let a = split(a:field, '\\zs')\n            let add = eval(join(map(a, 'len(v:val)'), '+'))\n            let add -= len(a)\n        else\n            let add = 0\n        endif\n\n        \" Add one for the frame\n        \" plus additional width for multibyte chars,\n        \" since printf(%*s..) uses byte width!\n        let width = width + add  + 1\n\n        if width == strlen(a:field)\n            \" Column has correct length, don't use printf()\n            return a:field\n        else\n            if get(b:, 'csv_arrange_leftalign',0)\n                \" left-align content\n                return printf(\"%-*s%s\", width,  \n                \\ (has_delimiter ?  matchstr(a:field, '.*\\%('.b:delimiter.'\\)\\@=') : a:field),\n                \\ (has_delimiter ? b:delimiter : ''))\n            else\n                return printf(\"%*s\", width ,  a:field)\n            endif\n        endif\n    endif\nendfun\n\nfu! <sid>GetColPat(colnr, zs_flag) \"{{{3\n    \" Return Pattern for given column\n    if a:colnr > 1\n        if !exists(\"b:csv_fixed_width_cols\")\n            let pat=b:col . '\\{' . (a:colnr) . '\\}'\n        else\n            if a:colnr >= len(b:csv_fixed_width_cols)\n            \" Get last column\n                let pat='\\%' . b:csv_fixed_width_cols[-1] . 'c.*'\n            else\n            let pat='\\%' . b:csv_fixed_width_cols[(a:colnr - 1)] .\n            \\ 'c.\\{-}\\%' .   b:csv_fixed_width_cols[a:colnr] . 'c'\n            endif\n        endif\n    elseif !exists(\"b:csv_fixed_width_cols\")\n        let pat=b:col\n    else\n        let pat='\\%' . b:csv_fixed_width_cols[0] . 'c.\\{-}' .\n            \\ (len(b:csv_fixed_width_cols) > 1 ?\n            \\ '\\%' . b:csv_fixed_width_cols[1] . 'c' :\n            \\ '')\n    endif\n    return pat . (a:zs_flag ? '\\zs' : '')\nendfu\n\nfu! <sid>SetupQuitPre(window) \"{{{3\n    \" Setup QuitPre autocommand to quit cleanly\n    if exists(\"##QuitPre\")\n        augroup CSV_QuitPre\n            au!\n            exe \"au QuitPre * call CSV_CloseBuffer(\".winbufnr(a:window).\")\"\n        augroup end\n    endif\nendfu\n\nfu! <sid>SplitHeaderLine(lines, bang, hor) \"{{{3\n    if exists(\"b:csv_fixed_width_cols\")\n        call <sid>Warn(\"Header does not work with fixed width column!\")\n        return\n    endif\n    \" Check that there exists a header line\n    call <sid>CheckHeaderLine()\n    if !a:bang\n        \" A Split Header Window already exists,\n        \" first close the already existing Window\n        if exists(\"b:csv_SplitWindow\")\n            call <sid>SplitHeaderLine(a:lines, 1, a:hor)\n        endif\n        \" Split Window\n        let _stl = &l:stl\n        let _sbo = &sbo\n        let a = []\n        let b=b:col\n        if a:hor\n            setl scrollopt=hor scrollbind\n            let _fdc = &l:fdc\n            let lines = empty(a:lines) ? s:csv_fold_headerline : a:lines\n            let a = getline(1,lines)\n            \" Does it make sense to use the preview window?\n            \" sil! pedit %\n            above sp +enew\n            call setline(1, a)\n            \" Needed for syntax highlighting\n            \"let b:col=b\n            \"setl syntax=csv\n            sil! doautocmd FileType csv\n            noa 1\n            exe \"resize\" . lines\n            setl scrollopt=hor winfixheight nowrap\n            \"let &l:stl=repeat(' ', winwidth(0))\n            let &l:stl=\"%#Normal#\".repeat(' ',winwidth(0))\n            \" set the foldcolumn to the same of the other window\n            let &l:fdc = _fdc\n        else\n            setl scrollopt=ver scrollbind\n            noa 0\n            let a=<sid>CopyCol('',1,a:lines)\n            \" Does it make sense to use the preview window?\n            \"vert sil! pedit |wincmd w | enew!\n            above vsp +enew\n            call append(0, a)\n            $d _\n            let b:col = b\n            sil! doautocmd FileType csv\n            \" remove leading delimiter\n            exe \"sil :%s/^\". b:delimiter. \"//e\"\n            \" remove trailing delimiter\n            exe \"sil :%s/\". b:delimiter. \"\\s*$//e\"\n            syn clear\n            noa 0\n            let b:csv_SplitWindow = winnr()\n            sil :call <sid>ArrangeCol(1,line('$'), 1)\n            exe \"vert res\" . len(split(getline(1), '\\zs'))\n            call matchadd(\"CSVHeaderLine\", b:col)\n            setl scrollopt=ver winfixwidth\n        endif\n        call <sid>SetupQuitPre(winnr())\n        let win = winnr()\n        setl scrollbind buftype=nowrite bufhidden=wipe noswapfile nobuflisted\n        noa wincmd p\n        let b:csv_SplitWindow = win\n        aug CSV_Preview\n            au!\n            au BufWinLeave <buffer> call <sid>SplitHeaderLine(0, 1, 0)\n        aug END\n    else\n        \" Close split window\n        if !exists(\"b:csv_SplitWindow\")\n            return\n        endif\n        exe b:csv_SplitWindow . \"wincmd w\"\n        if exists(\"_stl\")\n            let &l:stl = _stl\n        endif\n        if exists(\"_sbo\")\n            let &sbo = _sbo\n        endif\n        setl noscrollbind\n        try\n            wincmd c\n        catch /^Vim\\%((\\a\\+)\\)\\=:E444/\t\" cannot close last window\n        catch /^Vim\\%((\\a\\+)\\)\\=:E517/\t\" buffer already wiped\n            \" no-op\n        endtry\n        \"pclose!\n        unlet! b:csv_SplitWindow\n        aug CSV_Preview\n            au!\n        aug END\n        aug! CSV_Preview\n    endif\nendfu\n\nfu! <sid>SplitHeaderToggle(hor) \"{{{3\n    if !exists(\"b:csv_SplitWindow\")\n        :call <sid>SplitHeaderLine(1,0,a:hor)\n    else\n        :call <sid>SplitHeaderLine(1,1,a:hor)\n    endif\nendfu\n\n\" TODO: from here on add logic for fixed-width csv files!\nfu! <sid>MoveCol(forward, line, ...) \"{{{3\n    \" Move cursor position upwards/downwards left/right\n    \" a:1 is there to have some mappings move in the same\n    \" direction but still stop at a different position\n    \" see :h csv-mapping-H\n    let colnr=<SID>WColumn()\n    let maxcol=<SID>MaxColumns()\n    let cpos=getpos('.')[2]\n    if !exists(\"b:csv_fixed_width_cols\")\n        call search(b:col, 'bc', line('.'))\n    endif\n    let spos=getpos('.')[2]\n\n    \" Check for valid column\n    \" a:forward == 1 : search next col\n    \" a:forward == -1: search prev col\n    \" a:forward == 0 : stay in col\n    if colnr - v:count1 >= 1 && a:forward == -1\n        let colnr -= v:count1\n    elseif colnr - v:count1 < 1 && a:forward == -1\n        let colnr = 0\n    elseif colnr + v:count1 <= maxcol && a:forward == 1\n        let colnr += v:count1\n    elseif colnr + v:count1 > maxcol && a:forward == 1\n        let colnr = maxcol + 1\n    endif\n\n    let line=a:line\n    if line < 1\n        let line=1\n    elseif line > line('$')\n        let line=line('$')\n    endif\n\n    \" Generate search pattern\n    if colnr == 1\n        let pat = '^' . <SID>GetColPat(colnr-1,0)\n        \"let pat = pat . '\\%' . line . 'l'\n    elseif (colnr == 0) || (colnr == maxcol + 1)\n        if !exists(\"b:csv_fixed_width_cols\")\n            let pat=b:col\n        else\n            if a:forward > 0\n                \" Move forwards\n                let pat=<sid>GetColPat(1, 0)\n            else\n                \" Move backwards\n                let pat=<sid>GetColPat(maxcol, 0)\n            endif\n        endif\n    else\n        if !exists(\"b:csv_fixed_width_cols\")\n            let pat='^'. <SID>GetColPat(colnr-1,1) . b:col\n        else\n            let pat=<SID>GetColPat(colnr,0)\n        endif\n        \"let pat = pat . '\\%' . line . 'l'\n    endif\n\n    \" Search\n    \" move left/right\n    if a:forward > 0\n        call search(pat, 'W')\n    elseif a:forward < 0\n        if colnr > 0 || cpos == spos\n            call search('.\\ze'.pat, 'bWe')\n            while getpos('.')[2] == cpos\n                \" cursor didn't move, move cursor one cell to the left\n                norm! h\n                if colnr > 0\n                    call <sid>MoveCol(-1, line('.'))\n                else\n                    norm! 0\n                endif\n            endw\n            if (exists(\"a:1\") && a:1)\n                \" H also stops at the beginning of the content\n                \" of a field.\n                let epos = getpos('.')\n                if getline('.')[col('.')-1] == ' '\n                    call search('\\S', 'W', line('.'))\n                    if getpos('.')[2] > spos\n                        call setpos('.', epos)\n                    endif\n                endif\n            endif\n        else\n            norm! 0\n        endif\n        \" Moving upwards/downwards\n    elseif line >= line('.')\n        call search(pat . '\\%' . line . 'l', '', line)\n        \" Move to the correct screen column\n        \" This is a best effort approach, we might still\n        \" leave the column (if the next column is shorter)\n        if !exists(\"b:csv_fixed_width_cols\")\n            let a    = getpos('.')\n            let a[2]+= cpos-spos\n        else\n            let a    = getpos('.')\n            let a[2] = cpos\n        endif\n        call setpos('.', a)\n    elseif line < line('.')\n        call search(pat . '\\%' . line . 'l', 'b', line)\n        \" Move to the correct screen column\n        if !exists(\"b:csv_fixed_width_cols\")\n            let a    = getpos('.')\n            let a[2]+= cpos-spos\n        else\n            let a    = getpos('.')\n            let a[2] = cpos\n        endif\n        call setpos('.', a)\n    endif\nendfun\n\nfu! <sid>SortComplete(A,L,P) \"{{{3\n    return join(range(1,<sid>MaxColumns()),\"\\n\")\nendfun\n\nfu! <sid>SortList(a1, a2) \"{{{3\n    return a:a1+0 == a:a2+0 ? 0 : a:a1+0 > a:a2+0 ? 1 : -1\nendfu\n\nfu! <sid>Sort(bang, line1, line2, colnr) range \"{{{3\n    let wsv=winsaveview()\n    if a:colnr =~? 'n'\n        let numeric = 1\n    else\n        let numeric = 0\n    endif\n    let col = (empty(a:colnr) || a:colnr !~? '\\d\\+') ? <sid>WColumn() : a:colnr+0\n    if col != 1\n        if !exists(\"b:csv_fixed_width_cols\")\n            let pat= '^' . <SID>GetColPat(col-1,1) . b:col\n        else\n            let pat= '^' . <SID>GetColPat(col,0)\n        endif\n    else\n        let pat= '^' . <SID>GetColPat(col,0)\n    endif\n    exe a:line1 ',' a:line2 . \"sort\" . (a:bang ? '!' : '') .\n        \\' r ' . (numeric ? 'n' : '') . ' /' . pat . '/'\n    call winrestview(wsv)\nendfun\n\nfu! <sid>CopyCol(reg, col, cnt) \"{{{3\n    \" Return Specified Column into register reg\n    let col = a:col == \"0\" ? <sid>WColumn() : a:col+0\n    let mcol = <sid>MaxColumns()\n    if col == '$' || col > mcol\n        let col = mcol\n    endif\n    \" The number of columns to return\n    \" by default (value of zero, will only return that specific column)\n    let cnt_cols = col - 1\n    if !empty(a:cnt) && a:cnt > 0 && col + a:cnt <= mcol\n        let cnt_cols = col + a:cnt - 1\n    endif\n    let a = []\n    \" Don't get lines, that are currently filtered away\n    if !exists(\"b:csv_filter\") || empty(b:csv_filter)\n        let a=getline(1, '$')\n    else\n        for line in range(1, line('$'))\n            if foldlevel(line)\n                continue\n            else\n                call add(a, getline(line))\n            endif\n        endfor\n    endif\n    \" Filter comments out\n    let pat = '^\\s*\\V'. escape(b:csv_cmt[0], '\\\\')\n    call filter(a, 'v:val !~ pat')\n\n    if !exists(\"b:csv_fixed_width_cols\")\n        call map(a, 'split(v:val, ''^'' . b:col . ''\\zs'')[col-1:cnt_cols]')\n    else\n        call map(a, 'matchstr(v:val, <sid>GetColPat(col, 0)).*<sid>GetColPat(col+cnt_cols, 0)')\n    endif\n    if type(a[0]) == type([])\n        call map(a, 'join(v:val, \"\")')\n    endif\n    if a:reg =~ '[-\"0-9a-zA-Z*+]'\n        \"exe  ':let @' . a:reg . ' = \"' . join(a, \"\\n\") . '\"'\n        \" set the register to blockwise mode\n        call setreg(a:reg, join(a, \"\\n\"), 'b')\n    else\n        return a\n    endif\nendfu\n\nfu! <sid>MoveColumn(start, stop, ...) range \"{{{3\n    \" Move column behind dest\n    \" Explicitly give the range as argument,\n    \" cause otherwise, Vim would move the cursor\n    let wsv = winsaveview()\n\n    let col = <sid>WColumn()\n    let max = <sid>MaxColumns()\n\n    \" If no argument is given, move current column after last column\n    let source=(exists(\"a:1\") && a:1 > 0 && a:1 <= max ? a:1 : col)\n    let dest  =(exists(\"a:2\") && a:2 > 0 && a:2 <= max ? a:2 : max)\n\n    \" translate 1 based columns into zero based list index\n    let source -= 1\n    let dest   -= 1\n\n    if source >= dest\n        call <sid>Warn(\"Destination column before source column, aborting!\")\n        return\n    endif\n\n    \" Swap line by line, instead of reading the whole range into memory\n\n    for i in range(a:start, a:stop)\n        let content = getline(i)\n        if content =~ '^\\s*\\V'. escape(b:csv_cmt[0], '\\\\')\n            \" skip comments\n            continue\n        endif\n        if !exists(\"b:csv_fixed_width_cols\")\n            let fields=split(content, b:col . '\\zs')\n            \" Add delimiter to destination column, in case there was none,\n            \" remove delimiter from source, in case destination did not have one\n            if matchstr(fields[dest], '.$') !~? b:delimiter\n                let fields[dest] = fields[dest] . b:delimiter\n                if matchstr(fields[source], '.$') =~? b:delimiter\n                let fields[source] = substitute(fields[source],\n                    \\ '^\\(.*\\).$', '\\1', '')\n                endif\n            endif\n        else\n            let fields=[]\n            \" this is very inefficient!\n            for j in range(1, max, 1)\n                call add(fields, matchstr(content, <sid>GetColPat(j,0)))\n            endfor\n        endif\n\n        let fields= (source == 0 ? [] : fields[0 : (source-1)])\n                \\ + fields[ (source+1) : dest ]\n                \\ + [ fields[source] ] + fields[(dest+1):]\n\n        call setline(i, join(fields, ''))\n    endfor\n\n    call winrestview(wsv)\n\nendfu\n\nfu! <sid>AddColumn(start, stop, ...) range \"{{{3\n    \" Add new empty column\n    \" Explicitly give the range as argument,\n    \" cause otherwise, Vim would move the cursor\n    if exists(\"b:csv_fixed_width_cols\")\n        call <sid>Warn(\"Adding Columns only works for delimited files\")\n        return\n    endif\n\n    let wsv = winsaveview()\n\n    let col = <sid>WColumn()\n    let max = <sid>MaxColumns()\n\n    \" If no argument is given, add column after current column\n    if exists(\"a:1\")\n        if a:1 == '$' || a:1 >= max\n            let pos = max\n        elseif a:1 <= 0\n            let pos = col\n        endif\n    else\n        let pos = col\n    endif\n    let cnt=(exists(\"a:2\") && a:2 > 0 ? a:2 : 1)\n\n    \" translate 1 based columns into zero based list index\n    let pos -= 1\n    let col -= 1\n\n    if pos == 0\n        let pat = '^'\n    elseif pos == max-1\n        let pat = '$'\n    else\n        let pat = <sid>GetColPat(pos,1)\n    endif\n\n    if pat != '$' || (pat == '$' &&  getline(a:stop)[-1:] == b:delimiter)\n        let subst = repeat(' '. b:delimiter, cnt)\n    else\n        let subst = repeat(b:delimiter. ' ', cnt)\n    endif\n\n    \" if the data contains comments, substitute one line after another\n    \" skipping comment lines (we could do it with a single :s statement,\n    \" but that would fail for the first and last column.\n\n    let commentpat = '\\%(\\%>'.(a:start-1).'l\\V'.\n                \\ escape(b:csv_cmt[0], '\\\\').'\\m\\)'. '\\&\\%(\\%<'.\n                \\ (a:stop+1). 'l\\V'. escape(b:csv_cmt[0], '\\\\'). '\\m\\)'\n    if search(commentpat)\n        for i in range(a:start, a:stop)\n            let content = getline(i)\n            if content =~ '^\\s*\\V'. escape(b:csv_cmt[0], '\\\\')\n                \" skip comments\n                continue\n            endif\n            exe printf(\"sil %ds/%s/%s/e\", i, pat, subst)\n        endfor\n    else\n        \" comments should by default be skipped (pattern shouldn't match)\n        exe printf(\"sil %d,%ds/%s/%s/e\", a:start, a:stop, pat, subst)\n    endif\n\n    call winrestview(wsv)\nendfu\n\nfu! <sid>SumColumn(list) \"{{{3\n    \" Sum a list of values, but only consider the digits within each value\n    \" parses the digits according to the given format (if none has been\n    \" specified, assume POSIX format (without thousand separator) If Vim has\n    \" does not support floats, simply sum up only the integer part\n    if empty(a:list)\n        return 0\n    else\n        let sum = has(\"float\") ? 0.0 : 0\n        for item in a:list\n            if empty(item)\n                continue\n            endif\n            let nr = matchstr(item, '-\\?\\d\\(.*\\d\\)\\?$')\n            let format1 = '^-\\?\\d\\+\\zs\\V' . s:nr_format[0] . '\\m\\ze\\d'\n            let format2 = '\\d\\+\\zs\\V' . s:nr_format[1] . '\\m\\ze\\d'\n            try\n                let nr = substitute(nr, format1, '', '')\n                if has(\"float\") && s:nr_format[1] != '.'\n                    let nr = substitute(nr, format2, '.', '')\n                endif\n            catch\n                let nr = 0\n            endtry\n            let sum += (has(\"float\") ? str2float(nr) : (nr + 0))\n        endfor\n        if has(\"float\")\n            if float2nr(sum) == sum\n                return float2nr(sum)\n            else\n                return printf(\"%.2f\", sum)\n            endif\n        endif\n        return sum\n    endif\nendfu\n\nfu! <sid>DoForEachColumn(start, stop, bang) range \"{{{3\n    \" Do something for each column,\n    \" e.g. generate SQL-Statements, convert to HTML,\n    \" something like this\n    \" TODO: Define the function\n    \" needs a csv_pre_convert variable\n    \"         csv_post_convert variable\n    \"         csv_convert variable\n    \"         result contains converted buffer content\n    let result = []\n\n    if !exists(\"g:csv_convert\")\n        call <sid>Warn(\"You need to define how to convert your data using\" .\n                \\ \"the g:csv_convert variable, see :h csv-convert\")\n        return\n    endif\n\n    if exists(\"g:csv_pre_convert\") && !empty(g:csv_pre_convert)\n        call add(result, g:csv_pre_convert)\n    endif\n\n    for item in range(a:start, a:stop, 1)\n        let t = g:csv_convert\n        let line = getline(item)\n        if line =~ '^\\s*\\V'. escape(b:csv_cmt[0], '\\\\')\n            \" Filter comments out\n            call add(result, line)\n            continue\n        endif\n        let context = split(g:csv_convert, '%s')\n        let columns = len(context)\n        if columns > <sid>MaxColumns()\n            let columns = <sid>MaxColumns()\n        elseif columns == 1\n            call <sid>Warn(\"No Columns defined in your g:csv_convert variable, Aborting\")\n            return\n        endif\n\n        if !exists(\"b:csv_fixed_width_cols\")\n            let fields=split(line, b:col . '\\zs')\n            if a:bang\n                call map(fields, 'substitute(v:val, b:delimiter .\n                    \\ ''\\?$'' , \"\", \"\")')\n            endif\n        else\n            let fields=[]\n            for j in range(1, columns, 1)\n                call add(fields, matchstr(line, <sid>GetColPat(j,0)))\n            endfor\n        endif\n        for j in range(1, columns, 1)\n            let t=substitute(t, '%s', fields[j-1], '')\n        endfor\n        call add(result, t)\n    endfor\n\n    if exists(\"g:csv_post_convert\") && !empty(g:csv_post_convert)\n        call add(result, g:csv_post_convert)\n    endif\n\n    new\n    call append('$', result)\n    1d _\n\nendfun\n\nfu! <sid>PrepareDoForEachColumn(start, stop, bang) range\"{{{3\n    let pre = exists(\"g:csv_pre_convert\") ? g:csv_pre_convert : ''\n    let g:csv_pre_convert=input('Pre convert text: ', pre)\n    let post = exists(\"g:csv_post_convert\") ? g:csv_post_convert : ''\n    let g:csv_post_convert=input('Post convert text: ', post)\n    let convert = exists(\"g:csv_convert\") ? g:csv_convert : ''\n    let g:csv_convert=input(\"Converted text, use %s for column input:\\n\", convert)\n    call <sid>DoForEachColumn(a:start, a:stop, a:bang)\nendfun\nfu! <sid>EscapeValue(val) \"{{{3\n    return '\\V' . escape(a:val, '\\')\nendfu\n\nfu! <sid>FoldValue(lnum, filter) \"{{{3\n    call <sid>CheckHeaderLine()\n\n    if (a:lnum == s:csv_fold_headerline)\n        \" Don't fold away the header line\n        return 0\n    endif\n    let result = 0\n\n    for item in values(a:filter)\n        \" always fold comments away\n        let content = getline(a:lnum)\n        if content =~ '^\\s*\\V'. escape(b:csv_cmt[0], '\\\\')\n            return 1\n        elseif eval('content' .  (item.match ? '!~' : '=~') . 'item.pat')\n            let result += 1\n        endif\n    endfor\n    return (result > 0)\nendfu\n\nfu! <sid>PrepareFolding(add, match)  \"{{{3\n    if !has(\"folding\")\n        return\n    endif\n\n    \" Move folded-parts away?\n    if exists(\"g:csv_move_folds\")\n        let s:csv_move_folds = g:csv_move_folds\n    else\n        let s:csv_move_folds = 0\n    endif\n\n    if !exists(\"b:csv_filter\")\n        let b:csv_filter = {}\n    endif\n    if !exists(\"s:filter_count\") || s:filter_count < 1\n        let s:filter_count = 0\n    endif\n    let cpos = winsaveview()\n\n    if !a:add\n        \" remove last added item from filter\n        if !empty(b:csv_filter)\n            call <sid>RemoveLastItem(s:filter_count)\n            let s:filter_count -= 1\n            if empty(b:csv_filter)\n                call <sid>DisableFolding()\n                return\n            endif\n        else\n            \" Disable folding, if no pattern available\n            call <sid>DisableFolding()\n            return\n        endif\n    else\n\n        let col = <sid>WColumn()\n        let max = <sid>MaxColumns()\n        let a   = <sid>GetColumn(line('.'), col)\n\n        if !exists(\"b:csv_fixed_width\")\n            try\n                \" strip leading whitespace\n                if (a =~ '\\s\\+'. b:delimiter . '$')\n                    let b = split(a, '^\\s\\+\\ze[^' . b:delimiter. ']\\+')[0]\n                else\n                    let b = a\n                endif\n            catch /^Vim\\%((\\a\\+)\\)\\=:E684/\n                \" empty pattern - should match only empty columns\n                let b = a\n            endtry\n\n            \" strip trailing delimiter\n            try\n                let a = split(b, b:delimiter . '$')[0]\n            catch /^Vim\\%((\\a\\+)\\)\\=:E684/\n                let a = b\n            endtry\n\n            if a == b:delimiter\n                try\n                    let a=repeat(' ', <sid>ColWidth(col))\n                catch\n                    \" no-op\n                endtry\n            endif\n        endif\n\n        \" Make a column pattern\n        let b= '\\%(' .\n            \\ (exists(\"b:csv_fixed_width\") ? '.*' : '') .\n            \\ <sid>GetPat(col, max, <sid>EscapeValue(a) . '\\m') .\n            \\ '\\)'\n\n        let s:filter_count += 1\n        let b:csv_filter[s:filter_count] = { 'pat': b, 'id': s:filter_count,\n            \\ 'col': col, 'orig': a, 'match': a:match}\n\n    endif\n    \" Put the pattern into the search register, so they will also\n    \" be highlighted\n\"    let @/ = ''\n\"    for val in sort(values(b:csv_filter), '<sid>SortFilter')\n\"        let @/ .= val.pat . (val.id == s:filter_count ? '' : '\\&')\n\"    endfor\n    let sid = <sid>GetSID()\n\n    \" Fold settings:\n    call <sid>LocalSettings('fold')\n    \" Don't put spaces between the arguments!\n    exe 'setl foldexpr=<snr>' . sid . '_FoldValue(v:lnum,b:csv_filter)'\n\n    \" Move folded area to the bottom, so there is only on consecutive\n    \" non-folded area\n    if exists(\"s:csv_move_folds\") && s:csv_move_folds\n        \\ && !&l:ro && &l:ma\n        folddoclosed m$\n        let cpos.lnum = s:csv_fold_headerline + 1\n    endif\n    call winrestview(cpos)\nendfu\n\nfu! <sid>OutputFilters(bang) \"{{{3\n    if !a:bang\n        call <sid>CheckHeaderLine()\n        if s:csv_fold_headerline\n            let  title=\"Nr\\tMatch\\tCol\\t      Name\\tValue\"\n        else\n            let  title=\"Nr\\tMatch\\tCol\\tValue\"\n        endif\n        echohl \"Title\"\n        echo   printf(\"%s\", title)\n        echo   printf(\"%s\", repeat(\"=\",strdisplaywidth(title)))\n        echohl \"Normal\"\n        if !exists(\"b:csv_filter\") || empty(b:csv_filter)\n            echo printf(\"%s\", \"No active filter\")\n        else\n            let items = values(b:csv_filter)\n            call sort(items, \"<sid>SortFilter\")\n            for item in items\n                if s:csv_fold_headerline\n                    echo printf(\"%02d\\t% 2s\\t%02d\\t%10.10s\\t%s\",\n                        \\ item.id, (item.match ? '+' : '-'), item.col,\n                        \\ substitute(<sid>GetColumn(1, item.col),\n                        \\ b:col.'$', '', ''), item.orig)\n                else\n                    echo printf(\"%02d\\t% 2s\\t%02d\\t%s\",\n                        \\ item.id, (item.match ? '+' : '-'),\n                        \\ item.col, item.orig)\n                endif\n            endfor\n        endif\n    else\n        \" Reapply filter again\n        if !exists(\"b:csv_filter\") || empty(b:csv_filter)\n            call <sid>Warn(\"No filters defined currently!\")\n            return\n        else\n            let sid = <sid>GetSID()\n            exe 'setl foldexpr=<snr>' . sid . '_FoldValue(v:lnum,b:csv_filter)'\n        endif\n    endif\nendfu\n\nfu! <sid>SortFilter(a, b) \"{{{3\n    return a:a.id == a:b.id ? 0 :\n        \\ a:a.id > a:b.id ? 1 : -1\nendfu\n\nfu! <sid>GetColumn(line, col) \"{{{3\n    \" Return Column content at a:line, a:col\n    let a=getline(a:line)\n    \" Filter comments out\n    if a =~ '^\\s*\\V'. escape(b:csv_cmt[0], '\\\\')\n        return ''\n    endif\n\n    if !exists(\"b:csv_fixed_width_cols\")\n        try\n            let a = split(a, '^' . b:col . '\\zs')[a:col - 1]\n        catch\n            \" index out of range\n            let a = ''\n        endtry\n    else\n        let a = matchstr(a, <sid>GetColPat(a:col, 0))\n    endif\n    return substitute(a, '^\\s\\+\\|\\s\\+$', '', 'g')\nendfu\n\nfu! <sid>RemoveLastItem(count) \"{{{3\n    for [key,value] in items(b:csv_filter)\n        if value.id == a:count\n            call remove(b:csv_filter, key)\n        endif\n    endfor\nendfu\n\nfu! <sid>DisableFolding() \"{{{3\n    setl nofen fdm=manual fdc=0 fdl=0\n    if !get(g:, 'csv_disable_fdt',0) && exists(\"s:fdt\") && exists(\"s:fcs\")\n        exe printf(\"setl fdt=%s fcs=%s\", s:fdt, escape(s:fcs, '\\\\|'))\n    endif\nendfu\n\nfu! <sid>GetSID() \"{{{3\n    if v:version > 703 || v:version == 703 && has(\"patch032\")\n        return maparg('W', \"\", \"\", 1).sid\n    else\n        \"return substitute(maparg('W'), '\\(<SNR>\\d\\+\\)_', '\\1', '')\n        return matchstr(expand('<sfile>'), '<SNR>\\zs\\d\\+\\ze_GetSID$')\n    endif\nendfu\n\nfu! <sid>NumberFormat() \"{{{3\n    let s:nr_format = [',', '.']\n    if exists(\"b:csv_thousands_sep\")\n        let s:nr_format[0] = b:csv_thousands_sep\n    endif\n    if exists(\"b:csv_decimal_sep\")\n        let s:nr_format[1] = b:csv_decimal_sep\n    endif\nendfu\n\nfu! <sid>CheckHeaderLine() \"{{{3\n    if !exists(\"b:csv_headerline\")\n        let s:csv_fold_headerline = 1\n    else\n        let s:csv_fold_headerline = b:csv_headerline\n    endif\nendfu\n\nfu! <sid>AnalyzeColumn(...) \"{{{3\n    let maxcolnr = <SID>MaxColumns()\n    if len(a:000) == 1\n        let colnr = a:1\n    else\n        let colnr = <sid>WColumn()\n    endif\n\n    if colnr > maxcolnr\n        call <SID>Warn(\"There exists no column \" . colnr)\n        return 1\n    endif\n\n    \" Initialize s:fold_headerline\n    call <sid>CheckHeaderLine()\n    let data = <sid>CopyCol('', colnr, '')[s:csv_fold_headerline : -1]\n    let qty = len(data)\n    let res = {}\n    for item in data\n        if empty(item)\n            let item = 'NULL'\n        endif\n        if !get(res, item)\n            let res[item] = 0\n        endif\n        let res[item]+=1\n    endfor\n\n    let max_items = reverse(sort(values(res)))\n    let count_items = keys(res)\n    if len(max_items) > 5\n        call remove(max_items, 5, -1)\n        call filter(res, 'v:val =~ ''^''.join(max_items, ''\\|'').''$''')\n    endif\n\n    if has(\"float\")\n        let  title=\"Nr\\tCount\\t % \\tValue\"\n    else\n        let  title=\"Nr\\tCount\\tValue\"\n    endif\n    echohl Title\n    echo printf(\"%s\", title)\n    echohl Normal\n    echo printf(\"%s\", repeat('=', strdisplaywidth(title)))\n\n    let i=1\n    for val in max_items\n        for key in keys(res)\n            if res[key] == val && i <= len(max_items)\n                if !empty(b:delimiter)\n                    let k = substitute(key, b:delimiter . '\\?$', '', '')\n                else\n                    let k = key\n                endif\n                if has(\"float\")\n                    echo printf(\"%02d\\t%02d\\t%2.0f%%\\t%.50s\", i, res[key],\n                        \\ ((res[key] + 0.0)/qty)*100, k)\n                else\n                    echo printf(\"%02d\\t%02d\\t%.50s\", i, res[key], k)\n                endif\n                call remove(res,key)\n                let i+=1\n            else\n                continue\n            endif\n        endfor\n    endfor\n    echo printf(\"%s\", repeat('=', strdisplaywidth(title)))\n    echo printf(\"different values: %d\", len(count_items))\n    unlet max_items\nendfunc\n\nfu! <sid>Vertfold(bang, col) \"{{{3\n    if a:bang\n        do Syntax\n        return\n    endif\n    if !has(\"conceal\")\n        call <sid>Warn(\"Concealing not supported in your Vim\")\n        return\n    endif\n    if empty(b:delimiter) && !exists(\"b:csv_fixed_width_cols\")\n        call <sid>Warn(\"There are no columns defined, can't hide away anything!\")\n        return\n    endif\n    if empty(a:col)\n        let colnr=<SID>WColumn()\n    else\n        let colnr=a:col\n    endif\n    let pat=<sid>GetPat(colnr, <sid>MaxColumns(), '.*')\n    if exists(\"b:csv_fixed_width_cols\") &&\n        \\ pat !~ '^\\^\\.\\*'\n        \" Make the pattern implicitly start at line start,\n        \" so it will be applied by syntax highlighting (:h :syn-priority)\n        let pat='^.*' . pat\n    endif\n    let pat=substitute(pat, '\\\\zs\\(\\.\\*\\)\\@=', '', '')\n    if !empty(pat)\n        exe \"syn match CSVFold /\" . pat . \"/ conceal cchar=+\"\n    endif\nendfu\n\nfu! <sid>InitCSVFixedWidth() \"{{{3\n    if !exists(\"+cc\")\n        \" TODO: make this work with a custom matchadd() command for older\n        \" Vims, that don't have 'colorcolumn'\n        call <sid>Warn(\"'colorcolumn' option not available\")\n        return\n    endif\n    \" Turn off syntax highlighting\n    syn clear\n    let max_len = len(split(getline(1), '\\zs'))\n    let _cc  = &l:cc\n    let &l:cc = 1\n    redraw!\n    let Dict = {'1': 1} \" first column is always the start of a new column\n    let tcc  = &l:cc\n    let &l:cc = 1\n    echo \"<Cursor>, <Space>, <ESC>, <BS>, <CR>...\"\n    let char=getchar()\n    while 1\n        if char == \"\\<Left>\" || char == \"\\<Right>\"\n            let tcc = eval('tcc'.(char==\"\\<Left>\" ? '-' : '+').'1')\n            if tcc < 0\n                let tcc=0\n            elseif tcc > max_len\n                let tcc = max_len\n            endif\n        elseif char == \"\\<Space>\" || char == 32 \" Space\n            let Dict[tcc] = 1\n        elseif char == \"\\<BS>\" || char == 127\n            try\n                call remove(Dict, reverse(sort(keys(Dict)))[0])\n            catch /^Vim\\%((\\a\\+)\\)\\=:E\\(\\%(716\\)\\|\\%(684\\)\\)/\t\" Dict or List empty\n                break\n            endtry\n        elseif char == \"\\<ESC>\" || char == 27\n            let &l:cc=_cc\n            redraw!\n            return\n        elseif char == \"\\<CR>\" || char == \"\\n\" || char == \"\\r\"  \" Enter\n            let Dict[tcc] = 1\n            break\n        else\n            break\n        endif\n        let &l:cc=tcc . (!empty(keys(Dict))? ',' . join(keys(Dict), ','):'')\n        redraw!\n        echo \"<Cursor>, <Space>, <ESC>, <BS>, <CR>...\"\n        let char=getchar()\n    endw\n    let b:csv_fixed_width_cols=[]\n    let tcc=0\n    let b:csv_fixed_width_cols = sort(keys(Dict), \"<sid>SortList\")\n    let b:csv_fixed_width = join(sort(keys(Dict), \"<sid>SortList\"), ',')\n    call <sid>Init(1, line('$'))\n\n    let &l:cc=_cc\n    redraw!\nendfu\n\nfu! <sid>NewRecord(line1, line2, count) \"{{{3\n    if a:count =~ \"\\D\"\n        call <sid>WarningMsg(\"Invalid count specified\")\n        return\n    endif\n\n    let cnt = (empty(a:count) ? 1 : a:count)\n    let record = \"\"\n    for item in range(1,<sid>MaxColumns())\n        if !exists(\"b:col_width\")\n            \" Best guess width\n            if exists(\"b:csv_fixed_width_cols\")\n                let record .= printf(\"%*s\", <sid>ColWidth(item),\n                            \\ b:delimiter)\n            else\n                let record .= printf(\"%20s\", b:delimiter)\n            endif\n        else\n            let record .= printf(\"%*s\", get(b:col_width, item-1, 0)+1, b:delimiter)\n        endif\n    endfor\n\n    if getline(1)[-1:] !=  b:delimiter\n        let record = record[0:-2] . \" \"\n    endif\n\n    let line = []\n    for item in range(cnt)\n        call add(line, record)\n    endfor\n    for nr in range(a:line1, a:line2)\n        call append(nr, line)\n    endfor\nendfu\n\nfu! <sid>MoveOver(outer) \"{{{3\n    \" Move over a field\n    \" a:outer means include the delimiter\n    let last = 0\n    let outer_field = a:outer\n    let cur_field = <sid>WColumn()\n    let _wsv = winsaveview()\n\n    if cur_field == <sid>MaxColumns()\n        let last = 1\n        if !outer_field && getline('.')[-1:] != b:delimiter\n            \" No trailing delimiter, so inner == outer\n            let outer_field = 1\n        endif\n    endif\n    \" Move 1 column backwards, unless the cursor is in the first column\n    \" or in front of a delimiter\n    if matchstr(getline('.'), '.\\%'.virtcol('.').'v') != b:delimiter && virtcol('.') > 1\n        call <sid>MoveCol(-1, line('.'))\n    endif\n\"    if cur_field != <sid>WColumn()\n        \" cursor was at the beginning of the field, and moved back to the\n        \" previous field, move back to original position\n\"        call cursor(_wsv.lnum, _wsv.col)\n\"    endif\n    let _s = @/\n    if last\n        exe \"sil! norm! v$h\" . (outer_field ? \"\" : \"h\") . (&sel ==# 'exclusive' ? \"l\" : '')\n    else\n        exe \"sil! norm! v/.\" . b:col . \"\\<cr>h\" . (outer_field ? \"\" : \"h\") . (&sel ==# 'exclusive' ? \"l\" : '')\n    endif\n    let _wsv.col = col('.')-1\n    call winrestview(_wsv)\n    let @/ = _s\nendfu\n\nfu! <sid>CSVMappings() \"{{{3\n    call <sid>Map('noremap', 'W', ':<C-U>call <SID>MoveCol(1, line(\".\"))<CR>')\n    call <sid>Map('noremap', '<C-Right>', ':<C-U>call <SID>MoveCol(1, line(\".\"))<CR>')\n    call <sid>Map('noremap', 'L', ':<C-U>call <SID>MoveCol(1, line(\".\"))<CR>')\n    call <sid>Map('noremap', 'E', ':<C-U>call <SID>MoveCol(-1, line(\".\"))<CR>')\n    call <sid>Map('noremap', '<C-Left>', ':<C-U>call <SID>MoveCol(-1, line(\".\"))<CR>')\n    call <sid>Map('noremap', 'H', ':<C-U>call <SID>MoveCol(-1, line(\".\"), 1)<CR>')\n    call <sid>Map('noremap', 'K', ':<C-U>call <SID>MoveCol(0,\n        \\ line(\".\")-v:count1)<CR>')\n    call <sid>Map('noremap', '<Up>', ':<C-U>call <SID>MoveCol(0,\n        \\ line(\".\")-v:count1)<CR>')\n    call <sid>Map('noremap', 'J', ':<C-U>call <SID>MoveCol(0,\n        \\ line(\".\")+v:count1)<CR>')\n    call <sid>Map('noremap', '<Down>', ':<C-U>call <SID>MoveCol(0,\n        \\ line(\".\")+v:count1)<CR>')\n    call <sid>Map('nnoremap', '<CR>', ':<C-U>call <SID>PrepareFolding(1,\n        \\ 1)<CR>')\n    call <sid>Map('nnoremap', '<Space>', ':<C-U>call <SID>PrepareFolding(1,\n        \\ 0)<CR>')\n    call <sid>Map('nnoremap', '<BS>', ':<C-U>call <SID>PrepareFolding(0,\n        \\ 1)<CR>')\n    call <sid>Map('imap', '<CR>', '<sid>ColumnMode()', 'expr')\n    \" Text object: Field\n    call <sid>Map('vnoremap', 'if', ':<C-U>call <sid>MoveOver(0)<CR>')\n    call <sid>Map('vnoremap', 'af', ':<C-U>call <sid>MoveOver(1)<CR>')\n    call <sid>Map('omap', 'af', ':norm vaf<cr>')\n    call <sid>Map('omap', 'if', ':norm vif<cr>')\n    \" Remap <CR> original values to a sane backup\n    call <sid>Map('noremap', '<LocalLeader>J', 'J')\n    call <sid>Map('noremap', '<LocalLeader>K', 'K')\n    call <sid>Map('vnoremap', '<LocalLeader>W', 'W')\n    call <sid>Map('vnoremap', '<LocalLeader>E', 'E')\n    call <sid>Map('noremap', '<LocalLeader>H', 'H')\n    call <sid>Map('noremap', '<LocalLeader>L', 'L')\n    call <sid>Map('nnoremap', '<LocalLeader><CR>', '<CR>')\n    call <sid>Map('nnoremap', '<LocalLeader><Space>', '<Space>')\n    call <sid>Map('nnoremap', '<LocalLeader><BS>', '<BS>')\nendfu\n\nfu! <sid>CommandDefinitions() \"{{{3\n    call <sid>LocalCmd(\"WhatColumn\", ':echo <sid>WColumn(<bang>0)',\n        \\ '-bang')\n    call <sid>LocalCmd(\"NrColumns\", ':call <sid>NrColumns(<q-bang>)', '-bang')\n    call <sid>LocalCmd(\"HiColumn\", ':call <sid>HiCol(<q-args>,<bang>0)',\n        \\ '-bang -nargs=?')\n    call <sid>LocalCmd(\"SearchInColumn\",\n        \\ ':call <sid>SearchColumn(<q-args>)', '-nargs=*')\n    call <sid>LocalCmd(\"DeleteColumn\", ':call <sid>DeleteColumn(<q-args>)',\n        \\ '-nargs=? -complete=custom,<sid>SortComplete')\n    call <sid>LocalCmd(\"ArrangeColumn\",\n        \\ ':call <sid>ArrangeCol(<line1>, <line2>, <bang>0)',\n        \\ '-range -bang')\n    call <sid>LocalCmd(\"UnArrangeColumn\",\n        \\':call <sid>PrepUnArrangeCol(<line1>, <line2>)',\n        \\ '-range')\n    call <sid>LocalCmd(\"InitCSV\", ':call <sid>Init(<line1>,<line2>)', '-range=%')\n    call <sid>LocalCmd('Header',\n        \\ ':call <sid>SplitHeaderLine(<q-args>,<bang>0,1)',\n        \\ '-nargs=? -bang')\n    call <sid>LocalCmd('VHeader',\n        \\ ':call <sid>SplitHeaderLine(<q-args>,<bang>0,0)',\n        \\ '-nargs=? -bang')\n    call <sid>LocalCmd(\"HeaderToggle\",\n        \\ ':call <sid>SplitHeaderToggle(1)', '')\n    call <sid>LocalCmd(\"VHeaderToggle\",\n        \\ ':call <sid>SplitHeaderToggle(0)', '')\n    call <sid>LocalCmd(\"Sort\",\n        \\ ':call <sid>Sort(<bang>0, <line1>,<line2>,<q-args>)',\n        \\ '-nargs=* -bang -range=% -complete=custom,<sid>SortComplete')\n    call <sid>LocalCmd(\"Column\",\n        \\ ':call <sid>CopyCol(empty(<q-reg>)?''\"'':<q-reg>,<q-count>,<q-args>)',\n        \\ '-count -register -nargs=?')\n    call <sid>LocalCmd(\"MoveColumn\",\n        \\ ':call <sid>MoveColumn(<line1>,<line2>,<f-args>)',\n        \\ '-range=% -nargs=* -complete=custom,<sid>SortComplete')\n    call <sid>LocalCmd(\"SumCol\",\n        \\ ':echo csv#EvalColumn(<q-args>, \"<sid>SumColumn\", <line1>,<line2>)',\n        \\ '-nargs=? -range=% -complete=custom,<sid>SortComplete')\n    call <sid>LocalCmd(\"ConvertData\",\n        \\ ':call <sid>PrepareDoForEachColumn(<line1>,<line2>,<bang>0)',\n        \\ '-bang -nargs=? -range=%')\n    call <sid>LocalCmd(\"Filters\", ':call <sid>OutputFilters(<bang>0)',\n        \\ '-nargs=0 -bang')\n    call <sid>LocalCmd(\"Analyze\", ':call <sid>AnalyzeColumn(<args>)',\n        \\ '-nargs=?')\n    call <sid>LocalCmd(\"VertFold\", ':call <sid>Vertfold(<bang>0,<q-args>)',\n        \\ '-bang -nargs=? -range=% -complete=custom,<sid>SortComplete')\n    call <sid>LocalCmd(\"CSVFixed\", ':call <sid>InitCSVFixedWidth()', '')\n    call <sid>LocalCmd(\"NewRecord\", ':call <sid>NewRecord(<line1>,\n        \\ <line2>, <q-args>)', '-nargs=? -range')\n    call <sid>LocalCmd(\"NewDelimiter\", ':call <sid>NewDelimiter(<q-args>)',\n        \\ '-nargs=1')\n    call <sid>LocalCmd(\"Duplicates\", ':call <sid>CheckDuplicates(<q-args>)',\n        \\ '-nargs=1 -complete=custom,<sid>CompleteColumnNr')\n    call <sid>LocalCmd('Transpose', ':call <sid>Transpose(<line1>, <line2>)',\n        \\ '-range=%')\n    call <sid>LocalCmd('Tabularize', ':call <sid>Tabularize(<bang>0,<line1>,<line2>)',\n        \\ '-bang -range=%')\n    \" Alias for :Tabularize, might be taken by Tabular plugin\n    call <sid>LocalCmd('CSVTabularize', ':call <sid>Tabularize(<bang>0,<line1>,<line2>)',\n        \\ '-bang -range=%')\n    call <sid>LocalCmd(\"AddColumn\",\n        \\ ':call <sid>AddColumn(<line1>,<line2>,<f-args>)',\n        \\ '-range=% -nargs=* -complete=custom,<sid>SortComplete')\n    call <sid>LocalCmd('Substitute', ':call <sid>SubstituteInColumn(<q-args>,<line1>,<line2>)',\n        \\ '-nargs=1 -range=%')\nendfu\n\nfu! <sid>Map(map, name, definition, ...) \"{{{3\n    let keyname = substitute(a:name, '[<>]', '', 'g')\n    let expr = (exists(\"a:1\") && a:1 == 'expr'  ? '<expr>' : '')\n    if !get(g:, \"csv_nomap_\". tolower(keyname), 0)\n        \" All mappings are buffer local\n        exe a:map \"<buffer> <silent>\". expr a:name a:definition\n        \" should already exists\n        if a:map == 'nnoremap'\n            let unmap = 'nunmap'\n        elseif a:map == 'noremap' || a:map == 'map'\n            let unmap = 'unmap'\n        elseif a:map == 'vnoremap'\n            let unmap = 'vunmap'\n        elseif a:map == 'omap'\n            let unmap = 'ounmap'\n        elseif a:map == 'imap'\n            let unmap = 'iunmap'\n        endif\n        let b:undo_ftplugin .= \"| \" . unmap . \" <buffer> \" . a:name\n    endif\nendfu\n\nfu! <sid>LocalCmd(name, definition, args) \"{{{3\n    if !exists(':'.a:name)\n        exe \"com! -buffer \" a:args a:name a:definition\n        let b:undo_ftplugin .= \"| sil! delc \" . a:name\n    endif\n    \" Setup :CSV<Command> Aliases\n    if a:name !~ '^CSV'\n        call <sid>LocalCmd('CSV'.a:name, a:definition, a:args)\n    endif\nendfu\n\nfu! <sid>Menu(enable) \"{{{3\n    if a:enable\n        \" Make a menu for the graphical vim\n        amenu CSV.&Init\\ Plugin             :InitCSV<cr>\n        amenu CSV.SetUp\\ &fixedwidth\\ Cols  :CSVFixed<cr>\n        amenu CSV.-sep1-                    <nul>\n        amenu &CSV.&Column.&Number          :WhatColumn<cr>\n        amenu CSV.Column.N&ame              :WhatColumn!<cr>\n        amenu CSV.Column.&Highlight\\ column :HiColumn<cr>\n        amenu CSV.Column.&Remove\\ highlight :HiColumn!<cr>\n        amenu CSV.Column.&Delete            :DeleteColumn<cr>\n        amenu CSV.Column.&Sort              :%Sort<cr>\n        amenu CSV.Column.&Copy              :Column<cr>\n        amenu CSV.Column.&Move              :%MoveColumn<cr>\n        amenu CSV.Column.S&um               :%SumCol<cr>\n        amenu CSV.Column.Analy&ze           :Analyze<cr>\n        amenu CSV.Column.&Arrange           :%ArrangeCol<cr>\n        amenu CSV.Column.&UnArrange         :%UnArrangeCol<cr>\n        amenu CSV.Column.&Add               :%AddColumn<cr>\n        amenu CSV.-sep2-                    <nul>\n        amenu CSV.&Toggle\\ Header           :HeaderToggle<cr>\n        amenu CSV.&ConvertData              :ConvertData<cr>\n        amenu CSV.Filters                   :Filters<cr>\n        amenu CSV.Hide\\ C&olumn             :VertFold<cr>\n        amenu CSV.&New\\ Record              :NewRecord<cr>\n    else\n        \" just in case the Menu wasn't defined properly\n        sil! amenu disable CSV\n    endif\nendfu\n\nfu! <sid>SaveOptions(list) \"{{{3\n    let save = {}\n    for item in a:list\n        exe \"let save.\". item. \" = &l:\". item\n    endfor\n    return save\nendfu\n\nfu! <sid>NewDelimiter(newdelimiter) \"{{{3\n    let save = <sid>SaveOptions(['ro', 'ma'])\n    if exists(\"b:csv_fixed_width_cols\")\n        call <sid>Warn(\"NewDelimiter does not work with fixed width column!\")\n        return\n    endif\n    if !&l:ma\n        setl ma\n    endif\n    if &l:ro\n        setl noro\n    endif\n    let line=1\n    while line <= line('$')\n        \" Don't change delimiter for comments\n        if getline(line) =~ '^\\s*\\V'. escape(b:csv_cmt[0], '\\\\')\n            let line+=1\n            continue\n        endif\n        let fields=split(getline(line), b:col . '\\zs')\n        \" Remove field delimiter\n        call map(fields, 'substitute(v:val, b:delimiter .\n            \\ ''\\?$'' , \"\", \"\")')\n        call setline(line, join(fields, a:newdelimiter))\n        let line+=1\n    endwhile\n    \" reset local buffer options\n    for [key, value] in items(save)\n        call setbufvar('', '&'. key, value)\n    endfor\n    \"reinitialize the plugin\n    call <sid>Init(1,line('$'))\nendfu\n\nfu! <sid>IN(list, value) \"{{{3\n    for item in a:list\n        if item == a:value\n            return 1\n        endif\n    endfor\n    return 0\nendfu\n\nfu! <sid>DuplicateRows(columnlist) \"{{{3\n    let duplicates = {}\n    let cnt   = 0\n    let line  = 1\n    while line <= line('$')\n        let key = \"\"\n        let i = 1\n        let content = getline(line)\n        \" Skip comments\n        if content =~ '^\\s*\\V'. escape(b:csv_cmt[0], '\\\\')\n            continue\n        endif\n        let cols = split(content, b:col. '\\zs')\n        for column in cols\n            if <sid>IN(a:columnlist, i)\n                let key .= column\n            endif\n            let i += 1\n        endfor\n        if has_key(duplicates, key) && cnt < 10\n            call <sid>Warn(\"Duplicate Row \". line)\n            let cnt += 1\n        elseif has_key(duplicates, key)\n            call <sid>Warn(\"More duplicate Rows after: \". line)\n            call <sid>Warn(\"Aborting...\")\n            return\n        else\n            let duplicates[key] = 1\n        endif\n        let line += 1\n    endwhile\n    if cnt == 0\n        call <sid>Warn(\"No Duplicate Row found!\")\n    endif\nendfu\nfu! <sid>CompleteColumnNr(A,L,P) \"{{{3\n    return join(range(1,<sid>MaxColumns()), \"\\n\")\nendfu\n\nfu! <sid>CheckDuplicates(list) \"{{{3\n    let string = a:list\n    if string =~ '\\d\\s\\?-\\s\\?\\d'\n        let string = substitute(string, '\\(\\d\\+\\)\\s\\?-\\s\\?\\(\\d\\+\\)',\n            \\ '\\=join(range(submatch(1),submatch(2)), \",\")', '')\n    endif\n    let list=split(string, ',')\n    call <sid>DuplicateRows(list)\nendfu\n\nfu! <sid>Transpose(line1, line2) \"{{{3\n    \" Note: - Comments will be deleted.\n    \"       - Does not work with fixed-width columns\n    if exists(\"b:csv_fixed_width\")\n        call <sid>Warn(\"Transposing does not work with fixed-width columns!\")\n        return\n    endif\n    let _wsv    = winsaveview()\n    let TrailingDelim = 0\n\n    if line('$') > 1\n        let TrailingDelim = getline(1) =~ b:delimiter.'$'\n    endif\n\n    let pat = '^\\s*\\V'. escape(b:csv_cmt[0], '\\\\')\n\n    try\n        let columns = <sid>MaxColumns(a:line1)\n    catch\n        \" No column, probably because of comment or empty line\n        \" so use the number of columns from the beginning of the file\n        let columns = <sid>MaxColumns()\n    endtry\n    let matrix  = []\n    for line in range(a:line1, a:line2)\n        \" Filter comments out\n        if getline(line) =~ pat\n            continue\n        endif\n        let r   = []\n        for row in range(1,columns)\n            let field = <sid>GetColumn(line, row)\n            call add(r, field)\n        endfor\n        call add(matrix, r)\n    endfor\n    unlet row\n\n    \" create new transposed matrix\n    let transposed = []\n    for row in matrix\n        let i = 0\n        for val in row\n            if get(transposed, i, []) == []\n                call add(transposed, [])\n            endif\n            if val[-1:] != b:delimiter\n                let val .= b:delimiter\n            endif\n            call add(transposed[i], val)\n            let i+=1\n        endfor\n    endfor\n    \" Save memory\n    unlet! matrix\n    call map(transposed, 'join(v:val, '''')')\n    if !TrailingDelim\n        call map(transposed, 'substitute(v:val, b:delimiter.''\\?$'', \"\", \"\")')\n    endif\n    \" filter out empty records\n    call filter(transposed, 'v:val != b:delimiter')\n\n    \" Insert transposed data\n    let delete_last_line = 0\n    if a:line1 == 1 && a:line2 == line('$')\n        let delete_last_line = 1\n    endif\n    exe a:line1. \",\". a:line2. \"d _\"\n    let first = (a:line1 > 0 ? (a:line1 - 1) : 0)\n    call append(first, transposed)\n    if delete_last_line\n        sil $d _\n    endif\n    \" save memory\n    unlet! transposed\n    call winrestview(_wsv)\nendfu\n\n\nfu! <sid>NrColumns(bang) \"{{{3\n    if !empty(a:bang)\n        try\n            let cols = <sid>MaxColumns(line('.'))\n        catch\n            \" No column or comment line\n            call <sid>Warn(\"No valid CSV Column!\")\n        endtry\n    else\n        let cols = <sid>MaxColumns()\n    endif\n    echo cols\nendfu\n\nfu! <sid>Tabularize(bang, first, last) \"{{{3\n    let _c = winsaveview()\n    \" Table delimiter definition \"{{{4\n    if !exists(\"s:td\")\n        let s:td = {\n            \\ 'hbar': (&enc =~# 'utf-8' ? '─' : '-'),\n            \\ 'vbar': (&enc =~# 'utf-8' ? '│' : '|'),\n            \\ 'scol': (&enc =~# 'utf-8' ? '├' : '|'),\n            \\ 'ecol': (&enc =~# 'utf-8' ? '┤' : '|'),\n            \\ 'ltop': (&enc =~# 'utf-8' ? '┌' : '+'),\n            \\ 'rtop': (&enc =~# 'utf-8' ? '┐' : '+'),\n            \\ 'lbot': (&enc =~# 'utf-8' ? '└' : '+'),\n            \\ 'rbot': (&enc =~# 'utf-8' ? '┘' : '+'),\n            \\ 'cros': (&enc =~# 'utf-8' ? '┼' : '+'),\n            \\ 'dhor': (&enc =~# 'utf-8' ? '┬' : '-'),\n            \\ 'uhor': (&enc =~# 'utf-8' ? '┴' : '-')\n            \\ }\n    endif \"}}}4\n    if match(getline(a:first), '^'.s:td.ltop) > -1\n        \" Already tabularized, done\n        call <sid>Warn(\"Looks already Tabularized, aborting!\")\n        return\n    endif\n    let _ma = &l:ma\n    setl ma\n    let colwidth = 0\n    let adjust_last = 0\n    call cursor(a:first,0)\n    call <sid>CheckHeaderLine()\n    if exists(\"b:csv_fixed_width_cols\")\n        let cols=copy(b:csv_fixed_width_cols)\n        let pat = join(map(cols, ' ''\\(\\%''. v:val. ''c\\)'' '), '\\|')\n        let colwidth = strlen(substitute(getline('$'), '.', 'x', 'g'))\n        let t=-1\n        let b:col_width = []\n        for item in b:csv_fixed_width_cols + [colwidth]\n            if t > -1\n                call add(b:col_width, item-t)\n            endif\n            let t = item\n        endfor\n    else\n        \" don't clear column width variable, might have been set in the\n        \" plugin!\n        sil call <sid>ArrangeCol(a:first, a:last, 0)\n    endif\n\n    if empty(b:col_width)\n        call <sid>Warn('An error occured, aborting!')\n        return\n    endif\n    let b:col_width[-1] += 1\n    let marginline = s:td.scol. join(map(copy(b:col_width), 'repeat(s:td.hbar, v:val)'), s:td.cros). s:td.ecol\n\n    exe printf('sil %d,%ds/%s/%s/ge', a:first, (a:last+adjust_last),\n        \\ (exists(\"b:csv_fixed_width_cols\") ? pat : b:delimiter ), s:td.vbar)\n    \" Add vertical bar in first column, if there isn't already one\n    exe printf('sil %d,%ds/%s/%s/e', a:first, a:last+adjust_last,\n        \\ '^[^'. s:td.vbar. s:td.scol. ']', s:td.vbar.'&')\n    \" And add a final vertical bar, if there isn't already\n    exe printf('sil %d,%ds/%s/%s/e', a:first, a:last+adjust_last,\n        \\ '[^'. s:td.vbar. s:td.ecol. ']$', '&'. s:td.vbar)\n    \" Make nice intersection graphs\n    let line = split(getline(a:first), s:td.vbar)\n    call map(line, 'substitute(v:val, ''[^''.s:td.vbar. '']'', s:td.hbar, ''g'')')\n    \" Set top and bottom margins\n    call append(a:first-1, s:td.ltop. join(line, s:td.dhor). s:td.rtop)\n    call append(a:last+adjust_last+1, s:td.lbot. join(line, s:td.uhor). s:td.rbot)\n\n    if s:csv_fold_headerline > 0 && !a:bang\n        \"call <sid>NewRecord(s:csv_fold_headerline, s:csv_fold_headerline, 1)\n        call append(a:first + s:csv_fold_headerline, marginline)\n        let adjust_last += 1\n    endif\n\n    if a:bang\n        exe printf('sil %d,%ds/^%s\\zs\\n/&%s&/e', a:first + s:csv_fold_headerline, a:last + adjust_last,\n                    \\ '[^'.s:td.scol. '][^'.s:td.hbar.'].*', marginline)\n    endif\n\n    syn clear\n    let &l:ma = _ma\n    call winrestview(_c)\nendfu\n\nfu! <sid>SubstituteInColumn(command, line1, line2) range \"{{{3\n    \" Command can be something like 1,2/foobar/foobaz/ to replace in 1 and second column\n    \" Command can be something like /foobar/foobaz/ to replace in the current column\n    \" Command can be something like 1,$/foobar/foobaz/ to replace in all columns\n    \" Command can be something like 3/foobar/foobaz/flags to replace only in the 3rd column\n\n    \" Save position and search register\n    let _wsv = winsaveview()\n    let _search = [ '/', getreg('/'), getregtype('/')]\n    let columns = []\n    let maxcolnr = <sid>MaxColumns()\n    let simple_s_command = 0 \" when set to 1, we can simply use an :s command\n\n    \" try to split on '/' if it is not escaped or in a collection\n    let cmd = split(a:command, '\\%([\\\\]\\|\\[[^]]*\\)\\@<!/')\n    if a:command !~? '^\\%([$]\\|\\%(\\d\\+\\)\\%(,\\%([0-9]\\+\\|[$]\\)\\)\\?\\)/' ||\n                \\ len(cmd) == 2 ||\n                \\ ((len(cmd) == 3 && cmd[2] =~# '^[&cgeiInp#l]\\+$'))\n        \" No Column address given\n        call add(columns, <sid>WColumn())\n        let cmd = [columns[0]] + cmd \"First item of cmd list contains address!\n    elseif ((len(cmd) == 3 && cmd[2] !~# '^[&cgeiInp#l]\\+$')\n    \\ || len(cmd) == 4)\n        \" command could be '1/foobbar/foobaz'\n        \" but also 'foobar/foobar/g'\n        let columns = split(cmd[0], ',')\n        if empty(columns)\n            \" No columns given? replace in current column only\n            let columns[0] = <sid>WColumn()\n        elseif columns[-1] == '$'\n            let columns[-1] = maxcolnr\n        endif\n    else \" not reached ?\n        call add(columns, <sid>WColumn())\n    endif\n\n    try\n        if len(cmd) == 1 || columns[0] =~ '\\D' || (len(columns) == 2 && columns[1] =~ '\\D')\n            call <SID>Warn(\"Error! Usage :S [columns/]pattern/replace[/flags]\")\n            return\n        endif\n\n        if len(columns) == 2 && columns[0] == 1 && columns[1] == maxcolnr\n            let simple_s_command = 1\n        elseif len(columns) == 2\n            let columns = range(columns[0], columns[1])\n        endif\n\n        let has_flags = len(cmd) == 4\n\n        if simple_s_command\n            while search(cmd[1])\n                exe printf(\"%d,%ds/%s/%s%s\", a:line1, a:line2, cmd[1], cmd[2], (has_flags ? '/'. cmd[3] : ''))\n                if !has_flags || (has_flags && cmd[3] !~# 'g')\n                    break\n                endif\n            endw\n        else\n            for colnr in columns\n                let @/ = <sid>GetPat(colnr, maxcolnr, cmd[1])\n                while search(@/)\n                    exe printf(\"%d,%ds//%s%s\", a:line1, a:line2, cmd[2], (has_flags ? '/'. cmd[3] : ''))\n                    if !has_flags || (has_flags && cmd[3] !~# 'g')\n                        break\n                    endif\n                endw\n            endfor\n        endif\n    catch /^Vim\\%((\\a\\+)\\)\\=:E486/\n        \" Pattern not found\n        echohl Error\n        echomsg \"E486: Pattern not found in column \" . colnr . \": \" . pat\n        if &vbs > 0\n            echomsg substitute(v:exception, '^[^:]*:', '','')\n        endif\n        echohl Normal\n    catch\n        echohl Error\n        \"if &vbs > 0\n            echomsg substitute(v:exception, '^[^:]*:', '','')\n        \"endif\n        echohl Normal\n    finally\n        \" Restore position and search register\n        call winrestview(_wsv)\n        call call('setreg', _search)\n    endtry\nendfu\n\nfu! <sid>ColumnMode() \"{{{3\n    let mode = mode()\n    if mode =~# 'R'\n        \" (virtual) Replace mode\n        let new_line = (line('.') == line('$') ||\n        \\ (synIDattr(synIDtrans(synID(line(\".\"), col(\".\"), 1)), \"name\") =~? \"comment\"))\n        return \"\\<ESC>g`[\". (new_line ? \"o\" : \"J\".mode)\n    else\n        return \"\\<CR>\"\n    endif\nendfu\n\n\" Global functions \"{{{2\nfu! csv#EvalColumn(nr, func, first, last) range \"{{{3\n    \" Make sure, the function is called for the correct filetype.\n    if match(split(&ft, '\\.'), 'csv') == -1\n        call <sid>Warn(\"File is no CSV file!\")\n        return\n    endif\n    let save = winsaveview()\n    call <sid>CheckHeaderLine()\n    let nr = matchstr(a:nr, '^\\-\\?\\d\\+')\n    let col = (empty(nr) ? <sid>WColumn() : nr)\n    \" don't take the header line into consideration\n    let start = a:first - 1 + s:csv_fold_headerline\n    let stop  = a:last  - 1 + s:csv_fold_headerline\n\n    let column = <sid>CopyCol('', col, '')[start : stop]\n    \" Delete delimiter\n    call map(column, 'substitute(v:val, b:delimiter . \"$\", \"\", \"g\")')\n    \" Revmoe trailing whitespace\n    call map(column, 'substitute(v:val, ''^\\s\\+$'', \"\", \"g\")')\n    \" Remove leading whitespace\n    call map(column, 'substitute(v:val, ''^\\s\\+'', \"\", \"g\")')\n    \" Delete empty values\n    \" Leave this up to the function that does something\n    \" with each value\n    \"call filter(column, '!empty(v:val)')\n\n    \" parse the optional number format\n    let format = matchstr(a:nr, '/[^/]*/')\n    call <sid>NumberFormat()\n    if !empty(format)\n        try\n            let s = []\n            \" parse the optional number format\n            let str = matchstr(format, '/\\zs[^/]*\\ze/', 0, start)\n            let s = matchlist(str, '\\(.\\)\\?:\\(.\\)\\?')[1:2]\n            if empty(s)\n                \" Number format wrong\n                call <sid>Warn(\"Numberformat wrong, needs to be /x:y/!\")\n                return ''\n            endif\n            if !empty(s[0])\n                let s:nr_format[0] = s[0]\n            endif\n            if !empty(s[1])\n                let s:nr_format[1] = s[1]\n            endif\n        endtry\n    endif\n    try\n        let result=call(function(a:func), [column])\n        return result\n    catch\n        \" Evaluation of expression failed\n        echohl Title\n        echomsg \"Evaluating\" matchstr(a:func, '[a-zA-Z]\\+$')\n        \\ \"failed for column\" col . \"!\"\n        echohl Normal\n        return ''\n    finally\n        call winrestview(save)\n    endtry\nendfu\n\n\" return field index (x,y) with leading/trailing whitespace and trailing\n\" delimiter stripped (only when a:0 is not given)\nfu! CSVField(x, y, ...) \"{{{3\n    if &ft != 'csv'\n        return\n    endif\n    let y = a:y - 1\n    let x = (a:x < 0 ? 0 : a:x)\n    let orig = !empty(a:0)\n    let y = (y < 0 ? 0 : y)\n    let x = (x > (<sid>MaxColumns()) ? (<sid>MaxColumns()) : x)\n    let col = <sid>CopyCol('',x,'')\n    if !orig\n    \" remove leading and trainling whitespace and the delimiter\n        return matchstr(col[y], '^\\s*\\zs.\\{-}\\ze\\s*'.b:delimiter.'\\?$')\n    else\n        return col[y]\n    endif\nendfu\n\" return current column number (if a:0 is given, returns the name\nfu! CSVCol(...) \"{{{3\n    return <sid>WColumn(a:0)\nendfu\nfu! CSVPat(colnr, ...) \"{{{3\n    \" Make sure, we are working in a csv file\n    if &ft != 'csv'\n        return ''\n    endif\n    \" encapsulates GetPat(), that returns the search pattern for a\n    \" given column and tries to set the cursor at the specific position\n    let pat = <sid>GetPat(a:colnr, <SID>MaxColumns(), a:0 ? a:1 : '.*')\n    \"let pos = match(pat, '.*\\\\ze') + 1\n    \" Try to set the cursor at the beginning of the pattern\n    \" does not work\n    \"call setcmdpos(pos)\n    return pat\nendfu\n\nfu! CSV_WCol(...) \"{{{3\n    try\n        if exists(\"a:1\") && (a:1 == 'Name' || a:1 == 1)\n            return printf(\"%s\", <sid>WColumn(1))\n        else\n            return printf(\" %d/%d\", <SID>WColumn(), <SID>MaxColumns())\n        endif\n    catch\n        return ''\n    endtry\nendfun\n\nfu! CSV_CloseBuffer(buffer) \"{{{3\n    \" Setup by SetupQuitPre autocommand\n    try\n        if bufnr((a:buffer)+0) > -1\n            exe a:buffer. \"bw\"\n        endif\n    catch /^Vim\\%((\\a\\+)\\)\\=:E517/\t\" buffer already wiped\n    \" no-op\n    finally\n        augroup CSV_QuitPre\n            au!\n        augroup END\n        augroup! CSV_QuitPre\n    endtry\nendfu\n        \n\n\" Initialize Plugin \"{{{2\nlet b:csv_start = exists(\"b:csv_start\") ? b:csv_start : 1\nlet b:csv_end   = exists(\"b:csv_end\") ? b:csv_end : line('$')\n\ncall <SID>Init(b:csv_start, b:csv_end)\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" Vim Modeline \" {{{2\n\" vim: set foldmethod=marker et:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/cucumber.vim",
    "content": "\" Vim filetype plugin\n\" Language:\tCucumber\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 Aug 09\n\n\" Only do this when not done yet for this buffer\nif (exists(\"b:did_ftplugin\"))\n  finish\nendif\nlet b:did_ftplugin = 1\n\nsetlocal formatoptions-=t formatoptions+=croql\nsetlocal comments=:# commentstring=#\\ %s\nsetlocal omnifunc=CucumberComplete\n\nlet b:undo_ftplugin = \"setl fo< com< cms< ofu<\"\n\nlet b:cucumber_root = expand('%:p:h:s?.*[\\/]\\%(features\\|stories\\)\\zs[\\/].*??')\n\nif !exists(\"g:no_plugin_maps\") && !exists(\"g:no_cucumber_maps\")\n  nnoremap <silent><buffer> <C-]>       :<C-U>exe <SID>jump('edit',v:count)<CR>\n  nnoremap <silent><buffer> [<C-D>      :<C-U>exe <SID>jump('edit',v:count)<CR>\n  nnoremap <silent><buffer> ]<C-D>      :<C-U>exe <SID>jump('edit',v:count)<CR>\n  nnoremap <silent><buffer> <C-W>]      :<C-U>exe <SID>jump('split',v:count)<CR>\n  nnoremap <silent><buffer> <C-W><C-]>  :<C-U>exe <SID>jump('split',v:count)<CR>\n  nnoremap <silent><buffer> <C-W>d      :<C-U>exe <SID>jump('split',v:count)<CR>\n  nnoremap <silent><buffer> <C-W><C-D>  :<C-U>exe <SID>jump('split',v:count)<CR>\n  nnoremap <silent><buffer> <C-W>}      :<C-U>exe <SID>jump('pedit',v:count)<CR>\n  nnoremap <silent><buffer> [d          :<C-U>exe <SID>jump('pedit',v:count)<CR>\n  nnoremap <silent><buffer> ]d          :<C-U>exe <SID>jump('pedit',v:count)<CR>\n  let b:undo_ftplugin .=\n        \\ \"|sil! nunmap <buffer> <C-]>\" .\n        \\ \"|sil! nunmap <buffer> [<C-D>\" .\n        \\ \"|sil! nunmap <buffer> ]<C-D>\" .\n        \\ \"|sil! nunmap <buffer> <C-W>]\" .\n        \\ \"|sil! nunmap <buffer> <C-W><C-]>\" .\n        \\ \"|sil! nunmap <buffer> <C-W>d\" .\n        \\ \"|sil! nunmap <buffer> <C-W><C-D>\" .\n        \\ \"|sil! nunmap <buffer> <C-W>}\" .\n        \\ \"|sil! nunmap <buffer> [d\" .\n        \\ \"|sil! nunmap <buffer> ]d\"\nendif\n\nfunction! s:jump(command,count)\n  let steps = s:steps('.')\n  if len(steps) == 0 || len(steps) < a:count\n    return 'echoerr \"No matching step found\"'\n  elseif len(steps) > 1 && !a:count\n    return 'echoerr \"Multiple matching steps found\"'\n  else\n    let c = a:count ? a:count-1 : 0\n    return a:command.' +'.steps[c][1].' '.escape(steps[c][0],' %#')\n  endif\nendfunction\n\nfunction! s:allsteps()\n  let step_pattern = '\\C^\\s*\\K\\k*\\>\\s*(\\=\\s*\\zs\\S.\\{-\\}\\ze\\s*)\\=\\s*\\%(do\\|{\\)\\s*\\%(|[^|]*|\\s*\\)\\=\\%($\\|#\\)'\n  let steps = []\n  for file in split(glob(b:cucumber_root.'/**/*.rb'),\"\\n\")\n    let lines = readfile(file)\n    let num = 0\n    for line in lines\n      let num += 1\n      if line =~ step_pattern\n        let type = matchstr(line,'\\w\\+')\n        let steps += [[file,num,type,matchstr(line,step_pattern)]]\n      endif\n    endfor\n  endfor\n  return steps\nendfunction\n\nfunction! s:steps(lnum)\n  let c = match(getline(a:lnum), '\\S') + 1\n  while synIDattr(synID(a:lnum,c,1),'name') !~# '^$\\|Region$'\n    let c = c + 1\n  endwhile\n  let step = matchstr(getline(a:lnum)[c-1 : -1],'^\\s*\\zs.\\{-\\}\\ze\\s*$')\n  return filter(s:allsteps(),'s:stepmatch(v:val[3],step)')\nendfunction\n\nfunction! s:stepmatch(receiver,target)\n  if a:receiver =~ '^[''\"].*[''\"]$'\n    let pattern = '^'.escape(substitute(a:receiver[1:-2],'$\\w\\+','(.*)','g'),'/').'$'\n  elseif a:receiver =~ '^/.*/$'\n    let pattern = a:receiver[1:-2]\n  elseif a:receiver =~ '^%r..*.$'\n    let pattern = escape(a:receiver[3:-2],'/')\n  else\n    return 0\n  endif\n  try\n    let vimpattern = substitute(substitute(pattern,'\\\\\\@<!(?:','%(','g'),'\\\\\\@<!\\*?','{-}','g')\n    if a:target =~# '\\v'.vimpattern\n      return 1\n    endif\n  catch\n  endtry\n  if has(\"ruby\") && pattern !~ '\\\\\\@<!#{'\n    ruby VIM.command(\"return #{if (begin; Kernel.eval('/'+VIM.evaluate('pattern')+'/'); rescue SyntaxError; end) === VIM.evaluate('a:target') then 1 else 0 end}\")\n  else\n    return 0\n  endif\nendfunction\n\nfunction! s:bsub(target,pattern,replacement)\n  return  substitute(a:target,'\\C\\\\\\@<!'.a:pattern,a:replacement,'g')\nendfunction\n\nfunction! CucumberComplete(findstart,base) abort\n  let indent = indent('.')\n  let group = synIDattr(synID(line('.'),indent+1,1),'name')\n  let type = matchstr(group,'\\Ccucumber\\zs\\%(Given\\|When\\|Then\\)')\n  let e = matchend(getline('.'),'^\\s*\\S\\+\\s')\n  if type == '' || col('.') < col('$') || e < 0\n    return -1\n  endif\n  if a:findstart\n    return e\n  endif\n  let steps = []\n  for step in s:allsteps()\n    if step[2] ==# type\n      if step[3] =~ '^[''\"]'\n        let steps += [step[3][1:-2]]\n      elseif step[3] =~ '^/\\^.*\\$/$'\n        let pattern = step[3][2:-3]\n        let pattern = substitute(pattern,'\\C^(?:|I )','I ','')\n        let pattern = s:bsub(pattern,'\\\\[Sw]','w')\n        let pattern = s:bsub(pattern,'\\\\d','1')\n        let pattern = s:bsub(pattern,'\\\\[sWD]',' ')\n        let pattern = s:bsub(pattern,'\\[\\^\\\\\\=\"\\]','_')\n        let pattern = s:bsub(pattern,'[[:alnum:]. _-][?*]?\\=','')\n        let pattern = s:bsub(pattern,'\\[\\([^^]\\).\\{-\\}\\]','\\1')\n        let pattern = s:bsub(pattern,'+?\\=','')\n        let pattern = s:bsub(pattern,'(\\([[:alnum:]. -]\\{-\\}\\))','\\1')\n        let pattern = s:bsub(pattern,'\\\\\\([[:punct:]]\\)','\\1')\n        if pattern !~ '[\\\\()*?]'\n          let steps += [pattern]\n        endif\n      endif\n    endif\n  endfor\n  call filter(steps,'strpart(v:val,0,strlen(a:base)) ==# a:base')\n  return sort(steps)\nendfunction\n\n\" vim:set sts=2 sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/elixir.vim",
    "content": "\" Vim filetype plugin\n\" Language:    Elixir\n\" Maintainer:  Carlos Galdino <carloshsgaldino@gmail.com>\n\" URL:         https://github.com/elixir-lang/vim-elixir\n\nif (exists(\"b:did_ftplugin\"))\n  finish\nendif\nlet b:did_ftplugin = 1\n\n\n\" Matchit support\nif exists(\"loaded_matchit\") && !exists(\"b:match_words\")\n  let b:match_ignorecase = 0\n\n  let b:match_words = '\\<\\%(do\\|fn\\)\\:\\@!\\>' .\n        \\ ':' .\n        \\ '\\<\\%(else\\|elsif\\|catch\\|after\\|rescue\\)\\:\\@!\\>' .\n        \\ ':' .\n        \\ '\\:\\@<!\\<end\\>' .\n        \\ ',{:},\\[:\\],(:)'\nendif\n\nsetlocal comments=:#\nsetlocal commentstring=#\\ %s\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/erlang.vim",
    "content": "\" Vim ftplugin file\n\" Language:    Erlang\n\" Maintainer:  Oscar Hellström <oscar@oscarh.net>\n\" URL:         http://personal.oscarh.net\n\" Contributor: Ricardo Catalinas Jiménez <jimenezrick@gmail.com>\n\" Version:     2010-09-03\n\" ------------------------------------------------------------------------------\n\" Usage:\n\"\n\" To enable folding put in your vimrc:\n\" set foldenable\n\"\n\" Folding will make only one fold for a complete function, even though it has\n\" more than one function head and body.\n\"\n\" To change this behaviour put in your vimrc file:\n\" let g:erlangFoldSplitFunction=1\n\"\n\" ------------------------------------------------------------------------------\n\" Plugin init\nif exists(\"b:did_ftplugin\")\n\tfinish\nendif\n\n\" Don't load any other\nlet b:did_ftplugin=1\n\nif exists('s:doneFunctionDefinitions')\n\tcall s:SetErlangOptions()\n\tfinish\nendif\n\nlet s:doneFunctionDefinitions=1\n\n\" Local settings\nfunction s:SetErlangOptions()\n\tcompiler erlang\n\tif version >= 700\n\t\tsetlocal omnifunc=erlangcomplete#Complete\n\tendif\n\n\tsetlocal foldmethod=expr\n\tsetlocal foldexpr=GetErlangFold(v:lnum)\n\tsetlocal foldtext=ErlangFoldText()\nendfunction\n\n\" Define folding functions\nif !exists(\"*GetErlangFold\")\n\t\" Folding params\n\tlet s:ErlangFunBegin    = '^\\a\\w*(.*$'\n\tlet s:ErlangFunEnd      = '^[^%]*\\.\\s*\\(%.*\\)\\?$'\n\tlet s:ErlangBlankLine   = '^\\s*\\(%.*\\)\\?$'\n\n\t\" Auxiliary fold functions\n\tfunction s:GetNextNonBlank(lnum)\n\t\tlet lnum = nextnonblank(a:lnum + 1)\n\t\tlet line = getline(lnum)\n\t\twhile line =~ s:ErlangBlankLine && 0 != lnum\n\t\t\tlet lnum = nextnonblank(lnum + 1)\n\t\t\tlet line = getline(lnum)\n\t\tendwhile\n\t\treturn lnum\n\tendfunction\n\n\tfunction s:GetFunName(str)\n\t\treturn matchstr(a:str, '^\\a\\w*(\\@=')\n\tendfunction\n\n\tfunction s:GetFunArgs(str, lnum)\n\t\tlet str = a:str\n\t\tlet lnum = a:lnum\n\t\twhile str !~ '->\\s*\\(%.*\\)\\?$'\n\t\t\tlet lnum = s:GetNextNonBlank(lnum)\n\t\t\tif 0 == lnum \" EOF\n\t\t\t\treturn \"\"\n\t\t\tendif\n\t\t\tlet str .= getline(lnum)\n\t\tendwhile\n\t\treturn matchstr(str, \n\t\t\t\\ '\\(^(\\s*\\)\\@<=.*\\(\\s*)\\(\\s\\+when\\s\\+.*\\)\\?\\s\\+->\\s*\\(%.*\\)\\?$\\)\\@=')\n\tendfunction\n\n\tfunction s:CountFunArgs(arguments)\n\t\tlet pos = 0\n\t\tlet ac = 0 \" arg count\n\t\tlet arguments = a:arguments\n\t\t\n\t\t\" Change list / tuples into just one A(rgument)\n\t\tlet erlangTuple = '{\\([A-Za-z_,|=\\-\\[\\]]\\|\\s\\)*}'\n\t\tlet erlangList  = '\\[\\([A-Za-z_,|=\\-{}]\\|\\s\\)*\\]'\n\n\t\t\" FIXME: Use searchpair?\n\t\twhile arguments =~ erlangTuple\n\t\t\tlet arguments = substitute(arguments, erlangTuple, \"A\", \"g\")\n\t\tendwhile\n\t\t\" FIXME: Use searchpair?\n\t\twhile arguments =~ erlangList\n\t\t\tlet arguments = substitute(arguments, erlangList, \"A\", \"g\")\n\t\tendwhile\n\t\t\n\t\tlet len = strlen(arguments)\n\t\twhile pos < len && pos > -1\n\t\t\tlet ac += 1\n\t\t\tlet pos = matchend(arguments, ',\\s*', pos)\n\t\tendwhile\n\t\treturn ac\n\tendfunction\n\n\t\" Main fold function\n\tfunction GetErlangFold(lnum)\n\t\tlet lnum = a:lnum\n\t\tlet line = getline(lnum)\n\n\t\tif line =~ s:ErlangFunEnd\n\t\t\treturn '<1'\n\t\tendif\n\n\t\tif line =~ s:ErlangFunBegin && foldlevel(lnum - 1) == 1\n\t\t\tif exists(\"g:erlangFoldSplitFunction\") && g:erlangFoldSplitFunction\n\t\t\t\treturn '>1'\n\t\t\telse\n\t\t\t\treturn '1'\n\t\t\tendif\n\t\tendif\n\n\t\tif line =~ s:ErlangFunBegin\n\t\t\treturn '>1'\n\t\tendif\n\n\t\treturn '='\n\tendfunction\n\n\t\" Erlang fold description (foldtext function)\n\tfunction ErlangFoldText()\n\t\tlet foldlen = v:foldend - v:foldstart\n\t\tif 1 < foldlen\n\t\t\tlet lines = \"lines\"\n\t\telse\n\t\t\tlet lines = \"line\"\n\t\tendif\n\t\tlet line = getline(v:foldstart)\n\t\tlet name = s:GetFunName(line)\n\t\tlet arguments = s:GetFunArgs(strpart(line, strlen(name)), v:foldstart)\n\t\tlet argcount = s:CountFunArgs(arguments)\n\t\tlet retval = \"+\" . v:folddashes . \" \" . name . \"/\" . argcount\n\t\tlet retval .= \" (\" . foldlen . \" \" . lines . \")\"\n\t\treturn retval\n\tendfunction\nendif\n\ncall s:SetErlangOptions()\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/erlang_refactor.vim",
    "content": "\" Erlang refactor file\n\" Language:   Erlang\n\" Maintainer: Pawel 'kTT' Salata <rockplayer.pl@gmail.com>\n\" URL:        http://ktototaki.info\n\nif exists(\"b:did_ftplugin_erlang\")\n    finish\nendif\n\n\" Don't load any other\nlet b:did_ftplugin_erlang=1\n\nif !exists('g:erlangRefactoring') || g:erlangRefactoring == 0\n    finish\nendif\n\nif !exists('g:erlangWranglerPath')\n    let g:erlangWranglerPath = '/usr/share/wrangler/'\nendif\n\nif glob(g:erlangWranglerPath) == \"\"\n    call confirm(\"Wrong path to wrangler dir\")\n    finish\nendif\n\nautocmd VimLeavePre * call StopWranglerServer()\n\nlet s:erlangServerName = \"wrangler_vim\"\n\n\" Starting background erlang session with wrangler on\nfunction! StartWranglerServer()\n    let wranglerEbinDir = g:erlangWranglerPath . \"/ebin\"\n    let command = \"erl_call -s -sname \" . s:erlangServerName . \" -x 'erl -pa \" . wranglerEbinDir . \"'\"\n    call system(command)\n    call s:send_rpc('application', 'start', '[wrangler_app]')\nendfunction\n\n\" Stopping erlang session\nfunction! StopWranglerServer()\n    echo s:send_rpc('erlang', 'halt', '')\nendfunction\n\n\" Sending rpc call to erlang session\nfunction! s:send_rpc(module, fun, args)\n    let command = \"erl_call -sname \" . s:erlangServerName . \" -a '\" . a:module . \" \" . a:fun . \" \" . a:args . \"'\"\n    let result = system(command)\n    if match(result, 'erl_call: failed to connect to node .*') != -1\n        call StartWranglerServer()\n        return system(command)\n    endif\n    return result\nendfunction\n\nfunction! ErlangUndo()\n    echo s:send_rpc(\"wrangler_undo_server\", \"undo\", \"[]\")\n    :e!\nendfunction\n\nfunction! s:trim(text)\n    return substitute(a:text, \"^\\\\s\\\\+\\\\|\\\\s\\\\+$\", \"\", \"g\")\nendfunction\n\nfunction! s:get_msg(result, tuple_start)\n    let msg_begin = '{' . a:tuple_start . ','\n    let matching_start =  match(a:result, msg_begin)\n    if matching_start != -1\n        return s:trim(matchstr(a:result, '[^}]*', matching_start + strlen(msg_begin)))\n    endif\n    return \"\"\nendfunction\n\n\" Check if there is an error in result\nfunction! s:check_for_error(result)\n    let msg = s:get_msg(a:result, 'ok')\n    if msg != \"\"\n        return [0, msg]\n    endif\n    let msg = s:get_msg(a:result, 'warning')\n    if msg != \"\"\n        return [1, msg]\n    endif\n    let msg = s:get_msg(a:result, 'error')\n    if msg != \"\"\n        return [2, msg]\n    endif\n    return [-1, \"\"]\nendfunction\n\n\" Sending apply changes to file\nfunction! s:send_confirm()\n    let choice = confirm(\"What do you want?\", \"&Preview\\n&Confirm\\nCa&ncel\", 0)\n    if choice == 1\n        echo \"TODO: Display preview :)\"\n    elseif choice == 2\n        let module = 'wrangler_preview_server'\n        let fun = 'commit'\n        let args = '[]'\n        return s:send_rpc(module, fun, args)\n    else\n        let module = 'wrangler_preview_server'\n        let fun = 'abort'\n        let args = '[]'\n        return s:send_rpc(module, fun, args)\n        echo \"Canceled\"\n    endif\nendfunction\n\n\" Manually send confirm, for testing purpose only\nfunction! SendConfirm()\n    echo s:send_confirm()\nendfunction\n\n\" Format and send function extracton call\nfunction! s:call_extract(start_line, start_col, end_line, end_col, name)\n    let file = expand(\"%:p\")\n    let module = 'wrangler'\n    let fun = 'fun_extraction'\n    let args = '[\"' . file . '\", {' . a:start_line . ', ' . a:start_col . '}, {' . a:end_line . ', ' . a:end_col . '}, \"' . a:name . '\", ' . &sw . ']'\n    let result = s:send_rpc(module, fun, args)\n    let [error_code, msg] = s:check_for_error(result)\n    if error_code != 0\n        call confirm(msg)\n        return 0\n    endif\n    echo \"This files will be changed: \" . matchstr(msg, \"[^]]*\", 1)\n    echo s:send_confirm()\n    return 1\nendfunction\n\nfunction! ErlangExtractFunction(mode) range\n    silent w!\n    let name = inputdialog(\"New function name: \")\n    if name != \"\"\n        if a:mode == \"v\"\n            let start_pos = getpos(\"'<\")\n            let start_line = start_pos[1]\n            let start_col = start_pos[2]\n\n            let end_pos = getpos(\"'>\")\n            let end_line = end_pos[1]\n            let end_col = end_pos[2]\n        elseif a:mode == \"n\"\n            let pos = getpos(\".\")\n            let start_line = pos[1]\n            let start_col = pos[2]\n            let end_line = pos[1]\n            let end_col = pos[2]\n        else\n            echo \"Mode not supported.\"\n            return\n        endif\n        if s:call_extract(start_line, start_col, end_line, end_col, name)\n            let temp = &autoread\n            set autoread\n            :e\n            if temp == 0\n                set noautoread\n            endif\n        endif\n    else\n        echo \"Empty function name. Ignoring.\"\n    endif\nendfunction\nnmap <A-r>e :call ErlangExtractFunction(\"n\")<ENTER>\nvmap <A-r>e :call ErlangExtractFunction(\"v\")<ENTER>\n\nfunction! s:call_rename(mode, line, col, name, search_path)\n    let file = expand(\"%:p\")\n    let module = 'wrangler'\n    let fun = 'rename_' . a:mode\n    let args = '[\"' . file .'\", '\n    if a:mode != \"mod\"\n         let args = args . a:line . ', ' . a:col . ', '\n    endif\n    let args = args . '\"' . a:name . '\", [\"' . a:search_path . '\"], ' . &sw . ']'\n    let result = s:send_rpc(module, fun, args)\n    let [error_code, msg] = s:check_for_error(result)\n    if error_code != 0\n        call confirm(msg)\n        return 0\n    endif\n    echo \"This files will be changed: \" . matchstr(msg, \"[^]]*\", 1)\n    echo s:send_confirm()\n    return 1\nendfunction\n\nfunction! ErlangRename(mode)\n    silent w!\n    if a:mode == \"mod\"\n        let name = inputdialog('Rename module to: ')\n    else\n        let name = inputdialog('Rename \"' . expand(\"<cword>\") . '\" to: ')\n    endif\n    if name != \"\"\n        let search_path = expand(\"%:p:h\")\n        \"let search_path = inputdialog('Search path: ', expand(\"%:p:h\"))\n        let pos = getpos(\".\")\n        let line = pos[1]\n        let col = pos[2]\n        let current_filename = expand(\"%\")\n        let current_filepath = expand(\"%:p\")\n        let new_filename = name . '.erl'\n        if s:call_rename(a:mode, line, col, name, search_path)\n            if a:mode == \"mod\"\n                execute ':bd ' . current_filename\n                execute ':e ' . new_filename\n                silent execute '!mv ' . current_filepath . ' ' . current_filepath . '.bak'\n                redraw!\n            else\n                let temp = &autoread\n                set autoread\n                :e\n                if temp == 0\n                    set noautoread\n                endif\n            endif\n        endif\n    else\n        echo \"Empty name. Ignoring.\"\n    endif\nendfunction\n\nfunction! ErlangRenameFunction()\n    call ErlangRename(\"fun\")\nendfunction\nmap <A-r>f :call ErlangRenameFunction()<ENTER>\n\nfunction! ErlangRenameVariable()\n    call ErlangRename(\"var\")\nendfunction\nmap <A-r>v :call ErlangRenameVariable()<ENTER>\n\nfunction! ErlangRenameModule()\n    call ErlangRename(\"mod\")\nendfunction\nmap <A-r>m :call ErlangRenameModule()<ENTER>\n\nfunction! ErlangRenameProcess()\n    call ErlangRename(\"process\")\nendfunction\nmap <A-r>p :call ErlangRenameProcess()<ENTER>\n\nfunction! s:call_tuple_fun_args(start_line, start_col, end_line, end_col, search_path)\n    let file = expand(\"%:p\")\n    let module = 'wrangler'\n    let fun = 'tuple_funpar'\n    let args = '[\"' . file . '\", {' . a:start_line . ', ' . a:start_col . '}, {' . a:end_line . ', ' . a:end_col . '}, [\"' . a:search_path . '\"], ' . &sw . ']'\n    let result = s:send_rpc(module, fun, args)\n    if s:check_for_error(result)\n        return 0\n    endif\n    call s:send_confirm()\n    return 1\nendfunction\n\nfunction! ErlangTupleFunArgs(mode)\n    silent w!\n    let search_path = expand(\"%:p:h\")\n    \"let search_path = inputdialog('Search path: ', expand(\"%:p:h\"))\n    if a:mode == \"v\"\n        let start_pos = getpos(\"'<\")\n        let start_line = start_pos[1]\n        let start_col = start_pos[2]\n\n        let end_pos = getpos(\"'>\")\n        let end_line = end_pos[1]\n        let end_col = end_pos[2]\n        if s:call_tuple_fun_args(start_line, start_col, end_line, end_col, search_path)\n            let temp = &autoread\n            set autoread\n            :e\n            if temp == 0\n                set noautoread\n            endif\n        endif\n    elseif a:mode == \"n\"\n        let pos = getpos(\".\")\n        let line = pos[1]\n        let col = pos[2]\n        if s:call_tuple_fun_args(line, col, line, col, search_path)\n            let temp = &autoread\n            set autoread\n            :e\n            if temp == 0\n                set noautoread\n            endif\n        endif\n    else\n        echo \"Mode not supported.\"\n    endif\nendfunction\nnmap <A-r>t :call ErlangTupleFunArgs(\"n\")<ENTER>\nvmap <A-r>t :call ErlangTupleFunArgs(\"v\")<ENTER>\n\n\" vim: set foldmethod=marker:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/eruby.vim",
    "content": "\" Vim filetype plugin\n\" Language:\t\teRuby\n\" Maintainer:\t\tTim Pope <vimNOSPAM@tpope.org>\n\" URL:\t\t\thttps://github.com/vim-ruby/vim-ruby\n\" Release Coordinator:\tDoug Kearns <dougkearns@gmail.com>\n\n\" Only do this when not done yet for this buffer\nif exists(\"b:did_ftplugin\")\n  finish\nendif\n\nlet s:save_cpo = &cpo\nset cpo-=C\n\n\" Define some defaults in case the included ftplugins don't set them.\nlet s:undo_ftplugin = \"\"\nlet s:browsefilter = \"All Files (*.*)\\t*.*\\n\"\nlet s:match_words = \"\"\n\nif !exists(\"g:eruby_default_subtype\")\n  let g:eruby_default_subtype = \"html\"\nendif\n\nif &filetype =~ '^eruby\\.'\n  let b:eruby_subtype = matchstr(&filetype,'^eruby\\.\\zs\\w\\+')\nelseif !exists(\"b:eruby_subtype\")\n  let s:lines = getline(1).\"\\n\".getline(2).\"\\n\".getline(3).\"\\n\".getline(4).\"\\n\".getline(5).\"\\n\".getline(\"$\")\n  let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\\zs\\w\\+')\n  if b:eruby_subtype == ''\n    let b:eruby_subtype = matchstr(substitute(expand(\"%:t\"),'\\c\\%(\\.erb\\|\\.eruby\\|\\.erubis\\)\\+$','',''),'\\.\\zs\\w\\+$')\n  endif\n  if b:eruby_subtype == 'rhtml'\n    let b:eruby_subtype = 'html'\n  elseif b:eruby_subtype == 'rb'\n    let b:eruby_subtype = 'ruby'\n  elseif b:eruby_subtype == 'yml'\n    let b:eruby_subtype = 'yaml'\n  elseif b:eruby_subtype == 'js'\n    let b:eruby_subtype = 'javascript'\n  elseif b:eruby_subtype == 'txt'\n    \" Conventional; not a real file type\n    let b:eruby_subtype = 'text'\n  elseif b:eruby_subtype == ''\n    let b:eruby_subtype = g:eruby_default_subtype\n  endif\nendif\n\nif exists(\"b:eruby_subtype\") && b:eruby_subtype != ''\n  exe \"runtime! ftplugin/\".b:eruby_subtype.\".vim ftplugin/\".b:eruby_subtype.\"_*.vim ftplugin/\".b:eruby_subtype.\"/*.vim\"\nelse\n  runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim\nendif\nunlet! b:did_ftplugin\n\n\" Override our defaults if these were set by an included ftplugin.\nif exists(\"b:undo_ftplugin\")\n  let s:undo_ftplugin = b:undo_ftplugin\n  unlet b:undo_ftplugin\nendif\nif exists(\"b:browsefilter\")\n  let s:browsefilter = b:browsefilter\n  unlet b:browsefilter\nendif\nif exists(\"b:match_words\")\n  let s:match_words = b:match_words\n  unlet b:match_words\nendif\n\nruntime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim\nlet b:did_ftplugin = 1\n\n\" Combine the new set of values with those previously included.\nif exists(\"b:undo_ftplugin\")\n  let s:undo_ftplugin = b:undo_ftplugin . \" | \" . s:undo_ftplugin\nendif\nif exists (\"b:browsefilter\")\n  let s:browsefilter = substitute(b:browsefilter,'\\cAll Files (\\*\\.\\*)\\t\\*\\.\\*\\n','','') . s:browsefilter\nendif\nif exists(\"b:match_words\")\n  let s:match_words = b:match_words . ',' . s:match_words\nendif\n\n\" Change the browse dialog on Win32 to show mainly eRuby-related files\nif has(\"gui_win32\")\n  let b:browsefilter=\"eRuby Files (*.erb, *.rhtml)\\t*.erb;*.rhtml\\n\" . s:browsefilter\nendif\n\n\" Load the combined list of match_words for matchit.vim\nif exists(\"loaded_matchit\")\n  let b:match_words = s:match_words\nendif\n\n\" TODO: comments=\nsetlocal commentstring=<%#%s%>\n\nlet b:undo_ftplugin = \"setl cms< \"\n      \\ \" | unlet! b:browsefilter b:match_words | \" . s:undo_ftplugin\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim: nowrap sw=2 sts=2 ts=8:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/git.vim",
    "content": "\" Vim filetype plugin\n\" Language:\tgeneric git output\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\n\" Only do this when not done yet for this buffer\nif (exists(\"b:did_ftplugin\"))\n  finish\nendif\nlet b:did_ftplugin = 1\n\nif !exists('b:git_dir')\n  if expand('%:p') =~# '[\\/]\\.git[\\/]modules[\\/]'\n    \" Stay out of the way\n  elseif expand('%:p') =~# '\\.git\\>'\n    let b:git_dir = matchstr(expand('%:p'),'.*\\.git\\>')\n  elseif $GIT_DIR != ''\n    let b:git_dir = $GIT_DIR\n  endif\n  if (has('win32') || has('win64')) && exists('b:git_dir')\n    let b:git_dir = substitute(b:git_dir,'\\\\','/','g')\n  endif\nendif\n\nif exists('*shellescape') && exists('b:git_dir') && b:git_dir != ''\n  if b:git_dir =~# '/\\.git$' \" Not a bare repository\n    let &l:path = escape(fnamemodify(b:git_dir,':h'),'\\, ').','.&l:path\n  endif\n  let &l:path = escape(b:git_dir,'\\, ').','.&l:path\n  let &l:keywordprg = 'git --git-dir='.shellescape(b:git_dir).' show'\nelse\n  setlocal keywordprg=git\\ show\nendif\nif has('gui_running')\n  let &l:keywordprg = substitute(&l:keywordprg,'^git\\>','git --no-pager','')\nendif\n\nsetlocal includeexpr=substitute(v:fname,'^[^/]\\\\+/','','')\nlet b:undo_ftplugin = \"setl keywordprg< path< includeexpr<\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/gitcommit.vim",
    "content": "\" Vim filetype plugin\n\" Language:\tgit commit file\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2012 April 7\n\n\" Only do this when not done yet for this buffer\nif (exists(\"b:did_ftplugin\"))\n  finish\nendif\n\nruntime! ftplugin/git.vim\nlet b:did_ftplugin = 1\n\nsetlocal nomodeline tabstop=8 formatoptions-=croq formatoptions+=tl\n\nlet b:undo_ftplugin = 'setl modeline< tabstop< formatoptions<'\n\nif &textwidth == 0\n  \" make sure that log messages play nice with git-log on standard terminals\n  setlocal textwidth=72\n  let b:undo_ftplugin .= \"|setl tw<\"\nendif\n\nif exists(\"g:no_gitcommit_commands\") || v:version < 700\n  finish\nendif\n\nif !exists(\"b:git_dir\")\n  let b:git_dir = expand(\"%:p:h\")\nendif\n\ncommand! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>)\n\nfunction! s:diffcomplete(A,L,P)\n  let args = \"\"\n  if a:P <= match(a:L.\" -- \",\" -- \")+3\n    let args = args . \"-p\\n--stat\\n--shortstat\\n--summary\\n--patch-with-stat\\n--no-renames\\n-B\\n-M\\n-C\\n\"\n  end\n  if exists(\"b:git_dir\") && a:A !~ '^-'\n    let tree = fnamemodify(b:git_dir,':h')\n    if strpart(getcwd(),0,strlen(tree)) == tree\n      let args = args.\"\\n\".system(\"git diff --cached --name-only\")\n    endif\n  endif\n  return args\nendfunction\n\nfunction! s:gitdiffcached(bang,gitdir,...)\n  let tree = fnamemodify(a:gitdir,':h')\n  let name = tempname()\n  let git = \"git\"\n  if strpart(getcwd(),0,strlen(tree)) != tree\n    let git .= \" --git-dir=\".(exists(\"*shellescape\") ? shellescape(a:gitdir) : '\"'.a:gitdir.'\"')\n  endif\n  if a:0\n    let extra = join(map(copy(a:000),exists(\"*shellescape\") ? 'shellescape(v:val)' : \"'\\\"'.v:val.'\\\"'\"))\n  else\n    let extra = \"-p --stat=\".&columns\n  endif\n  call system(git.\" diff --cached --no-color --no-ext-diff \".extra.\" > \".(exists(\"*shellescape\") ? shellescape(name) : name))\n  exe \"pedit \".(exists(\"*fnameescape\") ? fnameescape(name) : name)\n  wincmd P\n  let b:git_dir = a:gitdir\n  command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>)\n  nnoremap <buffer> <silent> q :q<CR>\n  setlocal buftype=nowrite nobuflisted noswapfile nomodifiable filetype=git\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/gitconfig.vim",
    "content": "\" Vim filetype plugin\n\" Language:\tgit config file\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2009 Dec 24\n\n\" Only do this when not done yet for this buffer\nif (exists(\"b:did_ftplugin\"))\n  finish\nendif\nlet b:did_ftplugin = 1\n\nsetlocal formatoptions-=t formatoptions+=croql\nsetlocal comments=:#,:; commentstring=;\\ %s\n\nlet b:undo_ftplugin = \"setl fo< com< cms<\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/gitrebase.vim",
    "content": "\" Vim filetype plugin\n\" Language:\tgit rebase --interactive\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 May 21\n\n\" Only do this when not done yet for this buffer\nif (exists(\"b:did_ftplugin\"))\n  finish\nendif\n\nruntime! ftplugin/git.vim\nlet b:did_ftplugin = 1\n\nsetlocal comments=:# commentstring=#\\ %s formatoptions-=t\nif !exists(\"b:undo_ftplugin\")\n  let b:undo_ftplugin = \"\"\nendif\nlet b:undo_ftplugin = b:undo_ftplugin.\"|setl com< cms< fo<\"\n\nfunction! s:choose(word)\n  s/^\\(\\w\\+\\>\\)\\=\\(\\s*\\)\\ze\\x\\{4,40\\}\\>/\\=(strlen(submatch(1)) == 1 ? a:word[0] : a:word) . substitute(submatch(2),'^$',' ','')/e\nendfunction\n\nfunction! s:cycle()\n  call s:choose(get({'s':'edit','p':'squash','e':'reword','r':'fixup'},getline('.')[0],'pick'))\nendfunction\n\ncommand! -buffer -bar Pick   :call s:choose('pick')\ncommand! -buffer -bar Squash :call s:choose('squash')\ncommand! -buffer -bar Edit   :call s:choose('edit')\ncommand! -buffer -bar Reword :call s:choose('reword')\ncommand! -buffer -bar Fixup  :call s:choose('fixup')\ncommand! -buffer -bar Cycle  :call s:cycle()\n\" The above are more useful when they are mapped; for example:\n\"nnoremap <buffer> <silent> S :Cycle<CR>\n\nif exists(\"g:no_plugin_maps\") || exists(\"g:no_gitrebase_maps\")\n  finish\nendif\n\nnnoremap <buffer> <expr> K col('.') < 7 && expand('<Lt>cword>') =~ '\\X' && getline('.') =~ '^\\w\\+\\s\\+\\x\\+\\>' ? 'wK' : 'K'\n\nlet b:undo_ftplugin = b:undo_ftplugin . \"|nunmap <buffer> K\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/gitsendemail.vim",
    "content": "\" Vim filetype plugin\n\" Language:\tgit send-email message\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2009 Dec 24\n\nruntime! ftplugin/mail.vim\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/go/fmt.vim",
    "content": "\" Copyright 2011 The Go Authors. All rights reserved.\n\" Use of this source code is governed by a BSD-style\n\" license that can be found in the LICENSE file.\n\"\n\" fmt.vim: Vim command to format Go files with gofmt.\n\"\n\" This filetype plugin add a new commands for go buffers:\n\"\n\"   :Fmt\n\"\n\"       Filter the current Go buffer through gofmt.\n\"       It tries to preserve cursor position and avoids\n\"       replacing the buffer with stderr output.\n\"\n\" Options:\n\"\n\"   g:go_fmt_commands [default=1]\n\"\n\"       Flag to indicate whether to enable the commands listed above.\n\"\n\"   g:gofmt_command [default=\"gofmt\"]\n\"\n\"       Flag naming the gofmt executable to use.\n\"\nif exists(\"b:did_ftplugin_go_fmt\")\n    finish\nendif\n\nif !exists(\"g:go_fmt_commands\")\n    let g:go_fmt_commands = 1\nendif\n\nif !exists(\"g:gofmt_command\")\n    let g:gofmt_command = \"gofmt\"\nendif\n\nif g:go_fmt_commands\n    command! -buffer Fmt call s:GoFormat()\nendif\n\nfunction! s:GoFormat()\n    let view = winsaveview()\n    silent execute \"%!\" . g:gofmt_command\n    if v:shell_error\n        let errors = []\n        for line in getline(1, line('$'))\n            let tokens = matchlist(line, '^\\(.\\{-}\\):\\(\\d\\+\\):\\(\\d\\+\\)\\s*\\(.*\\)')\n            if !empty(tokens)\n                call add(errors, {\"filename\": @%,\n                                 \\\"lnum\":     tokens[2],\n                                 \\\"col\":      tokens[3],\n                                 \\\"text\":     tokens[4]})\n            endif\n        endfor\n        if empty(errors)\n            % | \" Couldn't detect gofmt error format, output errors\n        endif\n        undo\n        if !empty(errors)\n            call setqflist(errors, 'r')\n        endif\n        echohl Error | echomsg \"Gofmt returned error\" | echohl None\n    endif\n    call winrestview(view)\nendfunction\n\nlet b:did_ftplugin_go_fmt = 1\n\n\" vim:ts=4:sw=4:et\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/go/import.vim",
    "content": "\" Copyright 2011 The Go Authors. All rights reserved.\n\" Use of this source code is governed by a BSD-style\n\" license that can be found in the LICENSE file.\n\"\n\" import.vim: Vim commands to import/drop Go packages.\n\"\n\" This filetype plugin adds three new commands for go buffers:\n\"\n\"   :Import {path}\n\"\n\"       Import ensures that the provided package {path} is imported\n\"       in the current Go buffer, using proper style and ordering.\n\"       If {path} is already being imported, an error will be\n\"       displayed and the buffer will be untouched.\n\"\n\"   :ImportAs {localname} {path}\n\"\n\"       Same as Import, but uses a custom local name for the package.\n\"\n\"   :Drop {path}\n\"\n\"       Remove the import line for the provided package {path}, if\n\"       present in the current Go buffer.  If {path} is not being\n\"       imported, an error will be displayed and the buffer will be\n\"       untouched.\n\"\n\" If you would like to add shortcuts, you can do so by doing the following:\n\"\n\"   Import fmt\n\"   au Filetype go nnoremap <buffer> <LocalLeader>f :Import fmt<CR>\n\"\n\"   Drop fmt\n\"   au Filetype go nnoremap <buffer> <LocalLeader>F :Drop fmt<CR>\n\"\n\"   Import the word under your cursor\n\"   au Filetype go nnoremap <buffer> <LocalLeader>k\n\"       \\ :exe 'Import ' . expand('<cword>')<CR>\n\"\n\" The backslash '\\' is the default maplocalleader, so it is possible that\n\" your vim is set to use a different character (:help maplocalleader).\n\"\n\" Options:\n\"\n\"   g:go_import_commands [default=1]\n\"\n\"       Flag to indicate whether to enable the commands listed above.\n\"\nif exists(\"b:did_ftplugin_go_import\")\n    finish\nendif\n\nif !exists(\"g:go_import_commands\")\n    let g:go_import_commands = 1\nendif\n\nif g:go_import_commands\n    command! -buffer -nargs=? -complete=customlist,go#complete#Package Drop call s:SwitchImport(0, '', <f-args>)\n    command! -buffer -nargs=1 -complete=customlist,go#complete#Package Import call s:SwitchImport(1, '', <f-args>)\n    command! -buffer -nargs=* -complete=customlist,go#complete#Package ImportAs call s:SwitchImport(1, <f-args>)\nendif\n\nfunction! s:SwitchImport(enabled, localname, path)\n    let view = winsaveview()\n    let path = a:path\n\n    \" Quotes are not necessary, so remove them if provided.\n    if path[0] == '\"'\n        let path = strpart(path, 1)\n    endif\n    if path[len(path)-1] == '\"'\n        let path = strpart(path, 0, len(path) - 1)\n    endif\n    if path == ''\n        call s:Error('Import path not provided')\n        return\n    endif\n\n    \" Extract any site prefix (e.g. github.com/).\n    \" If other imports with the same prefix are grouped separately,\n    \" we will add this new import with them.\n    \" Only up to and including the first slash is used.\n    let siteprefix = matchstr(path, \"^[^/]*/\")\n\n    let qpath = '\"' . path . '\"'\n    if a:localname != ''\n        let qlocalpath = a:localname . ' ' . qpath\n    else\n        let qlocalpath = qpath\n    endif\n    let indentstr = 0\n    let packageline = -1 \" Position of package name statement\n    let appendline = -1  \" Position to introduce new import\n    let deleteline = -1  \" Position of line with existing import\n    let linesdelta = 0   \" Lines added/removed\n\n    \" Find proper place to add/remove import.\n    let line = 0\n    while line <= line('$')\n        let linestr = getline(line)\n\n        if linestr =~# '^package\\s'\n            let packageline = line\n            let appendline = line\n\n        elseif linestr =~# '^import\\s\\+('\n            let appendstr = qlocalpath\n            let indentstr = 1\n            let appendline = line\n            let firstblank = -1\n            let lastprefix = \"\"\n            while line <= line(\"$\")\n                let line = line + 1\n                let linestr = getline(line)\n                let m = matchlist(getline(line), '^\\()\\|\\(\\s\\+\\)\\(\\S*\\s*\\)\"\\(.\\+\\)\"\\)')\n                if empty(m)\n                    if siteprefix == \"\" && a:enabled\n                        \" must be in the first group\n                        break\n                    endif\n                    \" record this position, but keep looking\n                    if firstblank < 0\n                        let firstblank = line\n                    endif\n                    continue\n                endif\n                if m[1] == ')'\n                    \" if there's no match, add it to the first group\n                    if appendline < 0 && firstblank >= 0\n                        let appendline = firstblank\n                    endif\n                    break\n                endif\n                let lastprefix = matchstr(m[4], \"^[^/]*/\")\n                if a:localname != '' && m[3] != ''\n                    let qlocalpath = printf('%-' . (len(m[3])-1) . 's %s', a:localname, qpath)\n                endif\n                let appendstr = m[2] . qlocalpath\n                let indentstr = 0\n                if m[4] == path\n                    let appendline = -1\n                    let deleteline = line\n                    break\n                elseif m[4] < path\n                    \" don't set candidate position if we have a site prefix,\n                    \" we've passed a blank line, and this doesn't share the same\n                    \" site prefix.\n                    if siteprefix == \"\" || firstblank < 0 || match(m[4], \"^\" . siteprefix) >= 0\n                        let appendline = line\n                    endif\n                elseif siteprefix != \"\" && match(m[4], \"^\" . siteprefix) >= 0\n                    \" first entry of site group\n                    let appendline = line - 1\n                    break\n                endif\n            endwhile\n            break\n\n        elseif linestr =~# '^import '\n            if appendline == packageline\n                let appendstr = 'import ' . qlocalpath\n                let appendline = line - 1\n            endif\n            let m = matchlist(linestr, '^import\\(\\s\\+\\)\\(\\S*\\s*\\)\"\\(.\\+\\)\"')\n            if !empty(m)\n                if m[3] == path\n                    let appendline = -1\n                    let deleteline = line\n                    break\n                endif\n                if m[3] < path\n                    let appendline = line\n                endif\n                if a:localname != '' && m[2] != ''\n                    let qlocalpath = printf(\"%s %\" . len(m[2])-1 . \"s\", a:localname, qpath)\n                endif\n                let appendstr = 'import' . m[1] . qlocalpath\n            endif\n\n        elseif linestr =~# '^\\(var\\|const\\|type\\|func\\)\\>'\n            break\n\n        endif\n        let line = line + 1\n    endwhile\n\n    \" Append or remove the package import, as requested.\n    if a:enabled\n        if deleteline != -1\n            call s:Error(qpath . ' already being imported')\n        elseif appendline == -1\n            call s:Error('No package line found')\n        else\n            if appendline == packageline\n                call append(appendline + 0, '')\n                call append(appendline + 1, 'import (')\n                call append(appendline + 2, ')')\n                let appendline += 2\n                let linesdelta += 3\n                let appendstr = qlocalpath\n                let indentstr = 1\n            endif\n            call append(appendline, appendstr)\n            execute appendline + 1\n            if indentstr\n                execute 'normal >>'\n            endif\n            let linesdelta += 1\n        endif\n    else\n        if deleteline == -1\n            call s:Error(qpath . ' not being imported')\n        else\n            execute deleteline . 'd'\n            let linesdelta -= 1\n\n            if getline(deleteline-1) =~# '^import\\s\\+(' && getline(deleteline) =~# '^)'\n                \" Delete empty import block\n                let deleteline -= 1\n                execute deleteline . \"d\"\n                execute deleteline . \"d\"\n                let linesdelta -= 2\n            endif\n\n            if getline(deleteline) == '' && getline(deleteline - 1) == ''\n                \" Delete spacing for removed line too.\n                execute deleteline . \"d\"\n                let linesdelta -= 1\n            endif\n        endif\n    endif\n\n    \" Adjust view for any changes.\n    let view.lnum += linesdelta\n    let view.topline += linesdelta\n    if view.topline < 0\n        let view.topline = 0\n    endif\n\n    \" Put buffer back where it was.\n    call winrestview(view)\n\nendfunction\n\nfunction! s:Error(s)\n    echohl Error | echo a:s | echohl None\nendfunction\n\nlet b:did_ftplugin_go_import = 1\n\n\" vim:ts=4:sw=4:et\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/go.vim",
    "content": "\" Copyright 2013 The Go Authors. All rights reserved.\n\" Use of this source code is governed by a BSD-style\n\" license that can be found in the LICENSE file.\n\"\n\" go.vim: Vim filetype plugin for Go.\n\nif exists(\"b:did_ftplugin\")\n    finish\nendif\nlet b:did_ftplugin = 1\n\nsetlocal comments=s1:/*,mb:*,ex:*/,://\nsetlocal commentstring=//\\ %s\n\nlet b:undo_ftplugin = \"setl com< cms<\"\n\n\" vim:ts=4:sw=4:et\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/haml.vim",
    "content": "\" Vim filetype plugin\n\" Language:\tHaml\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 May 21\n\n\" Only do this when not done yet for this buffer\nif exists(\"b:did_ftplugin\")\n  finish\nendif\n\nlet s:save_cpo = &cpo\nset cpo-=C\n\n\" Define some defaults in case the included ftplugins don't set them.\nlet s:undo_ftplugin = \"\"\nlet s:browsefilter = \"All Files (*.*)\\t*.*\\n\"\nlet s:match_words = \"\"\n\nruntime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim\nunlet! b:did_ftplugin\nset matchpairs-=<:>\n\n\" Override our defaults if these were set by an included ftplugin.\nif exists(\"b:undo_ftplugin\")\n  let s:undo_ftplugin = b:undo_ftplugin\n  unlet b:undo_ftplugin\nendif\nif exists(\"b:browsefilter\")\n  let s:browsefilter = b:browsefilter\n  unlet b:browsefilter\nendif\nif exists(\"b:match_words\")\n  let s:match_words = b:match_words\n  unlet b:match_words\nendif\n\nruntime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim\nlet b:did_ftplugin = 1\n\n\" Combine the new set of values with those previously included.\nif exists(\"b:undo_ftplugin\")\n  let s:undo_ftplugin = b:undo_ftplugin . \" | \" . s:undo_ftplugin\nendif\nif exists (\"b:browsefilter\")\n  let s:browsefilter = substitute(b:browsefilter,'\\cAll Files (\\*\\.\\*)\\t\\*\\.\\*\\n','','') . s:browsefilter\nendif\nif exists(\"b:match_words\")\n  let s:match_words = b:match_words . ',' . s:match_words\nendif\n\n\" Change the browse dialog on Win32 to show mainly Haml-related files\nif has(\"gui_win32\")\n  let b:browsefilter=\"Haml Files (*.haml)\\t*.haml\\nSass Files (*.sass)\\t*.sass\\n\" . s:browsefilter\nendif\n\n\" Load the combined list of match_words for matchit.vim\nif exists(\"loaded_matchit\")\n  let b:match_words = s:match_words\nendif\n\nsetlocal comments= commentstring=-#\\ %s\n\nlet b:undo_ftplugin = \"setl cms< com< \"\n      \\ \" | unlet! b:browsefilter b:match_words | \" . s:undo_ftplugin\n\nlet &cpo = s:save_cpo\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/jade.vim",
    "content": "\" Vim filetype plugin\n\" Language: Jade\n\" Maintainer: Joshua Borton\n\" Credits: Tim Pope\n\n\" Only do this when not done yet for this buffer\nif exists(\"b:did_ftplugin\")\n  finish\nendif\n\nlet s:save_cpo = &cpo\nset cpo-=C\n\n\" Define some defaults in case the included ftplugins don't set them.\nlet s:undo_ftplugin = \"\"\nlet s:browsefilter = \"All Files (*.*)\\t*.*\\n\"\nlet s:match_words = \"\"\n\nruntime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim\nunlet! b:did_ftplugin\n\n\" Override our defaults if these were set by an included ftplugin.\nif exists(\"b:undo_ftplugin\")\n  let s:undo_ftplugin = b:undo_ftplugin\n  unlet b:undo_ftplugin\nendif\nif exists(\"b:browsefilter\")\n  let s:browsefilter = b:browsefilter\n  unlet b:browsefilter\nendif\nif exists(\"b:match_words\")\n  let s:match_words = b:match_words\n  unlet b:match_words\nendif\n\n\" Change the browse dialog on Win32 to show mainly Haml-related files\nif has(\"gui_win32\")\n  let b:browsefilter=\"Jade Files (*.jade)\\t*.jade\\n\" . s:browsefilter\nendif\n\n\" Load the combined list of match_words for matchit.vim\nif exists(\"loaded_matchit\")\n  let b:match_words = s:match_words\nendif\n\nsetlocal comments=://-,:// commentstring=//\\ %s\n\nsetlocal suffixesadd+=.jade\n\nlet b:undo_ftplugin = \"setl cms< com< \"\n      \\ \" | unlet! b:browsefilter b:match_words | \" . s:undo_ftplugin\n\nlet &cpo = s:save_cpo\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/latex-box/common.vim",
    "content": "\" LaTeX Box common functions\n\n\" Error Format {{{\n\" Note: The error formats assume we're using the -file-line-error with\n\"       [pdf]latex.\n\" Note: See |errorformat-LaTeX| for more info.\n\n\" Check for options\nif !exists(\"g:LatexBox_show_warnings\")\n\tlet g:LatexBox_show_warnings=1\nendif\nif !exists(\"g:LatexBox_ignore_warnings\")\n\tlet g:LatexBox_ignore_warnings =\n\t\t\t\t\\['Underfull',\n\t\t\t\t\\ 'Overfull',\n\t\t\t\t\\ 'specifier changed to']\nendif\n\n\" Standard error message formats\n\" Note: We consider statements that starts with \"!\" as errors\nsetlocal efm=%E!\\ LaTeX\\ %trror:\\ %m\nsetlocal efm+=%E%f:%l:\\ %m\nsetlocal efm+=%E!\\ %m\n\n\" More info for undefined control sequences\nsetlocal efm+=%Z<argument>\\ %m\n\n\" Show or ignore warnings\nif g:LatexBox_show_warnings\n\tfor w in g:LatexBox_ignore_warnings\n\t\tlet warning = escape(substitute(w, '[\\,]', '%\\\\\\\\&', 'g'), ' ')\n\t\texe 'setlocal efm+=%-G%.%#'. warning .'%.%#'\n\tendfor\n\tsetlocal efm+=%+WLaTeX\\ %.%#Warning:\\ %.%#line\\ %l%.%#\n\tsetlocal efm+=%+W%.%#\\ at\\ lines\\ %l--%*\\\\d\n\tsetlocal efm+=%+WLaTeX\\ %.%#Warning:\\ %m\n\tsetlocal efm+=%+W%.%#Warning:\\ %m\nelse\n\tsetlocal efm+=%-WLaTeX\\ %.%#Warning:\\ %.%#line\\ %l%.%#\n\tsetlocal efm+=%-W%.%#\\ at\\ lines\\ %l--%*\\\\d\n\tsetlocal efm+=%-WLaTeX\\ %.%#Warning:\\ %m\n\tsetlocal efm+=%-W%.%#Warning:\\ %m\nendif\n\n\" Push file to file stack\nsetlocal efm+=%+P**%f\n\n\" Ignore unmatched lines\nsetlocal efm+=%-G%.%#\n\" }}}\n\n\" Vim Windows {{{\n\n\" Width of vertical splits\nif !exists('g:LatexBox_split_width')\n\tlet g:LatexBox_split_width = 30\nendif\n\n\" Where vertical splits appear\nif !exists('g:LatexBox_split_side')\n\tlet g:LatexBox_split_side = \"leftabove\"\nendif\n\n\" Resize when split?\nif !exists('g:LatexBox_split_resize')\n\tlet g:LatexBox_split_resize = 0\nendif\n\n\" Toggle help info\nif !exists('g:LatexBox_toc_hidehelp')\n\tlet g:LatexBox_toc_hidehelp = 0\nendif\n\" }}}\n\n\" Filename utilities {{{\nfunction! LatexBox_GetMainTexFile()\n\n\t\" 1. check for the b:main_tex_file variable\n\tif exists('b:main_tex_file') && filereadable(b:main_tex_file)\n\t\treturn b:main_tex_file\n\tendif\n\n\n\t\" 2. scan the first few lines of the file for root = filename\n\tfor linenum in range(1,5)\n\t\tlet linecontents = getline(linenum)\n\t\tif linecontents =~ 'root\\s*='\n\t\t\t\" Remove everything but the filename\n\t\t\tlet b:main_tex_file = substitute(linecontents,\n\t\t\t\t\t\t\\ '.*root\\s*=\\s*', \"\", \"\")\n\t\t\tlet b:main_tex_file = substitute(b:main_tex_file, '\\s*$', \"\", \"\")\n\t\t\t\" Prepend current directory if this isn't an absolute path\n\t\t\tif b:main_tex_file !~ '^/'\n\t\t\t\tlet b:main_tex_file = expand('%:p:h') . '/' . b:main_tex_file\n\t\t\tendif\n\t\t\tlet b:main_tex_file = fnamemodify(b:main_tex_file, \":p\")\n\t\t\tif b:main_tex_file !~ '\\.tex$'\n\t\t\t\tlet b:main_tex_file .= '.tex'\n\t\t\tendif\n\t\t\treturn b:main_tex_file\n\t\tendif\n\tendfor\n\n\t\" 3. scan current file for \"\\begin{document}\"\n\tif &filetype == 'tex' && search('\\m\\C\\\\begin\\_\\s*{document}', 'nw') != 0\n\t\treturn expand('%:p')\n\tendif\n\n\t\" 4. use 'main.tex' if it exists in the same directory (and is readable)\n\tlet s:main_dot_tex_file=expand('%:p:h') . '/main.tex'\n\tif filereadable(s:main_dot_tex_file)\n\t\tlet b:main_tex_file=s:main_dot_tex_file\n\t\treturn b:main_tex_file\n\tendif\n\n\t\" 5. borrow the Vim-Latex-Suite method of finding it\n\tif Tex_GetMainFileName() != expand('%:p')\n\t\tlet b:main_tex_file = Tex_GetMainFileName()\n\t\treturn b:main_tex_file\n\tendif\n\n\t\" 6. prompt for file with completion\n\tlet b:main_tex_file = s:PromptForMainFile()\n\treturn b:main_tex_file\nendfunction\n\nfunction! s:PromptForMainFile()\n\tlet saved_dir = getcwd()\n\texecute 'cd ' . fnameescape(expand('%:p:h'))\n\tlet l:file = ''\n\twhile !filereadable(l:file)\n\t\tlet l:file = input('main LaTeX file: ', '', 'file')\n\t\tif l:file !~ '\\.tex$'\n\t\t\tlet l:file .= '.tex'\n\t\tendif\n\tendwhile\n\tlet l:file = fnamemodify(l:file, ':p')\n\texecute 'cd ' . fnameescape(saved_dir)\n\treturn l:file\nendfunction\n\n\" Return the directory of the main tex file\nfunction! LatexBox_GetTexRoot()\n\treturn fnamemodify(LatexBox_GetMainTexFile(), ':h')\nendfunction\n\nfunction! LatexBox_GetTexBasename(with_dir)\n\tif a:with_dir\n\t\treturn fnamemodify(LatexBox_GetMainTexFile(), ':r')\n\telse\n\t\treturn fnamemodify(LatexBox_GetMainTexFile(), ':t:r')\n\tendif\nendfunction\n\nfunction! LatexBox_GetAuxFile()\n\t\" 1. check for b:build_dir variable\n\tif exists('b:build_dir') && isdirectory(b:build_dir)\n\t\treturn b:build_dir . '/' . LatexBox_GetTexBasename(0) . '.aux'\n\tendif\n\n\t\" 2. check for g:LatexBox_build_dir variable\n\tif exists('g:LatexBox_build_dir') && isdirectory(g:LatexBox_build_dir)\n\t\treturn g:LatexBox_build_dir . '/' . LatexBox_GetTexBasename(0) . '.aux'\n\tendif\n\n\t\" 3. use the base name of main tex file\n\treturn LatexBox_GetTexBasename(1) . '.aux'\nendfunction\n\nfunction! LatexBox_GetLogFile()\n\t\" 1. check for b:build_dir variable\n\tif exists('b:build_dir') && isdirectory(b:build_dir)\n\t\treturn b:build_dir . '/' . LatexBox_GetTexBasename(0) . '.log'\n\tendif\n\n\t\" 2. check for g:LatexBox_build_dir variable\n\tif exists('g:LatexBox_build_dir') && isdirectory(g:LatexBox_build_dir)\n\t\treturn g:LatexBox_build_dir . '/' . LatexBox_GetTexBasename(0) . '.log'\n\tendif\n\n\t\" 3. use the base name of main tex file\n\treturn LatexBox_GetTexBasename(1) . '.log'\nendfunction\n\nfunction! LatexBox_GetOutputFile()\n\t\" 1. check for b:build_dir variable\n\tif exists('b:build_dir') && isdirectory(b:build_dir)\n\t\treturn b:build_dir . '/' . LatexBox_GetTexBasename(0)\n\t\t\t\t\t\\ . '.' . g:LatexBox_output_type\n\tendif\n\n\t\" 2. check for g:LatexBox_build_dir variable\n\tif exists('g:LatexBox_build_dir') && isdirectory(g:LatexBox_build_dir)\n\t\treturn g:LatexBox_build_dir . '/' . LatexBox_GetTexBasename(0)\n\t\t\t\t\t\\ . '.' . g:LatexBox_output_type\n\tendif\n\n\t\" 3. use the base name of main tex file\n\treturn LatexBox_GetTexBasename(1) . '.' . g:LatexBox_output_type\nendfunction\n\" }}}\n\n\" View Output {{{\n\n\" Default pdf viewer\nif !exists('g:LatexBox_viewer')\n\tif has('win32')\n\t\t\" On windows, 'running' a file will open it with the default program\n\t\tlet g:LatexBox_viewer = ''\n\telse\n\t\tlet g:LatexBox_viewer = 'xdg-open'\n\tendif\nendif\n\nfunction! LatexBox_View()\n\tlet outfile = LatexBox_GetOutputFile()\n\tif !filereadable(outfile)\n\t\techomsg fnamemodify(outfile, ':.') . ' is not readable'\n\t\treturn\n\tendif\n\tlet cmd = g:LatexBox_viewer . ' ' . shellescape(outfile)\n\tif has('win32')\n\t\tlet cmd = '!start /b' . cmd . ' >nul'\n\telse\n\t\tlet cmd = '!' . cmd . ' &>/dev/null &'\n\tendif\n\tsilent execute cmd\n\tif !has(\"gui_running\")\n\t\tredraw!\n\tendif\nendfunction\n\ncommand! LatexView call LatexBox_View()\n\" }}}\n\n\" In Comment {{{\n\n\" LatexBox_InComment([line], [col])\n\" return true if inside comment\nfunction! LatexBox_InComment(...)\n\tlet line = a:0 >= 1 ? a:1 : line('.')\n\tlet col = a:0 >= 2 ? a:2 : col('.')\n\treturn synIDattr(synID(line, col, 0), \"name\") =~# '^texComment'\nendfunction\n\" }}}\n\n\" Get Current Environment {{{\n\n\" LatexBox_GetCurrentEnvironment([with_pos])\n\" Returns:\n\" - environment\n\"\t  if with_pos is not given\n\" - [envirnoment, lnum_begin, cnum_begin, lnum_end, cnum_end]\n\"\t  if with_pos is nonzero\nfunction! LatexBox_GetCurrentEnvironment(...)\n\tif a:0 > 0\n\t\tlet with_pos = a:1\n\telse\n\t\tlet with_pos = 0\n\tendif\n\n\tlet begin_pat = '\\C\\\\begin\\_\\s*{[^}]*}\\|\\\\\\@<!\\\\\\[\\|\\\\\\@<!\\\\('\n\tlet end_pat = '\\C\\\\end\\_\\s*{[^}]*}\\|\\\\\\@<!\\\\\\]\\|\\\\\\@<!\\\\)'\n\tlet saved_pos = getpos('.')\n\n\t\" move to the left until on a backslash\n\tlet [bufnum, lnum, cnum, off] = getpos('.')\n\tlet line = getline(lnum)\n\twhile cnum > 1 && line[cnum - 1] != '\\'\n\t\tlet cnum -= 1\n\tendwhile\n\tcall cursor(lnum, cnum)\n\n\t\" match begin/end pairs but skip comments\n\tlet flags = 'bnW'\n\tif strpart(getline('.'), col('.') - 1) =~ '^\\%(' . begin_pat . '\\)'\n\t\tlet flags .= 'c'\n\tendif\n\tlet [lnum1, cnum1] = searchpairpos(begin_pat, '', end_pat, flags,\n\t\t\t\t\\ 'LatexBox_InComment()')\n\n\tlet env = ''\n\n\tif lnum1\n\t\tlet line = strpart(getline(lnum1), cnum1 - 1)\n\n\t\tif empty(env)\n\t\t\tlet env = matchstr(line, '^\\C\\\\begin\\_\\s*{\\zs[^}]*\\ze}')\n\t\tendif\n\t\tif empty(env)\n\t\t\tlet env = matchstr(line, '^\\\\\\[')\n\t\tendif\n\t\tif empty(env)\n\t\t\tlet env = matchstr(line, '^\\\\(')\n\t\tendif\n\tendif\n\n\tif with_pos == 1\n\t\tlet flags = 'nW'\n\t\tif !(lnum1 == lnum && cnum1 == cnum)\n\t\t\tlet flags .= 'c'\n\t\tendif\n\n\t\tlet [lnum2, cnum2] = searchpairpos(begin_pat, '', end_pat, flags,\n\t\t\t\t\t\\ 'LatexBox_InComment()')\n\n\t\tcall setpos('.', saved_pos)\n\t\treturn [env, lnum1, cnum1, lnum2, cnum2]\n\telse\n\t\tcall setpos('.', saved_pos)\n\t\treturn env\n\tendif\nendfunction\n\" }}}\n\n\" Tex To Tree {{{\n\" stores nested braces in a tree structure\nfunction! LatexBox_TexToTree(str)\n\tlet tree = []\n\tlet i1 = 0\n\tlet i2 = -1\n\tlet depth = 0\n\twhile i2 < len(a:str)\n\t\tlet i2 = match(a:str, '[{}]', i2 + 1)\n\t\tif i2 < 0\n\t\t\tlet i2 = len(a:str)\n\t\tendif\n\t\tif i2 >= len(a:str) || a:str[i2] == '{'\n\t\t\tif depth == 0\n\t\t\t\tlet item = substitute(strpart(a:str, i1, i2 - i1),\n\t\t\t\t\t\t\t\\ '^\\s*\\|\\s*$', '', 'g')\n\t\t\t\tif !empty(item)\n\t\t\t\t\tcall add(tree, item)\n\t\t\t\tendif\n\t\t\t\tlet i1 = i2 + 1\n\t\t\tendif\n\t\t\tlet depth += 1\n\t\telse\n\t\t\tlet depth -= 1\n\t\t\tif depth == 0\n\t\t\t\tcall add(tree, LatexBox_TexToTree(strpart(a:str, i1, i2 - i1)))\n\t\t\t\tlet i1 = i2 + 1\n\t\t\tendif\n\t\tendif\n\tendwhile\n\treturn tree\nendfunction\n\" }}}\n\n\" Tree To Tex {{{\nfunction! LatexBox_TreeToTex(tree)\n\tif type(a:tree) == type('')\n\t\treturn a:tree\n\telse\n\t\treturn '{' . join(map(a:tree, 'LatexBox_TreeToTex(v:val)'), '') . '}'\n\tendif\nendfunction\n\" }}}\n\n\" vim:fdm=marker:ff=unix:noet:ts=4:sw=4\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/latex-box/complete.vim",
    "content": "\" LaTeX Box completion\n\nsetlocal omnifunc=LatexBox_Complete\n\n\" <SID> Wrap {{{\nfunction! s:GetSID()\n\treturn matchstr(expand('<sfile>'), '\\zs<SNR>\\d\\+_\\ze.*$')\nendfunction\nlet s:SID = s:GetSID()\nfunction! s:SIDWrap(func)\n\treturn s:SID . a:func\nendfunction\n\" }}}\n\n\" Completion {{{\nif !exists('g:LatexBox_completion_close_braces')\n\tlet g:LatexBox_completion_close_braces = 1\nendif\nif !exists('g:LatexBox_bibtex_wild_spaces')\n\tlet g:LatexBox_bibtex_wild_spaces = 1\nendif\n\nif !exists('g:LatexBox_cite_pattern')\n\tlet g:LatexBox_cite_pattern = '\\C\\\\\\a*cite\\a*\\*\\?\\(\\[[^\\]]*\\]\\)*\\_\\s*{'\nendif\nif !exists('g:LatexBox_ref_pattern')\n\tlet g:LatexBox_ref_pattern = '\\C\\\\v\\?\\(eq\\|page\\|[cC]\\|labelc\\)\\?ref\\*\\?\\_\\s*{'\nendif\n\nif !exists('g:LatexBox_completion_environments')\n\tlet g:LatexBox_completion_environments = [\n\t\t\\ {'word': 'itemize',\t\t'menu': 'bullet list' },\n\t\t\\ {'word': 'enumerate',\t\t'menu': 'numbered list' },\n\t\t\\ {'word': 'description',\t'menu': 'description' },\n\t\t\\ {'word': 'center',\t\t'menu': 'centered text' },\n\t\t\\ {'word': 'figure',\t\t'menu': 'floating figure' },\n\t\t\\ {'word': 'table',\t\t\t'menu': 'floating table' },\n\t\t\\ {'word': 'equation',\t\t'menu': 'equation (numbered)' },\n\t\t\\ {'word': 'align',\t\t\t'menu': 'aligned equations (numbered)' },\n\t\t\\ {'word': 'align*',\t\t'menu': 'aligned equations' },\n\t\t\\ {'word': 'document' },\n\t\t\\ {'word': 'abstract' },\n\t\t\\ ]\nendif\n\nif !exists('g:LatexBox_completion_commands')\n\tlet g:LatexBox_completion_commands = [\n\t\t\\ {'word': '\\begin{' },\n\t\t\\ {'word': '\\end{' },\n\t\t\\ {'word': '\\item' },\n\t\t\\ {'word': '\\label{' },\n\t\t\\ {'word': '\\ref{' },\n\t\t\\ {'word': '\\eqref{eq:' },\n\t\t\\ {'word': '\\cite{' },\n\t\t\\ {'word': '\\chapter{' },\n\t\t\\ {'word': '\\section{' },\n\t\t\\ {'word': '\\subsection{' },\n\t\t\\ {'word': '\\subsubsection{' },\n\t\t\\ {'word': '\\paragraph{' },\n\t\t\\ {'word': '\\nonumber' },\n\t\t\\ {'word': '\\bibliography' },\n\t\t\\ {'word': '\\bibliographystyle' },\n\t\t\\ ]\nendif\n\nif !exists('g:LatexBox_complete_inlineMath')\n\tlet g:LatexBox_complete_inlineMath = 0\nendif\n\nif !exists('g:LatexBox_eq_env_patterns')\n\tlet g:LatexBox_eq_env_patterns = 'equation\\|gather\\|multiline\\|align\\|flalign\\|alignat\\|eqnarray'\nendif\n\n\" }}}\n\n\"LatexBox_kpsewhich {{{\nfunction! LatexBox_kpsewhich(file)\n\tlet old_dir = getcwd()\n\texecute 'lcd ' . fnameescape(LatexBox_GetTexRoot())\n\tlet out = system('kpsewhich \"' . a:file . '\"')\n\n\t\" If kpsewhich has found something, it returns a non-empty string with a\n\t\" newline at the end; otherwise the string is empty\n\tif len(out)\n\t\t\" Remove the trailing newline\n\t\tlet out = fnamemodify(out[:-2], ':p')\n\tendif\n\n\texecute 'lcd ' . fnameescape(old_dir)\n\n\treturn out\nendfunction\n\"}}}\n\n\" Omni Completion {{{\n\nlet s:completion_type = ''\n\nfunction! LatexBox_Complete(findstart, base)\n\tif a:findstart\n\t\t\" return the starting position of the word\n\t\tlet line = getline('.')\n\t\tlet pos = col('.') - 1\n\t\twhile pos > 0 && line[pos - 1] !~ '\\\\\\|{'\n\t\t\tlet pos -= 1\n\t\tendwhile\n\n\t\tlet line_start = line[:pos-1]\n\t\tif line_start =~ '\\m\\C\\\\begin\\_\\s*{$'\n\t\t\tlet s:completion_type = 'begin'\n\t\telseif line_start =~ '\\m\\C\\\\end\\_\\s*{$'\n\t\t\tlet s:completion_type = 'end'\n\t\telseif line_start =~ '\\m' . g:LatexBox_ref_pattern . '$'\n\t\t\tlet s:completion_type = 'ref'\n\t\telseif line_start =~ '\\m' . g:LatexBox_cite_pattern . '$'\n\t\t\tlet s:completion_type = 'bib'\n\t\t\t\" check for multiple citations\n\t\t\tlet pos = col('.') - 1\n\t\t\twhile pos > 0 && line[pos - 1] !~ '{\\|,'\n\t\t\t\tlet pos -= 1\n\t\t\tendwhile\n\t\telseif s:LatexBox_complete_inlineMath_or_not()\n\t\t\tlet s:completion_type = 'inlineMath'\n\t\t\tlet pos = s:eq_pos\n\t\telse\n\t\t\tlet s:completion_type = 'command'\n\t\t\tif line[pos - 1] == '\\'\n\t\t\t\tlet pos -= 1\n\t\t\tendif\n\t\tendif\n\t\treturn pos\n\telse\n\t\t\" return suggestions in an array\n\t\tlet suggestions = []\n\n\t\tif s:completion_type == 'begin'\n\t\t\t\" suggest known environments\n\t\t\tfor entry in g:LatexBox_completion_environments\n\t\t\t\tif entry.word =~ '^' . escape(a:base, '\\')\n\t\t\t\t\tif g:LatexBox_completion_close_braces && !s:NextCharsMatch('^}')\n\t\t\t\t\t\t\" add trailing '}'\n\t\t\t\t\t\tlet entry = copy(entry)\n\t\t\t\t\t\tlet entry.abbr = entry.word\n\t\t\t\t\t\tlet entry.word = entry.word . '}'\n\t\t\t\t\tendif\n\t\t\t\t\tcall add(suggestions, entry)\n\t\t\t\tendif\n\t\t\tendfor\n\t\telseif s:completion_type == 'end'\n\t\t\t\" suggest known environments\n\t\t\tlet env = LatexBox_GetCurrentEnvironment()\n\t\t\tif env != ''\n\t\t\t\tif g:LatexBox_completion_close_braces && !s:NextCharsMatch('^\\s*[,}]')\n\t\t\t\t\tcall add(suggestions, {'word': env . '}', 'abbr': env})\n\t\t\t\telse\n\t\t\t\t\tcall add(suggestions, env)\n\t\t\t\tendif\n\t\t\tendif\n\t\telseif s:completion_type == 'command'\n\t\t\t\" suggest known commands\n\t\t\tfor entry in g:LatexBox_completion_commands\n\t\t\t\tif entry.word =~ '^' . escape(a:base, '\\')\n\t\t\t\t\t\" do not display trailing '{'\n\t\t\t\t\tif entry.word =~ '{'\n\t\t\t\t\t\tlet entry.abbr = entry.word[0:-2]\n\t\t\t\t\tendif\n\t\t\t\t\tcall add(suggestions, entry)\n\t\t\t\tendif\n\t\t\tendfor\n\t\telseif s:completion_type == 'ref'\n\t\t\tlet suggestions = s:CompleteLabels(a:base)\n\t\telseif s:completion_type == 'bib'\n\t\t\t\" suggest BibTeX entries\n\t\t\tlet suggestions = LatexBox_BibComplete(a:base)\n\t\telseif s:completion_type == 'inlineMath'\n\t\t\tlet suggestions = s:LatexBox_inlineMath_completion(a:base)\n\t\tendif\n\t\tif !has('gui_running')\n\t\t\tredraw!\n\t\tendif\n\t\treturn suggestions\n\tendif\nendfunction\n\" }}}\n\n\" BibTeX search {{{\n\n\" find the \\bibliography{...} commands\n\" the optional argument is the file name to be searched\n\nfunction! s:FindBibData(...)\n\tif a:0 == 0\n\t\tlet file = LatexBox_GetMainTexFile()\n\telse\n\t\tlet file = a:1\n\tendif\n\n\tif !filereadable(file)\n\t\treturn []\n\tendif\n\tlet lines = readfile(file)\n\tlet bibdata_list = []\n\n\t\"\n\t\" Search for added bibliographies\n\t\"\n\tlet bibliography_cmds = [\n\t\t\t\t\\ '\\\\bibliography',\n\t\t\t\t\\ '\\\\addbibresource',\n\t\t\t\t\\ '\\\\addglobalbib',\n\t\t\t\t\\ '\\\\addsectionbib',\n\t\t\t\t\\ ]\n\tfor cmd in bibliography_cmds\n\t\tlet filtered = filter(copy(lines),\n\t\t\t\t\t\\ 'v:val =~ ''\\C' . cmd . '\\s*{[^}]\\+}''')\n\t\tlet files = map(filtered,\n\t\t\t\t\t\\ 'matchstr(v:val, ''\\C' . cmd . '\\s*{\\zs[^}]\\+\\ze}'')')\n\t\tfor file in files\n\t\t\tlet bibdata_list += map(split(file, ','),\n\t\t\t\t\t\t\\ 'fnamemodify(v:val, '':r'')')\n\t\tendfor\n\tendfor\n\n\t\"\n\t\" Also search included files\n\t\"\n\tfor input in filter(lines,\n\t\t\t\t\\ 'v:val =~ ''\\C\\\\\\%(input\\|include\\)\\s*{[^}]\\+}''')\n\t\tlet bibdata_list += s:FindBibData(LatexBox_kpsewhich(\n\t\t\t\t\t\\ matchstr(input,\n\t\t\t\t\t\t\\ '\\C\\\\\\%(input\\|include\\)\\s*{\\zs[^}]\\+\\ze}')))\n\tendfor\n\n\treturn bibdata_list\nendfunction\n\nlet s:bstfile = expand('<sfile>:p:h') . '/vimcomplete'\n\nfunction! LatexBox_BibSearch(regexp)\n\tlet res = []\n\n\t\" Find data from bib files\n\tlet bibdata = join(s:FindBibData(), ',')\n\tif bibdata != ''\n\n\t\t\" write temporary aux file\n\t\tlet tmpbase = LatexBox_GetTexRoot() . '/_LatexBox_BibComplete'\n\t\tlet auxfile = tmpbase . '.aux'\n\t\tlet bblfile = tmpbase . '.bbl'\n\t\tlet blgfile = tmpbase . '.blg'\n\n\t\tcall writefile(['\\citation{*}', '\\bibstyle{' . s:bstfile . '}',\n\t\t\t\t\t\\ '\\bibdata{' . bibdata . '}'], auxfile)\n\n\t\tif has('win32')\n\t\t\tlet l:old_shellslash = &l:shellslash\n\t\t\tsetlocal noshellslash\n\t\t\tsilent execute '! cd ' shellescape(LatexBox_GetTexRoot()) .\n\t\t\t\t\t\t\\ ' & bibtex -terse '\n\t\t\t\t\t\t\\ . fnamemodify(auxfile, ':t') . ' >nul'\n\t\t\tlet &l:shellslash = l:old_shellslash\n\t\telse\n\t\t\tsilent execute '! cd ' shellescape(LatexBox_GetTexRoot()) .\n\t\t\t\t\t\t\\ ' ; bibtex -terse '\n\t\t\t\t\t\t\\ . fnamemodify(auxfile, ':t') . ' >/dev/null'\n\t\tendif\n\n\t\tlet lines = split(substitute(join(readfile(bblfile), \"\\n\"),\n\t\t\t\t\t\\ '\\n\\n\\@!\\(\\s\\=\\)\\s*\\|{\\|}', '\\1', 'g'), \"\\n\")\n\n\t\tfor line in filter(lines, 'v:val =~ a:regexp')\n\t\t\tlet matches = matchlist(line,\n\t\t\t\t\t\t\\ '^\\(.*\\)||\\(.*\\)||\\(.*\\)||\\(.*\\)||\\(.*\\)')\n\t\t\tif !empty(matches) && !empty(matches[1])\n\t\t\t\tlet s:type_length = max([s:type_length,\n\t\t\t\t\t\t\t\\ len(matches[2]) + 3])\n\t\t\t\tcall add(res, {\n\t\t\t\t\t\t\t\\ 'key': matches[1],\n\t\t\t\t\t\t\t\\ 'type': matches[2],\n\t\t\t\t\t\t\t\\ 'author': matches[3],\n\t\t\t\t\t\t\t\\ 'year': matches[4],\n\t\t\t\t\t\t\t\\ 'title': matches[5],\n\t\t\t\t\t\t\t\\ })\n\t\t\tendif\n\t\tendfor\n\n\t\tcall delete(auxfile)\n\t\tcall delete(bblfile)\n\t\tcall delete(blgfile)\n\tendif\n\n\t\" Find data from 'thebibliography' environments\n\tlet lines = readfile(LatexBox_GetMainTexFile())\n\tif match(lines, '\\C\\\\begin{thebibliography}') >= 0\n\t\tfor line in filter(filter(lines, 'v:val =~ ''\\C\\\\bibitem'''),\n\t\t\t\t\t\\ 'v:val =~ a:regexp')\n\t\t\tlet match = matchlist(line, '\\\\bibitem{\\([^}]*\\)')[1]\n\t\t\tcall add(res, {\n\t\t\t\t\t\t\\ 'key': match,\n\t\t\t\t\t\t\\ 'type': '',\n\t\t\t\t\t\t\\ 'author': '',\n\t\t\t\t\t\t\\ 'year': '',\n\t\t\t\t\t\t\\ 'title': match,\n\t\t\t\t\t\t\\ })\n\t\tendfor\n\tendif\n\n\treturn res\nendfunction\n\" }}}\n\n\" BibTeX completion {{{\nlet s:type_length=0\nfunction! LatexBox_BibComplete(regexp)\n\n\t\" treat spaces as '.*' if needed\n\tif g:LatexBox_bibtex_wild_spaces\n\t\t\"let regexp = substitute(a:regexp, '\\s\\+', '.*', 'g')\n\t\tlet regexp = '.*' . substitute(a:regexp, '\\s\\+', '\\\\\\&.*', 'g')\n\telse\n\t\tlet regexp = a:regexp\n\tendif\n\n\tlet res = []\n\tlet s:type_length = 4\n\tfor m in LatexBox_BibSearch(regexp)\n\t\tlet type = m['type']   == '' ? '[-]' : '[' . m['type']   . '] '\n\t\tlet type = printf('%-' . s:type_length . 's', type)\n\t\tlet auth = m['author'] == '' ? ''    :       m['author'][:20] . ' '\n\t\tlet auth = substitute(auth, '\\~', ' ', 'g')\n\t\tlet year = m['year']   == '' ? ''    : '(' . m['year']   . ')'\n\t\tlet w = { 'word': m['key'],\n\t\t\t\t\\ 'abbr': type . auth . year,\n\t\t\t\t\\ 'menu': m['title'] }\n\n\t\t\" close braces if needed\n\t\tif g:LatexBox_completion_close_braces && !s:NextCharsMatch('^\\s*[,}]')\n\t\t\tlet w.word = w.word . '}'\n\t\tendif\n\n\t\tcall add(res, w)\n\tendfor\n\treturn res\nendfunction\n\" }}}\n\n\" ExtractLabels {{{\n\" Generate list of \\newlabel commands in current buffer.\n\"\n\" Searches the current buffer for commands of the form\n\"\t\\newlabel{name}{{number}{page}.*\n\" and returns list of [ name, number, page ] tuples.\nfunction! s:ExtractLabels()\n\tcall cursor(1,1)\n\n\tlet matches = []\n\tlet [lblline, lblbegin] = searchpos( '\\\\newlabel{', 'ecW' )\n\n\twhile [lblline, lblbegin] != [0,0]\n\t\tlet [nln, nameend] = searchpairpos( '{', '', '}', 'W' )\n\t\tif nln != lblline\n\t\t\tlet [lblline, lblbegin] = searchpos( '\\\\newlabel{', 'ecW' )\n\t\t\tcontinue\n\t\tendif\n\t\tlet curname = strpart( getline( lblline ), lblbegin, nameend - lblbegin - 1 )\n\n\t\t\" Ignore cref entries (because they are duplicates)\n\t\tif curname =~ \"\\@cref\\|cref\\@\"\n\t\t\tcontinue\n\t\tendif\n\n\t\tif 0 == search( '\\m{\\w*{', 'ce', lblline )\n\t\t    let [lblline, lblbegin] = searchpos( '\\\\newlabel{', 'ecW' )\n\t\t    continue\n\t\tendif\n\n\t\tlet numberbegin = getpos('.')[2]\n\t\tlet [nln, numberend]  = searchpairpos( '{', '', '}', 'W' )\n\t\tif nln != lblline\n\t\t\tlet [lblline, lblbegin] = searchpos( '\\\\newlabel{', 'ecW' )\n\t\t\tcontinue\n\t\tendif\n\t\tlet curnumber = strpart( getline( lblline ), numberbegin, numberend - numberbegin - 1 )\n\n\t\tif 0 == search( '\\m\\w*{', 'ce', lblline )\n\t\t    let [lblline, lblbegin] = searchpos( '\\\\newlabel{', 'ecW' )\n\t\t    continue\n\t\tendif\n\n\t\tlet pagebegin = getpos('.')[2]\n\t\tlet [nln, pageend]  = searchpairpos( '{', '', '}', 'W' )\n\t\tif nln != lblline\n\t\t\tlet [lblline, lblbegin] = searchpos( '\\\\newlabel{', 'ecW' )\n\t\t\tcontinue\n\t\tendif\n\t\tlet curpage = strpart( getline( lblline ), pagebegin, pageend - pagebegin - 1 )\n\n\t\tlet matches += [ [ curname, curnumber, curpage ] ]\n\n\t\tlet [lblline, lblbegin] = searchpos( '\\\\newlabel{', 'ecW' )\n\tendwhile\n\n\treturn matches\nendfunction\n\"}}}\n\n\" ExtractInputs {{{\n\" Generate list of \\@input commands in current buffer.\n\"\n\" Searches the current buffer for \\@input{file} entries and\n\" returns list of all files.\nfunction! s:ExtractInputs()\n\tcall cursor(1,1)\n\n\tlet matches = []\n\tlet [inline, inbegin] = searchpos( '\\\\@input{', 'ecW' )\n\n\twhile [inline, inbegin] != [0,0]\n\t\tlet [nln, inend] = searchpairpos( '{', '', '}', 'W' )\n\t\tif nln != inline\n\t\t\tlet [inline, inbegin] = searchpos( '\\\\@input{', 'ecW' )\n\t\t\tcontinue\n\t\tendif\n\t\tlet matches += [ LatexBox_kpsewhich(strpart( getline( inline ), inbegin, inend - inbegin - 1 )) ]\n\n\t\tlet [inline, inbegin] = searchpos( '\\\\@input{', 'ecW' )\n\tendwhile\n\n\t\" Remove empty strings for nonexistant .aux files\n\treturn filter(matches, 'v:val != \"\"')\nendfunction\n\"}}}\n\n\" LabelCache {{{\n\" Cache of all labels.\n\"\n\" LabelCache is a dictionary mapping filenames to tuples\n\" [ time, labels, inputs ]\n\" where\n\" * time is modification time of the cache entry\n\" * labels is a list like returned by ExtractLabels\n\" * inputs is a list like returned by ExtractInputs\nlet s:LabelCache = {}\n\"}}}\n\n\" GetLabelCache {{{\n\" Extract labels from LabelCache and update it.\n\"\n\" Compares modification time of each entry in the label\n\" cache and updates it, if necessary. During traversal of\n\" the LabelCache, all current labels are collected and\n\" returned.\nfunction! s:GetLabelCache(file)\n\tif !filereadable(a:file)\n\t\treturn []\n\tendif\n\n\tif !has_key(s:LabelCache , a:file) || s:LabelCache[a:file][0] != getftime(a:file)\n\t\t\" Open file in temporary split window for label extraction.\n\t\tsilent execute '1sp +let\\ labels=s:ExtractLabels()|let\\ inputs=s:ExtractInputs()|quit! ' . fnameescape(a:file)\n\t\tlet s:LabelCache[a:file] = [ getftime(a:file), labels, inputs ]\n\tendif\n\n\t\" We need to create a copy of s:LabelCache[fid][1], otherwise all inputs'\n\t\" labels would be added to the current file's label cache upon each\n\t\" completion call, leading to duplicates/triplicates/etc. and decreased\n\t\" performance.\n\t\" Also, because we don't anything with the list besides matching copies,\n\t\" we can get away with a shallow copy for now.\n\tlet labels = copy(s:LabelCache[a:file][1])\n\n\tfor input in s:LabelCache[a:file][2]\n\t\tlet labels += s:GetLabelCache(input)\n\tendfor\n\n\treturn labels\nendfunction\n\"}}}\n\n\" Complete Labels {{{\nfunction! s:CompleteLabels(regex)\n\tlet labels = s:GetLabelCache(LatexBox_GetAuxFile())\n\n\tlet matches = filter( copy(labels), 'match(v:val[0], \"' . a:regex . '\") != -1' )\n\tif empty(matches)\n\t\t\" also try to match label and number\n\t\tlet regex_split = split(a:regex)\n\t\tif len(regex_split) > 1\n\t\t\tlet base = regex_split[0]\n\t\t\tlet number = escape(join(regex_split[1:], ' '), '.')\n\t\t\tlet matches = filter( copy(labels), 'match(v:val[0], \"' . base . '\") != -1 && match(v:val[1], \"' . number . '\") != -1' )\n\t\tendif\n\tendif\n\tif empty(matches)\n\t\t\" also try to match number\n\t\tlet matches = filter( copy(labels), 'match(v:val[1], \"' . a:regex . '\") != -1' )\n\tendif\n\n\tlet suggestions = []\n\tfor m in matches\n\t\tlet entry = {'word': m[0], 'menu': printf(\"%7s [p. %s]\", '('.m[1].')', m[2])}\n\t\tif g:LatexBox_completion_close_braces && !s:NextCharsMatch('^\\s*[,}]')\n\t\t\t\" add trailing '}'\n\t\t\tlet entry = copy(entry)\n\t\t\tlet entry.abbr = entry.word\n\t\t\tlet entry.word = entry.word . '}'\n\t\tendif\n\t\tcall add(suggestions, entry)\n\tendfor\n\n\treturn suggestions\nendfunction\n\" }}}\n\n\" Complete Inline Math Or Not {{{\n\" Return 1, when cursor is in a math env:\n\" \t1, there is a single $ in the current line on the left of cursor\n\" \t2, there is an open-eq-env on/above the current line\n\" \t\t(open-eq-env : \\(, \\[, and \\begin{eq-env} )\n\" Return 0, when cursor is not in a math env\nfunction! s:LatexBox_complete_inlineMath_or_not()\n\n\t\" switch of inline math completion feature\n\tif g:LatexBox_complete_inlineMath == 0\n\t\treturn 0\n\tendif\n\n    \" env names that can't appear in an eq env\n\tif !exists('s:LatexBox_doc_structure_patterns')\n\t\tlet s:LatexBox_doc_structure_patterns = '\\%(' .  '\\\\begin\\s*{document}\\|' .\n\t\t\t\t\t\\ '\\\\\\%(chapter\\|section\\|subsection\\|subsubsection\\)\\*\\?\\s*{' . '\\)'\n\tendif\n\n\tif !exists('s:LatexBox_eq_env_open_patterns')\n\t\tlet s:LatexBox_eq_env_open_patterns = ['\\\\(','\\\\\\[']\n\tendif\n\tif !exists('s:LatexBox_eq_env_close_patterns')\n\t\tlet s:LatexBox_eq_env_close_patterns = ['\\\\)','\\\\\\]']\n\tendif\n\n\tlet notcomment = '\\%(\\%(\\\\\\@<!\\%(\\\\\\\\\\)*\\)\\@<=%.*\\)\\@<!'\n\n\tlet lnum_saved = line('.')\n    let cnum_saved = col('.') -1\n\n    let line = getline('.')\n\tlet line_start_2_cnum_saved = line[:cnum_saved]\n\n\t\" determine whether there is a single $ before cursor\n\tlet cursor_dollar_pair = 0\n\twhile matchend(line_start_2_cnum_saved, '\\$[^$]\\+\\$', cursor_dollar_pair) >= 0\n\t\t\" find the end of dollar pair\n\t\tlet cursor_dollar_pair = matchend(line_start_2_cnum_saved, '\\$[^$]\\+\\$', cursor_dollar_pair)\n\tendwhile\n\t\" find single $ after cursor_dollar_pair\n\tlet cursor_single_dollar = matchend(line_start_2_cnum_saved, '\\$', cursor_dollar_pair)\n\n\t\" if single $ is found\n\tif cursor_single_dollar >= 0\n\t\t\" check whether $ is in \\(...\\), \\[...\\], or \\begin{eq}...\\end{eq}\n\n\t\t\" check current line,\n\t\t\" search for LatexBox_eq_env_close_patterns: \\[ and \\(\n\t\tlet lnum = line('.')\n\t\tfor i in range(0, (len(s:LatexBox_eq_env_open_patterns)-1))\n\t\t\tcall cursor(lnum_saved, cnum_saved)\n\t\t\tlet cnum_close = searchpos(''. s:LatexBox_eq_env_close_patterns[i].'', 'cbW', lnum_saved)[1]\n\t\t\tlet cnum_open = matchend(line_start_2_cnum_saved, s:LatexBox_eq_env_open_patterns[i], cnum_close)\n\t\t\tif cnum_open >= 0\n\t\t\t\tlet s:eq_dollar_parenthesis_bracket_empty = ''\n\t\t\t\tlet s:eq_pos = cursor_single_dollar - 1\n\t\t\t\treturn 1\n\t\t\tend\n\t\tendfor\n\n\t\t\" check the lines above\n\t\t\" search for s:LatexBox_doc_structure_patterns, and end-of-math-env\n\t\tlet lnum -= 1\n\t\twhile lnum > 0\n\t\t\tlet line = getline(lnum)\n\t\t\tif line =~ notcomment . '\\(' . s:LatexBox_doc_structure_patterns .\n\t\t\t\t\t\t\\ '\\|' . '\\\\end\\s*{\\(' . g:LatexBox_eq_env_patterns . '\\)\\*\\?}\\)'\n\t\t\t\t\" when s:LatexBox_doc_structure_patterns or g:LatexBox_eq_env_patterns\n\t\t\t\t\" are found first, complete math, leave with $ at both sides\n\t\t\t\tlet s:eq_dollar_parenthesis_bracket_empty = '$'\n\t\t\t\tlet s:eq_pos = cursor_single_dollar\n\t\t\t\tbreak\n\t\t\telseif line =~ notcomment . '\\\\begin\\s*{\\(' . g:LatexBox_eq_env_patterns . '\\)\\*\\?}'\n\t\t\t\t\" g:LatexBox_eq_env_patterns is found, complete math, remove $\n\t\t\t\tlet s:eq_dollar_parenthesis_bracket_empty = ''\n\t\t\t\tlet s:eq_pos = cursor_single_dollar - 1\n\t\t\t\tbreak\n\t\t\tendif\n\t\t\tlet lnum -= 1\n\t\tendwhile\n\n\t\treturn 1\n\telse\n\t\t\" no $ is found, then search for \\( or \\[ in current line\n\t\t\" 1, whether there is \\(\n\t\tcall cursor(lnum_saved, cnum_saved)\n\t\tlet cnum_parenthesis_close = searchpos('\\\\)', 'cbW', lnum_saved)[1]\n\t\tlet cnum_parenthesis_open = matchend(line_start_2_cnum_saved, '\\\\(', cnum_parenthesis_close)\n\t\tif cnum_parenthesis_open >= 0\n\t\t\tlet s:eq_dollar_parenthesis_bracket_empty = '\\)'\n\t\t\tlet s:eq_pos = cnum_parenthesis_open\n\t\t\treturn 1\n\t\tend\n\n\t\t\" 2, whether there is \\[\n\t\tcall cursor(lnum_saved, cnum_saved)\n\t\tlet cnum_bracket_close = searchpos('\\\\\\]', 'cbW', lnum_saved)[1]\n\t\tlet cnum_bracket_open = matchend(line_start_2_cnum_saved, '\\\\\\[', cnum_bracket_close)\n\t\tif cnum_bracket_open >= 0\n\t\t\tlet s:eq_dollar_parenthesis_bracket_empty = '\\]'\n\t\t\tlet s:eq_pos = cnum_bracket_open\n\t\t\treturn 1\n\t\tend\n\n\t\t\" not inline math completion\n\t\treturn 0\n\tendif\n\nendfunction\n\" }}}\n\n\" Complete inline euqation{{{\nfunction! s:LatexBox_inlineMath_completion(regex, ...)\n\n\tif a:0 == 0\n\t\tlet file = LatexBox_GetMainTexFile()\n\telse\n\t\tlet file = a:1\n\tendif\n\n\tif empty(glob(file, 1))\n\t\treturn ''\n\tendif\n\n\tif empty(s:eq_dollar_parenthesis_bracket_empty)\n\t\tlet inline_pattern1 = '\\$\\s*\\(' . escape(substitute(a:regex[1:], '^\\s\\+', '', \"\"), '\\.*^') . '[^$]*\\)\\s*\\$'\n\t\tlet inline_pattern2 = '\\\\(\\s*\\(' . escape(substitute(a:regex[1:], '^\\s\\+', '', \"\"), '\\.*^') . '.*\\)\\s*\\\\)'\n\telse\n\t\tlet inline_pattern1 = '\\$\\s*\\(' . escape(substitute(a:regex, '^\\s\\+', '', \"\"), '\\.*^') . '[^$]*\\)\\s*\\$'\n\t\tlet inline_pattern2 = '\\\\(\\s*\\(' . escape(substitute(a:regex, '^\\s\\+', '', \"\"), '\\.*^') . '.*\\)\\s*\\\\)'\n\tendif\n\n\n\tlet suggestions = []\n\tlet line_num = 0\n\tfor line in readfile(file)\n\t\tlet line_num = line_num + 1\n\n\t\tlet suggestions += s:LatexBox_inlineMath_mathlist(line,inline_pattern1 , line_num) +  s:LatexBox_inlineMath_mathlist( line,inline_pattern2, line_num)\n\n \t\t\" search for included files\n \t\tlet included_file = matchstr(line, '^\\\\@input{\\zs[^}]*\\ze}')\n \t\tif included_file != ''\n \t\t\tlet included_file = LatexBox_kpsewhich(included_file)\n \t\t\tcall extend(suggestions, s:LatexBox_inlineMath_completion(a:regex, included_file))\n \t\tendif\n \tendfor\n\n\treturn suggestions\nendfunction\n\" }}}\n\n\" Search for inline maths {{{\n\" search for $ ... $ and \\( ... \\) in each line\nfunction! s:LatexBox_inlineMath_mathlist(line,inline_pattern, line_num)\n\tlet col_start = 0\n\tlet suggestions = []\n\twhile 1\n\t\tlet matches = matchlist(a:line, a:inline_pattern, col_start)\n\t\tif !empty(matches)\n\n\t\t\t\" show line number of inline math\n\t\t\tlet entry = {'word': matches[1], 'menu': '[' . a:line_num . ']'}\n\n            if  s:eq_dollar_parenthesis_bracket_empty != ''\n                let entry = copy(entry)\n                let entry.abbr = entry.word\n                let entry.word = entry.word . s:eq_dollar_parenthesis_bracket_empty\n            endif\n\t\t\tcall add(suggestions, entry)\n\n\t\t\t\" update col_start\n\t\t\tlet col_start = matchend(a:line, a:inline_pattern, col_start)\n\t\telse\n\t\t\tbreak\n\t\tendif\n\tendwhile\n\n\treturn suggestions\nendfunction\n\" }}}\n\n\" Close Current Environment {{{\nfunction! s:CloseCurEnv()\n\t\" first, try with \\left/\\right pairs\n\tlet [lnum, cnum] = searchpairpos('\\C\\\\left\\>', '', '\\C\\\\right\\>', 'bnW', 'LatexBox_InComment()')\n\tif lnum\n\t\tlet line = strpart(getline(lnum), cnum - 1)\n\t\tlet bracket = matchstr(line, '^\\\\left\\zs\\((\\|\\[\\|\\\\{\\||\\|\\.\\)\\ze')\n\t\tfor [open, close] in [['(', ')'], ['\\[', '\\]'], ['\\\\{', '\\\\}'], ['|', '|'], ['\\.', '|']]\n\t\t\tlet bracket = substitute(bracket, open, close, 'g')\n\t\tendfor\n\t\treturn '\\right' . bracket\n\tendif\n\n\t\" second, try with environments\n\tlet env = LatexBox_GetCurrentEnvironment()\n\tif env == '\\['\n\t\treturn '\\]'\n\telseif env == '\\('\n\t\treturn '\\)'\n\telseif env != ''\n\t\treturn '\\end{' . env . '}'\n\tendif\n\treturn ''\nendfunction\n\" }}}\n\n\" Wrap Selection {{{\nfunction! s:WrapSelection(wrapper)\n\tkeepjumps normal! `>a}\n\texecute 'keepjumps normal! `<i\\' . a:wrapper . '{'\nendfunction\n\" }}}\n\n\" Wrap Selection in Environment with Prompt {{{\nfunction! s:PromptEnvWrapSelection(...)\n\tlet env = input('environment: ', '', 'customlist,' . s:SIDWrap('GetEnvironmentList'))\n\tif empty(env)\n\t\treturn\n\tendif\n\t\" LaTeXBox's custom indentation can interfere with environment\n\t\" insertion when environments are indented (common for nested\n\t\" environments).  Temporarily disable it for this operation:\n\tlet ieOld = &indentexpr\n\tsetlocal indentexpr=\"\"\n\tif visualmode() ==# 'V'\n\t\texecute 'keepjumps normal! `>o\\end{' . env . '}'\n\t\texecute 'keepjumps normal! `<O\\begin{' . env . '}'\n\t\t\" indent and format, if requested.\n\t\tif a:0 && a:1\n\t\t\tnormal! gv>\n\t\t\tnormal! gvgq\n\t\tendif\n\telse\n\t\texecute 'keepjumps normal! `>a\\end{' . env . '}'\n\t\texecute 'keepjumps normal! `<i\\begin{' . env . '}'\n\tendif\n\texe \"setlocal indentexpr=\" . ieOld\nendfunction\n\" }}}\n\n\" List Labels with Prompt {{{\nfunction! s:PromptLabelList(...)\n\t\" Check if window already exists\n\tlet winnr = bufwinnr(bufnr('LaTeX Labels'))\n\tif winnr >= 0\n\t\tif a:0 == 0\n\t\t\tsilent execute winnr . 'wincmd w'\n\t\telse\n\t\t\t\" Supplying an argument to this function causes toggling instead\n\t\t\t\" of jumping to the labels window\n\t\t\tif g:LatexBox_split_resize\n\t\t\t\tsilent exe \"set columns-=\" . g:LatexBox_split_width\n\t\t\tendif\n\t\t\tsilent execute 'bwipeout' . bufnr('LaTeX Labels')\n\t\tendif\n\t\treturn\n\tendif\n\n\t\" Get label suggestions\n\tlet regexp = input('filter labels with regexp: ', '')\n\tlet labels = s:CompleteLabels(regexp)\n\n\tlet calling_buf = bufnr('%')\n\n\t\" Create labels window and set local settings\n\tif g:LatexBox_split_resize\n\t\tsilent exe \"set columns+=\" . g:LatexBox_split_width\n\tendif\n\tsilent exe g:LatexBox_split_side g:LatexBox_split_width . 'vnew LaTeX\\ Labels'\n\tlet b:toc = []\n\tlet b:toc_numbers = 1\n\tlet b:calling_win = bufwinnr(calling_buf)\n\tsetlocal filetype=latextoc\n\n\t\" Add label entries and jump to the closest section\n\tfor entry in labels\n\t\tlet number = matchstr(entry['menu'], '^\\s*(\\zs[^)]\\+\\ze)')\n\t\tlet page = matchstr(entry['menu'], '^[^)]*)\\s*\\[\\zs[^]]\\+\\ze\\]')\n\t\tlet e = {'file': bufname(calling_buf),\n\t\t\t\t\t\\ 'level': 'label',\n\t\t\t\t\t\\ 'number': number,\n\t\t\t\t\t\\ 'text': entry['abbr'],\n\t\t\t\t\t\\ 'page': page}\n\t\tcall add(b:toc, e)\n\t\tif b:toc_numbers\n\t\t\tcall append('$', e['number'] . \"\\t\" . e['text'])\n\t\telse\n\t\t\tcall append('$', e['text'])\n\t\tendif\n\tendfor\n\tif !g:LatexBox_toc_hidehelp\n\t\tcall append('$', \"\")\n\t\tcall append('$', \"<Esc>/q: close\")\n\t\tcall append('$', \"<Space>: jump\")\n\t\tcall append('$', \"<Enter>: jump and close\")\n\t\tcall append('$', \"s:       hide numbering\")\n\tendif\n\t0delete _\n\n\t\" Lock buffer\n\tsetlocal nomodifiable\nendfunction\n\" }}}\n\n\" Change Environment {{{\nfunction! s:ChangeEnvPrompt()\n\n\tlet [env, lnum, cnum, lnum2, cnum2] = LatexBox_GetCurrentEnvironment(1)\n\n\tlet new_env = input('change ' . env . ' for: ', '', 'customlist,' . s:SIDWrap('GetEnvironmentList'))\n\tif empty(new_env)\n\t\treturn\n\tendif\n\n\tif new_env == '\\[' || new_env == '['\n\t\tlet begin = '\\['\n\t\tlet end = '\\]'\n\telseif new_env == '\\(' || new_env == '('\n\t\tlet begin = '\\('\n\t\tlet end = '\\)'\n\telse\n\t\tlet l:begin = '\\begin{' . new_env . '}'\n\t\tlet l:end = '\\end{' . new_env . '}'\n\tendif\n\n\tif env == '\\[' || env == '\\('\n\t\tlet line = getline(lnum2)\n\t\tlet line = strpart(line, 0, cnum2 - 1) . l:end . strpart(line, cnum2 + 1)\n\t\tcall setline(lnum2, line)\n\n\t\tlet line = getline(lnum)\n\t\tlet line = strpart(line, 0, cnum - 1) . l:begin . strpart(line, cnum + 1)\n\t\tcall setline(lnum, line)\n\telse\n\t\tlet line = getline(lnum2)\n\t\tlet line = strpart(line, 0, cnum2 - 1) . l:end . strpart(line, cnum2 + len(env) + 5)\n\t\tcall setline(lnum2, line)\n\n\t\tlet line = getline(lnum)\n\t\tlet line = strpart(line, 0, cnum - 1) . l:begin . strpart(line, cnum + len(env) + 7)\n\t\tcall setline(lnum, line)\n\tendif\nendfunction\n\nfunction! s:GetEnvironmentList(lead, cmdline, pos)\n\tlet suggestions = []\n\tfor entry in g:LatexBox_completion_environments\n\t\tlet env = entry.word\n\t\tif env =~ '^' . a:lead\n\t\t\tcall add(suggestions, env)\n\t\tendif\n\tendfor\n\treturn suggestions\nendfunction\n\nfunction! s:LatexToggleStarEnv()\n\tlet [env, lnum, cnum, lnum2, cnum2] = LatexBox_GetCurrentEnvironment(1)\n\n\tif env == '\\('\n\t\treturn\n\telseif env == '\\['\n\t\tlet begin = '\\begin{equation}'\n\t\tlet end = '\\end{equation}'\n\telseif env[-1:] == '*'\n\t\tlet begin = '\\begin{' . env[:-2] . '}'\n\t\tlet end   = '\\end{'   . env[:-2] . '}'\n\telse\n\t\tlet begin = '\\begin{' . env . '*}'\n\t\tlet end   = '\\end{'   . env . '*}'\n\tendif\n\n\tif env == '\\['\n\t\tlet line = getline(lnum2)\n\t\tlet line = strpart(line, 0, cnum2 - 1) . l:end . strpart(line, cnum2 + 1)\n\t\tcall setline(lnum2, line)\n\n\t\tlet line = getline(lnum)\n\t\tlet line = strpart(line, 0, cnum - 1) . l:begin . strpart(line, cnum + 1)\n\t\tcall setline(lnum, line)\n\telse\n\t\tlet line = getline(lnum2)\n\t\tlet line = strpart(line, 0, cnum2 - 1) . l:end . strpart(line, cnum2 + len(env) + 5)\n\t\tcall setline(lnum2, line)\n\n\t\tlet line = getline(lnum)\n\t\tlet line = strpart(line, 0, cnum - 1) . l:begin . strpart(line, cnum + len(env) + 7)\n\t\tcall setline(lnum, line)\n\tendif\nendfunction\n\" }}}\n\n\" Next Charaters Match {{{\nfunction! s:NextCharsMatch(regex)\n\tlet rest_of_line = strpart(getline('.'), col('.') - 1)\n\treturn rest_of_line =~ a:regex\nendfunction\n\" }}}\n\n\" Mappings {{{\ninoremap <silent> <Plug>LatexCloseCurEnv\t\t\t<C-R>=<SID>CloseCurEnv()<CR>\nvnoremap <silent> <Plug>LatexWrapSelection\t\t\t:<c-u>call <SID>WrapSelection('')<CR>i\nvnoremap <silent> <Plug>LatexEnvWrapSelection\t\t:<c-u>call <SID>PromptEnvWrapSelection()<CR>\nvnoremap <silent> <Plug>LatexEnvWrapFmtSelection\t:<c-u>call <SID>PromptEnvWrapSelection(1)<CR>\nnnoremap <silent> <Plug>LatexChangeEnv\t\t\t\t:call <SID>ChangeEnvPrompt()<CR>\nnnoremap <silent> <Plug>LatexToggleStarEnv\t\t\t:call <SID>LatexToggleStarEnv()<CR>\n\" }}}\n\n\" Commands {{{\ncommand! LatexLabels call <SID>PromptLabelList()\n\" }}}\n\n\" vim:fdm=marker:ff=unix:noet:ts=4:sw=4\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/latex-box/findmain.vim",
    "content": "\" Tex_GetMainFileName: gets the name of the main file being compiled. {{{\n\" Description:  returns the full path name of the main file.\n\"               This function checks for the existence of a .latexmain file\n\"               which might point to the location of a \"main\" latex file.\n\"               If .latexmain exists, then return the full path name of the\n\"               file being pointed to by it.\n\"\n\"               Otherwise, return the full path name of the current buffer.\n\"\n\"               You can supply an optional \"modifier\" argument to the\n\"               function, which will optionally modify the file name before\n\"               returning.\n\"               NOTE: From version 1.6 onwards, this function always trims\n\"               away the .latexmain part of the file name before applying the\n\"               modifier argument.\nfunction! Tex_GetMainFileName(...)\n\tif a:0 > 0\n\t\tlet modifier = a:1\n\telse\n\t\tlet modifier = ':p'\n\tendif\n\n\tlet s:origdir = fnameescape(getcwd())\n\n\tlet dirmodifier = '%:p:h'\n\tlet dirLast = fnameescape(expand(dirmodifier))\n\texe 'cd '.dirLast\n\n\t\" move up the directory tree until we find a .latexmain file.\n\t\" TODO: Should we be doing this recursion by default, or should there be a\n\t\"       setting?\n\twhile glob('*.latexmain') == ''\n\t\tlet dirmodifier = dirmodifier.':h'\n\t\tlet dirNew = fnameescape(expand(dirmodifier))\n\t\t\" break from the loop if we cannot go up any further.\n\t\tif dirNew == dirLast\n\t\t\tbreak\n\t\tendif\n\t\tlet dirLast = dirNew\n\t\texe 'cd '.dirLast\n\tendwhile\n\n\tlet lheadfile = glob('*.latexmain')\n\tif lheadfile != ''\n\t\t\" Remove the trailing .latexmain part of the filename... We never want\n\t\t\" that.\n\t\tlet lheadfile = fnamemodify(substitute(lheadfile, '\\.latexmain$', '', ''), modifier)\n\telse\n\t\t\" If we cannot find any main file, just modify the filename of the\n\t\t\" current buffer.\n\t\tlet lheadfile = expand('%'.modifier)\n\tendif\n\n    if lheadfile !~ '\\.tex$'\n        let lheadfile .= '.tex'\n    endif\n    exe 'cd '.s:origdir\n\n\t\" NOTE: The caller of this function needs to escape the file name with\n\t\"       fnameescape() . The reason its not done here is that escaping is not\n\t\"       safe if this file is to be used as part of an external command on\n\t\"       certain platforms.\n\treturn lheadfile\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/latex-box/folding.vim",
    "content": "\" Folding support for LaTeX\n\"\n\" Options\n\" g:LatexBox_Folding       - Turn on/off folding\n\" g:LatexBox_fold_preamble - Turn on/off folding of preamble\n\" g:LatexBox_fold_parts    - Define parts (eq. appendix, frontmatter) to fold\n\" g:LatexBox_fold_sections - Define section levels to fold\n\" g:LatexBox_fold_envs     - Turn on/off folding of environments\n\"\n\n\" {{{1 Set options\nif exists('g:LatexBox_Folding') && g:LatexBox_Folding == 1\n    setl foldmethod=expr\n    setl foldexpr=LatexBox_FoldLevel(v:lnum)\n    setl foldtext=LatexBox_FoldText()\n    \"\n    \" The foldexpr function returns \"=\" for most lines, which means it can become\n    \" slow for large files.  The following is a hack that is based on this reply to\n    \" a discussion on the Vim Developer list:\n    \" http://permalink.gmane.org/gmane.editors.vim.devel/14100\n    \"\n    augroup FastFold\n        autocmd!\n        autocmd InsertEnter *.tex setlocal foldmethod=manual\n        autocmd InsertLeave *.tex setlocal foldmethod=expr\n    augroup end\nendif\nif !exists('g:LatexBox_fold_preamble')\n    let g:LatexBox_fold_preamble=1\nendif\nif !exists('g:LatexBox_fold_envs')\n    let g:LatexBox_fold_envs=1\nendif\nif !exists('g:LatexBox_fold_envs_force')\n    let g:LatexBox_fold_envs_force = []\nendif\nif !exists('g:LatexBox_fold_parts')\n    let g:LatexBox_fold_parts=[\n                \\ \"appendix\",\n                \\ \"frontmatter\",\n                \\ \"mainmatter\",\n                \\ \"backmatter\"\n                \\ ]\nendif\nif !exists('g:LatexBox_fold_sections')\n    let g:LatexBox_fold_sections=[\n                \\ \"part\",\n                \\ \"chapter\",\n                \\ \"section\",\n                \\ \"subsection\",\n                \\ \"subsubsection\"\n                \\ ]\nendif\nif !exists('g:LatexBox_fold_toc')\n    let g:LatexBox_fold_toc=0\nendif\nif !exists('g:LatexBox_fold_toc_levels')\n    let g:LatexBox_fold_toc_levels=1\nendif\n\n\n\" {{{1 LatexBox_FoldLevel help functions\n\n\" This function parses the tex file to find the sections that are to be folded\n\" and their levels, and then predefines the patterns for optimized folding.\nfunction! s:FoldSectionLevels()\n    \" Initialize\n    let level = 1\n    let foldsections = []\n\n    \" If we use two or more of the *matter commands, we need one more foldlevel\n    let nparts = 0\n    for part in g:LatexBox_fold_parts\n        let i = 1\n        while i < line(\"$\")\n            if getline(i) =~ '^\\s*\\\\' . part . '\\>'\n                let nparts += 1\n                break\n            endif\n            let i += 1\n        endwhile\n        if nparts > 1\n            let level = 2\n            break\n        endif\n    endfor\n\n    \" Combine sections and levels, but ignore unused section commands:  If we\n    \" don't use the part command, then chapter should have the highest\n    \" level.  If we don't use the chapter command, then section should be the\n    \" highest level.  And so on.\n    let ignore = 1\n    for part in g:LatexBox_fold_sections\n        \" For each part, check if it is used in the file.  We start adding the\n        \" part patterns to the fold sections array whenever we find one.\n        let partpattern = '^\\s*\\(\\\\\\|% Fake\\)' . part . '\\>'\n        if ignore\n            let i = 1\n            while i < line(\"$\")\n                if getline(i) =~# partpattern\n                    call insert(foldsections, [partpattern, level])\n                    let level += 1\n                    let ignore = 0\n                    break\n                endif\n                let i += 1\n            endwhile\n        else\n            call insert(foldsections, [partpattern, level])\n            let level += 1\n        endif\n    endfor\n\n    return foldsections\nendfunction\n\n\" {{{1 LatexBox_FoldLevel\n\n\" Parse file to dynamically set the sectioning fold levels\nlet b:LatexBox_FoldSections = s:FoldSectionLevels()\n\n\" Optimize by predefine common patterns\nlet s:notbslash = '\\%(\\\\\\@<!\\%(\\\\\\\\\\)*\\)\\@<='\nlet s:notcomment = '\\%(\\%(\\\\\\@<!\\%(\\\\\\\\\\)*\\)\\@<=%.*\\)\\@<!'\nlet s:envbeginpattern = s:notcomment . s:notbslash . '\\\\begin\\s*{.\\{-}}'\nlet s:envendpattern = s:notcomment . s:notbslash . '\\\\end\\s*{.\\{-}}'\nlet s:foldparts = '^\\s*\\\\\\%(' . join(g:LatexBox_fold_parts, '\\|') . '\\)'\nlet s:folded = '\\(% Fake\\|\\\\\\(document\\|begin\\|end\\|'\n            \\ . 'front\\|main\\|back\\|app\\|sub\\|section\\|chapter\\|part\\)\\)'\n\nfunction! LatexBox_FoldLevel(lnum)\n    \" Check for normal lines first (optimization)\n    let line  = getline(a:lnum)\n    if line !~ s:folded\n        return \"=\"\n    endif\n\n    \" Fold preamble\n    if g:LatexBox_fold_preamble == 1\n        if line =~# '\\s*\\\\documentclass'\n            return \">1\"\n        elseif line =~# '^\\s*\\\\begin\\s*{\\s*document\\s*}'\n            return \"0\"\n        endif\n    endif\n\n    \" Fold parts (\\frontmatter, \\mainmatter, \\backmatter, and \\appendix)\n    if line =~# s:foldparts\n        return \">1\"\n    endif\n\n    \" Fold chapters and sections\n    for [part, level] in b:LatexBox_FoldSections\n        if line =~# part\n            return \">\" . level\n        endif\n    endfor\n\n    \" Never fold \\end{document}\n    if line =~# '^\\s*\\\\end{document}'\n        return 0\n    endif\n\n    \" Fold environments\n    if line =~# s:envbeginpattern\n        if g:LatexBox_fold_envs == 1\n            return \"a1\"\n        else\n            let env = matchstr(line,'\\\\begin\\*\\?{\\zs\\w*\\*\\?\\ze}')\n            if index(g:LatexBox_fold_envs_force, env) >= 0\n                return \"a1\"\n            else\n                return \"=\"\n            endif\n        endif\n    elseif line =~# s:envendpattern\n        if g:LatexBox_fold_envs == 1\n            return \"s1\"\n        else\n            let env = matchstr(line,'\\\\end\\*\\?{\\zs\\w*\\*\\?\\ze}')\n            if index(g:LatexBox_fold_envs_force, env) >= 0\n                return \"s1\"\n            else\n                return \"=\"\n            endif\n        endif\n    endif\n\n    \" Return foldlevel of previous line\n    return \"=\"\nendfunction\n\n\" {{{1 LatexBox_FoldText help functions\nfunction! s:LabelEnv()\n    let i = v:foldend\n    while i >= v:foldstart\n        if getline(i) =~ '^\\s*\\\\label'\n            return matchstr(getline(i), '^\\s*\\\\label{\\zs.*\\ze}')\n        end\n        let i -= 1\n    endwhile\n    return \"\"\nendfunction\n\nfunction! s:CaptionEnv()\n    let i = v:foldend\n    while i >= v:foldstart\n        if getline(i) =~ '^\\s*\\\\caption'\n            return matchstr(getline(i), '^\\s*\\\\caption\\(\\[.*\\]\\)\\?{\\zs.\\+')\n        end\n        let i -= 1\n    endwhile\n    return \"\"\nendfunction\n\nfunction! s:CaptionTable()\n    let i = v:foldstart\n    while i <= v:foldend\n        if getline(i) =~ '^\\s*\\\\caption'\n            return matchstr(getline(i), '^\\s*\\\\caption\\(\\[.*\\]\\)\\?{\\zs.\\+')\n        end\n        let i += 1\n    endwhile\n    return \"\"\nendfunction\n\nfunction! s:CaptionFrame(line)\n    \" Test simple variants first\n    let caption1 = matchstr(a:line,'\\\\begin\\*\\?{.*}{\\zs.\\+\\ze}')\n    let caption2 = matchstr(a:line,'\\\\begin\\*\\?{.*}{\\zs.\\+')\n\n    if len(caption1) > 0\n        return caption1\n    elseif len(caption2) > 0\n        return caption2\n    else\n        let i = v:foldstart\n        while i <= v:foldend\n            if getline(i) =~ '^\\s*\\\\frametitle'\n                return matchstr(getline(i),\n                            \\ '^\\s*\\\\frametitle\\(\\[.*\\]\\)\\?{\\zs.\\+')\n            end\n            let i += 1\n        endwhile\n\n        return \"\"\n    endif\nendfunction\n\n\" {{{1 LatexBox_FoldText\nfunction! LatexBox_FoldText()\n    \" Initialize\n    let line = getline(v:foldstart)\n    let nlines = v:foldend - v:foldstart + 1\n    let level = ''\n    let title = 'Not defined'\n\n    \" Fold level\n    let level = strpart(repeat('-', v:foldlevel-1) . '*',0,3)\n    if v:foldlevel > 3\n        let level = strpart(level, 1) . v:foldlevel\n    endif\n    let level = printf('%-3s', level)\n\n    \" Preamble\n    if line =~ '\\s*\\\\documentclass'\n        let title = \"Preamble\"\n    endif\n\n    \" Parts, sections and fakesections\n    let sections = '\\(\\(sub\\)*section\\|part\\|chapter\\)'\n    let secpat1 = '^\\s*\\\\' . sections . '\\*\\?\\s*{'\n    let secpat2 = '^\\s*\\\\' . sections . '\\*\\?\\s*\\['\n    if line =~ '\\\\frontmatter'\n        let title = \"Frontmatter\"\n    elseif line =~ '\\\\mainmatter'\n        let title = \"Mainmatter\"\n    elseif line =~ '\\\\backmatter'\n        let title = \"Backmatter\"\n    elseif line =~ '\\\\appendix'\n        let title = \"Appendix\"\n    elseif line =~ secpat1 . '.*}'\n        let title =  matchstr(line, secpat1 . '\\zs.*\\ze}')\n    elseif line =~ secpat1\n        let title =  matchstr(line, secpat1 . '\\zs.*')\n    elseif line =~ secpat2 . '.*\\]'\n        let title =  matchstr(line, secpat2 . '\\zs.*\\ze\\]')\n    elseif line =~ secpat2\n        let title =  matchstr(line, secpat2 . '\\zs.*')\n    elseif line =~ 'Fake' . sections . ':'\n        let title =  matchstr(line,'Fake' . sections . ':\\s*\\zs.*')\n    elseif line =~ 'Fake' . sections\n        let title =  matchstr(line, 'Fake' . sections)\n    endif\n\n    \" Environments\n    if line =~ '\\\\begin'\n        \" Capture environment name\n        let env = matchstr(line,'\\\\begin\\*\\?{\\zs\\w*\\*\\?\\ze}')\n\n        \" Set caption based on type of environment\n        if env == 'frame'\n            let label = ''\n            let caption = s:CaptionFrame(line)\n        elseif env == 'table'\n            let label = s:LabelEnv()\n            let caption = s:CaptionTable()\n        else\n            let label = s:LabelEnv()\n            let caption = s:CaptionEnv()\n        endif\n\n        \" If no caption found, check for a caption comment\n        if caption == ''\n            let caption = matchstr(line,'\\\\begin\\*\\?{.*}\\s*%\\s*\\zs.*')\n        endif\n\n        \" Create title based on caption and label\n        if caption . label == ''\n            let title = env\n        elseif label == ''\n            let title = printf('%-12s%s', env . ':',\n                        \\ substitute(caption, '}\\s*$', '',''))\n        elseif caption == ''\n            let title = printf('%-12s%56s', env, '(' . label . ')')\n        else\n            let title = printf('%-12s%-30s %21s', env . ':',\n                        \\ strpart(substitute(caption, '}\\s*$', '',''),0,34),\n                        \\ '(' . label . ')')\n        endif\n    endif\n\n    let title = strpart(title, 0, 68)\n    return printf('%-3s %-68s #%5d', level, title, nlines)\nendfunction\n\n\" {{{1 Footer\n\" vim:fdm=marker:ff=unix:ts=4:sw=4\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/latex-box/latexmk.vim",
    "content": "\" LaTeX Box latexmk functions\n\n\" Options and variables {{{\n\nif !exists('g:LatexBox_latexmk_options')\n\tlet g:LatexBox_latexmk_options = ''\nendif\nif !exists('g:LatexBox_latexmk_env')\n\tlet g:LatexBox_latexmk_env = ''\nendif\nif !exists('g:LatexBox_latexmk_async')\n\tlet g:LatexBox_latexmk_async = 0\nendif\nif !exists('g:LatexBox_latexmk_preview_continuously')\n\tlet g:LatexBox_latexmk_preview_continuously = 0\nendif\nif !exists('g:LatexBox_output_type')\n\tlet g:LatexBox_output_type = 'pdf'\nendif\nif !exists('g:LatexBox_autojump')\n\tlet g:LatexBox_autojump = 0\nendif\nif ! exists('g:LatexBox_quickfix')\n\tlet g:LatexBox_quickfix = 1\nendif\n\n\" }}}\n\n\" Process ID management (used for asynchronous and continuous mode) {{{\n\n\" A dictionary of latexmk PID's (basename: pid)\nif !exists('g:latexmk_running_pids')\n\tlet g:latexmk_running_pids = {}\nendif\n\n\" Set PID {{{\nfunction! s:LatexmkSetPID(basename, pid)\n\tlet g:latexmk_running_pids[a:basename] = a:pid\nendfunction\n\" }}}\n\n\" kill_latexmk_process {{{\nfunction! s:kill_latexmk_process(pid)\n\tif has('win32')\n\t\tsilent execute '!taskkill /PID ' . a:pid . ' /T /F'\n\telse\n\t\tif g:LatexBox_latexmk_async\n\t\t\t\" vim-server mode\n\t\t\tlet pids = []\n\t\t\tlet tmpfile = tempname()\n\t\t\tsilent execute '!ps x -o pgid,pid > ' . tmpfile\n\t\t\tfor line in readfile(tmpfile)\n\t\t\t\tlet new_pid = matchstr(line, '^\\s*' . a:pid . '\\s\\+\\zs\\d\\+\\ze')\n\t\t\t\tif !empty(new_pid)\n\t\t\t\t\tcall add(pids, new_pid)\n\t\t\t\tendif\n\t\t\tendfor\n\t\t\tcall delete(tmpfile)\n\t\t\tif !empty(pids)\n\t\t\t\tsilent execute '!kill ' . join(pids)\n\t\t\tendif\n\t\telse\n\t\t\t\" single background process\n\t\t\tsilent execute '!kill ' . a:pid\n\t\tendif\n\tendif\n\tif !has('gui_running')\n\t\tredraw!\n\tendif\nendfunction\n\" }}}\n\n\" kill_all_latexmk_processes {{{\nfunction! s:kill_all_latexmk_processes()\n\tfor pid in values(g:latexmk_running_pids)\n\t\tcall s:kill_latexmk_process(pid)\n\tendfor\nendfunction\n\" }}}\n\n\" }}}\n\n\" Setup for vim-server {{{\nfunction! s:SIDWrap(func)\n\tif !exists('s:SID')\n\t\tlet s:SID = matchstr(expand('<sfile>'), '\\zs<SNR>\\d\\+_\\ze.*$')\n\tendif\n\treturn s:SID . a:func\nendfunction\n\nfunction! s:LatexmkCallback(basename, status)\n\t\" Only remove the pid if not in continuous mode\n\tif !g:LatexBox_latexmk_preview_continuously\n\t\tcall remove(g:latexmk_running_pids, a:basename)\n\tendif\n\tcall LatexBox_LatexErrors(a:status, a:basename)\nendfunction\n\nfunction! s:setup_vim_server()\n\tif !exists('g:vim_program')\n\n\t\t\" attempt autodetection of vim executable\n\t\tlet g:vim_program = ''\n\t\tif has('win32')\n\t\t\t\" Just drop through to the default for windows\n\t\telse\n\t\t\tif match(&shell, '\\(bash\\|zsh\\)$') >= 0\n\t\t\t\tlet ppid = '$PPID'\n\t\t\telse\n\t\t\t\tlet ppid = '$$'\n\t\t\tendif\n\n\t\t\tlet tmpfile = tempname()\n\t\t\tsilent execute '!ps -o command= -p ' . ppid . ' > ' . tmpfile\n\t\t\tfor line in readfile(tmpfile)\n\t\t\t\tlet line = matchstr(line, '^\\S\\+\\>')\n\t\t\t\tif !empty(line) && executable(line)\n\t\t\t\t\tlet g:vim_program = line . ' -g'\n\t\t\t\t\tbreak\n\t\t\t\tendif\n\t\t\tendfor\n\t\t\tcall delete(tmpfile)\n\t\tendif\n\n\t\tif empty(g:vim_program)\n\t\t\tif has('gui_macvim')\n\t\t\t\tlet g:vim_program\n\t\t\t\t\t\t\\ = '/Applications/MacVim.app/Contents/MacOS/Vim -g'\n\t\t\telse\n\t\t\t\tlet g:vim_program = v:progname\n\t\t\tendif\n\t\tendif\n\tendif\nendfunction\n\" }}}\n\n\" Latexmk {{{\n\nfunction! LatexBox_Latexmk(force)\n\t\" Define often used names\n\tlet basepath = LatexBox_GetTexBasename(1)\n\tlet basename = fnamemodify(basepath, ':t')\n\tlet texroot = shellescape(LatexBox_GetTexRoot())\n\tlet mainfile = fnameescape(fnamemodify(LatexBox_GetMainTexFile(), ':t'))\n\n\t\" Check if latexmk is installed\n\tif !executable('latexmk')\n\t\techomsg \"Error: LaTeX-Box relies on latexmk for compilation, but it\" .\n\t\t\t\t\t\\ \" is not installed!\"\n\t\treturn\n\tendif\n\n\t\" Check if already running\n\tif has_key(g:latexmk_running_pids, basepath)\n\t\techomsg \"latexmk is already running for `\" . basename . \"'\"\n\t\treturn\n\tendif\n\n\t\" Set wrap width in log file\n\tlet max_print_line = 2000\n\tif has('win32')\n\t\tlet env = 'set max_print_line=' . max_print_line . ' & '\n\telseif match(&shell, '/tcsh$') >= 0\n\t\tlet env = 'setenv max_print_line ' . max_print_line . '; '\n\telse\n\t\tlet env = 'max_print_line=' . max_print_line\n\tendif\n\n\t\" Set environment options\n\tlet env .= ' ' . g:LatexBox_latexmk_env . ' '\n\n\t\" Set latexmk command with options\n\tif has('win32')\n\t\t\" Make sure to switch drive as well as directory\n\t\tlet cmd = 'cd /D ' . texroot . ' && '\n\telse\n\t\tlet cmd = 'cd ' . texroot . ' && '\n\tendif\n\tlet cmd .= env . ' latexmk'\n\tlet cmd .= ' -' . g:LatexBox_output_type\n\tlet cmd .= ' -quiet '\n\tlet cmd .= g:LatexBox_latexmk_options\n\tif a:force\n\t\tlet cmd .= ' -g'\n\tendif\n\tif g:LatexBox_latexmk_preview_continuously\n\t\tlet cmd .= ' -pvc'\n\tendif\n\tlet cmd .= ' -e ' . shellescape('$pdflatex =~ s/ / -file-line-error /')\n\tlet cmd .= ' -e ' . shellescape('$latex =~ s/ / -file-line-error /')\n\tif g:LatexBox_latexmk_preview_continuously\n\t\tlet cmd .= ' -e ' . shellescape('$success_cmd = $ENV{SUCCESSCMD}')\n\t\tlet cmd .= ' -e ' . shellescape('$failure_cmd = $ENV{FAILURECMD}')\n\tendif\n\tlet cmd .= ' ' . mainfile\n\n\t\" Redirect output to null\n\tif has('win32')\n\t\tlet cmd .= ' >nul'\n\telse\n\t\tlet cmd .= ' &>/dev/null'\n\tendif\n\n\tif g:LatexBox_latexmk_async\n\t\t\" Check if VIM server exists\n\t\tif empty(v:servername)\n\t\t\techoerr \"cannot run latexmk in background without a VIM server\"\n\t\t\techoerr \"set g:LatexBox_latexmk_async to 0 to change compiling mode\"\n\t\t\treturn\n\t\tendif\n\n\t\t\" Start vim server if necessary\n\t\tcall s:setup_vim_server()\n\n\t\tlet setpidfunc = s:SIDWrap('LatexmkSetPID')\n\t\tlet callbackfunc = s:SIDWrap('LatexmkCallback')\n\t\tif has('win32')\n\t\t\tlet vim_program = substitute(g:vim_program,\n\t\t\t\t\t\t\\ 'gvim\\.exe$', 'vim.exe', '')\n\n\t\t\t\" Define callback to set the pid\n\t\t\tlet callsetpid = setpidfunc . '(''' . basepath . ''', %CMDPID%)'\n\t\t\tlet vimsetpid = vim_program . ' --servername ' . v:servername\n\t\t\t\t\t\t\\ . ' --remote-expr ' . shellescape(callsetpid)\n\n\t\t\t\" Define callback after latexmk is finished\n\t\t\tlet callback = callbackfunc . '(''' . basepath . ''', %LATEXERR%)'\n\t\t\tlet vimcmd = vim_program . ' --servername ' . v:servername\n\t\t\t\t\t\t\\ . ' --remote-expr ' . shellescape(callback)\n\t\t\tlet scallback = callbackfunc . '(''' . basepath . ''', 0)'\n\t\t\tlet svimcmd = vim_program . ' --servername ' . v:servername\n\t\t\t\t\t\t\\ . ' --remote-expr ' . shellescape(scallback)\n\t\t\tlet fcallback = callbackfunc . '(''' . basepath . ''', 1)'\n\t\t\tlet fvimcmd = vim_program . ' --servername ' . v:servername\n\t\t\t\t\t\t\\ . ' --remote-expr ' . shellescape(fcallback)\n\n\t\t\tlet asyncbat = tempname() . '.bat'\n\t\t\tif g:LatexBox_latexmk_preview_continuously\n\t\t\t\tcall writefile(['setlocal',\n\t\t\t\t\t\t\t\\ 'set T=%TEMP%\\sthUnique.tmp',\n\t\t\t\t\t\t\t\\ 'wmic process where (Name=\"WMIC.exe\" AND CommandLine LIKE \"%%%TIME%%%\") '\n\t\t\t\t\t\t\t\\ . 'get ParentProcessId /value | find \"ParentProcessId\" >%T%',\n\t\t\t\t\t\t\t\\ 'set /P A=<%T%',\n\t\t\t\t\t\t\t\\ 'set CMDPID=%A:~16% & del %T%',\n\t\t\t\t\t\t\t\\ vimsetpid,\n\t\t\t\t\t\t\t\\ 'set SUCCESSCMD='.svimcmd,\n\t\t\t\t\t\t\t\\ 'set FAILURECMD='.fvimcmd,\n\t\t\t\t\t\t\t\\ cmd,\n\t\t\t\t\t\t\t\\ 'endlocal'], asyncbat)\n\t\t\telse\n\t\t\t\tcall writefile(['setlocal',\n\t\t\t\t\t\t\t\\ 'set T=%TEMP%\\sthUnique.tmp',\n\t\t\t\t\t\t\t\\ 'wmic process where (Name=\"WMIC.exe\" AND CommandLine LIKE \"%%%TIME%%%\") '\n\t\t\t\t\t\t\t\\ . 'get ParentProcessId /value | find \"ParentProcessId\" >%T%',\n\t\t\t\t\t\t\t\\ 'set /P A=<%T%',\n\t\t\t\t\t\t\t\\ 'set CMDPID=%A:~16% & del %T%',\n\t\t\t\t\t\t\t\\ vimsetpid,\n\t\t\t\t\t\t\t\\ cmd,\n\t\t\t\t\t\t\t\\ 'set LATEXERR=%ERRORLEVEL%',\n\t\t\t\t\t\t\t\\ vimcmd,\n\t\t\t\t\t\t\t\\ 'endlocal'], asyncbat)\n\t\t\tendif\n\n\t\t\t\" Define command\n\t\t\tlet cmd = '!start /b ' . asyncbat . ' & del ' . asyncbat\n\t\telse\n\t\t\t\" Define callback to set the pid\n\t\t\tlet callsetpid = shellescape(setpidfunc).'\"(\\\"'.basepath.'\\\",$$)\"'\n\t\t\tlet vimsetpid = g:vim_program . ' --servername ' . v:servername\n\t\t\t                        \\ . ' --remote-expr ' . callsetpid\n\n\t\t\t\" Define callback after latexmk is finished\n\t\t\tlet callback = shellescape(callbackfunc).'\"(\\\"'.basepath.'\\\",$?)\"'\n\t\t\tlet vimcmd = g:vim_program . ' --servername ' . v:servername\n\t\t\t\t\t\t\t\t\t\\ . ' --remote-expr ' . callback\n\t\t\tlet scallback = shellescape(callbackfunc).'\"(\\\"'.basepath.'\\\",0)\"'\n\t\t\tlet svimcmd = g:vim_program . ' --servername ' . v:servername\n\t\t\t                        \\ . ' --remote-expr ' . scallback\n\t\t\tlet fcallback = shellescape(callbackfunc).'\"(\\\"'.basepath.'\\\",1)\"'\n\t\t\tlet fvimcmd = g:vim_program . ' --servername ' . v:servername\n\t\t\t                        \\ . ' --remote-expr ' . fcallback\n\n\t\t\t\" Define command\n\t\t\t\" Note: Here we escape '%' because it may be given as a user option\n\t\t\t\" through g:LatexBox_latexmk_options, for instance with\n\t\t\t\" g:Latex..._options = \"-pdflatex='pdflatex -synctex=1 \\%O \\%S'\"\n\t\t\tif g:LatexBox_latexmk_preview_continuously\n\t\t\t\tlet cmd = vimsetpid . ' ; '\n\t\t\t\t\t\t\\ . 'export SUCCESSCMD=' . shellescape(svimcmd) . ' '\n\t\t\t\t\t\t\\ . '       FAILURECMD=' . shellescape(fvimcmd) . ' ; '\n\t\t\t\t\t\t\\ . escape(cmd, '%')\n\t\t\telse\n\t\t\t\tlet cmd = vimsetpid . ' ; ' . escape(cmd, '%') . ' ; ' . vimcmd\n\t\t\tendif\n\t\t\tlet cmd = '! (' . cmd . ') >/dev/null &'\n\t\tendif\n\n\t\tif g:LatexBox_latexmk_preview_continuously\n\t\t\techo 'Compiling to ' . g:LatexBox_output_type\n\t\t\t\t\t\t\\ . ' with continuous preview.'\n\t\telse\n\t\t\techo 'Compiling to ' . g:LatexBox_output_type . ' ...'\n\t\tendif\n\t\tsilent execute cmd\n\telse\n\t\tif g:LatexBox_latexmk_preview_continuously\n\t\t\tif has('win32')\n\t\t\t\tlet cmd = '!start /b cmd /s /c \"' . cmd . '\"'\n\t\t\telse\n\t\t\t\tlet cmd = '!' . cmd . ' &'\n\t\t\tendif\n\t\t\techo 'Compiling to ' . g:LatexBox_output_type . ' ...'\n\t\t\tsilent execute cmd\n\n\t\t\t\" Save PID in order to be able to kill the process when wanted.\n\t\t\tif has('win32')\n\t\t\t\tlet tmpfile = tempname()\n\t\t\t\tlet pidcmd = 'cmd /c \"wmic process where '\n\t\t\t\t\t\t\t\\ . '(CommandLine LIKE \"latexmk\\%'.mainfile.'\\%\") '\n\t\t\t\t\t\t\t\\ . 'get ProcessId /value | find \"ProcessId\" '\n\t\t\t\t\t\t\t\\ . '>'.tmpfile.' \"'\n\t\t\t\tsilent execute '! ' . pidcmd\n\t\t\t\tlet pids = readfile(tmpfile)\n\t\t\t\tlet pid = strpart(pids[0], 10)\n\t\t\t\tlet g:latexmk_running_pids[basepath] = pid\n\t\t\telse\n\t\t\t\tlet pid = substitute(system('pgrep -f \"perl.*'\n\t\t\t\t\t\t\t\\ . mainfile . '\" | head -n 1'),'\\D','','')\n\t\t\t\tlet g:latexmk_running_pids[basepath] = pid\n\t\t\tendif\n\t\telse\n\t\t\t\" Execute command and check for errors\n\t\t\techo 'Compiling to ' . g:LatexBox_output_type . ' ... (async off!)'\n\t\t\tcall system(cmd)\n\t\t\tcall LatexBox_LatexErrors(v:shell_error)\n\t\tendif\n\tendif\n\n\t\" Redraw screen if necessary\n\tif !has(\"gui_running\")\n\t\tredraw!\n\tendif\nendfunction\n\" }}}\n\n\" LatexmkClean {{{\nfunction! LatexBox_LatexmkClean(cleanall)\n\t\" Check if latexmk is installed\n\tif !executable('latexmk')\n\t\techomsg \"Error: LaTeX-Box relies on latexmk for compilation, but it\" .\n\t\t\t\t\t\\ \" is not installed!\"\n\t\treturn\n\tendif\n\n\tlet basename = LatexBox_GetTexBasename(1)\n\n\tif has_key(g:latexmk_running_pids, basename)\n\t\techomsg \"don't clean when latexmk is running\"\n\t\treturn\n\tendif\n\n\tif has('win32')\n\t\tlet cmd = 'cd /D ' . shellescape(LatexBox_GetTexRoot()) . ' & '\n\telse\n\t\tlet cmd = 'cd ' . shellescape(LatexBox_GetTexRoot()) . ';'\n\tendif\n\tif a:cleanall\n\t\tlet cmd .= 'latexmk -C '\n\telse\n\t\tlet cmd .= 'latexmk -c '\n\tendif\n\tlet cmd .= shellescape(LatexBox_GetMainTexFile())\n\tif has('win32')\n\t\tlet cmd .= ' >nul'\n\telse\n\t\tlet cmd .= ' >&/dev/null'\n\tendif\n\n\tcall system(cmd)\n\tif !has('gui_running')\n\t\tredraw!\n\tendif\n\n\techomsg \"latexmk clean finished\"\nendfunction\n\" }}}\n\n\" LatexErrors {{{\nfunction! LatexBox_LatexErrors(status, ...)\n\tif a:0 >= 1\n\t\tlet log = a:1 . '.log'\n\telse\n\t\tlet log = LatexBox_GetLogFile()\n\tendif\n\n\tcclose\n\n\t\" set cwd to expand error file correctly\n\tlet l:cwd = fnamemodify(getcwd(), ':p')\n\texecute 'lcd ' . fnameescape(LatexBox_GetTexRoot())\n\ttry\n\t\tif g:LatexBox_autojump\n\t\t\texecute 'cfile ' . fnameescape(log)\n\t\telse\n\t\t\texecute 'cgetfile ' . fnameescape(log)\n\t\tendif\n\tfinally\n\t\t\" restore cwd\n\t\texecute 'lcd ' . fnameescape(l:cwd)\n\tendtry\n\n\t\" Always open window if started by LatexErrors command\n\tif a:status < 0\n\t\tbotright copen\n\telse\n\t\t\" Write status message to screen\n\t\tredraw\n\t\tif a:status > 0 || len(getqflist())>1\n\t\t\techomsg 'Compiling to ' . g:LatexBox_output_type . ' ... failed!'\n\t\telse\n\t\t\techomsg 'Compiling to ' . g:LatexBox_output_type . ' ... success!'\n\t\tendif\n\n\t\t\" Only open window when an error/warning is detected\n\t\tif g:LatexBox_quickfix\n\t\t\tbelowright cw\n\t\t\tif g:LatexBox_quickfix==2\n\t\t\t\twincmd p\n\t\t\tendif\n\t\tendif\n\tendif\nendfunction\n\" }}}\n\n\" LatexmkStatus {{{\nfunction! LatexBox_LatexmkStatus(detailed)\n\tif a:detailed\n\t\tif empty(g:latexmk_running_pids)\n\t\t\techo \"latexmk is not running\"\n\t\telse\n\t\t\tlet plist = \"\"\n\t\t\tfor [basename, pid] in items(g:latexmk_running_pids)\n\t\t\t\tif !empty(plist)\n\t\t\t\t\tlet plist .= '; '\n\t\t\t\tendif\n\t\t\t\tlet plist .= fnamemodify(basename, ':t') . ':' . pid\n\t\t\tendfor\n\t\t\techo \"latexmk is running (\" . plist . \")\"\n\t\tendif\n\telse\n\t\tlet basename = LatexBox_GetTexBasename(1)\n\t\tif has_key(g:latexmk_running_pids, basename)\n\t\t\techo \"latexmk is running\"\n\t\telse\n\t\t\techo \"latexmk is not running\"\n\t\tendif\n\tendif\nendfunction\n\" }}}\n\n\" LatexmkStop {{{\nfunction! LatexBox_LatexmkStop(silent)\n\tif empty(g:latexmk_running_pids)\n\t\tif !a:silent\n\t\t\tlet basepath = LatexBox_GetTexBasename(1)\n\t\t\tlet basename = fnamemodify(basepath, ':t')\n\t\t\techoerr \"latexmk is not running for `\" . basename . \"'\"\n\t\tendif\n\telse\n\t\tlet basepath = LatexBox_GetTexBasename(1)\n\t\tlet basename = fnamemodify(basepath, ':t')\n\t\tif has_key(g:latexmk_running_pids, basepath)\n\t\t\tcall s:kill_latexmk_process(g:latexmk_running_pids[basepath])\n\t\t\tcall remove(g:latexmk_running_pids, basepath)\n\t\t\tif !a:silent\n\t\t\t\techomsg \"latexmk stopped for `\" . basename . \"'\"\n\t\t\tendif\n\t\telseif !a:silent\n\t\t\techoerr \"latexmk is not running for `\" . basename . \"'\"\n\t\tendif\n\tendif\nendfunction\n\" }}}\n\n\" Commands {{{\n\ncommand! -bang\tLatexmk\t\t\tcall LatexBox_Latexmk(<q-bang> == \"!\")\ncommand! -bang\tLatexmkClean\tcall LatexBox_LatexmkClean(<q-bang> == \"!\")\ncommand! -bang\tLatexmkStatus\tcall LatexBox_LatexmkStatus(<q-bang> == \"!\")\ncommand! LatexmkStop\t\t\tcall LatexBox_LatexmkStop(0)\ncommand! LatexErrors\t\t\tcall LatexBox_LatexErrors(-1)\n\nif g:LatexBox_latexmk_async || g:LatexBox_latexmk_preview_continuously\n\tautocmd BufUnload <buffer> \tcall LatexBox_LatexmkStop(1)\n\tautocmd VimLeave * \t\t\tcall <SID>kill_all_latexmk_processes()\nendif\n\n\" }}}\n\n\" vim:fdm=marker:ff=unix:noet:ts=4:sw=4\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/latex-box/mappings.vim",
    "content": "\" LaTeX Box mappings\n\nif exists(\"g:LatexBox_no_mappings\")\n\tfinish\nendif\n\n\" latexmk {{{\nmap <buffer> <LocalLeader>ll :Latexmk<CR>\nmap <buffer> <LocalLeader>lL :Latexmk!<CR>\nmap <buffer> <LocalLeader>lc :LatexmkClean<CR>\nmap <buffer> <LocalLeader>lC :LatexmkClean!<CR>\nmap <buffer> <LocalLeader>lg :LatexmkStatus<CR>\nmap <buffer> <LocalLeader>lG :LatexmkStatus!<CR>\nmap <buffer> <LocalLeader>lk :LatexmkStop<CR>\nmap <buffer> <LocalLeader>le :LatexErrors<CR>\n\" }}}\n\n\" View {{{\nmap <buffer> <LocalLeader>lv :LatexView<CR>\n\" }}}\n\n\" TOC {{{\nmap <silent> <buffer> <LocalLeader>lt :LatexTOC<CR>\n\" }}}\n\n\" List of labels {{{\nmap <silent> <buffer> <LocalLeader>lj :LatexLabels<CR>\n\" }}}\n\n\" Jump to match {{{\nif !exists('g:LatexBox_loaded_matchparen')\n\tnmap <buffer> % <Plug>LatexBox_JumpToMatch\n\tvmap <buffer> % <Plug>LatexBox_JumpToMatch\n\tomap <buffer> % <Plug>LatexBox_JumpToMatch\nendif\n\" }}}\n\n\" Define text objects {{{\nvmap <buffer> ie <Plug>LatexBox_SelectCurrentEnvInner\nvmap <buffer> ae <Plug>LatexBox_SelectCurrentEnvOuter\nomap <buffer> ie :normal vie<CR>\nomap <buffer> ae :normal vae<CR>\nvmap <buffer> i$ <Plug>LatexBox_SelectInlineMathInner\nvmap <buffer> a$ <Plug>LatexBox_SelectInlineMathOuter\nomap <buffer> i$ :normal vi$<CR>\nomap <buffer> a$ :normal va$<CR>\n\" }}}\n\n\" Jump between sections {{{\nfunction! s:LatexBoxNextSection(type, backwards, visual)\n\t\" Restore visual mode if desired\n\tif a:visual\n\t\tnormal! gv\n\tendif\n\n\t\" For the [] and ][ commands we move up or down before the search\n\tif a:type == 1\n\t\tif a:backwards\n\t\t\tnormal! k\n\t\telse\n\t\t\tnormal! j\n\t\tendif\n\tendif\n\n\t\" Define search pattern and do the search while preserving \"/\n\tlet save_search = @/\n\tlet flags = 'W'\n\tif a:backwards\n\t\tlet flags = 'b' . flags\n\tendif\n\tlet notcomment = '\\%(\\%(\\\\\\@<!\\%(\\\\\\\\\\)*\\)\\@<=%.*\\)\\@<!'\n\tlet pattern = notcomment . '\\v\\s*\\\\(' . join([\n\t\t\t\t\\ '(sub)*section',\n\t\t\t\t\\ 'chapter',\n\t\t\t\t\\ 'part',\n\t\t\t\t\\ 'appendix',\n\t\t\t\t\\ '(front|back|main)matter'], '|') . ')>'\n\tcall search(pattern, flags)\n\tlet @/ = save_search\n\n\t\" For the [] and ][ commands we move down or up after the search\n\tif a:type == 1\n\t\tif a:backwards\n\t\t\tnormal! j\n\t\telse\n\t\t\tnormal! k\n\t\tendif\n\tendif\nendfunction\nnoremap  <buffer> <silent> ]] :call <SID>LatexBoxNextSection(0,0,0)<CR>\nnoremap  <buffer> <silent> ][ :call <SID>LatexBoxNextSection(1,0,0)<CR>\nnoremap  <buffer> <silent> [] :call <SID>LatexBoxNextSection(1,1,0)<CR>\nnoremap  <buffer> <silent> [[ :call <SID>LatexBoxNextSection(0,1,0)<CR>\nvnoremap <buffer> <silent> ]] :<c-u>call <SID>LatexBoxNextSection(0,0,1)<CR>\nvnoremap <buffer> <silent> ][ :<c-u>call <SID>LatexBoxNextSection(1,0,1)<CR>\nvnoremap <buffer> <silent> [] :<c-u>call <SID>LatexBoxNextSection(1,1,1)<CR>\nvnoremap <buffer> <silent> [[ :<c-u>call <SID>LatexBoxNextSection(0,1,1)<CR>\n\" }}}\n\n\" vim:fdm=marker:ff=unix:noet:ts=4:sw=4\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/latex-box/motion.vim",
    "content": "\" LaTeX Box motion functions\n\n\" Motion options {{{\n\" Opening and closing patterns\nif !exists('g:LatexBox_open_pats')\n\tlet g:LatexBox_open_pats  = [ '\\\\{','{','\\\\(','(','\\\\\\[','\\[',\n\t\t\t\t\\ '\\\\begin\\s*{.\\{-}}', '\\\\left\\s*\\%([^\\\\]\\|\\\\.\\|\\\\\\a*\\)']\n\tlet g:LatexBox_close_pats = [ '\\\\}','}','\\\\)',')','\\\\\\]','\\]',\n\t\t\t\t\\ '\\\\end\\s*{.\\{-}}',   '\\\\right\\s*\\%([^\\\\]\\|\\\\.\\|\\\\\\a*\\)']\nendif\n\" }}}\n\n\" HasSyntax {{{\n\" s:HasSyntax(syntaxName, [line], [col])\nfunction! s:HasSyntax(syntaxName, ...)\n\tlet line = a:0 >= 1 ? a:1 : line('.')\n\tlet col  = a:0 >= 2 ? a:2 : col('.')\n\treturn index(map(synstack(line, col),\n\t\t\t\t\\ 'synIDattr(v:val, \"name\") == \"' . a:syntaxName . '\"'),\n\t\t\t\t\\ 1) >= 0\nendfunction\n\" }}}\n\n\" Search and Skip Comments {{{\n\" s:SearchAndSkipComments(pattern, [flags], [stopline])\nfunction! s:SearchAndSkipComments(pat, ...)\n\tlet flags\t\t= a:0 >= 1 ? a:1 : ''\n\tlet stopline\t= a:0 >= 2 ? a:2 : 0\n\tlet saved_pos = getpos('.')\n\n\t\" search once\n\tlet ret = search(a:pat, flags, stopline)\n\n\tif ret\n\t\t\" do not match at current position if inside comment\n\t\tlet flags = substitute(flags, 'c', '', 'g')\n\n\t\t\" keep searching while in comment\n\t\twhile LatexBox_InComment()\n\t\t\tlet ret = search(a:pat, flags, stopline)\n\t\t\tif !ret\n\t\t\t\tbreak\n\t\t\tendif\n\t\tendwhile\n\tendif\n\n\tif !ret\n\t\t\" if no match found, restore position\n\t\tcall setpos('.', saved_pos)\n\tendif\n\n\treturn ret\nendfunction\n\" }}}\n\n\" Finding Matching Pair {{{\nfunction! s:FindMatchingPair(mode)\n\n\tif a:mode =~ 'h\\|i'\n\t\t2match none\n\telseif a:mode == 'v'\n\t\tnormal! gv\n\tendif\n\n\tif LatexBox_InComment() | return | endif\n\n\t\" open/close pairs (dollars signs are treated apart)\n\tlet dollar_pat = '\\$'\n\tlet notbslash = '\\%(\\\\\\@<!\\%(\\\\\\\\\\)*\\)\\@<='\n\tlet notcomment = '\\%(\\%(\\\\\\@<!\\%(\\\\\\\\\\)*\\)\\@<=%.*\\)\\@<!'\n\tlet anymatch =  '\\('\n\t\t\t\t\\ . join(g:LatexBox_open_pats + g:LatexBox_close_pats, '\\|')\n\t\t\t\t\\ . '\\|' . dollar_pat . '\\)'\n\n\tlet lnum = line('.')\n\tlet cnum = searchpos('\\A', 'cbnW', lnum)[1]\n\t\" if the previous char is a backslash\n\tif strpart(getline(lnum), cnum-2, 1) == '\\'\n\t\tlet cnum = cnum-1\n\tendif\n\tlet delim = matchstr(getline(lnum), '\\C^'. anymatch , cnum - 1)\n\n\tif empty(delim) || strlen(delim)+cnum-1< col('.')\n\t\tif a:mode =~ 'n\\|v\\|o'\n\t\t\t\" if not found, search forward\n\t\t\tlet cnum = match(getline(lnum), '\\C'. anymatch , col('.') - 1) + 1\n\t\t\tif cnum == 0 | return | endif\n\t\t\tcall cursor(lnum, cnum)\n\t\t\tlet delim = matchstr(getline(lnum), '\\C^'. anymatch , cnum - 1)\n\t\telseif a:mode =~ 'i'\n\t\t\t\" if not found, move one char bacward and search\n\t\t\tlet cnum = searchpos('\\A', 'bnW', lnum)[1]\n\t\t\t\" if the previous char is a backslash\n\t\t\tif strpart(getline(lnum), cnum-2, 1) == '\\'\n\t\t\t\tlet cnum = cnum-1\n\t\t\tendif\n\t\t\tlet delim = matchstr(getline(lnum), '\\C^'. anymatch , cnum - 1)\n\t\t\tif empty(delim) || strlen(delim)+cnum< col('.') | return | endif\n\t\telseif a:mode =~ 'h'\n\t\t\treturn\n\t\tendif\n\tendif\n\n\tif delim =~ '^\\$'\n\n\t\t\" match $-pairs\n\t\t\" check if next character is in inline math\n\t\tlet [lnum0, cnum0] = searchpos('.', 'nW')\n\t\tif lnum0 && s:HasSyntax('texMathZoneX', lnum0, cnum0)\n\t\t\tlet [lnum2, cnum2] = searchpos(notcomment . notbslash. dollar_pat, 'nW', line('w$')*(a:mode =~ 'h\\|i') , 200)\n\t\telse\n\t\t\tlet [lnum2, cnum2] = searchpos('\\%(\\%'. lnum . 'l\\%' . cnum . 'c\\)\\@!'. notcomment . notbslash . dollar_pat, 'bnW', line('w0')*(a:mode =~ 'h\\|i') , 200)\n\t\tendif\n\n\t\tif a:mode =~ 'h\\|i'\n\t\t\texecute '2match MatchParen /\\%(\\%' . lnum . 'l\\%' . cnum . 'c\\$' . '\\|\\%' . lnum2 . 'l\\%' . cnum2 . 'c\\$\\)/'\n\t\telseif a:mode =~ 'n\\|v\\|o'\n\t\t\tcall cursor(lnum2,cnum2)\n\t\tendif\n\n\telse\n\t\t\" match other pairs\n\t\tfor i in range(len(g:LatexBox_open_pats))\n\t\t\tlet open_pat = notbslash . g:LatexBox_open_pats[i]\n\t\t\tlet close_pat = notbslash . g:LatexBox_close_pats[i]\n\n\t\t\tif delim =~# '^' . open_pat\n\t\t\t\t\" if on opening pattern, search for closing pattern\n\t\t\t\tlet [lnum2, cnum2] = searchpairpos('\\C' . open_pat, '', '\\C'\n\t\t\t\t\t\t\t\\ . close_pat, 'nW', 'LatexBox_InComment()',\n\t\t\t\t\t\t\t\\ line('w$')*(a:mode =~ 'h\\|i') , 200)\n\t\t\t\tif a:mode =~ 'h\\|i'\n\t\t\t\t\texecute '2match MatchParen /\\%(\\%' . lnum . 'l\\%' . cnum\n\t\t\t\t\t\t\t\t\\ . 'c' . g:LatexBox_open_pats[i] . '\\|\\%'\n\t\t\t\t\t\t\t\t\\ . lnum2 . 'l\\%' . cnum2 . 'c'\n\t\t\t\t\t\t\t\t\\ . g:LatexBox_close_pats[i] . '\\)/'\n\t\t\t\telseif a:mode =~ 'n\\|v\\|o'\n\t\t\t\t\tcall cursor(lnum2,cnum2)\n\t\t\t\t\tif strlen(close_pat)>1 && a:mode =~ 'o'\n\t\t\t\t\t\tcall cursor(lnum2, matchend(getline('.'), '\\C'\n\t\t\t\t\t\t\t\t\t\\ . close_pat, col('.')-1))\n\t\t\t\t\tendif\n\t\t\t\tendif\n\t\t\t\tbreak\n\t\t\telseif delim =~# '^' . close_pat\n\t\t\t\t\" if on closing pattern, search for opening pattern\n\t\t\t\tlet [lnum2, cnum2] =  searchpairpos('\\C' . open_pat, '',\n\t\t\t\t\t\t\t\\ '\\C\\%(\\%'. lnum . 'l\\%' . cnum . 'c\\)\\@!'\n\t\t\t\t\t\t\t\\ . close_pat, 'bnW', 'LatexBox_InComment()',\n\t\t\t\t\t\t\t\\ line('w0')*(a:mode =~ 'h\\|i') , 200)\n\t\t\t\tif a:mode =~ 'h\\|i'\n\t\t\t\t\texecute '2match MatchParen /\\%(\\%' . lnum2 . 'l\\%' . cnum2\n\t\t\t\t\t\t\t\t\\ . 'c' . g:LatexBox_open_pats[i] . '\\|\\%'\n\t\t\t\t\t\t\t\t\\ . lnum . 'l\\%' . cnum . 'c'\n\t\t\t\t\t\t\t\t\\ . g:LatexBox_close_pats[i] . '\\)/'\n\t\t\t\telseif a:mode =~ 'n\\|v\\|o'\n\t\t\t\t\tcall cursor(lnum2,cnum2)\n\t\t\t\tendif\n\t\t\t\tbreak\n\t\t\tendif\n\t\tendfor\n\n\tendif\nendfunction\n\n\" Allow to disable functionality if desired\nif !exists('g:LatexBox_loaded_matchparen')\n\t\" Disable matchparen autocommands\n\taugroup LatexBox_HighlightPairs\n\t\tautocmd BufEnter * if !exists(\"g:loaded_matchparen\") || !g:loaded_matchparen | runtime plugin/matchparen.vim | endif\n\t\tautocmd BufEnter *.tex 3match none | unlet! g:loaded_matchparen | au! matchparen\n\t\tautocmd! CursorMoved *.tex call s:FindMatchingPair('h')\n\t\tautocmd! CursorMovedI *.tex call s:FindMatchingPair('i')\n\taugroup END\nendif\n\n\" Use LatexBox'es FindMatchingPair as '%' (enable jump between e.g. $'s)\nnnoremap <silent> <Plug>LatexBox_JumpToMatch\t:call <SID>FindMatchingPair('n')<CR>\nvnoremap <silent> <Plug>LatexBox_JumpToMatch\t:call <SID>FindMatchingPair('v')<CR>\nonoremap <silent> <Plug>LatexBox_JumpToMatch\tv:call <SID>FindMatchingPair('o')<CR>\n\n\" }}}\n\n\" select inline math {{{\n\" s:SelectInlineMath(seltype)\n\" where seltype is either 'inner' or 'outer'\nfunction! s:SelectInlineMath(seltype)\n\n\tlet dollar_pat = '\\\\\\@<!\\$'\n\n\tif s:HasSyntax('texMathZoneX')\n\t\tcall s:SearchAndSkipComments(dollar_pat, 'cbW')\n\telseif getline('.')[col('.') - 1] == '$'\n\t\tcall s:SearchAndSkipComments(dollar_pat, 'bW')\n\telse\n\t\treturn\n\tendif\n\n\tif a:seltype == 'inner'\n\t\tnormal! l\n\tendif\n\n\tif visualmode() ==# 'V'\n\t\tnormal! V\n\telse\n\t\tnormal! v\n\tendif\n\n\tcall s:SearchAndSkipComments(dollar_pat, 'W')\n\n\tif a:seltype == 'inner'\n\t\tnormal! h\n\tendif\nendfunction\n\nvnoremap <silent> <Plug>LatexBox_SelectInlineMathInner\n\t\t\t\\ :<C-U>call <SID>SelectInlineMath('inner')<CR>\nvnoremap <silent> <Plug>LatexBox_SelectInlineMathOuter\n\t\t\t\\ :<C-U>call <SID>SelectInlineMath('outer')<CR>\n\" }}}\n\n\" select current environment {{{\nfunction! s:SelectCurrentEnv(seltype)\n\tlet [env, lnum, cnum, lnum2, cnum2] = LatexBox_GetCurrentEnvironment(1)\n\tcall cursor(lnum, cnum)\n\tif a:seltype == 'inner'\n\t\tif env =~ '^\\'\n\t\t\tcall search('\\\\.\\_\\s*\\S', 'eW')\n\t\telse\n\t\t\tcall search('}\\(\\_\\s*\\[\\_[^]]*\\]\\)\\?\\_\\s*\\S', 'eW')\n\t\tendif\n\tendif\n\tif visualmode() ==# 'V'\n\t\tnormal! V\n\telse\n\t\tnormal! v\n\tendif\n\tcall cursor(lnum2, cnum2)\n\tif a:seltype == 'inner'\n\t\tcall search('\\S\\_\\s*', 'bW')\n\telse\n\t\tif env =~ '^\\'\n\t\t\tnormal! l\n\t\telse\n\t\t\tcall search('}', 'eW')\n\t\tendif\n\tendif\nendfunction\nvnoremap <silent> <Plug>LatexBox_SelectCurrentEnvInner :<C-U>call <SID>SelectCurrentEnv('inner')<CR>\nvnoremap <silent> <Plug>LatexBox_SelectCurrentEnvOuter :<C-U>call <SID>SelectCurrentEnv('outer')<CR>\n\" }}}\n\n\" Jump to the next braces {{{\n\"\nfunction! LatexBox_JumpToNextBraces(backward)\n\tlet flags = ''\n\tif a:backward\n\t\tnormal h\n\t\tlet flags .= 'b'\n\telse\n\t\tlet flags .= 'c'\n\tendif\n\tif search('[][}{]', flags) > 0\n\t\tnormal l\n\tendif\n\tlet prev = strpart(getline('.'), col('.') - 2, 1)\n\tlet next = strpart(getline('.'), col('.') - 1, 1)\n\tif next =~ '[]}]' && prev !~ '[][{}]'\n\t\treturn \"\\<Right>\"\n\telse\n\t\treturn ''\n\tendif\nendfunction\n\" }}}\n\n\" Table of Contents {{{\n\n\" Special UTF-8 conversion\nfunction! s:ConvertBack(line)\n\tlet line = a:line\n\tif exists('g:LatexBox_plaintext_toc')\n\t\t\"\n\t\t\" Substitute stuff like '\\IeC{\\\"u}' to plain 'u'\n\t\t\"\n\t\tlet line = substitute(line, '\\\\IeC\\s*{\\\\.\\(.\\)}', '\\1', 'g')\n\telse\n\t\t\"\n\t\t\" Substitute stuff like '\\IeC{\\\"u}' to corresponding unicode symbols\n\t\t\"\n\t\tfor [pat, symbol] in s:ConvBackPats\n\t\t\tlet line = substitute(line, pat, symbol, 'g')\n\t\tendfor\n\tendif\n\treturn line\nendfunction\n\nfunction! s:ReadTOC(auxfile, texfile, ...)\n\tlet texfile = a:texfile\n\tlet prefix = fnamemodify(a:auxfile, ':p:h')\n\n\tif a:0 != 2\n\t\tlet toc = []\n\t\tlet fileindices = { texfile : [] }\n\telse\n\t\tlet toc = a:1\n\t\tlet fileindices = a:2\n\t\tlet fileindices[ texfile ] = []\n\tendif\n\n\tfor line in readfile(a:auxfile)\n\t\tlet included = matchstr(line, '^\\\\@input{\\zs[^}]*\\ze}')\n\t\tif included != ''\n\t\t\t\" append the input TOX to `toc` and `fileindices`\n\t\t\tlet newaux = prefix . '/' . included\n\t\t\tlet newtex = fnamemodify(newaux, ':r') . '.tex'\n\t\t\tcall s:ReadTOC(newaux, newtex, toc, fileindices)\n\t\t\tcontinue\n\t\tendif\n\n\t\t\" Parse statements like:\n\t\t\" \\@writefile{toc}{\\contentsline {section}{\\numberline {secnum}Section Title}{pagenumber}}\n\t\t\" \\@writefile{toc}{\\contentsline {section}{\\tocsection {}{1}{Section Title}}{pagenumber}}\n\t\t\" \\@writefile{toc}{\\contentsline {section}{\\numberline {secnum}Section Title}{pagenumber}{otherstuff}}\n\n\t\tlet line = matchstr(line,\n\t\t\t\t\t\\ '\\\\@writefile{toc}{\\\\contentsline\\s*\\zs.*\\ze}\\s*$')\n\t\tif empty(line)\n\t\t\tcontinue\n\t\tendif\n\n\t\tlet tree = LatexBox_TexToTree(s:ConvertBack(line))\n\n\t\tif len(tree) < 3\n\t\t\t\" unknown entry type: just skip it\n\t\t\tcontinue\n\t\tendif\n\n\t\t\" parse level\n\t\tlet level = tree[0][0]\n\t\t\" parse page\n\t\tif !empty(tree[2])\n\t\t\tlet page = tree[2][0]\n\t\telse\n\t\t\tlet page = ''\n\t\tendif\n\t\t\" parse section number\n\t\tlet secnum = ''\n\t\tif len(tree[1]) > 3 && empty(tree[1][1])\n\t\t\tcall remove(tree[1], 1)\n\t\tendif\n\t\tif len(tree[1]) > 1 && tree[1][0] =~ '\\(numberline\\|tocsection\\)'\n\t\t\tif !empty(tree[1][1])\n\t\t\t\tlet secnum = LatexBox_TreeToTex(tree[1][1])\n\t\t\t\tlet secnum = substitute(secnum, '\\\\\\S\\+\\s', '', 'g')\n\t\t\t\tlet secnum = substitute(secnum, '\\\\\\S\\+{\\(.\\{-}\\)}', '\\1', 'g')\n\t\t\t\tlet secnum = substitute(secnum, '^{\\+\\|}\\+$', '', 'g')\n\t\t\tendif\n\t\t\tlet tree = tree[1][2:]\n\t\telse\n\t\t\tlet tree = tree[1]\n\t\tendif\n\t\t\" parse section title\n\t\tlet text = LatexBox_TreeToTex(tree)\n\t\tlet text = substitute(text, '^{\\+\\|}\\+$', '', 'g')\n\t\tlet text = substitute(text, '\\*',         '', 'g')\n\n\t\t\" add TOC entry\n\t\tcall add(fileindices[texfile], len(toc))\n\t\tcall add(toc, {'file': texfile,\n\t\t\t\t\t\\ 'level': level,\n\t\t\t\t\t\\ 'number': secnum,\n\t\t\t\t\t\\ 'text': text,\n\t\t\t\t\t\\ 'page': page})\n\tendfor\n\n\treturn [toc, fileindices]\n\nendfunction\n\nfunction! LatexBox_TOC(...)\n\n\t\" Check if window already exists\n\tlet winnr = bufwinnr(bufnr('LaTeX TOC'))\n\tif winnr >= 0\n\t\tif a:0 == 0\n\t\t\tsilent execute winnr . 'wincmd w'\n\t\telse\n\t\t\t\" Supplying an argument to this function causes toggling instead\n\t\t\t\" of jumping to the TOC window\n\t\t\tif g:LatexBox_split_resize\n\t\t\t\tsilent exe \"set columns-=\" . g:LatexBox_split_width\n\t\t\tendif\n\t\t\tsilent execute 'bwipeout' . bufnr('LaTeX TOC')\n\t\tendif\n\t\treturn\n\tendif\n\n\t\" Read TOC\n\tlet [toc, fileindices] = s:ReadTOC(LatexBox_GetAuxFile(),\n\t\t\t\t\t\t\t\t\t \\ LatexBox_GetMainTexFile())\n\tlet calling_buf = bufnr('%')\n\n\t\" Find closest section in current buffer\n\tlet closest_index = s:FindClosestSection(toc,fileindices)\n\n\t\" Create TOC window and set local settings\n\tif g:LatexBox_split_resize\n\t\tsilent exe \"set columns+=\" . g:LatexBox_split_width\n\tendif\n\tsilent exe g:LatexBox_split_side g:LatexBox_split_width . 'vnew LaTeX\\ TOC'\n\tlet b:toc = toc\n\tlet b:toc_numbers = 1\n\tlet b:calling_win = bufwinnr(calling_buf)\n\tsetlocal filetype=latextoc\n\n\t\" Add TOC entries and jump to the closest section\n\tfor entry in toc\n\t\tcall append('$', entry['number'] . \"\\t\" . entry['text'])\n\tendfor\n\tif !g:LatexBox_toc_hidehelp\n\t\tcall append('$', \"\")\n\t\tcall append('$', \"<Esc>/q: close\")\n\t\tcall append('$', \"<Space>: jump\")\n\t\tcall append('$', \"<Enter>: jump and close\")\n\t\tcall append('$', \"s:       hide numbering\")\n\tendif\n\t0delete _\n\n\texecute 'normal! ' . (closest_index + 1) . 'G'\n\n\t\" Lock buffer\n\tsetlocal nomodifiable\nendfunction\n\n\" Binary search for the closest section\n\" return the index of the TOC entry\nfunction! s:FindClosestSection(toc, fileindices)\n\tlet file = expand('%:p')\n\tif !has_key(a:fileindices, file)\n\t\treturn 0\n\tendif\n\n\tlet imax = len(a:fileindices[file])\n\tif imax > 0\n\t\tlet imin = 0\n\t\twhile imin < imax - 1\n\t\t\tlet i = (imax + imin) / 2\n\t\t\tlet tocindex = a:fileindices[file][i]\n\t\t\tlet entry = a:toc[tocindex]\n\t\t\tlet titlestr = entry['text']\n\t\t\tlet titlestr = escape(titlestr, '\\')\n\t\t\tlet titlestr = substitute(titlestr, ' ', '\\\\_\\\\s\\\\+', 'g')\n\t\t\tlet [lnum, cnum] = searchpos('\\\\' . entry['level'] . '\\_\\s*{' . titlestr . '}', 'nW')\n\t\t\tif lnum\n\t\t\t\tlet imax = i\n\t\t\telse\n\t\t\t\tlet imin = i\n\t\t\tendif\n\t\tendwhile\n\t\treturn a:fileindices[file][imin]\n\telse\n\t\treturn 0\n\tendif\nendfunction\n\nlet s:ConvBackPats = map([\n\t\t\t\\ ['\\\\''A}'        , 'Á'],\n\t\t\t\\ ['\\\\`A}'         , 'À'],\n\t\t\t\\ ['\\\\^A}'         , 'À'],\n\t\t\t\\ ['\\\\¨A}'         , 'Ä'],\n\t\t\t\\ ['\\\\\"A}'         , 'Ä'],\n\t\t\t\\ ['\\\\''a}'        , 'á'],\n\t\t\t\\ ['\\\\`a}'         , 'à'],\n\t\t\t\\ ['\\\\^a}'         , 'à'],\n\t\t\t\\ ['\\\\¨a}'         , 'ä'],\n\t\t\t\\ ['\\\\\"a}'         , 'ä'],\n\t\t\t\\ ['\\\\''E}'        , 'É'],\n\t\t\t\\ ['\\\\`E}'         , 'È'],\n\t\t\t\\ ['\\\\^E}'         , 'Ê'],\n\t\t\t\\ ['\\\\¨E}'         , 'Ë'],\n\t\t\t\\ ['\\\\\"E}'         , 'Ë'],\n\t\t\t\\ ['\\\\''e}'        , 'é'],\n\t\t\t\\ ['\\\\`e}'         , 'è'],\n\t\t\t\\ ['\\\\^e}'         , 'ê'],\n\t\t\t\\ ['\\\\¨e}'         , 'ë'],\n\t\t\t\\ ['\\\\\"e}'         , 'ë'],\n\t\t\t\\ ['\\\\''I}'        , 'Í'],\n\t\t\t\\ ['\\\\`I}'         , 'Î'],\n\t\t\t\\ ['\\\\^I}'         , 'Ì'],\n\t\t\t\\ ['\\\\¨I}'         , 'Ï'],\n\t\t\t\\ ['\\\\\"I}'         , 'Ï'],\n\t\t\t\\ ['\\\\''i}'        , 'í'],\n\t\t\t\\ ['\\\\`i}'         , 'î'],\n\t\t\t\\ ['\\\\^i}'         , 'ì'],\n\t\t\t\\ ['\\\\¨i}'         , 'ï'],\n\t\t\t\\ ['\\\\\"i}'         , 'ï'],\n\t\t\t\\ ['\\\\''{\\?\\\\i }'  , 'í'],\n\t\t\t\\ ['\\\\''O}'        , 'Ó'],\n\t\t\t\\ ['\\\\`O}'         , 'Ò'],\n\t\t\t\\ ['\\\\^O}'         , 'Ô'],\n\t\t\t\\ ['\\\\¨O}'         , 'Ö'],\n\t\t\t\\ ['\\\\\"O}'         , 'Ö'],\n\t\t\t\\ ['\\\\''o}'        , 'ó'],\n\t\t\t\\ ['\\\\`o}'         , 'ò'],\n\t\t\t\\ ['\\\\^o}'         , 'ô'],\n\t\t\t\\ ['\\\\¨o}'         , 'ö'],\n\t\t\t\\ ['\\\\\"o}'         , 'ö'],\n\t\t\t\\ ['\\\\''U}'        , 'Ú'],\n\t\t\t\\ ['\\\\`U}'         , 'Ù'],\n\t\t\t\\ ['\\\\^U}'         , 'Û'],\n\t\t\t\\ ['\\\\¨U}'         , 'Ü'],\n\t\t\t\\ ['\\\\\"U}'         , 'Ü'],\n\t\t\t\\ ['\\\\''u}'        , 'ú'],\n\t\t\t\\ ['\\\\`u}'         , 'ù'],\n\t\t\t\\ ['\\\\^u}'         , 'û'],\n\t\t\t\\ ['\\\\¨u}'         , 'ü'],\n\t\t\t\\ ['\\\\\"u}'         , 'ü'],\n\t\t\t\\ ['\\\\`N}'         , 'Ǹ'],\n\t\t\t\\ ['\\\\\\~N}'        , 'Ñ'],\n\t\t\t\\ ['\\\\''n}'        , 'ń'],\n\t\t\t\\ ['\\\\`n}'         , 'ǹ'],\n\t\t\t\\ ['\\\\\\~n}'        , 'ñ'],\n\t\t\t\\], '[''\\C\\(\\\\IeC\\s*{\\)\\?'' . v:val[0], v:val[1]]')\n\" }}}\n\n\" TOC Command {{{\ncommand! LatexTOC call LatexBox_TOC()\ncommand! LatexTOCToggle call LatexBox_TOC(1)\n\" }}}\n\n\" vim:fdm=marker:ff=unix:noet:ts=4:sw=4\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/latextoc.vim",
    "content": "\" {{{1 Settings\nsetlocal buftype=nofile\nsetlocal bufhidden=wipe\nsetlocal nobuflisted\nsetlocal noswapfile\nsetlocal nowrap\nsetlocal nospell\nsetlocal cursorline\nsetlocal nonumber\nsetlocal nolist\nsetlocal tabstop=8\nsetlocal cole=0\nsetlocal cocu=nvic\nif g:LatexBox_fold_toc\n    setlocal foldmethod=expr\n    setlocal foldexpr=TOCFoldLevel(v:lnum)\n    setlocal foldtext=TOCFoldText()\nendif\n\" }}}1\n\n\" {{{1 Functions\n\" {{{2 TOCClose\nfunction! s:TOCClose()\n    if g:LatexBox_split_resize\n        silent exe \"set columns-=\" . g:LatexBox_split_width\n    endif\n    bwipeout\nendfunction\n\n\" {{{2 TOCToggleNumbers\nfunction! s:TOCToggleNumbers()\n    if b:toc_numbers\n        setlocal conceallevel=3\n        let b:toc_numbers = 0\n    else\n        setlocal conceallevel=0\n        let b:toc_numbers = 1\n    endif\nendfunction\n\n\" {{{2 EscapeTitle\nfunction! s:EscapeTitle(titlestr)\n    \" Credit goes to Marcin Szamotulski for the following fix.  It allows to\n    \" match through commands added by TeX.\n    let titlestr = substitute(a:titlestr, '\\\\\\w*\\>\\s*\\%({[^}]*}\\)\\?', '.*', 'g')\n\n    let titlestr = escape(titlestr, '\\')\n    let titlestr = substitute(titlestr, ' ', '\\\\_\\\\s\\\\+', 'g')\n\n    return titlestr\nendfunction\n\n\" {{{2 TOCActivate\nfunction! s:TOCActivate(close)\n    let n = getpos('.')[1] - 1\n\n    if n >= len(b:toc)\n        return\n    endif\n\n    let entry = b:toc[n]\n\n    let titlestr = s:EscapeTitle(entry['text'])\n\n    \" Search for duplicates\n    \"\n    let i=0\n    let entry_hash = entry['level'].titlestr\n    let duplicates = 0\n    while i<n\n        let i_entry = b:toc[n]\n        let i_hash = b:toc[i]['level'].s:EscapeTitle(b:toc[i]['text'])\n        if i_hash == entry_hash\n            let duplicates += 1\n        endif\n        let i += 1\n    endwhile\n    let toc_bnr = bufnr('%')\n    let toc_wnr = winnr()\n\n    execute b:calling_win . 'wincmd w'\n\n    let files = [entry['file']]\n    for line in filter(readfile(entry['file']), 'v:val =~ ''\\\\input{''')\n        call add(files, matchstr(line, '{\\zs.*\\ze\\(\\.tex\\)\\?}') . '.tex')\n    endfor\n\n    \" Find section in buffer (or inputted files)\n    call s:TOCFindMatch('\\\\' . entry['level'] . '\\_\\s*{' . titlestr . '}',\n                \\ duplicates, files)\n\n    if a:close\n        if g:LatexBox_split_resize\n            silent exe \"set columns-=\" . g:LatexBox_split_width\n        endif\n        execute 'bwipeout ' . toc_bnr\n    else\n        execute toc_wnr . 'wincmd w'\n    endif\nendfunction\n\n\" {{{2 TOCFindMatch\nfunction! s:TOCFindMatch(strsearch,duplicates,files)\n\n    call s:TOCOpenBuf(a:files[0])\n    let dups = a:duplicates\n\n    \" Skip duplicates\n    while dups > 0\n        if search(a:strsearch, 'w')\n            let dups -= 1\n        else\n            break\n        endif\n    endwhile\n\n    if search(a:strsearch, 'w')\n        normal! zv\n        return\n    endif\n\n    call s:TOCFindMatch(a:strsearch,dups,a:files[1:])\n\nendfunction\n\n\" {{{2 TOCFoldLevel\nfunction! TOCFoldLevel(lnum)\n    let line  = getline(a:lnum)\n    let match_s1 = line =~# '^\\w\\+\\s'\n    let match_s2 = line =~# '^\\w\\+\\.\\w\\+\\s'\n    let match_s3 = line =~# '^\\w\\+\\.\\w\\+\\.\\w\\+\\s'\n\n    if g:LatexBox_fold_toc_levels >= 3\n        if match_s3\n            return \">3\"\n        endif\n    endif\n\n    if g:LatexBox_fold_toc_levels >= 2\n        if match_s2\n            return \">2\"\n        endif\n    endif\n\n    if match_s1\n        return \">1\"\n    endif\n\n    \" Don't fold options\n    if line =~# '^\\s*$'\n        return 0\n    endif\n\n    \" Return previous fold level\n    return \"=\"\nendfunction\n\n\" {{{2 TOCFoldText\nfunction! TOCFoldText()\n    let parts = matchlist(getline(v:foldstart), '^\\(.*\\)\\t\\(.*\\)$')\n    return printf('%-8s%-72s', parts[1], parts[2])\nendfunction\n\n\" {{{2 TOCOpenBuf\nfunction! s:TOCOpenBuf(file)\n\n    let bnr = bufnr(a:file)\n    if bnr == -1\n        execute 'badd ' . a:file\n        let bnr = bufnr(a:file)\n    endif\n    execute 'buffer! ' . bnr\n\nendfunction\n\n\" }}}1\n\n\" {{{1 Mappings\nnnoremap <buffer> <silent> s :call <SID>TOCToggleNumbers()<CR>\nnnoremap <buffer> <silent> q :call <SID>TOCClose()<CR>\nnnoremap <buffer> <silent> <Esc> :call <SID>TOCClose()<CR>\nnnoremap <buffer> <silent> <Space> :call <SID>TOCActivate(0)<CR>\nnnoremap <buffer> <silent> <CR> :call <SID>TOCActivate(1)<CR>\nnnoremap <buffer> <silent> <leftrelease> :call <SID>TOCActivate(0)<cr>\nnnoremap <buffer> <silent> <2-leftmouse> :call <SID>TOCActivate(1)<cr>\nnnoremap <buffer> <silent> G G4k\nnnoremap <buffer> <silent> <Esc>OA k\nnnoremap <buffer> <silent> <Esc>OB j\nnnoremap <buffer> <silent> <Esc>OC l\nnnoremap <buffer> <silent> <Esc>OD h\n\" }}}1\n\n\" vim:fdm=marker:ff=unix:et:ts=4:sw=4\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/less.vim",
    "content": "\" Vim filetype plugin\n\" Language:\t    LessCSS\n\" Author:\t    Tim Pope <vimNOSPAM@tpope.org>\n\" Maintainer:   Leonard Ehrenfried <leonard.ehrenfried@web.de>\n\" Last Change:  2011 Sep 30\n\n\" Only do this when not done yet for this buffer\nif exists(\"b:did_ftplugin\")\n  finish\nendif\nlet b:did_ftplugin = 1\n\nlet b:undo_ftplugin = \"setl cms< def< inc< inex< ofu< sua<\"\n\nsetlocal iskeyword+=-\nsetlocal commentstring=//\\ %s\nsetlocal define=^\\\\s*\\\\%(@mixin\\\\\\|=\\\\)\nsetlocal includeexpr=substitute(v:fname,'\\\\%(.*/\\\\\\|^\\\\)\\\\zs','_','')\nsetlocal omnifunc=csscomplete#CompleteCSS\nsetlocal suffixesadd=.less\nsetlocal comments=s1:/*,mb:*,ex:*/\n\nlet &l:include = '^\\s*@import\\s\\+\\%(url(\\)\\=[\"'']\\='\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/markdown.vim",
    "content": "\" Vim filetype plugin\n\" Language:\t\tMarkdown\n\" Maintainer:\t\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t\t2013 May 30\n\nif exists(\"b:did_ftplugin\")\n  finish\nendif\n\nruntime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim\n\nsetlocal comments=fb:*,fb:-,fb:+,n:> commentstring=>\\ %s\nsetlocal formatoptions+=tcqln formatoptions-=r formatoptions-=o\nsetlocal formatlistpat=^\\\\s*\\\\d\\\\+\\\\.\\\\s\\\\+\\\\\\|^[-*+]\\\\s\\\\+\n\nif exists('b:undo_ftplugin')\n  let b:undo_ftplugin .= \"|setl cms< com< fo< flp<\"\nelse\n  let b:undo_ftplugin = \"setl cms< com< fo< flp<\"\nendif\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/mustache.vim",
    "content": "let s:cpo_save = &cpo\nset cpo&vim\n\n\" Matchit support for Mustache & Handlebars\n\" extending HTML matchit groups\nif exists(\"loaded_matchit\") && exists(\"b:match_words\")\n  let b:match_words = b:match_words\n  \\ . ',{:},[:],(:),'\n  \\ . '\\%({{\\)\\@<=#\\s*\\%(if\\|unless\\)\\s*.\\{-}}}'\n  \\ . ':'\n  \\ . '\\%({{\\)\\@<=\\s*else\\s*}}'\n  \\ . ':'\n  \\ . '\\%({{\\)\\@<=/\\s*\\%(if\\|unless\\)\\s*}},'\n  \\ . '\\%({{\\)\\@<=[#^]\\s*\\([-0-9a-zA-Z_?!/.]\\+\\).\\{-}}}'\n  \\ . ':'\n  \\ . '\\%({{\\)\\@<=/\\s*\\1\\s*}}'\nendif\n\nif exists(\"g:mustache_abbreviations\")\n  inoremap <buffer> {{{ {{{}}}<left><left><left>\n  inoremap <buffer> {{ {{}}<left><left>\n  inoremap <buffer> {{! {{!}}<left><left>\n  inoremap <buffer> {{< {{<}}<left><left>\n  inoremap <buffer> {{> {{>}}<left><left>\n  inoremap <buffer> {{# {{#}}<cr>{{/}}<up><left><left>\n  inoremap <buffer> {{if {{#if }}<cr>{{/if}}<up><left>\n  inoremap <buffer> {{ife {{#if }}<cr>{{else}}<cr>{{/if}}<up><up><left>\nendif\n\n\n\" Section movement\n\" Adapted from vim-ruby - many thanks to the maintainers of that plugin\n\nfunction! s:sectionmovement(pattern,flags,mode,count)\n  norm! m'\n  if a:mode ==# 'v'\n    norm! gv\n  endif\n  let i = 0\n  while i < a:count\n    let i = i + 1\n    \" saving current position\n    let line = line('.')\n    let col  = col('.')\n    let pos = search(a:pattern,'W'.a:flags)\n    \" if there's no more matches, return to last position\n    if pos == 0\n      call cursor(line,col)\n      return\n    endif\n  endwhile\nendfunction\n\nnnoremap <silent> <buffer> [[ :<C-U>call <SID>sectionmovement('{{','b','n',v:count1)<CR>\nnnoremap <silent> <buffer> ]] :<C-U>call <SID>sectionmovement('{{','' ,'n',v:count1)<CR>\nxnoremap <silent> <buffer> [[ :<C-U>call <SID>sectionmovement('{{','b','v',v:count1)<CR>\nxnoremap <silent> <buffer> ]] :<C-U>call <SID>sectionmovement('{{','' ,'v',v:count1)<CR>\n\n\n\" Operator pending mappings\n\nonoremap <silent> <buffer> ie :<C-U>call <SID>wrap_inside()<CR>\nonoremap <silent> <buffer> ae :<C-U>call <SID>wrap_around()<CR>\nxnoremap <silent> <buffer> ie :<C-U>call <SID>wrap_inside()<CR>\nxnoremap <silent> <buffer> ae :<C-U>call <SID>wrap_around()<CR>\n\nfunction! s:wrap_around()\n  \" If the cursor is at the end of the tag element, move back\n  \" so that the end tag can be detected.\n  while getline('.')[col('.')-1] ==# '}'\n    execute 'norm h'\n  endwhile\n\n  \" Moves to the end of the closing tag\n  let pos = search('}}','We')\n  if pos != 0\n    if getline('.')[col('.')] ==# '}'\n      \" Ending tag contains 3 closing brackets '}}}',\n      \" move to the last bracket.\n      execute 'norm l'\n    endif\n\n    \" select the whole tag\n    execute 'norm v%'\n  endif\nendfunction\n\nfunction! s:wrap_inside()\n  \" If the cursor is at the end of the tag element, move back\n  \" so that the end tag can be detected.\n  while getline('.')[col('.')-1] ==# '}'\n    execute 'norm h'\n  endwhile\n\n  \" Moves to the end of the closing tag\n  let pos = search('}}','W')\n  if pos != 0\n    \" select only inside the tag\n    execute 'norm v%loho'\n  endif\nendfunction\n\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim: nofoldenable\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/ocaml.vim",
    "content": "\" Language:    OCaml\n\" Maintainer:  David Baelde        <firstname.name@ens-lyon.org>\n\"              Mike Leary          <leary@nwlink.com>\n\"              Markus Mottl        <markus.mottl@gmail.com>\n\"              Stefano Zacchiroli  <zack@bononia.it>\n\" URL:         http://www.ocaml.info/vim/ftplugin/ocaml.vim\n\" Last Change: 2009 Nov 10 - Improved .annot support\n\"                            (MM for <radugrigore@gmail.com>)\n\"              2009 Nov 10 - Added support for looking up definitions\n\"                            (MM for <ygrek@autistici.org>)\n\"\nif exists(\"b:did_ftplugin\")\n  finish\nendif\nlet b:did_ftplugin=1\n\n\" Error handling -- helps moving where the compiler wants you to go\nlet s:cposet=&cpoptions\nset cpo-=C\nsetlocal efm=\n      \\%EFile\\ \\\"%f\\\"\\\\,\\ line\\ %l\\\\,\\ characters\\ %c-%*\\\\d:,\n      \\%EFile\\ \\\"%f\\\"\\\\,\\ line\\ %l\\\\,\\ character\\ %c:%m,\n      \\%+EReference\\ to\\ unbound\\ regexp\\ name\\ %m,\n      \\%Eocamlyacc:\\ e\\ -\\ line\\ %l\\ of\\ \\\"%f\\\"\\\\,\\ %m,\n      \\%Wocamlyacc:\\ w\\ -\\ %m,\n      \\%-Zmake%.%#,\n      \\%C%m,\n      \\%D%*\\\\a[%*\\\\d]:\\ Entering\\ directory\\ `%f',\n      \\%X%*\\\\a[%*\\\\d]:\\ Leaving\\ directory\\ `%f',\n      \\%D%*\\\\a:\\ Entering\\ directory\\ `%f',\n      \\%X%*\\\\a:\\ Leaving\\ directory\\ `%f',\n      \\%DMaking\\ %*\\\\a\\ in\\ %f\n\n\" Add mappings, unless the user didn't want this.\nif !exists(\"no_plugin_maps\") && !exists(\"no_ocaml_maps\")\n  \" (un)commenting\n  if !hasmapto('<Plug>Comment')\n    nmap <buffer> <LocalLeader>c <Plug>LUncomOn\n    vmap <buffer> <LocalLeader>c <Plug>BUncomOn\n    nmap <buffer> <LocalLeader>C <Plug>LUncomOff\n    vmap <buffer> <LocalLeader>C <Plug>BUncomOff\n  endif\n\n  nnoremap <buffer> <Plug>LUncomOn mz0i(* <ESC>$A *)<ESC>`z\n  nnoremap <buffer> <Plug>LUncomOff :s/^(\\* \\(.*\\) \\*)/\\1/<CR>:noh<CR>\n  vnoremap <buffer> <Plug>BUncomOn <ESC>:'<,'><CR>`<O<ESC>0i(*<ESC>`>o<ESC>0i*)<ESC>`<\n  vnoremap <buffer> <Plug>BUncomOff <ESC>:'<,'><CR>`<dd`>dd`<\n\n  if !hasmapto('<Plug>Abbrev')\n    iabbrev <buffer> ASF (assert false (* XXX *))\n    iabbrev <buffer> ASS (assert (0=1) (* XXX *))\n  endif\nendif\n\n\" Let % jump between structure elements (due to Issac Trotts)\nlet b:mw = ''\nlet b:mw = b:mw . ',\\<let\\>:\\<and\\>:\\(\\<in\\>\\|;;\\)'\nlet b:mw = b:mw . ',\\<if\\>:\\<then\\>:\\<else\\>'\nlet b:mw = b:mw . ',\\<\\(for\\|while\\)\\>:\\<do\\>:\\<done\\>,'\nlet b:mw = b:mw . ',\\<\\(object\\|sig\\|struct\\|begin\\)\\>:\\<end\\>'\nlet b:mw = b:mw . ',\\<\\(match\\|try\\)\\>:\\<with\\>'\nlet b:match_words = b:mw\n\nlet b:match_ignorecase=0\n\n\" switching between interfaces (.mli) and implementations (.ml)\nif !exists(\"g:did_ocaml_switch\")\n  let g:did_ocaml_switch = 1\n  map <LocalLeader>s :call OCaml_switch(0)<CR>\n  map <LocalLeader>S :call OCaml_switch(1)<CR>\n  fun OCaml_switch(newwin)\n    if (match(bufname(\"\"), \"\\\\.mli$\") >= 0)\n      let fname = substitute(bufname(\"\"), \"\\\\.mli$\", \".ml\", \"\")\n      if (a:newwin == 1)\n        exec \"new \" . fname\n      else\n        exec \"arge \" . fname\n      endif\n    elseif (match(bufname(\"\"), \"\\\\.ml$\") >= 0)\n      let fname = bufname(\"\") . \"i\"\n      if (a:newwin == 1)\n        exec \"new \" . fname\n      else\n        exec \"arge \" . fname\n      endif\n    endif\n  endfun\nendif\n\n\" Folding support\n\n\" Get the modeline because folding depends on indentation\nlet s:s = line2byte(line('.'))+col('.')-1\nif search('^\\s*(\\*:o\\?caml:')\n  let s:modeline = getline(\".\")\nelse\n  let s:modeline = \"\"\nendif\nif s:s > 0\n  exe 'goto' s:s\nendif\n\n\" Get the indentation params\nlet s:m = matchstr(s:modeline,'default\\s*=\\s*\\d\\+')\nif s:m != \"\"\n  let s:idef = matchstr(s:m,'\\d\\+')\nelseif exists(\"g:omlet_indent\")\n  let s:idef = g:omlet_indent\nelse\n  let s:idef = 2\nendif\nlet s:m = matchstr(s:modeline,'struct\\s*=\\s*\\d\\+')\nif s:m != \"\"\n  let s:i = matchstr(s:m,'\\d\\+')\nelseif exists(\"g:omlet_indent_struct\")\n  let s:i = g:omlet_indent_struct\nelse\n  let s:i = s:idef\nendif\n\n\" Set the folding method\nif exists(\"g:ocaml_folding\")\n  setlocal foldmethod=expr\n  setlocal foldexpr=OMLetFoldLevel(v:lnum)\nendif\n\n\" - Only definitions below, executed once -------------------------------------\n\nif exists(\"*OMLetFoldLevel\")\n  finish\nendif\n\nfunction s:topindent(lnum)\n  let l = a:lnum\n  while l > 0\n    if getline(l) =~ '\\s*\\%(\\<struct\\>\\|\\<sig\\>\\|\\<object\\>\\)'\n      return indent(l)\n    endif\n    let l = l-1\n  endwhile\n  return -s:i\nendfunction\n\nfunction OMLetFoldLevel(l)\n\n  \" This is for not merging blank lines around folds to them\n  if getline(a:l) !~ '\\S'\n    return -1\n  endif\n\n  \" We start folds for modules, classes, and every toplevel definition\n  if getline(a:l) =~ '^\\s*\\%(\\<val\\>\\|\\<module\\>\\|\\<class\\>\\|\\<type\\>\\|\\<method\\>\\|\\<initializer\\>\\|\\<inherit\\>\\|\\<exception\\>\\|\\<external\\>\\)'\n    exe 'return \">' (indent(a:l)/s:i)+1 '\"'\n  endif\n\n  \" Toplevel let are detected thanks to the indentation\n  if getline(a:l) =~ '^\\s*let\\>' && indent(a:l) == s:i+s:topindent(a:l)\n    exe 'return \">' (indent(a:l)/s:i)+1 '\"'\n  endif\n\n  \" We close fold on end which are associated to struct, sig or object.\n  \" We use syntax information to do that.\n  if getline(a:l) =~ '^\\s*end\\>' && synIDattr(synID(a:l, indent(a:l)+1, 0), \"name\") != \"ocamlKeyword\"\n    return (indent(a:l)/s:i)+1\n  endif\n\n  \" Folds end on ;;\n  if getline(a:l) =~ '^\\s*;;'\n    exe 'return \"<' (indent(a:l)/s:i)+1 '\"'\n  endif\n\n  \" Comments around folds aren't merged to them.\n  if synIDattr(synID(a:l, indent(a:l)+1, 0), \"name\") == \"ocamlComment\"\n    return -1\n  endif\n\n  return '='\nendfunction\n\n\" Vim support for OCaml .annot files (requires Vim with python support)\n\"\n\" Executing OCamlPrintType(<mode>) function will display in the Vim bottom\n\" line(s) the type of an ocaml value getting it from the corresponding .annot\n\" file (if any).  If Vim is in visual mode, <mode> should be \"visual\" and the\n\" selected ocaml value correspond to the highlighted text, otherwise (<mode>\n\" can be anything else) it corresponds to the literal found at the current\n\" cursor position.\n\"\n\" .annot files are parsed lazily the first time OCamlPrintType is invoked; is\n\" also possible to force the parsing using the OCamlParseAnnot() function.\n\"\n\" Typing '<LocalLeader>t' (usually ',t') will cause OCamlPrintType function \n\" to be invoked with the right argument depending on the current mode (visual \n\" or not).\n\"\n\" Copyright (C) <2003-2004> Stefano Zacchiroli <zack@bononia.it>\n\"\n\" Created:        Wed, 01 Oct 2003 18:16:22 +0200 zack\n\" LastModified:   Wed, 25 Aug 2004 18:28:39 +0200 zack\n\n\" '<LocalLeader>d' will find the definition of the name under the cursor\n\" and position cursor on it (only for current file) or print fully qualified name\n\" (for external definitions). (ocaml >= 3.11)\n\"\n\" Additionally '<LocalLeader>t' will show whether function call is tail call\n\" or not. Current implementation requires selecting the whole function call\n\" expression (in visual mode) to work. (ocaml >= 3.11)\n\"\n\" Copyright (C) 2009 <ygrek@autistici.org>\n\nif !has(\"python\")\n  finish\nendif\n\npython << EOF\n\nimport re\nimport os\nimport os.path\nimport string\nimport time\nimport vim\n\ndebug = False\n\nclass AnnExc(Exception):\n    def __init__(self, reason):\n        self.reason = reason\n\nno_annotations = AnnExc(\"No annotations (.annot) file found\")\nannotation_not_found = AnnExc(\"No type annotation found for the given text\")\ndefinition_not_found = AnnExc(\"No definition found for the given text\")\ndef malformed_annotations(lineno, reason):\n    return AnnExc(\"Malformed .annot file (line = %d, reason = %s)\" % (lineno,reason))\n\nclass Annotations:\n    \"\"\"\n      .annot ocaml file representation\n\n      File format (copied verbatim from caml-types.el)\n\n      file ::= block *\n      block ::= position <SP> position <LF> annotation *\n      position ::= filename <SP> num <SP> num <SP> num\n      annotation ::= keyword open-paren <LF> <SP> <SP> data <LF> close-paren\n\n      <SP> is a space character (ASCII 0x20)\n      <LF> is a line-feed character (ASCII 0x0A)\n      num is a sequence of decimal digits\n      filename is a string with the lexical conventions of O'Caml\n      open-paren is an open parenthesis (ASCII 0x28)\n      close-paren is a closed parenthesis (ASCII 0x29)\n      data is any sequence of characters where <LF> is always followed by\n           at least two space characters.\n\n      - in each block, the two positions are respectively the start and the\n        end of the range described by the block.\n      - in a position, the filename is the name of the file, the first num\n        is the line number, the second num is the offset of the beginning\n        of the line, the third num is the offset of the position itself.\n      - the char number within the line is the difference between the third\n        and second nums.\n\n      Possible keywords are \\\"type\\\", \\\"ident\\\" and \\\"call\\\".\n    \"\"\"\n\n    def __init__(self):\n        self.__filename = None  # last .annot parsed file\n        self.__ml_filename = None # as above but s/.annot/.ml/\n        self.__timestamp = None # last parse action timestamp\n        self.__annot = {}\n        self.__refs = {}\n        self.__calls = {}\n        self.__re = re.compile(\n          '^\"[^\"]*\"\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+\"[^\"]*\"\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)$')\n        self.__re_int_ref = re.compile('^int_ref\\s+(\\w+)\\s\"[^\"]*\"\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)')\n        self.__re_def_full = re.compile(\n          '^def\\s+(\\w+)\\s+\"[^\"]*\"\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+\"[^\"]*\"\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)$')\n        self.__re_def = re.compile('^def\\s+(\\w+)\\s\"[^\"]*\"\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+')\n        self.__re_ext_ref = re.compile('^ext_ref\\s+(\\S+)')\n        self.__re_kw = re.compile('^(\\w+)\\($')\n\n    def __parse(self, fname):\n        try:\n            f = open(fname)\n            self.__annot = {} # erase internal mappings when file is reparsed\n            self.__refs = {}\n            self.__calls = {}\n            line = f.readline() # position line\n            lineno = 1\n            while (line != \"\"):\n                m = self.__re.search(line)\n                if (not m):\n                    raise malformed_annotations(lineno,\"re doesn't match\")\n                line1 = int(m.group(1))\n                col1 = int(m.group(3)) - int(m.group(2))\n                line2 = int(m.group(4))\n                col2 = int(m.group(6)) - int(m.group(5))\n                while 1:\n                    line = f.readline() # keyword or position line\n                    lineno += 1\n                    m = self.__re_kw.search(line)\n                    if (not m):\n                        break\n                    desc = []\n                    line = f.readline() # description\n                    lineno += 1\n                    if (line == \"\"): raise malformed_annotations(lineno,\"no content\")\n                    while line != \")\\n\":\n                        desc.append(string.strip(line))\n                        line = f.readline()\n                        lineno += 1\n                        if (line == \"\"): raise malformed_annotations(lineno,\"bad content\")\n                    desc = string.join(desc, \"\\n\")\n                    key = ((line1, col1), (line2, col2))\n                    if (m.group(1) == \"type\"):\n                        if not self.__annot.has_key(key):\n                            self.__annot[key] = desc\n                    if (m.group(1) == \"call\"): # region, accessible only in visual mode\n                        if not self.__calls.has_key(key):\n                            self.__calls[key] = desc\n                    if (m.group(1) == \"ident\"):\n                        m = self.__re_int_ref.search(desc)\n                        if m:\n                          line = int(m.group(2))\n                          col = int(m.group(4)) - int(m.group(3))\n                          name = m.group(1)\n                        else:\n                          line = -1\n                          col = -1\n                          m = self.__re_ext_ref.search(desc)\n                          if m:\n                            name = m.group(1)\n                          else:\n                            line = -2\n                            col = -2\n                            name = desc\n                        if not self.__refs.has_key(key):\n                          self.__refs[key] = (line,col,name)\n            f.close()\n            self.__filename = fname\n            self.__ml_filename = vim.current.buffer.name\n            self.__timestamp = int(time.time())\n        except IOError:\n            raise no_annotations\n\n    def parse(self):\n        annot_file = os.path.splitext(vim.current.buffer.name)[0] + \".annot\"\n        previous_head, head, tail = '***', annot_file, ''\n        while not os.path.isfile(annot_file) and head != previous_head:\n            previous_head = head\n            head, x = os.path.split(head)\n            if tail == '':\n              tail = x\n            else:\n              os.path.join(x, tail)\n            annot_file = os.path.join(head, '_build', tail)\n        self.__parse(annot_file)\n\n    def check_file(self):\n        if vim.current.buffer.name == None:\n            raise no_annotations\n        if vim.current.buffer.name != self.__ml_filename or  \\\n          os.stat(self.__filename).st_mtime > self.__timestamp:\n            self.parse()\n\n    def get_type(self, (line1, col1), (line2, col2)):\n        if debug:\n            print line1, col1, line2, col2\n        self.check_file()\n        try:\n            try:\n              extra = self.__calls[(line1, col1), (line2, col2)]\n              if extra == \"tail\":\n                extra = \" (* tail call *)\"\n              else:\n                extra = \" (* function call *)\"\n            except KeyError:\n              extra = \"\"\n            return self.__annot[(line1, col1), (line2, col2)] + extra\n        except KeyError:\n            raise annotation_not_found\n\n    def get_ident(self, (line1, col1), (line2, col2)):\n        if debug:\n            print line1, col1, line2, col2\n        self.check_file()\n        try:\n            (line,col,name) = self.__refs[(line1, col1), (line2, col2)]\n            if line >= 0 and col >= 0:\n              vim.command(\"normal \"+str(line)+\"gg\"+str(col+1)+\"|\")\n              #current.window.cursor = (line,col)\n            if line == -2:\n              m = self.__re_def_full.search(name)\n              if m:\n                l2 = int(m.group(5))\n                c2 = int(m.group(7)) - int(m.group(6))\n                name = m.group(1)\n              else:\n                m = self.__re_def.search(name)\n                if m:\n                  l2 = int(m.group(2))\n                  c2 = int(m.group(4)) - int(m.group(3))\n                  name = m.group(1)\n                else:\n                  l2 = -1\n              if False and l2 >= 0:\n                # select region\n                if c2 == 0 and l2 > 0:\n                  vim.command(\"normal v\"+str(l2-1)+\"gg\"+\"$\")\n                else:\n                  vim.command(\"normal v\"+str(l2)+\"gg\"+str(c2)+\"|\")\n            return name\n        except KeyError:\n            raise definition_not_found\n\nword_char_RE = re.compile(\"^[\\w.]$\")\n\n  # TODO this function should recognize ocaml literals, actually it's just an\n  # hack that recognize continuous sequences of word_char_RE above\ndef findBoundaries(line, col):\n    \"\"\" given a cursor position (as returned by vim.current.window.cursor)\n    return two integers identify the beggining and end column of the word at\n    cursor position, if any. If no word is at the cursor position return the\n    column cursor position twice \"\"\"\n    left, right = col, col\n    line = line - 1 # mismatch vim/python line indexes\n    (begin_col, end_col) = (0, len(vim.current.buffer[line]) - 1)\n    try:\n        while word_char_RE.search(vim.current.buffer[line][left - 1]):\n            left = left - 1\n    except IndexError:\n        pass\n    try:\n        while word_char_RE.search(vim.current.buffer[line][right + 1]):\n            right = right + 1\n    except IndexError:\n        pass\n    return (left, right)\n\nannot = Annotations() # global annotation object\n\ndef get_marks(mode):\n    if mode == \"visual\":  # visual mode: lookup highlighted text\n        (line1, col1) = vim.current.buffer.mark(\"<\")\n        (line2, col2) = vim.current.buffer.mark(\">\")\n    else: # any other mode: lookup word at cursor position\n        (line, col) = vim.current.window.cursor\n        (col1, col2) = findBoundaries(line, col)\n        (line1, line2) = (line, line)\n    begin_mark = (line1, col1)\n    end_mark = (line2, col2 + 1)\n    return (begin_mark,end_mark)\n\ndef printOCamlType(mode):\n    try:\n        (begin_mark,end_mark) = get_marks(mode)\n        print annot.get_type(begin_mark, end_mark)\n    except AnnExc, exc:\n        print exc.reason\n\ndef gotoOCamlDefinition(mode):\n    try:\n        (begin_mark,end_mark) = get_marks(mode)\n        print annot.get_ident(begin_mark, end_mark)\n    except AnnExc, exc:\n        print exc.reason\n\ndef parseOCamlAnnot():\n    try:\n        annot.parse()\n    except AnnExc, exc:\n        print exc.reason\n\nEOF\n\nfun! OCamlPrintType(current_mode)\n  if (a:current_mode == \"visual\")\n    python printOCamlType(\"visual\")\n  else\n    python printOCamlType(\"normal\")\n  endif\nendfun\n\nfun! OCamlGotoDefinition(current_mode)\n  if (a:current_mode == \"visual\")\n    python gotoOCamlDefinition(\"visual\")\n  else\n    python gotoOCamlDefinition(\"normal\")\n  endif\nendfun\n\nfun! OCamlParseAnnot()\n  python parseOCamlAnnot()\nendfun\n\nmap <LocalLeader>t :call OCamlPrintType(\"normal\")<RETURN>\nvmap <LocalLeader>t :call OCamlPrintType(\"visual\")<RETURN>\nmap <LocalLeader>d :call OCamlGotoDefinition(\"normal\")<RETURN>\nvmap <LocalLeader>d :call OCamlGotoDefinition(\"visual\")<RETURN>\n\nlet &cpoptions=s:cposet\nunlet s:cposet\n\n\" vim:sw=2\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/opencl.vim",
    "content": "if exists(\"b:did_ftplugin\") | finish | endif\n\nif version > 600\n  runtime! ftplugin/c.vim\nendif\n\n\" Smaller tab stops.\nsetlocal tabstop=4\nsetlocal shiftwidth=4\n\n\" Smart tabbing/indenting\nsetlocal smarttab\nsetlocal smartindent\n\nlet b:did_ftplugin = 1\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/perl.vim",
    "content": "\" Vim filetype plugin file\n\" Language:      Perl\n\" Maintainer:    vim-perl <vim-perl@googlegroups.com>\n\" Homepage:      http://github.com/vim-perl/vim-perl\n\" Bugs/requests: http://github.com/vim-perl/vim-perl/issues\n\" Last Change:   {{LAST_CHANGE}}\n\nif exists(\"b:did_ftplugin\") | finish | endif\nlet b:did_ftplugin = 1\n\n\" Make sure the continuation lines below do not cause problems in\n\" compatibility mode.\nlet s:save_cpo = &cpo\nset cpo-=C\n\nsetlocal formatoptions-=t\nsetlocal formatoptions+=crqol\nsetlocal keywordprg=perldoc\\ -f\n\nsetlocal comments=:#\nsetlocal commentstring=#%s\n\n\" Change the browse dialog on Win32 to show mainly Perl-related files\nif has(\"gui_win32\")\n    let b:browsefilter = \"Perl Source Files (*.pl)\\t*.pl\\n\" .\n\t\t       \\ \"Perl Modules (*.pm)\\t*.pm\\n\" .\n\t\t       \\ \"Perl Documentation Files (*.pod)\\t*.pod\\n\" .\n\t\t       \\ \"All Files (*.*)\\t*.*\\n\"\nendif\n\n\" Provided by Ned Konz <ned at bike-nomad dot com>\n\"---------------------------------------------\nsetlocal include=\\\\<\\\\(use\\\\\\|require\\\\)\\\\>\nsetlocal includeexpr=substitute(substitute(substitute(v:fname,'::','/','g'),'->\\*','',''),'$','.pm','')\nsetlocal define=[^A-Za-z_]\nsetlocal iskeyword+=:\n\n\" The following line changes a global variable but is necessary to make\n\" gf and similar commands work. Thanks to Andrew Pimlott for pointing\n\" out the problem. If this causes a problem for you, add an\n\" after/ftplugin/perl.vim file that contains\n\"       set isfname-=:\nset isfname+=:\n\n\" Set this once, globally.\nif !exists(\"perlpath\")\n    if executable(\"perl\")\n      try\n\tif &shellxquote != '\"'\n\t    let perlpath = system('perl -e \"print join(q/,/,@INC)\"')\n\telse\n\t    let perlpath = system(\"perl -e 'print join(q/,/,@INC)'\")\n\tendif\n\tlet perlpath = substitute(perlpath,',.$',',,','')\n      catch /E145:/\n\tlet perlpath = \".,,\"\n      endtry\n    else\n\t\" If we can't call perl to get its path, just default to using the\n\t\" current directory and the directory of the current file.\n\tlet perlpath = \".,,\"\n    endif\nendif\n\n\" Append perlpath to the existing path value, if it is set.  Since we don't\n\" use += to do it because of the commas in perlpath, we have to handle the\n\" global / local settings, too.\nif &l:path == \"\"\n    if &g:path == \"\"\n        let &l:path=perlpath\n    else\n        let &l:path=&g:path.\",\".perlpath\n    endif\nelse\n    let &l:path=&l:path.\",\".perlpath\nendif\n\"---------------------------------------------\n\n\" Undo the stuff we changed.\nlet b:undo_ftplugin = \"setlocal fo< com< cms< inc< inex< def< isf< kp< path<\" .\n\t    \\\t      \" | unlet! b:browsefilter\"\n\n\" proper matching for matchit plugin\nlet b:match_skip = 's:comment\\|string\\|perlQQ\\|perlShellCommand\\|perlHereDoc\\|perlSubstitution\\|perlTranslation\\|perlMatch\\|perlFormatField'\nlet b:match_words = '\\<if\\>:\\<elsif\\>:\\<else\\>'\n\n\" Restore the saved compatibility options.\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/perl6.vim",
    "content": "\" Vim filetype plugin file\n\" Language:      Perl 6\n\" Maintainer:    vim-perl <vim-perl@googlegroups.com>\n\" Homepage:      http://github.com/vim-perl/vim-perl\n\" Bugs/requests: http://github.com/vim-perl/vim-perl/issues\n\" Last Change:   {{LAST_CHANGE}}\n\" Contributors:  Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>\n\"\n\" Based on ftplugin/perl.vim by Dan Sharp <dwsharp at hotmail dot com>\n\nif exists(\"b:did_ftplugin\") | finish | endif\nlet b:did_ftplugin = 1\n\n\" Make sure the continuation lines below do not cause problems in\n\" compatibility mode.\nlet s:save_cpo = &cpo\nset cpo-=C\n\nsetlocal formatoptions-=t\nsetlocal formatoptions+=crqol\nsetlocal keywordprg=p6doc\n\nsetlocal comments=:#\nsetlocal commentstring=#%s\n\n\" Change the browse dialog on Win32 to show mainly Perl-related files\nif has(\"gui_win32\")\n    let b:browsefilter = \"Perl Source Files (*.pl)\\t*.pl\\n\" .\n               \\ \"Perl Modules (*.pm)\\t*.pm\\n\" .\n               \\ \"Perl Documentation Files (*.pod)\\t*.pod\\n\" .\n               \\ \"All Files (*.*)\\t*.*\\n\"\nendif\n\n\" Provided by Ned Konz <ned at bike-nomad dot com>\n\"---------------------------------------------\nsetlocal include=\\\\<\\\\(use\\\\\\|require\\\\)\\\\>\nsetlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.pm','')\nsetlocal define=[^A-Za-z_]\n\n\" The following line changes a global variable but is necessary to make\n\" gf and similar commands work. Thanks to Andrew Pimlott for pointing out\n\" the problem. If this causes a \" problem for you, add an\n\" after/ftplugin/perl6.vim file that contains\n\"       set isfname-=:\nset isfname+=:\nsetlocal iskeyword=48-57,_,A-Z,a-z,:,-\n\n\" Set this once, globally.\nif !exists(\"perlpath\")\n    if executable(\"perl6\")\n        try\n            if &shellxquote != '\"'\n                let perlpath = system('perl6 -e  \"@*INC.join(q/,/).say\"')\n            else\n                let perlpath = system(\"perl6 -e  '@*INC.join(q/,/).say'\")\n            endif\n            let perlpath = substitute(perlpath,',.$',',,','')\n        catch /E145:/\n            let perlpath = \".,,\"\n        endtry\n    else\n        \" If we can't call perl to get its path, just default to using the\n        \" current directory and the directory of the current file.\n        let perlpath = \".,,\"\n    endif\nendif\n\nlet &l:path=perlpath\n\"---------------------------------------------\n\n\" Undo the stuff we changed.\nlet b:undo_ftplugin = \"setlocal fo< com< cms< inc< inex< def< isk<\" .\n        \\         \" | unlet! b:browsefilter\"\n\n\" Restore the saved compatibility options.\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/puppet.vim",
    "content": "\" Vim filetype plugin\n\" Language:     Puppet\n\" Maintainer:   Todd Zullinger <tmz@pobox.com>\n\" Last Change:  2009 Aug 19\n\" vim: set sw=4 sts=4:\n\nif exists(\"b:did_ftplugin\")\n    finish\nendif\nlet b:did_ftplugin = 1\n\nif !exists(\"no_plugin_maps\") && !exists(\"no_puppet_maps\")\n    if !hasmapto(\"<Plug>AlignRange\")\n        map <buffer> <LocalLeader>= <Plug>AlignRange\n    endif\nendif\n\nnoremap <buffer> <unique> <script> <Plug>AlignArrows :call <SID>AlignArrows()<CR>\nnoremap <buffer> <unique> <script> <Plug>AlignRange :call <SID>AlignRange()<CR>\n\niabbrev => =><C-R>=<SID>AlignArrows('=>')<CR>\niabbrev +> +><C-R>=<SID>AlignArrows('+>')<CR>\n\nif exists('*s:AlignArrows')\n    finish\nendif\n\nlet s:arrow_re = '[=+]>'\nlet s:selector_re = '[=+]>\\s*\\$.*\\s*?\\s*{\\s*$'\n\n\" set keywordprg to 'pi' (alias for puppet describe)\n\" this lets K invoke pi for word under cursor\nsetlocal keywordprg=puppet\\ describe\n\nfunction! s:AlignArrows(op)\n    let cursor_pos = getpos('.')\n    let lnum = line('.')\n    let line = getline(lnum)\n    if line !~ s:arrow_re\n        return\n    endif\n    let pos = stridx(line, a:op)\n    let start = lnum\n    let end = lnum\n    let pnum = lnum - 1\n    while 1\n        let pline = getline(pnum)\n        if pline !~ s:arrow_re || pline =~ s:selector_re\n            break\n        endif\n        let start = pnum\n        let pnum -= 1\n    endwhile\n    let cnum = end\n    while 1\n        let cline = getline(cnum)\n        if cline !~ s:arrow_re ||\n                \\ (indent(cnum) != indent(cnum+1) && getline(cnum+1) !~ '\\s*}')\n            break\n        endif\n        let end = cnum\n        let cnum += 1\n    endwhile\n    call s:AlignSection(start, end)\n    let cursor_pos[2] = stridx(getline('.'), a:op) + strlen(a:op) + 1\n    call setpos('.', cursor_pos)\n    return ''\nendfunction\n\nfunction! s:AlignRange() range\n    call s:AlignSection(a:firstline, a:lastline)\nendfunction\n\n\" AlignSection and AlignLine are from the vim wiki:\n\" http://vim.wikia.com/wiki/Regex-based_text_alignment\nfunction! s:AlignSection(start, end)\n    let extra = 1\n    let sep = s:arrow_re\n    let maxpos = 0\n    let section = getline(a:start, a:end)\n    for line in section\n        let pos = match(line, ' *'.sep)\n        if maxpos < pos\n            let maxpos = pos\n        endif\n    endfor\n    call map(section, 's:AlignLine(v:val, sep, maxpos, extra)')\n    call setline(a:start, section)\nendfunction\n\nfunction! s:AlignLine(line, sep, maxpos, extra)\n    let m = matchlist(a:line, '\\(.\\{-}\\) \\{-}\\('.a:sep.'.*\\)')\n    if empty(m)\n        return a:line\n    endif\n    let spaces = repeat(' ', a:maxpos - strlen(m[1]) + a:extra)\n    return m[1] . spaces . m[2]\nendfunction\n\n\" detect if we are in a module and set variables for classpath (autoloader),\n\" modulename, modulepath, and classname\n\" useful to use in templates\nfunction! s:SetModuleVars()\n\n  \" set these to any dirs you want to stop searching on\n  \" useful to stop vim from spinning disk looking all over for init.pp\n  \" probably only a macosx problem with /tmp since it's really /private/tmp\n  \" but it's here if you find vim spinning on new files in certain places\n  if !exists(\"g:puppet_stop_dirs\")\n    let g:puppet_stop_dirs = '/tmp;/private/tmp'\n  endif\n\n  \" search path for init.pp\n  let b:search_path = './**'\n  let b:search_path = b:search_path . ';' . getcwd() . ';' . g:puppet_stop_dirs\n  \n  \" find what we assume to be our module dir\n  let b:initpp = findfile(\"init.pp\", b:search_path) \" find an init.pp up or down\n  let b:module_path = fnamemodify(b:initpp, \":p:h:h\") \" full path to module name\n  let b:module_name = fnamemodify(b:module_path, \":t\") \" just the module name\n\n  \" sub out the full path to the module with the name and replace slashes with ::\n  let b:classpath = fnamemodify(expand(\"%:p:r\"), ':s#' . b:module_path . '/manifests#' . b:module_name . '#'. \":gs?/?::?\")\n  let b:classname = expand(\"%:t:r\")\n\n  \" if we don't start with a word we didn't replace the module_path \n  \" probably b/c we couldn't find an init.pp / not a module\n  \" so we assume that root of the filename is the class (sane for throwaway\n  \" manifests\n  if b:classpath =~ '^::'\n    let b:classpath = b:classname\n  endif\nendfunction\n\nif exists(\"g:puppet_module_detect\")\n  call s:SetModuleVars()\nendif\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/r.vim",
    "content": "\" ftplugin for R files\n\"\n\" Author: Iago Mosqueira <i.mosqueira@ic.ac.uk>\n\" Author: Johannes Ranke <jranke@uni-bremen.de>\n\" Author: Fernando Henrique Ferraz Pereira da Rosa <feferraz@ime.usp.br>\n\" Maintainer: Johannes Ranke <jranke@uni-bremen.de>\n\" Last Change: 2007 Nov 21\n\" SVN: $Id: r.vim 75 2007-11-21 13:34:02Z ranke $\n\"\n\" Code written in vim is sent to R through a perl pipe\n\" [funnel.pl, by Larry Clapp <vim@theclapp.org>], as individual lines,\n\" blocks, or the whole file.\n\n\" Press <F2> to open a new xterm with a new R interpreter listening\n\" to its standard input (you can type R commands into the xterm)\n\" as well as to code pasted from within vim.\n\"\n\" After selecting a visual block, 'r' sends it to the R interpreter\n\"\n\" In insert mode, <M-Enter> sends the active line to R and moves to the next\n\" line (write and process mode).\n\"\n\" Maps:\n\"       <F2>\t\tStart a listening R interpreter in new xterm\n\"       <F3>\t\tStart a listening R-devel interpreter in new xterm\n\"       <F4>\t\tStart a listening R --vanilla interpreter in new xterm\n\"       <F5>        Run current file\n\"       <F9>        Run line under cursor\n\"       r\t        Run visual block\n\"       <M-Enter>   Write and process\n\n\" Only do this when not yet done for this buffer\nif exists(\"b:did_ftplugin\")\n  finish\nendif\n\n\" Don't load another plugin for this buffer\nlet b:did_ftplugin = 1\n\n\" Disable backup for .r-pipe\nsetl backupskip=.*pipe\n\n\" Set tabstop so it is compatible with the emacs edited code. Personally, I\n\" prefer shiftwidth=2, which I have in my .vimrc anyway\nset expandtab\nset shiftwidth=4\nset tabstop=8\n\n\" Start a listening R interpreter in new xterm\nnoremap <buffer> <F2> :!xterm -T 'R' -e funnel.pl ~/.r-pipe \"R && echo -e 'Interpreter has finished. Exiting. Goodbye.\\n'\"&<CR><CR>\n\n\" Start a listening R-devel interpreter in new xterm\nnoremap <buffer> <F3> :!xterm -T 'R' -e funnel.pl ~/.r-pipe \"R-devel && echo 'Interpreter has finished. Exiting. Goodbye.'\"&<CR><CR>\n\n\" Start a listening R --vanilla interpreter in new xterm\nnoremap <buffer> <F4> :!xterm -T 'R' -e funnel.pl ~/.r-pipe \"R -vanilla && echo 'Interpreter has finished. Exiting. Goodbye.'\"&<CR><CR>\n\n\" Send line under cursor to R\nnoremap <buffer> <F9> :execute line(\".\") 'w >> ~/.r-pipe'<CR>\ninoremap <buffer> <F9> <Esc> :execute line(\".\") 'w >> ~/.r-pipe'<CR>\n\n\" Send visual selected block to R\nvnoremap <buffer> r :w >> ~/.r-pipe<CR>\n\n\" Write and process mode (somehow mapping <C-Enter> does not work)\ninoremap <M-Enter> <Esc>:execute line(\".\") 'w >> ~/.r-pipe'<CR>o\n\n\" Send current file to R\nnoremap <buffer> <F5> :execute '1 ,' line(\"$\") 'w >> ~/.r-pipe' <CR><CR>\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/rhelp.vim",
    "content": "\" ftplugin for R help files\n\"\n\" Author: Johannes Ranke <jranke@uni-bremen.de>\n\" Last Change: 2007 Nov 21\n\" SVN: $Id: rhelp.vim 75 2007-11-21 13:34:02Z ranke $\n\"\n\" Usage:\n\"\n\" Press <F2> to open a new xterm with a new R interpreter listening\n\" to its standard input (you can type R commands into the xterm)\n\" as well as to code pasted from within vim.\n\"\n\" After selecting a visual block, 'r' sends it to the R interpreter\n\"\n\" Add to filetypes.vim, if you don't use vim 7\n\"   au BufNewFile,BufRead *.Rd,*.rd   setf rhelp\n\"\n\" Maps:\n\"       <F2>\t\tStart a listening R interpreter in new xterm\n\"       <F9>        Run line under cursor\n\"       r\t        Run visual block\n\"       <M-Enter>   Write and process R code\n \n\" Only do this when not yet done for this buffer\nif exists(\"b:did_ftplugin\")\n  finish\nendif\n\n\" Don't load another plugin for this buffer\nlet b:did_ftplugin = 1\n\n\" Set tabbing\nset expandtab\nset tabstop=2\nset shiftwidth=2\n\n\" Start a listening R interpreter in new xterm\nnoremap <buffer> <F2> :!xterm -T 'R' -e funnel.pl ~/.r-pipe \"R && echo -e 'Interpreter has finished. Exiting. Goodbye.\\n'\"&<CR><CR>\n\n\" Send line under cursor to R\nnoremap <buffer> <F9> :execute line(\".\") 'w >> ~/.r-pipe'<CR>\ninoremap <buffer> <F9> <Esc> :execute line(\".\") 'w >> ~/.r-pipe'<CR>\n\n\" Send visual selected block to R\nvnoremap <buffer> r :w >> ~/.r-pipe<CR>\n\n\" Write and process mode (somehow mapping <C-Enter> does not work)\ninoremap <M-Enter> <Esc>:execute line(\".\") 'w >> ~/.r-pipe'<CR>o\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/rnoweb.vim",
    "content": "\" ftplugin for Sweave files containing both LaTeX and R code\n\"\n\" Maintainer: Johannes Ranke <jranke@uni-bremen.de>\n\" Last Change: 2007 Nov 21\n\" SVN: $Id: rnoweb.vim 75 2007-11-21 13:34:02Z ranke $\n\"\n\" Usage:\n\"\n\" Press <F2> to open a new xterm with a new R interpreter listening\n\" to its standard input (you can type R commands into the xterm)\n\" as well as to code pasted from within vim.\n\"\n\" A Makefile for producing R noweb files is in included in my Vim script\n\" R.vim:\n\" \thttp://www.vim.org/scripts/script.php?script_id=1048\n\" You can also look in my SVN repository under:\n\" \thttp://kri/viewcvs/*checkout*/Makefile.rnoweb?root=vim\n\"\n\"\n\" After selecting a visual block, 'r' sends it to the R interpreter\n\"\n\" Add to filetypes.vim, if you don't use vim 7\n\"   au BufNewFile,BufRead *.Rnw,*.rnw   setf rnoweb\n\" and/or\n\"   au BufNewFile,BufRead *.Snw,*.snw   setf rnoweb\n\"\n\" Maps:\n\"       <F2>\t\tStart a listening R interpreter in new xterm\n\"       <F9>        Run line under cursor\n\"       r\t        Run visual block\n\"       <M-Enter>   Write and process R code\n\n\" Only do this when not yet done for this buffer\nif exists(\"b:did_ftplugin\")\n  finish\nendif\n\n\" Don't load another plugin for this buffer\nlet b:did_ftplugin = 1\n\n\" Disable backup for .r-pipe\nsetl backupskip=.*pipe\n\n\" Set R friendly tabbing\nset expandtab\nset shiftwidth=2\n\n\" Start a listening R interpreter in new xterm\nnoremap <buffer> <F2> :!xterm -T 'R' -e funnel.pl ~/.r-pipe \"R && echo -e 'Interpreter has finished. Exiting. Goodbye.\\n'\"&<CR><CR>\n\n\" Send line under cursor to R\nnoremap <buffer> <F9> :execute line(\".\") 'w >> ~/.r-pipe'<CR>\ninoremap <buffer> <F9> <Esc> :execute line(\".\") 'w >> ~/.r-pipe'<CR>\n\n\" Send visual selected block to R\nvnoremap <buffer> r :w >> ~/.r-pipe<CR>\n\n\" Write and process mode (somehow mapping <C-Enter> does not work)\ninoremap <M-Enter> <Esc>:execute line(\".\") 'w >> ~/.r-pipe'<CR>o\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/ruby.vim",
    "content": "\" Vim filetype plugin\n\" Language:\t\tRuby\n\" Maintainer:\t\tTim Pope <vimNOSPAM@tpope.org>\n\" URL:\t\t\thttps://github.com/vim-ruby/vim-ruby\n\" Release Coordinator:  Doug Kearns <dougkearns@gmail.com>\n\" ----------------------------------------------------------------------------\n\nif (exists(\"b:did_ftplugin\"))\n  finish\nendif\nlet b:did_ftplugin = 1\n\nlet s:cpo_save = &cpo\nset cpo&vim\n\nif has(\"gui_running\") && !has(\"gui_win32\")\n  setlocal keywordprg=ri\\ -T\\ -f\\ bs\nelse\n  setlocal keywordprg=ri\nendif\n\n\" Matchit support\nif exists(\"loaded_matchit\") && !exists(\"b:match_words\")\n  let b:match_ignorecase = 0\n\n  let b:match_words =\n\t\\ '\\<\\%(if\\|unless\\|case\\|while\\|until\\|for\\|do\\|class\\|module\\|def\\|begin\\)\\>=\\@!' .\n\t\\ ':' .\n\t\\ '\\<\\%(else\\|elsif\\|ensure\\|when\\|rescue\\|break\\|redo\\|next\\|retry\\)\\>' .\n\t\\ ':' .\n\t\\ '\\<end\\>' .\n\t\\ ',{:},\\[:\\],(:)'\n\n  let b:match_skip =\n\t\\ \"synIDattr(synID(line('.'),col('.'),0),'name') =~ '\" .\n\t\\ \"\\\\<ruby\\\\%(String\\\\|StringDelimiter\\\\|ASCIICode\\\\|Escape\\\\|\" .\n        \\ \"Regexp\\\\|RegexpDelimiter\\\\|\" .\n\t\\ \"Interpolation\\\\|NoInterpolation\\\\|Comment\\\\|Documentation\\\\|\" .\n\t\\ \"ConditionalModifier\\\\|RepeatModifier\\\\|OptionalDo\\\\|\" .\n\t\\ \"Function\\\\|BlockArgument\\\\|KeywordAsMethod\\\\|ClassVariable\\\\|\" .\n\t\\ \"InstanceVariable\\\\|GlobalVariable\\\\|Symbol\\\\)\\\\>'\"\nendif\n\nsetlocal formatoptions-=t formatoptions+=croql\n\nsetlocal include=^\\\\s*\\\\<\\\\(load\\\\>\\\\\\|require\\\\>\\\\\\|autoload\\\\s*:\\\\=[\\\"']\\\\=\\\\h\\\\w*[\\\"']\\\\=,\\\\)\nsetlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.rb','')\nsetlocal suffixesadd=.rb\n\nif exists(\"&ofu\") && has(\"ruby\")\n  setlocal omnifunc=rubycomplete#Complete\nendif\n\n\" To activate, :set ballooneval\nif has('balloon_eval') && exists('+balloonexpr')\n  setlocal balloonexpr=RubyBalloonexpr()\nendif\n\n\n\" TODO:\n\"setlocal define=^\\\\s*def\n\nsetlocal comments=:#\nsetlocal commentstring=#\\ %s\n\nif !exists('g:ruby_version_paths')\n  let g:ruby_version_paths = {}\nendif\n\nfunction! s:query_path(root)\n  let code = \"print $:.join %q{,}\"\n  if &shell =~# 'sh' && $PATH !~# '\\s'\n    let prefix = 'env PATH='.$PATH.' '\n  else\n    let prefix = ''\n  endif\n  if &shellxquote == \"'\"\n    let path_check = prefix.'ruby -e \"' . code . '\"'\n  else\n    let path_check = prefix.\"ruby -e '\" . code . \"'\"\n  endif\n\n  let cd = haslocaldir() ? 'lcd' : 'cd'\n  let cwd = getcwd()\n  try\n    exe cd fnameescape(a:root)\n    let path = split(system(path_check),',')\n    exe cd fnameescape(cwd)\n    return path\n  finally\n    exe cd fnameescape(cwd)\n  endtry\nendfunction\n\nfunction! s:build_path(path)\n  let path = join(map(copy(a:path), 'v:val ==# \".\" ? \"\" : v:val'), ',')\n  if &g:path !~# '\\v^\\.%(,/%(usr|emx)/include)=,,$'\n    let path = substitute(&g:path,',,$',',','') . ',' . path\n  endif\n  return path\nendfunction\n\nif !exists('b:ruby_version') && !exists('g:ruby_path') && isdirectory(expand('%:p:h'))\n  let s:version_file = findfile('.ruby-version', '.;')\n  if !empty(s:version_file)\n    let b:ruby_version = get(readfile(s:version_file, '', 1), '')\n    if !has_key(g:ruby_version_paths, b:ruby_version)\n      let g:ruby_version_paths[b:ruby_version] = s:query_path(fnamemodify(s:version_file, ':p:h'))\n    endif\n  endif\nendif\n\nif exists(\"g:ruby_path\")\n  let s:ruby_path = type(g:ruby_path) == type([]) ? join(g:ruby_path, ',') : g:ruby_path\nelseif has_key(g:ruby_version_paths, get(b:, 'ruby_version', ''))\n  let s:ruby_paths = g:ruby_version_paths[b:ruby_version]\n  let s:ruby_path = s:build_path(s:ruby_paths)\nelse\n  if !exists('g:ruby_default_path')\n    if has(\"ruby\") && has(\"win32\")\n      ruby ::VIM::command( 'let g:ruby_default_path = split(\"%s\",\",\")' % $:.join(%q{,}) )\n    elseif executable('ruby')\n      let g:ruby_default_path = s:query_path($HOME)\n    else\n      let g:ruby_default_path = map(split($RUBYLIB,':'), 'v:val ==# \".\" ? \"\" : v:val')\n    endif\n  endif\n  let s:ruby_paths = g:ruby_default_path\n  let s:ruby_path = s:build_path(s:ruby_paths)\nendif\n\nif stridx(&l:path, s:ruby_path) == -1\n  let &l:path = s:ruby_path\nendif\nif exists('s:ruby_paths') && stridx(&l:tags, join(map(copy(s:ruby_paths),'v:val.\"/tags\"'),',')) == -1\n  let &l:tags = &tags . ',' . join(map(copy(s:ruby_paths),'v:val.\"/tags\"'),',')\nendif\n\nif has(\"gui_win32\") && !exists(\"b:browsefilter\")\n  let b:browsefilter = \"Ruby Source Files (*.rb)\\t*.rb\\n\" .\n                     \\ \"All Files (*.*)\\t*.*\\n\"\nendif\n\nlet b:undo_ftplugin = \"setl fo< inc< inex< sua< def< com< cms< path< tags< kp<\"\n      \\.\"| unlet! b:browsefilter b:match_ignorecase b:match_words b:match_skip\"\n      \\.\"| if exists('&ofu') && has('ruby') | setl ofu< | endif\"\n      \\.\"| if has('balloon_eval') && exists('+bexpr') | setl bexpr< | endif\"\n\nif !exists(\"g:no_plugin_maps\") && !exists(\"g:no_ruby_maps\")\n  nnoremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\\<def\\>','rubyDefine','b','n')<CR>\n  nnoremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\\<def\\>','rubyDefine','','n')<CR>\n  nnoremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\\<end\\>','rubyDefine','b','n')<CR>\n  nnoremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\\<end\\>','rubyDefine','','n')<CR>\n  xnoremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\\<def\\>','rubyDefine','b','v')<CR>\n  xnoremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\\<def\\>','rubyDefine','','v')<CR>\n  xnoremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\\<end\\>','rubyDefine','b','v')<CR>\n  xnoremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\\<end\\>','rubyDefine','','v')<CR>\n\n  nnoremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\\<\\%(class\\<Bar>module\\)\\>','rubyModule\\<Bar>rubyClass','b','n')<CR>\n  nnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\\<\\%(class\\<Bar>module\\)\\>','rubyModule\\<Bar>rubyClass','','n')<CR>\n  nnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\\<end\\>','rubyModule\\<Bar>rubyClass','b','n')<CR>\n  nnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\\<end\\>','rubyModule\\<Bar>rubyClass','','n')<CR>\n  xnoremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\\<\\%(class\\<Bar>module\\)\\>','rubyModule\\<Bar>rubyClass','b','v')<CR>\n  xnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\\<\\%(class\\<Bar>module\\)\\>','rubyModule\\<Bar>rubyClass','','v')<CR>\n  xnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\\<end\\>','rubyModule\\<Bar>rubyClass','b','v')<CR>\n  xnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\\<end\\>','rubyModule\\<Bar>rubyClass','','v')<CR>\n\n  let b:undo_ftplugin = b:undo_ftplugin\n        \\.\"| sil! exe 'unmap <buffer> [[' | sil! exe 'unmap <buffer> ]]' | sil! exe 'unmap <buffer> []' | sil! exe 'unmap <buffer> ]['\"\n        \\.\"| sil! exe 'unmap <buffer> [m' | sil! exe 'unmap <buffer> ]m' | sil! exe 'unmap <buffer> [M' | sil! exe 'unmap <buffer> ]M'\"\n\n  if maparg('im','n') == ''\n    onoremap <silent> <buffer> im :<C-U>call <SID>wrap_i('[m',']M')<CR>\n    onoremap <silent> <buffer> am :<C-U>call <SID>wrap_a('[m',']M')<CR>\n    xnoremap <silent> <buffer> im :<C-U>call <SID>wrap_i('[m',']M')<CR>\n    xnoremap <silent> <buffer> am :<C-U>call <SID>wrap_a('[m',']M')<CR>\n    let b:undo_ftplugin = b:undo_ftplugin\n          \\.\"| sil! exe 'ounmap <buffer> im' | sil! exe 'ounmap <buffer> am'\"\n          \\.\"| sil! exe 'xunmap <buffer> im' | sil! exe 'xunmap <buffer> am'\"\n  endif\n\n  if maparg('iM','n') == ''\n    onoremap <silent> <buffer> iM :<C-U>call <SID>wrap_i('[[','][')<CR>\n    onoremap <silent> <buffer> aM :<C-U>call <SID>wrap_a('[[','][')<CR>\n    xnoremap <silent> <buffer> iM :<C-U>call <SID>wrap_i('[[','][')<CR>\n    xnoremap <silent> <buffer> aM :<C-U>call <SID>wrap_a('[[','][')<CR>\n    let b:undo_ftplugin = b:undo_ftplugin\n          \\.\"| sil! exe 'ounmap <buffer> iM' | sil! exe 'ounmap <buffer> aM'\"\n          \\.\"| sil! exe 'xunmap <buffer> iM' | sil! exe 'xunmap <buffer> aM'\"\n  endif\n\n  if maparg(\"\\<C-]>\",'n') == ''\n    nnoremap <silent> <buffer> <C-]>       :<C-U>exe  v:count1.\"tag <C-R>=RubyCursorIdentifier()<CR>\"<CR>\n    nnoremap <silent> <buffer> g<C-]>      :<C-U>exe         \"tjump <C-R>=RubyCursorIdentifier()<CR>\"<CR>\n    nnoremap <silent> <buffer> g]          :<C-U>exe       \"tselect <C-R>=RubyCursorIdentifier()<CR>\"<CR>\n    nnoremap <silent> <buffer> <C-W>]      :<C-U>exe v:count1.\"stag <C-R>=RubyCursorIdentifier()<CR>\"<CR>\n    nnoremap <silent> <buffer> <C-W><C-]>  :<C-U>exe v:count1.\"stag <C-R>=RubyCursorIdentifier()<CR>\"<CR>\n    nnoremap <silent> <buffer> <C-W>g<C-]> :<C-U>exe        \"stjump <C-R>=RubyCursorIdentifier()<CR>\"<CR>\n    nnoremap <silent> <buffer> <C-W>g]     :<C-U>exe      \"stselect <C-R>=RubyCursorIdentifier()<CR>\"<CR>\n    nnoremap <silent> <buffer> <C-W>}      :<C-U>exe          \"ptag <C-R>=RubyCursorIdentifier()<CR>\"<CR>\n    nnoremap <silent> <buffer> <C-W>g}     :<C-U>exe        \"ptjump <C-R>=RubyCursorIdentifier()<CR>\"<CR>\n    let b:undo_ftplugin = b:undo_ftplugin\n          \\.\"| sil! exe 'nunmap <buffer> <C-]>'| sil! exe 'nunmap <buffer> g<C-]>'| sil! exe 'nunmap <buffer> g]'\"\n          \\.\"| sil! exe 'nunmap <buffer> <C-W>]'| sil! exe 'nunmap <buffer> <C-W><C-]>'\"\n          \\.\"| sil! exe 'nunmap <buffer> <C-W>g<C-]>'| sil! exe 'nunmap <buffer> <C-W>g]'\"\n          \\.\"| sil! exe 'nunmap <buffer> <C-W>}'| sil! exe 'nunmap <buffer> <C-W>g}'\"\n  endif\n\n  if maparg(\"gf\",'n') == ''\n    \" By using findfile() rather than gf's normal behavior, we prevent\n    \" erroneously editing a directory.\n    nnoremap <silent> <buffer> gf         :<C-U>exe <SID>gf(v:count1,\"gf\",'edit')<CR>\n    nnoremap <silent> <buffer> <C-W>f     :<C-U>exe <SID>gf(v:count1,\"\\<Lt>C-W>f\",'split')<CR>\n    nnoremap <silent> <buffer> <C-W><C-F> :<C-U>exe <SID>gf(v:count1,\"\\<Lt>C-W>\\<Lt>C-F>\",'split')<CR>\n    nnoremap <silent> <buffer> <C-W>gf    :<C-U>exe <SID>gf(v:count1,\"\\<Lt>C-W>gf\",'tabedit')<CR>\n    let b:undo_ftplugin = b:undo_ftplugin\n          \\.\"| sil! exe 'nunmap <buffer> gf' | sil! exe 'nunmap <buffer> <C-W>f' | sil! exe 'nunmap <buffer> <C-W><C-F>' | sil! exe 'nunmap <buffer> <C-W>gf'\"\n  endif\nendif\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\nif exists(\"g:did_ruby_ftplugin_functions\")\n  finish\nendif\nlet g:did_ruby_ftplugin_functions = 1\n\nfunction! RubyBalloonexpr()\n  if !exists('s:ri_found')\n    let s:ri_found = executable('ri')\n  endif\n  if s:ri_found\n    let line = getline(v:beval_lnum)\n    let b = matchstr(strpart(line,0,v:beval_col),'\\%(\\w\\|[:.]\\)*$')\n    let a = substitute(matchstr(strpart(line,v:beval_col),'^\\w*\\%([?!]\\|\\s*=\\)\\?'),'\\s\\+','','g')\n    let str = b.a\n    let before = strpart(line,0,v:beval_col-strlen(b))\n    let after  = strpart(line,v:beval_col+strlen(a))\n    if str =~ '^\\.'\n      let str = substitute(str,'^\\.','#','g')\n      if before =~ '\\]\\s*$'\n        let str = 'Array'.str\n      elseif before =~ '}\\s*$'\n        \" False positives from blocks here\n        let str = 'Hash'.str\n      elseif before =~ \"[\\\"'`]\\\\s*$\" || before =~ '\\$\\d\\+\\s*$'\n        let str = 'String'.str\n      elseif before =~ '\\$\\d\\+\\.\\d\\+\\s*$'\n        let str = 'Float'.str\n      elseif before =~ '\\$\\d\\+\\s*$'\n        let str = 'Integer'.str\n      elseif before =~ '/\\s*$'\n        let str = 'Regexp'.str\n      else\n        let str = substitute(str,'^#','.','')\n      endif\n    endif\n    let str = substitute(str,'.*\\.\\s*to_f\\s*\\.\\s*','Float#','')\n    let str = substitute(str,'.*\\.\\s*to_i\\%(nt\\)\\=\\s*\\.\\s*','Integer#','')\n    let str = substitute(str,'.*\\.\\s*to_s\\%(tr\\)\\=\\s*\\.\\s*','String#','')\n    let str = substitute(str,'.*\\.\\s*to_sym\\s*\\.\\s*','Symbol#','')\n    let str = substitute(str,'.*\\.\\s*to_a\\%(ry\\)\\=\\s*\\.\\s*','Array#','')\n    let str = substitute(str,'.*\\.\\s*to_proc\\s*\\.\\s*','Proc#','')\n    if str !~ '^\\w'\n      return ''\n    endif\n    silent! let res = substitute(system(\"ri -f rdoc -T \\\"\".str.'\"'),'\\n$','','')\n    if res =~ '^Nothing known about' || res =~ '^Bad argument:' || res =~ '^More than one method'\n      return ''\n    endif\n    return res\n  else\n    return \"\"\n  endif\nendfunction\n\nfunction! s:searchsyn(pattern,syn,flags,mode)\n  norm! m'\n  if a:mode ==# 'v'\n    norm! gv\n  endif\n  let i = 0\n  let cnt = v:count ? v:count : 1\n  while i < cnt\n    let i = i + 1\n    let line = line('.')\n    let col  = col('.')\n    let pos = search(a:pattern,'W'.a:flags)\n    while pos != 0 && s:synname() !~# a:syn\n      let pos = search(a:pattern,'W'.a:flags)\n    endwhile\n    if pos == 0\n      call cursor(line,col)\n      return\n    endif\n  endwhile\nendfunction\n\nfunction! s:synname()\n  return synIDattr(synID(line('.'),col('.'),0),'name')\nendfunction\n\nfunction! s:wrap_i(back,forward)\n  execute 'norm k'.a:forward\n  let line = line('.')\n  execute 'norm '.a:back\n  if line('.') == line - 1\n    return s:wrap_a(a:back,a:forward)\n  endif\n  execute 'norm jV'.a:forward.'k'\nendfunction\n\nfunction! s:wrap_a(back,forward)\n  execute 'norm '.a:forward\n  if line('.') < line('$') && getline(line('.')+1) ==# ''\n    let after = 1\n  endif\n  execute 'norm '.a:back\n  while getline(line('.')-1) =~# '^\\s*#' && line('.')\n    -\n  endwhile\n  if exists('after')\n    execute 'norm V'.a:forward.'j'\n  elseif line('.') > 1 && getline(line('.')-1) =~# '^\\s*$'\n    execute 'norm kV'.a:forward\n  else\n    execute 'norm V'.a:forward\n  endif\nendfunction\n\nfunction! RubyCursorIdentifier()\n  let asciicode    = '\\%(\\w\\|[]})\\\"'.\"'\".']\\)\\@<!\\%(?\\%(\\\\M-\\\\C-\\|\\\\C-\\\\M-\\|\\\\M-\\\\c\\|\\\\c\\\\M-\\|\\\\c\\|\\\\C-\\|\\\\M-\\)\\=\\%(\\\\\\o\\{1,3}\\|\\\\x\\x\\{1,2}\\|\\\\\\=\\S\\)\\)'\n  let number       = '\\%(\\%(\\w\\|[]})\\\"'.\"'\".']\\s*\\)\\@<!-\\)\\=\\%(\\<[[:digit:]_]\\+\\%(\\.[[:digit:]_]\\+\\)\\=\\%([Ee][[:digit:]_]\\+\\)\\=\\>\\|\\<0[xXbBoOdD][[:xdigit:]_]\\+\\>\\)\\|'.asciicode\n  let operator     = '\\%(\\[\\]\\|<<\\|<=>\\|[!<>]=\\=\\|===\\=\\|[!=]\\~\\|>>\\|\\*\\*\\|\\.\\.\\.\\=\\|=>\\|[~^&|*/%+-]\\)'\n  let method       = '\\%(\\<[_a-zA-Z]\\w*\\>\\%([?!]\\|\\s*=>\\@!\\)\\=\\)'\n  let global       = '$\\%([!$&\"'.\"'\".'*+,./:;<=>?@\\`~]\\|-\\=\\w\\+\\>\\)'\n  let symbolizable = '\\%(\\%(@@\\=\\)\\w\\+\\>\\|'.global.'\\|'.method.'\\|'.operator.'\\)'\n  let pattern      = '\\C\\s*\\%('.number.'\\|\\%(:\\@<!:\\)\\='.symbolizable.'\\)'\n  let [lnum, col]  = searchpos(pattern,'bcn',line('.'))\n  let raw          = matchstr(getline('.')[col-1 : ],pattern)\n  let stripped     = substitute(substitute(raw,'\\s\\+=$','=',''),'^\\s*:\\=','','')\n  return stripped == '' ? expand(\"<cword>\") : stripped\nendfunction\n\nfunction! s:gf(count,map,edit) abort\n  if getline('.') =~# '^\\s*require_relative\\s*\\([\"'']\\).*\\1\\s*$'\n    let target = matchstr(getline('.'),'\\([\"'']\\)\\zs.\\{-\\}\\ze\\1')\n    return a:edit.' %:h/'.target.'.rb'\n  elseif getline('.') =~# '^\\s*\\%(require[( ]\\|load[( ]\\|autoload[( ]:\\w\\+,\\)\\s*\\s*\\%(::\\)\\=File\\.expand_path(\\([\"'']\\)\\.\\./.*\\1,\\s*__FILE__)\\s*$'\n    let target = matchstr(getline('.'),'\\([\"'']\\)\\.\\./\\zs.\\{-\\}\\ze\\1')\n    return a:edit.' %:h/'.target.'.rb'\n  elseif getline('.') =~# '^\\s*\\%(require \\|load \\|autoload :\\w\\+,\\)\\s*\\([\"'']\\).*\\1\\s*$'\n    let target = matchstr(getline('.'),'\\([\"'']\\)\\zs.\\{-\\}\\ze\\1')\n  else\n    let target = expand('<cfile>')\n  endif\n  let found = findfile(target, &path, a:count)\n  if found ==# ''\n    return 'norm! '.a:count.a:map\n  else\n    return a:edit.' '.fnameescape(found)\n  endif\nendfunction\n\n\"\n\" Instructions for enabling \"matchit\" support:\n\"\n\" 1. Look for the latest \"matchit\" plugin at\n\"\n\"         http://www.vim.org/scripts/script.php?script_id=39\n\"\n\"    It is also packaged with Vim, in the $VIMRUNTIME/macros directory.\n\"\n\" 2. Copy \"matchit.txt\" into a \"doc\" directory (e.g. $HOME/.vim/doc).\n\"\n\" 3. Copy \"matchit.vim\" into a \"plugin\" directory (e.g. $HOME/.vim/plugin).\n\"\n\" 4. Ensure this file (ftplugin/ruby.vim) is installed.\n\"\n\" 5. Ensure you have this line in your $HOME/.vimrc:\n\"         filetype plugin on\n\"\n\" 6. Restart Vim and create the matchit documentation:\n\"\n\"         :helptags ~/.vim/doc\n\"\n\"    Now you can do \":help matchit\", and you should be able to use \"%\" on Ruby\n\"    keywords.  Try \":echo b:match_words\" to be sure.\n\"\n\" Thanks to Mark J. Reed for the instructions.  See \":help vimrc\" for the\n\" locations of plugin directories, etc., as there are several options, and it\n\" differs on Windows.  Email gsinclair@soyabean.com.au if you need help.\n\"\n\n\" vim: nowrap sw=2 sts=2 ts=8:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/rust.vim",
    "content": "\" Vim syntax file\n\" Language:     Rust\n\" Maintainer:   Chris Morgan <me@chrismorgan.info>\n\" Last Change:  2014 Feb 27\n\nif exists(\"b:did_ftplugin\")\n\tfinish\nendif\nlet b:did_ftplugin = 1\n\n\" The rust source code at present seems to typically omit a leader on /*!\n\" comments, so we'll use that as our default, but make it easy to switch.\n\" This does not affect indentation at all (I tested it with and without\n\" leader), merely whether a leader is inserted by default or not.\nif exists(\"g:rust_bang_comment_leader\") && g:rust_bang_comment_leader == 1\n\t\" Why is the `,s0:/*,mb:\\ ,ex:*/` there, you ask? I don't understand why,\n\t\" but without it, */ gets indented one space even if there were no\n\t\" leaders. I'm fairly sure that's a Vim bug.\n\tsetlocal comments=s1:/*,mb:*,ex:*/,s0:/*,mb:\\ ,ex:*/,:///,://!,://\nelse\n\tsetlocal comments=s0:/*!,m:\\ ,ex:*/,s1:/*,mb:*,ex:*/,:///,://!,://\nendif\nsetlocal commentstring=//%s\nsetlocal formatoptions-=t formatoptions+=croqnl\n\" j was only added in 7.3.541, so stop complaints about its nonexistence\nsilent! setlocal formatoptions+=j\n\n\" This includeexpr isn't perfect, but it's a good start\nsetlocal includeexpr=substitute(v:fname,'::','/','g')\n\n\" NOT adding .rc as it's being phased out (0.7)\nsetlocal suffixesadd=.rs\n\nif exists(\"g:ftplugin_rust_source_path\")\n    let &l:path=g:ftplugin_rust_source_path . ',' . &l:path\nendif\n\nif exists(\"g:loaded_delimitMate\")\n\tif exists(\"b:delimitMate_excluded_regions\")\n\t\tlet b:rust_original_delimitMate_excluded_regions = b:delimitMate_excluded_regions\n\tendif\n\tlet b:delimitMate_excluded_regions = delimitMate#Get(\"excluded_regions\") . ',rustLifetimeCandidate,rustGenericLifetimeCandidate'\nendif\n\n\" Bind motion commands to support hanging indents\nnnoremap <silent> <buffer> [[ :call <SID>Rust_Jump('n', 'Back')<CR>\nnnoremap <silent> <buffer> ]] :call <SID>Rust_Jump('n', 'Forward')<CR>\nxnoremap <silent> <buffer> [[ :call <SID>Rust_Jump('v', 'Back')<CR>\nxnoremap <silent> <buffer> ]] :call <SID>Rust_Jump('v', 'Forward')<CR>\nonoremap <silent> <buffer> [[ :call <SID>Rust_Jump('o', 'Back')<CR>\nonoremap <silent> <buffer> ]] :call <SID>Rust_Jump('o', 'Forward')<CR>\n\nlet b:undo_ftplugin = \"\n\t\t\\setlocal formatoptions< comments< commentstring< includeexpr< suffixesadd<\n\t\t\\|if exists('b:rust_original_delimitMate_excluded_regions')\n\t\t  \\|let b:delimitMate_excluded_regions = b:rust_original_delimitMate_excluded_regions\n\t\t  \\|unlet b:rust_original_delimitMate_excluded_regions\n\t\t\\|elseif exists('b:delimitMate_excluded_regions')\n\t\t  \\|unlet b:delimitMate_excluded_regions\n\t\t\\|endif\n\t\t\\|nunmap <buffer> [[\n\t\t\\|nunmap <buffer> ]]\n\t\t\\|xunmap <buffer> [[\n\t\t\\|xunmap <buffer> ]]\n\t\t\\|ounmap <buffer> [[\n\t\t\\|ounmap <buffer> ]]\n\t\t\\\"\n\nif exists('*<SID>Rust_Jump') | finish | endif\n\nfunction! <SID>Rust_Jump(mode, function) range\n\tlet cnt = v:count1\n\tnormal! m'\n\tif a:mode ==# 'v'\n\t\tnorm! gv\n\tendif\n\tlet foldenable = &foldenable\n\tset nofoldenable\n\twhile cnt > 0\n\t\texecute \"call <SID>Rust_Jump_\" . a:function . \"()\"\n\t\tlet cnt = cnt - 1\n\tendwhile\n\tlet &foldenable = foldenable\nendfunction\n\nfunction! <SID>Rust_Jump_Back()\n\tcall search('{', 'b')\n\tkeepjumps normal! w99[{\nendfunction\n\nfunction! <SID>Rust_Jump_Forward()\n\tnormal! j0\n\tcall search('{', 'b')\n\tkeepjumps normal! w99[{%\n\tcall search('{')\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/sass.vim",
    "content": "\" Vim filetype plugin\n\" Language:\tSass\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 Jul 26\n\n\" Only do this when not done yet for this buffer\nif exists(\"b:did_ftplugin\")\n  finish\nendif\nlet b:did_ftplugin = 1\n\nlet b:undo_ftplugin = \"setl cms< def< inc< inex< ofu< sua<\"\n\nsetlocal commentstring=//\\ %s\nsetlocal define=^\\\\s*\\\\%(@mixin\\\\\\|=\\\\)\nsetlocal includeexpr=substitute(v:fname,'\\\\%(.*/\\\\\\|^\\\\)\\\\zs','_','')\nsetlocal omnifunc=csscomplete#CompleteCSS\nsetlocal suffixesadd=.sass,.scss,.css\n\nlet &l:include = '^\\s*@import\\s\\+\\%(url(\\)\\=[\"'']\\='\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/scala.vim",
    "content": "setlocal commentstring=//%s\nlet &l:include = '^\\s*import'\nlet &l:includeexpr = 'substitute(v:fname,\"\\\\.\",\"/\",\"g\")'\nsetlocal path+=src/main/scala,src/test/scala\nsetlocal suffixesadd=.scala\n\nset makeprg=sbt\\ -Dsbt.log.noformat=true\\ compile\nset efm=%E\\ %#[error]\\ %f:%l:\\ %m,%C\\ %#[error]\\ %p^,%-C%.%#,%Z,\n       \\%W\\ %#[warn]\\ %f:%l:\\ %m,%C\\ %#[warn]\\ %p^,%-C%.%#,%Z,\n       \\%-G%.%#\n\nif globpath(&rtp, 'plugin/fuf.vim') != ''\n    \"\n    \" FuzzyFinder stuff\n    \"\n    \"\n    \" SanitizeDirForFuzzyFinder()\n    \"\n    \" This is really just a convenience function to clean up any stray '/'\n    \" characters in the path, should they be there.\n    \"\n    function! scala#SanitizeDirForFuzzyFinder(dir)\n        let dir = expand(a:dir)\n        let dir = substitute(dir, '/\\+$', '', '')\n        let dir = substitute(dir, '/\\+', '/', '')\n\n        return dir\n    endfunction\n\n    \"\n    \" GetDirForFuzzyFinder()\n    \"\n    \" Given a directory to start 'from', walk up the hierarchy, looking for a path\n    \" that matches the 'addon' you want to see.\n    \"\n    \" If nothing can be found, then we just return the 'from' so we don't really get\n    \" the advantage of a hint, but just let the user start from wherever he was\n    \" starting from anyway.\n    \"\n    function! scala#GetDirForFuzzyFinder(from, addon)\n        let from = scala#SanitizeDirForFuzzyFinder(a:from)\n        let addon = expand(a:addon)\n        let addon = substitute(addon, '^/\\+', '', '')\n        let found = ''\n        \" If the addon is right here, then we win\n        if isdirectory(from . '/' . addon)\n            let found = from . '/' . addon\n        else\n            let dirs = split(from, '/')\n        if !has('win32') && !has('win64')\n          let dirs[0] = '/' . dirs[0]\n        endif\n            \" Walk up the tree and see if it's anywhere there\n            for n in range(len(dirs) - 1, 0, -1)\n                let path = join(dirs[0:n], '/')\n                if isdirectory(path . '/' . addon)\n                    let found = path . '/' . addon\n                    break\n                endif\n            endfor\n        endif\n        \" If we found it, then let's see if we can go deeper\n        \"\n        \" For example, we may have found component_name/include\n        \" but what if that directory only has a single directory\n        \" in it, and that subdirectory only has a single directory\n        \" in it, etc... ?  This can happen when you're segmenting\n        \" by namespace like this:\n        \"\n        \"    component_name/include/org/vim/CoolClass.h\n        \"\n        \" You may find yourself always typing '' from the\n        \" 'include' directory just to go into 'org/vim' so let's\n        \" just eliminate the need to hit the ''.\n        if found != ''\n            let tempfrom = found\n            let globbed = globpath(tempfrom, '*')\n            while len(split(globbed, \"\\n\")) == 1\n                let tempfrom = globbed\n                let globbed = globpath(tempfrom, '*')\n            endwhile\n            let found = scala#SanitizeDirForFuzzyFinder(tempfrom) . '/'\n        else\n            let found = from\n        endif\n\n        return found\n    endfunction\n\n    \"\n    \" GetTestDirForFuzzyFinder()\n    \"\n    \" Now overload GetDirForFuzzyFinder() specifically for the test directory (I'm\n    \" really only interested in going down into test/src 90% of the time, so let's\n    \" hit that 90% and leave the other 10% to couple of extra keystrokes)\n    \"\n    function! scala#GetTestDirForFuzzyFinder(from)\n        return scala#GetDirForFuzzyFinder(a:from, 'src/test/scala/')\n    endfunction\n\n    \"\n    \" GetMainDirForFuzzyFinder()\n    \"\n    \" Now overload GetDirForFuzzyFinder() specifically for the main directory.\n    \"\n    function! scala#GetMainDirForFuzzyFinder(from)\n        return scala#GetDirForFuzzyFinder(a:from, 'src/main/scala/')\n    endfunction\n\n    \"\n    \" GetRootDirForFuzzyFinder()\n    \"\n    \" Now overload GetDirForFuzzyFinder() specifically for the root directory.\n    \"\n    function! scala#GetRootDirForFuzzyFinder(from)\n        return scala#GetDirForFuzzyFinder(a:from, 'src/../')\n    endfunction\n\n    \" If you want to disable the default key mappings, write the following line in\n    \" your ~/.vimrc\n    \"     let g:scala_use_default_keymappings = 0\n    if get(g:, 'scala_use_default_keymappings', 1)\n      nnoremap <buffer> <silent> <Leader>ft :FufFile <c-r>=scala#GetTestDirForFuzzyFinder('%:p:h')<cr><cr>\n      nnoremap <buffer> <silent> <Leader>fs :FufFile <c-r>=scala#GetMainDirForFuzzyFinder('%:p:h')<cr><cr>\n      nnoremap <buffer> <silent> <Leader>fr :FufFile <c-r>=scala#GetRootDirForFuzzyFinder('%:p:h')<cr><cr>\n    endif\nendif\n\n\" If you want to disable the default key mappings, write the following line in\n\" your ~/.vimrc\n\"     let g:scala_use_default_keymappings = 0\nif get(g:, 'scala_use_default_keymappings', 1)\n    nnoremap <buffer> <Leader>jt :call JustifyCurrentLine()<cr>\nendif\n\n\"\n\" TagBar\n\"\nlet g:tagbar_type_scala = {\n    \\ 'ctagstype' : 'scala',\n    \\ 'kinds'     : [\n      \\ 'p:packages:1',\n      \\ 'V:values',\n      \\ 'v:variables',\n      \\ 'T:types',\n      \\ 't:traits',\n      \\ 'o:objects',\n      \\ 'a:aclasses',\n      \\ 'c:classes',\n      \\ 'r:cclasses',\n      \\ 'm:methods'\n    \\ ],\n    \\ 'sro'        : '.',\n    \\ 'kind2scope' : {\n        \\ 'T' : 'type',\n        \\ 't' : 'trait',\n        \\ 'o' : 'object',\n        \\ 'a' : 'abstract class',\n        \\ 'c' : 'class',\n        \\ 'r' : 'case class'\n    \\ },\n    \\ 'scope2kind' : {\n      \\ 'type' : 'T',\n      \\ 'trait' : 't',\n      \\ 'object' : 'o',\n      \\ 'abstract class' : 'a',\n      \\ 'class' : 'c',\n      \\ 'case class' : 'r'\n    \\ }\n\\ }\n\nfunction! s:CreateOrExpression(keywords)\n  return '('.join(a:keywords, '|').')'\nendfunction\n\nfunction! s:NextSection(backwards)\n  if a:backwards\n    let dir = '?'\n  else\n    let dir = '/'\n  endif\n  let keywords = [ 'def', 'class', 'trait', 'object' ]\n  let keywordsOrExpression = s:CreateOrExpression(keywords)\n\n  let modifiers = [ 'public', 'private', 'private\\[\\w*\\]', 'protected', 'abstract', 'case', 'override', 'implicit', 'final', 'sealed']\n  let modifierOrExpression = s:CreateOrExpression(modifiers)\n\n  let regex = '^ *('.modifierOrExpression.' )* *'.keywordsOrExpression.\"\\r\"\n  execute 'silent normal! ' . dir . '\\v'.regex\nendfunction\n\nnoremap <script> <buffer> <silent> ]] :call <SID>NextSection(0)<cr>\n\nnoremap <script> <buffer> <silent> [[ :call <SID>NextSection(1)<cr>\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/scala.xpt.vim",
    "content": "\nXPTemplate priority=lang\n\nXPTvar $BRif ' '\nXPTvar $BRel \\n\nXPTvar $BRloop ' '\nXPTvar $BRfun ' '\n\nXPTinclude\n    \\ _common/personal\n    \\ java/java\n\nXPT cake hint=Cake\\ Pattern\nXSET trait|def=Some\nXSET derived|def=Real\ntrait `trait^Component {\n\ttrait `trait^ {\n\t\t`body^\n\t}\n\n\tval `trait^SV('(.)', '\\l\\1', '')^^: `trait^\n}\n\ntrait `derived^`trait^Component extends `trait^Component {\n\n\toverride lazy val `trait^SV('(.)', '\\l\\1', '')^^ = new `trait^ {\n\t\t`body2^\n\t}\n}\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/scss.vim",
    "content": "\" Vim filetype plugin\n\" Language:\tSCSS\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 Jul 26\n\nif exists(\"b:did_ftplugin\")\n  finish\nendif\n\nruntime! ftplugin/sass.vim\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/stylus.vim",
    "content": "\" Vim filetype plugin\n\" Language: Stylus\n\" Maintainer: Marc Harter\n\" Credits: Tim Pope\n\n\" Only do this when not done yet for this buffer\nif exists(\"b:did_ftplugin\")\n  finish\nendif\n\nlet s:save_cpo = &cpo\nset cpo-=C\n\n\" Define some defaults in case the included ftplugins don't set them.\nlet s:undo_ftplugin = \"\"\nlet s:browsefilter = \"All Files (*.*)\\t*.*\\n\"\nlet s:match_words = \"\"\n\nruntime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim\nunlet! b:did_ftplugin\n\n\" Override our defaults if these were set by an included ftplugin.\nif exists(\"b:undo_ftplugin\")\n  let s:undo_ftplugin = b:undo_ftplugin\n  unlet b:undo_ftplugin\nendif\nif exists(\"b:browsefilter\")\n  let s:browsefilter = b:browsefilter\n  unlet b:browsefilter\nendif\nif exists(\"b:match_words\")\n  let s:match_words = b:match_words\n  unlet b:match_words\nendif\n\n\" Change the browse dialog on Win32 to show mainly Styl-related files\nif has(\"gui_win32\")\n  let b:browsefilter=\"Stylus Files (*.styl)\\t*.styl\\n\" . s:browsefilter\nendif\n\n\" Load the combined list of match_words for matchit.vim\nif exists(\"loaded_matchit\")\n  let b:match_words = s:match_words\nendif\n\nsetlocal comments= commentstring=//\\ %s\n\nsetlocal suffixesadd=.styl\n\n\" Add '-' and '#' to the what makes up a keyword.\n\" This means that 'e' and 'w' work properly now, for properties\n\" and valid variable names.\nsetl iskeyword+=#,-\n\nlet b:undo_ftplugin = \"setl cms< com< \"\n      \\ \" | unlet! b:browsefilter b:match_words | \" . s:undo_ftplugin\n\nlet &cpo = s:save_cpo\n\n\" Add a Stylus command (to see if it's valid)\ncommand! Stylus !clear; cat % | stylus\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/tex_LatexBox.vim",
    "content": "\" LaTeX Box plugin for Vim\n\" Maintainer: David Munger\n\" Email: mungerd@gmail.com\n\" Version: 0.9.6\n\nif exists('*fnameescape')\n\tfunction! s:FNameEscape(s)\n\t\treturn fnameescape(a:s)\n\tendfunction\nelse\n\tfunction! s:FNameEscape(s)\n\t\treturn a:s\n\tendfunction\nendif\n\nif !exists('b:LatexBox_loaded')\n\n\tlet prefix = expand('<sfile>:p:h') . '/latex-box/'\n\n\texecute 'source ' . s:FNameEscape(prefix . 'common.vim')\n\texecute 'source ' . s:FNameEscape(prefix . 'complete.vim')\n\texecute 'source ' . s:FNameEscape(prefix . 'motion.vim')\n\texecute 'source ' . s:FNameEscape(prefix . 'latexmk.vim')\n\texecute 'source ' . s:FNameEscape(prefix . 'folding.vim')\n\t\" added by AH to add main.tex file finder\n\texecute 'source ' . s:FNameEscape(prefix . 'findmain.vim')\n\texecute 'source ' . s:FNameEscape(prefix . 'mappings.vim')\n\n\tlet b:LatexBox_loaded = 1\n\nendif\n\n\" vim:fdm=marker:ff=unix:noet:ts=4:sw=4\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/textile.vim",
    "content": "\" textile.vim\n\"\n\" Tim Harper (tim.theenchanter.com)\n\ncommand! -nargs=0 TextileRenderFile call TextileRenderBufferToFile()\ncommand! -nargs=0 TextileRenderTab call TextileRenderBufferToTab()\ncommand! -nargs=0 TextilePreview call TextileRenderBufferToPreview()\nnoremap <buffer> <Leader>rp :TextilePreview<CR>\nnoremap <buffer> <Leader>rf :TextileRenderFile<CR>\nnoremap <buffer> <Leader>rt :TextileRenderTab<CR>\nsetlocal ignorecase\nsetlocal wrap\nsetlocal lbr\n\nfunction! TextileRender(lines)\n  if (system('which ruby') == \"\")\n    throw \"Could not find ruby!\"\n  end\n\n  let text = join(a:lines, \"\\n\")\n  let html = system(\"ruby -e \\\"def e(msg); puts msg; exit 1; end; begin; require 'rubygems'; rescue LoadError; e('rubygems not found'); end; begin; require 'redcloth'; rescue LoadError; e('RedCloth gem not installed.  Run this from the terminal: sudo gem install RedCloth'); end; puts(RedCloth.new(\\\\$stdin.read).to_html(:textile))\\\"\", text)\n  return html\nendfunction\n\nfunction! TextileRenderFile(lines, filename)\n  let html = TextileRender(getbufline(bufname(\"%\"), 1, '$'))\n  let html = \"<html><head><title>\" . bufname(\"%\") . \"</title></head><body>\\n\" . html . \"\\n</body></html>\"\n  return writefile(split(html, \"\\n\"), a:filename)\nendfunction\n\nfunction! TextileRenderBufferToPreview()\n  let filename = \"/tmp/textile-preview.html\"\n  call TextileRenderFile(getbufline(bufname(\"%\"), 1, '$'), filename)\n  \" Verify if browser was set\n  if !exists(\"g:TextileBrowser\")\n    let g:TextileBrowser='Safari'\n  endif\n  \" call configured browser according OS\n  if !exists(\"g:TextileOS\") || g:TextileOS == 'mac'\n    call system(\"open -a \\\"\".g:TextileBrowser.\"\\\" \".filename)\n  else\n    echo g:TextileBrowser.\" \".filename\n    call system(g:TextileBrowser.\" \".filename)\n  endif\nendfunction\n\nfunction! TextileRenderBufferToFile()\n  let filename = input(\"Filename:\", substitute(bufname(\"%\"), \"textile$\", \"html\", \"\"), \"file\")\n  call TextileRenderFile(getbufline(bufname(\"%\"), 1, '$'), filename)\n  echo \"Rendered to '\" . filename . \"'\"\nendfunction\n\nfunction! TextileRenderBufferToTab()\n  let html = TextileRender(getbufline(bufname(\"%\"), 1, '$'))\n  tabnew\n  call append(\"^\", split(html, \"\\n\"))\n  set syntax=html\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/tt2html.vim",
    "content": "\" Language:      TT2 embedded with HTML\n\" Maintainer:    vim-perl <vim-perl@googlegroups.com>\n\" Homepage:      http://github.com/vim-perl/vim-perl\n\" Bugs/requests: http://github.com/vim-perl/vim-perl/issues\n\" Last Change:   {{LAST_CHANGE}}\n\n\" Only do this when not done yet for this buffer\nif exists(\"b:did_ftplugin\")\n    finish\nendif\n\n\" Just use the HTML plugin for now.\nruntime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/twig.vim",
    "content": "\" Vim filetype plugin\n\" Language: Twig\n\" Maintainer: F. Gabriel Gosselin <gabrielNOSPAM@evidens.ca>\n\nif exists(\"b:did_ftplugin\")\n  finish\nendif\n\nruntime! ftplugin/html.vim ftplugin/html*.vim ftplugin/html/*.vim\nunlet! b:did_ftplugin\n\nsetlocal comments=s:{#,ex:#}\nsetlocal formatoptions+=tcqln\n\" setlocal formatlistpat=^\\\\s*\\\\d\\\\+\\\\.\\\\s\\\\+\\\\\\|^[-*+]\\\\s\\\\+\n\nlet b:undo_ftplugin .= \"|setl cms< com< fo<\"\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/typescript.vim",
    "content": "compiler typescript\n\nsetlocal autoindent\nsetlocal smartindent\nsetlocal indentexpr&\n\nsetlocal cindent\nsetlocal cino=j1J1\n\nsetlocal commentstring=//\\ %s\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/ftplugin/xs.vim",
    "content": "\" Vim filetype plugin file\n\" Language:      XS (Perl extension interface language)\n\" Maintainer:    vim-perl <vim-perl@googlegroups.com>\n\" Homepage:      http://github.com/vim-perl/vim-perl\n\" Bugs/requests: http://github.com/vim-perl/vim-perl/issues\n\" Last Change:   {{LAST_CHANGE}}\n\n\" Only do this when not done yet for this buffer\nif exists(\"b:did_ftplugin\")\n    finish\nendif\n\n\" Just use the C plugin for now.\nruntime! ftplugin/c.vim ftplugin/c_*.vim ftplugin/c/*.vim\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/arduino.vim",
    "content": "\" Vim indent file\n\" Language:\tArduino\n\" Maintainer:\tKevin Sjöberg <kev.sjoberg@gmail.com>\n\" Last Change:\t2014 Feb 28\n\n\" Only load this indent file when no other was loaded.\nif exists(\"b:did_indent\")\n   finish\nendif\nlet b:did_indent = 1\n\n\" C++ indenting is built-in, thus this is very simple\nsetlocal cindent\n\nlet b:undo_indent = \"setl cin<\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/clojure.vim",
    "content": "\" Vim indent file\n\" Language:\tClojure\n\" Author:\tMeikel Brandmeyer <mb@kotka.de>\n\" URL:\t\thttp://kotka.de/projects/clojure/vimclojure.html\n\"\n\" Maintainer:\tSung Pae <self@sungpae.com>\n\" URL:\t\thttps://github.com/guns/vim-clojure-static\n\" License:\tSame as Vim\n\" Last Change:\t%%RELEASE_DATE%%\n\n\" TODO: Indenting after multibyte characters is broken:\n\"       (let [Δ (if foo\n\"                bar    ; Indent error\n\"                baz)])\n\nif exists(\"b:did_indent\")\n\tfinish\nendif\nlet b:did_indent = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nlet b:undo_indent = 'setlocal autoindent< smartindent< expandtab< softtabstop< shiftwidth< indentexpr< indentkeys<'\n\nsetlocal noautoindent nosmartindent\nsetlocal softtabstop=2 shiftwidth=2 expandtab\nsetlocal indentkeys=!\u0006,o,O\n\nif exists(\"*searchpairpos\")\n\n\tif !exists('g:clojure_maxlines')\n\t\tlet g:clojure_maxlines = 100\n\tendif\n\n\tif !exists('g:clojure_fuzzy_indent')\n\t\tlet g:clojure_fuzzy_indent = 1\n\tendif\n\n\tif !exists('g:clojure_fuzzy_indent_patterns')\n\t\tlet g:clojure_fuzzy_indent_patterns = ['^with', '^def', '^let']\n\tendif\n\n\tif !exists('g:clojure_fuzzy_indent_blacklist')\n\t\tlet g:clojure_fuzzy_indent_blacklist = ['-fn$', '\\v^with-%(meta|out-str|loading-context)$']\n\tendif\n\n\tif !exists('g:clojure_special_indent_words')\n\t\tlet g:clojure_special_indent_words = 'deftype,defrecord,reify,proxy,extend-type,extend-protocol,letfn'\n\tendif\n\n\tif !exists('g:clojure_align_multiline_strings')\n\t\tlet g:clojure_align_multiline_strings = 0\n\tendif\n\n\tif !exists('g:clojure_align_subforms')\n\t\tlet g:clojure_align_subforms = 0\n\tendif\n\n\tfunction! s:SynIdName()\n\t\treturn synIDattr(synID(line(\".\"), col(\".\"), 0), \"name\")\n\tendfunction\n\n\tfunction! s:CurrentChar()\n\t\treturn getline('.')[col('.')-1]\n\tendfunction\n\n\tfunction! s:CurrentWord()\n\t\treturn getline('.')[col('.')-1 : searchpos('\\v>', 'n', line('.'))[1]-2]\n\tendfunction\n\n\tfunction! s:IsParen()\n\t\treturn s:CurrentChar() =~# '\\v[\\(\\)\\[\\]\\{\\}]' &&\n\t\t     \\ s:SynIdName() !~? '\\vstring|regex|comment|character'\n\tendfunction\n\n\t\" Returns 1 if string matches a pattern in 'patterns', which may be a\n\t\" list of patterns, or a comma-delimited string of implicitly anchored\n\t\" patterns.\n\tfunction! s:MatchesOne(patterns, string)\n\t\tlet list = type(a:patterns) == type([])\n\t\t\t   \\ ? a:patterns\n\t\t\t   \\ : map(split(a:patterns, ','), '\"^\" . v:val . \"$\"')\n\t\tfor pat in list\n\t\t\tif a:string =~# pat | return 1 | endif\n\t\tendfor\n\tendfunction\n\n\tfunction! s:MatchPairs(open, close, stopat)\n\t\t\" Stop only on vector and map [ resp. {. Ignore the ones in strings and\n\t\t\" comments.\n\t\tif a:stopat == 0\n\t\t\tlet stopat = max([line(\".\") - g:clojure_maxlines, 0])\n\t\telse\n\t\t\tlet stopat = a:stopat\n\t\tendif\n\n\t\tlet pos = searchpairpos(a:open, '', a:close, 'bWn', \"!s:IsParen()\", stopat)\n\t\treturn [pos[0], virtcol(pos)]\n\tendfunction\n\n\tfunction! s:ClojureCheckForStringWorker()\n\t\t\" Check whether there is the last character of the previous line is\n\t\t\" highlighted as a string. If so, we check whether it's a \". In this\n\t\t\" case we have to check also the previous character. The \" might be the\n\t\t\" closing one. In case the we are still in the string, we search for the\n\t\t\" opening \". If this is not found we take the indent of the line.\n\t\tlet nb = prevnonblank(v:lnum - 1)\n\n\t\tif nb == 0\n\t\t\treturn -1\n\t\tendif\n\n\t\tcall cursor(nb, 0)\n\t\tcall cursor(0, col(\"$\") - 1)\n\t\tif s:SynIdName() !~? \"string\"\n\t\t\treturn -1\n\t\tendif\n\n\t\t\" This will not work for a \" in the first column...\n\t\tif s:CurrentChar() == '\"'\n\t\t\tcall cursor(0, col(\"$\") - 2)\n\t\t\tif s:SynIdName() !~? \"string\"\n\t\t\t\treturn -1\n\t\t\tendif\n\t\t\tif s:CurrentChar() != '\\\\'\n\t\t\t\treturn -1\n\t\t\tendif\n\t\t\tcall cursor(0, col(\"$\") - 1)\n\t\tendif\n\n\t\tlet p = searchpos('\\(^\\|[^\\\\]\\)\\zs\"', 'bW')\n\n\t\tif p != [0, 0]\n\t\t\treturn p[1] - 1\n\t\tendif\n\n\t\treturn indent(\".\")\n\tendfunction\n\n\tfunction! s:CheckForString()\n\t\tlet pos = getpos('.')\n\t\ttry\n\t\t\tlet val = s:ClojureCheckForStringWorker()\n\t\tfinally\n\t\t\tcall setpos('.', pos)\n\t\tendtry\n\t\treturn val\n\tendfunction\n\n\tfunction! s:StripNamespaceAndMacroChars(word)\n\t\treturn substitute(a:word, \"\\\\v%(.*/|[#'`~@^,]*)(.*)\", '\\1', '')\n\tendfunction\n\n\tfunction! s:ClojureIsMethodSpecialCaseWorker(position)\n\t\t\" Find the next enclosing form.\n\t\tcall search('\\S', 'Wb')\n\n\t\t\" Special case: we are at a '(('.\n\t\tif s:CurrentChar() == '('\n\t\t\treturn 0\n\t\tendif\n\t\tcall cursor(a:position)\n\n\t\tlet nextParen = s:MatchPairs('(', ')', 0)\n\n\t\t\" Special case: we are now at toplevel.\n\t\tif nextParen == [0, 0]\n\t\t\treturn 0\n\t\tendif\n\t\tcall cursor(nextParen)\n\n\t\tcall search('\\S', 'W')\n\t\tlet w = s:StripNamespaceAndMacroChars(s:CurrentWord())\n\t\tif g:clojure_special_indent_words =~# '\\V\\<' . w . '\\>'\n\t\t\treturn 1\n\t\tendif\n\n\t\treturn 0\n\tendfunction\n\n\tfunction! s:IsMethodSpecialCase(position)\n\t\tlet pos = getpos('.')\n\t\ttry\n\t\t\tlet val = s:ClojureIsMethodSpecialCaseWorker(a:position)\n\t\tfinally\n\t\t\tcall setpos('.', pos)\n\t\tendtry\n\t\treturn val\n\tendfunction\n\n\tfunction! GetClojureIndent()\n\t\t\" Get rid of special case.\n\t\tif line(\".\") == 1\n\t\t\treturn 0\n\t\tendif\n\n\t\t\" We have to apply some heuristics here to figure out, whether to use\n\t\t\" normal lisp indenting or not.\n\t\tlet i = s:CheckForString()\n\t\tif i > -1\n\t\t\treturn i + !!g:clojure_align_multiline_strings\n\t\tendif\n\n\t\tcall cursor(0, 1)\n\n\t\t\" Find the next enclosing [ or {. We can limit the second search\n\t\t\" to the line, where the [ was found. If no [ was there this is\n\t\t\" zero and we search for an enclosing {.\n\t\tlet paren = s:MatchPairs('(', ')', 0)\n\t\tlet bracket = s:MatchPairs('\\[', '\\]', paren[0])\n\t\tlet curly = s:MatchPairs('{', '}', bracket[0])\n\n\t\t\" In case the curly brace is on a line later then the [ or - in\n\t\t\" case they are on the same line - in a higher column, we take the\n\t\t\" curly indent.\n\t\tif curly[0] > bracket[0] || curly[1] > bracket[1]\n\t\t\tif curly[0] > paren[0] || curly[1] > paren[1]\n\t\t\t\treturn curly[1]\n\t\t\tendif\n\t\tendif\n\n\t\t\" If the curly was not chosen, we take the bracket indent - if\n\t\t\" there was one.\n\t\tif bracket[0] > paren[0] || bracket[1] > paren[1]\n\t\t\treturn bracket[1]\n\t\tendif\n\n\t\t\" There are neither { nor [ nor (, ie. we are at the toplevel.\n\t\tif paren == [0, 0]\n\t\t\treturn 0\n\t\tendif\n\n\t\t\" Now we have to reimplement lispindent. This is surprisingly easy, as\n\t\t\" soon as one has access to syntax items.\n\t\t\"\n\t\t\" - Check whether we are in a special position after a word in\n\t\t\"   g:clojure_special_indent_words. These are special cases.\n\t\t\" - Get the next keyword after the (.\n\t\t\" - If its first character is also a (, we have another sexp and align\n\t\t\"   one column to the right of the unmatched (.\n\t\t\" - In case it is in lispwords, we indent the next line to the column of\n\t\t\"   the ( + sw.\n\t\t\" - If not, we check whether it is last word in the line. In that case\n\t\t\"   we again use ( + sw for indent.\n\t\t\" - In any other case we use the column of the end of the word + 2.\n\t\tcall cursor(paren)\n\n\t\tif s:IsMethodSpecialCase(paren)\n\t\t\treturn paren[1] + &shiftwidth - 1\n\t\tendif\n\n\t\t\" In case we are at the last character, we use the paren position.\n\t\tif col(\"$\") - 1 == paren[1]\n\t\t\treturn paren[1]\n\t\tendif\n\n\t\t\" In case after the paren is a whitespace, we search for the next word.\n\t\tcall cursor(0, col('.') + 1)\n\t\tif s:CurrentChar() == ' '\n\t\t\tcall search('\\v\\S', 'W')\n\t\tendif\n\n\t\t\" If we moved to another line, there is no word after the (. We\n\t\t\" use the ( position for indent.\n\t\tif line(\".\") > paren[0]\n\t\t\treturn paren[1]\n\t\tendif\n\n\t\t\" We still have to check, whether the keyword starts with a (, [ or {.\n\t\t\" In that case we use the ( position for indent.\n\t\tlet w = s:CurrentWord()\n\t\tif stridx('([{', w[0]) > -1\n\t\t\treturn paren[1]\n\t\tendif\n\n\t\t\" Test words without namespace qualifiers and leading reader macro\n\t\t\" metacharacters.\n\t\t\"\n\t\t\" e.g. clojure.core/defn and #'defn should both indent like defn.\n\t\tlet ww = s:StripNamespaceAndMacroChars(w)\n\n\t\tif &lispwords =~# '\\V\\<' . ww . '\\>'\n\t\t\treturn paren[1] + &shiftwidth - 1\n\t\tendif\n\n\t\tif g:clojure_fuzzy_indent\n\t\t\t\\ && !s:MatchesOne(g:clojure_fuzzy_indent_blacklist, ww)\n\t\t\t\\ && s:MatchesOne(g:clojure_fuzzy_indent_patterns, ww)\n\t\t\treturn paren[1] + &shiftwidth - 1\n\t\tendif\n\n\t\tcall search('\\v\\_s', 'cW')\n\t\tcall search('\\v\\S', 'W')\n\t\tif paren[0] < line(\".\")\n\t\t\treturn paren[1] + (g:clojure_align_subforms ? 0 : &shiftwidth - 1)\n\t\tendif\n\n\t\tcall search('\\v\\S', 'bW')\n\t\treturn virtcol(\".\") + 1\n\tendfunction\n\n\tsetlocal indentexpr=GetClojureIndent()\n\nelse\n\n\t\" In case we have searchpairpos not available we fall back to\n\t\" normal lisp indenting.\n\tsetlocal indentexpr=\n\tsetlocal lisp\n\tlet b:undo_indent .= '| setlocal lisp<'\n\nendif\n\nlet &cpo = s:save_cpo\nunlet! s:save_cpo\n\n\" vim:sts=8:sw=8:ts=8:noet\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/coffee.vim",
    "content": "\" Language:    CoffeeScript\n\" Maintainer:  Mick Koch <kchmck@gmail.com>\n\" URL:         http://github.com/kchmck/vim-coffee-script\n\" License:     WTFPL\n\nif exists('b:did_indent')\n  finish\nendif\n\nlet b:did_indent = 1\n\nsetlocal autoindent\nsetlocal indentexpr=GetCoffeeIndent(v:lnum)\n\" Make sure GetCoffeeIndent is run when these are typed so they can be\n\" indented or outdented.\nsetlocal indentkeys+=0],0),0.,=else,=when,=catch,=finally\n\n\" If no indenting or outdenting is needed, either keep the indent of the cursor\n\" (use autoindent) or match the indent of the previous line.\nif exists('g:coffee_indent_keep_current')\n  let s:DEFAULT_LEVEL = '-1'\nelse\n  let s:DEFAULT_LEVEL = 'indent(prevnlnum)'\nendif\n\n\" Only define the function once.\nif exists('*GetCoffeeIndent')\n  finish\nendif\n\n\" Keywords that begin a block\nlet s:BEGIN_BLOCK_KEYWORD = '\\C^\\%(if\\|unless\\|else\\|for\\|while\\|until\\|'\n\\                         . 'loop\\|switch\\|when\\|try\\|catch\\|finally\\|'\n\\                         . 'class\\)\\>\\%(\\s*:\\)\\@!'\n\n\" An expression that uses the result of a statement\nlet s:COMPOUND_EXPRESSION = '\\C\\%([^-]-\\|[^+]+\\|[^/]/\\|[:=*%&|^<>]\\)\\s*'\n\\                         . '\\%(if\\|unless\\|for\\|while\\|until\\|loop\\|switch\\|'\n\\                         . 'try\\|class\\)\\>'\n\n\" Combine the two above\nlet s:BEGIN_BLOCK = s:BEGIN_BLOCK_KEYWORD . '\\|' . s:COMPOUND_EXPRESSION\n\n\" Operators that begin a block but also count as a continuation\nlet s:BEGIN_BLOCK_OP = '[([{:=]$'\n\n\" Begins a function block\nlet s:FUNCTION = '[-=]>$'\n\n\" Operators that continue a line onto the next line\nlet s:CONTINUATION_OP = '\\C\\%(\\<\\%(is\\|isnt\\|and\\|or\\)\\>\\|'\n\\                     . '[^-]-\\|[^+]+\\|[^-=]>\\|[^.]\\.\\|[<*/%&|^,]\\)$'\n\n\" Ancestor operators that prevent continuation indenting\nlet s:CONTINUATION = s:CONTINUATION_OP . '\\|' . s:BEGIN_BLOCK_OP\n\n\" A closing bracket by itself on a line followed by a continuation\nlet s:BRACKET_CONTINUATION = '^\\s*[}\\])]\\s*' . s:CONTINUATION_OP\n\n\" A continuation dot access\nlet s:DOT_ACCESS = '^\\.'\n\n\" Keywords that break out of a block\nlet s:BREAK_BLOCK_OP = '\\C^\\%(return\\|break\\|continue\\|throw\\)\\>'\n\n\" A condition attached to the end of a statement\nlet s:POSTFIX_CONDITION = '\\C\\S\\s\\+\\zs\\<\\%(if\\|unless\\|when\\|while\\|until\\)\\>'\n\n\" A then contained in brackets\nlet s:CONTAINED_THEN = '\\C[(\\[].\\{-}\\<then\\>.\\{-\\}[)\\]]'\n\n\" An else with a condition attached\nlet s:ELSE_COND = '\\C^\\s*else\\s\\+\\<\\%(if\\|unless\\)\\>'\n\n\" A single-line else statement (without a condition attached)\nlet s:SINGLE_LINE_ELSE = '\\C^else\\s\\+\\%(\\<\\%(if\\|unless\\)\\>\\)\\@!'\n\n\" Pairs of starting and ending keywords, with an initial pattern to match\nlet s:KEYWORD_PAIRS = [\n\\  ['\\C^else\\>', '\\C\\<\\%(if\\|unless\\|when\\|else\\s\\+\\%(if\\|unless\\)\\)\\>',\n\\   '\\C\\<else\\>'],\n\\  ['\\C^catch\\>', '\\C\\<try\\>', '\\C\\<catch\\>'],\n\\  ['\\C^finally\\>', '\\C\\<try\\>', '\\C\\<finally\\>']\n\\]\n\n\" Pairs of starting and ending brackets\nlet s:BRACKET_PAIRS = {']': '\\[', '}': '{', ')': '('}\n\n\" Max lines to look back for a match\nlet s:MAX_LOOKBACK = 50\n\n\" Syntax names for strings\nlet s:SYNTAX_STRING = 'coffee\\%(String\\|AssignString\\|Embed\\|Regex\\|Heregex\\|'\n\\                   . 'Heredoc\\)'\n\n\" Syntax names for comments\nlet s:SYNTAX_COMMENT = 'coffee\\%(Comment\\|BlockComment\\|HeregexComment\\)'\n\n\" Syntax names for strings and comments\nlet s:SYNTAX_STRING_COMMENT = s:SYNTAX_STRING . '\\|' . s:SYNTAX_COMMENT\n\n\" Compatibility code for shiftwidth() as recommended by the docs, but modified\n\" so there isn't as much of a penalty if shiftwidth() exists.\nif exists('*shiftwidth')\n  let s:ShiftWidth = function('shiftwidth')\nelse\n  function! s:ShiftWidth()\n    return &shiftwidth\n  endfunction\nendif\n\n\" Get the linked syntax name of a character.\nfunction! s:SyntaxName(lnum, col)\n  return synIDattr(synID(a:lnum, a:col, 1), 'name')\nendfunction\n\n\" Check if a character is in a comment.\nfunction! s:IsComment(lnum, col)\n  return s:SyntaxName(a:lnum, a:col) =~ s:SYNTAX_COMMENT\nendfunction\n\n\" Check if a character is in a string.\nfunction! s:IsString(lnum, col)\n  return s:SyntaxName(a:lnum, a:col) =~ s:SYNTAX_STRING\nendfunction\n\n\" Check if a character is in a comment or string.\nfunction! s:IsCommentOrString(lnum, col)\n  return s:SyntaxName(a:lnum, a:col) =~ s:SYNTAX_STRING_COMMENT\nendfunction\n\n\" Search a line for a regex until one is found outside a string or comment.\nfunction! s:SearchCode(lnum, regex)\n  \" Start at the first column and look for an initial match (including at the\n  \" cursor.)\n  call cursor(a:lnum, 1)\n  let pos = search(a:regex, 'c', a:lnum)\n\n  while pos\n    if !s:IsCommentOrString(a:lnum, col('.'))\n      return 1\n    endif\n\n    \" Move to the match and continue searching (don't accept matches at the\n    \" cursor.)\n    let pos = search(a:regex, '', a:lnum)\n  endwhile\n\n  return 0\nendfunction\n\n\" Search for the nearest previous line that isn't a comment.\nfunction! s:GetPrevNormalLine(startlnum)\n  let curlnum = a:startlnum\n\n  while curlnum\n    let curlnum = prevnonblank(curlnum - 1)\n\n    \" Return the line if the first non-whitespace character isn't a comment.\n    if !s:IsComment(curlnum, indent(curlnum) + 1)\n      return curlnum\n    endif\n  endwhile\n\n  return 0\nendfunction\n\nfunction! s:SearchPair(startlnum, lookback, skip, open, close)\n  \" Go to the first column so a:close will be matched even if it's at the\n  \" beginning of the line.\n  call cursor(a:startlnum, 1)\n  return searchpair(a:open, '', a:close, 'bnW', a:skip, max([1, a:lookback]))\nendfunction\n\n\" Skip if a match\n\"  - is in a string or comment\n\"  - is a single-line statement that isn't immediately\n\"    adjacent\n\"  - has a postfix condition and isn't an else statement or compound\n\"    expression\nfunction! s:ShouldSkip(startlnum, lnum, col)\n  return s:IsCommentOrString(a:lnum, a:col) ||\n  \\      s:SearchCode(a:lnum, '\\C\\<then\\>') && a:startlnum - a:lnum > 1 ||\n  \\      s:SearchCode(a:lnum, s:POSTFIX_CONDITION) &&\n  \\      getline(a:lnum) !~ s:ELSE_COND &&\n  \\     !s:SearchCode(a:lnum, s:COMPOUND_EXPRESSION)\nendfunction\n\n\" Search for the nearest and farthest match for a keyword pair.\nfunction! s:SearchMatchingKeyword(startlnum, open, close)\n  let skip = 's:ShouldSkip(' . a:startlnum . \", line('.'), line('.'))\"\n\n  \" Search for the nearest match.\n  let nearestlnum = s:SearchPair(a:startlnum, a:startlnum - s:MAX_LOOKBACK,\n  \\                              skip, a:open, a:close)\n\n  if !nearestlnum\n    return []\n  endif\n\n  \" Find the nearest previous line with indent less than or equal to startlnum.\n  let ind = indent(a:startlnum)\n  let lookback = s:GetPrevNormalLine(a:startlnum)\n\n  while lookback && indent(lookback) > ind\n    let lookback = s:GetPrevNormalLine(lookback)\n  endwhile\n\n  \" Search for the farthest match. If there are no other matches, then the\n  \" nearest match is also the farthest one.\n  let matchlnum = nearestlnum\n\n  while matchlnum\n    let lnum = matchlnum\n    let matchlnum = s:SearchPair(matchlnum, lookback, skip, a:open, a:close)\n  endwhile\n\n  return [nearestlnum, lnum]\nendfunction\n\n\" Strip a line of a trailing comment and surrounding whitespace.\nfunction! s:GetTrimmedLine(lnum)\n  \" Try to find a comment starting at the first column.\n  call cursor(a:lnum, 1)\n  let pos = search('#', 'c', a:lnum)\n\n  \" Keep searching until a comment is found or search returns 0.\n  while pos\n    if s:IsComment(a:lnum, col('.'))\n      break\n    endif\n\n    let pos = search('#', '', a:lnum)\n  endwhile\n\n  if !pos\n    \" No comment was found so use the whole line.\n    let line = getline(a:lnum)\n  else\n    \" Subtract 1 to get to the column before the comment and another 1 for\n    \" column indexing -> zero-based indexing.\n    let line = getline(a:lnum)[:col('.') - 2]\n  endif\n\n  return substitute(substitute(line, '^\\s\\+', '', ''),\n  \\                                  '\\s\\+$', '', '')\nendfunction\n\n\" Get the indent policy when no special rules are used.\nfunction! s:GetDefaultPolicy(curlnum)\n  \" Check whether equalprg is being ran on existing lines.\n  if strlen(getline(a:curlnum)) == indent(a:curlnum)\n    \" If not indenting an existing line, use the default policy.\n    return s:DEFAULT_LEVEL\n  else\n    \" Otherwise let autoindent determine what to do with an existing line.\n    return '-1'\n  endif\nendfunction\n\nfunction! GetCoffeeIndent(curlnum)\n  \" Get the previous non-blank line (may be a comment.)\n  let prevlnum = prevnonblank(a:curlnum - 1)\n\n  \" Bail if there's no code before.\n  if !prevlnum\n    return -1\n  endif\n\n  \" Bail if inside a multiline string.\n  if s:IsString(a:curlnum, 1)\n    let prevnlnum = prevlnum\n    exec 'return' s:GetDefaultPolicy(a:curlnum)\n  endif\n\n  \" Get the code part of the current line.\n  let curline = s:GetTrimmedLine(a:curlnum)\n  \" Get the previous non-comment line.\n  let prevnlnum = s:GetPrevNormalLine(a:curlnum)\n\n  \" Check if the current line is the closing bracket in a bracket pair.\n  if has_key(s:BRACKET_PAIRS, curline[0])\n    \" Search for a matching opening bracket.\n    let matchlnum = s:SearchPair(a:curlnum, a:curlnum - s:MAX_LOOKBACK,\n    \\                            \"s:IsCommentOrString(line('.'), col('.'))\",\n    \\                            s:BRACKET_PAIRS[curline[0]], curline[0])\n\n    if matchlnum\n      \" Match the indent of the opening bracket.\n      return indent(matchlnum)\n    else\n      \" No opening bracket found (bad syntax), so bail.\n      exec 'return' s:GetDefaultPolicy(a:curlnum)\n    endif\n  endif\n\n  \" Check if the current line is the closing keyword in a keyword pair.\n  for pair in s:KEYWORD_PAIRS\n    if curline =~ pair[0]\n      \" Find the nearest and farthest matches within the same indent level.\n      let matches = s:SearchMatchingKeyword(a:curlnum, pair[1], pair[2])\n\n      if len(matches)\n        \" Don't force indenting/outdenting as long as line is already lined up\n        \" with a valid match\n        return max([min([indent(a:curlnum), indent(matches[0])]),\n        \\           indent(matches[1])])\n      else\n        \" No starting keyword found (bad syntax), so bail.\n        exec 'return' s:GetDefaultPolicy(a:curlnum)\n      endif\n    endif\n  endfor\n\n  \" Check if the current line is a `when` and not the first in a switch block.\n  if curline =~ '\\C^when\\>' && !s:SearchCode(prevnlnum, '\\C\\<switch\\>')\n    \" Look back for a `when`.\n    while prevnlnum\n      if getline(prevnlnum) =~ '\\C^\\s*when\\>'\n        \" Indent to match the found `when`, but don't force indenting (for when\n        \" indenting nested switch blocks.)\n        return min([indent(a:curlnum), indent(prevnlnum)])\n      endif\n\n      let prevnlnum = s:GetPrevNormalLine(prevnlnum)\n    endwhile\n\n    \" No matching `when` found (bad syntax), so bail.\n    exec 'return' s:GetDefaultPolicy(a:curlnum)\n  endif\n\n  \" If the previous line is a comment, use its indentation, but don't force\n  \" indenting.\n  if prevlnum != prevnlnum\n    return min([indent(a:curlnum), indent(prevlnum)])\n  endif\n\n  let prevline = s:GetTrimmedLine(prevnlnum)\n\n  \" Always indent after these operators.\n  if prevline =~ s:BEGIN_BLOCK_OP\n    return indent(prevnlnum) + s:ShiftWidth()\n  endif\n\n  \" Indent if the previous line starts a function block, but don't force\n  \" indenting if the line is non-blank (for empty function bodies.)\n  if prevline =~ s:FUNCTION\n    if strlen(getline(a:curlnum)) > indent(a:curlnum)\n      return min([indent(prevnlnum) + s:ShiftWidth(), indent(a:curlnum)])\n    else\n      return indent(prevnlnum) + s:ShiftWidth()\n    endif\n  endif\n\n  \" Check if continuation indenting is needed. If the line ends in a slash, make\n  \" sure it isn't a regex.\n  if prevline =~ s:CONTINUATION_OP &&\n  \\  !(prevline =~ '/$' && s:IsString(prevnlnum, col([prevnlnum, '$']) - 1))\n    \" Don't indent if the continuation follows a closing bracket.\n    if prevline =~ s:BRACKET_CONTINUATION\n      exec 'return' s:GetDefaultPolicy(a:curlnum)\n    endif\n\n    let prevprevnlnum = s:GetPrevNormalLine(prevnlnum)\n\n    \" Don't indent if not the first continuation.\n    if prevprevnlnum && s:GetTrimmedLine(prevprevnlnum) =~ s:CONTINUATION\n      exec 'return' s:GetDefaultPolicy(a:curlnum)\n    endif\n\n    \" Continuation indenting seems to vary between programmers, so if the line\n    \" is non-blank, don't override the indentation\n    if strlen(getline(a:curlnum)) > indent(a:curlnum)\n      exec 'return' s:GetDefaultPolicy(a:curlnum)\n    endif\n\n    \" Otherwise indent a level.\n    return indent(prevnlnum) + s:ShiftWidth()\n  endif\n\n  \" Check if the previous line starts with a keyword that begins a block.\n  if prevline =~ s:BEGIN_BLOCK\n    \" Indent if the current line doesn't start with `then` and the previous line\n    \" isn't a single-line statement.\n    if curline !~ '\\C^\\<then\\>' && !s:SearchCode(prevnlnum, '\\C\\<then\\>') &&\n    \\  prevline !~ s:SINGLE_LINE_ELSE\n      return indent(prevnlnum) + s:ShiftWidth()\n    else\n      exec 'return' s:GetDefaultPolicy(a:curlnum)\n    endif\n  endif\n\n  \" Indent a dot access if it's the first.\n  if curline =~ s:DOT_ACCESS\n    if prevline !~ s:DOT_ACCESS\n      return indent(prevnlnum) + s:ShiftWidth()\n    else\n      exec 'return' s:GetDefaultPolicy(a:curlnum)\n    endif\n  endif\n\n  \" Outdent if a keyword breaks out of a block as long as it doesn't have a\n  \" postfix condition (and the postfix condition isn't a single-line statement.)\n  if prevline =~ s:BREAK_BLOCK_OP\n    if !s:SearchCode(prevnlnum, s:POSTFIX_CONDITION) ||\n    \\   s:SearchCode(prevnlnum, '\\C\\<then\\>') &&\n    \\  !s:SearchCode(prevnlnum, s:CONTAINED_THEN)\n      \" Don't force indenting.\n      return min([indent(a:curlnum), indent(prevnlnum) - s:ShiftWidth()])\n    else\n      exec 'return' s:GetDefaultPolicy(a:curlnum)\n    endif\n  endif\n\n  \" Check if inside brackets.\n  let matchlnum = s:SearchPair(a:curlnum, a:curlnum - s:MAX_LOOKBACK,\n  \\                            \"s:IsCommentOrString(line('.'), col('.'))\",\n  \\                            '\\[\\|(\\|{', '\\]\\|)\\|}')\n\n  \" If inside brackets, indent relative to the brackets, but don't outdent an\n  \" already indented line.\n  if matchlnum\n    return max([indent(a:curlnum), indent(matchlnum) + s:ShiftWidth()])\n  endif\n\n  \" No special rules applied, so use the default policy.\n  exec 'return' s:GetDefaultPolicy(a:curlnum)\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/cucumber.vim",
    "content": "\" Vim indent file\n\" Language:\tCucumber\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 May 21\n\nif exists(\"b:did_indent\")\n  finish\nendif\nlet b:did_indent = 1\n\nsetlocal autoindent\nsetlocal indentexpr=GetCucumberIndent()\nsetlocal indentkeys=o,O,*<Return>,<:>,0<Bar>,0#,=,!^F\n\nlet b:undo_indent = 'setl ai< inde< indk<'\n\n\" Only define the function once.\nif exists(\"*GetCucumberIndent\")\n  finish\nendif\n\nfunction! s:syn(lnum)\n  return synIDattr(synID(a:lnum,1+indent(a:lnum),1),'name')\nendfunction\n\nfunction! GetCucumberIndent()\n  let line  = getline(prevnonblank(v:lnum-1))\n  let cline = getline(v:lnum)\n  let nline = getline(nextnonblank(v:lnum+1))\n  let syn = s:syn(prevnonblank(v:lnum-1))\n  let csyn = s:syn(v:lnum)\n  let nsyn = s:syn(nextnonblank(v:lnum+1))\n  if csyn ==# 'cucumberFeature' || cline =~# '^\\s*Feature:'\n    \" feature heading\n    return 0\n  elseif csyn ==# 'cucumberExamples' || cline =~# '^\\s*\\%(Examples\\|Scenarios\\):'\n    \" examples heading\n    return 2 * &sw\n  elseif csyn =~# '^cucumber\\%(Background\\|Scenario\\|ScenarioOutline\\)$' || cline =~# '^\\s*\\%(Background\\|Scenario\\|Scenario Outline\\):'\n    \" background, scenario or outline heading\n    return &sw\n  elseif syn ==# 'cucumberFeature' || line =~# '^\\s*Feature:'\n    \" line after feature heading\n    return &sw\n  elseif syn ==# 'cucumberExamples' || line =~# '^\\s*\\%(Examples\\|Scenarios\\):'\n    \" line after examples heading\n    return 3 * &sw\n  elseif syn =~# '^cucumber\\%(Background\\|Scenario\\|ScenarioOutline\\)$' || line =~# '^\\s*\\%(Background\\|Scenario\\|Scenario Outline\\):'\n    \" line after background, scenario or outline heading\n    return 2 * &sw\n  elseif cline =~# '^\\s*[@#]' && (nsyn == 'cucumberFeature' || nline =~# '^\\s*Feature:' || indent(prevnonblank(v:lnum-1)) <= 0)\n    \" tag or comment before a feature heading\n    return 0\n  elseif cline =~# '^\\s*@'\n    \" other tags\n    return &sw\n  elseif cline =~# '^\\s*[#|]' && line =~# '^\\s*|'\n    \" mid-table\n    \" preserve indent\n    return indent(prevnonblank(v:lnum-1))\n  elseif cline =~# '^\\s*|' && line =~# '^\\s*[^|]'\n    \" first line of a table, relative indent\n    return indent(prevnonblank(v:lnum-1)) + &sw\n  elseif cline =~# '^\\s*[^|]' && line =~# '^\\s*|'\n    \" line after a table, relative unindent\n    return indent(prevnonblank(v:lnum-1)) - &sw\n  elseif cline =~# '^\\s*#' && getline(v:lnum-1) =~ '^\\s*$' && (nsyn =~# '^cucumber\\%(Background\\|Scenario\\|ScenarioOutline\\)$' || nline =~# '^\\s*\\%(Background\\|Scenario\\|Scenario Outline\\):')\n    \" comments on scenarios\n    return &sw\n  endif\n  return indent(prevnonblank(v:lnum-1))\nendfunction\n\n\" vim:set sts=2 sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/elixir.vim",
    "content": "\" Vim indent file\n\" Language: Elixir\n\" Maintainer: Carlos Galdino <carloshsgaldino@gmail.com>\n\" Last Change: 2013 Apr 24\n\nif exists(\"b:did_indent\")\n  finish\nendif\nlet b:did_indent = 1\n\nsetlocal nosmartindent\n\nsetlocal indentexpr=GetElixirIndent()\nsetlocal indentkeys+==end,=else:,=match:,=elsif:,=catch:,=after:,=rescue:\n\nif exists(\"*GetElixirIndent\")\n  finish\nendif\n\nlet s:cpo_save = &cpo\nset cpo&vim\n\nlet s:skip_syntax  = '\\%(Comment\\|String\\)$'\nlet s:block_skip   = \"synIDattr(synID(line('.'),col('.'),1),'name') =~? '\" . s:skip_syntax . \"'\"\nlet s:block_start  = 'do\\|fn'\nlet s:block_middle = 'else\\|match\\|elsif\\|catch\\|after\\|rescue'\nlet s:block_end    = 'end'\nlet s:arrow        = '^.*->$'\nlet s:pipeline     = '^\\s*|>.*$'\n\nlet s:indent_keywords   = '\\<\\%(' . s:block_start . '\\|' . s:block_middle . '\\)$' . '\\|' . s:arrow\nlet s:deindent_keywords = '^\\s*\\<\\%(' . s:block_end . '\\|' . s:block_middle . '\\)\\>' . '\\|' . s:arrow\n\nfunction! GetElixirIndent()\n  let lnum = prevnonblank(v:lnum - 1)\n  let ind  = indent(lnum)\n\n  \" At the start of the file use zero indent.\n  if lnum == 0\n    return 0\n  endif\n\n  \" TODO: Remove these 2 lines\n  \" I don't know why, but for the test on spec/indent/lists_spec.rb:24.\n  \" Vim is making some mess on parsing the syntax of 'end', it is being\n  \" recognized as 'elixirString' when should be recognized as 'elixirBlock'.\n  \" This forces vim to sync the syntax.\n  call synID(v:lnum, 1, 1)\n  syntax sync fromstart\n\n  if synIDattr(synID(v:lnum, 1, 1), \"name\") !~ s:skip_syntax\n    let current_line = getline(v:lnum)\n    let last_line = getline(lnum)\n\n    let splited_line = split(last_line, '\\zs')\n    let opened_symbol = 0\n    let opened_symbol += count(splited_line, '[') - count(splited_line, ']')\n    let opened_symbol += count(splited_line, '{') - count(splited_line, '}')\n\n    let ind += opened_symbol * &sw\n\n    if current_line =~ '^\\s*\\(\\]\\|}\\)'\n      let ind -= &sw\n    endif\n\n    if last_line =~ s:indent_keywords\n      let ind += &sw\n    endif\n\n    \" if line starts with pipeline\n    \" and last line is an attribution\n    \" indents pipeline in same level as attribution\n    if current_line =~ s:pipeline &&\n          \\ last_line =~ '^[^=]\\+=.\\+$'\n      let b:old_ind = ind\n      let ind = float2nr(matchend(last_line, '=\\s*[^ ]') / &sw) * &sw\n    endif\n\n    \" if last line starts with pipeline\n    \" and current line doesn't start with pipeline\n    \" returns the indentation before the pipeline\n    if last_line =~ s:pipeline &&\n          \\ current_line !~ s:pipeline\n      let ind = b:old_ind\n    endif\n\n    if current_line =~ s:deindent_keywords\n      let bslnum = searchpair( '\\<\\%(' . s:block_start . '\\):\\@!\\>',\n            \\ '\\<\\%(' . s:block_middle . '\\):\\@!\\>\\zs',\n            \\ '\\<:\\@<!' . s:block_end . '\\>\\zs',\n            \\ 'nbW',\n            \\ s:block_skip )\n\n      let ind = indent(bslnum)\n    endif\n\n    \" indent case statements '->'\n    if current_line =~ s:arrow\n      let ind += &sw\n    endif\n  endif\n\n  return ind\nendfunction\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/erlang.vim",
    "content": "\" Vim indent file\n\" Language:     Erlang\n\" Maintainer:   Csaba Hoch <csaba.hoch@gmail.com>\n\" Contributor:  Edwin Fine <efine145_nospam01 at usa dot net>\n\" Contributor:  Pawel 'kTT' Salata <rockplayer.pl@gmail.com>\n\" Last Change:  2010 Aug 30\n\n\" Only load this indent file when no other was loaded.\nif exists(\"b:did_indent\")\n  finish\nendif\nlet b:did_indent = 1\n\nsetlocal indentexpr=ErlangIndent()\nsetlocal indentkeys+==after,=end,=catch,=),=],=}\n\n\" Only define the functions once.\nif exists(\"*ErlangIndent\")\n   finish\nendif\n\n\" The function go through the whole line, analyses it and sets the indentation\n\" (ind variable).\n\" l: the number of the line to be examined.\nfunction s:ErlangIndentAfterLine(l)\n    let i = 0 \" the index of the current character in the line\n    let length = strlen(a:l) \" the length of the line\n    let ind = 0 \" how much should be the difference between the indentation of\n                \" the current line and the indentation of the next line?\n                \" e.g. +1: the indentation of the next line should be equal to\n                \" the indentation of the current line plus one shiftwidth\n    let lastFun = 0 \" the last token was a 'fun'\n    let lastReceive = 0 \" the last token was a 'receive'; needed for 'after'\n    let lastHashMark = 0 \" the last token was a 'hashmark'\n\n    \" ignore type annotation lines\n    if a:l =~# '^\\s*-type'\n\treturn 0\n    endif\n\n    while 0<= i && i < length\n\n        \" m: the next value of the i\n        if a:l[i] == '%'\n            break\n        elseif a:l[i] == '\"'\n            let m = matchend(a:l,'\"\\%([^\"\\\\]\\|\\\\.\\)*\"',i)\n            let lastReceive = 0\n        elseif a:l[i] == \"'\"\n            let m = matchend(a:l,\"'[^']*'\",i)\n            let lastReceive = 0\n        elseif a:l[i] =~# \"[a-z]\"\n            let m = matchend(a:l,\".[[:alnum:]_]*\",i)\n            if lastFun\n                let ind = ind - 1\n                let lastFun = 0\n                let lastReceive = 0\n            elseif a:l[(i):(m-1)] =~# '^\\%(case\\|if\\|try\\)$'\n                let ind = ind + 1\n            elseif a:l[(i):(m-1)] =~# '^receive$'\n                let ind = ind + 1\n                let lastReceive = 1\n            elseif a:l[(i):(m-1)] =~# '^begin$'\n                let ind = ind + 2\n                let lastReceive = 0\n            elseif a:l[(i):(m-1)] =~# '^end$'\n                let ind = ind - 2\n                let lastReceive = 0\n            elseif a:l[(i):(m-1)] =~# '^after$'\n                if lastReceive == 0\n                    let ind = ind - 1\n                else\n                    let ind = ind + 0\n                endif\n                let lastReceive = 0\n            elseif a:l[(i):(m-1)] =~# '^fun$'\n                let ind = ind + 1\n                let lastFun = 1\n                let lastReceive = 0\n            endif\n        elseif a:l[i] =~# \"[A-Z_]\"\n            let m = matchend(a:l,\".[[:alnum:]_]*\",i)\n            let lastReceive = 0\n        elseif a:l[i] == '$'\n            let m = i+2\n            let lastReceive = 0\n        elseif a:l[i] == \".\" && (i+1>=length || a:l[i+1]!~ \"[0-9]\")\n            let m = i+1\n            if lastHashMark\n                let lastHashMark = 0\n            else\n                let ind = ind - 1\n            endif\n            let lastReceive = 0\n        elseif a:l[i] == '-' && (i+1<length && a:l[i+1]=='>')\n            let m = i+2\n            let ind = ind + 1\n            let lastReceive = 0\n        elseif a:l[i] == ';' && a:l[(i):(length)] !~# '.*->.*'\n            let m = i+1\n            let ind = ind - 1\n            let lastReceive = 0\n        elseif a:l[i] == '#'\n            let m = i+1\n            let lastHashMark = 1\n        elseif a:l[i] =~# '[({[]'\n            let m = i+1\n            let ind = ind + 1\n            let lastFun = 0\n            let lastReceive = 0\n            let lastHashMark = 0\n        elseif a:l[i] =~# '[)}\\]]'\n            let m = i+1\n            let ind = ind - 1\n            let lastReceive = 0\n        else\n            let m = i+1\n        endif\n\n        let i = m\n\n    endwhile\n\n    return ind\n\nendfunction\n\nfunction s:FindPrevNonBlankNonComment(lnum)\n    let lnum = prevnonblank(a:lnum)\n    let line = getline(lnum)\n    \" continue to search above if the current line begins with a '%'\n    while line =~# '^\\s*%.*$'\n        let lnum = prevnonblank(lnum - 1)\n        if 0 == lnum\n            return 0\n        endif\n        let line = getline(lnum)\n    endwhile\n    return lnum\nendfunction\n\nfunction ErlangIndent()\n\n    \" Find a non-blank line above the current line.\n    let lnum = prevnonblank(v:lnum - 1)\n\n    \" Hit the start of the file, use zero indent.\n    if lnum == 0\n        return 0\n    endif\n\n    let prevline = getline(lnum)\n    let currline = getline(v:lnum)\n\n    let ind = indent(lnum) + &sw * s:ErlangIndentAfterLine(prevline)\n\n    \" special cases:\n    if prevline =~# '^\\s*\\%(after\\|end\\)\\>'\n        let ind = ind + 2*&sw\n    endif\n    if currline =~# '^\\s*end\\>'\n        let ind = ind - 2*&sw\n    endif\n    if currline =~# '^\\s*after\\>'\n        let plnum = s:FindPrevNonBlankNonComment(v:lnum-1)\n        if getline(plnum) =~# '^[^%]*\\<receive\\>\\s*\\%(%.*\\)\\=$'\n            let ind = ind - 1*&sw\n            \" If the 'receive' is not in the same line as the 'after'\n        else\n            let ind = ind - 2*&sw\n        endif\n    endif\n    if prevline =~# '^\\s*[)}\\]]'\n        let ind = ind + 1*&sw\n    endif\n    if currline =~# '^\\s*[)}\\]]'\n        let ind = ind - 1*&sw\n    endif\n    if prevline =~# '^\\s*\\%(catch\\)\\s*\\%(%\\|$\\)'\n        let ind = ind + 1*&sw\n    endif\n    if currline =~# '^\\s*\\%(catch\\)\\s*\\%(%\\|$\\)'\n        let ind = ind - 1*&sw\n    endif\n\n    if ind<0\n        let ind = 0\n    endif\n    return ind\n\nendfunction\n\n\" TODO:\n\" \n\" f() ->\n\"     x(\"foo\n\"         bar\")\n\"         ,\n\"         bad_indent.\n\"\n\" fun\n\"     init/0,\n\"     bad_indent\n\"\n\"     #rec\n\"     .field,\n\" bad_indent\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/eruby.vim",
    "content": "\" Vim indent file\n\" Language:\t\teRuby\n\" Maintainer:\t\tTim Pope <vimNOSPAM@tpope.org>\n\" URL:\t\t\thttps://github.com/vim-ruby/vim-ruby\n\" Release Coordinator:\tDoug Kearns <dougkearns@gmail.com>\n\nif exists(\"b:did_indent\")\n  finish\nendif\n\nruntime! indent/ruby.vim\nunlet! b:did_indent\nsetlocal indentexpr=\n\nif exists(\"b:eruby_subtype\")\n  exe \"runtime! indent/\".b:eruby_subtype.\".vim\"\nelse\n  runtime! indent/html.vim\nendif\nunlet! b:did_indent\n\n\" Force HTML indent to not keep state.\nlet b:html_indent_usestate = 0\n\nif &l:indentexpr == ''\n  if &l:cindent\n    let &l:indentexpr = 'cindent(v:lnum)'\n  else\n    let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))'\n  endif\nendif\nlet b:eruby_subtype_indentexpr = &l:indentexpr\n\nlet b:did_indent = 1\n\nsetlocal indentexpr=GetErubyIndent()\nsetlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],o,O,!^F,=end,=else,=elsif,=rescue,=ensure,=when\n\n\" Only define the function once.\nif exists(\"*GetErubyIndent\")\n  finish\nendif\n\nfunction! GetErubyIndent(...)\n  if a:0 && a:1 == '.'\n    let v:lnum = line('.')\n  elseif a:0 && a:1 =~ '^\\d'\n    let v:lnum = a:1\n  endif\n  let vcol = col('.')\n  call cursor(v:lnum,1)\n  let inruby = searchpair('<%','','%>','W')\n  call cursor(v:lnum,vcol)\n  if inruby && getline(v:lnum) !~ '^<%\\|^\\s*[-=]\\=%>'\n    let ind = GetRubyIndent(v:lnum)\n  else\n    exe \"let ind = \".b:eruby_subtype_indentexpr\n\n    \" Workaround for Andy Wokula's HTML indent. This should be removed after\n    \" some time, since the newest version is fixed in a different way.\n    if b:eruby_subtype_indentexpr =~# '^HtmlIndent('\n\t  \\ && exists('b:indent')\n\t  \\ && type(b:indent) == type({})\n\t  \\ && has_key(b:indent, 'lnum')\n      \" Force HTML indent to not keep state\n      let b:indent.lnum = -1\n    endif\n  endif\n  let lnum = prevnonblank(v:lnum-1)\n  let line = getline(lnum)\n  let cline = getline(v:lnum)\n  if cline =~# '^\\s*<%[-=]\\=\\s*\\%(}\\|end\\|else\\|\\%(ensure\\|rescue\\|elsif\\|when\\).\\{-\\}\\)\\s*\\%([-=]\\=%>\\|$\\)'\n    let ind = ind - &sw\n  endif\n  if line =~# '\\S\\s*<%[-=]\\=\\s*\\%(}\\|end\\).\\{-\\}\\s*\\%([-=]\\=%>\\|$\\)'\n    let ind = ind - &sw\n  endif\n  if line =~# '\\%({\\|\\<do\\)\\%(\\s*|[^|]*|\\)\\=\\s*[-=]\\=%>'\n    let ind = ind + &sw\n  elseif line =~# '<%[-=]\\=\\s*\\%(module\\|class\\|def\\|if\\|for\\|while\\|until\\|else\\|elsif\\|case\\|when\\|unless\\|begin\\|ensure\\|rescue\\)\\>.*%>'\n    let ind = ind + &sw\n  endif\n  if line =~# '^\\s*<%[=#-]\\=\\s*$' && cline !~# '^\\s*end\\>'\n    let ind = ind + &sw\n  endif\n  if line !~# '^\\s*<%' && line =~# '%>\\s*$'\n    let ind = ind - &sw\n  endif\n  if cline =~# '^\\s*[-=]\\=%>\\s*$'\n    let ind = ind - &sw\n  endif\n  return ind\nendfunction\n\n\" vim:set sw=2 sts=2 ts=8 noet:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/gitconfig.vim",
    "content": "\" Vim indent file\n\" Language:\tgit config file\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2012 April 7\n\nif exists(\"b:did_indent\")\n  finish\nendif\nlet b:did_indent = 1\n\nsetlocal autoindent\nsetlocal indentexpr=GetGitconfigIndent()\nsetlocal indentkeys=o,O,*<Return>,0[,],0;,0#,=,!^F\n\nlet b:undo_indent = 'setl ai< inde< indk<'\n\n\" Only define the function once.\nif exists(\"*GetGitconfigIndent\")\n  finish\nendif\n\nfunction! GetGitconfigIndent()\n  let line  = getline(prevnonblank(v:lnum-1))\n  let cline = getline(v:lnum)\n  if line =~  '\\\\\\@<!\\%(\\\\\\\\\\)*\\\\$'\n    \" odd number of slashes, in a line continuation\n    return 2 * &sw\n  elseif cline =~ '^\\s*\\['\n    return 0\n  elseif cline =~ '^\\s*\\a'\n    return &sw\n  elseif cline == ''       && line =~ '^\\['\n    return &sw\n  else\n    return -1\n  endif\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/go.vim",
    "content": "\" Copyright 2011 The Go Authors. All rights reserved.\n\" Use of this source code is governed by a BSD-style\n\" license that can be found in the LICENSE file.\n\"\n\" indent/go.vim: Vim indent file for Go.\n\"\n\" TODO:\n\" - function invocations split across lines\n\" - general line splits (line ends in an operator)\n\nif exists(\"b:did_indent\")\n    finish\nendif\nlet b:did_indent = 1\n\n\" C indentation is too far off useful, mainly due to Go's := operator.\n\" Let's just define our own.\nsetlocal nolisp\nsetlocal autoindent\nsetlocal indentexpr=GoIndent(v:lnum)\nsetlocal indentkeys+=<:>,0=},0=)\n\nif exists(\"*GoIndent\")\n  finish\nendif\n\nfunction! GoIndent(lnum)\n  let prevlnum = prevnonblank(a:lnum-1)\n  if prevlnum == 0\n    \" top of file\n    return 0\n  endif\n\n  \" grab the previous and current line, stripping comments.\n  let prevl = substitute(getline(prevlnum), '//.*$', '', '')\n  let thisl = substitute(getline(a:lnum), '//.*$', '', '')\n  let previ = indent(prevlnum)\n\n  let ind = previ\n\n  if prevl =~ '[({]\\s*$'\n    \" previous line opened a block\n    let ind += &sw\n  endif\n  if prevl =~# '^\\s*\\(case .*\\|default\\):$'\n    \" previous line is part of a switch statement\n    let ind += &sw\n  endif\n  \" TODO: handle if the previous line is a label.\n\n  if thisl =~ '^\\s*[)}]'\n    \" this line closed a block\n    let ind -= &sw\n  endif\n\n  \" Colons are tricky.\n  \" We want to outdent if it's part of a switch (\"case foo:\" or \"default:\").\n  \" We ignore trying to deal with jump labels because (a) they're rare, and\n  \" (b) they're hard to disambiguate from a composite literal key.\n  if thisl =~# '^\\s*\\(case .*\\|default\\):$'\n    let ind -= &sw\n  endif\n\n  return ind\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/haml.vim",
    "content": "\" Vim indent file\n\" Language:\tHaml\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 May 21\n\nif exists(\"b:did_indent\")\n  finish\nendif\nruntime! indent/ruby.vim\nunlet! b:did_indent\nlet b:did_indent = 1\n\nsetlocal autoindent sw=2 et\nsetlocal indentexpr=GetHamlIndent()\nsetlocal indentkeys=o,O,*<Return>,},],0),!^F,=end,=else,=elsif,=rescue,=ensure,=when\n\n\" Only define the function once.\nif exists(\"*GetHamlIndent\")\n  finish\nendif\n\nlet s:attributes = '\\%({.\\{-\\}}\\|\\[.\\{-\\}\\]\\)'\nlet s:tag = '\\%([%.#][[:alnum:]_-]\\+\\|'.s:attributes.'\\)*[<>]*'\n\nif !exists('g:haml_self_closing_tags')\n  let g:haml_self_closing_tags = 'base|link|meta|br|hr|img|input'\nendif\n\nfunction! GetHamlIndent()\n  let lnum = prevnonblank(v:lnum-1)\n  if lnum == 0\n    return 0\n  endif\n  let line = substitute(getline(lnum),'\\s\\+$','','')\n  let cline = substitute(substitute(getline(v:lnum),'\\s\\+$','',''),'^\\s\\+','','')\n  let lastcol = strlen(line)\n  let line = substitute(line,'^\\s\\+','','')\n  let indent = indent(lnum)\n  let cindent = indent(v:lnum)\n  if cline =~# '\\v^-\\s*%(elsif|else|when)>'\n    let indent = cindent < indent ? cindent : indent - &sw\n  endif\n  let increase = indent + &sw\n  if indent == indent(lnum)\n    let indent = cindent <= indent ? -1 : increase\n  endif\n\n  let group = synIDattr(synID(lnum,lastcol,1),'name')\n\n  if line =~ '^!!!'\n    return indent\n  elseif line =~ '^/\\%(\\[[^]]*\\]\\)\\=$'\n    return increase\n  elseif group == 'hamlFilter'\n    return increase\n  elseif line =~ '^'.s:tag.'[&!]\\=[=~-]\\s*\\%(\\%(if\\|else\\|elsif\\|unless\\|case\\|when\\|while\\|until\\|for\\|begin\\|module\\|class\\|def\\)\\>\\%(.*\\<end\\>\\)\\@!\\|.*do\\%(\\s*|[^|]*|\\)\\=\\s*$\\)'\n    return increase\n  elseif line =~ '^'.s:tag.'[&!]\\=[=~-].*,\\s*$'\n    return increase\n  elseif line == '-#'\n    return increase\n  elseif group =~? '\\v^(hamlSelfCloser)$' || line =~? '^%\\v%('.g:haml_self_closing_tags.')>'\n    return indent\n  elseif group =~? '\\v^%(hamlTag|hamlAttributesDelimiter|hamlObjectDelimiter|hamlClass|hamlId|htmlTagName|htmlSpecialTagName)$'\n    return increase\n  elseif synIDattr(synID(v:lnum,1,1),'name') ==? 'hamlRubyFilter'\n    return GetRubyIndent()\n  else\n    return indent\n  endif\nendfunction\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/haskell.vim",
    "content": "\" Vim indent file\n\" Language: Haskell\n\" Maintainer: Tristan Ravitch\n\nif exists('b:did_indent')\n  finish\nendif\n\nlet b:did_indent = 1\n\nif !exists('g:hasksyn_indent_search_backward')\n  let g:hasksyn_indent_search_backward = 100\nendif\n\nif !exists('g:hasksyn_dedent_after_return')\n  let g:hasksyn_dedent_after_return = 1\nendif\n\nif !exists('g:hasksyn_dedent_after_catchall_case')\n  let g:hasksyn_dedent_after_catchall_case = 1\nendif\n\nsetlocal noautoindent\nsetlocal indentexpr=HIndent(v:lnum)\nsetlocal indentkeys+=0=where\nsetlocal indentkeys+=0=->\nsetlocal indentkeys+=0==>\nsetlocal indentkeys+=0=in\nsetlocal indentkeys+=0=class,0=instance,0=import\nsetlocal indentkeys+=<Bar>\nsetlocal indentkeys+=0\\,\n\nif exists(\"*HIndent\")\n  finish\nendif\n\n\nfunction! HIndent(lnum)\n  \" Don't do anything boneheaded if we are inside of a block comment\n  if s:IsInBlockComment()\n    return -1\n  endif\n\n  let plnum = s:PrevNonCommentLineNum(a:lnum)\n  if plnum == 0\n    return 0\n  endif\n\n  let prevl = s:GetAndStripTrailingComments(plnum)\n  let thisl = s:GetAndStripTrailingComments(a:lnum)\n  let previ = indent(plnum)\n\n  \" If this is a bare where clause, indent it one step.  where as part of an\n  \" instance should be unaffected unless you put it in an odd place.\n  \" This is the wrong thing if you are deeply indented already and want to put\n  \" a where clause on the top-level construct, but there isn't much that can\n  \" be done about that case...\n  if thisl =~ '^\\s*where\\s*$'\n    return previ + &sw\n  endif\n\n  \" If we start a new line for a type signature, see if we can line it up with\n  \" the previous line.\n  if thisl =~ '^\\s*\\(->\\|=>\\)\\s*'\n    let tokPos = s:BackwardPatternSearch(a:lnum, '\\(::\\|->\\|=>\\)')\n    if tokPos != -1\n      return tokPos\n    endif\n  endif\n\n  if prevl =~ '\\Wof\\s*$' || prevl =~ '\\Wdo\\s*$'\n    return previ + &sw\n  endif\n\n  \" Now for commas.  Commas will align pretty naturally for simple pattern\n  \" guards, so don't worry about that for now.  If we see the line is just a\n  \" comma, search up for something to align it to.  In the easy case, look\n  \" for a [ or { (the last in their line).  Also consider other commas that\n  \" are preceeded only by whitespace.  This isn't just a previous line check\n  \" necessarily, though that would cover most cases.\n  if thisl =~ '^\\s*,'\n    let cmatch = match(prevl, '\\(^\\s*\\)\\@<=,')\n    if cmatch != -1\n      return cmatch\n    endif\n\n    let bmatch = match(prevl, '\\({\\|\\[\\)')\n    if bmatch != -1\n      return bmatch\n    endif\n  endif\n\n  \" Match an 'in' keyword with the corresponding let.  Unfortunately, if the\n  \" name of your next binding happens to start with 'in', this will muck with\n  \" it.  Not sure if there is a workaround because we can't force an\n  \" auto-indent after 'in ' as far as I can see.\n  if thisl =~ '\\s*in$'\n    let letStart = s:BackwardPatternSearch(a:lnum, '\\(\\W\\)\\@<=let\\W')\n    if letStart != -1\n      return letStart\n    endif\n  endif\n\n  \" We don't send data or type to column zero because they can be indented\n  \" inside of 'class' definitions for data/type families\n  if thisl =~ '^\\s*\\(class\\|instance\\|newtype\\|import\\)'\n    return 0\n  endif\n\n  \" FIXME: Only do this if the previous line was not already indented for the\n  \" same reason.  Also be careful of -> in type signatures.  Make sure we have\n  \" an earlier rule to line those up properly.\n  if prevl =~ '[=>\\$\\.\\^+\\&`(-]\\s*$'\n    return previ + &sw\n  endif\n\n  \" We have a special case for dealing with trailing '*' operators.  If the *\n  \" is the end of a kind signature in a type family/associated type, we don't\n  \" want to indent the next line.  We do if it is just being a * operator in\n  \" an expression, though.\n  if prevl =~ '\\(\\(type\\|data\\).*\\)\\@<!\\*\\s*$'\n    return previ + &sw\n  endif\n\n  \" If the previous line ends in a where, indent us a step\n  if prevl =~ '\\Wwhere\\s*$'\n    return previ + &sw\n  endif\n\n  \" If we see a |, first try to line it up with the pipe on the previous line.\n  \" Search backward on nearby lines, giving up if we hit a line with a \\w at\n  \" column 0. Otherwise, indent it relative to the previous line\n  \"\n  \" Here we can also handle the case of lining up data declarations.  The\n  \" backwards pipe search will fail for a data declaration (since data is at\n  \" column 0), so we can have an extra check after the pipe search for\n  \" data..=.\n  if thisl =~ '^\\s*|$'\n    let nearestPipeIndex = s:BackwardPatternSearch(a:lnum, '\\(^\\s*\\)\\@<=|')\n    if nearestPipeIndex != -1\n      return nearestPipeIndex\n    endif\n\n    let dataEquals = match(prevl, '\\(data.*\\)\\@<==')\n    if dataEquals != -1\n      return dataEquals\n    endif\n\n    return previ + &sw\n  endif\n\n  \" If the previous line has a let, line the cursor up with the start of the\n  \" first binding name.  Autoindent handles subsequent cases.\n  \"\n  \" This should come after the 'in' aligner so that 'in' is not treated as\n  \" just something to be aligned to the previous binding.\n  let lbindStart = match(prevl, '\\(\\Wlet\\s\\+\\)\\@<=\\w')\n  if lbindStart != -1\n    return lbindStart\n  endif\n\n  \" If requested, dedent from a bare return (presumably in a do block).\n  \" This comes after the trailing operator case - hopefully that will avoid\n  \" returns on lines by themselves but not really in a do block.  This is a\n  \" heuristic.\n  if g:hasksyn_dedent_after_return && prevl =~ '^\\s*return\\W'\n    return previ - &sw\n  endif\n\n  \" Similar to the return dedent - after a catchall case _ -> ..., we can\n  \" almost certainly dedent.  Again, it comes after the line continuation\n  \" heuristic so we don't dedent while someone is making an obviously\n  \" multi-line construct\n  if g:hasksyn_dedent_after_catchall_case && prevl =~ '^\\s*_\\s*->\\W'\n    return previ - &sw\n  endif\n\n  \" On the other hand, if the previous line is a where with some bindings\n  \" following it on the same line, accommodate and align with the first non-ws\n  \" char after the where\n  if prevl =~ '\\Wwhere\\s\\+\\w'\n    let bindStart = match(prevl, '\\(\\Wwhere\\s\\+\\)\\@<=\\w')\n    if bindStart != -1\n      return bindStart\n    endif\n\n    return previ + &sw\n  endif\n\n  return previ\nendfunction\n\n\" Search backwards for a token from the cursor position\nfunction! s:FindTokenNotInCommentOrString(tok)\n  return search('\\(--.*\\|\"\\([^\"]\\|\\\\\"\\)*\\)\\@<!' . tok, 'bcnW')\nendfunction\n\n\" Should return -1 if the given line is inside of an unclosed block comment.\n\" This is meant to let us exit early from the indenter if we are in a comment.\n\" Look for the nearest -} and {- such that they are not between \"\" or in a\n\" line comment\n\"\n\" Note: we may need to restrict how far back this will search.  On the other\n\" hand, the native vim 'search' function might be efficient enough to support\n\" entire buffers.\nfunction! s:IsInBlockComment()\n  let openCommPos = s:FindTokenNotInCommentOrString('{-')\n  \" If there is no open comment, then we don't have to look for a close\n  if openCommPos == 0\n    return 0\n  endif\n\n  \" Or if there is a close comment marker that comes after the open marker, we\n  \" are not in a comment.  Note that we potentially need to check the position\n  \" in the line if they are both on the same line.  I'll fix it later.\n  let closeCommPos = s:FindTokenNotInCommentOrString('-}')\n  if closeCommPos >= openCommPos\n    return 0\n  endif\n\n  return 1\nendfunction\n\n\" Get the previous line that is not a comment.  Pass in the *current* line\n\" number.  Also skips blank lines.\nfunction! s:PrevNonCommentLineNum(lnum)\n  if a:lnum <= 1\n    return 0\n  endif\n\n  let lnum = a:lnum - 1\n\n  while 1\n    if lnum == 0\n      return 0\n    endif\n\n    let aline = getline(lnum)\n    if aline =~ '^\\s*--'\n      let lnum = lnum - 1\n    else\n      return lnum\n    endif\n  endwhile\nendfunction\n\nfunction! s:GetAndStripTrailingComments(lnum)\n  let aline = getline(a:lnum)\n  \" We can't just remove the string literal since that leaves us with a\n  \" trailing operator (=), so replace it with a fake identifier\n  let noStrings = substitute(aline, '\"\\([^\"]\\|\\\\\"\\)*\"', 's', '')\n  let noLineCom = substitute(noStrings, '--.*$', '', '')\n\n  \" If there are no fancy block comments involved, skip some of this extra\n  \" work\n  if noLineCom !~ '\\({-\\|-}\\)'\n    return noLineCom\n  endif\n\n  \" We stripped line comments, now we need to strip out any relevant multiline\n  \" comments.  This includes comments starting much earlier but ending on this\n  \" line or comments starting on this line and continuing to the next.  This\n  \" is probably easiest in two steps: {- to (-}|$) and then ^ to -}.\n  \" Note we are using a non-greedy match here so that only the minimal {- -}\n  \" pair is consumed.\n  let noBlock1 = substitute(noLineComm, '{-.\\{-}-}', '', '')\n  let noBlock2 = substitute(noBlock1, '{-.\\{-}$', '', '')\n  let noBlock3 = substitute(noBlock2, '^.\\{-}-}', '', '')\n  return noBlock3\nendfunction\n\n\" Search backwards from lnum for pat, returning the starting index if found\n\" within the search range or -1 if not found.  Stops searching at lines\n\" starting at column 0 with an identifier character.\nfunction! s:BackwardPatternSearch(lnum, pat)\n  let lnum = s:PrevNonCommentLineNum(a:lnum)\n  while 1\n    let aline = s:GetAndStripTrailingComments(lnum)\n    if a:lnum - lnum > g:hasksyn_indent_search_backward\n      return -1\n    endif\n\n    let theMatch = match(aline, a:pat)\n    if theMatch != -1\n      return theMatch\n    else\n      \" We want to be able to consider lines starting in column 0, but we don't\n      \" want to search back past them.\n      if aline =~ '^\\w'\n        return -1\n      endif\n      let lnum = s:PrevNonCommentLineNum(lnum)\n    endif\n  endwhile\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/html.vim",
    "content": "\" Description:      HTML5 and inline SVG indenter\n\" Changed By: HT de Beer <H.T.de.Beer@gmail.com>\n\" Last Change: 20121013\n\"   Added the SVG elements to the list of indenting element. SVG elements\n\"   taken from http://www.w3.org/TR/SVG/eltindex.html\n\"   \n\" Description:        html5 (and html4) indenter\n\" Changed By:        Brian Gershon <brian.five@gmail.com>\n\" Last Change:        30 Jan 2011\n\" \n\"   1. Started with vim72 html indent file authored by Johannes Zellner (below)\n\"   2. Added html5 list as described here:\n\"      http://stackoverflow.com/questions/3232518/how-to-update-vim-to-color-code-new-html-elements\n\"   3. Added this to a fork of https://github.com/othree/html5.vim\n\"      which already provides nice html5 syntax highlighting.\n\"\n\" Description:        html indenter\n\" Author:        Johannes Zellner <johannes@zellner.org>\n\" Last Change:        Mo, 05 Jun 2006 22:32:41 CEST\n\"                 Restoring 'cpo' and 'ic' added by Bram 2006 May 5\n\" Globals:\n\" let g:html_indent_tags = 'html\\|p\\|time'\n\" let g:html_exclude_tags = ['html', 'style', 'script', 'body']\n\n\n\" Only load this indent file when no other was loaded.\nif exists(\"b:did_indent\")\n    finish\nendif\nruntime! indent/javascript.vim\nlet s:jsindent = &indentexpr\nunlet b:did_indent\nruntime! indent/css.vim\nlet s:cssindent = &indentexpr\nlet b:did_indent = 1\n\n\" [-- local settings (must come before aborting the script) --]\nsetlocal indentexpr=HtmlIndentGet(v:lnum)\nsetlocal indentkeys=o,O,*<Return>,<>>,{,}\n\n\nlet s:tags = []\n\n\" [-- <ELEMENT ? - - ...> --]\ncall add(s:tags, 'a')\ncall add(s:tags, 'abbr')\ncall add(s:tags, 'acronym')\ncall add(s:tags, 'address')\ncall add(s:tags, 'b')\ncall add(s:tags, 'bdo')\ncall add(s:tags, 'big')\ncall add(s:tags, 'blockquote')\ncall add(s:tags, 'button')\ncall add(s:tags, 'caption')\ncall add(s:tags, 'center')\ncall add(s:tags, 'cite')\ncall add(s:tags, 'code')\ncall add(s:tags, 'colgroup')\ncall add(s:tags, 'del')\ncall add(s:tags, 'dfn')\ncall add(s:tags, 'dir')\ncall add(s:tags, 'div')\ncall add(s:tags, 'dl')\ncall add(s:tags, 'em')\ncall add(s:tags, 'fieldset')\ncall add(s:tags, 'font')\ncall add(s:tags, 'form')\ncall add(s:tags, 'frameset')\ncall add(s:tags, 'h1')\ncall add(s:tags, 'h2')\ncall add(s:tags, 'h3')\ncall add(s:tags, 'h4')\ncall add(s:tags, 'h5')\ncall add(s:tags, 'h6')\ncall add(s:tags, 'i')\ncall add(s:tags, 'iframe')\ncall add(s:tags, 'ins')\ncall add(s:tags, 'kbd')\ncall add(s:tags, 'label')\ncall add(s:tags, 'legend')\ncall add(s:tags, 'li')\ncall add(s:tags, 'map')\ncall add(s:tags, 'menu')\ncall add(s:tags, 'noframes')\ncall add(s:tags, 'noscript')\ncall add(s:tags, 'object')\ncall add(s:tags, 'ol')\ncall add(s:tags, 'optgroup')\ncall add(s:tags, 'p')\n\" call add(s:tags, 'pre')\ncall add(s:tags, 'q')\ncall add(s:tags, 's')\ncall add(s:tags, 'samp')\ncall add(s:tags, 'script')\ncall add(s:tags, 'select')\ncall add(s:tags, 'small')\ncall add(s:tags, 'span')\ncall add(s:tags, 'strong')\ncall add(s:tags, 'style')\ncall add(s:tags, 'sub')\ncall add(s:tags, 'sup')\ncall add(s:tags, 'table')\ncall add(s:tags, 'textarea')\ncall add(s:tags, 'title')\ncall add(s:tags, 'tt')\ncall add(s:tags, 'u')\ncall add(s:tags, 'ul')\ncall add(s:tags, 'var')\n\n\" New HTML 5 elements\ncall add(s:tags, 'article')\ncall add(s:tags, 'aside')\ncall add(s:tags, 'audio')\ncall add(s:tags, 'canvas')\ncall add(s:tags, 'datalist')\ncall add(s:tags, 'details')\ncall add(s:tags, 'figcaption')\ncall add(s:tags, 'figure')\ncall add(s:tags, 'footer')\ncall add(s:tags, 'header')\ncall add(s:tags, 'hgroup')\ncall add(s:tags, 'main')\ncall add(s:tags, 'mark')\ncall add(s:tags, 'meter')\ncall add(s:tags, 'nav')\ncall add(s:tags, 'output')\ncall add(s:tags, 'progress')\ncall add(s:tags, 'rp')\ncall add(s:tags, 'rt')\ncall add(s:tags, 'ruby')\ncall add(s:tags, 'section')\ncall add(s:tags, 'summary')\ncall add(s:tags, 'time')\ncall add(s:tags, 'video')\ncall add(s:tags, 'bdi')\ncall add(s:tags, 'data')\n\n\" Web Component\ncall add(s:tags, 'template')\n\n\" Common inline used SVG elements\ncall add(s:tags, 'clipPath')\ncall add(s:tags, 'defs')\ncall add(s:tags, 'desc')\ncall add(s:tags, 'filter')\ncall add(s:tags, 'foreignObject')\ncall add(s:tags, 'g')\ncall add(s:tags, 'linearGradient')\ncall add(s:tags, 'marker')\ncall add(s:tags, 'mask')\ncall add(s:tags, 'pattern')\ncall add(s:tags, 'radialGradient')\ncall add(s:tags, 'svg')\ncall add(s:tags, 'switch')\ncall add(s:tags, 'symbol')\ncall add(s:tags, 'text')\ncall add(s:tags, 'textPath')\ncall add(s:tags, 'tref')\ncall add(s:tags, 'tspan')\n\ncall add(s:tags, 'html')\ncall add(s:tags, 'head')\ncall add(s:tags, 'body')\n\ncall add(s:tags, 'thead')\ncall add(s:tags, 'tbody')\ncall add(s:tags, 'tfoot')\ncall add(s:tags, 'tr')\ncall add(s:tags, 'th')\ncall add(s:tags, 'td')\n\n\n\nlet s:omittable = [ \n  \\  ['address', 'article', 'aside', 'blockquote', 'dir', 'div', 'dl', 'fieldset', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hr', 'menu', 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'],\n  \\  ['dt', 'dd'],\n  \\  ['li'],\n  \\  ['thead', 'tbody', 'tfoot'],\n  \\  ['th', 'td'],\n  \\]\n\nif exists('g:html_exclude_tags')\n    for tag in g:html_exclude_tags\n        call remove(s:tags, index(s:tags, tag))\n    endfor\nendif\nlet s:html_indent_tags = join(s:tags, '\\|')\nif exists('g:html_indent_tags')\n    let s:html_indent_tags = s:html_indent_tags.'\\|'.g:html_indent_tags\nendif\n\nlet s:cpo_save = &cpo\nset cpo-=C\n\n\" [-- count indent-increasing tags of line a:lnum --]\nfun! <SID>HtmlIndentOpen(lnum, pattern)\n    let s = substitute('x'.getline(a:lnum),\n    \\ '.\\{-}\\(\\(<\\)\\('.a:pattern.'\\)\\>\\)', \"\\1\", 'g')\n    let s = substitute(s, \"[^\\1].*$\", '', '')\n    return strlen(s)\nendfun\n\n\" [-- count indent-decreasing tags of line a:lnum --]\nfun! <SID>HtmlIndentClose(lnum, pattern)\n    let s = substitute('x'.getline(a:lnum),\n    \\ '.\\{-}\\(\\(<\\)/\\('.a:pattern.'\\)\\>>\\)', \"\\1\", 'g')\n    let s = substitute(s, \"[^\\1].*$\", '', '')\n    return strlen(s)\nendfun\n\n\" [-- count indent-increasing '{' of (java|css) line a:lnum --]\nfun! <SID>HtmlIndentOpenAlt(lnum)\n    return strlen(substitute(getline(a:lnum), '[^{]\\+', '', 'g'))\nendfun\n\n\" [-- count indent-decreasing '}' of (java|css) line a:lnum --]\nfun! <SID>HtmlIndentCloseAlt(lnum)\n    return strlen(substitute(getline(a:lnum), '[^}]\\+', '', 'g'))\nendfun\n\n\" [-- return the sum of indents respecting the syntax of a:lnum --]\nfun! <SID>HtmlIndentSum(lnum, style)\n    if a:style == match(getline(a:lnum), '^\\s*</')\n        if a:style == match(getline(a:lnum), '^\\s*</\\<\\('.s:html_indent_tags.'\\)\\>')\n            let open = <SID>HtmlIndentOpen(a:lnum, s:html_indent_tags)\n            let close = <SID>HtmlIndentClose(a:lnum, s:html_indent_tags)\n            if 0 != open || 0 != close\n                return open - close\n            endif\n        endif\n    endif\n\n    if '' != &syntax &&\n        \\ synIDattr(synID(a:lnum, 1, 1), 'name') =~ '\\(css\\|java\\).*' &&\n        \\ synIDattr(synID(a:lnum, strlen(getline(a:lnum)), 1), 'name')\n        \\ =~ '\\(css\\|java\\).*'\n        if a:style == match(getline(a:lnum), '^\\s*}')\n            return <SID>HtmlIndentOpenAlt(a:lnum) - <SID>HtmlIndentCloseAlt(a:lnum)\n        endif\n    endif\n    return 0\nendfun\n\nfun! HtmlIndentGet(lnum)\n    \" Find a non-empty line above the current line.\n    let lnum = prevnonblank(a:lnum - 1)\n\n    \" Hit the start of the file, use zero indent.\n    if lnum == 0\n        return 0\n    endif\n\n    let restore_ic = &ic\n    setlocal ic \" ignore case\n\n    \" [-- special handling for <pre>: no indenting --]\n    if getline(a:lnum) =~ '\\c</pre>'\n                \\ || 0 < searchpair('\\c<pre>', '', '\\c</pre>', 'nWb')\n                \\ || 0 < searchpair('\\c<pre>', '', '\\c</pre>', 'nW')\n        \" we're in a line with </pre> or inside <pre> ... </pre>\n        if restore_ic == 0\n          setlocal noic\n        endif\n        return -1\n    endif\n\n    \" [-- special handling for <javascript>: use cindent --]\n    let js = '<script'\n    let jse = '</script>'\n\n    \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n    \" by Tye Zdrojewski <zdro@yahoo.com>, 05 Jun 2006\n    \" ZDR: This needs to be an AND (we are 'after the start of the pair' AND\n    \"      we are 'before the end of the pair').  Otherwise, indentation\n    \"      before the start of the script block will be affected; the end of\n    \"      the pair will still match if we are before the beginning of the\n    \"      pair.\n    \"\n    if   0 < searchpair(js, '', jse, 'nWb')\n    \\ && 0 < searchpair(js, '', jse, 'nW')\n        \" we're inside javascript\n        if getline(searchpair(js, '', '</script>', 'nWb')) !~ '<script [^>]*type=[\"'']\\?text\\/\\(html\\|template\\)'\n        \\ && getline(lnum) !~ js && getline(a:lnum) !~ jse\n            if restore_ic == 0\n              setlocal noic\n            endif\n            if s:jsindent == ''\n              return cindent(a:lnum)\n            else\n              execute 'let ind = ' . s:jsindent\n              return ind\n            endif\n        endif\n        if getline(a:lnum) =~ jse\n          return indent(searchpair(js, '', jse, 'nWb'))\n        endif\n    endif\n\n    let css = '<style'\n    let csse = '</style>'\n    if   0 < searchpair(css, '', csse, 'nWb')\n    \\ && 0 < searchpair(css, '', csse, 'nW')\n        \" we're inside style\n        if getline(lnum) !~ css && getline(a:lnum) !~ csse\n            if restore_ic == 0\n              setlocal noic\n            endif\n            if s:cssindent == ''\n              return cindent(a:lnum)\n            else\n              execute 'let ind = ' . s:cssindent\n              return ind\n            endif\n        endif\n        if getline(a:lnum) =~ csse\n          return indent(searchpair(css, '', csse, 'nWb'))\n        endif\n    endif\n\n    if getline(lnum) =~ '\\c</pre>'\n        \" line before the current line a:lnum contains\n        \" a closing </pre>. --> search for line before\n        \" starting <pre> to restore the indent.\n        let preline = prevnonblank(search('\\c<pre>', 'bW') - 1)\n        if preline > 0\n            if restore_ic == 0\n              setlocal noic\n            endif\n\n            if 0 == match(getline(a:lnum), '^\\s*</')\n                return indent(preline) - (1*&sw)\n            else\n                return indent(preline)\n            endif\n        endif\n    endif\n\n    let ind = <SID>HtmlIndentSum(lnum, -1)\n    let ind = ind + <SID>HtmlIndentSum(a:lnum, 0)\n\n    \" Fix for conditional comment\n    if getline(a:lnum) =~ '\\c<!--.*<\\(html\\|body\\).*-->'\n        let ind = ind - 1\n    endif\n\n    let lind = indent(lnum)\n\n    \" for tags in s:omittable\n      \" let tags_exp = '<\\(' . join(tags, '\\|') . '\\)>'\n      \" let close_tags_exp = '</\\(' . join(tags, '\\|') . '\\)>'\n      \" if getline(a:lnum) =~ tags_exp\n        \" let block_start = search('^'.repeat(' ', lind + (&sw * ind - 1)).'\\S'  , 'bnW')\n        \" let prev_tag = search(tags_exp, 'bW', block_start)\n        \" let prev_closetag = search(close_tags_exp, 'W', a:lnum)\n        \" if prev_tag && !prev_closetag\n          \" let ind = ind - 1\n        \" endif\n      \" endif\n\n      \" if getline(a:lnum) =~ '</\\w\\+>'\n        \" let block_start = search('^'.repeat(' ', lind + (&sw * ind - 1)).'\\S'  , 'bnW')\n        \" let prev_tag = search(tags_exp, 'bW', block_start)\n        \" let prev_closetag = search(close_tags_exp, 'W', a:lnum)\n        \" if prev_tag && !prev_closetag\n          \" let ind = ind - 1\n        \" endif\n      \" endif\n    \" endfor\n\n    if restore_ic == 0\n        setlocal noic\n    endif\n\n    return lind + (&sw * ind)\nendfun\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" [-- EOF <runtime>/indent/html.vim --]\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/jade.vim",
    "content": "\" Vim indent file\n\" Language: Jade\n\" Maintainer: Joshua Borton\n\" Credits: Tim Pope (vim-jade)\n\" Last Change: 2010 Sep 22\n\nif exists(\"b:did_indent\")\n  finish\nendif\n\nunlet! b:did_indent\nlet b:did_indent = 1\n\nsetlocal autoindent\nsetlocal indentexpr=GetJadeIndent()\nsetlocal indentkeys=o,O,*<Return>,},],0),!^F\n\n\" Only define the function once.\nif exists(\"*GetJadeIndent\")\n  finish\nendif\n\nlet s:attributes = '\\%((.\\{-\\})\\)'\nlet s:tag = '\\([%.#][[:alnum:]_-]\\+\\|'.s:attributes.'\\)*[<>]*'\n\nif !exists('g:jade_self_closing_tags')\n  let g:jade_self_closing_tags = 'meta|link|img|hr|br|input'\nendif\n\nsetlocal formatoptions+=r\nsetlocal comments+=n:\\|\n\nfunction! GetJadeIndent()\n  let lnum = prevnonblank(v:lnum-1)\n  if lnum == 0\n    return 0\n  endif\n  let line = substitute(getline(lnum),'\\s\\+$','','')\n  let cline = substitute(substitute(getline(v:lnum),'\\s\\+$','',''),'^\\s\\+','','')\n  let lastcol = strlen(line)\n  let line = substitute(line,'^\\s\\+','','')\n  let indent = indent(lnum)\n  let cindent = indent(v:lnum)\n  let increase = indent + &sw\n  if indent == indent(lnum)\n    let indent = cindent <= indent ? -1 : increase\n  endif\n\n  let group = synIDattr(synID(lnum,lastcol,1),'name')\n\n  if line =~ '^!!!'\n    return indent\n  elseif line =~ '^/\\%(\\[[^]]*\\]\\)\\=$'\n    return increase\n  elseif line =~ '^\\%(if\\|else\\|unless\\|for\\|each\\|block\\|mixin\\|append\\|case\\|when\\)'\n    return increase\n  elseif line =~ '^'.s:tag.'[&!]\\=[=~-].*,\\s*$'\n    return increase\n  elseif line == '-#'\n    return increase\n  elseif line =~? '^\\v%('.g:jade_self_closing_tags.')>'\n    return indent\n  elseif group =~? '\\v^%(jadeAttributesDelimiter|jadeClass|jadeId|htmlTagName|htmlSpecialTagName|jadeFilter)$'\n    return increase\n  else\n    return indent\n  endif\nendfunction\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/javascript.vim",
    "content": "\" Vim indent file\n\" Language: Javascript\n\" Acknowledgement: Based off of vim-ruby maintained by Nikolai Weibull http://vim-ruby.rubyforge.org\n\n\" 0. Initialization {{{1\n\" =================\n\n\" Only load this indent file when no other was loaded.\nif exists(\"b:did_indent\")\n  finish\nendif\nlet b:did_indent = 1\n\nsetlocal nosmartindent\n\n\" Now, set up our indentation expression and keys that trigger it.\nsetlocal indentexpr=GetJavascriptIndent()\nsetlocal indentkeys=0{,0},0),0],0\\,,!^F,o,O,e\n\n\" Only define the function once.\nif exists(\"*GetJavascriptIndent\")\n  finish\nendif\n\nlet s:cpo_save = &cpo\nset cpo&vim\n\n\" 1. Variables {{{1\n\" ============\n\nlet s:js_keywords = '^\\s*\\(break\\|case\\|catch\\|continue\\|debugger\\|default\\|delete\\|do\\|else\\|finally\\|for\\|function\\|if\\|in\\|instanceof\\|new\\|return\\|switch\\|this\\|throw\\|try\\|typeof\\|var\\|void\\|while\\|with\\)'\n\n\" Regex of syntax group names that are or delimit string or are comments.\nlet s:syng_strcom = 'string\\|regex\\|comment\\c'\n\n\" Regex of syntax group names that are strings.\nlet s:syng_string = 'regex\\c'\n\n\" Regex of syntax group names that are strings or documentation.\nlet s:syng_multiline = 'comment\\c'\n\n\" Regex of syntax group names that are line comment.\nlet s:syng_linecom = 'linecomment\\c'\n\n\" Expression used to check whether we should skip a match with searchpair().\nlet s:skip_expr = \"synIDattr(synID(line('.'),col('.'),1),'name') =~ '\".s:syng_strcom.\"'\"\n\nlet s:line_term = '\\s*\\%(\\%(\\/\\/\\).*\\)\\=$'\n\n\" Regex that defines continuation lines, not including (, {, or [.\nlet s:continuation_regex = '\\%([\\\\*+/.:]\\|\\%(<%\\)\\@<![=-]\\|\\W[|&?]\\|||\\|&&\\)' . s:line_term\n\n\" Regex that defines continuation lines.\n\" TODO: this needs to deal with if ...: and so on\nlet s:msl_regex = '\\%([\\\\*+/.:([]\\|\\%(<%\\)\\@<![=-]\\|\\W[|&?]\\|||\\|&&\\)' . s:line_term\n\nlet s:one_line_scope_regex = '\\<\\%(if\\|else\\|for\\|while\\)\\>[^{;]*' . s:line_term\n\n\" Regex that defines blocks.\nlet s:block_regex = '\\%([{[]\\)\\s*\\%(|\\%([*@]\\=\\h\\w*,\\=\\s*\\)\\%(,\\s*[*@]\\=\\h\\w*\\)*|\\)\\=' . s:line_term\n\nlet s:var_stmt = '^\\s*var'\n\nlet s:comma_first = '^\\s*,'\nlet s:comma_last = ',\\s*$'\n\nlet s:ternary = '^\\s\\+[?|:]'\nlet s:ternary_q = '^\\s\\+?'\n\n\" 2. Auxiliary Functions {{{1\n\" ======================\n\n\" Check if the character at lnum:col is inside a string, comment, or is ascii.\nfunction s:IsInStringOrComment(lnum, col)\n  return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_strcom\nendfunction\n\n\" Check if the character at lnum:col is inside a string.\nfunction s:IsInString(lnum, col)\n  return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_string\nendfunction\n\n\" Check if the character at lnum:col is inside a multi-line comment.\nfunction s:IsInMultilineComment(lnum, col)\n  return !s:IsLineComment(a:lnum, a:col) && synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_multiline\nendfunction\n\n\" Check if the character at lnum:col is a line comment.\nfunction s:IsLineComment(lnum, col)\n  return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_linecom\nendfunction\n\n\" Find line above 'lnum' that isn't empty, in a comment, or in a string.\nfunction s:PrevNonBlankNonString(lnum)\n  let in_block = 0\n  let lnum = prevnonblank(a:lnum)\n  while lnum > 0\n    \" Go in and out of blocks comments as necessary.\n    \" If the line isn't empty (with opt. comment) or in a string, end search.\n    let line = getline(lnum)\n    if line =~ '/\\*'\n      if in_block\n        let in_block = 0\n      else\n        break\n      endif\n    elseif !in_block && line =~ '\\*/'\n      let in_block = 1\n    elseif !in_block && line !~ '^\\s*\\%(//\\).*$' && !(s:IsInStringOrComment(lnum, 1) && s:IsInStringOrComment(lnum, strlen(line)))\n      break\n    endif\n    let lnum = prevnonblank(lnum - 1)\n  endwhile\n  return lnum\nendfunction\n\n\" Find line above 'lnum' that started the continuation 'lnum' may be part of.\nfunction s:GetMSL(lnum, in_one_line_scope)\n  \" Start on the line we're at and use its indent.\n  let msl = a:lnum\n  let lnum = s:PrevNonBlankNonString(a:lnum - 1)\n  while lnum > 0\n    \" If we have a continuation line, or we're in a string, use line as MSL.\n    \" Otherwise, terminate search as we have found our MSL already.\n    let line = getline(lnum)\n    let col = match(line, s:msl_regex) + 1\n    if (col > 0 && !s:IsInStringOrComment(lnum, col)) || s:IsInString(lnum, strlen(line))\n      let msl = lnum\n    else\n      \" Don't use lines that are part of a one line scope as msl unless the\n      \" flag in_one_line_scope is set to 1\n      \"\n      if a:in_one_line_scope\n        break\n      end\n      let msl_one_line = s:Match(lnum, s:one_line_scope_regex)\n      if msl_one_line == 0\n        break\n      endif\n    endif\n    let lnum = s:PrevNonBlankNonString(lnum - 1)\n  endwhile\n  return msl\nendfunction\n\nfunction s:RemoveTrailingComments(content)\n  let single = '\\/\\/\\(.*\\)\\s*$'\n  let multi = '\\/\\*\\(.*\\)\\*\\/\\s*$'\n  return substitute(substitute(a:content, single, '', ''), multi, '', '')\nendfunction\n\n\" Find if the string is inside var statement (but not the first string)\nfunction s:InMultiVarStatement(lnum)\n  let lnum = s:PrevNonBlankNonString(a:lnum - 1)\n\n\"  let type = synIDattr(synID(lnum, indent(lnum) + 1, 0), 'name')\n\n  \" loop through previous expressions to find a var statement\n  while lnum > 0\n    let line = getline(lnum)\n\n    \" if the line is a js keyword\n    if (line =~ s:js_keywords)\n      \" check if the line is a var stmt\n      \" if the line has a comma first or comma last then we can assume that we\n      \" are in a multiple var statement\n      if (line =~ s:var_stmt)\n        return lnum\n      endif\n\n      \" other js keywords, not a var\n      return 0\n    endif\n\n    let lnum = s:PrevNonBlankNonString(lnum - 1)\n  endwhile\n\n  \" beginning of program, not a var\n  return 0\nendfunction\n\n\" Find line above with beginning of the var statement or returns 0 if it's not\n\" this statement\nfunction s:GetVarIndent(lnum)\n  let lvar = s:InMultiVarStatement(a:lnum)\n  let prev_lnum = s:PrevNonBlankNonString(a:lnum - 1)\n\n  if lvar\n    let line = s:RemoveTrailingComments(getline(prev_lnum))\n\n    \" if the previous line doesn't end in a comma, return to regular indent\n    if (line !~ s:comma_last)\n      return indent(prev_lnum) - &sw\n    else\n      return indent(lvar) + &sw\n    endif\n  endif\n\n  return -1\nendfunction\n\n\n\" Check if line 'lnum' has more opening brackets than closing ones.\nfunction s:LineHasOpeningBrackets(lnum)\n  let open_0 = 0\n  let open_2 = 0\n  let open_4 = 0\n  let line = getline(a:lnum)\n  let pos = match(line, '[][(){}]', 0)\n  while pos != -1\n    if !s:IsInStringOrComment(a:lnum, pos + 1)\n      let idx = stridx('(){}[]', line[pos])\n      if idx % 2 == 0\n        let open_{idx} = open_{idx} + 1\n      else\n        let open_{idx - 1} = open_{idx - 1} - 1\n      endif\n    endif\n    let pos = match(line, '[][(){}]', pos + 1)\n  endwhile\n  return (open_0 > 0) . (open_2 > 0) . (open_4 > 0)\nendfunction\n\nfunction s:Match(lnum, regex)\n  let col = match(getline(a:lnum), a:regex) + 1\n  return col > 0 && !s:IsInStringOrComment(a:lnum, col) ? col : 0\nendfunction\n\nfunction s:IndentWithContinuation(lnum, ind, width)\n  \" Set up variables to use and search for MSL to the previous line.\n  let p_lnum = a:lnum\n  let lnum = s:GetMSL(a:lnum, 1)\n  let line = getline(lnum)\n\n  \" If the previous line wasn't a MSL and is continuation return its indent.\n  \" TODO: the || s:IsInString() thing worries me a bit.\n  if p_lnum != lnum\n    if s:Match(p_lnum,s:continuation_regex)||s:IsInString(p_lnum,strlen(line))\n      return a:ind\n    endif\n  endif\n\n  \" Set up more variables now that we know we aren't continuation bound.\n  let msl_ind = indent(lnum)\n\n  \" If the previous line ended with [*+/.-=], start a continuation that\n  \" indents an extra level.\n  if s:Match(lnum, s:continuation_regex)\n    if lnum == p_lnum\n      return msl_ind + a:width\n    else\n      return msl_ind\n    endif\n  endif\n\n  return a:ind\nendfunction\n\nfunction s:InOneLineScope(lnum)\n  let msl = s:GetMSL(a:lnum, 1)\n  if msl > 0 && s:Match(msl, s:one_line_scope_regex)\n    return msl\n  endif\n  return 0\nendfunction\n\nfunction s:ExitingOneLineScope(lnum)\n  let msl = s:GetMSL(a:lnum, 1)\n  if msl > 0\n    \" if the current line is in a one line scope ..\n    if s:Match(msl, s:one_line_scope_regex)\n      return 0\n    else\n      let prev_msl = s:GetMSL(msl - 1, 1)\n      if s:Match(prev_msl, s:one_line_scope_regex)\n        return prev_msl\n      endif\n    endif\n  endif\n  return 0\nendfunction\n\n\" 3. GetJavascriptIndent Function {{{1\n\" =========================\n\nfunction GetJavascriptIndent()\n  \" 3.1. Setup {{{2\n  \" ----------\n\n  \" Set up variables for restoring position in file.  Could use v:lnum here.\n  let vcol = col('.')\n\n  \" 3.2. Work on the current line {{{2\n  \" -----------------------------\n\n  let ind = -1\n  \" Get the current line.\n  let line = getline(v:lnum)\n  \" previous nonblank line number\n  let prevline = prevnonblank(v:lnum - 1)\n\n  \" If we got a closing bracket on an empty line, find its match and indent\n  \" according to it.  For parentheses we indent to its column - 1, for the\n  \" others we indent to the containing line's MSL's level.  Return -1 if fail.\n  let col = matchend(line, '^\\s*[],})]')\n  if col > 0 && !s:IsInStringOrComment(v:lnum, col)\n    call cursor(v:lnum, col)\n\n    let lvar = s:InMultiVarStatement(v:lnum)\n    if lvar\n      let prevline_contents = s:RemoveTrailingComments(getline(prevline))\n\n      \" check for comma first\n      if (line[col - 1] =~ ',')\n        \" if the previous line ends in comma or semicolon don't indent\n        if (prevline_contents =~ '[;,]\\s*$')\n          return indent(s:GetMSL(line('.'), 0))\n        \" get previous line indent, if it's comma first return prevline indent\n        elseif (prevline_contents =~ s:comma_first)\n          return indent(prevline)\n        \" otherwise we indent 1 level\n        else\n          return indent(lvar) + &sw\n        endif\n      endif\n    endif\n\n\n    let bs = strpart('(){}[]', stridx(')}]', line[col - 1]) * 2, 2)\n    if searchpair(escape(bs[0], '\\['), '', bs[1], 'bW', s:skip_expr) > 0\n      if line[col-1]==')' && col('.') != col('$') - 1\n        let ind = virtcol('.')-1\n      else\n        let ind = indent(s:GetMSL(line('.'), 0))\n      endif\n    endif\n    return ind\n  endif\n\n  \" If the line is comma first, dedent 1 level\n  if (getline(prevline) =~ s:comma_first)\n    return indent(prevline) - &sw\n  endif\n\n  if (line =~ s:ternary)\n    if (getline(prevline) =~ s:ternary_q)\n      return indent(prevline)\n    else\n      return indent(prevline) + &sw\n    endif\n  endif\n\n  \" If we are in a multi-line comment, cindent does the right thing.\n  if s:IsInMultilineComment(v:lnum, 1) && !s:IsLineComment(v:lnum, 1)\n    return cindent(v:lnum)\n  endif\n\n  \" Check for multiple var assignments\n\"  let var_indent = s:GetVarIndent(v:lnum)\n\"  if var_indent >= 0\n\"    return var_indent\n\"  endif\n\n  \" 3.3. Work on the previous line. {{{2\n  \" -------------------------------\n\n  \" If the line is empty and the previous nonblank line was a multi-line\n  \" comment, use that comment's indent. Deduct one char to account for the\n  \" space in ' */'.\n  if line =~ '^\\s*$' && s:IsInMultilineComment(prevline, 1)\n    return indent(prevline) - 1\n  endif\n\n  \" Find a non-blank, non-multi-line string line above the current line.\n  let lnum = s:PrevNonBlankNonString(v:lnum - 1)\n\n  \" If the line is empty and inside a string, use the previous line.\n  if line =~ '^\\s*$' && lnum != prevline\n    return indent(prevnonblank(v:lnum))\n  endif\n\n  \" At the start of the file use zero indent.\n  if lnum == 0\n    return 0\n  endif\n\n  \" Set up variables for current line.\n  let line = getline(lnum)\n  let ind = indent(lnum)\n\n  \" If the previous line ended with a block opening, add a level of indent.\n  if s:Match(lnum, s:block_regex)\n    return indent(s:GetMSL(lnum, 0)) + &sw\n  endif\n\n  \" If the previous line contained an opening bracket, and we are still in it,\n  \" add indent depending on the bracket type.\n  if line =~ '[[({]'\n    let counts = s:LineHasOpeningBrackets(lnum)\n    if counts[0] == '1' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0\n      if col('.') + 1 == col('$')\n        return ind + &sw\n      else\n        return virtcol('.')\n      endif\n    elseif counts[1] == '1' || counts[2] == '1'\n      return ind + &sw\n    else\n      call cursor(v:lnum, vcol)\n    end\n  endif\n\n  \" 3.4. Work on the MSL line. {{{2\n  \" --------------------------\n\n  let ind_con = ind\n  let ind = s:IndentWithContinuation(lnum, ind_con, &sw)\n\n  \" }}}2\n  \"\n  \"\n  let ols = s:InOneLineScope(lnum)\n  if ols > 0\n    let ind = ind + &sw\n  else\n    let ols = s:ExitingOneLineScope(lnum)\n    while ols > 0 && ind > 0\n      let ind = ind - &sw\n      let ols = s:InOneLineScope(ols - 1)\n    endwhile\n  endif\n\n  return ind\nendfunction\n\n\" }}}1\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/jst.vim",
    "content": "if exists(\"b:did_indent\")\n  finish\nendif\n\nruntime! indent/javascript.vim\nunlet! b:did_indent\nsetlocal indentexpr=\n\nif exists(\"b:jst_subtype\")\n  exe \"runtime! indent/\".b:jst_subtype.\".vim\"\nelse\n  runtime! indent/html.vim\nendif\nunlet! b:did_indent\n\nif &l:indentexpr == ''\n  if &l:cindent\n    let &l:indentexpr = 'cindent(v:lnum)'\n  else\n    let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))'\n  endif\nendif\nlet b:jst_subtype_indentexpr = &l:indentexpr\n\nlet b:did_indent = 1\n\nsetlocal indentexpr=GetJstIndent()\nsetlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],o,O,!^F,=end,=else,=elsif,=rescue,=ensure,=when\n\n\" Only define the function once.\nif exists(\"*GetJstIndent\")\n  finish\nendif\n\nfunction! GetJstIndent(...)\n  if a:0 && a:1 == '.'\n    let v:lnum = line('.')\n  elseif a:0 && a:1 =~ '^\\d'\n    let v:lnum = a:1\n  endif\n  let vcol = col('.')\n  call cursor(v:lnum,1)\n  let injavascript = searchpair('<%','','%>','W')\n  call cursor(v:lnum,vcol)\n  if injavascript && getline(v:lnum) !~ '^<%\\|^\\s*[-=]\\=%>'\n    let ind = GetJavascriptIndent()\n  else\n    exe \"let ind = \".b:jst_subtype_indentexpr\n  endif\n  let lnum = prevnonblank(v:lnum-1)\n  let line = getline(lnum)\n  let cline = getline(v:lnum)\n  if cline =~# '^\\s*<%[-=]\\=\\s*\\%(}.\\{-\\}\\)\\s*\\%([-=]\\=%>\\|$\\)'\n    let ind = ind - &sw\n  endif\n  if line =~# '\\S\\s*<%[-=]\\=\\s*\\%(}\\).\\{-\\}\\s*\\%([-=]\\=%>\\|$\\)'\n    let ind = ind - &sw\n  endif\n  if line =~# '\\%({\\|\\<do\\)\\%(\\s*|[^|]*|\\)\\=\\s*[-=]\\=%>'\n    let ind = ind + &sw\n  endif\n  if line =~# '^\\s*<%[=#-]\\=\\s*$' && cline !~# '^\\s*end\\>'\n    let ind = ind + &sw\n  endif\n  if line !~# '^\\s*<%' && line =~# '%>\\s*$'\n    let ind = ind - &sw\n  endif\n  if cline =~# '^\\s*[-=]\\=%>\\s*$'\n    let ind = ind - &sw\n  endif\n  return ind\nendfunction\n\n\" vim:set sw=2 sts=2 ts=8 noet:\n\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/less.vim",
    "content": "\" Vim indent file\n\" Language:            LessCSS\n\" Maintainer:        Leonard Ehrenfried <leonard.ehrenfried@web.de>\n\" Last Change:        2011 Sep 26\n\nif exists(\"b:did_indent\")\n  finish\nendif\n\nruntime! indent/css.vim"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/ocaml.vim",
    "content": "\" Vim indent file\n\" Language:     OCaml\n\" Maintainers:  Jean-Francois Yuen   <jfyuen@happycoders.org>\n\"               Mike Leary           <leary@nwlink.com>\n\"               Markus Mottl         <markus.mottl@gmail.com>\n\" URL:          http://www.ocaml.info/vim/indent/ocaml.vim\n\" Last Change:  2010 Sep 04 - Added an indentation improvement by Mark Weber\n\"               2005 Jun 25 - Fixed multiple bugs due to 'else\\nreturn ind' working\n\"               2005 May 09 - Added an option to not indent OCaml-indents specially (MM)\n\n\" Only load this indent file when no other was loaded.\nif exists(\"b:did_indent\")\n finish\nendif\nlet b:did_indent = 1\n\nsetlocal expandtab\nsetlocal indentexpr=GetOCamlIndent()\nsetlocal indentkeys+=0=and,0=class,0=constraint,0=done,0=else,0=end,0=exception,0=external,0=if,0=in,0=include,0=inherit,0=initializer,0=let,0=method,0=open,0=then,0=type,0=val,0=with,0;;,0>\\],0\\|\\],0>},0\\|,0},0\\],0)\nsetlocal nolisp\nsetlocal nosmartindent\nsetlocal textwidth=80\n\n\" Comment formatting\nif !exists(\"no_ocaml_comments\")\n if (has(\"comments\"))\n   setlocal comments=sr:(*,mb:*,ex:*)\n   setlocal fo=cqort\n endif\nendif\n\n\" Only define the function once.\nif exists(\"*GetOCamlIndent\")\n finish\nendif\n\n\" Define some patterns:\nlet s:beflet = '^\\s*\\(initializer\\|method\\|try\\)\\|\\(\\<\\(begin\\|do\\|else\\|in\\|then\\|try\\)\\|->\\|<-\\|=\\|;\\|(\\)\\s*$'\nlet s:letpat = '^\\s*\\(let\\|type\\|module\\|class\\|open\\|exception\\|val\\|include\\|external\\)\\>'\nlet s:letlim = '\\(\\<\\(sig\\|struct\\)\\|;;\\)\\s*$'\nlet s:lim = '^\\s*\\(exception\\|external\\|include\\|let\\|module\\|open\\|type\\|val\\)\\>'\nlet s:module = '\\<\\%(begin\\|sig\\|struct\\|object\\)\\>'\nlet s:obj = '^\\s*\\(constraint\\|inherit\\|initializer\\|method\\|val\\)\\>\\|\\<\\(object\\|object\\s*(.*)\\)\\s*$'\nlet s:type = '^\\s*\\%(class\\|let\\|type\\)\\>.*='\n\n\" Skipping pattern, for comments\nfunction! s:GetLineWithoutFullComment(lnum)\n let lnum = prevnonblank(a:lnum - 1)\n let lline = substitute(getline(lnum), '(\\*.*\\*)\\s*$', '', '')\n while lline =~ '^\\s*$' && lnum > 0\n   let lnum = prevnonblank(lnum - 1)\n   let lline = substitute(getline(lnum), '(\\*.*\\*)\\s*$', '', '')\n endwhile\n return lnum\nendfunction\n\n\" Indent for ';;' to match multiple 'let'\nfunction! s:GetInd(lnum, pat, lim)\n let llet = search(a:pat, 'bW')\n let old = indent(a:lnum)\n while llet > 0\n   let old = indent(llet)\n   let nb = s:GetLineWithoutFullComment(llet)\n   if getline(nb) =~ a:lim\n     return old\n   endif\n   let llet = search(a:pat, 'bW')\n endwhile\n return old\nendfunction\n\n\" Indent pairs\nfunction! s:FindPair(pstart, pmid, pend)\n call search(a:pend, 'bW')\n return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line(\".\"), col(\".\"), 0), \"name\") =~? \"string\\\\|comment\"'))\nendfunction\n\n\" Indent 'let'\nfunction! s:FindLet(pstart, pmid, pend)\n call search(a:pend, 'bW')\n return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line(\".\"), col(\".\"), 0), \"name\") =~? \"string\\\\|comment\" || getline(\".\") =~ \"^\\\\s*let\\\\>.*=.*\\\\<in\\\\s*$\" || getline(prevnonblank(\".\") - 1) =~ s:beflet'))\nendfunction\n\nfunction! GetOCamlIndent()\n \" Find a non-commented line above the current line.\n let lnum = s:GetLineWithoutFullComment(v:lnum)\n\n \" At the start of the file use zero indent.\n if lnum == 0\n   return 0\n endif\n\n let ind = indent(lnum)\n let lline = substitute(getline(lnum), '(\\*.*\\*)\\s*$', '', '')\n\n \" Return double 'shiftwidth' after lines matching:\n if lline =~ '^\\s*|.*->\\s*$'\n   return ind + &sw + &sw\n endif\n\n let line = getline(v:lnum)\n\n \" Indent if current line begins with 'end':\n if line =~ '^\\s*end\\>'\n   return s:FindPair(s:module, '','\\<end\\>')\n\n \" Indent if current line begins with 'done' for 'do':\n elseif line =~ '^\\s*done\\>'\n   return s:FindPair('\\<do\\>', '','\\<done\\>')\n\n \" Indent if current line begins with '}' or '>}':\n elseif line =~ '^\\s*\\(\\|>\\)}'\n   return s:FindPair('{', '','}')\n\n \" Indent if current line begins with ']', '|]' or '>]':\n elseif line =~ '^\\s*\\(\\||\\|>\\)\\]'\n   return s:FindPair('\\[', '','\\]')\n\n \" Indent if current line begins with ')':\n elseif line =~ '^\\s*)'\n   return s:FindPair('(', '',')')\n\n \" Indent if current line begins with 'let':\n elseif line =~ '^\\s*let\\>'\n   if lline !~ s:lim . '\\|' . s:letlim . '\\|' . s:beflet\n     return s:FindLet(s:type, '','\\<let\\s*$')\n   endif\n\n \" Indent if current line begins with 'class' or 'type':\n elseif line =~ '^\\s*\\(class\\|type\\)\\>'\n   if lline !~ s:lim . '\\|\\<and\\s*$\\|' . s:letlim\n     return s:FindLet(s:type, '','\\<\\(class\\|type\\)\\s*$')\n   endif\n\n \" Indent for pattern matching:\n elseif line =~ '^\\s*|'\n   if lline !~ '^\\s*\\(|[^\\]]\\|\\(match\\|type\\|with\\)\\>\\)\\|\\<\\(function\\|parser\\|private\\|with\\)\\s*$'\n     call search('|', 'bW')\n     return indent(searchpair('^\\s*\\(match\\|type\\)\\>\\|\\<\\(function\\|parser\\|private\\|with\\)\\s*$', '', '^\\s*|', 'bWn', 'synIDattr(synID(line(\".\"), col(\".\"), 0), \"name\") =~? \"string\\\\|comment\" || getline(\".\") !~ \"^\\\\s*|.*->\"'))\n   endif\n\n \" Indent if current line begins with ';;':\n elseif line =~ '^\\s*;;'\n   if lline !~ ';;\\s*$'\n     return s:GetInd(v:lnum, s:letpat, s:letlim)\n   endif\n\n \" Indent if current line begins with 'in':\n elseif line =~ '^\\s*in\\>'\n   if lline !~ '^\\s*\\(let\\|and\\)\\>'\n     return s:FindPair('\\<let\\>', '', '\\<in\\>')\n   endif\n\n \" Indent if current line begins with 'else':\n elseif line =~ '^\\s*else\\>'\n   if lline !~ '^\\s*\\(if\\|then\\)\\>'\n     return s:FindPair('\\<if\\>', '', '\\<else\\>')\n   endif\n\n \" Indent if current line begins with 'then':\n elseif line =~ '^\\s*then\\>'\n   if lline !~ '^\\s*\\(if\\|else\\)\\>'\n     return s:FindPair('\\<if\\>', '', '\\<then\\>')\n   endif\n\n \" Indent if current line begins with 'and':\n elseif line =~ '^\\s*and\\>'\n   if lline !~ '^\\s*\\(and\\|let\\|type\\)\\>\\|\\<end\\s*$'\n     return ind - &sw\n   endif\n\n \" Indent if current line begins with 'with':\n elseif line =~ '^\\s*with\\>'\n   if lline !~ '^\\s*\\(match\\|try\\)\\>'\n     return s:FindPair('\\<\\%(match\\|try\\)\\>', '','\\<with\\>')\n   endif\n\n \" Indent if current line begins with 'exception', 'external', 'include' or\n \" 'open':\n elseif line =~ '^\\s*\\(exception\\|external\\|include\\|open\\)\\>'\n   if lline !~ s:lim . '\\|' . s:letlim\n     call search(line)\n     return indent(search('^\\s*\\(\\(exception\\|external\\|include\\|open\\|type\\)\\>\\|val\\>.*:\\)', 'bW'))\n   endif\n\n \" Indent if current line begins with 'val':\n elseif line =~ '^\\s*val\\>'\n   if lline !~ '^\\s*\\(exception\\|external\\|include\\|open\\)\\>\\|' . s:obj . '\\|' . s:letlim\n     return indent(search('^\\s*\\(\\(exception\\|include\\|initializer\\|method\\|open\\|type\\|val\\)\\>\\|external\\>.*:\\)', 'bW'))\n   endif\n\n \" Indent if current line begins with 'constraint', 'inherit', 'initializer'\n \" or 'method':\n elseif line =~ '^\\s*\\(constraint\\|inherit\\|initializer\\|method\\)\\>'\n   if lline !~ s:obj\n     return indent(search('\\<\\(object\\|object\\s*(.*)\\)\\s*$', 'bW')) + &sw\n   endif\n\n endif\n\n \" Add a 'shiftwidth' after lines ending with:\n if lline =~ '\\(:\\|=\\|->\\|<-\\|(\\|\\[\\|{\\|{<\\|\\[|\\|\\[<\\|\\<\\(begin\\|do\\|else\\|fun\\|function\\|functor\\|if\\|initializer\\|object\\|parser\\|private\\|sig\\|struct\\|then\\|try\\)\\|\\<object\\s*(.*)\\)\\s*$'\n   let ind = ind + &sw\n\n \" Back to normal indent after lines ending with ';;':\n elseif lline =~ ';;\\s*$' && lline !~ '^\\s*;;'\n   let ind = s:GetInd(v:lnum, s:letpat, s:letlim)\n\n \" Back to normal indent after lines ending with 'end':\n elseif lline =~ '\\<end\\s*$'\n   let ind = s:FindPair(s:module, '','\\<end\\>')\n\n \" Back to normal indent after lines ending with 'in':\n elseif lline =~ '\\<in\\s*$' && lline !~ '^\\s*in\\>'\n   let ind = s:FindPair('\\<let\\>', '', '\\<in\\>')\n\n \" Back to normal indent after lines ending with 'done':\n elseif lline =~ '\\<done\\s*$'\n   let ind = s:FindPair('\\<do\\>', '','\\<done\\>')\n\n \" Back to normal indent after lines ending with '}' or '>}':\n elseif lline =~ '\\(\\|>\\)}\\s*$'\n   let ind = s:FindPair('{', '','}')\n\n \" Back to normal indent after lines ending with ']', '|]' or '>]':\n elseif lline =~ '\\(\\||\\|>\\)\\]\\s*$'\n   let ind = s:FindPair('\\[', '','\\]')\n\n \" Back to normal indent after comments:\n elseif lline =~ '\\*)\\s*$'\n   call search('\\*)', 'bW')\n   let ind = indent(searchpair('(\\*', '', '\\*)', 'bWn', 'synIDattr(synID(line(\".\"), col(\".\"), 0), \"name\") =~? \"string\"'))\n\n \" Back to normal indent after lines ending with ')':\n elseif lline =~ ')\\s*$'\n   let ind = s:FindPair('(', '',')')\n\n \" If this is a multiline comment then align '*':\n elseif lline =~ '^\\s*(\\*' && line =~ '^\\s*\\*'\n   let ind = ind + 1\n\n else\n \" Don't change indentation of this line\n \" for new lines (indent==0) use indentation of previous line\n\n \" This is for preventing removing indentation of these args:\n \"   let f x =\n \"     let y = x + 1 in\n \"     Printf.printf\n \"       \"o\"           << here\n \"       \"oeuth\"       << don't touch indentation\n\n   let i = indent(v:lnum)\n   return i == 0 ? ind : i\n\n endif\n\n \" Subtract a 'shiftwidth' after lines matching 'match ... with parser':\n if lline =~ '\\<match\\>.*\\<with\\>\\s*\\<parser\\s*$'\n   let ind = ind - &sw\n endif\n\n return ind\n\nendfunction\n\n\" vim:sw=2\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/opencl.vim",
    "content": "\" Only load this indent file when no other was loaded.\nif exists(\"b:did_indent\")\n  finish\nendif\n\nif version > 600\n  runtime! indent/c.vim\nendif\n\nlet b:did_indent = 1\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/perl.vim",
    "content": "\" Vim indent file\n\" Language:      Perl 5\n\" Maintainer:    vim-perl <vim-perl@googlegroups.com>\n\" Homepage:      http://github.com/vim-perl/vim-perl\n\" Bugs/requests: http://github.com/vim-perl/vim-perl/issues\n\" Last Change:   {{LAST_CHANGE}}\n\n\" Suggestions and improvements by :\n\"   Aaron J. Sherman (use syntax for hints)\n\"   Artem Chuprina (play nice with folding)\n\n\" TODO things that are not or not properly indented (yet) :\n\" - Continued statements\n\"     print \"foo\",\n\"       \"bar\";\n\"     print \"foo\"\n\"       if bar();\n\" - Multiline regular expressions (m//x)\n\" (The following probably needs modifying the perl syntax file)\n\" - qw() lists\n\" - Heredocs with terminators that don't match \\I\\i*\n\n\" Only load this indent file when no other was loaded.\nif exists(\"b:did_indent\")\n    finish\nendif\nlet b:did_indent = 1\n\n\" Is syntax highlighting active ?\nlet b:indent_use_syntax = has(\"syntax\")\n\nsetlocal indentexpr=GetPerlIndent()\nsetlocal indentkeys+=0=,0),0],0=or,0=and\nif !b:indent_use_syntax\n    setlocal indentkeys+=0=EO\nendif\n\nlet s:cpo_save = &cpo\nset cpo-=C\n\nfunction! GetPerlIndent()\n\n    \" Get the line to be indented\n    let cline = getline(v:lnum)\n\n    \" Indent POD markers to column 0\n    if cline =~ '^\\s*=\\L\\@!'\n        return 0\n    endif\n\n    \" Don't reindent comments on first column\n    if cline =~ '^#.'\n        return 0\n    endif\n\n    \" Get current syntax item at the line's first char\n    let csynid = ''\n    if b:indent_use_syntax\n        let csynid = synIDattr(synID(v:lnum,1,0),\"name\")\n    endif\n\n    \" Don't reindent POD and heredocs\n    if csynid == \"perlPOD\" || csynid == \"perlHereDoc\" || csynid =~ \"^pod\"\n        return indent(v:lnum)\n    endif\n\n    \" Indent end-of-heredocs markers to column 0\n    if b:indent_use_syntax\n        \" Assumes that an end-of-heredoc marker matches \\I\\i* to avoid\n        \" confusion with other types of strings\n        if csynid == \"perlStringStartEnd\" && cline =~ '^\\I\\i*$'\n            return 0\n        endif\n    else\n        \" Without syntax hints, assume that end-of-heredocs markers begin with EO\n        if cline =~ '^\\s*EO'\n            return 0\n        endif\n    endif\n\n    \" Now get the indent of the previous perl line.\n\n    \" Find a non-blank line above the current line.\n    let lnum = prevnonblank(v:lnum - 1)\n    \" Hit the start of the file, use zero indent.\n    if lnum == 0\n        return 0\n    endif\n    let line = getline(lnum)\n    let ind = indent(lnum)\n    \" Skip heredocs, POD, and comments on 1st column\n    if b:indent_use_syntax\n        let skippin = 2\n        while skippin\n            let synid = synIDattr(synID(lnum,1,0),\"name\")\n            if (synid == \"perlStringStartEnd\" && line =~ '^\\I\\i*$')\n                        \\ || (skippin != 2 && synid == \"perlPOD\")\n                        \\ || (skippin != 2 && synid == \"perlHereDoc\")\n                        \\ || synid == \"perlComment\"\n                        \\ || synid =~ \"^pod\"\n                let lnum = prevnonblank(lnum - 1)\n                if lnum == 0\n                    return 0\n                endif\n                let line = getline(lnum)\n                let ind = indent(lnum)\n                let skippin = 1\n            else\n                let skippin = 0\n            endif\n        endwhile\n    else\n        if line =~ \"^EO\"\n            let lnum = search(\"<<[\\\"']\\\\=EO\", \"bW\")\n            let line = getline(lnum)\n            let ind = indent(lnum)\n        endif\n    endif\n\n    \" Indent blocks enclosed by {}, (), or []\n    if b:indent_use_syntax\n        \" Find a real opening brace\n        \" NOTE: Unlike Perl character classes, we do NOT need to escape the\n        \" closing brackets with a backslash.  Doing so just puts a backslash\n        \" in the character class and causes sorrow.  Instead, put the closing\n        \" bracket as the first character in the class.\n        let braceclass = '[][(){}]'\n        let bracepos = match(line, braceclass, matchend(line, '^\\s*[])}]'))\n        while bracepos != -1\n            let synid = synIDattr(synID(lnum, bracepos + 1, 0), \"name\")\n            \" If the brace is highlighted in one of those groups, indent it.\n            \" 'perlHereDoc' is here only to handle the case '&foo(<<EOF)'.\n            if synid == \"\"\n                        \\ || synid == \"perlMatchStartEnd\"\n                        \\ || synid == \"perlHereDoc\"\n                        \\ || synid == \"perlBraces\"\n                        \\ || synid == \"perlStatementIndirObj\"\n                        \\ || synid =~ \"^perlFiledescStatement\"\n                        \\ || synid =~ '^perl\\(Sub\\|Block\\|Package\\)Fold'\n                let brace = strpart(line, bracepos, 1)\n                if brace == '(' || brace == '{' || brace == '['\n                    let ind = ind + &sw\n                else\n                    let ind = ind - &sw\n                endif\n            endif\n            let bracepos = match(line, braceclass, bracepos + 1)\n        endwhile\n        let bracepos = matchend(cline, '^\\s*[])}]')\n        if bracepos != -1\n            let synid = synIDattr(synID(v:lnum, bracepos, 0), \"name\")\n            if synid == \"\"\n                        \\ || synid == \"perlMatchStartEnd\"\n                        \\ || synid == \"perlBraces\"\n                        \\ || synid == \"perlStatementIndirObj\"\n                        \\ || synid =~ '^perl\\(Sub\\|Block\\|Package\\)Fold'\n                let ind = ind - &sw\n            endif\n        endif\n    else\n        if line =~ '[{[(]\\s*\\(#[^])}]*\\)\\=$'\n            let ind = ind + &sw\n        endif\n        if cline =~ '^\\s*[])}]'\n            let ind = ind - &sw\n        endif\n    endif\n\n    \" Indent lines that begin with 'or' or 'and'\n    if cline =~ '^\\s*\\(or\\|and\\)\\>'\n        if line !~ '^\\s*\\(or\\|and\\)\\>'\n            let ind = ind + &sw\n        endif\n    elseif line =~ '^\\s*\\(or\\|and\\)\\>'\n        let ind = ind - &sw\n    endif\n\n    return ind\n\nendfunction\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim:ts=8:sts=4:sw=4:expandtab:ft=vim\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/perl6.vim",
    "content": "\" Vim indent file\n\" Language:      Perl 6\n\" Maintainer:    vim-perl <vim-perl@googlegroups.com>\n\" Homepage:      http://github.com/vim-perl/vim-perl\n\" Bugs/requests: http://github.com/vim-perl/vim-perl/issues\n\" Last Change:   {{LAST_CHANGE}}\n\" Contributors:  Andy Lester <andy@petdance.com>\n\"                Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>\n\"\n\" Adapted from indent/perl.vim by Rafael Garcia-Suarez <rgarciasuarez@free.fr>\n\n\" Suggestions and improvements by :\n\"   Aaron J. Sherman (use syntax for hints)\n\"   Artem Chuprina (play nice with folding)\n\" TODO:\n\" This file still relies on stuff from the Perl 5 syntax file, which Perl 6\n\" does not use.\n\"\n\" Things that are not or not properly indented (yet) :\n\" - Continued statements\n\"     print \"foo\",\n\"       \"bar\";\n\"     print \"foo\"\n\"       if bar();\n\" - Multiline regular expressions (m//x)\n\" (The following probably needs modifying the perl syntax file)\n\" - qw() lists\n\" - Heredocs with terminators that don't match \\I\\i*\n\n\" Only load this indent file when no other was loaded.\nif exists(\"b:did_indent\")\n    finish\nendif\nlet b:did_indent = 1\n\n\" Is syntax highlighting active ?\nlet b:indent_use_syntax = has(\"syntax\")\n\nsetlocal indentexpr=GetPerl6Indent()\n\n\" we reset it first because the Perl 5 indent file might have been loaded due\n\" to a .pl/pm file extension, and indent files don't clean up afterwards\nsetlocal indentkeys&\n\nsetlocal indentkeys+=0=,0),0],0>,0»,0=or,0=and\nif !b:indent_use_syntax\n    setlocal indentkeys+=0=EO\nendif\n\nlet s:cpo_save = &cpo\nset cpo-=C\n\nfunction! GetPerl6Indent()\n\n    \" Get the line to be indented\n    let cline = getline(v:lnum)\n\n    \" Indent POD markers to column 0\n    if cline =~ '^\\s*=\\L\\@!'\n        return 0\n    endif\n\n    \" Don't reindent coments on first column\n    if cline =~ '^#'\n        return 0\n    endif\n\n    \" Get current syntax item at the line's first char\n    let csynid = ''\n    if b:indent_use_syntax\n        let csynid = synIDattr(synID(v:lnum,1,0),\"name\")\n    endif\n\n    \" Don't reindent POD and heredocs\n    if csynid =~ \"^p6Pod\"\n        return indent(v:lnum)\n    endif\n\n\n    \" Now get the indent of the previous perl line.\n\n    \" Find a non-blank line above the current line.\n    let lnum = prevnonblank(v:lnum - 1)\n    \" Hit the start of the file, use zero indent.\n    if lnum == 0\n        return 0\n    endif\n    let line = getline(lnum)\n    let ind = indent(lnum)\n    \" Skip heredocs, POD, and comments on 1st column\n    if b:indent_use_syntax\n        let skippin = 2\n        while skippin\n            let synid = synIDattr(synID(lnum,1,0),\"name\")\n            if (synid =~ \"^p6Pod\" || synid =~ \"p6Comment\")\n                let lnum = prevnonblank(lnum - 1)\n                if lnum == 0\n                    return 0\n                endif\n                let line = getline(lnum)\n                let ind = indent(lnum)\n                let skippin = 1\n            else\n                let skippin = 0\n            endif\n        endwhile\n    endif\n\n        if line =~ '[<«\\[{(]\\s*\\(#[^)}\\]»>]*\\)\\=$'\n            let ind = ind + &sw\n        endif\n        if cline =~ '^\\s*[)}\\]»>]'\n            let ind = ind - &sw\n        endif\n\n    \" Indent lines that begin with 'or' or 'and'\n    if cline =~ '^\\s*\\(or\\|and\\)\\>'\n        if line !~ '^\\s*\\(or\\|and\\)\\>'\n            let ind = ind + &sw\n        endif\n    elseif line =~ '^\\s*\\(or\\|and\\)\\>'\n        let ind = ind - &sw\n    endif\n\n    return ind\n\nendfunction\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim:ts=8:sts=4:sw=4:expandtab:ft=vim\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/puppet.vim",
    "content": "\" Vim indent file\n\" Language:\tPuppet\n\" Maintainer:\tTodd Zullinger <tmz@pobox.com>\n\" Last Change:\t2009 Aug 19\n\" vim: set sw=4 sts=4:\n\nif exists(\"b:did_indent\")\n    finish\nendif\nlet b:did_indent = 1\n\nsetlocal autoindent smartindent\nsetlocal indentexpr=GetPuppetIndent()\nsetlocal indentkeys+=0],0)\n\nif exists(\"*GetPuppetIndent\")\n    finish\nendif\n\n\" Check if a line is part of an include 'block', e.g.:\n\"   include foo,\n\"       bar,\n\"       baz\nfunction! s:PartOfInclude(lnum)\n    let lnum = a:lnum\n    while lnum\n        let lnum = lnum - 1\n        let line = getline(lnum)\n        if line !~ ',$'\n            break\n        endif\n        if line =~ '^\\s*include\\s\\+[^,]\\+,$'\n            return 1\n        endif\n    endwhile\n    return 0\nendfunction\n\nfunction! s:OpenBrace(lnum)\n    call cursor(a:lnum, 1)\n    return searchpair('{\\|\\[\\|(', '', '}\\|\\]\\|)', 'nbW')\nendfunction\n\nfunction! GetPuppetIndent()\n    let pnum = prevnonblank(v:lnum - 1)\n    if pnum == 0\n       return 0\n    endif\n\n    let line = getline(v:lnum)\n    let pline = getline(pnum)\n    let ind = indent(pnum)\n\n    if pline =~ '^\\s*#'\n        return ind\n    endif\n\n    if pline =~ '\\({\\|\\[\\|(\\|:\\)$'\n        let ind += &sw\n    elseif pline =~ ';$' && pline !~ '[^:]\\+:.*[=+]>.*'\n        let ind -= &sw\n    elseif pline =~ '^\\s*include\\s\\+.*,$'\n        let ind += &sw\n    endif\n\n    if pline !~ ',$' && s:PartOfInclude(pnum)\n        let ind -= &sw\n    endif\n\n    \" Match } }, }; ] ]: )\n    if line =~ '^\\s*\\(}\\(,\\|;\\)\\?$\\|]:\\?$\\|)\\)'\n        let ind = indent(s:OpenBrace(v:lnum))\n    endif\n\n    return ind\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/ruby.vim",
    "content": "\" Vim indent file\n\" Language:\t\tRuby\n\" Maintainer:\t\tNikolai Weibull <now at bitwi.se>\n\" URL:\t\t\thttps://github.com/vim-ruby/vim-ruby\n\" Release Coordinator:\tDoug Kearns <dougkearns@gmail.com>\n\n\" 0. Initialization {{{1\n\" =================\n\n\" Only load this indent file when no other was loaded.\nif exists(\"b:did_indent\")\n  finish\nendif\nlet b:did_indent = 1\n\nif !exists('g:ruby_indent_access_modifier_style')\n  \" Possible values: \"normal\", \"indent\", \"outdent\"\n  let g:ruby_indent_access_modifier_style = 'normal'\nendif\n\nsetlocal nosmartindent\n\n\" Now, set up our indentation expression and keys that trigger it.\nsetlocal indentexpr=GetRubyIndent(v:lnum)\nsetlocal indentkeys=0{,0},0),0],!^F,o,O,e,:,.\nsetlocal indentkeys+==end,=else,=elsif,=when,=ensure,=rescue,==begin,==end\nsetlocal indentkeys+==private,=protected,=public\n\n\" Only define the function once.\nif exists(\"*GetRubyIndent\")\n  finish\nendif\n\nlet s:cpo_save = &cpo\nset cpo&vim\n\n\" 1. Variables {{{1\n\" ============\n\n\" Regex of syntax group names that are or delimit strings/symbols or are comments.\nlet s:syng_strcom = '\\<ruby\\%(Regexp\\|RegexpDelimiter\\|RegexpEscape' .\n      \\ '\\|Symbol\\|String\\|StringDelimiter\\|StringEscape\\|ASCIICode' .\n      \\ '\\|Interpolation\\|InterpolationDelimiter\\|NoInterpolation\\|Comment\\|Documentation\\)\\>'\n\n\" Regex of syntax group names that are strings.\nlet s:syng_string =\n      \\ '\\<ruby\\%(String\\|Interpolation\\|NoInterpolation\\|StringEscape\\)\\>'\n\n\" Regex of syntax group names that are strings or documentation.\nlet s:syng_stringdoc =\n      \\'\\<ruby\\%(String\\|Interpolation\\|NoInterpolation\\|StringEscape\\|Documentation\\)\\>'\n\n\" Expression used to check whether we should skip a match with searchpair().\nlet s:skip_expr =\n      \\ \"synIDattr(synID(line('.'),col('.'),1),'name') =~ '\".s:syng_strcom.\"'\"\n\n\" Regex used for words that, at the start of a line, add a level of indent.\nlet s:ruby_indent_keywords =\n      \\ '^\\s*\\zs\\<\\%(module\\|class\\|if\\|for' .\n      \\   '\\|while\\|until\\|else\\|elsif\\|case\\|when\\|unless\\|begin\\|ensure\\|rescue' .\n      \\   '\\|\\%(public\\|protected\\|private\\)\\=\\s*def\\):\\@!\\>' .\n      \\ '\\|\\%([=,*/%+-]\\|<<\\|>>\\|:\\s\\)\\s*\\zs' .\n      \\    '\\<\\%(if\\|for\\|while\\|until\\|case\\|unless\\|begin\\):\\@!\\>'\n\n\" Regex used for words that, at the start of a line, remove a level of indent.\nlet s:ruby_deindent_keywords =\n      \\ '^\\s*\\zs\\<\\%(ensure\\|else\\|rescue\\|elsif\\|when\\|end\\):\\@!\\>'\n\n\" Regex that defines the start-match for the 'end' keyword.\n\"let s:end_start_regex = '\\%(^\\|[^.]\\)\\<\\%(module\\|class\\|def\\|if\\|for\\|while\\|until\\|case\\|unless\\|begin\\|do\\)\\>'\n\" TODO: the do here should be restricted somewhat (only at end of line)?\nlet s:end_start_regex =\n      \\ '\\C\\%(^\\s*\\|[=,*/%+\\-|;{]\\|<<\\|>>\\|:\\s\\)\\s*\\zs' .\n      \\ '\\<\\%(module\\|class\\|if\\|for\\|while\\|until\\|case\\|unless\\|begin' .\n      \\   '\\|\\%(public\\|protected\\|private\\)\\=\\s*def\\):\\@!\\>' .\n      \\ '\\|\\%(^\\|[^.:@$]\\)\\@<=\\<do:\\@!\\>'\n\n\" Regex that defines the middle-match for the 'end' keyword.\nlet s:end_middle_regex = '\\<\\%(ensure\\|else\\|\\%(\\%(^\\|;\\)\\s*\\)\\@<=\\<rescue:\\@!\\>\\|when\\|elsif\\):\\@!\\>'\n\n\" Regex that defines the end-match for the 'end' keyword.\nlet s:end_end_regex = '\\%(^\\|[^.:@$]\\)\\@<=\\<end:\\@!\\>'\n\n\" Expression used for searchpair() call for finding match for 'end' keyword.\nlet s:end_skip_expr = s:skip_expr .\n      \\ ' || (expand(\"<cword>\") == \"do\"' .\n      \\ ' && getline(\".\") =~ \"^\\\\s*\\\\<\\\\(while\\\\|until\\\\|for\\\\):\\\\@!\\\\>\")'\n\n\" Regex that defines continuation lines, not including (, {, or [.\nlet s:non_bracket_continuation_regex = '\\%([\\\\.,:*/%+]\\|\\<and\\|\\<or\\|\\%(<%\\)\\@<![=-]\\|\\W[|&?]\\|||\\|&&\\)\\s*\\%(#.*\\)\\=$'\n\n\" Regex that defines continuation lines.\n\" TODO: this needs to deal with if ...: and so on\nlet s:continuation_regex =\n      \\ '\\%(%\\@<![({[\\\\.,:*/%+]\\|\\<and\\|\\<or\\|\\%(<%\\)\\@<![=-]\\|\\W[|&?]\\|||\\|&&\\)\\s*\\%(#.*\\)\\=$'\n\n\" Regex that defines bracket continuations\nlet s:bracket_continuation_regex = '%\\@<!\\%([({[]\\)\\s*\\%(#.*\\)\\=$'\n\n\" Regex that defines the first part of a splat pattern\nlet s:splat_regex = '[[,(]\\s*\\*\\s*\\%(#.*\\)\\=$'\n\n\" Regex that describes all indent access modifiers\nlet s:access_modifier_regex = '\\C^\\s*\\%(public\\|protected\\|private\\)\\s*\\%(#.*\\)\\=$'\n\n\" Regex that describes the indent access modifiers (excludes public)\nlet s:indent_access_modifier_regex = '\\C^\\s*\\%(protected\\|private\\)\\s*\\%(#.*\\)\\=$'\n\n\" Regex that defines blocks.\n\"\n\" Note that there's a slight problem with this regex and s:continuation_regex.\n\" Code like this will be matched by both:\n\"\n\"   method_call do |(a, b)|\n\"\n\" The reason is that the pipe matches a hanging \"|\" operator.\n\"\nlet s:block_regex =\n      \\ '\\%(\\<do:\\@!\\>\\|%\\@<!{\\)\\s*\\%(|\\s*(*\\s*\\%([*@&]\\=\\h\\w*,\\=\\s*\\)\\%(,\\s*(*\\s*[*@&]\\=\\h\\w*\\s*)*\\s*\\)*|\\)\\=\\s*\\%(#.*\\)\\=$'\n\nlet s:block_continuation_regex = '^\\s*[^])}\\t ].*'.s:block_regex\n\n\" Regex that describes a leading operator (only a method call's dot for now)\nlet s:leading_operator_regex = '^\\s*[.]'\n\n\" 2. Auxiliary Functions {{{1\n\" ======================\n\n\" Check if the character at lnum:col is inside a string, comment, or is ascii.\nfunction s:IsInStringOrComment(lnum, col)\n  return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_strcom\nendfunction\n\n\" Check if the character at lnum:col is inside a string.\nfunction s:IsInString(lnum, col)\n  return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_string\nendfunction\n\n\" Check if the character at lnum:col is inside a string or documentation.\nfunction s:IsInStringOrDocumentation(lnum, col)\n  return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_stringdoc\nendfunction\n\n\" Check if the character at lnum:col is inside a string delimiter\nfunction s:IsInStringDelimiter(lnum, col)\n  return synIDattr(synID(a:lnum, a:col, 1), 'name') == 'rubyStringDelimiter'\nendfunction\n\n\" Find line above 'lnum' that isn't empty, in a comment, or in a string.\nfunction s:PrevNonBlankNonString(lnum)\n  let in_block = 0\n  let lnum = prevnonblank(a:lnum)\n  while lnum > 0\n    \" Go in and out of blocks comments as necessary.\n    \" If the line isn't empty (with opt. comment) or in a string, end search.\n    let line = getline(lnum)\n    if line =~ '^=begin'\n      if in_block\n        let in_block = 0\n      else\n        break\n      endif\n    elseif !in_block && line =~ '^=end'\n      let in_block = 1\n    elseif !in_block && line !~ '^\\s*#.*$' && !(s:IsInStringOrComment(lnum, 1)\n          \\ && s:IsInStringOrComment(lnum, strlen(line)))\n      break\n    endif\n    let lnum = prevnonblank(lnum - 1)\n  endwhile\n  return lnum\nendfunction\n\n\" Find line above 'lnum' that started the continuation 'lnum' may be part of.\nfunction s:GetMSL(lnum)\n  \" Start on the line we're at and use its indent.\n  let msl = a:lnum\n  let msl_body = getline(msl)\n  let lnum = s:PrevNonBlankNonString(a:lnum - 1)\n  while lnum > 0\n    \" If we have a continuation line, or we're in a string, use line as MSL.\n    \" Otherwise, terminate search as we have found our MSL already.\n    let line = getline(lnum)\n\n    if s:Match(msl, s:leading_operator_regex)\n      \" If the current line starts with a leading operator, keep its indent\n      \" and keep looking for an MSL.\n      let msl = lnum\n    elseif s:Match(lnum, s:splat_regex)\n      \" If the above line looks like the \"*\" of a splat, use the current one's\n      \" indentation.\n      \"\n      \" Example:\n      \"   Hash[*\n      \"     method_call do\n      \"       something\n      \"\n      return msl\n    elseif s:Match(lnum, s:non_bracket_continuation_regex) &&\n          \\ s:Match(msl, s:non_bracket_continuation_regex)\n      \" If the current line is a non-bracket continuation and so is the\n      \" previous one, keep its indent and continue looking for an MSL.\n      \"\n      \" Example:\n      \"   method_call one,\n      \"     two,\n      \"     three\n      \"\n      let msl = lnum\n    elseif s:Match(lnum, s:non_bracket_continuation_regex) &&\n          \\ (s:Match(msl, s:bracket_continuation_regex) || s:Match(msl, s:block_continuation_regex))\n      \" If the current line is a bracket continuation or a block-starter, but\n      \" the previous is a non-bracket one, respect the previous' indentation,\n      \" and stop here.\n      \"\n      \" Example:\n      \"   method_call one,\n      \"     two {\n      \"     three\n      \"\n      return lnum\n    elseif s:Match(lnum, s:bracket_continuation_regex) &&\n          \\ (s:Match(msl, s:bracket_continuation_regex) || s:Match(msl, s:block_continuation_regex))\n      \" If both lines are bracket continuations (the current may also be a\n      \" block-starter), use the current one's and stop here\n      \"\n      \" Example:\n      \"   method_call(\n      \"     other_method_call(\n      \"       foo\n      return msl\n    elseif s:Match(lnum, s:block_regex) &&\n          \\ !s:Match(msl, s:continuation_regex) &&\n          \\ !s:Match(msl, s:block_continuation_regex)\n      \" If the previous line is a block-starter and the current one is\n      \" mostly ordinary, use the current one as the MSL.\n      \"\n      \" Example:\n      \"   method_call do\n      \"     something\n      \"     something_else\n      return msl\n    else\n      let col = match(line, s:continuation_regex) + 1\n      if (col > 0 && !s:IsInStringOrComment(lnum, col))\n            \\ || s:IsInString(lnum, strlen(line))\n        let msl = lnum\n      else\n        break\n      endif\n    endif\n\n    let msl_body = getline(msl)\n    let lnum = s:PrevNonBlankNonString(lnum - 1)\n  endwhile\n  return msl\nendfunction\n\n\" Check if line 'lnum' has more opening brackets than closing ones.\nfunction s:ExtraBrackets(lnum)\n  let opening = {'parentheses': [], 'braces': [], 'brackets': []}\n  let closing = {'parentheses': [], 'braces': [], 'brackets': []}\n\n  let line = getline(a:lnum)\n  let pos  = match(line, '[][(){}]', 0)\n\n  \" Save any encountered opening brackets, and remove them once a matching\n  \" closing one has been found. If a closing bracket shows up that doesn't\n  \" close anything, save it for later.\n  while pos != -1\n    if !s:IsInStringOrComment(a:lnum, pos + 1)\n      if line[pos] == '('\n        call add(opening.parentheses, {'type': '(', 'pos': pos})\n      elseif line[pos] == ')'\n        if empty(opening.parentheses)\n          call add(closing.parentheses, {'type': ')', 'pos': pos})\n        else\n          let opening.parentheses = opening.parentheses[0:-2]\n        endif\n      elseif line[pos] == '{'\n        call add(opening.braces, {'type': '{', 'pos': pos})\n      elseif line[pos] == '}'\n        if empty(opening.braces)\n          call add(closing.braces, {'type': '}', 'pos': pos})\n        else\n          let opening.braces = opening.braces[0:-2]\n        endif\n      elseif line[pos] == '['\n        call add(opening.brackets, {'type': '[', 'pos': pos})\n      elseif line[pos] == ']'\n        if empty(opening.brackets)\n          call add(closing.brackets, {'type': ']', 'pos': pos})\n        else\n          let opening.brackets = opening.brackets[0:-2]\n        endif\n      endif\n    endif\n\n    let pos = match(line, '[][(){}]', pos + 1)\n  endwhile\n\n  \" Find the rightmost brackets, since they're the ones that are important in\n  \" both opening and closing cases\n  let rightmost_opening = {'type': '(', 'pos': -1}\n  let rightmost_closing = {'type': ')', 'pos': -1}\n\n  for opening in opening.parentheses + opening.braces + opening.brackets\n    if opening.pos > rightmost_opening.pos\n      let rightmost_opening = opening\n    endif\n  endfor\n\n  for closing in closing.parentheses + closing.braces + closing.brackets\n    if closing.pos > rightmost_closing.pos\n      let rightmost_closing = closing\n    endif\n  endfor\n\n  return [rightmost_opening, rightmost_closing]\nendfunction\n\nfunction s:Match(lnum, regex)\n  let line   = getline(a:lnum)\n  let offset = match(line, '\\C'.a:regex)\n  let col    = offset + 1\n\n  while offset > -1 && s:IsInStringOrComment(a:lnum, col)\n    let offset = match(line, '\\C'.a:regex, offset + 1)\n    let col = offset + 1\n  endwhile\n\n  if offset > -1\n    return col\n  else\n    return 0\n  endif\nendfunction\n\n\" Locates the containing class/module's definition line, ignoring nested classes\n\" along the way.\n\"\nfunction! s:FindContainingClass()\n  let saved_position = getpos('.')\n\n  while searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW',\n        \\ s:end_skip_expr) > 0\n    if expand('<cword>') =~# '\\<class\\|module\\>'\n      let found_lnum = line('.')\n      call setpos('.', saved_position)\n      return found_lnum\n    endif\n  endif\n\n  call setpos('.', saved_position)\n  return 0\nendfunction\n\n\" 3. GetRubyIndent Function {{{1\n\" =========================\n\nfunction GetRubyIndent(...)\n  \" 3.1. Setup {{{2\n  \" ----------\n\n  \" For the current line, use the first argument if given, else v:lnum\n  let clnum = a:0 ? a:1 : v:lnum\n\n  \" Set up variables for restoring position in file.  Could use clnum here.\n  let vcol = col('.')\n\n  \" 3.2. Work on the current line {{{2\n  \" -----------------------------\n\n  \" Get the current line.\n  let line = getline(clnum)\n  let ind = -1\n\n  \" If this line is an access modifier keyword, align according to the closest\n  \" class declaration.\n  if g:ruby_indent_access_modifier_style == 'indent'\n    if s:Match(clnum, s:access_modifier_regex)\n      let class_line = s:FindContainingClass()\n      if class_line > 0\n        return indent(class_line) + &sw\n      endif\n    endif\n  elseif g:ruby_indent_access_modifier_style == 'outdent'\n    if s:Match(clnum, s:access_modifier_regex)\n      let class_line = s:FindContainingClass()\n      if class_line > 0\n        return indent(class_line)\n      endif\n    endif\n  endif\n\n  \" If we got a closing bracket on an empty line, find its match and indent\n  \" according to it.  For parentheses we indent to its column - 1, for the\n  \" others we indent to the containing line's MSL's level.  Return -1 if fail.\n  let col = matchend(line, '^\\s*[]})]')\n  if col > 0 && !s:IsInStringOrComment(clnum, col)\n    call cursor(clnum, col)\n    let bs = strpart('(){}[]', stridx(')}]', line[col - 1]) * 2, 2)\n    if searchpair(escape(bs[0], '\\['), '', bs[1], 'bW', s:skip_expr) > 0\n      if line[col-1]==')' && col('.') != col('$') - 1\n        let ind = virtcol('.') - 1\n      else\n        let ind = indent(s:GetMSL(line('.')))\n      endif\n    endif\n    return ind\n  endif\n\n  \" If we have a =begin or =end set indent to first column.\n  if match(line, '^\\s*\\%(=begin\\|=end\\)$') != -1\n    return 0\n  endif\n\n  \" If we have a deindenting keyword, find its match and indent to its level.\n  \" TODO: this is messy\n  if s:Match(clnum, s:ruby_deindent_keywords)\n    call cursor(clnum, 1)\n    if searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW',\n          \\ s:end_skip_expr) > 0\n      let msl  = s:GetMSL(line('.'))\n      let line = getline(line('.'))\n\n      if strpart(line, 0, col('.') - 1) =~ '=\\s*$' &&\n            \\ strpart(line, col('.') - 1, 2) !~ 'do'\n        let ind = virtcol('.') - 1\n      elseif getline(msl) =~ '=\\s*\\(#.*\\)\\=$'\n        let ind = indent(line('.'))\n      else\n        let ind = indent(msl)\n      endif\n    endif\n    return ind\n  endif\n\n  \" If we are in a multi-line string or line-comment, don't do anything to it.\n  if s:IsInStringOrDocumentation(clnum, matchend(line, '^\\s*') + 1)\n    return indent('.')\n  endif\n\n  \" If we are at the closing delimiter of a \"<<\" heredoc-style string, set the\n  \" indent to 0.\n  if line =~ '^\\k\\+\\s*$'\n        \\ && s:IsInStringDelimiter(clnum, 1)\n        \\ && search('\\V<<'.line, 'nbW') > 0\n    return 0\n  endif\n\n  \" If the current line starts with a leading operator, add a level of indent.\n  if s:Match(clnum, s:leading_operator_regex)\n    return indent(s:GetMSL(clnum)) + &sw\n  endif\n\n  \" 3.3. Work on the previous line. {{{2\n  \" -------------------------------\n\n  \" Find a non-blank, non-multi-line string line above the current line.\n  let lnum = s:PrevNonBlankNonString(clnum - 1)\n\n  \" If the line is empty and inside a string, use the previous line.\n  if line =~ '^\\s*$' && lnum != prevnonblank(clnum - 1)\n    return indent(prevnonblank(clnum))\n  endif\n\n  \" At the start of the file use zero indent.\n  if lnum == 0\n    return 0\n  endif\n\n  \" Set up variables for the previous line.\n  let line = getline(lnum)\n  let ind = indent(lnum)\n\n  if g:ruby_indent_access_modifier_style == 'indent'\n    \" If the previous line was a private/protected keyword, add a\n    \" level of indent.\n    if s:Match(lnum, s:indent_access_modifier_regex)\n      return indent(lnum) + &sw\n    endif\n  elseif g:ruby_indent_access_modifier_style == 'outdent'\n    \" If the previous line was a private/protected/public keyword, add\n    \" a level of indent, since the keyword has been out-dented.\n    if s:Match(lnum, s:access_modifier_regex)\n      return indent(lnum) + &sw\n    endif\n  endif\n\n  \" If the previous line ended with a block opening, add a level of indent.\n  if s:Match(lnum, s:block_regex)\n    return indent(s:GetMSL(lnum)) + &sw\n  endif\n\n  \" If the previous line started with a leading operator, use its MSL's level\n  \" of indent\n  if s:Match(lnum, s:leading_operator_regex)\n    return indent(s:GetMSL(lnum))\n  endif\n\n  \" If the previous line ended with the \"*\" of a splat, add a level of indent\n  if line =~ s:splat_regex\n    return indent(lnum) + &sw\n  endif\n\n  \" If the previous line contained unclosed opening brackets and we are still\n  \" in them, find the rightmost one and add indent depending on the bracket\n  \" type.\n  \"\n  \" If it contained hanging closing brackets, find the rightmost one, find its\n  \" match and indent according to that.\n  if line =~ '[[({]' || line =~ '[])}]\\s*\\%(#.*\\)\\=$'\n    let [opening, closing] = s:ExtraBrackets(lnum)\n\n    if opening.pos != -1\n      if opening.type == '(' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0\n        if col('.') + 1 == col('$')\n          return ind + &sw\n        else\n          return virtcol('.')\n        endif\n      else\n        let nonspace = matchend(line, '\\S', opening.pos + 1) - 1\n        return nonspace > 0 ? nonspace : ind + &sw\n      endif\n    elseif closing.pos != -1\n      call cursor(lnum, closing.pos + 1)\n      normal! %\n\n      if s:Match(line('.'), s:ruby_indent_keywords)\n        return indent('.') + &sw\n      else\n        return indent('.')\n      endif\n    else\n      call cursor(clnum, vcol)\n    end\n  endif\n\n  \" If the previous line ended with an \"end\", match that \"end\"s beginning's\n  \" indent.\n  let col = s:Match(lnum, '\\%(^\\|[^.:@$]\\)\\<end\\>\\s*\\%(#.*\\)\\=$')\n  if col > 0\n    call cursor(lnum, col)\n    if searchpair(s:end_start_regex, '', s:end_end_regex, 'bW',\n          \\ s:end_skip_expr) > 0\n      let n = line('.')\n      let ind = indent('.')\n      let msl = s:GetMSL(n)\n      if msl != n\n        let ind = indent(msl)\n      end\n      return ind\n    endif\n  end\n\n  let col = s:Match(lnum, s:ruby_indent_keywords)\n  if col > 0\n    call cursor(lnum, col)\n    let ind = virtcol('.') - 1 + &sw\n    \" TODO: make this better (we need to count them) (or, if a searchpair\n    \" fails, we know that something is lacking an end and thus we indent a\n    \" level\n    if s:Match(lnum, s:end_end_regex)\n      let ind = indent('.')\n    endif\n    return ind\n  endif\n\n  \" 3.4. Work on the MSL line. {{{2\n  \" --------------------------\n\n  \" Set up variables to use and search for MSL to the previous line.\n  let p_lnum = lnum\n  let lnum = s:GetMSL(lnum)\n\n  \" If the previous line wasn't a MSL and is continuation return its indent.\n  \" TODO: the || s:IsInString() thing worries me a bit.\n  if p_lnum != lnum\n    if s:Match(p_lnum, s:non_bracket_continuation_regex) || s:IsInString(p_lnum,strlen(line))\n      return ind\n    endif\n  endif\n\n  \" Set up more variables, now that we know we wasn't continuation bound.\n  let line = getline(lnum)\n  let msl_ind = indent(lnum)\n\n  \" If the MSL line had an indenting keyword in it, add a level of indent.\n  \" TODO: this does not take into account contrived things such as\n  \" module Foo; class Bar; end\n  if s:Match(lnum, s:ruby_indent_keywords)\n    let ind = msl_ind + &sw\n    if s:Match(lnum, s:end_end_regex)\n      let ind = ind - &sw\n    endif\n    return ind\n  endif\n\n  \" If the previous line ended with [*+/.,-=], but wasn't a block ending or a\n  \" closing bracket, indent one extra level.\n  if s:Match(lnum, s:non_bracket_continuation_regex) && !s:Match(lnum, '^\\s*\\([\\])}]\\|end\\)')\n    if lnum == p_lnum\n      let ind = msl_ind + &sw\n    else\n      let ind = msl_ind\n    endif\n    return ind\n  endif\n\n  \" }}}2\n\n  return ind\nendfunction\n\n\" }}}1\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim:set sw=2 sts=2 ts=8 et:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/rust.vim",
    "content": "\" Vim indent file\n\" Language:         Rust\n\" Author:           Chris Morgan <me@chrismorgan.info>\n\" Last Change:      2013 Oct 29\n\n\" Only load this indent file when no other was loaded.\nif exists(\"b:did_indent\")\n  finish\nendif\nlet b:did_indent = 1\n\nsetlocal cindent\nsetlocal cinoptions=L0,(0,Ws,JN,j1\nsetlocal cinkeys=0{,0},!^F,o,O,0[,0]\n\" Don't think cinwords will actually do anything at all... never mind\nsetlocal cinwords=do,for,if,else,while,loop,impl,mod,unsafe,trait,struct,enum,fn,extern\n\n\" Some preliminary settings\nsetlocal nolisp\t\t\" Make sure lisp indenting doesn't supersede us\nsetlocal autoindent\t\" indentexpr isn't much help otherwise\n\" Also do indentkeys, otherwise # gets shoved to column 0 :-/\nsetlocal indentkeys=0{,0},!^F,o,O,0[,0]\n\nsetlocal indentexpr=GetRustIndent(v:lnum)\n\n\" Only define the function once.\nif exists(\"*GetRustIndent\")\n  finish\nendif\n\n\" Come here when loading the script the first time.\n\nfunction s:get_line_trimmed(lnum)\n\t\" Get the line and remove a trailing comment.\n\t\" Use syntax highlighting attributes when possible.\n\t\" NOTE: this is not accurate; /* */ or a line continuation could trick it\n\tlet line = getline(a:lnum)\n\tlet line_len = strlen(line)\n\tif has('syntax_items')\n\t\t\" If the last character in the line is a comment, do a binary search for\n\t\t\" the start of the comment.  synID() is slow, a linear search would take\n\t\t\" too long on a long line.\n\t\tif synIDattr(synID(a:lnum, line_len, 1), \"name\") =~ \"Comment\\|Todo\"\n\t\t\tlet min = 1\n\t\t\tlet max = line_len\n\t\t\twhile min < max\n\t\t\t\tlet col = (min + max) / 2\n\t\t\t\tif synIDattr(synID(a:lnum, col, 1), \"name\") =~ \"Comment\\|Todo\"\n\t\t\t\t\tlet max = col\n\t\t\t\telse\n\t\t\t\t\tlet min = col + 1\n\t\t\t\tendif\n\t\t\tendwhile\n\t\t\tlet line = strpart(line, 0, min - 1)\n\t\tendif\n\t\treturn substitute(line, \"\\s*$\", \"\", \"\")\n\telse\n\t\t\" Sorry, this is not complete, nor fully correct (e.g. string \"//\").\n\t\t\" Such is life.\n\t\treturn substitute(line, \"\\s*//.*$\", \"\", \"\")\n\tendif\nendfunction\n\nfunction GetRustIndent(lnum)\n\n\t\" Starting assumption: cindent (called at the end) will do it right\n\t\" normally. We just want to fix up a few cases.\n\n\tlet line = getline(a:lnum)\n\n\tif has('syntax_items')\n\t\tlet synname = synIDattr(synID(a:lnum, 1, 1), \"name\")\n\t\tif synname == \"rustString\"\n\t\t\t\" If the start of the line is in a string, don't change the indent\n\t\t\treturn -1\n\t\telseif synname =~ \"\\\\(Comment\\\\|Todo\\\\)\"\n\t\t\t\t\t\\ && line !~ \"^\\\\s*/\\\\*\"  \" not /* opening line\n\t\t\tif synname =~ \"CommentML\" \" multi-line\n\t\t\t\tif line !~ \"^\\\\s*\\\\*\" && getline(a:lnum - 1) =~ \"^\\\\s*/\\\\*\"\n\t\t\t\t\t\" This is (hopefully) the line after a /*, and it has no\n\t\t\t\t\t\" leader, so the correct indentation is that of the\n\t\t\t\t\t\" previous line.\n\t\t\t\t\treturn GetRustIndent(a:lnum - 1)\n\t\t\t\tendif\n\t\t\tendif\n\t\t\t\" If it's in a comment, let cindent take care of it now. This is\n\t\t\t\" for cases like \"/*\" where the next line should start \" * \", not\n\t\t\t\" \"* \" as the code below would otherwise cause for module scope\n\t\t\t\" Fun fact: \"  /*\\n*\\n*/\" takes two calls to get right!\n\t\t\treturn cindent(a:lnum)\n\t\tendif\n\tendif\n\n\t\" cindent gets second and subsequent match patterns/struct members wrong,\n\t\" as it treats the comma as indicating an unfinished statement::\n\t\"\n\t\" match a {\n\t\"     b => c,\n\t\"         d => e,\n\t\"         f => g,\n\t\" };\n\n\t\" Search backwards for the previous non-empty line.\n\tlet prevline = s:get_line_trimmed(prevnonblank(a:lnum - 1))\n\tif prevline[len(prevline) - 1] == \",\"\n\t\t\t\t\\ && s:get_line_trimmed(a:lnum) !~ \"^\\\\s*[\\\\[\\\\]{}]\"\n\t\t\t\t\\ && prevline !~ \"^\\\\s*fn\\\\s\"\n\t\t\" Oh ho! The previous line ended in a comma! I bet cindent will try to\n\t\t\" take this too far... For now, let's normally use the previous line's\n\t\t\" indent.\n\n\t\t\" One case where this doesn't work out is where *this* line contains\n\t\t\" square or curly brackets; then we normally *do* want to be indenting\n\t\t\" further.\n\t\t\"\n\t\t\" Another case where we don't want to is one like a function\n\t\t\" definition with arguments spread over multiple lines:\n\t\t\"\n\t\t\" fn foo(baz: Baz,\n\t\t\"        baz: Baz) // <-- cindent gets this right by itself\n\t\t\"\n\t\t\" There are probably other cases where we don't want to do this as\n\t\t\" well. Add them as needed.\n\t\treturn GetRustIndent(a:lnum - 1)\n\tendif\n\n\t\" cindent doesn't do the module scope well at all; e.g.::\n\t\"\n\t\" static FOO : &'static [bool] = [\n\t\" true,\n\t\"     false,\n\t\"     false,\n\t\"     true,\n\t\"     ];\n\t\"\n\t\"     uh oh, next statement is indented further!\n\n\t\" Note that this does *not* apply the line continuation pattern properly;\n\t\" that's too hard to do correctly for my liking at present, so I'll just\n\t\" start with these two main cases (square brackets and not returning to\n\t\" column zero)\n\n\tcall cursor(a:lnum, 1)\n\tif searchpair('{\\|(', '', '}\\|)', 'nbW') == 0\n\t\tif searchpair('\\[', '', '\\]', 'nbW') == 0\n\t\t\t\" Global scope, should be zero\n\t\t\treturn 0\n\t\telse\n\t\t\t\" At the module scope, inside square brackets only\n\t\t\t\"if getline(a:lnum)[0] == ']' || search('\\[', '', '\\]', 'nW') == a:lnum\n\t\t\tif line =~ \"^\\\\s*]\"\n\t\t\t\t\" It's the closing line, dedent it\n\t\t\t\treturn 0\n\t\t\telse\n\t\t\t\treturn &shiftwidth\n\t\t\tendif\n\t\tendif\n\tendif\n\n\t\" Fall back on cindent, which does it mostly right\n\treturn cindent(a:lnum)\nendfunction\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/sass.vim",
    "content": "\" Vim indent file\n\" Language:\tSass\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 May 21\n\nif exists(\"b:did_indent\")\n  finish\nendif\nlet b:did_indent = 1\n\nsetlocal autoindent sw=2 et\nsetlocal indentexpr=GetSassIndent()\nsetlocal indentkeys=o,O,*<Return>,<:>,!^F\n\n\" Only define the function once.\nif exists(\"*GetSassIndent\")\n  finish\nendif\n\nlet s:property = '^\\s*:\\|^\\s*[[:alnum:]#{}-]\\+\\%(:\\|\\s*=\\)'\nlet s:extend = '^\\s*\\%(@extend\\|@include\\|+\\)'\n\nfunction! GetSassIndent()\n  let lnum = prevnonblank(v:lnum-1)\n  let line = substitute(getline(lnum),'\\s\\+$','','')\n  let cline = substitute(substitute(getline(v:lnum),'\\s\\+$','',''),'^\\s\\+','','')\n  let lastcol = strlen(line)\n  let line = substitute(line,'^\\s\\+','','')\n  let indent = indent(lnum)\n  let cindent = indent(v:lnum)\n  if line !~ s:property && line !~ s:extend && cline =~ s:property\n    return indent + &sw\n  \"elseif line =~ s:property && cline !~ s:property\n    \"return indent - &sw\n  else\n    return -1\n  endif\nendfunction\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/scala.vim",
    "content": "\" Vim indent file\n\" Language         : Scala (http://scala-lang.org/)\n\" Original Author  : Stefan Matthias Aust\n\" Modifications by : Derek Wyatt\n\" Last Change: 2011 Mar 19 (Derek Wyatt)\n\n\"if exists(\"b:did_indent\")\n\"  finish\n\"endif\n\"let b:did_indent = 1\n\nsetlocal indentexpr=GetScalaIndent()\nsetlocal indentkeys=0{,0},0),!^F,<>>,o,O,e,=case,<CR>\nsetlocal autoindent\n\n\"if exists(\"*GetScalaIndent\")\n\"    finish\n\"endif\n\nlet s:defMatcher = '\\%(\\%(private\\|protected\\)\\%(\\[[^\\]]*\\]\\)\\?\\s\\+\\|abstract\\s\\+\\|override\\s\\+\\)*\\<def\\>'\nlet s:funcNameMatcher = '\\w\\+'\nlet s:typeSpecMatcher = '\\%(\\s*\\[\\_[^\\]]*\\]\\)'\nlet s:defArgMatcher = '\\%((\\_.\\{-})\\)'\nlet s:returnTypeMatcher = '\\%(:\\s*\\w\\+' . s:typeSpecMatcher . '\\?\\)'\nlet g:fullDefMatcher = '^\\s*' . s:defMatcher . '\\s\\+' . s:funcNameMatcher . '\\s*' . s:typeSpecMatcher . '\\?\\s*' . s:defArgMatcher . '\\?\\s*' . s:returnTypeMatcher . '\\?\\s*[={]'\n\nfunction! scala#ConditionalConfirm(msg)\n  if 0\n    call confirm(a:msg)\n  endif\nendfunction\n\nfunction! scala#GetLine(lnum)\n  let line = substitute(getline(a:lnum), '//.*$', '', '')\n  let line = substitute(line, '\"[^\"]*\"', '\"\"', 'g')\n  return line\nendfunction\n\nfunction! scala#CountBrackets(line, openBracket, closedBracket)\n  let line = substitute(a:line, '\"\\(.\\|\\\\\"\\)*\"', '', 'g')\n  let open = substitute(line, '[^' . a:openBracket . ']', '', 'g')\n  let close = substitute(line, '[^' . a:closedBracket . ']', '', 'g')\n  return strlen(open) - strlen(close)\nendfunction\n\nfunction! scala#CountParens(line)\n  return scala#CountBrackets(a:line, '(', ')')\nendfunction\n\nfunction! scala#CountCurlies(line)\n  return scala#CountBrackets(a:line, '{', '}')\nendfunction\n\nfunction! scala#LineEndsInIncomplete(line)\n  if a:line =~ '[.,]\\s*$'\n    return 1\n  else\n    return 0\n  endif\nendfunction\n\nfunction! scala#LineIsAClosingXML(line)\n  if a:line =~ '^\\s*</\\w'\n    return 1\n  else\n    return 0\n  endif\nendfunction\n\nfunction! scala#LineCompletesXML(lnum, line)\n  let savedpos = getpos('.')\n  call setpos('.', [savedpos[0], a:lnum, 0, savedpos[3]])\n  let tag = substitute(a:line, '^.*</\\([^>]*\\)>.*$', '\\1', '')\n  let [lineNum, colnum] = searchpairpos('<' . tag . '>', '', '</' . tag . '>', 'Wbn')\n  call setpos('.', savedpos)\n  let pline = scala#GetLine(prevnonblank(lineNum - 1))\n  if pline =~ '=\\s*$'\n    return 1\n  else\n    return 0\n  endif\nendfunction\n\nfunction! scala#IsParentCase()\n  let savedpos = getpos('.')\n  call setpos('.', [savedpos[0], savedpos[1], 0, savedpos[3]])\n  let [l, c] = searchpos('^\\s*\\%(' . s:defMatcher . '\\|\\%(\\<case\\>\\)\\)', 'bnW')\n  let retvalue = -1\n  if l != 0 && search('\\%' . l . 'l\\s*\\<case\\>', 'bnW')\n    let retvalue = l\n  endif \n  call setpos('.', savedpos)\n  return retvalue\nendfunction\n\nfunction! scala#CurlyMatcher()\n  let matchline = scala#GetLineThatMatchesBracket('{', '}')\n  if scala#CountParens(scala#GetLine(matchline)) < 0\n    let savedpos = getpos('.')\n    call setpos('.', [savedpos[0], matchline, 9999, savedpos[3]])\n    call searchpos('{', 'Wb')\n    call searchpos(')', 'Wb')\n    let [lnum, colnum] = searchpairpos('(', '', ')', 'Wbn')\n    call setpos('.', savedpos)\n    let line = scala#GetLine(lnum)\n    if line =~ '^\\s*' . s:defMatcher\n      return lnum\n    else\n      return matchline\n    endif\n  else\n    return matchline\n  endif\nendfunction\n\nfunction! scala#GetLineAndColumnThatMatchesCurly()\n  return scala#GetLineAndColumnThatMatchesBracket('{', '}')\nendfunction\n\nfunction! scala#GetLineAndColumnThatMatchesParen()\n  return scala#GetLineAndColumnThatMatchesBracket('(', ')')\nendfunction\n\nfunction! scala#GetLineAndColumnThatMatchesBracket(openBracket, closedBracket)\n  let savedpos = getpos('.')\n  let curline = scala#GetLine(line('.'))\n  if curline =~ a:closedBracket . '.*' . a:openBracket . '.*' . a:closedBracket\n    call setpos('.', [savedpos[0], savedpos[1], 0, savedpos[3]])\n    call searchpos(a:closedBracket . '\\ze[^' . a:closedBracket . a:openBracket . ']*' . a:openBracket, 'W')\n  else\n    call setpos('.', [savedpos[0], savedpos[1], 9999, savedpos[3]])\n    call searchpos(a:closedBracket, 'Wb')\n  endif\n  let [lnum, colnum] = searchpairpos(a:openBracket, '', a:closedBracket, 'Wbn')\n  call setpos('.', savedpos)\n  return [lnum, colnum]\nendfunction\n\nfunction! scala#GetLineThatMatchesCurly()\n  return scala#GetLineThatMatchesBracket('{', '}')\nendfunction\n\nfunction! scala#GetLineThatMatchesParen()\n  return scala#GetLineThatMatchesBracket('(', ')')\nendfunction\n\nfunction! scala#GetLineThatMatchesBracket(openBracket, closedBracket)\n  let [lnum, colnum] = scala#GetLineAndColumnThatMatchesBracket(a:openBracket, a:closedBracket)\n  return lnum\nendfunction\n\nfunction! scala#NumberOfBraceGroups(line)\n  let line = substitute(a:line, '[^()]', '', 'g')\n  if strlen(line) == 0\n    return 0\n  endif\n  let line = substitute(line, '^)*', '', 'g')\n  if strlen(line) == 0\n    return 0\n  endif\n  let line = substitute(line, '^(', '', 'g')\n  if strlen(line) == 0\n    return 0\n  endif\n  let c = 1\n  let counter = 0\n  let groupCount = 0\n  while counter < strlen(line)\n    let char = strpart(line, counter, 1)\n    if char == '('\n      let c = c + 1\n    elseif char == ')'\n      let c = c - 1\n    endif\n    if c == 0\n      let groupCount = groupCount + 1\n    endif\n    let counter = counter + 1\n  endwhile\n  return groupCount\nendfunction\n\nfunction! scala#MatchesIncompleteDefValr(line)\n  if a:line =~ '^\\s*\\%(' . s:defMatcher . '\\|\\<va[lr]\\>\\).*[=({]\\s*$'\n    return 1\n  else\n    return 0\n  endif\nendfunction\n\nfunction! scala#LineIsCompleteIf(line)\n  if scala#CountBrackets(a:line, '{', '}') == 0 &&\n   \\ scala#CountBrackets(a:line, '(', ')') == 0 &&\n   \\ a:line =~ '^\\s*\\<if\\>\\s*([^)]*)\\s*\\S.*$'\n    return 1\n  else\n    return 0\n  endif\nendfunction\n\nfunction! scala#LineCompletesIfElse(lnum, line)\n  if a:line =~ '^\\s*\\%(\\<if\\>\\|\\%(}\\s*\\)\\?\\<else\\>\\)'\n    return 0\n  endif\n  let result = search('^\\%(\\s*\\<if\\>\\s*(.*).*\\n\\|\\s*\\<if\\>\\s*(.*)\\s*\\n.*\\n\\)\\%(\\s*\\<else\\>\\s*\\<if\\>\\s*(.*)\\s*\\n.*\\n\\)*\\%(\\s*\\<else\\>\\s*\\n\\|\\s*\\<else\\>[^{]*\\n\\)\\?\\%' . a:lnum . 'l', 'Wbn')\n  if result != 0 && scala#GetLine(prevnonblank(a:lnum - 1)) !~ '{\\s*$'\n    return result\n  endif\n  return 0\nendfunction\n\nfunction! scala#GetPrevCodeLine(lnum)\n  \" This needs to skip comment lines\n  return prevnonblank(a:lnum - 1)\nendfunction\n\nfunction! scala#InvertBracketType(openBracket, closedBracket)\n  if a:openBracket == '('\n    return [ '{', '}' ]\n  else\n    return [ '(', ')' ]\n  endif\nendfunction\n\nfunction! scala#Testhelper(lnum, line, openBracket, closedBracket, iteration)\n  let bracketCount = scala#CountBrackets(a:line, a:openBracket, a:closedBracket)\n  \" There are more '}' braces than '{' on this line so it may be completing the function definition\n  if bracketCount < 0\n    let [matchedLNum, matchedColNum] = scala#GetLineAndColumnThatMatchesBracket(a:openBracket, a:closedBracket)\n    if matchedLNum == a:lnum\n      return -1\n    endif\n    let matchedLine = scala#GetLine(matchedLNum)\n    if ! scala#MatchesIncompleteDefValr(matchedLine)\n      let bracketLine = substitute(substitute(matchedLine, '\\%' . matchedColNum . 'c.*$', '', ''), '[^{}()]', '', 'g')\n      if bracketLine =~ '}$'\n        return scala#Testhelper(matchedLNum, matchedLine, '{', '}', a:iteration + 1)\n      elseif bracketLine =~ ')$'\n        return scala#Testhelper(matchedLNum, matchedLine, '(', ')', a:iteration + 1)\n      else\n        let prevCodeLNum = scala#GetPrevCodeLine(matchedLNum)\n        if scala#MatchesIncompleteDefValr(scala#GetLine(prevCodeLNum))\n          return prevCodeLNum\n        else\n          return -1\n        endif\n      endif\n    else\n      \" return indent value instead\n      return matchedLNum\n    endif\n  \" There's an equal number of '{' and '}' on this line so it may be a single line function definition\n  elseif bracketCount == 0\n    if a:iteration == 0\n      let otherBracketType = scala#InvertBracketType(a:openBracket, a:closedBracket)\n      return scala#Testhelper(a:lnum, a:line, otherBracketType[0], otherBracketType[1], a:iteration + 1)\n    else\n      let prevCodeLNum = scala#GetPrevCodeLine(a:lnum)\n      let prevCodeLine = scala#GetLine(prevCodeLNum)\n      if scala#MatchesIncompleteDefValr(prevCodeLine) && prevCodeLine !~ '{\\s*$'\n        return prevCodeLNum\n      else\n        let possibleIfElse = scala#LineCompletesIfElse(a:lnum, a:line)\n        if possibleIfElse != 0\n          let defValrLine = prevnonblank(possibleIfElse - 1)\n          let possibleDefValr = scala#GetLine(defValrLine)\n          if scala#MatchesIncompleteDefValr(possibleDefValr) && possibleDefValr =~ '^.*=\\s*$'\n            return possibleDefValr\n          else\n            return -1\n          endif\n        else\n          return -1\n        endif\n      endif\n    endif\n  else\n    return -1\n  endif\nendfunction\n\nfunction! scala#Test(lnum, line, openBracket, closedBracket)\n  return scala#Testhelper(a:lnum, a:line, a:openBracket, a:closedBracket, 0)\nendfunction\n\nfunction! scala#LineCompletesDefValr(lnum, line)\n  let bracketCount = scala#CountBrackets(a:line, '{', '}')\n  if bracketCount < 0\n    let matchedBracket = scala#GetLineThatMatchesBracket('{', '}')\n    if ! scala#MatchesIncompleteDefValr(scala#GetLine(matchedBracket))\n      let possibleDefValr = scala#GetLine(prevnonblank(matchedBracket - 1))\n      if matchedBracket != -1 && scala#MatchesIncompleteDefValr(possibleDefValr)\n        return 1\n      else\n        return 0\n      endif\n    else\n      return 0\n    endif\n  elseif bracketCount == 0\n    let bracketCount = scala#CountBrackets(a:line, '(', ')')\n    if bracketCount < 0\n      let matchedBracket = scala#GetLineThatMatchesBracket('(', ')')\n      if ! scala#MatchesIncompleteDefValr(scala#GetLine(matchedBracket))\n        let possibleDefValr = scala#GetLine(prevnonblank(matchedBracket - 1))\n        if matchedBracket != -1 && scala#MatchesIncompleteDefValr(possibleDefValr)\n          return 1\n        else\n          return 0\n        endif\n      else\n        return 0\n      endif\n    elseif bracketCount == 0\n      let possibleDefValr = scala#GetLine(prevnonblank(a:lnum - 1))\n      if scala#MatchesIncompleteDefValr(possibleDefValr) && possibleDefValr =~ '^.*=\\s*$'\n        return 1\n      else\n        let possibleIfElse = scala#LineCompletesIfElse(a:lnum, a:line)\n        if possibleIfElse != 0\n          let possibleDefValr = scala#GetLine(prevnonblank(possibleIfElse - 1))\n          if scala#MatchesIncompleteDefValr(possibleDefValr) && possibleDefValr =~ '^.*=\\s*$'\n            return 2\n          else\n            return 0\n          endif\n        else\n          return 0\n        endif\n      endif\n    else\n      return 0\n    endif\n  endif\nendfunction\n\nfunction! scala#SpecificLineCompletesBrackets(lnum, openBracket, closedBracket)\n  let savedpos = getpos('.')\n  call setpos('.', [savedpos[0], a:lnum, 9999, savedpos[3]])\n  let retv = scala#LineCompletesBrackets(a:openBracket, a:closedBracket)\n  call setpos('.', savedpos)\n\n  return retv\nendfunction\n\nfunction! scala#LineCompletesBrackets(openBracket, closedBracket)\n  let savedpos = getpos('.')\n  let offline = 0\n  while offline == 0\n    let [lnum, colnum] = searchpos(a:closedBracket, 'Wb')\n    let [lnumA, colnumA] = searchpairpos(a:openBracket, '', a:closedBracket, 'Wbn')\n    if lnum != lnumA\n      let [lnumB, colnumB] = searchpairpos(a:openBracket, '', a:closedBracket, 'Wbnr')\n      let offline = 1\n    endif\n  endwhile\n  call setpos('.', savedpos)\n  if lnumA == lnumB && colnumA == colnumB\n    return lnumA\n  else\n    return -1\n  endif\nendfunction\n\nfunction! GetScalaIndent()\n  \" Find a non-blank line above the current line.\n  let prevlnum = prevnonblank(v:lnum - 1)\n\n  \" Hit the start of the file, use zero indent.\n  if prevlnum == 0\n    return 0\n  endif\n\n  let ind = indent(prevlnum)\n  let originalIndentValue = ind\n  let prevline = scala#GetLine(prevlnum)\n  let curlnum = v:lnum\n  let curline = scala#GetLine(curlnum)\n\n  if prevline =~ '^\\s*/\\*\\*'\n    return ind + 1\n  endif\n\n  if curline =~ '^\\s*\\*'\n    return cindent(curlnum)\n  endif\n\n  \" If this line starts with a { then make it indent the same as the previous line\n  if curline =~ '^\\s*{'\n    call scala#ConditionalConfirm(\"1\")\n    \" Unless, of course, the previous one is a { as well\n    if prevline !~ '^\\s*{'\n      call scala#ConditionalConfirm(\"2\")\n      return indent(prevlnum)\n    endif\n  endif\n\n  \" '.' continuations\n  if curline =~ '^\\s*\\.'\n    if prevline =~ '^\\s*\\.'\n      return ind\n    else\n      return ind + &shiftwidth\n    endif\n  endif\n\n  \" Indent html literals\n  if prevline !~ '/>\\s*$' && prevline =~ '^\\s*<[a-zA-Z][^>]*>\\s*$'\n    call scala#ConditionalConfirm(\"3\")\n    return ind + &shiftwidth\n  endif\n\n  \" assumes curly braces around try-block\n  if curline =~ '^\\s*}\\s*\\<catch\\>'\n    return ind - &shiftwidth\n  elseif curline =~ '^\\s*\\<catch\\>'\n    return ind\n  endif\n\n  \" Add a 'shiftwidth' after lines that start a block\n  \" If 'if', 'for' or 'while' end with ), this is a one-line block\n  \" If 'val', 'var', 'def' end with =, this is a one-line block\n  if (prevline =~ '^\\s*\\<\\%(\\%(}\\?\\s*else\\s\\+\\)\\?if\\|for\\|while\\)\\>.*[)=]\\s*$' && scala#NumberOfBraceGroups(prevline) <= 1)\n        \\ || prevline =~ '^\\s*' . s:defMatcher . '.*=\\s*$'\n        \\ || prevline =~ '^\\s*\\<va[lr]\\>.*[=]\\s*$'\n        \\ || prevline =~ '^\\s*\\%(}\\s*\\)\\?\\<else\\>\\s*$'\n        \\ || prevline =~ '=\\s*$'\n    call scala#ConditionalConfirm(\"4\")\n    let ind = ind + &shiftwidth\n  elseif prevline =~ '^\\s*\\<\\%(}\\?\\s*else\\s\\+\\)\\?if\\>' && curline =~ '^\\s*}\\?\\s*\\<else\\>'\n    return ind\n  endif\n\n  let lineCompletedBrackets = 0\n  let bracketCount = scala#CountBrackets(prevline, '{', '}')\n  if bracketCount > 0 || prevline =~ '.*{\\s*$'\n    call scala#ConditionalConfirm(\"5b\")\n    let ind = ind + &shiftwidth\n  elseif bracketCount < 0\n    call scala#ConditionalConfirm(\"6b\")\n    \" if the closing brace actually completes the braces entirely, then we\n    \" have to indent to line that started the whole thing\n    let completeLine = scala#LineCompletesBrackets('{', '}')\n    if completeLine != -1\n      call scala#ConditionalConfirm(\"8b\")\n      let prevCompleteLine = scala#GetLine(prevnonblank(completeLine - 1))\n      \" However, what actually started this part looks like it was a function\n      \" definition, so we need to indent to that line instead.  This is \n      \" actually pretty weak at the moment.\n      if prevCompleteLine =~ '=\\s*$'\n        call scala#ConditionalConfirm(\"9b\")\n        let ind = indent(prevnonblank(completeLine - 1))\n      else\n        call scala#ConditionalConfirm(\"10b\")\n        let ind = indent(completeLine)\n      endif\n    else\n      let lineCompletedBrackets = 1\n    endif\n  endif\n\n  if ind == originalIndentValue\n    let bracketCount = scala#CountBrackets(prevline, '(', ')')\n    if bracketCount > 0 || prevline =~ '.*(\\s*$'\n      call scala#ConditionalConfirm(\"5a\")\n      let ind = ind + &shiftwidth\n    elseif bracketCount < 0\n      call scala#ConditionalConfirm(\"6a\")\n      \" if the closing brace actually completes the braces entirely, then we\n      \" have to indent to line that started the whole thing\n      let completeLine = scala#LineCompletesBrackets('(', ')')\n      if completeLine != -1 && prevline !~ '^.*{\\s*$'\n        call scala#ConditionalConfirm(\"8a\")\n        let prevCompleteLine = scala#GetLine(prevnonblank(completeLine - 1))\n        \" However, what actually started this part looks like it was a function\n        \" definition, so we need to indent to that line instead.  This is \n        \" actually pretty weak at the moment.\n        if prevCompleteLine =~ '=\\s*$'\n          call scala#ConditionalConfirm(\"9a\")\n          let ind = indent(prevnonblank(completeLine - 1))\n        else\n          call scala#ConditionalConfirm(\"10a\")\n          let ind = indent(completeLine)\n        endif\n      else\n        \" This is the only part that's different from from the '{', '}' one below\n        \" Yup... some refactoring is necessary at some point.\n        let ind = ind + (bracketCount * &shiftwidth)\n        let lineCompletedBrackets = 1\n      endif\n    endif\n  endif\n\n  if curline =~ '^\\s*}\\?\\s*\\<else\\>\\%(\\s\\+\\<if\\>\\s*(.*)\\)\\?\\s*{\\?\\s*$' &&\n   \\ ! scala#LineIsCompleteIf(prevline) &&\n   \\ prevline !~ '^.*}\\s*$'\n    let ind = ind - &shiftwidth\n  endif\n\n  \" Subtract a 'shiftwidth' on '}' or html\n  let curCurlyCount = scala#CountCurlies(curline)\n  if curCurlyCount < 0\n    call scala#ConditionalConfirm(\"14a\")\n    let matchline = scala#CurlyMatcher()\n    return indent(matchline)\n  elseif curline =~ '^\\s*</[a-zA-Z][^>]*>'\n    call scala#ConditionalConfirm(\"14c\")\n    return ind - &shiftwidth\n  endif\n\n  let prevParenCount = scala#CountParens(prevline)\n  if prevline =~ '^\\s*\\<for\\>.*$' && prevParenCount > 0\n    call scala#ConditionalConfirm(\"15\")\n    let ind = indent(prevlnum) + 5\n  endif\n\n  let prevCurlyCount = scala#CountCurlies(prevline)\n  if prevCurlyCount == 0 && prevline =~ '^.*\\%(=>\\|⇒\\)\\s*$' && prevline !~ '^\\s*this\\s*:.*\\%(=>\\|⇒\\)\\s*$' && curline !~ '^\\s*\\<case\\>'\n    call scala#ConditionalConfirm(\"16\")\n    let ind = ind + &shiftwidth\n  endif\n\n  if ind == originalIndentValue && curline =~ '^\\s*\\<case\\>'\n    call scala#ConditionalConfirm(\"17\")\n    let parentCase = scala#IsParentCase()\n    if parentCase != -1\n      call scala#ConditionalConfirm(\"17a\")\n      return indent(parentCase)\n    endif\n  endif\n\n  if prevline =~ '^\\s*\\*/'\n   \\ || prevline =~ '*/\\s*$'\n    call scala#ConditionalConfirm(\"18\")\n    let ind = ind - 1\n  endif\n\n  if scala#LineEndsInIncomplete(curline)\n    call scala#ConditionalConfirm(\"19\")\n    return ind\n  endif\n\n  if scala#LineIsAClosingXML(prevline)\n    if scala#LineCompletesXML(prevlnum, prevline)\n      call scala#ConditionalConfirm(\"20a\")\n      return ind - &shiftwidth\n    else\n      call scala#ConditionalConfirm(\"20b\")\n      return ind\n    endif\n  endif\n\n  if ind == originalIndentValue\n    \"let indentMultiplier = scala#LineCompletesDefValr(prevlnum, prevline)\n    \"if indentMultiplier != 0\n    \"  call scala#ConditionalConfirm(\"19a\")\n    \"  let ind = ind - (indentMultiplier * &shiftwidth)\n    let defValrLine = scala#Test(prevlnum, prevline, '{', '}')\n    if defValrLine != -1\n      call scala#ConditionalConfirm(\"21a\")\n      let ind = indent(defValrLine)\n    elseif lineCompletedBrackets == 0\n      call scala#ConditionalConfirm(\"21b\")\n      if scala#GetLine(prevnonblank(prevlnum - 1)) =~ '^.*\\<else\\>\\s*\\%(//.*\\)\\?$'\n        call scala#ConditionalConfirm(\"21c\")\n        let ind = ind - &shiftwidth\n      elseif scala#LineCompletesIfElse(prevlnum, prevline)\n        call scala#ConditionalConfirm(\"21d\")\n        let ind = ind - &shiftwidth\n      elseif scala#CountParens(curline) < 0 && curline =~ '^\\s*)' && scala#GetLine(scala#GetLineThatMatchesBracket('(', ')')) =~ '.*(\\s*$'\n        \" Handles situations that look like this:\n        \" \n        \"   val a = func(\n        \"     10\n        \"   )\n        \"\n        \" or\n        \"\n        \"   val a = func(\n        \"     10\n        \"   ).somethingHere()\n        call scala#ConditionalConfirm(\"21e\")\n        let ind = ind - &shiftwidth\n      endif\n    endif\n  endif\n\n  call scala#ConditionalConfirm(\"returning \" . ind)\n\n  return ind\nendfunction\n\" vim:set ts=2 sts=2 sw=2:\n\" vim600:fdm=marker fdl=1 fdc=0:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/scss.vim",
    "content": "\" Vim indent file\n\" Language:\tSCSS\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 Jul 26\n\nif exists(\"b:did_indent\")\n  finish\nendif\n\nruntime! indent/css.vim\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/slim.vim",
    "content": "\" Vim indent file\n\" Language:\tSlim\n\nif exists(\"b:did_indent\")\n  finish\nendif\nruntime! indent/ruby.vim\nunlet! b:did_indent\nlet b:did_indent = 1\n\nsetlocal autoindent sw=2 et\nsetlocal indentexpr=GetSlimIndent()\nsetlocal indentkeys=o,O,*<Return>,},],0),!^F,=end,=else,=elsif,=rescue,=ensure,=when\n\n\" Only define the function once.\nif exists(\"*GetSlimIndent\")\n  finish\nendif\n\nlet s:attributes = '\\%({.\\{-\\}}\\|\\[.\\{-\\}\\]\\)'\nlet s:tag = '\\%([%.#][[:alnum:]_-]\\+\\|'.s:attributes.'\\)*[<>]*'\n\nif !exists('g:haml_self_closing_tags')\n  let g:haml_self_closing_tags = 'meta|link|img|hr|br'\nendif\n\nfunction! GetSlimIndent()\n  let lnum = prevnonblank(v:lnum-1)\n  if lnum == 0\n    return 0\n  endif\n  let line = substitute(getline(lnum),'\\s\\+$','','')\n  let cline = substitute(substitute(getline(v:lnum),'\\s\\+$','',''),'^\\s\\+','','')\n  let lastcol = strlen(line)\n  let line = substitute(line,'^\\s\\+','','')\n  let indent = indent(lnum)\n  let cindent = indent(v:lnum)\n  if cline =~# '\\v^-\\s*%(elsif|else|when)>'\n    let indent = cindent < indent ? cindent : indent - &sw\n  endif\n  let increase = indent + &sw\n  if indent == indent(lnum)\n    let indent = cindent <= indent ? -1 : increase\n  endif\n\n  let group = synIDattr(synID(lnum,lastcol,1),'name')\n\n  if line =~ '^doctype'\n    return indent\n  elseif line =~ '^/\\%(\\[[^]]*\\]\\)\\=$'\n    return increase\n  elseif line =~ '^[\\.#]'\n    return increase\n  elseif line =~? '^div'\n    return increase\n  elseif group == 'hamlFilter'\n    return increase\n  elseif line =~ '^'.s:tag.'[&!]\\=[=~-]\\s*\\%(\\%(if\\|else\\|elsif\\|unless\\|case\\|when\\|while\\|until\\|for\\|begin\\|module\\|class\\|def\\)\\>\\%(.*\\<end\\>\\)\\@!\\|.*do\\%(\\s*|[^|]*|\\)\\=\\s*$\\)'\n    return increase\n  elseif line =~ '^'.s:tag.'[&!]\\=[=~-].*,\\s*$'\n    return increase\n  elseif line == '-#'\n    return increase\n  elseif group =~? '\\v^(hamlSelfCloser)$' || line =~? '^\\v('.g:haml_self_closing_tags.')>'\n    return indent\n  elseif group =~? '\\v^(hamlTag|hamlAttributesDelimiter|hamlObjectDelimiter|hamlClass|hamlId|htmlTagName|htmlSpecialTagName)$'\n    return increase\n  elseif synIDattr(synID(v:lnum,1,1),'name') ==? 'hamlRubyFilter'\n    return GetRubyIndent()\n  else\n    return indent\n  endif\nendfunction\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/stylus.vim",
    "content": "\" Vim indent file\n\" Language: Stylus\n\" Maintainer: Marc Harter\n\" Last Change: 2010 May 21\n\" Based On: sass.vim from Tim Pope\n\"\nif exists(\"b:did_indent\")\n  finish\nendif\nunlet! b:did_indent\nlet b:did_indent = 1\n\nsetlocal indentexpr=GetStylusIndent()\nsetlocal indentkeys=o,O,*<Return>,},],0),!^F\nsetlocal formatoptions+=r\n\nif exists(\"*GetStylusIndent\")  \" only define once\n  finish\nendif\n\nfunction s:prevnonblanknoncomment(lnum)\n  let lnum = a:lnum\n  while lnum > 1\n    let lnum = prevnonblank(lnum)\n    let line = getline(lnum)\n    if line =~ '\\*/'\n      while lnum > 1 && line !~ '/\\*'\n        let lnum -= 1\n      endwhile\n      if line =~ '^\\s*/\\*'\n        let lnum -= 1\n      else\n        break\n      endif\n    else\n      break\n    endif\n  endwhile\n  return lnum\nendfunction\n\nfunction s:count_braces(lnum, count_open)\n  let n_open = 0\n  let n_close = 0\n  let line = getline(a:lnum)\n  let pattern = '[{}]'\n  let i = match(line, pattern)\n  while i != -1\n    if synIDattr(synID(a:lnum, i + 1, 0), 'name') !~ 'css\\%(Comment\\|StringQ\\{1,2}\\)'\n      if line[i] == '{'\n        let n_open += 1\n      elseif line[i] == '}'\n        if n_open > 0\n          let n_open -= 1\n        else\n          let n_close += 1\n        endif\n      endif\n    endif\n    let i = match(line, pattern, i + 1)\n  endwhile\n  return a:count_open ? n_open : n_close\nendfunction\n\n\" function CheckCSSIndent()\n\"   let line = getline(v:lnum)\n\"   if line =~ '^\\s*\\*'\n\"     return cindent(v:lnum)\n\"   endif\n\" \n\"   let pnum = s:prevnonblanknoncomment(v:lnum - 1)\n\"   if pnum == 0\n\"     return 0\n\"   endif\n\" \n\"   return indent(pnum) + s:count_braces(pnum, 1) * &sw\n\"         \\ - s:count_braces(v:lnum, 0) * &sw\n\" endfunction\n\nfunction! GetStylusIndent()\n  let line = getline(v:lnum)\n  if line =~ '^\\s*\\*'\n    return cindent(v:lnum)\n  endif\n\n  let pnum = s:prevnonblanknoncomment(v:lnum - 1)\n  if pnum == 0\n    return 0\n  endif\n\n  let lnum     = prevnonblank(v:lnum-1)\n  if lnum == 0\n    return 0\n  endif\n\n  let pline = getline(pnum)\n\n  if pline =~ '[}{]'\n    return indent(pnum) + s:count_braces(pnum, 1) * &sw - s:count_braces(v:lnum, 0) * &sw\n  endif\n\n  let line     = substitute(getline(lnum),'[\\s()]\\+$','','')  \" get last line strip ending whitespace\n  let cline    = substitute(substitute(getline(v:lnum),'\\s\\+$','',''),'^\\s\\+','','')  \" get current line, trimmed\n  let lastcol  = strlen(line)  \" get last col in prev line\n  let line     = substitute(line,'^\\s\\+','','')  \" then remove preceeding whitespace\n  let indent   = indent(lnum)  \" get indent on prev line\n  let cindent  = indent(v:lnum)  \" get indent on current line\n  let increase = indent + &sw  \" increase indent by the shift width\n  if indent   == indent(lnum)\n    let indent = cindent <= indent ? indent : increase\n  endif\n\n  let group = synIDattr(synID(lnum,lastcol,1),'name')\n\n  \" for debugging only\n  echo group\n\n  \" if group !~? 'css.*' && line =~? ')\\s*$' \" match user functions\n  \"   return increase\n  if group =~? '\\v^%(cssTagName|cssClassName|cssIdentifier|cssSelectorOp|cssSelectorOp2|cssBraces|cssAttributeSelector|cssPseudoClass|cssPseudoClassId|stylusId|stylusClass)$'\n    return increase\n  elseif (group == 'stylusUserFunction') && (indent(lnum) == '0') \" mixin definition\n    return increase\n  else\n    return indent\n  endif\nendfunction\n\n\" vim:set sw=2;\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/indent/tex.vim",
    "content": "\" LaTeX indent file (part of LaTeX Box)\n\" Maintainer: David Munger (mungerd@gmail.com)\n\nif exists(\"g:LatexBox_custom_indent\") && ! g:LatexBox_custom_indent\n\tfinish\nendif\nif exists(\"b:did_indent\")\n\tfinish\nendif\n\nlet b:did_indent = 1\n\nsetlocal indentexpr=LatexBox_TexIndent()\nsetlocal indentkeys=0=\\\\end,0=\\\\end{enumerate},0=\\\\end{itemize},0=\\\\end{description},0=\\\\right,0=\\\\item,0=\\\\),0=\\\\],0},o,O,0\\\\\n\nlet s:list_envs = ['itemize', 'enumerate', 'description']\n\" indent on \\left( and on \\(, but not on (\n\" indent on \\left[ and on \\[, but not on [\n\" indent on \\left\\{ and on {, but not on \\{\nlet s:open_pat = '\\\\\\@<!\\%(\\\\begin\\|\\\\left\\|\\\\(\\|\\\\\\[\\|{\\)'\nlet s:close_pat = '\\\\\\@<!\\%(\\\\end\\|\\\\right\\|\\\\)\\|\\\\\\]\\|}\\)'\nlet s:list_open_pat = '\\\\\\@<!\\\\begin{\\%(' . join(s:list_envs, '\\|') . '\\)}'\nlet s:list_close_pat\t= '\\\\\\@<!\\\\end{\\%(' . join(s:list_envs, '\\|') . '\\)}'\n\nfunction! s:CountMatches(str, pat)\n\treturn len(substitute(substitute(a:str, a:pat, \"\\n\", 'g'), \"[^\\n]\", '', 'g'))\nendfunction\n\n\n\" TexIndent {{{\nfunction! LatexBox_TexIndent()\n\n\tlet lnum_curr = v:lnum\n\tlet lnum_prev = prevnonblank(lnum_curr - 1)\n\n\tif lnum_prev == 0\n\t\treturn 0\n\tendif\n\n\tlet line_curr = getline(lnum_curr)\n\tlet line_prev = getline(lnum_prev)\n\n\t\" remove \\\\\n\tlet line_curr = substitute(line_curr, '\\\\\\\\', '', 'g')\n\tlet line_prev = substitute(line_prev, '\\\\\\\\', '', 'g')\n\n\t\" strip comments\n\tlet line_curr = substitute(line_curr, '\\\\\\@<!%.*$', '', 'g')\n\tlet line_prev = substitute(line_prev, '\\\\\\@<!%.*$', '', 'g')\n\n\t\" find unmatched opening patterns on previous line\n\tlet n = s:CountMatches(line_prev, s:open_pat)-s:CountMatches(line_prev, s:close_pat)\n\tlet n += s:CountMatches(line_prev, s:list_open_pat)-s:CountMatches(line_prev, s:list_close_pat)\n\n\t\" reduce indentation if current line starts with a closing pattern\n\tif line_curr =~ '^\\s*\\%(' . s:close_pat . '\\)'\n\t\tlet n -= 1\n\tendif\n\n\t\" compensate indentation if previous line starts with a closing pattern\n\tif line_prev =~ '^\\s*\\%(' . s:close_pat . '\\)'\n\t\tlet n += 1\n\tendif\n\n\t\" reduce indentation if current line starts with a closing list\n\tif line_curr =~ '^\\s*\\%(' . s:list_close_pat . '\\)'\n\t\tlet n -= 1\n\tendif\n\n\t\" compensate indentation if previous line starts with a closing list\n\tif line_prev =~ '^\\s*\\%(' . s:list_close_pat . '\\)'\n\t\tlet n += 1\n\tendif\n\n\t\" reduce indentation if previous line is \\begin{document}\n\tif line_prev =~ '\\\\begin\\s*{document}'\n\t\tlet n -= 1\n\tendif\n\n\t\" less shift for lines starting with \\item\n\tlet item_here =  line_curr =~ '^\\s*\\\\item'\n\tlet item_above = line_prev =~ '^\\s*\\\\item'\n\tif !item_here && item_above\n\t\tlet n += 1\n\telseif item_here && !item_above\n\t\tlet n -= 1\n\tendif\n\n\treturn indent(lnum_prev) + n * &sw\nendfunction\n\" }}}\n\n\" vim:fdm=marker:ff=unix:noet:ts=4:sw=4\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/spec/build_spec.rb",
    "content": "$plugin_path = File.expand_path('../..', __FILE__)\n\ndescribe 'build script' do\n  it 'should run and return success code' do\n    Dir.chdir($plugin_path)\n    expect(system('bash ./build')).to be_true\n  end\nend\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/spec/loading_spec.rb",
    "content": "require 'spec_helper'\nrequire 'timeout'\n\ndescribe \"My Vim plugin\" do\n\n  extensions = `cat ftdetect/polyglot.vim | grep '^au' | tr \"\\t\" ' ' | cut -d ' ' -f 3 | grep -v / | grep -v '^\\*$' | grep -v '^$'`.strip\n\n  extensions.gsub!(/\\[(.).+\\]/) { $1 }.gsub!('*', 'test')\n\n  extensions = extensions.split(/[\\n,]/)\n\n  extensions.each do |ext|\n    it \"should parse #{ext} file\" do\n      Timeout::timeout(5) do\n        write_file \"#{ext}\", \"\"\n        vim.edit \"#{ext}\"\n        vim.insert \"sample\"\n        vim.write\n      end\n    end\n  end\nend\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/spec/spec_helper.rb",
    "content": "require 'vimrunner'\nrequire 'vimrunner/rspec'\n\n$plugin_path = File.expand_path('../..', __FILE__)\n\nVimrunner::RSpec.configure do |config|\n  # Use a single Vim instance for the test suite. Set to false to use an\n  # instance per test (slower, but can be easier to manage).\n  config.reuse_server = !ENV['REUSE_SERVER'].nil?\n\n  # Decide how to start a Vim instance. In this block, an instance should be\n  # spawned and set up with anything project-specific.\n  config.start_vim do\n    vim = Vimrunner.start\n\n    # Setup your plugin in the Vim instance\n    vim.add_plugin($plugin_path)\n\n    # The returned value is the Client available in the tests.\n    vim\n  end\nend\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/arduino.vim",
    "content": "\" Vim syntax file\n\" Language:    Arduino\n\" Maintainer:  Sudar <sudar@sudarmuthu.com>\n\" Original Author:  Johannes Hoff <johannes@johanneshoff.com>\n\" Last Change: 19 February 2013\n\" License:     VIM license (:help license, replace vim by arduino.vim)\n\n\" Syntax highlighting like in the Arduino IDE\n\" Automatically generated by the script available at\n\"    https://bitbucket.org/johannes/arduino-vim-syntax\n\" Using keywords from <arduino>/lib/keywords.txt\n\" From version: \n\n\" Thanks to original author Johannes Hoff and Rik, Erik Nomitch, Adam Obeng and Graeme Cross for helpful feedback!\n\n\" For version 5.x: Clear all syntax items\n\" For version 6.x: Quit when a syntax file was already loaded\nif version < 600\n  syntax clear\nelseif exists(\"b:current_syntax\")\n  finish\nendif\n\n\" Read the C syntax to start with\nif version < 600\n  so <sfile>:p:h/cpp.vim\nelse\n  runtime! syntax/cpp.vim\nendif\n\nsyn keyword arduinoConstant  BIN CHANGE DEC DEFAULT EXTERNAL FALLING HALF_PI HEX\nsyn keyword arduinoConstant  HIGH INPUT INPUT_PULLUP INTERNAL INTERNAL1V1\nsyn keyword arduinoConstant  INTERNAL2V56 LOW LSBFIRST MSBFIRST OCT OUTPUT PI\nsyn keyword arduinoConstant  RISING TWO_PI\n\nsyn keyword arduinoFunc      analogRead analogReference analogWrite\nsyn keyword arduinoFunc      attachInterrupt bit bitClear bitRead bitSet\nsyn keyword arduinoFunc      bitWrite delay delayMicroseconds detachInterrupt\nsyn keyword arduinoFunc      digitalRead digitalWrite highByte interrupts\nsyn keyword arduinoFunc      lowByte micros millis noInterrupts noTone pinMode\nsyn keyword arduinoFunc      pulseIn shiftIn shiftOut tone\n\nsyn keyword arduinoMethod    available begin end find findUntil flush loop\nsyn keyword arduinoMethod    parseFloat parseInt peek print println read\nsyn keyword arduinoMethod    readBytes readBytesUntil setTimeout setup\n\nsyn keyword arduinoModule    Serial Serial1 Serial2 Serial3\n\nsyn keyword arduinoStdFunc   abs acos asin atan atan2 ceil constrain cos degrees\nsyn keyword arduinoStdFunc   exp floor log map max min radians random randomSeed\nsyn keyword arduinoStdFunc   round sin sq sqrt tan\n\nsyn keyword arduinoType      boolean byte null String word\n\nhi def link arduinoType Type\nhi def link arduinoConstant Constant\nhi def link arduinoStdFunc Function\nhi def link arduinoFunc Function\nhi def link arduinoMethod Function\nhi def link arduinoModule Identifier\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/c.vim",
    "content": "\" Vim syntax file\n\" Language:\tC\n\" Maintainer:\tBram Moolenaar <Bram@vim.org>\n\" Last Change:\t2013 Jul 05\n\n\" Quit when a (custom) syntax file was already loaded\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nlet s:cpo_save = &cpo\nset cpo&vim\n\nlet s:ft = matchstr(&ft, '^\\([^.]\\)\\+')\n\n\" A bunch of useful C keywords\nsyn keyword\tcStatement\tgoto break return continue asm\nsyn keyword\tcLabel\t\tcase default\nsyn keyword\tcConditional\tif else switch\nsyn keyword\tcRepeat\t\twhile for do\n\nsyn keyword\tcTodo\t\tcontained TODO FIXME XXX\n\n\" It's easy to accidentally add a space after a backslash that was intended\n\" for line continuation.  Some compilers allow it, which makes it\n\" unpredictable and should be avoided.\nsyn match\tcBadContinuation contained \"\\\\\\s\\+$\"\n\n\" cCommentGroup allows adding matches for special things in comments\nsyn cluster\tcCommentGroup\tcontains=cTodo,cBadContinuation\n\n\" String and Character constants\n\" Highlight special characters (those which have a backslash) differently\nsyn match\tcSpecial\tdisplay contained \"\\\\\\(x\\x\\+\\|\\o\\{1,3}\\|.\\|$\\)\"\nif !exists(\"c_no_utf\")\n  syn match\tcSpecial\tdisplay contained \"\\\\\\(u\\x\\{4}\\|U\\x\\{8}\\)\"\nendif\nif exists(\"c_no_cformat\")\n  syn region\tcString\t\tstart=+L\\=\"+ skip=+\\\\\\\\\\|\\\\\"+ end=+\"+ contains=cSpecial,@Spell extend\n  \" cCppString: same as cString, but ends at end of line\n  if !exists(\"cpp_no_cpp11\") \" ISO C++11\n    syn region cCppString\tstart=+\\(L\\|u\\|u8\\|U\\|R\\|LR\\|u8R\\|uR\\|UR\\)\\=\"+ skip=+\\\\\\\\\\|\\\\\"\\|\\\\$+ excludenl end=+\"+ end='$' contains=cSpecial,cFormat,@Spell\n  else\n    syn region cCppString\tstart=+L\\=\"+ skip=+\\\\\\\\\\|\\\\\"\\|\\\\$+ excludenl end=+\"+ end='$' contains=cSpecial,cFormat,@Spell\n  endif\n  syn region\tcCppOut2\tcontained start=\"0\" end=\"^\\s*\\(%:\\|#\\)\\s*\\(endif\\>\\|else\\>\\|elif\\>\\)\" contains=cSpaceError,cCppSkip\n  syn region\tcCppSkip\tcontained start=\"^\\s*\\(%:\\|#\\)\\s*\\(if\\>\\|ifdef\\>\\|ifndef\\>\\)\" skip=\"\\\\$\" end=\"^\\s*\\(%:\\|#\\)\\s*endif\\>\" contains=cSpaceError,cCppSkip\nelse\n  if !exists(\"c_no_c99\") \" ISO C99\n    syn match\tcFormat\t\tdisplay \"%\\(\\d\\+\\$\\)\\=[-+' #0*]*\\(\\d*\\|\\*\\|\\*\\d\\+\\$\\)\\(\\.\\(\\d*\\|\\*\\|\\*\\d\\+\\$\\)\\)\\=\\([hlLjzt]\\|ll\\|hh\\)\\=\\([aAbdiuoxXDOUfFeEgGcCsSpn]\\|\\[\\^\\=.[^]]*\\]\\)\" contained\n  else\n    syn match\tcFormat\t\tdisplay \"%\\(\\d\\+\\$\\)\\=[-+' #0*]*\\(\\d*\\|\\*\\|\\*\\d\\+\\$\\)\\(\\.\\(\\d*\\|\\*\\|\\*\\d\\+\\$\\)\\)\\=\\([hlL]\\|ll\\)\\=\\([bdiuoxXDOUfeEgGcCsSpn]\\|\\[\\^\\=.[^]]*\\]\\)\" contained\n  endif\n  syn match\tcFormat\t\tdisplay \"%%\" contained\n  syn region\tcString\t\tstart=+L\\=\"+ skip=+\\\\\\\\\\|\\\\\"+ end=+\"+ contains=cSpecial,cFormat,@Spell extend\n  \" cCppString: same as cString, but ends at end of line\n  syn region\tcCppString\tstart=+L\\=\"+ skip=+\\\\\\\\\\|\\\\\"\\|\\\\$+ excludenl end=+\"+ end='$' contains=cSpecial,cFormat,@Spell\nendif\n\nsyn match\tcCharacter\t\"L\\='[^\\\\]'\"\nsyn match\tcCharacter\t\"L'[^']*'\" contains=cSpecial\nif exists(\"c_gnu\")\n  syn match\tcSpecialError\t\"L\\='\\\\[^'\\\"?\\\\abefnrtv]'\"\n  syn match\tcSpecialCharacter \"L\\='\\\\['\\\"?\\\\abefnrtv]'\"\nelse\n  syn match\tcSpecialError\t\"L\\='\\\\[^'\\\"?\\\\abfnrtv]'\"\n  syn match\tcSpecialCharacter \"L\\='\\\\['\\\"?\\\\abfnrtv]'\"\nendif\nsyn match\tcSpecialCharacter display \"L\\='\\\\\\o\\{1,3}'\"\nsyn match\tcSpecialCharacter display \"'\\\\x\\x\\{1,2}'\"\nsyn match\tcSpecialCharacter display \"L'\\\\x\\x\\+'\"\n\nif !exists(\"c_no_c11\") \" ISO C11\n  if exists(\"c_no_cformat\")\n    syn region\tcString\t\tstart=+\\%(U\\|u8\\=\\)\"+ skip=+\\\\\\\\\\|\\\\\"+ end=+\"+ contains=cSpecial,@Spell extend\n  else\n    syn region\tcString\t\tstart=+\\%(U\\|u8\\=\\)\"+ skip=+\\\\\\\\\\|\\\\\"+ end=+\"+ contains=cSpecial,cFormat,@Spell extend\n  endif\n  syn match\tcCharacter\t\"[Uu]'[^\\\\]'\"\n  syn match\tcCharacter\t\"[Uu]'[^']*'\" contains=cSpecial\n  if exists(\"c_gnu\")\n    syn match\tcSpecialError\t\"[Uu]'\\\\[^'\\\"?\\\\abefnrtv]'\"\n    syn match\tcSpecialCharacter \"[Uu]'\\\\['\\\"?\\\\abefnrtv]'\"\n  else\n    syn match\tcSpecialError\t\"[Uu]'\\\\[^'\\\"?\\\\abfnrtv]'\"\n    syn match\tcSpecialCharacter \"[Uu]'\\\\['\\\"?\\\\abfnrtv]'\"\n  endif\n  syn match\tcSpecialCharacter display \"[Uu]'\\\\\\o\\{1,3}'\"\n  syn match\tcSpecialCharacter display \"[Uu]'\\\\x\\x\\+'\"\nendif\n\n\"when wanted, highlight trailing white space\nif exists(\"c_space_errors\")\n  if !exists(\"c_no_trail_space_error\")\n    syn match\tcSpaceError\tdisplay excludenl \"\\s\\+$\"\n  endif\n  if !exists(\"c_no_tab_space_error\")\n    syn match\tcSpaceError\tdisplay \" \\+\\t\"me=e-1\n  endif\nendif\n\n\" This should be before cErrInParen to avoid problems with #define ({ xxx })\nif exists(\"c_curly_error\")\n  syn match cCurlyError \"}\"\n  syn region\tcBlock\t\tstart=\"{\" end=\"}\" contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell fold\nelse\n  syn region\tcBlock\t\tstart=\"{\" end=\"}\" transparent fold\nendif\n\n\"catch errors caused by wrong parenthesis and brackets\n\" also accept <% for {, %> for }, <: for [ and :> for ] (C99)\n\" But avoid matching <::.\nsyn cluster\tcParenGroup\tcontains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserLabel,cBitField,cOctalZero,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom\nif exists(\"c_no_curly_error\")\n  if s:ft ==# 'cpp' && !exists(\"cpp_no_cpp11\")\n    syn region\tcParen\t\ttransparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell\n    \" cCppParen: same as cParen but ends at end-of-line; used in cDefine\n    syn region\tcCppParen\ttransparent start='(' skip='\\\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell\n    syn match\tcParenError\tdisplay \")\"\n    syn match\tcErrInParen\tdisplay contained \"^^<%\\|^%>\"\n  else\n    syn region\tcParen\t\ttransparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cCppString,@Spell\n    \" cCppParen: same as cParen but ends at end-of-line; used in cDefine\n    syn region\tcCppParen\ttransparent start='(' skip='\\\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell\n    syn match\tcParenError\tdisplay \")\"\n    syn match\tcErrInParen\tdisplay contained \"^[{}]\\|^<%\\|^%>\"\n  endif\nelseif exists(\"c_no_bracket_error\")\n  if s:ft ==# 'cpp' && !exists(\"cpp_no_cpp11\")\n    syn region\tcParen\t\ttransparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell\n    \" cCppParen: same as cParen but ends at end-of-line; used in cDefine\n    syn region\tcCppParen\ttransparent start='(' skip='\\\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell\n    syn match\tcParenError\tdisplay \")\"\n    syn match\tcErrInParen\tdisplay contained \"<%\\|%>\"\n  else\n    syn region\tcParen\t\ttransparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cCppString,@Spell\n    \" cCppParen: same as cParen but ends at end-of-line; used in cDefine\n    syn region\tcCppParen\ttransparent start='(' skip='\\\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell\n    syn match\tcParenError\tdisplay \")\"\n    syn match\tcErrInParen\tdisplay contained \"[{}]\\|<%\\|%>\"\n  endif\nelse\n  if s:ft ==# 'cpp' && !exists(\"cpp_no_cpp11\")\n    syn region\tcParen\t\ttransparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell\n    \" cCppParen: same as cParen but ends at end-of-line; used in cDefine\n    syn region\tcCppParen\ttransparent start='(' skip='\\\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell\n    syn match\tcParenError\tdisplay \"[\\])]\"\n    syn match\tcErrInParen\tdisplay contained \"<%\\|%>\"\n    syn region\tcBracket\ttransparent start='\\[\\|<::\\@!' end=']\\|:>' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString,@Spell\n  else\n    syn region\tcParen\t\ttransparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell\n    \" cCppParen: same as cParen but ends at end-of-line; used in cDefine\n    syn region\tcCppParen\ttransparent start='(' skip='\\\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell\n    syn match\tcParenError\tdisplay \"[\\])]\"\n    syn match\tcErrInParen\tdisplay contained \"[\\]{}]\\|<%\\|%>\"\n    syn region\tcBracket\ttransparent start='\\[\\|<::\\@!' end=']\\|:>' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString,@Spell\n  endif\n  \" cCppBracket: same as cParen but ends at end-of-line; used in cDefine\n  syn region\tcCppBracket\ttransparent start='\\[\\|<::\\@!' skip='\\\\$' excludenl end=']\\|:>' end='$' contained contains=ALLBUT,@cParenGroup,cErrInParen,cParen,cBracket,cString,@Spell\n  syn match\tcErrInBracket\tdisplay contained \"[);{}]\\|<%\\|%>\"\nendif\n\nif s:ft ==# 'c' || exists(\"cpp_no_cpp11\")\n  syn region\tcBadBlock\tkeepend start=\"{\" end=\"}\" contained containedin=cParen,cBracket,cBadBlock transparent fold\nendif\n\n\"integer number, or floating point number without a dot and with \"f\".\nsyn case ignore\nsyn match\tcNumbers\tdisplay transparent \"\\<\\d\\|\\.\\d\" contains=cNumber,cFloat,cOctalError,cOctal\n\" Same, but without octal error (for comments)\nsyn match\tcNumbersCom\tdisplay contained transparent \"\\<\\d\\|\\.\\d\" contains=cNumber,cFloat,cOctal\nsyn match\tcNumber\t\tdisplay contained \"\\d\\+\\(u\\=l\\{0,2}\\|ll\\=u\\)\\>\"\n\"hex number\nsyn match\tcNumber\t\tdisplay contained \"0x\\x\\+\\(u\\=l\\{0,2}\\|ll\\=u\\)\\>\"\n\" Flag the first zero of an octal number as something special\nsyn match\tcOctal\t\tdisplay contained \"0\\o\\+\\(u\\=l\\{0,2}\\|ll\\=u\\)\\>\" contains=cOctalZero\nsyn match\tcOctalZero\tdisplay contained \"\\<0\"\nsyn match\tcFloat\t\tdisplay contained \"\\d\\+f\"\n\"floating point number, with dot, optional exponent\nsyn match\tcFloat\t\tdisplay contained \"\\d\\+\\.\\d*\\(e[-+]\\=\\d\\+\\)\\=[fl]\\=\"\n\"floating point number, starting with a dot, optional exponent\nsyn match\tcFloat\t\tdisplay contained \"\\.\\d\\+\\(e[-+]\\=\\d\\+\\)\\=[fl]\\=\\>\"\n\"floating point number, without dot, with exponent\nsyn match\tcFloat\t\tdisplay contained \"\\d\\+e[-+]\\=\\d\\+[fl]\\=\\>\"\nif !exists(\"c_no_c99\")\n  \"hexadecimal floating point number, optional leading digits, with dot, with exponent\n  syn match\tcFloat\t\tdisplay contained \"0x\\x*\\.\\x\\+p[-+]\\=\\d\\+[fl]\\=\\>\"\n  \"hexadecimal floating point number, with leading digits, optional dot, with exponent\n  syn match\tcFloat\t\tdisplay contained \"0x\\x\\+\\.\\=p[-+]\\=\\d\\+[fl]\\=\\>\"\nendif\n\n\" flag an octal number with wrong digits\nsyn match\tcOctalError\tdisplay contained \"0\\o*[89]\\d*\"\nsyn case match\n\nif exists(\"c_comment_strings\")\n  \" A comment can contain cString, cCharacter and cNumber.\n  \" But a \"*/\" inside a cString in a cComment DOES end the comment!  So we\n  \" need to use a special type of cString: cCommentString, which also ends on\n  \" \"*/\", and sees a \"*\" at the start of the line as comment again.\n  \" Unfortunately this doesn't very well work for // type of comments :-(\n  syn match\tcCommentSkip\tcontained \"^\\s*\\*\\($\\|\\s\\+\\)\"\n  syn region cCommentString\tcontained start=+L\\=\\\\\\@<!\"+ skip=+\\\\\\\\\\|\\\\\"+ end=+\"+ end=+\\*/+me=s-1 contains=cSpecial,cCommentSkip\n  syn region cComment2String\tcontained start=+L\\=\\\\\\@<!\"+ skip=+\\\\\\\\\\|\\\\\"+ end=+\"+ end=\"$\" contains=cSpecial\n  syn region  cCommentL\tstart=\"//\" skip=\"\\\\$\" end=\"$\" keepend contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError,@Spell\n  if exists(\"c_no_comment_fold\")\n    \" Use \"extend\" here to have preprocessor lines not terminate halfway a\n    \" comment.\n    syn region cComment\tmatchgroup=cCommentStart start=\"/\\*\" end=\"\\*/\" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell extend\n  else\n    syn region cComment\tmatchgroup=cCommentStart start=\"/\\*\" end=\"\\*/\" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell fold extend\n  endif\nelse\n  syn region\tcCommentL\tstart=\"//\" skip=\"\\\\$\" end=\"$\" keepend contains=@cCommentGroup,cSpaceError,@Spell\n  if exists(\"c_no_comment_fold\")\n    syn region\tcComment\tmatchgroup=cCommentStart start=\"/\\*\" end=\"\\*/\" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell extend\n  else\n    syn region\tcComment\tmatchgroup=cCommentStart start=\"/\\*\" end=\"\\*/\" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell fold extend\n  endif\nendif\n\" keep a // comment separately, it terminates a preproc. conditional\nsyn match\tcCommentError\tdisplay \"\\*/\"\nsyn match\tcCommentStartError display \"/\\*\"me=e-1 contained\n\nsyn keyword\tcOperator\tsizeof\nif exists(\"c_gnu\")\n  syn keyword\tcStatement\t__asm__\n  syn keyword\tcOperator\ttypeof __real__ __imag__\nendif\nsyn keyword\tcType\t\tint long short char void\nsyn keyword\tcType\t\tsigned unsigned float double\nif !exists(\"c_no_ansi\") || exists(\"c_ansi_typedefs\")\n  syn keyword   cType\t\tsize_t ssize_t off_t wchar_t ptrdiff_t sig_atomic_t fpos_t\n  syn keyword   cType\t\tclock_t time_t va_list jmp_buf FILE DIR div_t ldiv_t\n  syn keyword   cType\t\tmbstate_t wctrans_t wint_t wctype_t\nendif\nif !exists(\"c_no_c99\") \" ISO C99\n  syn keyword\tcType\t\t_Bool bool _Complex complex _Imaginary imaginary\n  syn keyword\tcType\t\tint8_t int16_t int32_t int64_t\n  syn keyword\tcType\t\tuint8_t uint16_t uint32_t uint64_t\n  syn keyword\tcType\t\tint_least8_t int_least16_t int_least32_t int_least64_t\n  syn keyword\tcType\t\tuint_least8_t uint_least16_t uint_least32_t uint_least64_t\n  syn keyword\tcType\t\tint_fast8_t int_fast16_t int_fast32_t int_fast64_t\n  syn keyword\tcType\t\tuint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t\n  syn keyword\tcType\t\tintptr_t uintptr_t\n  syn keyword\tcType\t\tintmax_t uintmax_t\nendif\nif exists(\"c_gnu\")\n  syn keyword\tcType\t\t__label__ __complex__ __volatile__\nendif\n\nsyn keyword\tcStructure\tstruct union enum typedef\nsyn keyword\tcStorageClass\tstatic register auto volatile extern const\nif exists(\"c_gnu\")\n  syn keyword\tcStorageClass\tinline __attribute__\nendif\nif !exists(\"c_no_c99\")\n  syn keyword\tcStorageClass\tinline restrict\nendif\nif !exists(\"c_no_c11\")\n  syn keyword\tcStorageClass\t_Alignas alignas\n  syn keyword\tcOperator\t_Alignof alignof\n  syn keyword\tcStorageClass\t_Atomic\n  syn keyword\tcOperator\t_Generic\n  syn keyword\tcStorageClass\t_Noreturn noreturn\n  syn keyword\tcOperator\t_Static_assert static_assert\n  syn keyword\tcStorageClass\t_Thread_local thread_local\n  syn keyword   cType\t\tchar16_t char32_t\nendif\n\nif !exists(\"c_no_ansi\") || exists(\"c_ansi_constants\") || exists(\"c_gnu\")\n  if exists(\"c_gnu\")\n    syn keyword cConstant __GNUC__ __FUNCTION__ __PRETTY_FUNCTION__ __func__\n  endif\n  syn keyword cConstant __LINE__ __FILE__ __DATE__ __TIME__ __STDC__\n  syn keyword cConstant __STDC_VERSION__\n  syn keyword cConstant CHAR_BIT MB_LEN_MAX MB_CUR_MAX\n  syn keyword cConstant UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX\n  syn keyword cConstant CHAR_MIN INT_MIN LONG_MIN SHRT_MIN\n  syn keyword cConstant CHAR_MAX INT_MAX LONG_MAX SHRT_MAX\n  syn keyword cConstant SCHAR_MIN SINT_MIN SLONG_MIN SSHRT_MIN\n  syn keyword cConstant SCHAR_MAX SINT_MAX SLONG_MAX SSHRT_MAX\n  if !exists(\"c_no_c99\")\n    syn keyword cConstant __func__\n    syn keyword cConstant LLONG_MIN LLONG_MAX ULLONG_MAX\n    syn keyword cConstant INT8_MIN INT16_MIN INT32_MIN INT64_MIN\n    syn keyword cConstant INT8_MAX INT16_MAX INT32_MAX INT64_MAX\n    syn keyword cConstant UINT8_MAX UINT16_MAX UINT32_MAX UINT64_MAX\n    syn keyword cConstant INT_LEAST8_MIN INT_LEAST16_MIN INT_LEAST32_MIN INT_LEAST64_MIN\n    syn keyword cConstant INT_LEAST8_MAX INT_LEAST16_MAX INT_LEAST32_MAX INT_LEAST64_MAX\n    syn keyword cConstant UINT_LEAST8_MAX UINT_LEAST16_MAX UINT_LEAST32_MAX UINT_LEAST64_MAX\n    syn keyword cConstant INT_FAST8_MIN INT_FAST16_MIN INT_FAST32_MIN INT_FAST64_MIN\n    syn keyword cConstant INT_FAST8_MAX INT_FAST16_MAX INT_FAST32_MAX INT_FAST64_MAX\n    syn keyword cConstant UINT_FAST8_MAX UINT_FAST16_MAX UINT_FAST32_MAX UINT_FAST64_MAX\n    syn keyword cConstant INTPTR_MIN INTPTR_MAX UINTPTR_MAX\n    syn keyword cConstant INTMAX_MIN INTMAX_MAX UINTMAX_MAX\n    syn keyword cConstant PTRDIFF_MIN PTRDIFF_MAX SIG_ATOMIC_MIN SIG_ATOMIC_MAX\n    syn keyword cConstant SIZE_MAX WCHAR_MIN WCHAR_MAX WINT_MIN WINT_MAX\n  endif\n  syn keyword cConstant FLT_RADIX FLT_ROUNDS\n  syn keyword cConstant FLT_DIG FLT_MANT_DIG FLT_EPSILON\n  syn keyword cConstant DBL_DIG DBL_MANT_DIG DBL_EPSILON\n  syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON\n  syn keyword cConstant FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP\n  syn keyword cConstant FLT_MIN_10_EXP FLT_MAX_10_EXP\n  syn keyword cConstant DBL_MIN DBL_MAX DBL_MIN_EXP DBL_MAX_EXP\n  syn keyword cConstant DBL_MIN_10_EXP DBL_MAX_10_EXP\n  syn keyword cConstant LDBL_MIN LDBL_MAX LDBL_MIN_EXP LDBL_MAX_EXP\n  syn keyword cConstant LDBL_MIN_10_EXP LDBL_MAX_10_EXP\n  syn keyword cConstant HUGE_VAL CLOCKS_PER_SEC NULL\n  syn keyword cConstant LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY\n  syn keyword cConstant LC_NUMERIC LC_TIME\n  syn keyword cConstant SIG_DFL SIG_ERR SIG_IGN\n  syn keyword cConstant SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM\n  \" Add POSIX signals as well...\n  syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP\n  syn keyword cConstant SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV\n  syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU\n  syn keyword cConstant SIGUSR1 SIGUSR2\n  syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF\n  syn keyword cConstant FOPEN_MAX FILENAME_MAX L_tmpnam\n  syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET\n  syn keyword cConstant TMP_MAX stderr stdin stdout\n  syn keyword cConstant EXIT_FAILURE EXIT_SUCCESS RAND_MAX\n  \" Add POSIX errors as well\n  syn keyword cConstant E2BIG EACCES EAGAIN EBADF EBADMSG EBUSY\n  syn keyword cConstant ECANCELED ECHILD EDEADLK EDOM EEXIST EFAULT\n  syn keyword cConstant EFBIG EILSEQ EINPROGRESS EINTR EINVAL EIO EISDIR\n  syn keyword cConstant EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENFILE ENODEV\n  syn keyword cConstant ENOENT ENOEXEC ENOLCK ENOMEM ENOSPC ENOSYS\n  syn keyword cConstant ENOTDIR ENOTEMPTY ENOTSUP ENOTTY ENXIO EPERM\n  syn keyword cConstant EPIPE ERANGE EROFS ESPIPE ESRCH ETIMEDOUT EXDEV\n  \" math.h\n  syn keyword cConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4\n  syn keyword cConstant M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2\nendif\nif !exists(\"c_no_c99\") \" ISO C99\n  syn keyword cConstant true false\nendif\n\n\" Accept %: for # (C99)\nsyn region\tcPreCondit\tstart=\"^\\s*\\(%:\\|#\\)\\s*\\(if\\|ifdef\\|ifndef\\|elif\\)\\>\" skip=\"\\\\$\" end=\"$\" keepend contains=cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError\nsyn match\tcPreConditMatch\tdisplay \"^\\s*\\(%:\\|#\\)\\s*\\(else\\|endif\\)\\>\"\nif !exists(\"c_no_if0\")\n  syn cluster\tcCppOutInGroup\tcontains=cCppInIf,cCppInElse,cCppInElse2,cCppOutIf,cCppOutIf2,cCppOutElse,cCppInSkip,cCppOutSkip\n  syn region\tcCppOutWrapper\tstart=\"^\\s*\\(%:\\|#\\)\\s*if\\s\\+0\\+\\s*\\($\\|//\\|/\\*\\|&\\)\" end=\".\\@=\\|$\" contains=cCppOutIf,cCppOutElse,@NoSpell fold\n  syn region\tcCppOutIf\tcontained start=\"0\\+\" matchgroup=cCppOutWrapper end=\"^\\s*\\(%:\\|#\\)\\s*endif\\>\" contains=cCppOutIf2,cCppOutElse\n  if !exists(\"c_no_if0_fold\")\n    syn region\tcCppOutIf2\tcontained matchgroup=cCppOutWrapper start=\"0\\+\" end=\"^\\s*\\(%:\\|#\\)\\s*\\(else\\>\\|elif\\s\\+\\(0\\+\\s*\\($\\|//\\|/\\*\\|&\\)\\)\\@!\\|endif\\>\\)\"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell fold\n  else\n    syn region\tcCppOutIf2\tcontained matchgroup=cCppOutWrapper start=\"0\\+\" end=\"^\\s*\\(%:\\|#\\)\\s*\\(else\\>\\|elif\\s\\+\\(0\\+\\s*\\($\\|//\\|/\\*\\|&\\)\\)\\@!\\|endif\\>\\)\"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell\n  endif\n  syn region\tcCppOutElse\tcontained matchgroup=cCppOutWrapper start=\"^\\s*\\(%:\\|#\\)\\s*\\(else\\|elif\\)\" end=\"^\\s*\\(%:\\|#\\)\\s*endif\\>\"me=s-1 contains=TOP,cPreCondit\n  syn region\tcCppInWrapper\tstart=\"^\\s*\\(%:\\|#\\)\\s*if\\s\\+0*[1-9]\\d*\\s*\\($\\|//\\|/\\*\\||\\)\" end=\".\\@=\\|$\" contains=cCppInIf,cCppInElse fold\n  syn region\tcCppInIf\tcontained matchgroup=cCppInWrapper start=\"\\d\\+\" end=\"^\\s*\\(%:\\|#\\)\\s*endif\\>\" contains=TOP,cPreCondit\n  if !exists(\"c_no_if0_fold\")\n    syn region\tcCppInElse\tcontained start=\"^\\s*\\(%:\\|#\\)\\s*\\(else\\>\\|elif\\s\\+\\(0*[1-9]\\d*\\s*\\($\\|//\\|/\\*\\||\\)\\)\\@!\\)\" end=\".\\@=\\|$\" containedin=cCppInIf contains=cCppInElse2 fold\n  else\n    syn region\tcCppInElse\tcontained start=\"^\\s*\\(%:\\|#\\)\\s*\\(else\\>\\|elif\\s\\+\\(0*[1-9]\\d*\\s*\\($\\|//\\|/\\*\\||\\)\\)\\@!\\)\" end=\".\\@=\\|$\" containedin=cCppInIf contains=cCppInElse2\n  endif\n  syn region\tcCppInElse2\tcontained matchgroup=cCppInWrapper start=\"^\\s*\\(%:\\|#\\)\\s*\\(else\\|elif\\)\\([^/]\\|/[^/*]\\)*\" end=\"^\\s*\\(%:\\|#\\)\\s*endif\\>\"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell\n  syn region\tcCppOutSkip\tcontained start=\"^\\s*\\(%:\\|#\\)\\s*\\(if\\>\\|ifdef\\>\\|ifndef\\>\\)\" skip=\"\\\\$\" end=\"^\\s*\\(%:\\|#\\)\\s*endif\\>\" contains=cSpaceError,cCppOutSkip\n  syn region\tcCppInSkip\tcontained matchgroup=cCppInWrapper start=\"^\\s*\\(%:\\|#\\)\\s*\\(if\\s\\+\\(\\d\\+\\s*\\($\\|//\\|/\\*\\||\\|&\\)\\)\\@!\\|ifdef\\>\\|ifndef\\>\\)\" skip=\"\\\\$\" end=\"^\\s*\\(%:\\|#\\)\\s*endif\\>\" containedin=cCppOutElse,cCppInIf,cCppInSkip contains=TOP,cPreProc\nendif\nsyn region\tcIncluded\tdisplay contained start=+\"+ skip=+\\\\\\\\\\|\\\\\"+ end=+\"+\nsyn match\tcIncluded\tdisplay contained \"<[^>]*>\"\nsyn match\tcInclude\tdisplay \"^\\s*\\(%:\\|#\\)\\s*include\\>\\s*[\"<]\" contains=cIncluded\n\"syn match cLineSkip\t\"\\\\$\"\nsyn cluster\tcPreProcGroup\tcontains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti,cBadBlock\nsyn region\tcDefine\t\tstart=\"^\\s*\\(%:\\|#\\)\\s*\\(define\\|undef\\)\\>\" skip=\"\\\\$\" end=\"$\" keepend contains=ALLBUT,@cPreProcGroup,@Spell\nsyn region\tcPreProc\tstart=\"^\\s*\\(%:\\|#\\)\\s*\\(pragma\\>\\|line\\>\\|warning\\>\\|warn\\>\\|error\\>\\)\" skip=\"\\\\$\" end=\"$\" keepend contains=ALLBUT,@cPreProcGroup,@Spell\n\n\" Highlight User Labels\nsyn cluster\tcMultiGroup\tcontains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString\nif s:ft ==# 'c' || exists(\"cpp_no_cpp11\")\n  syn region\tcMulti\t\ttransparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup,@Spell\nendif\n\" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'\nsyn cluster\tcLabelGroup\tcontains=cUserLabel\nsyn match\tcUserCont\tdisplay \"^\\s*\\I\\i*\\s*:$\" contains=@cLabelGroup\nsyn match\tcUserCont\tdisplay \";\\s*\\I\\i*\\s*:$\" contains=@cLabelGroup\nsyn match\tcUserCont\tdisplay \"^\\s*\\I\\i*\\s*:[^:]\"me=e-1 contains=@cLabelGroup\nsyn match\tcUserCont\tdisplay \";\\s*\\I\\i*\\s*:[^:]\"me=e-1 contains=@cLabelGroup\n\nsyn match\tcUserLabel\tdisplay \"\\I\\i*\" contained\n\n\" Avoid recognizing most bitfields as labels\nsyn match\tcBitField\tdisplay \"^\\s*\\I\\i*\\s*:\\s*[1-9]\"me=e-1 contains=cType\nsyn match\tcBitField\tdisplay \";\\s*\\I\\i*\\s*:\\s*[1-9]\"me=e-1 contains=cType\n\nif exists(\"c_minlines\")\n  let b:c_minlines = c_minlines\nelse\n  if !exists(\"c_no_if0\")\n    let b:c_minlines = 50\t\" #if 0 constructs can be long\n  else\n    let b:c_minlines = 15\t\" mostly for () constructs\n  endif\nendif\nif exists(\"c_curly_error\")\n  syn sync fromstart\nelse\n  exec \"syn sync ccomment cComment minlines=\" . b:c_minlines\nendif\n\n\" Define the default highlighting.\n\" Only used when an item doesn't have highlighting yet\nhi def link cFormat\t\tcSpecial\nhi def link cCppString\t\tcString\nhi def link cCommentL\t\tcComment\nhi def link cCommentStart\tcComment\nhi def link cLabel\t\tLabel\nhi def link cUserLabel\t\tLabel\nhi def link cConditional\tConditional\nhi def link cRepeat\t\tRepeat\nhi def link cCharacter\t\tCharacter\nhi def link cSpecialCharacter\tcSpecial\nhi def link cNumber\t\tNumber\nhi def link cOctal\t\tNumber\nhi def link cOctalZero\t\tPreProc\t \" link this to Error if you want\nhi def link cFloat\t\tFloat\nhi def link cOctalError\t\tcError\nhi def link cParenError\t\tcError\nhi def link cErrInParen\t\tcError\nhi def link cErrInBracket\tcError\nhi def link cCommentError\tcError\nhi def link cCommentStartError\tcError\nhi def link cSpaceError\t\tcError\nhi def link cSpecialError\tcError\nhi def link cCurlyError\t\tcError\nhi def link cOperator\t\tOperator\nhi def link cStructure\t\tStructure\nhi def link cStorageClass\tStorageClass\nhi def link cInclude\t\tInclude\nhi def link cPreProc\t\tPreProc\nhi def link cDefine\t\tMacro\nhi def link cIncluded\t\tcString\nhi def link cError\t\tError\nhi def link cStatement\t\tStatement\nhi def link cCppInWrapper\tcCppOutWrapper\nhi def link cCppOutWrapper\tcPreCondit\nhi def link cPreConditMatch\tcPreCondit\nhi def link cPreCondit\t\tPreCondit\nhi def link cType\t\tType\nhi def link cConstant\t\tConstant\nhi def link cCommentString\tcString\nhi def link cComment2String\tcString\nhi def link cCommentSkip\tcComment\nhi def link cString\t\tString\nhi def link cComment\t\tComment\nhi def link cSpecial\t\tSpecialChar\nhi def link cTodo\t\tTodo\nhi def link cBadContinuation\tError\nhi def link cCppOutSkip\t\tcCppOutIf2\nhi def link cCppInElse2\t\tcCppOutIf2\nhi def link cCppOutIf2\t\tcCppOut2  \" Old syntax group for #if 0 body\nhi def link cCppOut2\t\tcCppOut  \" Old syntax group for #if of #if 0\nhi def link cCppOut\t\tComment\n\nlet b:current_syntax = \"c\"\n\nunlet s:ft\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\" vim: ts=8\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/cabal.vim",
    "content": "\" Vim syntax file\n\" Language: Cabal\n\" Author: Tristan Ravitch\n\" Version: 0.0.1\n\nif version < 600\n  syntax clear\nelseif exists('b:current_syntax')\n  finish\nendif\n\nsyn sync minlines=50 maxlines=200\nsyn case ignore\n\n\" Top-level package keywords\nsyn match cabalKey '^name:'\nsyn match cabalKey '^version:'\nsyn match cabalKey '^cabal-version:'\nsyn match cabalKey '^build-type:'\nsyn match cabalKey '^license:'\nsyn match cabalKey '^license-file:'\nsyn match cabalKey '^copyright:'\nsyn match cabalKey '^author:'\nsyn match cabalKey '^maintainer:'\nsyn match cabalKey '^stability:'\nsyn match cabalKey '^homepage:'\nsyn match cabalKey '^bug-reports:'\nsyn match cabalKey '^package-url:'\nsyn match cabalKey '^synopsis:'\nsyn match cabalKey '^description:'\nsyn match cabalKey '^category:'\nsyn match cabalKey '^tested-with:'\nsyn match cabalKey '^data-files:'\nsyn match cabalKey '^data-dir:'\nsyn match cabalKey '^extra-source-files:'\nsyn match cabalKey '^extra-tmp-files:'\n\n\" Other keywords\nsyn match cabalLit '\\(:\\s*\\)\\@<=\\(true\\|false\\)'\n\n\" Library-specifics\nsyn region cabalLibraryR start='^library\\(\\s\\|$\\)\\@=' end='^\\w' transparent keepend contains=cabalLibrayKey,cabalBuildKey,cabalCondition,cabalOperator\nsyn match cabalLibraryKey '^library\\(\\s\\|$\\)\\@='\nsyn match cabalLibraryKey '\\(^\\s\\+\\)\\@<=exposed-modules:'\nsyn match cabalLibraryKey '\\(^\\s\\+\\)\\@<=exposed:'\n\n\" Executable-specifics\nsyn region cabalExeR start='^executable\\s\\@=' end='^\\w' transparent keepend contains=cabalExeKey,cabalBuildKey,cabalCondition,cabalOperator,cabalBuildableName\nsyn match cabalExeKey '^executable\\s\\@='\nsyn match cabalExeKey '\\(^\\s\\+\\)\\@<=main-is:'\n\n\" Test-specifics\nsyn region cabalTestR start='^test-suite\\s\\@=' end='^\\w' transparent keepend contains=cabalTestKey,cabalBuildKey,cabalCondition,cabalOperator,cabalBuildableName\nsyn match cabalTestKey '^test-suite\\s\\@='\nsyn match cabalTestKey '\\(^\\s\\+\\)\\@<=type:'\nsyn match cabalTestKey '\\(^\\s\\+\\)\\@<=main-is:'\nsyn match cabalTestKey '\\(^\\s\\+\\)\\@<=test-module:'\n\n\" Benchmark-specifics\nsyn region cabalBenchR start='^benchmark\\s\\@=' end='^\\w' transparent keepend contains=cabalBenchKey,cabalBuildKey,cabalCondition,cabalOperator,cabalBuildableName\nsyn match cabalBenchKey '^benchmark\\s\\@='\nsyn match cabalBenchKey '\\(^\\s\\+\\)\\@<=type:'\nsyn match cabalBenchKey '\\(^\\s\\+\\)\\@<=main-is:'\n\nsyn match cabalBuildableName '\\(^\\(^benchmark\\|test-suite\\|executable\\)\\s\\+\\)\\@<=\\w\\+'\n\n\" General build info\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=default-language:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=build-depends:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=other-modules:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=hs-source-dirs:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=extensions:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=build-tools:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=buildable:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=ghc-options:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=ghc-prof-options:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=ghc-shared-options:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=hugs-options:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=nch98-options:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=includes:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=install-includes:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=include-dirs:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=c-sources:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=extra-libraries:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=extra-lib-dirs:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=cc-options:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=cpp-options:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=ld-options:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=pkgconfig-depends:'\nsyn match cabalBuildKey '\\(^\\s\\+\\)\\@<=frameworks:'\n\nsyn region cabalFlagR start='^flag\\s\\@=' end='^\\w' transparent keepend contains=cabalFlagKey,cabalCondition,cabalFlag\nsyn match cabalFlagKey '^flag\\s\\@='\nsyn match cabalFlagKey '\\(^\\s\\+\\)\\@<=description:'\nsyn match cabalFlagKey '\\(^\\s\\+\\)\\@<=default:'\nsyn match cabalFlagKey '\\(^\\s\\+\\)\\@<=manual:'\nsyn match cabalFlag '\\(flag\\s\\+\\)\\@<=\\w\\+'\nsyn match cabalFlag '\\(flag(\\)\\@<=\\w\\+)\\@='\n\nsyn region cabalSourceR start='^source-repository' end='^\\w' transparent keepend contains=cabalSourceKey\nsyn match cabalSourceKey '^source-repository\\s\\@='\nsyn match cabalSourceKey '\\(^\\s\\+\\)\\@<=type:'\nsyn match cabalSourceKey '\\(^\\s\\+\\)\\@<=location:'\nsyn match cabalSourceKey '\\(^\\s\\+\\)\\@<=module:'\nsyn match cabalSourceKey '\\(^\\s\\+\\)\\@<=branch:'\nsyn match cabalSourceKey '\\(^\\s\\+\\)\\@<=tag:'\nsyn match cabalSourceKey '\\(^\\s\\+\\)\\@<=subdir:'\n\nsyn match cabalCondition '\\(^\\s\\+\\)\\@<=if\\((\\|\\s\\)\\@='\nsyn match cabalCondition '\\(^\\s\\+\\)\\@<=else\\($\\|\\s\\)\\@='\nsyn match cabalCondition '\\(^\\s\\+\\)\\@<=if\\((\\|\\s\\)\\@='\nsyn match cabalCondition '\\(^\\s\\+\\)\\@<=else\\($\\|\\s\\)\\@='\nsyn match cabalOperator '\\W\\@<=os\\((.\\+)\\)\\@='\nsyn match cabalOperator '\\W\\@<=arch\\((.\\+)\\)\\@='\nsyn match cabalOperator '\\W\\@<=impl\\((.\\+)\\)\\@='\nsyn match cabalOperator '\\W\\@<=flag\\((.\\+)\\)\\@='\nsyn match cabalOperator '\\(^\\s*--.*\\)\\@<!\\(<\\|>\\|=\\|||\\|&&\\)'\n\nsyn match cabalComment '\\s\\@<=--.*$'\n\nif version >= 508 || !exists('did_cabal_syntax_inits')\n  if version < 508\n    let did_cabal_syntax_inits = 1\n    command -nargs=+ HiLink hi link <args>\n  else\n    command -nargs=+ HiLink hi def link <args>\n  endif\n\n  HiLink cabalBuildableName Structure\n  HiLink cabalFlag Special\n  HiLink cabalComment Comment\n  HiLink cabalCondition Conditional\n  HiLink cabalSourceKey Keyword\n  HiLink cabalOperator Operator\n  HiLink cabalKey Keyword\n  HiLink cabalLibraryKey Keyword\n  HiLink cabalTestKey Keyword\n  HiLink cabalExeKey Keyword\n  HiLink cabalBenchKey Keyword\n  HiLink cabalBuildKey Keyword\n  HiLink cabalFlagKey Keyword\n  HiLink cabalLit Constant\n\n  delcommand HiLink\nendif\n\nlet b:current_syntax = 'cabal'\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/clojure.vim",
    "content": "\" Vim syntax file\n\" Language:\tClojure\n\" Authors:\tToralf Wittner <toralf.wittner@gmail.com>\n\"\t\tmodified by Meikel Brandmeyer <mb@kotka.de>\n\" URL:\t\thttp://kotka.de/projects/clojure/vimclojure.html\n\"\n\" Contributors:\tJoel Holdbrooks <cjholdbrooks@gmail.com> (Regexp support, bug fixes)\n\"\n\" Maintainer:\tSung Pae <self@sungpae.com>\n\" URL:\t\thttps://github.com/guns/vim-clojure-static\n\" License:\tSame as Vim\n\" Last Change:\t%%RELEASE_DATE%%\n\nif exists(\"b:current_syntax\")\n\tfinish\nendif\n\nif has(\"folding\") && exists(\"g:clojure_fold\") && g:clojure_fold > 0\n\tsetlocal foldmethod=syntax\nendif\n\n\" Generated from https://github.com/guns/vim-clojure-static/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj\n\" Clojure version 1.5.1\nsyntax keyword clojureConstant nil\nsyntax keyword clojureBoolean false true\nsyntax keyword clojureSpecial . catch clojure.core/fn clojure.core/let clojure.core/loop def do finally fn if let loop monitor-enter monitor-exit new quote recur set! throw try var\nsyntax keyword clojureException catch finally throw try\nsyntax keyword clojureCond case clojure.core/case clojure.core/cond clojure.core/cond-> clojure.core/cond->> clojure.core/condp clojure.core/if-let clojure.core/if-not clojure.core/when clojure.core/when-first clojure.core/when-let clojure.core/when-not cond cond-> cond->> condp if-let if-not when when-first when-let when-not\nsyntax keyword clojureRepeat clojure.core/doall clojure.core/dorun clojure.core/doseq clojure.core/dotimes clojure.core/while doall dorun doseq dotimes while\nsyntax keyword clojureDefine clojure.core/definline clojure.core/definterface clojure.core/defmacro clojure.core/defmethod clojure.core/defmulti clojure.core/defn clojure.core/defn- clojure.core/defonce clojure.core/defprotocol clojure.core/defrecord clojure.core/defstruct clojure.core/deftype definline definterface defmacro defmethod defmulti defn defn- defonce defprotocol defrecord defstruct deftype\nsyntax keyword clojureMacro -> ->> .. amap and areduce as-> assert binding bound-fn clojure.core/-> clojure.core/->> clojure.core/.. clojure.core/amap clojure.core/and clojure.core/areduce clojure.core/as-> clojure.core/assert clojure.core/binding clojure.core/bound-fn clojure.core/comment clojure.core/declare clojure.core/delay clojure.core/dosync clojure.core/doto clojure.core/extend-protocol clojure.core/extend-type clojure.core/for clojure.core/future clojure.core/gen-class clojure.core/gen-interface clojure.core/import clojure.core/io! clojure.core/lazy-cat clojure.core/lazy-seq clojure.core/letfn clojure.core/locking clojure.core/memfn clojure.core/ns clojure.core/or clojure.core/proxy clojure.core/proxy-super clojure.core/pvalues clojure.core/refer-clojure clojure.core/reify clojure.core/some-> clojure.core/some->> clojure.core/sync clojure.core/time clojure.core/with-bindings clojure.core/with-in-str clojure.core/with-loading-context clojure.core/with-local-vars clojure.core/with-open clojure.core/with-out-str clojure.core/with-precision clojure.core/with-redefs comment declare delay dosync doto extend-protocol extend-type for future gen-class gen-interface import io! lazy-cat lazy-seq letfn locking memfn ns or proxy proxy-super pvalues refer-clojure reify some-> some->> sync time with-bindings with-in-str with-loading-context with-local-vars with-open with-out-str with-precision with-redefs\nsyntax keyword clojureFunc * *' + +' - -' ->ArrayChunk ->Vec ->VecNode ->VecSeq -cache-protocol-fn -reset-methods / < <= = == > >= accessor aclone add-classpath add-watch agent agent-error agent-errors aget alength alias all-ns alter alter-meta! alter-var-root ancestors apply array-map aset aset-boolean aset-byte aset-char aset-double aset-float aset-int aset-long aset-short assoc assoc! assoc-in associative? atom await await-for await1 bases bean bigdec bigint biginteger bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn* bound? butlast byte byte-array bytes cast char char-array char? chars chunk chunk-append chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? class class? clear-agent-errors clojure-version clojure.core/* clojure.core/*' clojure.core/+ clojure.core/+' clojure.core/- clojure.core/-' clojure.core/->ArrayChunk clojure.core/->Vec clojure.core/->VecNode clojure.core/->VecSeq clojure.core/-cache-protocol-fn clojure.core/-reset-methods clojure.core// clojure.core/< clojure.core/<= clojure.core/= clojure.core/== clojure.core/> clojure.core/>= clojure.core/accessor clojure.core/aclone clojure.core/add-classpath clojure.core/add-watch clojure.core/agent clojure.core/agent-error clojure.core/agent-errors clojure.core/aget clojure.core/alength clojure.core/alias clojure.core/all-ns clojure.core/alter clojure.core/alter-meta! clojure.core/alter-var-root clojure.core/ancestors clojure.core/apply clojure.core/array-map clojure.core/aset clojure.core/aset-boolean clojure.core/aset-byte clojure.core/aset-char clojure.core/aset-double clojure.core/aset-float clojure.core/aset-int clojure.core/aset-long clojure.core/aset-short clojure.core/assoc clojure.core/assoc! clojure.core/assoc-in clojure.core/associative? clojure.core/atom clojure.core/await clojure.core/await-for clojure.core/await1 clojure.core/bases clojure.core/bean clojure.core/bigdec clojure.core/bigint clojure.core/biginteger clojure.core/bit-and clojure.core/bit-and-not clojure.core/bit-clear clojure.core/bit-flip clojure.core/bit-not clojure.core/bit-or clojure.core/bit-set clojure.core/bit-shift-left clojure.core/bit-shift-right clojure.core/bit-test clojure.core/bit-xor clojure.core/boolean clojure.core/boolean-array clojure.core/booleans clojure.core/bound-fn* clojure.core/bound? clojure.core/butlast clojure.core/byte clojure.core/byte-array clojure.core/bytes clojure.core/cast clojure.core/char clojure.core/char-array clojure.core/char? clojure.core/chars clojure.core/chunk clojure.core/chunk-append clojure.core/chunk-buffer clojure.core/chunk-cons clojure.core/chunk-first clojure.core/chunk-next clojure.core/chunk-rest clojure.core/chunked-seq? clojure.core/class clojure.core/class? clojure.core/clear-agent-errors clojure.core/clojure-version clojure.core/coll? clojure.core/commute clojure.core/comp clojure.core/comparator clojure.core/compare clojure.core/compare-and-set! clojure.core/compile clojure.core/complement clojure.core/concat clojure.core/conj clojure.core/conj! clojure.core/cons clojure.core/constantly clojure.core/construct-proxy clojure.core/contains? clojure.core/count clojure.core/counted? clojure.core/create-ns clojure.core/create-struct clojure.core/cycle clojure.core/dec clojure.core/dec' clojure.core/decimal? clojure.core/delay? clojure.core/deliver clojure.core/denominator clojure.core/deref clojure.core/derive clojure.core/descendants clojure.core/destructure clojure.core/disj clojure.core/disj! clojure.core/dissoc clojure.core/dissoc! clojure.core/distinct clojure.core/distinct? clojure.core/double clojure.core/double-array clojure.core/doubles clojure.core/drop clojure.core/drop-last clojure.core/drop-while clojure.core/empty clojure.core/empty? clojure.core/ensure clojure.core/enumeration-seq clojure.core/error-handler clojure.core/error-mode clojure.core/eval clojure.core/even? clojure.core/every-pred clojure.core/every? clojure.core/ex-data clojure.core/ex-info clojure.core/extend clojure.core/extenders clojure.core/extends? clojure.core/false? clojure.core/ffirst clojure.core/file-seq clojure.core/filter clojure.core/filterv clojure.core/find clojure.core/find-keyword clojure.core/find-ns clojure.core/find-protocol-impl clojure.core/find-protocol-method clojure.core/find-var clojure.core/first clojure.core/flatten clojure.core/float clojure.core/float-array clojure.core/float? clojure.core/floats clojure.core/flush clojure.core/fn? clojure.core/fnext clojure.core/fnil clojure.core/force clojure.core/format clojure.core/frequencies clojure.core/future-call clojure.core/future-cancel clojure.core/future-cancelled? clojure.core/future-done? clojure.core/future? clojure.core/gensym clojure.core/get clojure.core/get-in clojure.core/get-method clojure.core/get-proxy-class clojure.core/get-thread-bindings clojure.core/get-validator clojure.core/group-by clojure.core/hash clojure.core/hash-combine clojure.core/hash-map clojure.core/hash-set clojure.core/identical? clojure.core/identity clojure.core/ifn? clojure.core/in-ns clojure.core/inc clojure.core/inc' clojure.core/init-proxy clojure.core/instance? clojure.core/int clojure.core/int-array clojure.core/integer? clojure.core/interleave clojure.core/intern clojure.core/interpose clojure.core/into clojure.core/into-array clojure.core/ints clojure.core/isa? clojure.core/iterate clojure.core/iterator-seq clojure.core/juxt clojure.core/keep clojure.core/keep-indexed clojure.core/key clojure.core/keys clojure.core/keyword clojure.core/keyword? clojure.core/last clojure.core/line-seq clojure.core/list clojure.core/list* clojure.core/list? clojure.core/load clojure.core/load-file clojure.core/load-reader clojure.core/load-string clojure.core/loaded-libs clojure.core/long clojure.core/long-array clojure.core/longs clojure.core/macroexpand clojure.core/macroexpand-1 clojure.core/make-array clojure.core/make-hierarchy clojure.core/map clojure.core/map-indexed clojure.core/map? clojure.core/mapcat clojure.core/mapv clojure.core/max clojure.core/max-key clojure.core/memoize clojure.core/merge clojure.core/merge-with clojure.core/meta clojure.core/method-sig clojure.core/methods clojure.core/min clojure.core/min-key clojure.core/mod clojure.core/munge clojure.core/name clojure.core/namespace clojure.core/namespace-munge clojure.core/neg? clojure.core/newline clojure.core/next clojure.core/nfirst clojure.core/nil? clojure.core/nnext clojure.core/not clojure.core/not-any? clojure.core/not-empty clojure.core/not-every? clojure.core/not= clojure.core/ns-aliases clojure.core/ns-imports clojure.core/ns-interns clojure.core/ns-map clojure.core/ns-name clojure.core/ns-publics clojure.core/ns-refers clojure.core/ns-resolve clojure.core/ns-unalias clojure.core/ns-unmap clojure.core/nth clojure.core/nthnext clojure.core/nthrest clojure.core/num clojure.core/number? clojure.core/numerator clojure.core/object-array clojure.core/odd? clojure.core/parents clojure.core/partial clojure.core/partition clojure.core/partition-all clojure.core/partition-by clojure.core/pcalls clojure.core/peek clojure.core/persistent! clojure.core/pmap clojure.core/pop clojure.core/pop! clojure.core/pop-thread-bindings clojure.core/pos? clojure.core/pr clojure.core/pr-str clojure.core/prefer-method clojure.core/prefers clojure.core/print clojure.core/print-ctor clojure.core/print-dup clojure.core/print-method clojure.core/print-simple clojure.core/print-str clojure.core/printf clojure.core/println clojure.core/println-str clojure.core/prn clojure.core/prn-str clojure.core/promise clojure.core/proxy-call-with-super clojure.core/proxy-mappings clojure.core/proxy-name clojure.core/push-thread-bindings clojure.core/quot clojure.core/rand clojure.core/rand-int clojure.core/rand-nth clojure.core/range clojure.core/ratio? clojure.core/rational? clojure.core/rationalize clojure.core/re-find clojure.core/re-groups clojure.core/re-matcher clojure.core/re-matches clojure.core/re-pattern clojure.core/re-seq clojure.core/read clojure.core/read-line clojure.core/read-string clojure.core/realized? clojure.core/reduce clojure.core/reduce-kv clojure.core/reduced clojure.core/reduced? clojure.core/reductions clojure.core/ref clojure.core/ref-history-count clojure.core/ref-max-history clojure.core/ref-min-history clojure.core/ref-set clojure.core/refer clojure.core/release-pending-sends clojure.core/rem clojure.core/remove clojure.core/remove-all-methods clojure.core/remove-method clojure.core/remove-ns clojure.core/remove-watch clojure.core/repeat clojure.core/repeatedly clojure.core/replace clojure.core/replicate clojure.core/require clojure.core/reset! clojure.core/reset-meta! clojure.core/resolve clojure.core/rest clojure.core/restart-agent clojure.core/resultset-seq clojure.core/reverse clojure.core/reversible? clojure.core/rseq clojure.core/rsubseq clojure.core/satisfies? clojure.core/second clojure.core/select-keys clojure.core/send clojure.core/send-off clojure.core/send-via clojure.core/seq clojure.core/seq? clojure.core/seque clojure.core/sequence clojure.core/sequential? clojure.core/set clojure.core/set-agent-send-executor! clojure.core/set-agent-send-off-executor! clojure.core/set-error-handler! clojure.core/set-error-mode! clojure.core/set-validator! clojure.core/set? clojure.core/short clojure.core/short-array clojure.core/shorts clojure.core/shuffle clojure.core/shutdown-agents clojure.core/slurp clojure.core/some clojure.core/some-fn clojure.core/sort clojure.core/sort-by clojure.core/sorted-map clojure.core/sorted-map-by clojure.core/sorted-set clojure.core/sorted-set-by clojure.core/sorted? clojure.core/special-symbol? clojure.core/spit clojure.core/split-at clojure.core/split-with clojure.core/str clojure.core/string? clojure.core/struct clojure.core/struct-map clojure.core/subs clojure.core/subseq clojure.core/subvec clojure.core/supers clojure.core/swap! clojure.core/symbol clojure.core/symbol? clojure.core/take clojure.core/take-last clojure.core/take-nth clojure.core/take-while clojure.core/test clojure.core/the-ns clojure.core/thread-bound? clojure.core/to-array clojure.core/to-array-2d clojure.core/trampoline clojure.core/transient clojure.core/tree-seq clojure.core/true? clojure.core/type clojure.core/unchecked-add clojure.core/unchecked-add-int clojure.core/unchecked-byte clojure.core/unchecked-char clojure.core/unchecked-dec clojure.core/unchecked-dec-int clojure.core/unchecked-divide-int clojure.core/unchecked-double clojure.core/unchecked-float clojure.core/unchecked-inc clojure.core/unchecked-inc-int clojure.core/unchecked-int clojure.core/unchecked-long clojure.core/unchecked-multiply clojure.core/unchecked-multiply-int clojure.core/unchecked-negate clojure.core/unchecked-negate-int clojure.core/unchecked-remainder-int clojure.core/unchecked-short clojure.core/unchecked-subtract clojure.core/unchecked-subtract-int clojure.core/underive clojure.core/update-in clojure.core/update-proxy clojure.core/use clojure.core/val clojure.core/vals clojure.core/var-get clojure.core/var-set clojure.core/var? clojure.core/vary-meta clojure.core/vec clojure.core/vector clojure.core/vector-of clojure.core/vector? clojure.core/with-bindings* clojure.core/with-meta clojure.core/with-redefs-fn clojure.core/xml-seq clojure.core/zero? clojure.core/zipmap coll? commute comp comparator compare compare-and-set! compile complement concat conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec dec' decimal? delay? deliver denominator deref derive descendants destructure disj disj! dissoc dissoc! distinct distinct? double double-array doubles drop drop-last drop-while empty empty? ensure enumeration-seq error-handler error-mode eval even? every-pred every? ex-data ex-info extend extenders extends? false? ffirst file-seq filter filterv find find-keyword find-ns find-protocol-impl find-protocol-method find-var first flatten float float-array float? floats flush fn? fnext fnil force format frequencies future-call future-cancel future-cancelled? future-done? future? gensym get get-in get-method get-proxy-class get-thread-bindings get-validator group-by hash hash-combine hash-map hash-set identical? identity ifn? in-ns inc inc' init-proxy instance? int int-array integer? interleave intern interpose into into-array ints isa? iterate iterator-seq juxt keep keep-indexed key keys keyword keyword? last line-seq list list* list? load load-file load-reader load-string loaded-libs long long-array longs macroexpand macroexpand-1 make-array make-hierarchy map map-indexed map? mapcat mapv max max-key memoize merge merge-with meta method-sig methods min min-key mod munge name namespace namespace-munge neg? newline next nfirst nil? nnext not not-any? not-empty not-every? not= ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias ns-unmap nth nthnext nthrest num number? numerator object-array odd? parents partial partition partition-all partition-by pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers print print-ctor print-dup print-method print-simple print-str printf println println-str prn prn-str promise proxy-call-with-super proxy-mappings proxy-name push-thread-bindings quot rand rand-int rand-nth range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern re-seq read read-line read-string realized? reduce reduce-kv reduced reduced? reductions ref ref-history-count ref-max-history ref-min-history ref-set refer release-pending-sends rem remove remove-all-methods remove-method remove-ns remove-watch repeat repeatedly replace replicate require reset! reset-meta! resolve rest restart-agent resultset-seq reverse reversible? rseq rsubseq satisfies? second select-keys send send-off send-via seq seq? seque sequence sequential? set set-agent-send-executor! set-agent-send-off-executor! set-error-handler! set-error-mode! set-validator! set? short short-array shorts shuffle shutdown-agents slurp some some-fn sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? special-symbol? spit split-at split-with str string? struct struct-map subs subseq subvec supers swap! symbol symbol? take take-last take-nth take-while test the-ns thread-bound? to-array to-array-2d trampoline transient tree-seq true? type unchecked-add unchecked-add-int unchecked-byte unchecked-char unchecked-dec unchecked-dec-int unchecked-divide-int unchecked-double unchecked-float unchecked-inc unchecked-inc-int unchecked-int unchecked-long unchecked-multiply unchecked-multiply-int unchecked-negate unchecked-negate-int unchecked-remainder-int unchecked-short unchecked-subtract unchecked-subtract-int underive update-in update-proxy use val vals var-get var-set var? vary-meta vec vector vector-of vector? with-bindings* with-meta with-redefs-fn xml-seq zero? zipmap\nsyntax keyword clojureVariable *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* *command-line-args* *compile-files* *compile-path* *compiler-options* *data-readers* *default-data-reader-fn* *e *err* *file* *flush-on-newline* *fn-loader* *in* *math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* *source-path* *unchecked-math* *use-context-classloader* *verbose-defrecords* *warn-on-reflection* EMPTY-NODE char-escape-string char-name-string clojure.core/*1 clojure.core/*2 clojure.core/*3 clojure.core/*agent* clojure.core/*allow-unresolved-vars* clojure.core/*assert* clojure.core/*clojure-version* clojure.core/*command-line-args* clojure.core/*compile-files* clojure.core/*compile-path* clojure.core/*compiler-options* clojure.core/*data-readers* clojure.core/*default-data-reader-fn* clojure.core/*e clojure.core/*err* clojure.core/*file* clojure.core/*flush-on-newline* clojure.core/*fn-loader* clojure.core/*in* clojure.core/*math-context* clojure.core/*ns* clojure.core/*out* clojure.core/*print-dup* clojure.core/*print-length* clojure.core/*print-level* clojure.core/*print-meta* clojure.core/*print-readably* clojure.core/*read-eval* clojure.core/*source-path* clojure.core/*unchecked-math* clojure.core/*use-context-classloader* clojure.core/*verbose-defrecords* clojure.core/*warn-on-reflection* clojure.core/EMPTY-NODE clojure.core/char-escape-string clojure.core/char-name-string clojure.core/default-data-readers clojure.core/primitives-classnames clojure.core/unquote clojure.core/unquote-splicing default-data-readers primitives-classnames unquote unquote-splicing\n\n\" Keywords are symbols:\n\"   static Pattern symbolPat = Pattern.compile(\"[:]?([\\\\D&&[^/]].*/)?([\\\\D&&[^/]][^/]*)\");\n\" But they:\n\"   * Must not end in a : or /\n\"   * Must not have two adjacent colons except at the beginning\n\"   * Must not contain any reader metacharacters except for ' and #\nsyntax match clojureKeyword \"\\v<:{1,2}%([^ \\n\\r\\t()\\[\\]{}\";@^`~\\\\%/]+/)*[^ \\n\\r\\t()\\[\\]{}\";@^`~\\\\%/]+:@<!>\"\n\nsyntax match clojureStringEscape \"\\v\\\\%([\\\\btnfr\"]|u\\x{4}|[0-3]\\o{2}|\\o{1,2})\" contained\n\nsyntax region clojureString start=/\"/ skip=/\\\\\\\\\\|\\\\\"/ end=/\"/ contains=clojureStringEscape,@Spell\n\nsyntax match clojureCharacter \"\\\\.\"\nsyntax match clojureCharacter \"\\\\o\\%([0-3]\\o\\{2\\}\\|\\o\\{1,2\\}\\)\"\nsyntax match clojureCharacter \"\\\\u\\x\\{4\\}\"\nsyntax match clojureCharacter \"\\\\space\"\nsyntax match clojureCharacter \"\\\\tab\"\nsyntax match clojureCharacter \"\\\\newline\"\nsyntax match clojureCharacter \"\\\\return\"\nsyntax match clojureCharacter \"\\\\backspace\"\nsyntax match clojureCharacter \"\\\\formfeed\"\n\nsyntax match clojureSymbol \"\\v%([a-zA-Z!$&*_+=|<.>?-]|[^\\x00-\\x7F])+%(:?%([a-zA-Z0-9!#$%&*_+=|'<.>/?-]|[^\\x00-\\x7F]))*[#:]@<!\"\n\nlet s:radix_chars = \"0123456789abcdefghijklmnopqrstuvwxyz\"\nfor s:radix in range(2, 36)\n\texecute 'syntax match clojureNumber \"\\v\\c<[-+]?' . s:radix . 'r[' . strpart(s:radix_chars, 0, s:radix) . ']+>\"'\nendfor\nunlet! s:radix_chars s:radix\n\nsyntax match clojureNumber \"\\v<[-+]?%(0\\o*|0x\\x+|[1-9]\\d*)N?>\"\nsyntax match clojureNumber \"\\v<[-+]?%(0|[1-9]\\d*|%(0|[1-9]\\d*)\\.\\d*)%(M|[eE][-+]?\\d+)?>\"\nsyntax match clojureNumber \"\\v<[-+]?%(0|[1-9]\\d*)/%(0|[1-9]\\d*)>\"\n\nsyntax match clojureVarArg \"&\"\n\nsyntax match clojureQuote \"'\"\nsyntax match clojureQuote \"`\"\nsyntax match clojureUnquote \"\\~\"\nsyntax match clojureUnquote \"\\~@\"\nsyntax match clojureMeta \"\\^\"\nsyntax match clojureDeref \"@\"\nsyntax match clojureDispatch \"\\v#[\\^'=<_]?\"\n\n\" Clojure permits no more than 20 params.\nsyntax match clojureAnonArg \"%\\(20\\|1\\d\\|[1-9]\\|&\\)\\?\"\n\nsyntax match  clojureRegexpEscape \"\\v\\\\%([\\\\tnrfae.()\\[\\]{}^$*?+]|c\\u|0[0-3]?\\o{1,2}|x%(\\x{2}|\\{\\x{1,6}\\})|u\\x{4})\" contained display\nsyntax region clojureRegexpQuoted start=/\\\\Q/ms=e+1 skip=/\\\\\\\\\\|\\\\\"/ end=/\\\\E/me=s-1 end=/\"/me=s-1 contained\nsyntax region clojureRegexpQuote  start=/\\\\Q/       skip=/\\\\\\\\\\|\\\\\"/ end=/\\\\E/       end=/\"/me=s-1 contains=clojureRegexpQuoted keepend contained\n\n\" Character property classes\n\" Generated from https://github.com/guns/vim-clojure-static/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj\n\" Java version 1.7.0_45\nsyntax match clojureRegexpPosixCharClass \"\\v\\\\[pP]\\{%(Blank|P%(unct|rint)|Digit|Graph|A%(l%(pha|num)|SCII)|XDigit|Space|Upper|Lower|Cntrl)\\}\" contained display\nsyntax match clojureRegexpJavaCharClass \"\\v\\\\[pP]\\{java%(U%(pperCase|nicodeIdentifier%(Start|Part))|Mirrored|Alphabetic|SpaceChar|D%(efined|igit)|Whitespace|L%(etter%(OrDigit)?|owerCase)|TitleCase|I%(de%(ographic|ntifierIgnorable)|SOControl)|JavaIdentifier%(Start|Part))\\}\" contained display\nsyntax match clojureRegexpUnicodeCharClass \"\\v\\\\[pP]\\{\\cIs%(blank|hex%(digit|_digit)|uppercase|digit|control|a%(ssigned|l%(phabetic|num))|graph|ideographic|p%(rint|unctuation)|titlecase|w%(hite%(_space|space)|ord)|l%(owercase|etter)|noncharacter%(codepoint|_code_point))\\}\" contained display\nsyntax match clojureRegexpUnicodeCharClass \"\\v\\\\[pP][MLNPSZC]\" contained display\nsyntax match clojureRegexpUnicodeCharClass \"\\v\\\\[pP]\\{%(C[fonsc]?|L[DmloutC]?|S[kmoc]?|P[edfiosc]?|M[enc]?|Z[lps]?|N[dlo]?)\\}\" contained display\nsyntax match clojureRegexpUnicodeCharClass \"\\v\\\\[pP]\\{%(Is|gc\\=|general_category\\=)?%(C[fonsc]?|L[DmloutC]?|S[kmoc]?|P[edfiosc]?|M[enc]?|Z[lps]?|N[dlo]?)\\}\" contained display\nsyntax match clojureRegexpUnicodeCharClass \"\\v\\\\[pP]\\{\\c%(Is|sc\\=|script\\=)%(h%(ira%(gana)?|an%([io]|g%(ul)?|unoo)?|ebr%(ew)?)|yi%(ii)?|java%(nese)?|c%(prt|y%(r%(illic|l)|priot)|h%(er%(okee)?|am)|uneiform|o%(mmon|pt%(ic)?)|a%(n%(adian_aboriginal|s)|ri%(an)?))|i%(mperial_aramaic|tal|n%(herited|scriptional_pa%(rthian|hlavi)))|a%(r%(ab%(ic)?|m%([in]|enian))|v%(st|estan))|g%(oth%(ic)?|u%(j%(arati|r)|r%(mukhi|u))|lag%(olitic)?|eor%(gian)?|re%(k|ek))|b%(u%(gi%(nese)?|h%(d|id))|ra%(i%(lle)?|h%(mi)?)|a%(mum?|t%(k|ak)|li%(nese)?)|opo%(mofo)?|eng%(ali)?)|s%(ha%(w|vian)|und%(anese)?|y%(r%(iac|c)|lo%(ti_nagri)?)|inh%(ala)?|a%(ur%(ashtra)?|rb|m%(r|aritan)))|d%(srt|e%(va%(nagari)?|seret))|l%(a%(na|oo?|t%(n|in))|epc%(ha)?|i%(n%(ear_b|b)|mbu?|su)|y%([dc]i%(an)?))|p%(h%(oenician|nx|li|ag%(s_pa)?)|rti)|e%(gyp%(tian_hieroglyphs)?|thi%(opic)?)|r%(jng|un%(ic|r)|ejang)|u%(nknown|gar%(itic)?)|vaii?|n%(koo?|ew_tai_lue)|m%(y%(mr|anmar)|tei|a%(nd%(aic)?|layalam)|ong%(olian)?|eetei_mayek|lym)|z%(inh|yyy|zzz)|t%(glg|fng|i%(finagh|b%(t|etan))|ha%(i|a%(na)?)|elu%(gu)?|a%(i_%(viet|le|tham)|l[eu]|g%(alog|b%(anwa)?)|vt|m%(l|il)))|x%(sux|peo)|o%(r%(iya|kh|ya)|sma%(nya)?|g%(am|ham)|l%(ck|d_%(south_arabian|turkic|italic|persian)|_chiki))|k%(a%(takana|yah_li|n%(nada|a)|li|ithi)|h%(m%(r|er)|ar%(oshthi)?)|thi|nda))\\}\" contained display\nsyntax match clojureRegexpUnicodeCharClass \"\\v\\\\[pP]\\{\\c%(In|blk\\=|block\\=)%(s%(a%(maritan|urashtra)|mall%(_form_variants| form variants|formvariants)|inhala|y%(loti%(nagri|[_ ]nagri)|riac)|havian|p%(ecials|acing%(modifierletters|_modifier_letters| modifier letters))|u%(p%(erscripts%(andsubscripts|_and_subscripts| and subscripts)|plementa%(ry%( private use area-[ab]|_private_use_area_[ab]|privateusearea-[ab])|l%( %(arrows-[ab]|punctuation|mathematical operators)|arrows-[ab]|_%(punctuation|mathematical_operators|arrows_[ab])|punctuation|mathematicaloperators)))|ndanese|rrogates_area))|l%(a%(o|tin%(_%(extended_%(a%(dditional)?|[dcb])|1_supplement)| extended%(-[dacb]| additional)|-1%( supplement|supplement)|extended%(additional|-[dacb])))|e%(pcha|tterlike%(symbols|[_ ]symbols))|y[cd]ian|i%(su|mbu|near%(b%(ideograms|syllabary)|_b_%(ideograms|syllabary)| b %(ideograms|syllabary)))|ow%([_ ]surrogates|surrogates))|b%(a%(sic%(latin|[_ ]latin)|tak|linese|mum%([_ ]supplement|supplement)?)|yzantine%(_musical_symbols| musical symbols|musicalsymbols)|engali|u%(ginese|hid)|lock%(elements|[_ ]elements)|ra%(hmi|ille%([ _]patterns|patterns))|o%(x%(drawing|[_ ]drawing)|pomofo%([ _]extended|extended)?))|t%(a%(g%(s|alog|banwa)|mil|i%( %(viet|xuan jing symbols|le|tham)|viet|le|_%(xuan_jing_symbols|viet|le|tham)|tham|xuanjingsymbols))|ha%(i|ana)|elugu|i%(finagh|betan)|ransport%(_and_map_symbols| and map symbols|andmapsymbols))|n%(ew%(_tai_lue| tai lue|tailue)|umber%([ _]forms|forms)|ko)|m%(iscellaneous%(_%(mathematical_symbols_[ab]|symbols%(_and_%(arrows|pictographs))?|technical)|mathematicalsymbols-[ab]|technical| %(symbols%( and %(arrows|pictographs))?|mathematical symbols-[ab]|technical)|symbols%(and%(arrows|pictographs))?)|eetei%(mayek|[_ ]mayek)|a%(ndaic|thematical%(alphanumericsymbols|operators|_%(alphanumeric_symbols|operators)| %(operators|alphanumeric symbols))|hjong%(tiles|[_ ]tiles)|layalam)|yanmar%(_extended_a|extended-a| extended-a)?|o%(difier%( tone letters|toneletters|_tone_letters)|ngolian)|usical%(symbols|[_ ]symbols))|p%(h%(a%(gs[-_]pa|istos%(disc|[_ ]disc))|o%(netic%(_extensions%(_supplement)?| extensions%( supplement)?|extensions%(supplement)?)|enician))|rivate%(usearea|_use_area| use area)|laying%(cards|[_ ]cards))|javanese|u%(garitic|nified%(_canadian_aboriginal_syllabics%(_extended)?| canadian aboriginal syllabics%( extended)?|canadianaboriginalsyllabics%(extended)?))|o%(riya|gham|l%([ _]chiki|d%(turkic|_%(south_arabian|turkic|italic|persian)|italic|persian| %(south arabian|turkic|italic|persian)|southarabian)|chiki)|smanya|ptical%(_character_recognition| character recognition|characterrecognition))|v%(e%(dic%(extensions|[_ ]extensions)|rtical%([ _]forms|forms))|a%(i|riation%(_selectors%(_supplement)?| selectors%( supplement)?|selectors%(supplement)?)))|a%(vestan|l%(phabetic%(_presentation_forms| presentation forms|presentationforms)|chemical%(symbols|[_ ]symbols))|ncient%( %(symbols|greek %(musical notation|numbers))|symbols|greek%(musicalnotation|numbers)|_%(symbols|greek_%(musical_notation|numbers)))|egean%([ _]numbers|numbers)|r%(menian|rows|abic%( %(presentation forms-[ab]|supplement)|_%(presentation_forms_[ab]|supplement)|presentationforms-[ab]|supplement)?))|i%(nscriptional%(pa%(rthian|hlavi)|%([_ ]pa%(rthian|hlavi)))|deographic%( description characters|descriptioncharacters|_description_characters)|pa%(extensions|[_ ]extensions)|mperial%(aramaic|[_ ]aramaic))|yi%(%([_ ]%(radicals|syllables))|radicals|syllables|jing%(hexagramsymbols|_hexagram_symbols| hexagram symbols))|k%(a%(yah%(li|[_ ]li)|n%(nada|bun|a%([_ ]supplement|supplement)|gxi%(radicals|[_ ]radicals))|ithi|takana%(phoneticextensions|_phonetic_extensions| phonetic extensions)?)|h%(aroshthi|mer%(symbols|[_ ]symbols)?))|d%(e%(vanagari%([ _]extended|extended)?|seret)|omino%(tiles|[_ ]tiles)|ingbats)|g%(lagolitic|othic|reek%(andcoptic| %(and coptic|extended)|extended|_extended)?|u%(rmukhi|jarati)|e%(o%(metric%([_ ]shapes|shapes)|rgian%([_ ]supplement|supplement)?)|neral%(punctuation|[_ ]punctuation)))|e%(nclosed%( %(ideographic supplement|cjk letters and months|alphanumeric%( supplement|s))|cjklettersandmonths|_%(ideographic_supplement|alphanumeric%(_supplement|s)|cjk_letters_and_months)|alphanumerics%(upplement)?|ideographicsupplement)|moticons|thiopic%(extended%(-a)?| %(extended%(-a)?|supplement)|_%(extended%(_a)?|supplement)|supplement)?|gyptian%(hieroglyphs|[_ ]hieroglyphs))|r%(ejang|u%(nic|mi%(numeralsymbols|_numeral_symbols| numeral symbols)))|c%(jk%(_%(compatibility%(_%(ideographs%(_supplement)?|forms))?|radicals_supplement|unified_ideographs%(_extension_[dacb])?|s%(trokes|ymbols_and_punctuation))|compatibility%(ideographs%(supplement)?|forms)?|unifiedideographs%(extension[dacb])?|radicalssupplement|s%(ymbolsandpunctuation|trokes)| %(unified ideographs%( extension [dacb])?|s%(trokes|ymbols and punctuation)|radicals supplement|compatibility%( %(forms|ideographs%( supplement)?))?))|h%(am|erokee)|u%(neiform%(_numbers_and_punctuation| numbers and punctuation|numbersandpunctuation)?|rrency%(symbols|[_ ]symbols))|y%(rillic%(_%(extended_[ab]|supplementary)| %(extended-[ab]|supplement%(ary)?)|extended-[ab]|supplement%(ary)?)?|priot%([_ ]syllabary|syllabary))|o%(ntrol%(pictures|[_ ]pictures)|unting%(rodnumerals|_rod_numerals| rod numerals)|m%(bining%(halfmarks|diacriticalmarks%(forsymbols|supplement)?| %(marks for symbols|half marks|diacritical marks%( %(for symbols|supplement))?)|marksforsymbols|_%(marks_for_symbols|half_marks|diacritical_marks%(_supplement)?))|mon%( indic number forms|indicnumberforms|_indic_number_forms))|ptic)|arian)|h%(i%(ragana|gh%(_%(private_use_surrogates|surrogates)| %(private use surrogates|surrogates)|surrogates|privateusesurrogates))|ebrew|a%(n%(unoo|gul%(jamo%(extended-[ab])?| %(jamo%( extended-[ab])?|syllables|compatibility jamo)|_%(syllables|jamo%(_extended_[ab])?|compatibility_jamo)|syllables|compatibilityjamo))|lfwidth%( and fullwidth forms|andfullwidthforms|_and_fullwidth_forms))))\\}\" contained display\n\nsyntax match   clojureRegexpPredefinedCharClass\t\"\\v%(\\\\[dDsSwW]|\\.)\" contained display\nsyntax cluster clojureRegexpCharPropertyClasses\tcontains=clojureRegexpPosixCharClass,clojureRegexpJavaCharClass,clojureRegexpUnicodeCharClass\nsyntax cluster clojureRegexpCharClasses\t\tcontains=clojureRegexpPredefinedCharClass,clojureRegexpCharClass,@clojureRegexpCharPropertyClasses\nsyntax region  clojureRegexpCharClass\t\tstart=\"\\[\" skip=/\\\\\\\\\\|\\\\]/ end=\"]\" contained contains=clojureRegexpPredefinedCharClass,@clojureRegexpCharPropertyClasses\nsyntax match   clojureRegexpBoundary\t\t\"\\\\[bBAGZz]\" contained display\nsyntax match   clojureRegexpBoundary\t\t\"[$^]\" contained display\nsyntax match   clojureRegexpQuantifier\t\t\"[?*+][?+]\\=\" contained display\nsyntax match   clojureRegexpQuantifier\t\t\"\\v\\{\\d+%(,|,\\d+)?}\\??\" contained display\nsyntax match   clojureRegexpOr\t\t\t\"|\" contained display\nsyntax match   clojureRegexpBackRef\t\t\"\\v\\\\%([1-9]\\d*|k\\<[a-zA-z]+\\>)\" contained display\n\n\" Mode modifiers, mode-modified spans, lookaround, regular and atomic\n\" grouping, and named-capturing.\nsyntax match clojureRegexpMod \"\\v\\(@<=\\?:\" contained display\nsyntax match clojureRegexpMod \"\\v\\(@<=\\?[xdsmiuU]*-?[xdsmiuU]+:?\" contained display\nsyntax match clojureRegexpMod \"\\v\\(@<=\\?%(\\<?[=!]|\\>)\" contained display\nsyntax match clojureRegexpMod \"\\v\\(@<=\\?\\<[a-zA-Z]+\\>\" contained display\n\nsyntax region clojureRegexpGroup start=\"(\" skip=/\\\\\\\\\\|\\\\)/ end=\")\" matchgroup=clojureRegexpGroup contained contains=clojureRegexpMod,clojureRegexpQuantifier,clojureRegexpBoundary,clojureRegexpEscape,@clojureRegexpCharClasses\nsyntax region clojureRegexp start=/\\#\"/ skip=/\\\\\\\\\\|\\\\\"/ end=/\"/ contains=@clojureRegexpCharClasses,clojureRegexpEscape,clojureRegexpQuote,clojureRegexpBoundary,clojureRegexpQuantifier,clojureRegexpOr,clojureRegexpBackRef,clojureRegexpGroup keepend\n\nsyntax keyword clojureCommentTodo contained FIXME XXX TODO FIXME: XXX: TODO:\n\nsyntax match clojureComment \";.*$\" contains=clojureCommentTodo,@Spell\nsyntax match clojureComment \"#!.*$\"\n\n\" Generated from https://github.com/guns/vim-clojure-static/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj\nsyntax cluster clojureTop contains=@Spell,clojureAnonArg,clojureBoolean,clojureCharacter,clojureComment,clojureCond,clojureConstant,clojureDefine,clojureDeref,clojureDispatch,clojureError,clojureException,clojureFunc,clojureKeyword,clojureMacro,clojureMap,clojureMeta,clojureNumber,clojureQuote,clojureRegexp,clojureRepeat,clojureSexp,clojureSpecial,clojureString,clojureSymbol,clojureUnquote,clojureVarArg,clojureVariable,clojureVector\n\nsyntax region clojureSexp   matchgroup=clojureParen start=\"(\"  matchgroup=clojureParen end=\")\" contains=@clojureTop fold\nsyntax region clojureVector matchgroup=clojureParen start=\"\\[\" matchgroup=clojureParen end=\"]\" contains=@clojureTop fold\nsyntax region clojureMap    matchgroup=clojureParen start=\"{\"  matchgroup=clojureParen end=\"}\" contains=@clojureTop fold\n\n\" Highlight superfluous closing parens, brackets and braces.\nsyntax match clojureError \"]\\|}\\|)\"\n\nsyntax sync fromstart\n\nhighlight default link clojureConstant\t\t\tConstant\nhighlight default link clojureBoolean\t\t\tBoolean\nhighlight default link clojureCharacter\t\t\tCharacter\nhighlight default link clojureKeyword\t\t\tKeyword\nhighlight default link clojureNumber\t\t\tNumber\nhighlight default link clojureString\t\t\tString\nhighlight default link clojureStringEscape\t\tCharacter\n\nhighlight default link clojureRegexp\t\t\tConstant\nhighlight default link clojureRegexpEscape\t\tCharacter\nhighlight default link clojureRegexpCharClass\t\tSpecialChar\nhighlight default link clojureRegexpPosixCharClass\tclojureRegexpCharClass\nhighlight default link clojureRegexpJavaCharClass\tclojureRegexpCharClass\nhighlight default link clojureRegexpUnicodeCharClass\tclojureRegexpCharClass\nhighlight default link clojureRegexpPredefinedCharClass\tclojureRegexpCharClass\nhighlight default link clojureRegexpBoundary\t\tSpecialChar\nhighlight default link clojureRegexpQuantifier\t\tSpecialChar\nhighlight default link clojureRegexpMod\t\t\tSpecialChar\nhighlight default link clojureRegexpOr\t\t\tSpecialChar\nhighlight default link clojureRegexpBackRef\t\tSpecialChar\nhighlight default link clojureRegexpGroup\t\tclojureRegexp\nhighlight default link clojureRegexpQuoted\t\tclojureString\nhighlight default link clojureRegexpQuote\t\tclojureRegexpBoundary\n\nhighlight default link clojureVariable\t\t\tIdentifier\nhighlight default link clojureCond\t\t\tConditional\nhighlight default link clojureDefine\t\t\tDefine\nhighlight default link clojureException\t\t\tException\nhighlight default link clojureFunc\t\t\tFunction\nhighlight default link clojureMacro\t\t\tMacro\nhighlight default link clojureRepeat\t\t\tRepeat\n\nhighlight default link clojureSpecial\t\t\tSpecial\nhighlight default link clojureVarArg\t\t\tSpecial\nhighlight default link clojureQuote\t\t\tSpecialChar\nhighlight default link clojureUnquote\t\t\tSpecialChar\nhighlight default link clojureMeta\t\t\tSpecialChar\nhighlight default link clojureDeref\t\t\tSpecialChar\nhighlight default link clojureAnonArg\t\t\tSpecialChar\nhighlight default link clojureDispatch\t\t\tSpecialChar\n\nhighlight default link clojureComment\t\t\tComment\nhighlight default link clojureCommentTodo\t\tTodo\n\nhighlight default link clojureError\t\t\tError\n\nhighlight default link clojureParen\t\t\tDelimiter\n\nlet b:current_syntax = \"clojure\"\n\n\" vim:sts=8:sw=8:ts=8:noet:smc=0\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/coffee.vim",
    "content": "\" Language:    CoffeeScript\n\" Maintainer:  Mick Koch <kchmck@gmail.com>\n\" URL:         http://github.com/kchmck/vim-coffee-script\n\" License:     WTFPL\n\n\" Bail if our syntax is already loaded.\nif exists('b:current_syntax') && b:current_syntax == 'coffee'\n  finish\nendif\n\n\" Include JavaScript for coffeeEmbed.\nsyn include @coffeeJS syntax/javascript.vim\nsilent! unlet b:current_syntax\n\n\" Highlight long strings.\nsyntax sync fromstart\n\n\" These are `matches` instead of `keywords` because vim's highlighting\n\" priority for keywords is higher than matches. This causes keywords to be\n\" highlighted inside matches, even if a match says it shouldn't contain them --\n\" like with coffeeAssign and coffeeDot.\nsyn match coffeeStatement /\\<\\%(return\\|break\\|continue\\|throw\\)\\>/ display\nhi def link coffeeStatement Statement\n\nsyn match coffeeRepeat /\\<\\%(for\\|while\\|until\\|loop\\)\\>/ display\nhi def link coffeeRepeat Repeat\n\nsyn match coffeeConditional /\\<\\%(if\\|else\\|unless\\|switch\\|when\\|then\\)\\>/\n\\                           display\nhi def link coffeeConditional Conditional\n\nsyn match coffeeException /\\<\\%(try\\|catch\\|finally\\)\\>/ display\nhi def link coffeeException Exception\n\nsyn match coffeeKeyword /\\<\\%(new\\|in\\|of\\|by\\|and\\|or\\|not\\|is\\|isnt\\|class\\|extends\\|super\\|do\\)\\>/\n\\                       display\n\" The `own` keyword is only a keyword after `for`.\nsyn match coffeeKeyword /\\<for\\s\\+own\\>/ contained containedin=coffeeRepeat\n\\                       display\nhi def link coffeeKeyword Keyword\n\nsyn match coffeeOperator /\\<\\%(instanceof\\|typeof\\|delete\\)\\>/ display\nhi def link coffeeOperator Operator\n\n\" The first case matches symbol operators only if they have an operand before.\nsyn match coffeeExtendedOp /\\%(\\S\\s*\\)\\@<=[+\\-*/%&|\\^=!<>?.]\\{-1,}\\|[-=]>\\|--\\|++\\|:/\n\\                          display\nsyn match coffeeExtendedOp /\\<\\%(and\\|or\\)=/ display\nhi def link coffeeExtendedOp coffeeOperator\n\n\" This is separate from `coffeeExtendedOp` to help differentiate commas from\n\" dots.\nsyn match coffeeSpecialOp /[,;]/ display\nhi def link coffeeSpecialOp SpecialChar\n\nsyn match coffeeBoolean /\\<\\%(true\\|on\\|yes\\|false\\|off\\|no\\)\\>/ display\nhi def link coffeeBoolean Boolean\n\nsyn match coffeeGlobal /\\<\\%(null\\|undefined\\)\\>/ display\nhi def link coffeeGlobal Type\n\n\" A special variable\nsyn match coffeeSpecialVar /\\<\\%(this\\|prototype\\|arguments\\)\\>/ display\nhi def link coffeeSpecialVar Special\n\n\" An @-variable\nsyn match coffeeSpecialIdent /@\\%(\\%(\\I\\|\\$\\)\\%(\\i\\|\\$\\)*\\)\\?/ display\nhi def link coffeeSpecialIdent Identifier\n\n\" A class-like name that starts with a capital letter\nsyn match coffeeObject /\\<\\u\\w*\\>/ display\nhi def link coffeeObject Structure\n\n\" A constant-like name in SCREAMING_CAPS\nsyn match coffeeConstant /\\<\\u[A-Z0-9_]\\+\\>/ display\nhi def link coffeeConstant Constant\n\n\" A variable name\nsyn cluster coffeeIdentifier contains=coffeeSpecialVar,coffeeSpecialIdent,\n\\                                     coffeeObject,coffeeConstant\n\n\" A non-interpolated string\nsyn cluster coffeeBasicString contains=@Spell,coffeeEscape\n\" An interpolated string\nsyn cluster coffeeInterpString contains=@coffeeBasicString,coffeeInterp\n\n\" Regular strings\nsyn region coffeeString start=/\"/ skip=/\\\\\\\\\\|\\\\\"/ end=/\"/\n\\                       contains=@coffeeInterpString\nsyn region coffeeString start=/'/ skip=/\\\\\\\\\\|\\\\'/ end=/'/\n\\                       contains=@coffeeBasicString\nhi def link coffeeString String\n\n\" A integer, including a leading plus or minus\nsyn match coffeeNumber /\\%(\\i\\|\\$\\)\\@<![-+]\\?\\d\\+\\%([eE][+-]\\?\\d\\+\\)\\?/ display\n\" A hex, binary, or octal number\nsyn match coffeeNumber /\\<0[xX]\\x\\+\\>/ display\nsyn match coffeeNumber /\\<0[bB][01]\\+\\>/ display\nsyn match coffeeNumber /\\<0[oO][0-7]\\+\\>/ display\nsyn match coffeeNumber /\\<\\%(Infinity\\|NaN\\)\\>/ display\nhi def link coffeeNumber Number\n\n\" A floating-point number, including a leading plus or minus\nsyn match coffeeFloat /\\%(\\i\\|\\$\\)\\@<![-+]\\?\\d*\\.\\@<!\\.\\d\\+\\%([eE][+-]\\?\\d\\+\\)\\?/\n\\                     display\nhi def link coffeeFloat Float\n\n\" An error for reserved keywords, taken from the RESERVED array:\n\" http://coffeescript.org/documentation/docs/lexer.html#section-67\nsyn match coffeeReservedError /\\<\\%(case\\|default\\|function\\|var\\|void\\|with\\|const\\|let\\|enum\\|export\\|import\\|native\\|__hasProp\\|__extends\\|__slice\\|__bind\\|__indexOf\\|implements\\|interface\\|package\\|private\\|protected\\|public\\|static\\|yield\\)\\>/\n\\                             display\nhi def link coffeeReservedError Error\n\n\" A normal object assignment\nsyn match coffeeObjAssign /@\\?\\%(\\I\\|\\$\\)\\%(\\i\\|\\$\\)*\\s*\\ze::\\@!/ contains=@coffeeIdentifier display\nhi def link coffeeObjAssign Identifier\n\nsyn keyword coffeeTodo TODO FIXME XXX contained\nhi def link coffeeTodo Todo\n\nsyn match coffeeComment /#.*/ contains=@Spell,coffeeTodo\nhi def link coffeeComment Comment\n\nsyn region coffeeBlockComment start=/####\\@!/ end=/###/\n\\                             contains=@Spell,coffeeTodo\nhi def link coffeeBlockComment coffeeComment\n\n\" A comment in a heregex\nsyn region coffeeHeregexComment start=/#/ end=/\\ze\\/\\/\\/\\|$/ contained\n\\                               contains=@Spell,coffeeTodo\nhi def link coffeeHeregexComment coffeeComment\n\n\" Embedded JavaScript\nsyn region coffeeEmbed matchgroup=coffeeEmbedDelim\n\\                      start=/`/ skip=/\\\\\\\\\\|\\\\`/ end=/`/ keepend\n\\                      contains=@coffeeJS\nhi def link coffeeEmbedDelim Delimiter\n\nsyn region coffeeInterp matchgroup=coffeeInterpDelim start=/#{/ end=/}/ contained\n\\                       contains=@coffeeAll\nhi def link coffeeInterpDelim PreProc\n\n\" A string escape sequence\nsyn match coffeeEscape /\\\\\\d\\d\\d\\|\\\\x\\x\\{2\\}\\|\\\\u\\x\\{4\\}\\|\\\\./ contained display\nhi def link coffeeEscape SpecialChar\n\n\" A regex -- must not follow a parenthesis, number, or identifier, and must not\n\" be followed by a number\nsyn region coffeeRegex start=#\\%(\\%()\\|\\%(\\i\\|\\$\\)\\@<!\\d\\)\\s*\\|\\i\\)\\@<!/=\\@!\\s\\@!#\n\\                      end=#/[gimy]\\{,4}\\d\\@!#\n\\                      oneline contains=@coffeeBasicString,coffeeRegexCharSet\nsyn region coffeeRegexCharSet start=/\\[/ end=/]/ contained\n\\                             contains=@coffeeBasicString\nhi def link coffeeRegex String\nhi def link coffeeRegexCharSet coffeeRegex\n\n\" A heregex\nsyn region coffeeHeregex start=#///# end=#///[gimy]\\{,4}#\n\\                        contains=@coffeeInterpString,coffeeHeregexComment,\n\\                                  coffeeHeregexCharSet\n\\                        fold\nsyn region coffeeHeregexCharSet start=/\\[/ end=/]/ contained\n\\                               contains=@coffeeInterpString\nhi def link coffeeHeregex coffeeRegex\nhi def link coffeeHeregexCharSet coffeeHeregex\n\n\" Heredoc strings\nsyn region coffeeHeredoc start=/\"\"\"/ end=/\"\"\"/ contains=@coffeeInterpString\n\\                        fold\nsyn region coffeeHeredoc start=/'''/ end=/'''/ contains=@coffeeBasicString\n\\                        fold\nhi def link coffeeHeredoc String\n\n\" An error for trailing whitespace, as long as the line isn't just whitespace\nsyn match coffeeSpaceError /\\S\\@<=\\s\\+$/ display\nhi def link coffeeSpaceError Error\n\n\" An error for trailing semicolons, for help transitioning from JavaScript\nsyn match coffeeSemicolonError /;$/ display\nhi def link coffeeSemicolonError Error\n\n\" Ignore reserved words in dot accesses.\nsyn match coffeeDotAccess /\\.\\@<!\\.\\s*\\%(\\I\\|\\$\\)\\%(\\i\\|\\$\\)*/he=s+1 contains=@coffeeIdentifier\nhi def link coffeeDotAccess coffeeExtendedOp\n\n\" Ignore reserved words in prototype accesses.\nsyn match coffeeProtoAccess /::\\s*\\%(\\I\\|\\$\\)\\%(\\i\\|\\$\\)*/he=s+2 contains=@coffeeIdentifier\nhi def link coffeeProtoAccess coffeeExtendedOp\n\n\" This is required for interpolations to work.\nsyn region coffeeCurlies matchgroup=coffeeCurly start=/{/ end=/}/\n\\                        contains=@coffeeAll\nsyn region coffeeBrackets matchgroup=coffeeBracket start=/\\[/ end=/\\]/\n\\                         contains=@coffeeAll\nsyn region coffeeParens matchgroup=coffeeParen start=/(/ end=/)/\n\\                       contains=@coffeeAll\n\n\" These are highlighted the same as commas since they tend to go together.\nhi def link coffeeBlock coffeeSpecialOp\nhi def link coffeeBracket coffeeBlock\nhi def link coffeeCurly coffeeBlock\nhi def link coffeeParen coffeeBlock\n\n\" This is used instead of TOP to keep things coffee-specific for good\n\" embedding. `contained` groups aren't included.\nsyn cluster coffeeAll contains=coffeeStatement,coffeeRepeat,coffeeConditional,\n\\                              coffeeException,coffeeKeyword,coffeeOperator,\n\\                              coffeeExtendedOp,coffeeSpecialOp,coffeeBoolean,\n\\                              coffeeGlobal,coffeeSpecialVar,coffeeSpecialIdent,\n\\                              coffeeObject,coffeeConstant,coffeeString,\n\\                              coffeeNumber,coffeeFloat,coffeeReservedError,\n\\                              coffeeObjAssign,coffeeComment,coffeeBlockComment,\n\\                              coffeeEmbed,coffeeRegex,coffeeHeregex,\n\\                              coffeeHeredoc,coffeeSpaceError,\n\\                              coffeeSemicolonError,coffeeDotAccess,\n\\                              coffeeProtoAccess,coffeeCurlies,coffeeBrackets,\n\\                              coffeeParens\n\nif !exists('b:current_syntax')\n  let b:current_syntax = 'coffee'\nendif\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/cpp.vim",
    "content": "\" Vim syntax file\n\" Language:\tC++\n\" Current Maintainer:\tvim-jp (https://github.com/vim-jp/cpp-vim)\n\" Previous Maintainer:\tKen Shan <ccshan@post.harvard.edu>\n\" Last Change:\t2012 Jun 14\n\n\" For version 5.x: Clear all syntax items\n\" For version 6.x: Quit when a syntax file was already loaded\nif version < 600\n  syntax clear\nelseif exists(\"b:current_syntax\")\n  finish\nendif\n\n\" Read the C syntax to start with\nif version < 600\n  so <sfile>:p:h/c.vim\nelse\n  runtime! syntax/c.vim\n  unlet b:current_syntax\nendif\n\n\" C++ extensions\nsyn keyword cppStatement\tnew delete this friend using\nsyn keyword cppAccess\t\tpublic protected private\nsyn keyword cppType\t\tinline virtual explicit export bool wchar_t\nsyn keyword cppExceptions\tthrow try catch\nsyn keyword cppOperator\t\toperator typeid\nsyn keyword cppOperator\t\tand bitor or xor compl bitand and_eq or_eq xor_eq not not_eq\nsyn match cppCast\t\t\"\\<\\(const\\|static\\|dynamic\\|reinterpret\\)_cast\\s*<\"me=e-1\nsyn match cppCast\t\t\"\\<\\(const\\|static\\|dynamic\\|reinterpret\\)_cast\\s*$\"\nsyn keyword cppStorageClass\tmutable\nsyn keyword cppStructure\tclass typename template namespace\nsyn keyword cppBoolean\t\ttrue false\n\n\" C++ 11 extensions\nif !exists(\"cpp_no_cpp11\")\n  syn keyword cppType\t\toverride final\n  syn keyword cppExceptions\tnoexcept\n  syn keyword cppStorageClass\tconstexpr decltype\n  syn keyword cppConstant\tnullptr\n  \" A C++11 raw-string literal. It tries to follow 2.14.5 and 2.14.5.2 of the\n  \" standard.\n  syn region cppRawString matchgroup=cppRawDelim start=+\\%(u8\\=\\|[LU]\\)\\=R\"\\z(\\%([ ()\\\\\\d9-\\d12]\\@![\\d0-\\d127]\\)\\{,16}\\)(+ end=+)\\z1\"+ contains=@Spell\nendif\n\n\" The minimum and maximum operators in GNU C++\nsyn match cppMinMax \"[<>]?\"\n\n\" Default highlighting\nif version >= 508 || !exists(\"did_cpp_syntax_inits\")\n  if version < 508\n    let did_cpp_syntax_inits = 1\n    command -nargs=+ HiLink hi link <args>\n  else\n    command -nargs=+ HiLink hi def link <args>\n  endif\n  HiLink cppAccess\t\tcppStatement\n  HiLink cppCast\t\tcppStatement\n  HiLink cppExceptions\t\tException\n  HiLink cppOperator\t\tOperator\n  HiLink cppStatement\t\tStatement\n  HiLink cppType\t\tType\n  HiLink cppStorageClass\tStorageClass\n  HiLink cppStructure\t\tStructure\n  HiLink cppBoolean\t\tBoolean\n  HiLink cppConstant\t\tConstant\n  HiLink cppRawDelim\t\tcFormat\n  HiLink cppRawString\t\tString\n  delcommand HiLink\nendif\n\nlet b:current_syntax = \"cpp\"\n\n\" vim: ts=8\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/csv.vim",
    "content": "\" A simple syntax highlighting, simply alternate colors between two\n\" adjacent columns\n\" Init {{{2\nlet s:cpo_save = &cpo\nset cpo&vim\n\nscriptencoding utf8\nif version < 600\n    syn clear\nelseif exists(\"b:current_syntax\")\n    finish\nendif\n\n\" Helper functions \"{{{2\nfu! <sid>Warning(msg) \"{{{3\n    \" Don't redraw, so we are not overwriting messages from the ftplugin\n    \" script\n    \"redraw!\n    echohl WarningMsg\n    echomsg \"CSV Syntax:\" . a:msg\n    echohl Normal\nendfu\n\nfu! <sid>Esc(val, char) \"{{2\n    return '\\V'.escape(a:val, '\\\\'.a:char).'\\m'\nendfu\n\nfu! <sid>CheckSaneSearchPattern() \"{{{3\n    let s:del_def = ','\n    let s:col_def = '\\%([^' . s:del_def . ']*' . s:del_def . '\\|$\\)'\n    let s:col_def_end = '\\%([^' . s:del_def . ']*' . s:del_def . '\\)'\n\n    \" First: \n    \" Check for filetype plugin. This syntax script relies on the filetype\n    \" plugin, else, it won't work properly.\n    redir => s:a |sil filetype | redir end\n    let s:a=split(s:a, \"\\n\")[0]\n    if match(s:a, '\\cplugin:off') > 0\n\tcall <sid>Warning(\"No filetype support, only simple highlighting using\"\n\t\t    \\ . s:del_def . \" as delimiter! See :h csv-installation\")\n    endif\n\n    \" Check Comment setting\n    if !exists(\"g:csv_comment\")\n        let b:csv_cmt = split(&cms, '%s')\n    else\n        let b:csv_cmt = split(g:csv_comment, '%s')\n    endif\n\n\n    \" Second: Check for sane defaults for the column pattern\n    \" Not necessary to check for fixed width columns\n    if exists(\"b:csv_fixed_width_cols\")\n\treturn\n    endif\n\n\n    \" Try a simple highlighting, if the defaults from the ftplugin\n    \" don't exist\n    let s:col  = exists(\"b:col\") && !empty(b:col) ? b:col\n\t\t\\ : s:col_def\n    let s:col_end  = exists(\"b:col_end\") && !empty(b:col_end) ? b:col_end\n\t\t\\ : s:col_def_end\n    let s:del  = exists(\"b:delimiter\") && !empty(b:delimiter) ? b:delimiter\n\t\t\\ : s:del_def\n    let s:cmts = exists(\"b:csv_cmt\") ? b:csv_cmt[0] : split(&cms, '&s')[0]\n    let s:cmte = exists(\"b:csv_cmt\") && len(b:csv_cmt) == 2 ? b:csv_cmt[1]\n\t\t\\ : ''\n\n    if line('$') > 1 && (!exists(\"b:col\") || empty(b:col))\n    \" check for invalid pattern, ftplugin hasn't been loaded yet\n\tcall <sid>Warning(\"Invalid column pattern, using default pattern \" . s:col_def)\n    endif\nendfu\n\n\" Syntax rules {{{2\nfu! <sid>DoHighlight() \"{{{3\n    if has(\"conceal\") && !exists(\"g:csv_no_conceal\") &&\n\t\t\\ !exists(\"b:csv_fixed_width_cols\")\n\t\" old val\n\t    \"\\ '\\%(.\\)\\@=/ms=e,me=e contained conceal cchar=' .\n\t    \" Has a problem with the last line!\n\texe \"syn match CSVDelimiter /\" . s:col_end . \n\t    \\ '/ms=e,me=e contained conceal cchar=' .\n\t    \\ (&enc == \"utf-8\" ? \"│\" : '|')\n\t\"exe \"syn match CSVDelimiterEOL /\" . s:del . \n\t\"    \\ '\\?$/ contained conceal cchar=' .\n\t\"    \\ (&enc == \"utf-8\" ? \"│\" : '|')\n\thi def link CSVDelimiter Conceal\n    elseif !exists(\"b:csv_fixed_width_cols\")\n\t\" The \\%(.\\)\\@<= makes sure, the last char won't be concealed,\n\t\" if it isn't a delimiter\n\t\"exe \"syn match CSVDelimiter /\" . s:col . '\\%(.\\)\\@<=/ms=e,me=e contained'\n\texe \"syn match CSVDelimiter /\" . s:col_end . '/ms=e,me=e contained'\n\t\"exe \"syn match CSVDelimiterEOL /\" . s:del . '\\?$/ contained'\n\tif has(\"conceal\")\n\t    hi def link CSVDelimiter Conceal\n\telse\n\t    hi def link CSVDelimiter Ignore\n\tendif\n    endif \" There is no delimiter for csv fixed width columns\n\n\n    if !exists(\"b:csv_fixed_width_cols\")\n\texe 'syn match CSVColumnEven nextgroup=CSVColumnOdd /'\n\t\t    \\ . s:col . '/ contains=CSVDelimiter'\n\texe 'syn match CSVColumnOdd nextgroup=CSVColumnEven /'\n\t\t    \\ . s:col . '/ contains=CSVDelimiter'\n\n\texe 'syn match CSVColumnHeaderEven nextgroup=CSVColumnHeaderOdd /\\%1l'\n\t\t    \\. s:col . '/ contains=CSVDelimiter'\n\texe 'syn match CSVColumnHeaderOdd nextgroup=CSVColumnHeaderEven /\\%1l'\n\t\t    \\. s:col . '/ contains=CSVDelimiter'\n    else\n\tfor i in range(len(b:csv_fixed_width_cols))\n\t    let pat = '/\\%' . b:csv_fixed_width_cols[i] . 'c.*' .\n\t\t\t\\ ((i == len(b:csv_fixed_width_cols)-1) ? '/' : \n\t\t\t\\ '\\%' . b:csv_fixed_width_cols[i+1] . 'c/')\n\n\t    let group  = \"CSVColumn\" . (i%2 ? \"Odd\"  : \"Even\" )\n\t    let ngroup = \"CSVColumn\" . (i%2 ? \"Even\" : \"Odd\"  )\n\t    exe \"syn match \" group pat \" nextgroup=\" . ngroup\n\tendfor\n    endif\n    \" Comment regions\n    exe 'syn match CSVComment /'. <sid>Esc(s:cmts, '/'). '.*'.\n\t\t\\ (!empty(s:cmte) ? '\\%('. <sid>Esc(s:cmte, '/'). '\\)\\?'\n\t\t\\: '').  '/'\n    hi def link CSVComment Comment\nendfun\n\nfu! <sid>DoSyntaxDefinitions() \"{{{3\n    syn spell toplevel\n\n    \" Not really needed\n    syn case ignore\n\n    hi def link CSVColumnHeaderOdd  WarningMsg\n    hi def link CSVColumnHeaderEven WarningMsg\n    hi def link CSVColumnOdd\t    DiffAdd\n    hi def link CSVColumnEven\t    DiffChange\n    \" Old Version\n    if 0\n\tif &t_Co < 88\n\t    if !exists(\"b:csv_fixed_width_cols\")\n\t\thi default CSVColumnHeaderOdd ctermfg=DarkRed ctermbg=15\n\t\t    \\ guibg=grey80 guifg=black term=underline cterm=standout,bold\n\t\t    \\ gui=bold,underline \n\t    endif\n\t    hi default CSVColumnOdd\tctermfg=DarkRed ctermbg=15 guibg=grey80\n\t\t    \\ guifg=black term=underline cterm=bold gui=underline\n\telse\n\t    if !exists(\"b:csv_fixed_width_cols\")\n\t\thi default CSVColumnHeaderOdd ctermfg=darkblue ctermbg=white\n\t\t    \\ guibg=grey80 guifg=black cterm=standout,underline\n\t\t    \\ gui=bold,underline\n\t    endif\n\t    hi default CSVColumnOdd ctermfg=darkblue ctermbg=white guibg=grey80\n\t\t    \\ guifg=black cterm=reverse,underline gui=underline\n\tendif\n\t    \n\t\" ctermbg=8 should be safe, even in 8 color terms\n\tif !exists(\"b:csv_fixed_width_cols\")\n\t    hi default CSVColumnHeaderEven ctermfg=white ctermbg=darkgrey\n\t\t    \\ guibg=grey50 guifg=black term=bold cterm=standout,underline\n\t\t    \\ gui=bold,underline \n\tendif\n\thi default CSVColumnEven ctermfg=white ctermbg=darkgrey guibg=grey50\n\t\t    \\ guifg=black term=bold cterm=underline gui=bold,underline \n    endif\nendfun\n\n\" Main: {{{2 \n\" Make sure, we are using a sane, valid pattern for syntax\n\" highlighting\ncall <sid>CheckSaneSearchPattern()\n\n\" Define all necessary syntax groups\ncall <sid>DoSyntaxDefinitions()\n\n\" Highlight the file\ncall <sid>DoHighlight()\n\n\" Set the syntax variable {{{2\nlet b:current_syntax=\"csv\"\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/cucumber.vim",
    "content": "\" Vim syntax file\n\" Language:     Cucumber\n\" Maintainer:   Tim Pope <vimNOSPAM@tpope.org>\n\" Filenames:    *.feature\n\" Last Change:\t2010 May 21\n\nif exists(\"b:current_syntax\")\n    finish\nendif\nsyn case match\nsyn sync minlines=20\n\nlet g:cucumber_languages = {\n      \\\"en\": {\"and\": \"And\\\\>\", \"background\": \"Background\\\\>\", \"but\": \"But\\\\>\", \"examples\": \"Scenarios\\\\>\\\\|Examples\\\\>\", \"feature\": \"Business Need\\\\>\\\\|Feature\\\\>\\\\|Ability\\\\>\", \"given\": \"Given\\\\>\", \"scenario\": \"Scenario\\\\>\", \"scenario_outline\": \"Scenario Template\\\\>\\\\|Scenario Outline\\\\>\", \"then\": \"Then\\\\>\", \"when\": \"When\\\\>\"},\n      \\\"ar\": {\"and\": \"\\\\%u0648\\\\>\", \"background\": \"\\\\%u0627\\\\%u0644\\\\%u062e\\\\%u0644\\\\%u0641\\\\%u064a\\\\%u0629\\\\>\", \"but\": \"\\\\%u0644\\\\%u0643\\\\%u0646\\\\>\", \"examples\": \"\\\\%u0627\\\\%u0645\\\\%u062b\\\\%u0644\\\\%u0629\\\\>\", \"feature\": \"\\\\%u062e\\\\%u0627\\\\%u0635\\\\%u064a\\\\%u0629\\\\>\", \"given\": \"\\\\%u0628\\\\%u0641\\\\%u0631\\\\%u0636\\\\>\", \"scenario\": \"\\\\%u0633\\\\%u064a\\\\%u0646\\\\%u0627\\\\%u0631\\\\%u064a\\\\%u0648\\\\>\", \"scenario_outline\": \"\\\\%u0633\\\\%u064a\\\\%u0646\\\\%u0627\\\\%u0631\\\\%u064a\\\\%u0648 \\\\%u0645\\\\%u062e\\\\%u0637\\\\%u0637\\\\>\", \"then\": \"\\\\%u0627\\\\%u0630\\\\%u0627\\\\%u064b\\\\>\\\\|\\\\%u062b\\\\%u0645\\\\>\", \"when\": \"\\\\%u0639\\\\%u0646\\\\%u062f\\\\%u0645\\\\%u0627\\\\>\\\\|\\\\%u0645\\\\%u062a\\\\%u0649\\\\>\"},\n      \\\"bg\": {\"and\": \"\\\\%u0418\\\\>\", \"background\": \"\\\\%u041f\\\\%u0440\\\\%u0435\\\\%u0434\\\\%u0438\\\\%u0441\\\\%u0442\\\\%u043e\\\\%u0440\\\\%u0438\\\\%u044f\\\\>\", \"but\": \"\\\\%u041d\\\\%u043e\\\\>\", \"examples\": \"\\\\%u041f\\\\%u0440\\\\%u0438\\\\%u043c\\\\%u0435\\\\%u0440\\\\%u0438\\\\>\", \"feature\": \"\\\\%u0424\\\\%u0443\\\\%u043d\\\\%u043a\\\\%u0446\\\\%u0438\\\\%u043e\\\\%u043d\\\\%u0430\\\\%u043b\\\\%u043d\\\\%u043e\\\\%u0441\\\\%u0442\\\\>\", \"given\": \"\\\\%u0414\\\\%u0430\\\\%u0434\\\\%u0435\\\\%u043d\\\\%u043e\\\\>\", \"scenario\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0439\\\\>\", \"scenario_outline\": \"\\\\%u0420\\\\%u0430\\\\%u043c\\\\%u043a\\\\%u0430 \\\\%u043d\\\\%u0430 \\\\%u0441\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0439\\\\>\", \"then\": \"\\\\%u0422\\\\%u043e\\\\>\", \"when\": \"\\\\%u041a\\\\%u043e\\\\%u0433\\\\%u0430\\\\%u0442\\\\%u043e\\\\>\"},\n      \\\"bm\": {\"and\": \"Dan\\\\>\", \"background\": \"Latar Belakang\\\\>\", \"but\": \"Tetapi\\\\>\", \"examples\": \"Contoh \\\\>\", \"feature\": \"Fungsi\\\\>\", \"given\": \"Bagi\\\\>\", \"scenario\": \"Senario\\\\>\", \"scenario_outline\": \"Menggariskan Senario \\\\>\", \"then\": \"Kemudian\\\\>\", \"when\": \"Apabila\\\\>\"},\n      \\\"ca\": {\"and\": \"I\\\\>\", \"background\": \"Antecedents\\\\>\\\\|Rerefons\\\\>\", \"but\": \"Per\\\\%u00f2\\\\>\", \"examples\": \"Exemples\\\\>\", \"feature\": \"Caracter\\\\%u00edstica\\\\>\\\\|Funcionalitat\\\\>\", \"given\": \"At\\\\%u00e8s\\\\>\\\\|Donada\\\\>\\\\|Donat\\\\>\\\\|Atesa\\\\>\", \"scenario\": \"Escenari\\\\>\", \"scenario_outline\": \"Esquema de l'escenari\\\\>\", \"then\": \"Aleshores\\\\>\\\\|Cal\\\\>\", \"when\": \"Quan\\\\>\"},\n      \\\"cs\": {\"and\": \"A tak\\\\%u00e9\\\\>\\\\|A\\\\>\", \"background\": \"Pozad\\\\%u00ed\\\\>\\\\|Kontext\\\\>\", \"but\": \"Ale\\\\>\", \"examples\": \"P\\\\%u0159\\\\%u00edklady\\\\>\", \"feature\": \"Po\\\\%u017eadavek\\\\>\", \"given\": \"Za p\\\\%u0159edpokladu\\\\>\\\\|Pokud\\\\>\", \"scenario\": \"Sc\\\\%u00e9n\\\\%u00e1\\\\%u0159\\\\>\", \"scenario_outline\": \"N\\\\%u00e1\\\\%u010drt Sc\\\\%u00e9n\\\\%u00e1\\\\%u0159e\\\\>\\\\|Osnova sc\\\\%u00e9n\\\\%u00e1\\\\%u0159e\\\\>\", \"then\": \"Pak\\\\>\", \"when\": \"Kdy\\\\%u017e\\\\>\"},\n      \\\"cy-GB\": {\"and\": \"A\\\\>\", \"background\": \"Cefndir\\\\>\", \"but\": \"Ond\\\\>\", \"examples\": \"Enghreifftiau\\\\>\", \"feature\": \"Arwedd\\\\>\", \"given\": \"Anrhegedig a\\\\>\", \"scenario\": \"Scenario\\\\>\", \"scenario_outline\": \"Scenario Amlinellol\\\\>\", \"then\": \"Yna\\\\>\", \"when\": \"Pryd\\\\>\"},\n      \\\"da\": {\"and\": \"Og\\\\>\", \"background\": \"Baggrund\\\\>\", \"but\": \"Men\\\\>\", \"examples\": \"Eksempler\\\\>\", \"feature\": \"Egenskab\\\\>\", \"given\": \"Givet\\\\>\", \"scenario\": \"Scenarie\\\\>\", \"scenario_outline\": \"Abstrakt Scenario\\\\>\", \"then\": \"S\\\\%u00e5\\\\>\", \"when\": \"N\\\\%u00e5r\\\\>\"},\n      \\\"de\": {\"and\": \"Und\\\\>\", \"background\": \"Grundlage\\\\>\", \"but\": \"Aber\\\\>\", \"examples\": \"Beispiele\\\\>\", \"feature\": \"Funktionalit\\\\%u00e4t\\\\>\", \"given\": \"Gegeben sei\\\\>\\\\|Angenommen\\\\>\", \"scenario\": \"Szenario\\\\>\", \"scenario_outline\": \"Szenariogrundriss\\\\>\", \"then\": \"Dann\\\\>\", \"when\": \"Wenn\\\\>\"},\n      \\\"el\": {\"and\": \"\\\\%u039a\\\\%u03b1\\\\%u03b9\\\\>\", \"background\": \"\\\\%u03a5\\\\%u03c0\\\\%u03cc\\\\%u03b2\\\\%u03b1\\\\%u03b8\\\\%u03c1\\\\%u03bf\\\\>\", \"but\": \"\\\\%u0391\\\\%u03bb\\\\%u03bb\\\\%u03ac\\\\>\", \"examples\": \"\\\\%u03a0\\\\%u03b1\\\\%u03c1\\\\%u03b1\\\\%u03b4\\\\%u03b5\\\\%u03af\\\\%u03b3\\\\%u03bc\\\\%u03b1\\\\%u03c4\\\\%u03b1\\\\>\\\\|\\\\%u03a3\\\\%u03b5\\\\%u03bd\\\\%u03ac\\\\%u03c1\\\\%u03b9\\\\%u03b1\\\\>\", \"feature\": \"\\\\%u0394\\\\%u03c5\\\\%u03bd\\\\%u03b1\\\\%u03c4\\\\%u03cc\\\\%u03c4\\\\%u03b7\\\\%u03c4\\\\%u03b1\\\\>\\\\|\\\\%u039b\\\\%u03b5\\\\%u03b9\\\\%u03c4\\\\%u03bf\\\\%u03c5\\\\%u03c1\\\\%u03b3\\\\%u03af\\\\%u03b1\\\\>\", \"given\": \"\\\\%u0394\\\\%u03b5\\\\%u03b4\\\\%u03bf\\\\%u03bc\\\\%u03ad\\\\%u03bd\\\\%u03bf\\\\%u03c5 \\\\%u03cc\\\\%u03c4\\\\%u03b9\\\\>\\\\|\\\\%u0394\\\\%u03b5\\\\%u03b4\\\\%u03bf\\\\%u03bc\\\\%u03ad\\\\%u03bd\\\\%u03bf\\\\%u03c5\\\\>\", \"scenario\": \"\\\\%u03a3\\\\%u03b5\\\\%u03bd\\\\%u03ac\\\\%u03c1\\\\%u03b9\\\\%u03bf\\\\>\", \"scenario_outline\": \"\\\\%u03a0\\\\%u03b5\\\\%u03c1\\\\%u03b9\\\\%u03b3\\\\%u03c1\\\\%u03b1\\\\%u03c6\\\\%u03ae \\\\%u03a3\\\\%u03b5\\\\%u03bd\\\\%u03b1\\\\%u03c1\\\\%u03af\\\\%u03bf\\\\%u03c5\\\\>\", \"then\": \"\\\\%u03a4\\\\%u03cc\\\\%u03c4\\\\%u03b5\\\\>\", \"when\": \"\\\\%u038c\\\\%u03c4\\\\%u03b1\\\\%u03bd\\\\>\"},\n      \\\"en-Scouse\": {\"and\": \"An\\\\>\", \"background\": \"Dis is what went down\\\\>\", \"but\": \"Buh\\\\>\", \"examples\": \"Examples\\\\>\", \"feature\": \"Feature\\\\>\", \"given\": \"Youse know when youse got\\\\>\\\\|Givun\\\\>\", \"scenario\": \"The thing of it is\\\\>\", \"scenario_outline\": \"Wharrimean is\\\\>\", \"then\": \"Den youse gotta\\\\>\\\\|Dun\\\\>\", \"when\": \"Youse know like when\\\\>\\\\|Wun\\\\>\"},\n      \\\"en-au\": {\"and\": \"Too right\\\\>\", \"background\": \"First off\\\\>\", \"but\": \"Yeah nah\\\\>\", \"examples\": \"You'll wanna\\\\>\", \"feature\": \"Pretty much\\\\>\", \"given\": \"Y'know\\\\>\", \"scenario\": \"Awww, look mate\\\\>\", \"scenario_outline\": \"Reckon it's like\\\\>\", \"then\": \"But at the end of the day I reckon\\\\>\", \"when\": \"It's just unbelievable\\\\>\"},\n      \\\"en-lol\": {\"and\": \"AN\\\\>\", \"background\": \"B4\\\\>\", \"but\": \"BUT\\\\>\", \"examples\": \"EXAMPLZ\\\\>\", \"feature\": \"OH HAI\\\\>\", \"given\": \"I CAN HAZ\\\\>\", \"scenario\": \"MISHUN\\\\>\", \"scenario_outline\": \"MISHUN SRSLY\\\\>\", \"then\": \"DEN\\\\>\", \"when\": \"WEN\\\\>\"},\n      \\\"en-old\": {\"and\": \"Ond\\\\>\\\\|7\\\\>\", \"background\": \"\\\\%u00c6r\\\\>\\\\|Aer\\\\>\", \"but\": \"Ac\\\\>\", \"examples\": \"Se \\\\%u00f0e\\\\>\\\\|Se \\\\%u00fee\\\\>\\\\|Se the\\\\>\", \"feature\": \"Hw\\\\%u00e6t\\\\>\\\\|Hwaet\\\\>\", \"given\": \"\\\\%u00d0urh\\\\>\\\\|\\\\%u00deurh\\\\>\\\\|Thurh\\\\>\", \"scenario\": \"Swa\\\\>\", \"scenario_outline\": \"Swa hw\\\\%u00e6r swa\\\\>\\\\|Swa hwaer swa\\\\>\", \"then\": \"\\\\%u00d0a \\\\%u00f0e\\\\>\\\\|\\\\%u00dea \\\\%u00fee\\\\>\\\\|\\\\%u00dea\\\\>\\\\|\\\\%u00d0a\\\\>\\\\|Tha the\\\\>\\\\|Tha\\\\>\", \"when\": \"\\\\%u00d0a\\\\>\\\\|\\\\%u00dea\\\\>\\\\|Tha\\\\>\"},\n      \\\"en-pirate\": {\"and\": \"Aye\\\\>\", \"background\": \"Yo-ho-ho\\\\>\", \"but\": \"Avast!\\\\>\", \"examples\": \"Dead men tell no tales\\\\>\", \"feature\": \"Ahoy matey!\\\\>\", \"given\": \"Gangway!\\\\>\", \"scenario\": \"Heave to\\\\>\", \"scenario_outline\": \"Shiver me timbers\\\\>\", \"then\": \"Let go and haul\\\\>\", \"when\": \"Blimey!\\\\>\"},\n      \\\"en-tx\": {\"and\": \"And y'all\\\\>\", \"background\": \"Background\\\\>\", \"but\": \"But y'all\\\\>\", \"examples\": \"Examples\\\\>\", \"feature\": \"Feature\\\\>\", \"given\": \"Given y'all\\\\>\", \"scenario\": \"Scenario\\\\>\", \"scenario_outline\": \"All y'all\\\\>\", \"then\": \"Then y'all\\\\>\", \"when\": \"When y'all\\\\>\"},\n      \\\"eo\": {\"and\": \"Kaj\\\\>\", \"background\": \"Fono\\\\>\", \"but\": \"Sed\\\\>\", \"examples\": \"Ekzemploj\\\\>\", \"feature\": \"Trajto\\\\>\", \"given\": \"Donita\\\\%u0135o\\\\>\", \"scenario\": \"Scenaro\\\\>\", \"scenario_outline\": \"Konturo de la scenaro\\\\>\", \"then\": \"Do\\\\>\", \"when\": \"Se\\\\>\"},\n      \\\"es\": {\"and\": \"Y\\\\>\", \"background\": \"Antecedentes\\\\>\", \"but\": \"Pero\\\\>\", \"examples\": \"Ejemplos\\\\>\", \"feature\": \"Caracter\\\\%u00edstica\\\\>\", \"given\": \"Dadas\\\\>\\\\|Dados\\\\>\\\\|Dada\\\\>\\\\|Dado\\\\>\", \"scenario\": \"Escenario\\\\>\", \"scenario_outline\": \"Esquema del escenario\\\\>\", \"then\": \"Entonces\\\\>\", \"when\": \"Cuando\\\\>\"},\n      \\\"et\": {\"and\": \"Ja\\\\>\", \"background\": \"Taust\\\\>\", \"but\": \"Kuid\\\\>\", \"examples\": \"Juhtumid\\\\>\", \"feature\": \"Omadus\\\\>\", \"given\": \"Eeldades\\\\>\", \"scenario\": \"Stsenaarium\\\\>\", \"scenario_outline\": \"Raamstsenaarium\\\\>\", \"then\": \"Siis\\\\>\", \"when\": \"Kui\\\\>\"},\n      \\\"fa\": {\"and\": \"\\\\%u0648\\\\>\", \"background\": \"\\\\%u0632\\\\%u0645\\\\%u06cc\\\\%u0646\\\\%u0647\\\\>\", \"but\": \"\\\\%u0627\\\\%u0645\\\\%u0627\\\\>\", \"examples\": \"\\\\%u0646\\\\%u0645\\\\%u0648\\\\%u0646\\\\%u0647 \\\\%u0647\\\\%u0627\\\\>\", \"feature\": \"\\\\%u0648\\\\%u0650\\\\%u06cc\\\\%u0698\\\\%u06af\\\\%u06cc\\\\>\", \"given\": \"\\\\%u0628\\\\%u0627 \\\\%u0641\\\\%u0631\\\\%u0636\\\\>\", \"scenario\": \"\\\\%u0633\\\\%u0646\\\\%u0627\\\\%u0631\\\\%u06cc\\\\%u0648\\\\>\", \"scenario_outline\": \"\\\\%u0627\\\\%u0644\\\\%u06af\\\\%u0648\\\\%u06cc \\\\%u0633\\\\%u0646\\\\%u0627\\\\%u0631\\\\%u06cc\\\\%u0648\\\\>\", \"then\": \"\\\\%u0622\\\\%u0646\\\\%u06af\\\\%u0627\\\\%u0647\\\\>\", \"when\": \"\\\\%u0647\\\\%u0646\\\\%u06af\\\\%u0627\\\\%u0645\\\\%u06cc\\\\>\"},\n      \\\"fi\": {\"and\": \"Ja\\\\>\", \"background\": \"Tausta\\\\>\", \"but\": \"Mutta\\\\>\", \"examples\": \"Tapaukset\\\\>\", \"feature\": \"Ominaisuus\\\\>\", \"given\": \"Oletetaan\\\\>\", \"scenario\": \"Tapaus\\\\>\", \"scenario_outline\": \"Tapausaihio\\\\>\", \"then\": \"Niin\\\\>\", \"when\": \"Kun\\\\>\"},\n      \\\"fr\": {\"and\": \"Et\\\\>\", \"background\": \"Contexte\\\\>\", \"but\": \"Mais\\\\>\", \"examples\": \"Exemples\\\\>\", \"feature\": \"Fonctionnalit\\\\%u00e9\\\\>\", \"given\": \"\\\\%u00c9tant donn\\\\%u00e9es\\\\>\\\\|\\\\%u00c9tant donn\\\\%u00e9s\\\\>\\\\|\\\\%u00c9tant donn\\\\%u00e9e\\\\>\\\\|\\\\%u00c9tant donn\\\\%u00e9\\\\>\\\\|Etant donn\\\\%u00e9es\\\\>\\\\|Etant donn\\\\%u00e9s\\\\>\\\\|Etant donn\\\\%u00e9e\\\\>\\\\|Etant donn\\\\%u00e9\\\\>\\\\|Soit\\\\>\", \"scenario\": \"Sc\\\\%u00e9nario\\\\>\", \"scenario_outline\": \"Plan du sc\\\\%u00e9nario\\\\>\\\\|Plan du Sc\\\\%u00e9nario\\\\>\", \"then\": \"Alors\\\\>\", \"when\": \"Lorsqu'\\\\|Lorsque\\\\>\\\\|Quand\\\\>\"},\n      \\\"gl\": {\"and\": \"E\\\\>\", \"background\": \"Contexto\\\\>\", \"but\": \"Mais\\\\>\\\\|Pero\\\\>\", \"examples\": \"Exemplos\\\\>\", \"feature\": \"Caracter\\\\%u00edstica\\\\>\", \"given\": \"Dadas\\\\>\\\\|Dados\\\\>\\\\|Dada\\\\>\\\\|Dado\\\\>\", \"scenario\": \"Escenario\\\\>\", \"scenario_outline\": \"Esbozo do escenario\\\\>\", \"then\": \"Ent\\\\%u00f3n\\\\>\\\\|Logo\\\\>\", \"when\": \"Cando\\\\>\"},\n      \\\"he\": {\"and\": \"\\\\%u05d5\\\\%u05d2\\\\%u05dd\\\\>\", \"background\": \"\\\\%u05e8\\\\%u05e7\\\\%u05e2\\\\>\", \"but\": \"\\\\%u05d0\\\\%u05d1\\\\%u05dc\\\\>\", \"examples\": \"\\\\%u05d3\\\\%u05d5\\\\%u05d2\\\\%u05de\\\\%u05d0\\\\%u05d5\\\\%u05ea\\\\>\", \"feature\": \"\\\\%u05ea\\\\%u05db\\\\%u05d5\\\\%u05e0\\\\%u05d4\\\\>\", \"given\": \"\\\\%u05d1\\\\%u05d4\\\\%u05d9\\\\%u05e0\\\\%u05ea\\\\%u05df\\\\>\", \"scenario\": \"\\\\%u05ea\\\\%u05e8\\\\%u05d7\\\\%u05d9\\\\%u05e9\\\\>\", \"scenario_outline\": \"\\\\%u05ea\\\\%u05d1\\\\%u05e0\\\\%u05d9\\\\%u05ea \\\\%u05ea\\\\%u05e8\\\\%u05d7\\\\%u05d9\\\\%u05e9\\\\>\", \"then\": \"\\\\%u05d0\\\\%u05d6\\\\%u05d9\\\\>\\\\|\\\\%u05d0\\\\%u05d6\\\\>\", \"when\": \"\\\\%u05db\\\\%u05d0\\\\%u05e9\\\\%u05e8\\\\>\"},\n      \\\"hi\": {\"and\": \"\\\\%u0924\\\\%u0925\\\\%u093e\\\\>\\\\|\\\\%u0914\\\\%u0930\\\\>\", \"background\": \"\\\\%u092a\\\\%u0943\\\\%u0937\\\\%u094d\\\\%u0920\\\\%u092d\\\\%u0942\\\\%u092e\\\\%u093f\\\\>\", \"but\": \"\\\\%u092a\\\\%u0930\\\\>\", \"examples\": \"\\\\%u0909\\\\%u0926\\\\%u093e\\\\%u0939\\\\%u0930\\\\%u0923\\\\>\", \"feature\": \"\\\\%u0930\\\\%u0942\\\\%u092a \\\\%u0932\\\\%u0947\\\\%u0916\\\\>\", \"given\": \"\\\\%u091a\\\\%u0942\\\\%u0902\\\\%u0915\\\\%u093f\\\\>\\\\|\\\\%u092f\\\\%u0926\\\\%u093f\\\\>\\\\|\\\\%u0905\\\\%u0917\\\\%u0930\\\\>\", \"scenario\": \"\\\\%u092a\\\\%u0930\\\\%u093f\\\\%u0926\\\\%u0943\\\\%u0936\\\\%u094d\\\\%u092f\\\\>\", \"scenario_outline\": \"\\\\%u092a\\\\%u0930\\\\%u093f\\\\%u0926\\\\%u0943\\\\%u0936\\\\%u094d\\\\%u092f \\\\%u0930\\\\%u0942\\\\%u092a\\\\%u0930\\\\%u0947\\\\%u0916\\\\%u093e\\\\>\", \"then\": \"\\\\%u0924\\\\%u092c\\\\>\", \"when\": \"\\\\%u091c\\\\%u092c\\\\>\"},\n      \\\"hr\": {\"and\": \"I\\\\>\", \"background\": \"Pozadina\\\\>\", \"but\": \"Ali\\\\>\", \"examples\": \"Scenariji\\\\>\\\\|Primjeri\\\\>\", \"feature\": \"Mogu\\\\%u0107nost\\\\>\\\\|Mogucnost\\\\>\\\\|Osobina\\\\>\", \"given\": \"Zadano\\\\>\\\\|Zadani\\\\>\\\\|Zadan\\\\>\", \"scenario\": \"Scenarij\\\\>\", \"scenario_outline\": \"Koncept\\\\>\\\\|Skica\\\\>\", \"then\": \"Onda\\\\>\", \"when\": \"Kada\\\\>\\\\|Kad\\\\>\"},\n      \\\"hu\": {\"and\": \"\\\\%u00c9s\\\\>\", \"background\": \"H\\\\%u00e1tt\\\\%u00e9r\\\\>\", \"but\": \"De\\\\>\", \"examples\": \"P\\\\%u00e9ld\\\\%u00e1k\\\\>\", \"feature\": \"Jellemz\\\\%u0151\\\\>\", \"given\": \"Amennyiben\\\\>\\\\|Adott\\\\>\", \"scenario\": \"Forgat\\\\%u00f3k\\\\%u00f6nyv\\\\>\", \"scenario_outline\": \"Forgat\\\\%u00f3k\\\\%u00f6nyv v\\\\%u00e1zlat\\\\>\", \"then\": \"Akkor\\\\>\", \"when\": \"Amikor\\\\>\\\\|Majd\\\\>\\\\|Ha\\\\>\"},\n      \\\"id\": {\"and\": \"Dan\\\\>\", \"background\": \"Dasar\\\\>\", \"but\": \"Tapi\\\\>\", \"examples\": \"Contoh\\\\>\", \"feature\": \"Fitur\\\\>\", \"given\": \"Dengan\\\\>\", \"scenario\": \"Skenario\\\\>\", \"scenario_outline\": \"Skenario konsep\\\\>\", \"then\": \"Maka\\\\>\", \"when\": \"Ketika\\\\>\"},\n      \\\"is\": {\"and\": \"Og\\\\>\", \"background\": \"Bakgrunnur\\\\>\", \"but\": \"En\\\\>\", \"examples\": \"Atbur\\\\%u00f0ar\\\\%u00e1sir\\\\>\\\\|D\\\\%u00e6mi\\\\>\", \"feature\": \"Eiginleiki\\\\>\", \"given\": \"Ef\\\\>\", \"scenario\": \"Atbur\\\\%u00f0ar\\\\%u00e1s\\\\>\", \"scenario_outline\": \"L\\\\%u00fdsing Atbur\\\\%u00f0ar\\\\%u00e1sar\\\\>\\\\|L\\\\%u00fdsing D\\\\%u00e6ma\\\\>\", \"then\": \"\\\\%u00de\\\\%u00e1\\\\>\", \"when\": \"\\\\%u00deegar\\\\>\"},\n      \\\"it\": {\"and\": \"E\\\\>\", \"background\": \"Contesto\\\\>\", \"but\": \"Ma\\\\>\", \"examples\": \"Esempi\\\\>\", \"feature\": \"Funzionalit\\\\%u00e0\\\\>\", \"given\": \"Dato\\\\>\\\\|Data\\\\>\\\\|Dati\\\\>\\\\|Date\\\\>\", \"scenario\": \"Scenario\\\\>\", \"scenario_outline\": \"Schema dello scenario\\\\>\", \"then\": \"Allora\\\\>\", \"when\": \"Quando\\\\>\"},\n      \\\"ja\": {\"and\": \"\\\\%u304b\\\\%u3064\", \"background\": \"\\\\%u80cc\\\\%u666f\\\\>\", \"but\": \"\\\\%u3057\\\\%u304b\\\\%u3057\\\\|\\\\%u305f\\\\%u3060\\\\%u3057\\\\|\\\\%u4f46\\\\%u3057\", \"examples\": \"\\\\%u30b5\\\\%u30f3\\\\%u30d7\\\\%u30eb\\\\>\\\\|\\\\%u4f8b\\\\>\", \"feature\": \"\\\\%u30d5\\\\%u30a3\\\\%u30fc\\\\%u30c1\\\\%u30e3\\\\>\\\\|\\\\%u6a5f\\\\%u80fd\\\\>\", \"given\": \"\\\\%u524d\\\\%u63d0\", \"scenario\": \"\\\\%u30b7\\\\%u30ca\\\\%u30ea\\\\%u30aa\\\\>\", \"scenario_outline\": \"\\\\%u30b7\\\\%u30ca\\\\%u30ea\\\\%u30aa\\\\%u30a2\\\\%u30a6\\\\%u30c8\\\\%u30e9\\\\%u30a4\\\\%u30f3\\\\>\\\\|\\\\%u30b7\\\\%u30ca\\\\%u30ea\\\\%u30aa\\\\%u30c6\\\\%u30f3\\\\%u30d7\\\\%u30ec\\\\%u30fc\\\\%u30c8\\\\>\\\\|\\\\%u30b7\\\\%u30ca\\\\%u30ea\\\\%u30aa\\\\%u30c6\\\\%u30f3\\\\%u30d7\\\\%u30ec\\\\>\\\\|\\\\%u30c6\\\\%u30f3\\\\%u30d7\\\\%u30ec\\\\>\", \"then\": \"\\\\%u306a\\\\%u3089\\\\%u3070\", \"when\": \"\\\\%u3082\\\\%u3057\"},\n      \\\"ko\": {\"and\": \"\\\\%uadf8\\\\%ub9ac\\\\%uace0\", \"background\": \"\\\\%ubc30\\\\%uacbd\\\\>\", \"but\": \"\\\\%ud558\\\\%uc9c0\\\\%ub9cc\\\\|\\\\%ub2e8\", \"examples\": \"\\\\%uc608\\\\>\", \"feature\": \"\\\\%uae30\\\\%ub2a5\\\\>\", \"given\": \"\\\\%uc870\\\\%uac74\\\\|\\\\%uba3c\\\\%uc800\", \"scenario\": \"\\\\%uc2dc\\\\%ub098\\\\%ub9ac\\\\%uc624\\\\>\", \"scenario_outline\": \"\\\\%uc2dc\\\\%ub098\\\\%ub9ac\\\\%uc624 \\\\%uac1c\\\\%uc694\\\\>\", \"then\": \"\\\\%uadf8\\\\%ub7ec\\\\%uba74\", \"when\": \"\\\\%ub9cc\\\\%uc77c\\\\|\\\\%ub9cc\\\\%uc57d\"},\n      \\\"lt\": {\"and\": \"Ir\\\\>\", \"background\": \"Kontekstas\\\\>\", \"but\": \"Bet\\\\>\", \"examples\": \"Pavyzd\\\\%u017eiai\\\\>\\\\|Scenarijai\\\\>\\\\|Variantai\\\\>\", \"feature\": \"Savyb\\\\%u0117\\\\>\", \"given\": \"Duota\\\\>\", \"scenario\": \"Scenarijus\\\\>\", \"scenario_outline\": \"Scenarijaus \\\\%u0161ablonas\\\\>\", \"then\": \"Tada\\\\>\", \"when\": \"Kai\\\\>\"},\n      \\\"lu\": {\"and\": \"an\\\\>\\\\|a\\\\>\", \"background\": \"Hannergrond\\\\>\", \"but\": \"m\\\\%u00e4\\\\>\\\\|awer\\\\>\", \"examples\": \"Beispiller\\\\>\", \"feature\": \"Funktionalit\\\\%u00e9it\\\\>\", \"given\": \"ugeholl\\\\>\", \"scenario\": \"Szenario\\\\>\", \"scenario_outline\": \"Plang vum Szenario\\\\>\", \"then\": \"dann\\\\>\", \"when\": \"wann\\\\>\"},\n      \\\"lv\": {\"and\": \"Un\\\\>\", \"background\": \"Situ\\\\%u0101cija\\\\>\\\\|Konteksts\\\\>\", \"but\": \"Bet\\\\>\", \"examples\": \"Piem\\\\%u0113ri\\\\>\\\\|Paraugs\\\\>\", \"feature\": \"Funkcionalit\\\\%u0101te\\\\>\\\\|F\\\\%u012b\\\\%u010da\\\\>\", \"given\": \"Kad\\\\>\", \"scenario\": \"Scen\\\\%u0101rijs\\\\>\", \"scenario_outline\": \"Scen\\\\%u0101rijs p\\\\%u0113c parauga\\\\>\", \"then\": \"Tad\\\\>\", \"when\": \"Ja\\\\>\"},\n      \\\"nl\": {\"and\": \"En\\\\>\", \"background\": \"Achtergrond\\\\>\", \"but\": \"Maar\\\\>\", \"examples\": \"Voorbeelden\\\\>\", \"feature\": \"Functionaliteit\\\\>\", \"given\": \"Gegeven\\\\>\\\\|Stel\\\\>\", \"scenario\": \"Scenario\\\\>\", \"scenario_outline\": \"Abstract Scenario\\\\>\", \"then\": \"Dan\\\\>\", \"when\": \"Als\\\\>\"},\n      \\\"no\": {\"and\": \"Og\\\\>\", \"background\": \"Bakgrunn\\\\>\", \"but\": \"Men\\\\>\", \"examples\": \"Eksempler\\\\>\", \"feature\": \"Egenskap\\\\>\", \"given\": \"Gitt\\\\>\", \"scenario\": \"Scenario\\\\>\", \"scenario_outline\": \"Abstrakt Scenario\\\\>\\\\|Scenariomal\\\\>\", \"then\": \"S\\\\%u00e5\\\\>\", \"when\": \"N\\\\%u00e5r\\\\>\"},\n      \\\"pl\": {\"and\": \"Oraz\\\\>\\\\|I\\\\>\", \"background\": \"Za\\\\%u0142o\\\\%u017cenia\\\\>\", \"but\": \"Ale\\\\>\", \"examples\": \"Przyk\\\\%u0142ady\\\\>\", \"feature\": \"W\\\\%u0142a\\\\%u015bciwo\\\\%u015b\\\\%u0107\\\\>\\\\|Potrzeba biznesowa\\\\>\\\\|Funkcja\\\\>\\\\|Aspekt\\\\>\", \"given\": \"Zak\\\\%u0142adaj\\\\%u0105c\\\\>\\\\|Maj\\\\%u0105c\\\\>\", \"scenario\": \"Scenariusz\\\\>\", \"scenario_outline\": \"Szablon scenariusza\\\\>\", \"then\": \"Wtedy\\\\>\", \"when\": \"Je\\\\%u017celi\\\\>\\\\|Je\\\\%u015bli\\\\>\\\\|Kiedy\\\\>\\\\|Gdy\\\\>\"},\n      \\\"pt\": {\"and\": \"E\\\\>\", \"background\": \"Cen\\\\%u00e1rio de Fundo\\\\>\\\\|Cenario de Fundo\\\\>\\\\|Contexto\\\\>\\\\|Fundo\\\\>\", \"but\": \"Mas\\\\>\", \"examples\": \"Cen\\\\%u00e1rios\\\\>\\\\|Exemplos\\\\>\\\\|Cenarios\\\\>\", \"feature\": \"Caracter\\\\%u00edstica\\\\>\\\\|Funcionalidade\\\\>\\\\|Caracteristica\\\\>\", \"given\": \"Dadas\\\\>\\\\|Dados\\\\>\\\\|Dada\\\\>\\\\|Dado\\\\>\", \"scenario\": \"Cen\\\\%u00e1rio\\\\>\\\\|Cenario\\\\>\", \"scenario_outline\": \"Delinea\\\\%u00e7\\\\%u00e3o do Cen\\\\%u00e1rio\\\\>\\\\|Esquema do Cen\\\\%u00e1rio\\\\>\\\\|Delineacao do Cenario\\\\>\\\\|Esquema do Cenario\\\\>\", \"then\": \"Ent\\\\%u00e3o\\\\>\\\\|Entao\\\\>\", \"when\": \"Quando\\\\>\"},\n      \\\"ro\": {\"and\": \"\\\\%u015ei\\\\>\\\\|\\\\%u0218i\\\\>\\\\|Si\\\\>\", \"background\": \"Context\\\\>\", \"but\": \"Dar\\\\>\", \"examples\": \"Exemple\\\\>\", \"feature\": \"Func\\\\%u0163ionalitate\\\\>\\\\|Func\\\\%u021bionalitate\\\\>\\\\|Functionalitate\\\\>\", \"given\": \"Da\\\\%u0163i fiind\\\\>\\\\|Da\\\\%u021bi fiind\\\\>\\\\|Dati fiind\\\\>\\\\|Date fiind\\\\>\\\\|Dat fiind\\\\>\", \"scenario\": \"Scenariu\\\\>\", \"scenario_outline\": \"Structur\\\\%u0103 scenariu\\\\>\\\\|Structura scenariu\\\\>\", \"then\": \"Atunci\\\\>\", \"when\": \"C\\\\%u00e2nd\\\\>\\\\|Cand\\\\>\"},\n      \\\"ru\": {\"and\": \"\\\\%u041a \\\\%u0442\\\\%u043e\\\\%u043c\\\\%u0443 \\\\%u0436\\\\%u0435\\\\>\\\\|\\\\%u0422\\\\%u0430\\\\%u043a\\\\%u0436\\\\%u0435\\\\>\\\\|\\\\%u0418\\\\>\", \"background\": \"\\\\%u041f\\\\%u0440\\\\%u0435\\\\%u0434\\\\%u044b\\\\%u0441\\\\%u0442\\\\%u043e\\\\%u0440\\\\%u0438\\\\%u044f\\\\>\\\\|\\\\%u041a\\\\%u043e\\\\%u043d\\\\%u0442\\\\%u0435\\\\%u043a\\\\%u0441\\\\%u0442\\\\>\", \"but\": \"\\\\%u041d\\\\%u043e\\\\>\\\\|\\\\%u0410\\\\>\", \"examples\": \"\\\\%u041f\\\\%u0440\\\\%u0438\\\\%u043c\\\\%u0435\\\\%u0440\\\\%u044b\\\\>\", \"feature\": \"\\\\%u0424\\\\%u0443\\\\%u043d\\\\%u043a\\\\%u0446\\\\%u0438\\\\%u043e\\\\%u043d\\\\%u0430\\\\%u043b\\\\>\\\\|\\\\%u0421\\\\%u0432\\\\%u043e\\\\%u0439\\\\%u0441\\\\%u0442\\\\%u0432\\\\%u043e\\\\>\\\\|\\\\%u0424\\\\%u0443\\\\%u043d\\\\%u043a\\\\%u0446\\\\%u0438\\\\%u044f\\\\>\", \"given\": \"\\\\%u0414\\\\%u043e\\\\%u043f\\\\%u0443\\\\%u0441\\\\%u0442\\\\%u0438\\\\%u043c\\\\>\\\\|\\\\%u041f\\\\%u0443\\\\%u0441\\\\%u0442\\\\%u044c\\\\>\\\\|\\\\%u0414\\\\%u0430\\\\%u043d\\\\%u043e\\\\>\", \"scenario\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0439\\\\>\", \"scenario_outline\": \"\\\\%u0421\\\\%u0442\\\\%u0440\\\\%u0443\\\\%u043a\\\\%u0442\\\\%u0443\\\\%u0440\\\\%u0430 \\\\%u0441\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u044f\\\\>\", \"then\": \"\\\\%u0422\\\\%u043e\\\\%u0433\\\\%u0434\\\\%u0430\\\\>\\\\|\\\\%u0422\\\\%u043e\\\\>\", \"when\": \"\\\\%u041a\\\\%u043e\\\\%u0433\\\\%u0434\\\\%u0430\\\\>\\\\|\\\\%u0415\\\\%u0441\\\\%u043b\\\\%u0438\\\\>\"},\n      \\\"sk\": {\"and\": \"A z\\\\%u00e1rove\\\\%u0148\\\\>\\\\|A taktie\\\\%u017e\\\\>\\\\|A tie\\\\%u017e\\\\>\\\\|A\\\\>\", \"background\": \"Pozadie\\\\>\", \"but\": \"Ale\\\\>\", \"examples\": \"Pr\\\\%u00edklady\\\\>\", \"feature\": \"Po\\\\%u017eiadavka\\\\>\\\\|Vlastnos\\\\%u0165\\\\>\\\\|Funkcia\\\\>\", \"given\": \"Za predpokladu\\\\>\\\\|Pokia\\\\%u013e\\\\>\", \"scenario\": \"Scen\\\\%u00e1r\\\\>\", \"scenario_outline\": \"N\\\\%u00e1\\\\%u010drt Scen\\\\%u00e1ru\\\\>\\\\|N\\\\%u00e1\\\\%u010drt Scen\\\\%u00e1ra\\\\>\\\\|Osnova Scen\\\\%u00e1ra\\\\>\", \"then\": \"Potom\\\\>\\\\|Tak\\\\>\", \"when\": \"Ke\\\\%u010f\\\\>\\\\|Ak\\\\>\"},\n      \\\"sr-Cyrl\": {\"and\": \"\\\\%u0418\\\\>\", \"background\": \"\\\\%u041a\\\\%u043e\\\\%u043d\\\\%u0442\\\\%u0435\\\\%u043a\\\\%u0441\\\\%u0442\\\\>\\\\|\\\\%u041f\\\\%u043e\\\\%u0437\\\\%u0430\\\\%u0434\\\\%u0438\\\\%u043d\\\\%u0430\\\\>\\\\|\\\\%u041e\\\\%u0441\\\\%u043d\\\\%u043e\\\\%u0432\\\\%u0430\\\\>\", \"but\": \"\\\\%u0410\\\\%u043b\\\\%u0438\\\\>\", \"examples\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0458\\\\%u0438\\\\>\\\\|\\\\%u041f\\\\%u0440\\\\%u0438\\\\%u043c\\\\%u0435\\\\%u0440\\\\%u0438\\\\>\", \"feature\": \"\\\\%u0424\\\\%u0443\\\\%u043d\\\\%u043a\\\\%u0446\\\\%u0438\\\\%u043e\\\\%u043d\\\\%u0430\\\\%u043b\\\\%u043d\\\\%u043e\\\\%u0441\\\\%u0442\\\\>\\\\|\\\\%u041c\\\\%u043e\\\\%u0433\\\\%u0443\\\\%u045b\\\\%u043d\\\\%u043e\\\\%u0441\\\\%u0442\\\\>\\\\|\\\\%u041e\\\\%u0441\\\\%u043e\\\\%u0431\\\\%u0438\\\\%u043d\\\\%u0430\\\\>\", \"given\": \"\\\\%u0417\\\\%u0430\\\\%u0434\\\\%u0430\\\\%u0442\\\\%u043e\\\\>\\\\|\\\\%u0417\\\\%u0430\\\\%u0434\\\\%u0430\\\\%u0442\\\\%u0435\\\\>\\\\|\\\\%u0417\\\\%u0430\\\\%u0434\\\\%u0430\\\\%u0442\\\\%u0438\\\\>\", \"scenario\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u043e\\\\>\\\\|\\\\%u041f\\\\%u0440\\\\%u0438\\\\%u043c\\\\%u0435\\\\%u0440\\\\>\", \"scenario_outline\": \"\\\\%u0421\\\\%u0442\\\\%u0440\\\\%u0443\\\\%u043a\\\\%u0442\\\\%u0443\\\\%u0440\\\\%u0430 \\\\%u0441\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0458\\\\%u0430\\\\>\\\\|\\\\%u041a\\\\%u043e\\\\%u043d\\\\%u0446\\\\%u0435\\\\%u043f\\\\%u0442\\\\>\\\\|\\\\%u0421\\\\%u043a\\\\%u0438\\\\%u0446\\\\%u0430\\\\>\", \"then\": \"\\\\%u041e\\\\%u043d\\\\%u0434\\\\%u0430\\\\>\", \"when\": \"\\\\%u041a\\\\%u0430\\\\%u0434\\\\%u0430\\\\>\\\\|\\\\%u041a\\\\%u0430\\\\%u0434\\\\>\"},\n      \\\"sr-Latn\": {\"and\": \"I\\\\>\", \"background\": \"Kontekst\\\\>\\\\|Pozadina\\\\>\\\\|Osnova\\\\>\", \"but\": \"Ali\\\\>\", \"examples\": \"Scenariji\\\\>\\\\|Primeri\\\\>\", \"feature\": \"Mogu\\\\%u0107nost\\\\>\\\\|Funkcionalnost\\\\>\\\\|Mogucnost\\\\>\\\\|Osobina\\\\>\", \"given\": \"Zadato\\\\>\\\\|Zadate\\\\>\\\\|Zatati\\\\>\", \"scenario\": \"Scenario\\\\>\\\\|Primer\\\\>\", \"scenario_outline\": \"Struktura scenarija\\\\>\\\\|Koncept\\\\>\\\\|Skica\\\\>\", \"then\": \"Onda\\\\>\", \"when\": \"Kada\\\\>\\\\|Kad\\\\>\"},\n      \\\"sv\": {\"and\": \"Och\\\\>\", \"background\": \"Bakgrund\\\\>\", \"but\": \"Men\\\\>\", \"examples\": \"Exempel\\\\>\", \"feature\": \"Egenskap\\\\>\", \"given\": \"Givet\\\\>\", \"scenario\": \"Scenario\\\\>\", \"scenario_outline\": \"Abstrakt Scenario\\\\>\\\\|Scenariomall\\\\>\", \"then\": \"S\\\\%u00e5\\\\>\", \"when\": \"N\\\\%u00e4r\\\\>\"},\n      \\\"th\": {\"and\": \"\\\\%u0e41\\\\%u0e25\\\\%u0e30\\\\>\", \"background\": \"\\\\%u0e41\\\\%u0e19\\\\%u0e27\\\\%u0e04\\\\%u0e34\\\\%u0e14\\\\>\", \"but\": \"\\\\%u0e41\\\\%u0e15\\\\%u0e48\\\\>\", \"examples\": \"\\\\%u0e0a\\\\%u0e38\\\\%u0e14\\\\%u0e02\\\\%u0e2d\\\\%u0e07\\\\%u0e40\\\\%u0e2b\\\\%u0e15\\\\%u0e38\\\\%u0e01\\\\%u0e32\\\\%u0e23\\\\%u0e13\\\\%u0e4c\\\\>\\\\|\\\\%u0e0a\\\\%u0e38\\\\%u0e14\\\\%u0e02\\\\%u0e2d\\\\%u0e07\\\\%u0e15\\\\%u0e31\\\\%u0e27\\\\%u0e2d\\\\%u0e22\\\\%u0e48\\\\%u0e32\\\\%u0e07\\\\>\", \"feature\": \"\\\\%u0e04\\\\%u0e27\\\\%u0e32\\\\%u0e21\\\\%u0e15\\\\%u0e49\\\\%u0e2d\\\\%u0e07\\\\%u0e01\\\\%u0e32\\\\%u0e23\\\\%u0e17\\\\%u0e32\\\\%u0e07\\\\%u0e18\\\\%u0e38\\\\%u0e23\\\\%u0e01\\\\%u0e34\\\\%u0e08\\\\>\\\\|\\\\%u0e04\\\\%u0e27\\\\%u0e32\\\\%u0e21\\\\%u0e2a\\\\%u0e32\\\\%u0e21\\\\%u0e32\\\\%u0e23\\\\%u0e16\\\\>\\\\|\\\\%u0e42\\\\%u0e04\\\\%u0e23\\\\%u0e07\\\\%u0e2b\\\\%u0e25\\\\%u0e31\\\\%u0e01\\\\>\", \"given\": \"\\\\%u0e01\\\\%u0e33\\\\%u0e2b\\\\%u0e19\\\\%u0e14\\\\%u0e43\\\\%u0e2b\\\\%u0e49\\\\>\", \"scenario\": \"\\\\%u0e40\\\\%u0e2b\\\\%u0e15\\\\%u0e38\\\\%u0e01\\\\%u0e32\\\\%u0e23\\\\%u0e13\\\\%u0e4c\\\\>\", \"scenario_outline\": \"\\\\%u0e42\\\\%u0e04\\\\%u0e23\\\\%u0e07\\\\%u0e2a\\\\%u0e23\\\\%u0e49\\\\%u0e32\\\\%u0e07\\\\%u0e02\\\\%u0e2d\\\\%u0e07\\\\%u0e40\\\\%u0e2b\\\\%u0e15\\\\%u0e38\\\\%u0e01\\\\%u0e32\\\\%u0e23\\\\%u0e13\\\\%u0e4c\\\\>\\\\|\\\\%u0e2a\\\\%u0e23\\\\%u0e38\\\\%u0e1b\\\\%u0e40\\\\%u0e2b\\\\%u0e15\\\\%u0e38\\\\%u0e01\\\\%u0e32\\\\%u0e23\\\\%u0e13\\\\%u0e4c\\\\>\", \"then\": \"\\\\%u0e14\\\\%u0e31\\\\%u0e07\\\\%u0e19\\\\%u0e31\\\\%u0e49\\\\%u0e19\\\\>\", \"when\": \"\\\\%u0e40\\\\%u0e21\\\\%u0e37\\\\%u0e48\\\\%u0e2d\\\\>\"},\n      \\\"tl\": {\"and\": \"\\\\%u0c2e\\\\%u0c30\\\\%u0c3f\\\\%u0c2f\\\\%u0c41\\\\>\", \"background\": \"\\\\%u0c28\\\\%u0c47\\\\%u0c2a\\\\%u0c25\\\\%u0c4d\\\\%u0c2f\\\\%u0c02\\\\>\", \"but\": \"\\\\%u0c15\\\\%u0c3e\\\\%u0c28\\\\%u0c3f\\\\>\", \"examples\": \"\\\\%u0c09\\\\%u0c26\\\\%u0c3e\\\\%u0c39\\\\%u0c30\\\\%u0c23\\\\%u0c32\\\\%u0c41\\\\>\", \"feature\": \"\\\\%u0c17\\\\%u0c41\\\\%u0c23\\\\%u0c2e\\\\%u0c41\\\\>\", \"given\": \"\\\\%u0c1a\\\\%u0c46\\\\%u0c2a\\\\%u0c4d\\\\%u0c2a\\\\%u0c2c\\\\%u0c21\\\\%u0c3f\\\\%u0c28\\\\%u0c26\\\\%u0c3f\\\\>\", \"scenario\": \"\\\\%u0c38\\\\%u0c28\\\\%u0c4d\\\\%u0c28\\\\%u0c3f\\\\%u0c35\\\\%u0c47\\\\%u0c36\\\\%u0c02\\\\>\", \"scenario_outline\": \"\\\\%u0c15\\\\%u0c25\\\\%u0c28\\\\%u0c02\\\\>\", \"then\": \"\\\\%u0c05\\\\%u0c2a\\\\%u0c4d\\\\%u0c2a\\\\%u0c41\\\\%u0c21\\\\%u0c41\\\\>\", \"when\": \"\\\\%u0c08 \\\\%u0c2a\\\\%u0c30\\\\%u0c3f\\\\%u0c38\\\\%u0c4d\\\\%u0c25\\\\%u0c3f\\\\%u0c24\\\\%u0c3f\\\\%u0c32\\\\%u0c4b\\\\>\"},\n      \\\"tr\": {\"and\": \"Ve\\\\>\", \"background\": \"Ge\\\\%u00e7mi\\\\%u015f\\\\>\", \"but\": \"Fakat\\\\>\\\\|Ama\\\\>\", \"examples\": \"\\\\%u00d6rnekler\\\\>\", \"feature\": \"\\\\%u00d6zellik\\\\>\", \"given\": \"Diyelim ki\\\\>\", \"scenario\": \"Senaryo\\\\>\", \"scenario_outline\": \"Senaryo tasla\\\\%u011f\\\\%u0131\\\\>\", \"then\": \"O zaman\\\\>\", \"when\": \"E\\\\%u011fer ki\\\\>\"},\n      \\\"tt\": {\"and\": \"\\\\%u04ba\\\\%u04d9\\\\%u043c\\\\>\\\\|\\\\%u0412\\\\%u04d9\\\\>\", \"background\": \"\\\\%u041a\\\\%u0435\\\\%u0440\\\\%u0435\\\\%u0448\\\\>\", \"but\": \"\\\\%u041b\\\\%u04d9\\\\%u043a\\\\%u0438\\\\%u043d\\\\>\\\\|\\\\%u04d8\\\\%u043c\\\\%u043c\\\\%u0430\\\\>\", \"examples\": \"\\\\%u04ae\\\\%u0440\\\\%u043d\\\\%u04d9\\\\%u043a\\\\%u043b\\\\%u04d9\\\\%u0440\\\\>\\\\|\\\\%u041c\\\\%u0438\\\\%u0441\\\\%u0430\\\\%u043b\\\\%u043b\\\\%u0430\\\\%u0440\\\\>\", \"feature\": \"\\\\%u04ae\\\\%u0437\\\\%u0435\\\\%u043d\\\\%u0447\\\\%u04d9\\\\%u043b\\\\%u0435\\\\%u043a\\\\%u043b\\\\%u0435\\\\%u043b\\\\%u0435\\\\%u043a\\\\>\\\\|\\\\%u041c\\\\%u04e9\\\\%u043c\\\\%u043a\\\\%u0438\\\\%u043d\\\\%u043b\\\\%u0435\\\\%u043a\\\\>\", \"given\": \"\\\\%u04d8\\\\%u0439\\\\%u0442\\\\%u0438\\\\%u043a\\\\>\", \"scenario\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0439\\\\>\", \"scenario_outline\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0439\\\\%u043d\\\\%u044b\\\\%u04a3 \\\\%u0442\\\\%u04e9\\\\%u0437\\\\%u0435\\\\%u043b\\\\%u0435\\\\%u0448\\\\%u0435\\\\>\", \"then\": \"\\\\%u041d\\\\%u04d9\\\\%u0442\\\\%u0438\\\\%u0497\\\\%u04d9\\\\%u0434\\\\%u04d9\\\\>\", \"when\": \"\\\\%u04d8\\\\%u0433\\\\%u04d9\\\\%u0440\\\\>\"},\n      \\\"uk\": {\"and\": \"\\\\%u0410 \\\\%u0442\\\\%u0430\\\\%u043a\\\\%u043e\\\\%u0436\\\\>\\\\|\\\\%u0422\\\\%u0430\\\\>\\\\|\\\\%u0406\\\\>\", \"background\": \"\\\\%u041f\\\\%u0435\\\\%u0440\\\\%u0435\\\\%u0434\\\\%u0443\\\\%u043c\\\\%u043e\\\\%u0432\\\\%u0430\\\\>\", \"but\": \"\\\\%u0410\\\\%u043b\\\\%u0435\\\\>\", \"examples\": \"\\\\%u041f\\\\%u0440\\\\%u0438\\\\%u043a\\\\%u043b\\\\%u0430\\\\%u0434\\\\%u0438\\\\>\", \"feature\": \"\\\\%u0424\\\\%u0443\\\\%u043d\\\\%u043a\\\\%u0446\\\\%u0456\\\\%u043e\\\\%u043d\\\\%u0430\\\\%u043b\\\\>\", \"given\": \"\\\\%u041f\\\\%u0440\\\\%u0438\\\\%u043f\\\\%u0443\\\\%u0441\\\\%u0442\\\\%u0438\\\\%u043c\\\\%u043e, \\\\%u0449\\\\%u043e\\\\>\\\\|\\\\%u041f\\\\%u0440\\\\%u0438\\\\%u043f\\\\%u0443\\\\%u0441\\\\%u0442\\\\%u0438\\\\%u043c\\\\%u043e\\\\>\\\\|\\\\%u041d\\\\%u0435\\\\%u0445\\\\%u0430\\\\%u0439\\\\>\\\\|\\\\%u0414\\\\%u0430\\\\%u043d\\\\%u043e\\\\>\", \"scenario\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0456\\\\%u0439\\\\>\", \"scenario_outline\": \"\\\\%u0421\\\\%u0442\\\\%u0440\\\\%u0443\\\\%u043a\\\\%u0442\\\\%u0443\\\\%u0440\\\\%u0430 \\\\%u0441\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0456\\\\%u044e\\\\>\", \"then\": \"\\\\%u0422\\\\%u043e\\\\%u0434\\\\%u0456\\\\>\\\\|\\\\%u0422\\\\%u043e\\\\>\", \"when\": \"\\\\%u042f\\\\%u043a\\\\%u0449\\\\%u043e\\\\>\\\\|\\\\%u041a\\\\%u043e\\\\%u043b\\\\%u0438\\\\>\"},\n      \\\"uz\": {\"and\": \"\\\\%u0412\\\\%u0430\\\\>\", \"background\": \"\\\\%u0422\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0445\\\\>\", \"but\": \"\\\\%u041b\\\\%u0435\\\\%u043a\\\\%u0438\\\\%u043d\\\\>\\\\|\\\\%u0411\\\\%u0438\\\\%u0440\\\\%u043e\\\\%u043a\\\\>\\\\|\\\\%u0410\\\\%u043c\\\\%u043c\\\\%u043e\\\\>\", \"examples\": \"\\\\%u041c\\\\%u0438\\\\%u0441\\\\%u043e\\\\%u043b\\\\%u043b\\\\%u0430\\\\%u0440\\\\>\", \"feature\": \"\\\\%u0424\\\\%u0443\\\\%u043d\\\\%u043a\\\\%u0446\\\\%u0438\\\\%u043e\\\\%u043d\\\\%u0430\\\\%u043b\\\\>\", \"given\": \"\\\\%u0410\\\\%u0433\\\\%u0430\\\\%u0440\\\\>\", \"scenario\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0439\\\\>\", \"scenario_outline\": \"\\\\%u0421\\\\%u0446\\\\%u0435\\\\%u043d\\\\%u0430\\\\%u0440\\\\%u0438\\\\%u0439 \\\\%u0441\\\\%u0442\\\\%u0440\\\\%u0443\\\\%u043a\\\\%u0442\\\\%u0443\\\\%u0440\\\\%u0430\\\\%u0441\\\\%u0438\\\\>\", \"then\": \"\\\\%u0423\\\\%u043d\\\\%u0434\\\\%u0430\\\\>\", \"when\": \"\\\\%u0410\\\\%u0433\\\\%u0430\\\\%u0440\\\\>\"},\n      \\\"vi\": {\"and\": \"V\\\\%u00e0\\\\>\", \"background\": \"B\\\\%u1ed1i c\\\\%u1ea3nh\\\\>\", \"but\": \"Nh\\\\%u01b0ng\\\\>\", \"examples\": \"D\\\\%u1eef li\\\\%u1ec7u\\\\>\", \"feature\": \"T\\\\%u00ednh n\\\\%u0103ng\\\\>\", \"given\": \"Bi\\\\%u1ebft\\\\>\\\\|Cho\\\\>\", \"scenario\": \"T\\\\%u00ecnh hu\\\\%u1ed1ng\\\\>\\\\|K\\\\%u1ecbch b\\\\%u1ea3n\\\\>\", \"scenario_outline\": \"Khung t\\\\%u00ecnh hu\\\\%u1ed1ng\\\\>\\\\|Khung k\\\\%u1ecbch b\\\\%u1ea3n\\\\>\", \"then\": \"Th\\\\%u00ec\\\\>\", \"when\": \"Khi\\\\>\"},\n      \\\"zh-CN\": {\"and\": \"\\\\%u800c\\\\%u4e14\\\\|\\\\%u5e76\\\\%u4e14\\\\|\\\\%u540c\\\\%u65f6\", \"background\": \"\\\\%u80cc\\\\%u666f\\\\>\", \"but\": \"\\\\%u4f46\\\\%u662f\", \"examples\": \"\\\\%u4f8b\\\\%u5b50\\\\>\", \"feature\": \"\\\\%u529f\\\\%u80fd\\\\>\", \"given\": \"\\\\%u5047\\\\%u5982\\\\|\\\\%u5047\\\\%u8bbe\\\\|\\\\%u5047\\\\%u5b9a\", \"scenario\": \"\\\\%u573a\\\\%u666f\\\\>\\\\|\\\\%u5267\\\\%u672c\\\\>\", \"scenario_outline\": \"\\\\%u573a\\\\%u666f\\\\%u5927\\\\%u7eb2\\\\>\\\\|\\\\%u5267\\\\%u672c\\\\%u5927\\\\%u7eb2\\\\>\", \"then\": \"\\\\%u90a3\\\\%u4e48\", \"when\": \"\\\\%u5f53\"},\n      \\\"zh-TW\": {\"and\": \"\\\\%u800c\\\\%u4e14\\\\|\\\\%u4e26\\\\%u4e14\\\\|\\\\%u540c\\\\%u6642\", \"background\": \"\\\\%u80cc\\\\%u666f\\\\>\", \"but\": \"\\\\%u4f46\\\\%u662f\", \"examples\": \"\\\\%u4f8b\\\\%u5b50\\\\>\", \"feature\": \"\\\\%u529f\\\\%u80fd\\\\>\", \"given\": \"\\\\%u5047\\\\%u5982\\\\|\\\\%u5047\\\\%u8a2d\\\\|\\\\%u5047\\\\%u5b9a\", \"scenario\": \"\\\\%u5834\\\\%u666f\\\\>\\\\|\\\\%u5287\\\\%u672c\\\\>\", \"scenario_outline\": \"\\\\%u5834\\\\%u666f\\\\%u5927\\\\%u7db1\\\\>\\\\|\\\\%u5287\\\\%u672c\\\\%u5927\\\\%u7db1\\\\>\", \"then\": \"\\\\%u90a3\\\\%u9ebc\", \"when\": \"\\\\%u7576\"}}\n\nfunction! s:pattern(key)\n  let language = matchstr(getline(1),'#\\s*language:\\s*\\zs\\S\\+')\n  if &fileencoding == 'latin1' && language == ''\n    let language = 'en'\n  endif\n  if has_key(g:cucumber_languages, language)\n    let languages = [g:cucumber_languages[language]]\n  else\n    let languages = values(g:cucumber_languages)\n  end\n  return '\\<\\%('.join(map(languages,'get(v:val,a:key,\"\\\\%(a\\\\&b\\\\)\")'),'\\|').'\\)'\nendfunction\n\nfunction! s:Add(name)\n  let next = \" skipempty skipwhite nextgroup=\".join(map([\"Region\",\"AndRegion\",\"ButRegion\",\"Comment\",\"String\",\"Table\"],'\"cucumber\".a:name.v:val'),\",\")\n  exe \"syn region cucumber\".a:name.'Region matchgroup=cucumber'.a:name.' start=\"\\%(^\\s*\\)\\@<=\\%('.s:pattern(tolower(a:name)).'\\)\" end=\"$\"'.next\n  exe 'syn region cucumber'.a:name.'AndRegion matchgroup=cucumber'.a:name.'And start=\"\\%(^\\s*\\)\\@<='.s:pattern('and').'\" end=\"$\" contained'.next\n  exe 'syn region cucumber'.a:name.'ButRegion matchgroup=cucumber'.a:name.'But start=\"\\%(^\\s*\\)\\@<='.s:pattern('but').'\" end=\"$\" contained'.next\n  exe 'syn match cucumber'.a:name.'Comment \"\\%(^\\s*\\)\\@<=#.*\" contained'.next\n  exe 'syn region cucumber'.a:name.'String start=+\\%(^\\s*\\)\\@<=\"\"\"+ end=+\"\"\"+ contained'.next\n  exe 'syn match cucumber'.a:name.'Table \"\\%(^\\s*\\)\\@<=|.*\" contained contains=cucumberDelimiter'.next\n  exe 'hi def link cucumber'.a:name.'Comment cucumberComment'\n  exe 'hi def link cucumber'.a:name.'String cucumberString'\n  exe 'hi def link cucumber'.a:name.'But cucumber'.a:name.'And'\n  exe 'hi def link cucumber'.a:name.'And cucumber'.a:name\n  exe 'syn cluster cucumberStepRegions add=cucumber'.a:name.'Region,cucumber'.a:name.'AndRegion,cucumber'.a:name.'ButRegion'\nendfunction\n\nsyn match   cucumberComment  \"\\%(^\\s*\\)\\@<=#.*\"\nsyn match   cucumberComment  \"\\%(\\%^\\s*\\)\\@<=#.*\" contains=cucumberLanguage\nsyn match   cucumberLanguage \"\\%(#\\s*\\)\\@<=language:\" contained\nsyn match   cucumberUnparsed \"\\S.*\" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberTags,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty contained\nsyn match   cucumberUnparsedComment \"#.*\" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberTags,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty contained\n\nexe 'syn match cucumberFeature \"\\%(^\\s*\\)\\@<='.s:pattern('feature').':\" nextgroup=cucumberUnparsedComment,cucumberUnparsed,cucumberBackground,cucumberScenario,cucumberScenarioOutline,cucumberExamples skipwhite skipempty'\nexe 'syn match cucumberBackground \"\\%(^\\s*\\)\\@<='.s:pattern('background').':\"'\nexe 'syn match cucumberScenario \"\\%(^\\s*\\)\\@<='.s:pattern('scenario').':\"'\nexe 'syn match cucumberScenarioOutline \"\\%(^\\s*\\)\\@<='.s:pattern('scenario_outline').':\"'\nexe 'syn match cucumberExamples \"\\%(^\\s*\\)\\@<='.s:pattern('examples').':\" nextgroup=cucumberExampleTable skipempty skipwhite'\n\nsyn match   cucumberPlaceholder   \"<[^<>]*>\" contained containedin=@cucumberStepRegions\nsyn match   cucumberExampleTable  \"\\%(^\\s*\\)\\@<=|.*\" contains=cucumberDelimiter\nsyn match   cucumberDelimiter     \"\\\\\\@<!\\%(\\\\\\\\\\)*\\zs|\" contained\nsyn match   cucumberTags          \"\\%(^\\s*\\)\\@<=\\%(@[^@[:space:]]\\+\\s\\+\\)*@[^@[:space:]]\\+\\s*$\" contains=@NoSpell\n\ncall s:Add('Then')\ncall s:Add('When')\ncall s:Add('Given')\n\nhi def link cucumberUnparsedComment   cucumberComment\nhi def link cucumberComment           Comment\nhi def link cucumberLanguage          SpecialComment\nhi def link cucumberFeature           Macro\nhi def link cucumberBackground        Define\nhi def link cucumberScenario          Define\nhi def link cucumberScenarioOutline   Define\nhi def link cucumberExamples          Define\nhi def link cucumberPlaceholder       Constant\nhi def link cucumberDelimiter         Delimiter\nhi def link cucumberTags              Tag\nhi def link cucumberString            String\nhi def link cucumberGiven             Conditional\nhi def link cucumberWhen              Function\nhi def link cucumberThen              Type\n\nlet b:current_syntax = \"cucumber\"\n\n\" vim:set sts=2 sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/dockerfile.vim",
    "content": "\" dockerfile.vim - Syntax highlighting for Dockerfiles\n\" Maintainer:   Honza Pokorny <http://honza.ca>\n\" Version:      0.5\n\n\nif exists(\"b:current_syntax\")\n    finish\nendif\n\nlet b:current_syntax = \"dockerfile\"\n\nsyntax case ignore\n\nsyntax match dockerfileKeyword /\\v^\\s*(FROM|MAINTAINER|RUN|CMD|EXPOSE|ENV|ADD)\\s/\nsyntax match dockerfileKeyword /\\v^\\s*(ENTRYPOINT|VOLUME|USER|WORKDIR)\\s/\nhighlight link dockerfileKeyword Keyword\n\nsyntax region dockerfileString start=/\\v\"/ skip=/\\v\\\\./ end=/\\v\"/\nhighlight link dockerfileString String\n\nsyntax match dockerfileComment \"\\v^\\s*#.*$\"\nhighlight link dockerfileComment Comment\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/elixir.vim",
    "content": "\" Vim syntax file\n\" Language: Elixir\n\" Maintainer: Carlos Galdino <carloshsgaldino@gmail.com>\n\" Last Change: 2013 Apr 24\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\n\" syncing starts 2000 lines before top line so docstrings don't screw things up\nsyn sync minlines=2000\n\nsyn cluster elixirNotTop contains=@elixirRegexSpecial,@elixirStringContained,@elixirDeclaration,elixirTodo,elixirArguments\n\nsyn match elixirComment '#.*' contains=elixirTodo\nsyn keyword elixirTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained\n\nsyn keyword elixirKeyword is_atom is_binary is_bitstring is_boolean is_float is_function is_integer is_list is_number is_pid is_port is_record is_reference is_tuple is_exception\nsyn keyword elixirKeyword case cond bc lc inlist inbits if unless try receive\nsyn keyword elixirKeyword exit raise throw after rescue catch else do end\nsyn keyword elixirKeyword quote unquote super\nsyn match   elixirKeyword '\\<\\%(->\\)\\>\\s*'\n\nsyn keyword elixirInclude import require alias use\n\nsyn keyword elixirOperator and not or when xor in\nsyn match elixirOperator '%=\\|\\*=\\|\\*\\*=\\|+=\\|-=\\|\\^=\\|||='\nsyn match elixirOperator \"\\%(<=>\\|<\\%(<\\|=\\)\\@!\\|>\\%(<\\|=\\|>\\)\\@!\\|<=\\|>=\\|===\\|==\\|=\\~\\|!=\\|!\\~\\|\\s?[ \\t]\\@=\\)\"\nsyn match elixirOperator \"!+[ \\t]\\@=\\|&&\\|||\\|\\^\\|\\*\\|+\\|-\\|/\"\nsyn match elixirOperator \"|\\|++\\|--\\|\\*\\*\\|\\/\\/\\|\\\\\\\\\\|<-\\|<>\\|<<\\|>>\\|=\\|\\.\\|::\"\n\nsyn match elixirSymbol '\\(:\\)\\@<!:\\%([a-zA-Z_]\\w*\\%([?!]\\|=[>=]\\@!\\)\\?\\|<>\\|===\\?\\|>=\\?\\|<=\\?\\)'\nsyn match elixirSymbol '\\(:\\)\\@<!:\\%(<=>\\|&&\\?\\|%\\(()\\|\\[\\]\\|{}\\)\\|++\\?\\|--\\?\\|||\\?\\|!\\|//\\|[%&`/|]\\)'\nsyn match elixirSymbol \"\\%([a-zA-Z_]\\w*\\([?!]\\)\\?\\):\\(:\\)\\@!\"\n\nsyn keyword elixirName nil\nsyn match   elixirName '\\<[A-Z]\\w*\\>'\n\nsyn match elixirUnusedVariable '\\<_\\w*\\>'\n\nsyn keyword elixirBoolean true false\n\nsyn match elixirVariable '@[a-zA-Z_]\\w*\\|&\\d'\n\nsyn keyword elixirPseudoVariable __FILE__ __DIR__ __MODULE__ __ENV__ __CALLER__\n\nsyn match elixirNumber '\\<\\d\\(_\\?\\d\\)*\\(\\.[^[:space:][:digit:]]\\@!\\(_\\?\\d\\)*\\)\\?\\([eE][-+]\\?\\d\\(_\\?\\d\\)*\\)\\?\\>'\nsyn match elixirNumber '\\<0[xX][0-9A-Fa-f]\\+\\>'\nsyn match elixirNumber '\\<0[bB][01]\\+\\>'\n\nsyn match elixirRegexEscape            \"\\\\\\\\\\|\\\\[aAbBcdDefGhHnrsStvVwW]\\|\\\\\\d\\{3}\\|\\\\x[0-9a-fA-F]\\{2}\" contained\nsyn match elixirRegexEscapePunctuation \"?\\|\\\\.\\|*\\|\\\\\\[\\|\\\\\\]\\|+\\|\\\\^\\|\\\\\\$\\|\\\\|\\|\\\\(\\|\\\\)\\|\\\\{\\|\\\\}\" contained\nsyn match elixirRegexQuantifier        \"[*?+][?+]\\=\" contained display\nsyn match elixirRegexQuantifier        \"{\\d\\+\\%(,\\d*\\)\\=}?\\=\" contained display\nsyn match elixirRegexCharClass         \"\\[:\\(alnum\\|alpha\\|ascii\\|blank\\|cntrl\\|digit\\|graph\\|lower\\|print\\|punct\\|space\\|upper\\|word\\|xdigit\\):\\]\" contained display\n\nsyn region elixirRegex matchgroup=elixirDelimiter start=\"%r/\" end=\"/[uiomxfr]*\" skip=\"\\\\\\\\\" contains=@elixirRegexSpecial\n\nsyn cluster elixirRegexSpecial    contains=elixirRegexEscape,elixirRegexCharClass,elixirRegexQuantifier,elixirRegexEscapePunctuation\nsyn cluster elixirStringContained contains=elixirInterpolation,elixirRegexEscape,elixirRegexCharClass\n\nsyn region elixirString        matchgroup=elixirDelimiter start=\"'\" end=\"'\" skip=\"\\\\'\"\nsyn region elixirString        matchgroup=elixirDelimiter start='\"' end='\"' skip='\\\\\"' contains=@elixirStringContained\nsyn region elixirInterpolation matchgroup=elixirDelimiter start=\"#{\" end=\"}\" contained contains=ALLBUT,elixirComment,@elixirNotTop\n\nsyn region elixirDocStringStart matchgroup=elixirDocString start=+\"\"\"+ end=+$+ oneline contains=ALLBUT,@elixirNotTop\nsyn region elixirDocStringStart matchgroup=elixirDocString start=+'''+ end=+$+ oneline contains=ALLBUT,@elixirNotTop\nsyn region elixirDocString     start=+\\z(\"\"\"\\)+ end=+^\\s*\\zs\\z1+ contains=elixirDocStringStart,elixirTodo,elixirInterpolation fold keepend\nsyn region elixirDocString     start=+\\z('''\\)+ end=+^\\s*\\zs\\z1+ contains=elixirDocStringStart,elixirTodo,elixirInterpolation fold keepend\n\nsyn match elixirSymbolInterpolated ':\\(\"\\)\\@=' contains=elixirString\nsyn match elixirString             \"\\(\\w\\)\\@<!?\\%(\\\\\\(x\\d{1,2}\\|\\h{1,2}\\h\\@!\\>\\|0[0-7]{0,2}[0-7]\\@!\\>\\|[^x0MC]\\)\\|(\\\\[MC]-)+\\w\\|[^\\s\\\\]\\)\"\n\nsyn region elixirBlock              matchgroup=elixirKeyword start=\"\\<do\\>\\(:\\)\\@!\" end=\"\\<end\\>\" contains=ALLBUT,@elixirNotTop fold\nsyn region elixirAnonymousFunction  matchgroup=elixirKeyword start=\"\\<fn\\>\"         end=\"\\<end\\>\" contains=ALLBUT,@elixirNotTop fold\n\nsyn region elixirArguments start=\"(\" end=\")\" contained contains=elixirOperator,elixirSymbol,elixirPseudoVariable,elixirName,elixirBoolean,elixirVariable,elixirUnusedVariable,elixirNumber,elixirDocString,elixirSymbolInterpolated,elixirRegex,elixirString,elixirDelimiter\n\nsyn match elixirDelimEscape \"\\\\[(<{\\[)>}\\]]\" transparent display contained contains=NONE\n\nsyn region elixirSigil matchgroup=elixirDelimiter start=\"[%~]\\z([~`!@#$%^&*_\\-+|\\:;\"',.?/]\\)\"        end=\"\\z1\" skip=\"\\\\\\\\\\|\\\\\\z1\" fold\nsyn region elixirSigil matchgroup=elixirDelimiter start=\"[%~][SCRW]\\z([~`!@#$%^&*_\\-+=|\\:;\"',.?/]\\)\" end=\"\\z1\" skip=\"\\\\\\\\\\|\\\\\\z1\" fold\nsyn region elixirSigil matchgroup=elixirDelimiter start=\"[%~][SCRW]\\={\"                              end=\"}\"   skip=\"\\\\\\\\\\|\\\\}\"   contains=elixirDelimEscape fold\nsyn region elixirSigil matchgroup=elixirDelimiter start=\"[%~][SCRW]\\=<\"                              end=\">\"   skip=\"\\\\\\\\\\|\\\\>\"   contains=elixirDelimEscape fold\nsyn region elixirSigil matchgroup=elixirDelimiter start=\"[%~][SCRW]\\=\\[\"                             end=\"\\]\"  skip=\"\\\\\\\\\\|\\\\\\]\"  contains=elixirDelimEscape fold\nsyn region elixirSigil matchgroup=elixirDelimiter start=\"[%~][SCRW]\\=(\"                              end=\")\"   skip=\"\\\\\\\\\\|\\\\)\"   contains=elixirDelimEscape fold\n\nsyn region elixirSigil matchgroup=elixirDelimiter start=\"[%~][scrw]\\z([~`!@#$%^&*_\\-+=|\\:;\"',.?/]\\)\" end=\"\\z1\" skip=\"\\\\\\\\\\|\\\\\\z1\" fold\nsyn region elixirSigil matchgroup=elixirDelimiter start=\"[%~][scrw]{\"                                end=\"}\"   skip=\"\\\\\\\\\\|\\\\}\"   fold contains=@elixirStringContained,elixirRegexEscapePunctuation\nsyn region elixirSigil matchgroup=elixirDelimiter start=\"[%~][scrw]<\"                                end=\">\"   skip=\"\\\\\\\\\\|\\\\>\"   fold contains=@elixirStringContained,elixirRegexEscapePunctuation\nsyn region elixirSigil matchgroup=elixirDelimiter start=\"[%~][scrw]\\[\"                               end=\"\\]\"  skip=\"\\\\\\\\\\|\\\\\\]\"  fold contains=@elixirStringContained,elixirRegexEscapePunctuation\nsyn region elixirSigil matchgroup=elixirDelimiter start=\"[%~][scrw](\"                                end=\")\"   skip=\"\\\\\\\\\\|\\\\)\"   fold contains=@elixirStringContained,elixirRegexEscapePunctuation\n\n\" Sigils surrounded with docString\nsyn region elixirSigil matchgroup=elixirDelimiter start=+[%~][SCRWscrw]\\z(\"\"\"\\)+ end=+^\\s*\\zs\\z1+ skip=+\\\\\"+ fold\nsyn region elixirSigil matchgroup=elixirDelimiter start=+[%~][SCRWscrw]\\z('''\\)+ end=+^\\s*\\zs\\z1+ skip=+\\\\'+ fold\n\n\" Defines\nsyn keyword elixirDefine              def            nextgroup=elixirFunctionDeclaration    skipwhite skipnl\nsyn keyword elixirDefine              def            nextgroup=elixirFunctionDeclaration    skipwhite skipnl\nsyn keyword elixirPrivateDefine       defp           nextgroup=elixirFunctionDeclaration    skipwhite skipnl\nsyn keyword elixirModuleDefine        defmodule      nextgroup=elixirModuleDeclaration      skipwhite skipnl\nsyn keyword elixirProtocolDefine      defprotocol    nextgroup=elixirProtocolDeclaration    skipwhite skipnl\nsyn keyword elixirImplDefine          defimpl        nextgroup=elixirImplDeclaration        skipwhite skipnl\nsyn keyword elixirRecordDefine        defrecord      nextgroup=elixirRecordDeclaration      skipwhite skipnl\nsyn keyword elixirPrivateRecordDefine defrecordp     nextgroup=elixirRecordDeclaration      skipwhite skipnl\nsyn keyword elixirMacroDefine         defmacro       nextgroup=elixirMacroDeclaration       skipwhite skipnl\nsyn keyword elixirPrivateMacroDefine  defmacrop      nextgroup=elixirMacroDeclaration       skipwhite skipnl\nsyn keyword elixirDelegateDefine      defdelegate    nextgroup=elixirDelegateDeclaration    skipwhite skipnl\nsyn keyword elixirOverridableDefine   defoverridable nextgroup=elixirOverridableDeclaration skipwhite skipnl\nsyn keyword elixirExceptionDefine     defexception   nextgroup=elixirExceptionDeclaration   skipwhite skipnl\nsyn keyword elixirCallbackDefine      defcallback    nextgroup=elixirCallbackDeclaration    skipwhite skipnl\n\n\" Declarations\nsyn match  elixirModuleDeclaration      \"[^[:space:];#<]\\+\"        contained contains=elixirName nextgroup=elixirBlock     skipwhite skipnl\nsyn match  elixirFunctionDeclaration    \"[^[:space:];#<,()\\[\\]]\\+\" contained                     nextgroup=elixirArguments skipwhite skipnl\nsyn match  elixirProtocolDeclaration    \"[^[:space:];#<]\\+\"        contained contains=elixirName                           skipwhite skipnl\nsyn match  elixirImplDeclaration        \"[^[:space:];#<]\\+\"        contained contains=elixirName                           skipwhite skipnl\nsyn match  elixirRecordDeclaration      \"[^[:space:];#<]\\+\"        contained contains=elixirName,elixirSymbol              skipwhite skipnl\nsyn match  elixirMacroDeclaration       \"[^[:space:];#<,()\\[\\]]\\+\" contained                     nextgroup=elixirArguments skipwhite skipnl\nsyn match  elixirDelegateDeclaration    \"[^[:space:];#<,()\\[\\]]\\+\" contained contains=elixirFunctionDeclaration            skipwhite skipnl\nsyn region elixirDelegateDeclaration    start='\\['     end='\\]'    contained contains=elixirFunctionDeclaration            skipwhite skipnl\nsyn match  elixirOverridableDeclaration \"[^[:space:];#<]\\+\"        contained contains=elixirName                           skipwhite skipnl\nsyn match  elixirExceptionDeclaration   \"[^[:space:];#<]\\+\"        contained contains=elixirName                           skipwhite skipnl\nsyn match  elixirCallbackDeclaration    \"[^[:space:];#<,()\\[\\]]\\+\" contained contains=elixirFunctionDeclaration            skipwhite skipnl\n\nsyn cluster elixirDeclaration contains=elixirFunctionDeclaration,elixirModuleDeclaration,elixirProtocolDeclaration,elixirImplDeclaration,elixirRecordDeclaration,elixirMacroDeclaration,elixirDelegateDeclaration,elixirOverridableDeclaration,elixirExceptionDeclaration,elixirCallbackDeclaration\n\nhi def link elixirDefine                 Define\nhi def link elixirPrivateDefine          Define\nhi def link elixirModuleDefine           Define\nhi def link elixirProtocolDefine         Define\nhi def link elixirImplDefine             Define\nhi def link elixirRecordDefine           Define\nhi def link elixirPrivateRecordDefine    Define\nhi def link elixirMacroDefine            Define\nhi def link elixirPrivateMacroDefine     Define\nhi def link elixirDelegateDefine         Define\nhi def link elixirOverridableDefine      Define\nhi def link elixirExceptionDefine        Define\nhi def link elixirCallbackDefine         Define\nhi def link elixirFunctionDeclaration    Function\nhi def link elixirMacroDeclaration       Macro\nhi def link elixirInclude                Include\nhi def link elixirComment                Comment\nhi def link elixirTodo                   Todo\nhi def link elixirKeyword                Keyword\nhi def link elixirOperator               Operator\nhi def link elixirSymbol                 Constant\nhi def link elixirPseudoVariable         Constant\nhi def link elixirName                   Type\nhi def link elixirBoolean                Boolean\nhi def link elixirVariable               Identifier\nhi def link elixirUnusedVariable         Comment\nhi def link elixirNumber                 Number\nhi def link elixirDocString              String\nhi def link elixirSymbolInterpolated     elixirSymbol\nhi def link elixirRegex                  elixirString\nhi def link elixirRegexEscape            elixirSpecial\nhi def link elixirRegexEscapePunctuation elixirSpecial\nhi def link elixirRegexCharClass         elixirSpecial\nhi def link elixirRegexQuantifier        elixirSpecial\nhi def link elixirSpecial                Special\nhi def link elixirString                 String\nhi def link elixirSigil                  String\nhi def link elixirDelimiter              Delimiter\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/erlang.vim",
    "content": "\" Vim syntax file\n\" Language:   Erlang\n\" Maintainer: Oscar Hellstrm <oscar@oscarh.net>\n\" URL:        http://oscar.hellstrom.st\n\" Version:    2010-08-09\n\" ------------------------------------------------------------------------------\n\" {{{1\n\" Options:\n\"\n\" Erlang BIFs\n\" g:erlangHighlightBif - highlight erlang built in functions (default: off)\n\"\n\" }}}\n\" -----------------------------------------------------------------------------\n\n\" Setup {{{1\n\" For version 5.x: Clear all syntax items\n\" For version 6.x: Quit when a syntax file was already loaded\nif version < 600\n  syntax clear\nelseif exists(\"b:current_syntax\")\n  finish\nendif\n\n\" Erlang is case sensitive\nsyn case match\n\n\" Match groups {{{1\nsyn match erlangStringModifier               /\\\\./ contained\nsyn match erlangStringModifier               /\\~\\%(-\\?[0-9*]\\+\\)\\?\\%(\\.[0-9*]\\+\\..\\?\\)\\?\\%(c\\|f\\|e\\|g\\|s\\|w\\|p\\|W\\|P\\|B\\|X\\|#\\|b\\|+\\|n\\|i\\)/ contained\nsyn match erlangModifier                     /\\$\\\\\\?./\n\nsyn match erlangInteger                      /\\<\\%([0-9]\\+#[0-9a-fA-F]\\+\\|[0-9]\\+\\)\\>/\nsyn match erlangFloat                        /\\<[0-9]\\+\\.[0-9]\\+\\%(e-\\?[0-9]\\+\\)\\?\\>/\n\nsyn keyword erlangTodo                       TODO FIXME XXX contained\nsyn match erlangComment                      /%.*$/ contains=@Spell,erlangTodo\n\nsyn keyword erlangKeyword                    band bor bnot bsl bsr bxor div rem xor\nsyn keyword erlangKeyword                    try catch begin receive after cond fun let query\n\nsyn keyword erlangConditional                case if of end\nsyn keyword erlangConditional                not and or andalso orelse\nsyn keyword erlangConditional                when\n\nsyn keyword erlangBoolean                    true false\n\nsyn keyword erlangGuard                      is_list is_alive is_atom is_binary is_bitstring is_boolean is_tuple is_number is_integer is_float is_function is_constant is_pid is_port is_reference is_record is_process_alive\n\nsyn match erlangOperator                     /\\/\\|*\\|+\\|-\\|++\\|--/\nsyn match erlangOperator                     /->\\|<-\\|||\\||\\|!\\|=/\nsyn match erlangOperator                     /=:=\\|==\\|\\/=\\|=\\/=\\|<\\|>\\|=<\\|>=/\nsyn keyword erlangOperator                   div rem\n\nsyn region erlangString                      start=/\"/ end=/\"/ skip=/\\\\/ contains=@Spell,erlangStringModifier\n\nsyn match erlangVariable                     /\\<[A-Z_]\\w*\\>/\nsyn match erlangAtom                         /\\%(\\%(^-\\)\\|#\\)\\@<!\\<[a-z][A-Za-z0-9_]*\\>\\%(\\s*[(:]\\)\\@!/\nsyn match erlangAtom                         /\\\\\\@<!'[^']*\\\\\\@<!'/\n\nsyn match erlangRecord                       /#\\w\\+/\n\nsyn match erlangTuple                        /{\\|}/\nsyn match erlangList                         /\\[\\|\\]/\n\n    syn match erlangAttribute                    /^-\\%(vsn\\|author\\|copyright\\|compile\\|deprecated\\|module\\|export\\|import\\|behaviour\\|export_type\\|ignore_xref\\) *(\\@=/\nsyn match erlangInclude                      /^-include\\%(_lib\\)\\?\\s*(\\@=/\nsyn match erlangRecordDef                    /^-record\\s*(\\@=/\nsyn match erlangDefine                       /^-\\%(define\\|undef\\)\\s*(\\@=/\nsyn match erlangPreCondit                    /^-\\%(ifdef\\|ifndef\\|else\\|endif\\)\\%(\\s*(\\@=\\)\\?/\n\nsyn match erlangType                         /^-\\%(spec\\|type\\)[( ]\\@=/\n\nsyn match erlangMacro                        /\\%(-define(\\)\\@<=\\w\\+/\nsyn match erlangMacro                        /?\\w\\+/\n\nsyn match erlangBitType                      /\\%(\\/\\|-\\)\\@<=\\%(bits\\|bitstring\\|binary\\|integer\\|float\\|unit\\)\\>/\nsyn match erlangBitSize                      /:\\@<=[0-9]\\+/\n\nsyn match erlangBinary                      /<<\\|>>/\n\n\" BIFS\nsyn match erlangBIF                          /\\%([^:0-9A-Za-z_]\\|\\<erlang:\\)\\@<=\\%(abs\\|apply\\|atom_to_list\\|binary_part\\|binary_to_list\\|binary_to_term\\|binary_to_atom\\|binary_to_existing_atom\\|bitstring_to_list\\|check_process_code\\|concat_binary\\|date\\|delete_module\\|disconnect_node\\|element\\|erase\\|error\\|exit\\|float\\|float_to_list\\|garbage_collect\\|get\\|get_keys\\|group_leader\\|halt\\|hd\\|integer_to_list\\|iolist_to_binary\\|iolist_size\\|length\\|link\\|list_to_atom\\|list_to_binary\\|list_to_bitstring\\|list_to_existing_atom\\|list_to_float\\|list_to_integer\\|list_to_pid\\|list_to_tuple\\|load_module\\|make_ref\\|monitor_node\\|node\\|nodes\\|now\\|open_port\\|pid_to_list\\|port_close\\|port_command\\|port_connect\\|port_control\\|pre_loaded\\|process_flag\\|process_info\\|processes\\|purge_module\\|put\\|register\\|registered\\|round\\|self\\|setelement\\|size\\|bit_size\\|byte_size\\|spawn\\|spawn_link\\|spawn_opt\\|split_binary\\|statistics\\|term_to_binary\\|throw\\|time\\|tl\\|trunc\\|tuple_to_list\\|unlink\\|unregister\\|whereis\\)\\((\\|\\/[0-9]\\)\\@=/\nsyn match erlangBIF                          /\\<\\%(erlang:\\)\\@<=\\%(append_element\\|bump_reductions\\|cancel_timer\\|decode_packet\\|demonitor\\|display\\|fault\\|fun_info\\|fun_to_list\\|function_exported\\|get_cookie\\|get_stacktrace\\|hash\\|hibernate\\|info\\|is_builtin\\|loaded\\|localtime\\|localtime_to_universaltime\\|localtime_to_universaltime\\|make_tuple\\|md5\\|md5_init\\|md5_update\\|memory\\|monitor\\|monitor_node\\|phash\\|phash2\\|port_call\\|port_info\\|port_to_list\\|ports\\|process_display\\|raise\\|read_timer\\|ref_to_list\\|resume_process\\|send\\|send_after\\|send_nosuspend\\|set_cookie\\|spawn_monitor\\|start_timer\\|suspend_process\\|system_flag\\|system_info\\|system_monitor\\|trace\\|trace_delivered\\|trace_info\\|trace_pattern\\|universaltime\\|universaltime_to_localtime\\|yield\\)(\\@=/\nsyn match erlangGBIF                         /erlang\\(:\\w\\)\\@=/\n\" }}}\n\n\" Link Erlang stuff to Vim groups {{{1\nhi link erlangTodo           Todo\nhi link erlangString         String\nhi link erlangNoSpellString  String \nhi link erlangModifier       SpecialChar\nhi link erlangStringModifier SpecialChar\nhi link erlangComment        Comment\nhi link erlangVariable       Identifier\nhi link erlangInclude        Include\nhi link erlangRecordDef      Keyword\nhi link erlangAttribute      Keyword\nhi link erlangKeyword        Keyword\nhi link erlangMacro          Macro\nhi link erlangDefine         Define\nhi link erlangPreCondit      PreCondit\nhi link erlangPreProc        PreProc\nhi link erlangDelimiter      Delimiter\nhi link erlangBitDelimiter   Normal\nhi link erlangOperator       Operator\nhi link erlangConditional    Conditional\nhi link erlangGuard          Conditional\nhi link erlangBoolean        Boolean\nhi link erlangAtom           Constant\nhi link erlangRecord         Structure\nhi link erlangInteger        Number\nhi link erlangFloat          Number\nhi link erlangFloat          Number\nhi link erlangFloat          Number\nhi link erlangFloat          Number\nhi link erlangHex            Number\nhi link erlangBIF            Keyword\nhi link erlangFun            Keyword\nhi link erlangList           Delimiter\nhi link erlangTuple          Delimiter\nhi link erlangBinary         Keyword\nhi link erlangBitVariable    Identifier\nhi link erlangBitType        Type\nhi link erlangType           Type\nhi link erlangBitSize        Number\n\" }}}\n\n\" Optional linkings {{{1\nif exists(\"g:erlangHighlightBif\") && g:erlangHighlightBif\n\thi link erlangGBIF           Keyword\nendif\n\" }}}\n\nlet b:current_syntax = \"erlang\"\n\n\" vim: set foldmethod=marker:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/eruby.vim",
    "content": "\" Vim syntax file\n\" Language:\t\teRuby\n\" Maintainer:\t\tTim Pope <vimNOSPAM@tpope.org>\n\" URL:\t\t\thttps://github.com/vim-ruby/vim-ruby\n\" Release Coordinator:\tDoug Kearns <dougkearns@gmail.com>\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nif !exists(\"main_syntax\")\n  let main_syntax = 'eruby'\nendif\n\nif !exists(\"g:eruby_default_subtype\")\n  let g:eruby_default_subtype = \"html\"\nendif\n\nif &filetype =~ '^eruby\\.'\n  let b:eruby_subtype = matchstr(&filetype,'^eruby\\.\\zs\\w\\+')\nelseif !exists(\"b:eruby_subtype\") && main_syntax == 'eruby'\n  let s:lines = getline(1).\"\\n\".getline(2).\"\\n\".getline(3).\"\\n\".getline(4).\"\\n\".getline(5).\"\\n\".getline(\"$\")\n  let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\\zs\\w\\+')\n  if b:eruby_subtype == ''\n    let b:eruby_subtype = matchstr(substitute(expand(\"%:t\"),'\\c\\%(\\.erb\\|\\.eruby\\|\\.erubis\\)\\+$','',''),'\\.\\zs\\w\\+$')\n  endif\n  if b:eruby_subtype == 'rhtml'\n    let b:eruby_subtype = 'html'\n  elseif b:eruby_subtype == 'rb'\n    let b:eruby_subtype = 'ruby'\n  elseif b:eruby_subtype == 'yml'\n    let b:eruby_subtype = 'yaml'\n  elseif b:eruby_subtype == 'js'\n    let b:eruby_subtype = 'javascript'\n  elseif b:eruby_subtype == 'txt'\n    \" Conventional; not a real file type\n    let b:eruby_subtype = 'text'\n  elseif b:eruby_subtype == ''\n    let b:eruby_subtype = g:eruby_default_subtype\n  endif\nendif\n\nif !exists(\"b:eruby_nest_level\")\n  let b:eruby_nest_level = strlen(substitute(substitute(substitute(expand(\"%:t\"),'@','','g'),'\\c\\.\\%(erb\\|rhtml\\)\\>','@','g'),'[^@]','','g'))\nendif\nif !b:eruby_nest_level\n  let b:eruby_nest_level = 1\nendif\n\nif exists(\"b:eruby_subtype\") && b:eruby_subtype != ''\n  exe \"runtime! syntax/\".b:eruby_subtype.\".vim\"\n  unlet! b:current_syntax\nendif\nsyn include @rubyTop syntax/ruby.vim\n\nsyn cluster erubyRegions contains=erubyOneLiner,erubyBlock,erubyExpression,erubyComment\n\nexe 'syn region  erubyOneLiner   matchgroup=erubyDelimiter start=\"^%\\{1,'.b:eruby_nest_level.'\\}%\\@!\"    end=\"$\"     contains=@rubyTop\t     containedin=ALLBUT,@erubyRegions keepend oneline'\nexe 'syn region  erubyBlock      matchgroup=erubyDelimiter start=\"<%\\{1,'.b:eruby_nest_level.'\\}%\\@!-\\=\" end=\"[=-]\\=%\\@<!%\\{1,'.b:eruby_nest_level.'\\}>\" contains=@rubyTop  containedin=ALLBUT,@erubyRegions keepend'\nexe 'syn region  erubyExpression matchgroup=erubyDelimiter start=\"<%\\{1,'.b:eruby_nest_level.'\\}=\\{1,4}\" end=\"[=-]\\=%\\@<!%\\{1,'.b:eruby_nest_level.'\\}>\" contains=@rubyTop  containedin=ALLBUT,@erubyRegions keepend'\nexe 'syn region  erubyComment    matchgroup=erubyDelimiter start=\"<%\\{1,'.b:eruby_nest_level.'\\}-\\=#\"    end=\"[=-]\\=%\\@<!%\\{1,'.b:eruby_nest_level.'\\}>\" contains=rubyTodo,@Spell containedin=ALLBUT,@erubyRegions keepend'\n\n\" Define the default highlighting.\n\nhi def link erubyDelimiter\t\tPreProc\nhi def link erubyComment\t\tComment\n\nlet b:current_syntax = 'eruby'\n\nif main_syntax == 'eruby'\n  unlet main_syntax\nendif\n\n\" vim: nowrap sw=2 sts=2 ts=8:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/git.vim",
    "content": "\" Vim syntax file\n\" Language:\tgeneric git output\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Last Change:\t2010 May 21\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nsyn case match\nsyn sync minlines=50\n\nsyn include @gitDiff syntax/diff.vim\n\nsyn region gitHead start=/\\%^/ end=/^$/\nsyn region gitHead start=/\\%(^commit \\x\\{40\\}\\%(\\s*(.*)\\)\\=$\\)\\@=/ end=/^$/\n\n\" For git reflog and git show ...^{tree}, avoid sync issues\nsyn match gitHead /^\\d\\{6\\} \\%(\\w\\{4} \\)\\=\\x\\{40\\}\\%( [0-3]\\)\\=\\t.*/\nsyn match gitHead /^\\x\\{40\\} \\x\\{40}\\t.*/\n\nsyn region gitDiff start=/^\\%(diff --git \\)\\@=/ end=/^\\%(diff --\\|$\\)\\@=/ contains=@gitDiff fold\nsyn region gitDiff start=/^\\%(@@ -\\)\\@=/ end=/^\\%(diff --\\%(git\\|cc\\|combined\\) \\|$\\)\\@=/ contains=@gitDiff\n\nsyn region gitDiffMerge start=/^\\%(diff --\\%(cc\\|combined\\) \\)\\@=/ end=/^\\%(diff --\\|$\\)\\@=/ contains=@gitDiff\nsyn region gitDiffMerge start=/^\\%(@@@@* -\\)\\@=/ end=/^\\%(diff --\\|$\\)\\@=/ contains=@gitDiff\nsyn match gitDiffAdded \"^ \\++.*\" contained containedin=gitDiffMerge\nsyn match gitDiffRemoved \"^ \\+-.*\" contained containedin=gitDiffMerge\n\nsyn match  gitKeyword /^\\%(object\\|type\\|tag\\|commit\\|tree\\|parent\\|encoding\\)\\>/ contained containedin=gitHead nextgroup=gitHash,gitType skipwhite\nsyn match  gitKeyword /^\\%(tag\\>\\|ref:\\)/ contained containedin=gitHead nextgroup=gitReference skipwhite\nsyn match  gitKeyword /^Merge:/  contained containedin=gitHead nextgroup=gitHashAbbrev skipwhite\nsyn match  gitMode    /^\\d\\{6\\}/ contained containedin=gitHead nextgroup=gitType,gitHash skipwhite\nsyn match  gitIdentityKeyword /^\\%(author\\|committer\\|tagger\\)\\>/ contained containedin=gitHead nextgroup=gitIdentity skipwhite\nsyn match  gitIdentityHeader /^\\%(Author\\|Commit\\|Tagger\\):/ contained containedin=gitHead nextgroup=gitIdentity skipwhite\nsyn match  gitDateHeader /^\\%(AuthorDate\\|CommitDate\\|Date\\):/ contained containedin=gitHead nextgroup=gitDate skipwhite\n\nsyn match  gitReflogHeader /^Reflog:/ contained containedin=gitHead nextgroup=gitReflogMiddle skipwhite\nsyn match  gitReflogHeader /^Reflog message:/ contained containedin=gitHead skipwhite\nsyn match  gitReflogMiddle /\\S\\+@{\\d\\+} (/he=e-2 nextgroup=gitIdentity\n\nsyn match  gitDate      /\\<\\u\\l\\l \\u\\l\\l \\d\\=\\d \\d\\d:\\d\\d:\\d\\d \\d\\d\\d\\d [+-]\\d\\d\\d\\d/ contained\nsyn match  gitDate      /-\\=\\d\\+ [+-]\\d\\d\\d\\d\\>/               contained\nsyn match  gitDate      /\\<\\d\\+ \\l\\+ ago\\>/                    contained\nsyn match  gitType      /\\<\\%(tag\\|commit\\|tree\\|blob\\)\\>/     contained nextgroup=gitHash skipwhite\nsyn match  gitStage     /\\<\\d\\t\\@=/                            contained\nsyn match  gitReference /\\S\\+\\S\\@!/                            contained\nsyn match  gitHash      /\\<\\x\\{40\\}\\>/                         contained nextgroup=gitIdentity,gitStage,gitHash skipwhite\nsyn match  gitHash      /^\\<\\x\\{40\\}\\>/ containedin=gitHead contained nextgroup=gitHash skipwhite\nsyn match  gitHashAbbrev /\\<\\x\\{4,40\\}\\>/           contained nextgroup=gitHashAbbrev skipwhite\nsyn match  gitHashAbbrev /\\<\\x\\{4,39\\}\\.\\.\\./he=e-3 contained nextgroup=gitHashAbbrev skipwhite\n\nsyn match  gitIdentity /\\S.\\{-\\} <[^>]*>/ contained nextgroup=gitDate skipwhite\nsyn region gitEmail matchgroup=gitEmailDelimiter start=/</ end=/>/ keepend oneline contained containedin=gitIdentity\n\nsyn match  gitNotesHeader /^Notes:\\ze\\n    /\n\nhi def link gitDateHeader        gitIdentityHeader\nhi def link gitIdentityHeader    gitIdentityKeyword\nhi def link gitIdentityKeyword   Label\nhi def link gitNotesHeader       gitKeyword\nhi def link gitReflogHeader      gitKeyword\nhi def link gitKeyword           Keyword\nhi def link gitIdentity          String\nhi def link gitEmailDelimiter    Delimiter\nhi def link gitEmail             Special\nhi def link gitDate              Number\nhi def link gitMode              Number\nhi def link gitHashAbbrev        gitHash\nhi def link gitHash              Identifier\nhi def link gitReflogMiddle      gitReference\nhi def link gitReference         Function\nhi def link gitStage             gitType\nhi def link gitType              Type\nhi def link gitDiffAdded         diffAdded\nhi def link gitDiffRemoved       diffRemoved\n\nlet b:current_syntax = \"git\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/gitcommit.vim",
    "content": "\" Vim syntax file\n\" Language:\tgit commit file\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Filenames:\t*.git/COMMIT_EDITMSG\n\" Last Change:\t2012 April 7\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nsyn case match\nsyn sync minlines=50\n\nif has(\"spell\")\n  syn spell toplevel\nendif\n\nsyn include @gitcommitDiff syntax/diff.vim\nsyn region gitcommitDiff start=/\\%(^diff --\\%(git\\|cc\\|combined\\) \\)\\@=/ end=/^\\%(diff --\\|$\\|#\\)\\@=/ fold contains=@gitcommitDiff\n\nsyn match   gitcommitFirstLine\t\"\\%^[^#].*\"  nextgroup=gitcommitBlank skipnl\nsyn match   gitcommitSummary\t\"^.\\{0,50\\}\" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell\nsyn match   gitcommitOverflow\t\".*\" contained contains=@Spell\nsyn match   gitcommitBlank\t\"^[^#].*\" contained contains=@Spell\nsyn match   gitcommitComment\t\"^#.*\"\nsyn match   gitcommitHead\t\"^\\%(#   .*\\n\\)\\+#$\" contained transparent\nsyn match   gitcommitOnBranch\t\"\\%(^# \\)\\@<=On branch\" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite\nsyn match   gitcommitOnBranch\t\"\\%(^# \\)\\@<=Your branch .\\{-\\} '\" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite\nsyn match   gitcommitBranch\t\"[^ ']\\+\" contained\nsyn match   gitcommitNoBranch\t\"\\%(^# \\)\\@<=Not currently on any branch.\" contained containedin=gitcommitComment\nsyn match   gitcommitHeader\t\"\\%(^# \\)\\@<=.*:$\"\tcontained containedin=gitcommitComment\nsyn region  gitcommitAuthor\tmatchgroup=gitCommitHeader start=/\\%(^# \\)\\@<=\\%(Author\\|Committer\\):/ end=/$/ keepend oneline contained containedin=gitcommitComment transparent\nsyn match   gitcommitNoChanges\t\"\\%(^# \\)\\@<=No changes$\" contained containedin=gitcommitComment\n\nsyn region  gitcommitUntracked\tstart=/^# Untracked files:/ end=/^#$\\|^#\\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUntrackedFile fold\nsyn match   gitcommitUntrackedFile  \"\\t\\@<=.*\"\tcontained\n\nsyn region  gitcommitDiscarded\tstart=/^# Change\\%(s not staged for commit\\|d but not updated\\):/ end=/^#$\\|^#\\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitDiscardedType fold\nsyn region  gitcommitSelected\tstart=/^# Changes to be committed:/ end=/^#$\\|^#\\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitSelectedType fold\nsyn region  gitcommitUnmerged\tstart=/^# Unmerged paths:/ end=/^#$\\|^#\\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUnmergedType fold\n\nsyn match   gitcommitDiscardedType\t\"\\t\\@<=[a-z][a-z ]*[a-z]: \"he=e-2\tcontained containedin=gitcommitComment nextgroup=gitcommitDiscardedFile skipwhite\nsyn match   gitcommitSelectedType\t\"\\t\\@<=[a-z][a-z ]*[a-z]: \"he=e-2\tcontained containedin=gitcommitComment nextgroup=gitcommitSelectedFile skipwhite\nsyn match   gitcommitUnmergedType\t\"\\t\\@<=[a-z][a-z ]*[a-z]: \"he=e-2\tcontained containedin=gitcommitComment nextgroup=gitcommitUnmergedFile skipwhite\nsyn match   gitcommitDiscardedFile\t\".\\{-\\}\\%($\\| -> \\)\\@=\" contained nextgroup=gitcommitDiscardedArrow\nsyn match   gitcommitSelectedFile\t\".\\{-\\}\\%($\\| -> \\)\\@=\" contained nextgroup=gitcommitSelectedArrow\nsyn match   gitcommitUnmergedFile\t\".\\{-\\}\\%($\\| -> \\)\\@=\" contained nextgroup=gitcommitSelectedArrow\nsyn match   gitcommitDiscardedArrow\t\" -> \" contained nextgroup=gitcommitDiscardedFile\nsyn match   gitcommitSelectedArrow\t\" -> \" contained nextgroup=gitcommitSelectedFile\nsyn match   gitcommitUnmergedArrow\t\" -> \" contained nextgroup=gitcommitSelectedFile\n\nsyn match   gitcommitWarning\t\t\"\\%^[^#].*: needs merge$\" nextgroup=gitcommitWarning skipnl\nsyn match   gitcommitWarning\t\t\"^[^#].*: needs merge$\" nextgroup=gitcommitWarning skipnl contained\nsyn match   gitcommitWarning\t\t\"^\\%(no changes added to commit\\|nothing \\%(added \\)\\=to commit\\)\\>.*\\%$\"\n\nhi def link gitcommitSummary\t\tKeyword\nhi def link gitcommitComment\t\tComment\nhi def link gitcommitUntracked\t\tgitcommitComment\nhi def link gitcommitDiscarded\t\tgitcommitComment\nhi def link gitcommitSelected\t\tgitcommitComment\nhi def link gitcommitUnmerged\t\tgitcommitComment\nhi def link gitcommitOnBranch\t\tComment\nhi def link gitcommitBranch\t\tSpecial\nhi def link gitcommitNoBranch\t\tgitCommitBranch\nhi def link gitcommitDiscardedType\tgitcommitType\nhi def link gitcommitSelectedType\tgitcommitType\nhi def link gitcommitUnmergedType\tgitcommitType\nhi def link gitcommitType\t\tType\nhi def link gitcommitNoChanges\t\tgitcommitHeader\nhi def link gitcommitHeader\t\tPreProc\nhi def link gitcommitUntrackedFile\tgitcommitFile\nhi def link gitcommitDiscardedFile\tgitcommitFile\nhi def link gitcommitSelectedFile\tgitcommitFile\nhi def link gitcommitUnmergedFile\tgitcommitFile\nhi def link gitcommitFile\t\tConstant\nhi def link gitcommitDiscardedArrow\tgitcommitArrow\nhi def link gitcommitSelectedArrow\tgitcommitArrow\nhi def link gitcommitUnmergedArrow\tgitcommitArrow\nhi def link gitcommitArrow\t\tgitcommitComment\n\"hi def link gitcommitOverflow\t\tError\nhi def link gitcommitBlank\t\tError\n\nlet b:current_syntax = \"gitcommit\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/gitconfig.vim",
    "content": "\" Vim syntax file\n\" Language:\tgit config file\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Filenames:\tgitconfig, .gitconfig, *.git/config\n\" Last Change:\t2010 May 21\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nsetlocal iskeyword+=-\nsetlocal iskeyword-=_\nsyn case ignore\nsyn sync minlines=10\n\nsyn match   gitconfigComment\t\"[#;].*\"\nsyn match   gitconfigSection\t\"\\%(^\\s*\\)\\@<=\\[[a-z0-9.-]\\+\\]\"\nsyn match   gitconfigSection\t'\\%(^\\s*\\)\\@<=\\[[a-z0-9.-]\\+ \\+\\\"\\%([^\\\\\"]\\|\\\\.\\)*\"\\]'\nsyn match   gitconfigVariable\t \"\\%(^\\s*\\)\\@<=\\a\\k*\\%(\\s*\\%([=#;]\\|$\\)\\)\\@=\" nextgroup=gitconfigAssignment skipwhite\nsyn region  gitconfigAssignment  matchgroup=gitconfigNone start=+=\\s*+ skip=+\\\\+ end=+\\s*$+ contained contains=gitconfigBoolean,gitconfigNumber,gitConfigString,gitConfigEscape,gitConfigError,gitconfigComment keepend\nsyn keyword gitconfigBoolean true false yes no contained\nsyn match   gitconfigNumber  \"\\d\\+\" contained\nsyn region  gitconfigString  matchgroup=gitconfigDelim start=+\"+ skip=+\\\\+ end=+\"+ matchgroup=gitconfigError end=+[^\\\\\"]\\%#\\@!$+ contained contains=gitconfigEscape,gitconfigEscapeError\nsyn match   gitconfigError  +\\\\.+\t contained\nsyn match   gitconfigEscape +\\\\[\\\\\"ntb]+ contained\nsyn match   gitconfigEscape +\\\\$+\t contained\n\nhi def link gitconfigComment\t\tComment\nhi def link gitconfigSection\t\tKeyword\nhi def link gitconfigVariable\t\tIdentifier\nhi def link gitconfigBoolean\t\tBoolean\nhi def link gitconfigNumber\t\tNumber\nhi def link gitconfigString\t\tString\nhi def link gitconfigDelim\t\tDelimiter\nhi def link gitconfigEscape\t\tDelimiter\nhi def link gitconfigError\t\tError\n\nlet b:current_syntax = \"gitconfig\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/gitrebase.vim",
    "content": "\" Vim syntax file\n\" Language:\tgit rebase --interactive\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Filenames:\tgit-rebase-todo\n\" Last Change:\t2012 April 7\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nsyn case match\n\nsyn match   gitrebaseHash   \"\\v<\\x{7,40}>\"                             contained\nsyn match   gitrebaseCommit \"\\v<\\x{7,40}>\"  nextgroup=gitrebaseSummary skipwhite\nsyn match   gitrebasePick   \"\\v^p%(ick)=>\"   nextgroup=gitrebaseCommit skipwhite\nsyn match   gitrebaseReword \"\\v^r%(eword)=>\" nextgroup=gitrebaseCommit skipwhite\nsyn match   gitrebaseEdit   \"\\v^e%(dit)=>\"   nextgroup=gitrebaseCommit skipwhite\nsyn match   gitrebaseSquash \"\\v^s%(quash)=>\" nextgroup=gitrebaseCommit skipwhite\nsyn match   gitrebaseFixup  \"\\v^f%(ixup)=>\"  nextgroup=gitrebaseCommit skipwhite\nsyn match   gitrebaseExec   \"\\v^%(x|exec)>\" nextgroup=gitrebaseCommand skipwhite\nsyn match   gitrebaseSummary \".*\"               contains=gitrebaseHash contained\nsyn match   gitrebaseCommand \".*\"                                      contained\nsyn match   gitrebaseComment \"^#.*\"             contains=gitrebaseHash\nsyn match   gitrebaseSquashError \"\\v%^%(s%(quash)=>|f%(ixup)=>)\" nextgroup=gitrebaseCommit skipwhite\n\nhi def link gitrebaseCommit         gitrebaseHash\nhi def link gitrebaseHash           Identifier\nhi def link gitrebasePick           Statement\nhi def link gitrebaseReword         Number\nhi def link gitrebaseEdit           PreProc\nhi def link gitrebaseSquash         Type\nhi def link gitrebaseFixup          Special\nhi def link gitrebaseExec           Function\nhi def link gitrebaseSummary        String\nhi def link gitrebaseComment        Comment\nhi def link gitrebaseSquashError    Error\n\nlet b:current_syntax = \"gitrebase\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/gitsendemail.vim",
    "content": "\" Vim syntax file\n\" Language:\tgit send-email message\n\" Maintainer:\tTim Pope\n\" Filenames:\t*.msg.[0-9]* (first line is \"From ... # This line is ignored.\")\n\" Last Change:\t2010 May 21\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nruntime! syntax/mail.vim\nsyn case match\n\nsyn match   gitsendemailComment \"\\%^From.*#.*\"\nsyn match   gitsendemailComment \"^GIT:.*\"\n\nhi def link gitsendemailComment Comment\n\nlet b:current_syntax = \"gitsendemail\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/go.vim",
    "content": "\" Copyright 2009 The Go Authors. All rights reserved.\n\" Use of this source code is governed by a BSD-style\n\" license that can be found in the LICENSE file.\n\"\n\" go.vim: Vim syntax file for Go.\n\"\n\" Options:\n\"   There are some options for customizing the highlighting; the recommended\n\"   settings are the default values, but you can write:\n\"     let OPTION_NAME = 0\n\"   in your ~/.vimrc file to disable particular options. You can also write:\n\"     let OPTION_NAME = 1\n\"   to enable particular options. At present, all options default to on.\n\"\n\"   - go_highlight_array_whitespace_error\n\"     Highlights white space after \"[]\".\n\"   - go_highlight_chan_whitespace_error\n\"     Highlights white space around the communications operator that don't follow\n\"     the standard style.\n\"   - go_highlight_extra_types\n\"     Highlights commonly used library types (io.Reader, etc.).\n\"   - go_highlight_space_tab_error\n\"     Highlights instances of tabs following spaces.\n\"   - go_highlight_trailing_whitespace_error\n\"     Highlights trailing white space.\n\n\" Quit when a (custom) syntax file was already loaded\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nif !exists(\"go_highlight_array_whitespace_error\")\n  let go_highlight_array_whitespace_error = 1\nendif\nif !exists(\"go_highlight_chan_whitespace_error\")\n  let go_highlight_chan_whitespace_error = 1\nendif\nif !exists(\"go_highlight_extra_types\")\n  let go_highlight_extra_types = 1\nendif\nif !exists(\"go_highlight_space_tab_error\")\n  let go_highlight_space_tab_error = 1\nendif\nif !exists(\"go_highlight_trailing_whitespace_error\")\n  let go_highlight_trailing_whitespace_error = 1\nendif\n\nsyn case match\n\nsyn keyword     goDirective         package import\nsyn keyword     goDeclaration       var const type\nsyn keyword     goDeclType          struct interface\n\nhi def link     goDirective         Statement\nhi def link     goDeclaration       Keyword\nhi def link     goDeclType          Keyword\n\n\" Keywords within functions\nsyn keyword     goStatement         defer go goto return break continue fallthrough\nsyn keyword     goConditional       if else switch select\nsyn keyword     goLabel             case default\nsyn keyword     goRepeat            for range\n\nhi def link     goStatement         Statement\nhi def link     goConditional       Conditional\nhi def link     goLabel             Label\nhi def link     goRepeat            Repeat\n\n\" Predefined types\nsyn keyword     goType              chan map bool string error\nsyn keyword     goSignedInts        int int8 int16 int32 int64 rune\nsyn keyword     goUnsignedInts      byte uint uint8 uint16 uint32 uint64 uintptr\nsyn keyword     goFloats            float32 float64\nsyn keyword     goComplexes         complex64 complex128\n\nhi def link     goType              Type\nhi def link     goSignedInts        Type\nhi def link     goUnsignedInts      Type\nhi def link     goFloats            Type\nhi def link     goComplexes         Type\n\n\" Treat func specially: it's a declaration at the start of a line, but a type\n\" elsewhere. Order matters here.\nsyn match       goType              /\\<func\\>/\nsyn match       goDeclaration       /^func\\>/\n\n\" Predefined functions and values\nsyn keyword     goBuiltins          append cap close complex copy delete imag len\nsyn keyword     goBuiltins          make new panic print println real recover\nsyn keyword     goConstants         iota true false nil\n\nhi def link     goBuiltins          Keyword\nhi def link     goConstants         Keyword\n\n\" Comments; their contents\nsyn keyword     goTodo              contained TODO FIXME XXX BUG\nsyn cluster     goCommentGroup      contains=goTodo\nsyn region      goComment           start=\"/\\*\" end=\"\\*/\" contains=@goCommentGroup,@Spell\nsyn region      goComment           start=\"//\" end=\"$\" contains=@goCommentGroup,@Spell\n\nhi def link     goComment           Comment\nhi def link     goTodo              Todo\n\n\" Go escapes\nsyn match       goEscapeOctal       display contained \"\\\\[0-7]\\{3}\"\nsyn match       goEscapeC           display contained +\\\\[abfnrtv\\\\'\"]+\nsyn match       goEscapeX           display contained \"\\\\x\\x\\{2}\"\nsyn match       goEscapeU           display contained \"\\\\u\\x\\{4}\"\nsyn match       goEscapeBigU        display contained \"\\\\U\\x\\{8}\"\nsyn match       goEscapeError       display contained +\\\\[^0-7xuUabfnrtv\\\\'\"]+\n\nhi def link     goEscapeOctal       goSpecialString\nhi def link     goEscapeC           goSpecialString\nhi def link     goEscapeX           goSpecialString\nhi def link     goEscapeU           goSpecialString\nhi def link     goEscapeBigU        goSpecialString\nhi def link     goSpecialString     Special\nhi def link     goEscapeError       Error\n\n\" Strings and their contents\nsyn cluster     goStringGroup       contains=goEscapeOctal,goEscapeC,goEscapeX,goEscapeU,goEscapeBigU,goEscapeError\nsyn region      goString            start=+\"+ skip=+\\\\\\\\\\|\\\\\"+ end=+\"+ contains=@goStringGroup\nsyn region      goRawString         start=+`+ end=+`+\n\nhi def link     goString            String\nhi def link     goRawString         String\n\n\" Characters; their contents\nsyn cluster     goCharacterGroup    contains=goEscapeOctal,goEscapeC,goEscapeX,goEscapeU,goEscapeBigU\nsyn region      goCharacter         start=+'+ skip=+\\\\\\\\\\|\\\\'+ end=+'+ contains=@goCharacterGroup\n\nhi def link     goCharacter         Character\n\n\" Regions\nsyn region      goBlock             start=\"{\" end=\"}\" transparent fold\nsyn region      goParen             start='(' end=')' transparent\n\n\" Integers\nsyn match       goDecimalInt        \"\\<\\d\\+\\([Ee]\\d\\+\\)\\?\\>\"\nsyn match       goHexadecimalInt    \"\\<0x\\x\\+\\>\"\nsyn match       goOctalInt          \"\\<0\\o\\+\\>\"\nsyn match       goOctalError        \"\\<0\\o*[89]\\d*\\>\"\n\nhi def link     goDecimalInt        Integer\nhi def link     goHexadecimalInt    Integer\nhi def link     goOctalInt          Integer\nhi def link     Integer             Number\n\n\" Floating point\nsyn match       goFloat             \"\\<\\d\\+\\.\\d*\\([Ee][-+]\\d\\+\\)\\?\\>\"\nsyn match       goFloat             \"\\<\\.\\d\\+\\([Ee][-+]\\d\\+\\)\\?\\>\"\nsyn match       goFloat             \"\\<\\d\\+[Ee][-+]\\d\\+\\>\"\n\nhi def link     goFloat             Float\n\n\" Imaginary literals\nsyn match       goImaginary         \"\\<\\d\\+i\\>\"\nsyn match       goImaginary         \"\\<\\d\\+\\.\\d*\\([Ee][-+]\\d\\+\\)\\?i\\>\"\nsyn match       goImaginary         \"\\<\\.\\d\\+\\([Ee][-+]\\d\\+\\)\\?i\\>\"\nsyn match       goImaginary         \"\\<\\d\\+[Ee][-+]\\d\\+i\\>\"\n\nhi def link     goImaginary         Number\n\n\" Spaces after \"[]\"\nif go_highlight_array_whitespace_error != 0\n  syn match goSpaceError display \"\\(\\[\\]\\)\\@<=\\s\\+\"\nendif\n\n\" Spacing errors around the 'chan' keyword\nif go_highlight_chan_whitespace_error != 0\n  \" receive-only annotation on chan type\n  syn match goSpaceError display \"\\(<-\\)\\@<=\\s\\+\\(chan\\>\\)\\@=\"\n  \" send-only annotation on chan type\n  syn match goSpaceError display \"\\(\\<chan\\)\\@<=\\s\\+\\(<-\\)\\@=\"\n  \" value-ignoring receives in a few contexts\n  syn match goSpaceError display \"\\(\\(^\\|[={(,;]\\)\\s*<-\\)\\@<=\\s\\+\"\nendif\n\n\" Extra types commonly seen\nif go_highlight_extra_types != 0\n  syn match goExtraType /\\<bytes\\.\\(Buffer\\)\\>/\n  syn match goExtraType /\\<io\\.\\(Reader\\|Writer\\|ReadWriter\\|ReadWriteCloser\\)\\>/\n  syn match goExtraType /\\<reflect\\.\\(Kind\\|Type\\|Value\\)\\>/\n  syn match goExtraType /\\<unsafe\\.Pointer\\>/\nendif\n\n\" Space-tab error\nif go_highlight_space_tab_error != 0\n  syn match goSpaceError display \" \\+\\t\"me=e-1\nendif\n\n\" Trailing white space error\nif go_highlight_trailing_whitespace_error != 0\n  syn match goSpaceError display excludenl \"\\s\\+$\"\nendif\n\nhi def link     goExtraType         Type\nhi def link     goSpaceError        Error\n\n\" Search backwards for a global declaration to start processing the syntax.\n\"syn sync match goSync grouphere NONE /^\\(const\\|var\\|type\\|func\\)\\>/\n\n\" There's a bug in the implementation of grouphere. For now, use the\n\" following as a more expensive/less precise workaround.\nsyn sync minlines=500\n\nlet b:current_syntax = \"go\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/godoc.vim",
    "content": "\" Copyright 2011 The Go Authors. All rights reserved.\n\" Use of this source code is governed by a BSD-style\n\" license that can be found in the LICENSE file.\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nsyn case match\nsyn match  godocTitle \"^\\([A-Z][A-Z ]*\\)$\"\n\ncommand -nargs=+ HiLink hi def link <args>\n\nHiLink godocTitle Title\n\ndelcommand HiLink\n\nlet b:current_syntax = \"godoc\"\n\n\" vim:ts=4 sts=2 sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/haml.vim",
    "content": "\" Vim syntax file\n\" Language:\tHaml\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Filenames:\t*.haml\n\" Last Change:\t2010 Aug 09\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nif !exists(\"main_syntax\")\n  let main_syntax = 'haml'\nendif\nlet b:ruby_no_expensive = 1\n\nruntime! syntax/html.vim\nunlet! b:current_syntax\nsilent! syn include @hamlSassTop syntax/sass.vim\nunlet! b:current_syntax\nsyn include @hamlRubyTop syntax/ruby.vim\n\nsyn case match\n\nsyn region  rubyCurlyBlock   start=\"{\" end=\"}\" contains=@hamlRubyTop contained\nsyn cluster hamlRubyTop add=rubyCurlyBlock\n\nsyn cluster hamlComponent    contains=hamlAttributes,hamlAttributesHash,hamlClassChar,hamlIdChar,hamlObject,hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable\nsyn cluster hamlEmbeddedRuby contains=hamlAttributesHash,hamlObject,hamlRuby,hamlRubyFilter\nsyn cluster hamlTop          contains=hamlBegin,hamlPlainFilter,hamlRubyFilter,hamlSassFilter,hamlComment,hamlHtmlComment\n\nsyn match   hamlBegin \"^\\s*\\%([<>]\\|&[^=~ ]\\)\\@!\" nextgroup=hamlTag,hamlClassChar,hamlIdChar,hamlRuby,hamlPlainChar,hamlInterpolatable\n\nsyn match   hamlTag        \"%\\w\\+\\%(:\\w\\+\\)\\=\" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@hamlComponent\nsyn region  hamlAttributes     matchgroup=hamlAttributesDelimiter start=\"(\" end=\")\" contained contains=htmlArg,hamlAttributeString,hamlAttributeVariable,htmlEvent,htmlCssDefinition nextgroup=@hamlComponent\nsyn region  hamlAttributesHash matchgroup=hamlAttributesDelimiter start=\"{\" end=\"}\" contained contains=@hamlRubyTop nextgroup=@hamlComponent\nsyn region  hamlObject         matchgroup=hamlObjectDelimiter     start=\"\\[\" end=\"\\]\" contained contains=@hamlRubyTop nextgroup=@hamlComponent\nsyn match   hamlDespacer \"[<>]\" contained nextgroup=hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable\nsyn match   hamlSelfCloser \"/\" contained\nsyn match   hamlClassChar \"\\.\" contained nextgroup=hamlClass\nsyn match   hamlIdChar \"#{\\@!\" contained nextgroup=hamlId\nsyn match   hamlClass \"\\%(\\w\\|-\\)\\+\" contained nextgroup=@hamlComponent\nsyn match   hamlId    \"\\%(\\w\\|-\\)\\+\" contained nextgroup=@hamlComponent\nsyn region  hamlDocType start=\"^\\s*!!!\" end=\"$\"\n\nsyn region  hamlRuby   matchgroup=hamlRubyOutputChar start=\"[!&]\\==\\|\\~\" skip=\",\\s*$\" end=\"$\" contained contains=@hamlRubyTop keepend\nsyn region  hamlRuby   matchgroup=hamlRubyChar       start=\"-\"           skip=\",\\s*$\" end=\"$\" contained contains=@hamlRubyTop keepend\nsyn match   hamlPlainChar \"\\\\\" contained\nsyn region hamlInterpolatable matchgroup=hamlInterpolatableChar start=\"!\\===\\|!=\\@!\" end=\"$\" keepend contained contains=hamlInterpolation,hamlInterpolationEscape,@hamlHtmlTop\nsyn region hamlInterpolatable matchgroup=hamlInterpolatableChar start=\"&==\\|&=\\@!\"   end=\"$\" keepend contained contains=hamlInterpolation,hamlInterpolationEscape\nsyn region hamlInterpolation matchgroup=hamlInterpolationDelimiter start=\"#{\" end=\"}\" contains=@hamlRubyTop containedin=javascriptStringS,javascriptStringD\nsyn match  hamlInterpolationEscape \"\\\\\\@<!\\%(\\\\\\\\\\)*\\\\\\%(\\\\\\ze#{\\|#\\ze{\\)\"\nsyn region hamlErbInterpolation matchgroup=hamlInterpolationDelimiter start=\"<%[=-]\\=\" end=\"-\\=%>\" contained contains=@hamlRubyTop\n\nsyn region  hamlAttributeString start=+\\%(=\\s*\\)\\@<='+ skip=+\\%(\\\\\\\\\\)*\\\\'+ end=+'+ contains=hamlInterpolation,hamlInterpolationEscape\nsyn region  hamlAttributeString start=+\\%(=\\s*\\)\\@<=\"+ skip=+\\%(\\\\\\\\\\)*\\\\\"+ end=+\"+ contains=hamlInterpolation,hamlInterpolationEscape\nsyn match   hamlAttributeVariable \"\\%(=\\s*\\)\\@<=\\%(@@\\=\\|\\$\\)\\=\\w\\+\" contained\n\nsyn match   hamlHelper  \"\\<action_view?\\|\\<block_is_haml?\\|\\<is_haml?\\|\\.\\@<!\\<flatten\" contained containedin=@hamlEmbeddedRuby,@hamlRubyTop\nsyn keyword hamlHelper   capture_haml escape_once find_and_preserve haml_concat haml_indent haml_tag html_attrs html_esape init_haml_helpers list_of non_haml precede preserve succeed surround tab_down tab_up page_class contained containedin=@hamlEmbeddedRuby,@hamlRubyTop\n\nsyn cluster hamlHtmlTop contains=@htmlTop,htmlBold,htmlItalic,htmlUnderline\nsyn region  hamlPlainFilter      matchgroup=hamlFilter start=\"^\\z(\\s*\\):\\%(plain\\|preserve\\|redcloth\\|textile\\|markdown\\|maruku\\)\\s*$\" end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@hamlHtmlTop,hamlInterpolation\nsyn region  hamlEscapedFilter    matchgroup=hamlFilter start=\"^\\z(\\s*\\):\\%(escaped\\|cdata\\)\\s*$\"    end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=hamlInterpolation\nsyn region  hamlErbFilter        matchgroup=hamlFilter start=\"^\\z(\\s*\\):erb\\s*$\"        end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@hamlHtmlTop,hamlErbInterpolation\nsyn region  hamlRubyFilter       matchgroup=hamlFilter start=\"^\\z(\\s*\\):ruby\\s*$\"       end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@hamlRubyTop\nsyn region  hamlJavascriptFilter matchgroup=hamlFilter start=\"^\\z(\\s*\\):javascript\\s*$\" end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@htmlJavaScript,hamlInterpolation keepend\nsyn region  hamlCSSFilter        matchgroup=hamlFilter start=\"^\\z(\\s*\\):css\\s*$\"        end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@htmlCss,hamlInterpolation keepend\nsyn region  hamlSassFilter       matchgroup=hamlFilter start=\"^\\z(\\s*\\):sass\\s*$\"       end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@hamlSassTop\n\nsyn region  hamlJavascriptBlock start=\"^\\z(\\s*\\)%script\" nextgroup=@hamlComponent,hamlError end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@hamlTop,@htmlJavaScript keepend\nsyn region  hamlCssBlock        start=\"^\\z(\\s*\\)%style\" nextgroup=@hamlComponent,hamlError  end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@hamlTop,@htmlCss keepend\nsyn match   hamlError \"\\$\" contained\n\nsyn region  hamlComment     start=\"^\\z(\\s*\\)-#\" end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=rubyTodo\nsyn region  hamlHtmlComment start=\"^\\z(\\s*\\)/\"  end=\"^\\%(\\z1 \\| *$\\)\\@!\" contains=@hamlTop,rubyTodo\nsyn match   hamlIEConditional \"\\%(^\\s*/\\)\\@<=\\[if\\>[^]]*]\" contained containedin=hamlHtmlComment\n\nhi def link hamlSelfCloser             Special\nhi def link hamlDespacer               Special\nhi def link hamlClassChar              Special\nhi def link hamlIdChar                 Special\nhi def link hamlTag                    Special\nhi def link hamlClass                  Type\nhi def link hamlId                     Identifier\nhi def link hamlPlainChar              Special\nhi def link hamlInterpolatableChar     hamlRubyChar\nhi def link hamlRubyOutputChar         hamlRubyChar\nhi def link hamlRubyChar               Special\nhi def link hamlInterpolationDelimiter Delimiter\nhi def link hamlInterpolationEscape    Special\nhi def link hamlAttributeString        String\nhi def link hamlAttributeVariable      Identifier\nhi def link hamlDocType                PreProc\nhi def link hamlFilter                 PreProc\nhi def link hamlAttributesDelimiter    Delimiter\nhi def link hamlObjectDelimiter        Delimiter\nhi def link hamlHelper                 Function\nhi def link hamlHtmlComment            hamlComment\nhi def link hamlComment                Comment\nhi def link hamlIEConditional          SpecialComment\nhi def link hamlError                  Error\n\nlet b:current_syntax = \"haml\"\n\nif main_syntax == \"haml\"\n  unlet main_syntax\nendif\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/haskell.vim",
    "content": "\" Vim syntax file\n\" Language: Haskell\n\" Author: Tristan Ravitch\n\" Maintainer: Tristan Ravitch\n\" Version: 0.0.1\n\nif version < 600\n  syntax clear\nelseif exists('b:current_syntax')\n  finish\nendif\n\nsyn sync minlines=50 maxlines=200\n\n\" These basic lexical definitions are taken from the orignal haskell syntax\n\" description from vim 7.3.\nsyn match  hsSpecialChar      contained \"\\\\\\([0-9]\\+\\|o[0-7]\\+\\|x[0-9a-fA-F]\\+\\|[\\\"\\\\'&\\\\abfnrtv]\\|^[A-Z^_\\[\\\\\\]]\\)\"\nsyn match  hsSpecialChar      contained \"\\\\\\(NUL\\|SOH\\|STX\\|ETX\\|EOT\\|ENQ\\|ACK\\|BEL\\|BS\\|HT\\|LF\\|VT\\|FF\\|CR\\|SO\\|SI\\|DLE\\|DC1\\|DC2\\|DC3\\|DC4\\|NAK\\|SYN\\|ETB\\|CAN\\|EM\\|SUB\\|ESC\\|FS\\|GS\\|RS\\|US\\|SP\\|DEL\\)\"\nsyn match  hsSpecialCharError contained \"\\\\&\\|'''\\+\"\nsyn region hsString           start=+\"+  skip=+\\\\\\\\\\|\\\\\"+  end=+\"+  contains=hsSpecialChar\nsyn match  hsCharacter        \"[^a-zA-Z0-9_']'\\([^\\\\]\\|\\\\[^']\\+\\|\\\\'\\)'\"lc=1 contains=hsSpecialChar,hsSpecialCharError\nsyn match  hsCharacter        \"^'\\([^\\\\]\\|\\\\[^']\\+\\|\\\\'\\)'\" contains=hsSpecialChar,hsSpecialCharError\nsyn match  hsNumber           \"\\<[0-9]\\+\\>\\|\\<0[xX][0-9a-fA-F]\\+\\>\\|\\<0[oO][0-7]\\+\\>\"\nsyn match  hsFloat            \"\\<[0-9]\\+\\.[0-9]\\+\\([eE][-+]\\=[0-9]\\+\\)\\=\\>\"\n\n\" This case matches the names of types and constructors: names beginning with\n\" a capital letter.  Note that this also handles the case of @M.lookup@ where\n\" M is a qualified import.  There is a big negative lookbehind assertion here\n\" so that we don't highlight import and module statements oddly. \nsyn match hsTypeName \"\\(^import\\s.*\\|^module\\s.*\\)\\@<!\\([^a-zA-Z0-9]\\)\\@<=[A-Z][a-zA-Z0-9_]*\"\n\" Also make unit and the empty list easy to spot - they are constructors too.\nsyn match hsTypeName \"()\"\nsyn match hsTypeName \"\\[\\]\"\n\n\" These are keywords that are only highlighted if they are in comments.\nsyn keyword hsFIXME contained FIXME TODO XXX BUG NOTE\n\n\" Comment stuff\nsyn region hsPragma start='{-#' end='#-}'\nsyn region hsBlockComment start='{-' end='-}' fold contains=hsFIXME,hsBlockComment\n\" FIXME: haddock block comments should be able to contain hsBlockComments, but\n\" it doesn't seem to work at the moment.\nsyn region hsHaddockComment start='{-|' end='-}' contains=hsFIXME\nsyn match hsLineComment \"--.*$\" contains=hsFIXME\n\" Line-based haddock comments are trickier - they continue until\n\" the next line that isn't part of the same block of comments.\nsyn region hsHaddockComment start='-- |' end='^\\(\\s*--\\)\\@!' contains=hsFIXME\nsyn region hsHaddockComment start='-- \\$\\w\\+' end='^\\(\\s*--\\)\\@!' contains=hsFIXME\nsyn region hsHaddockComment start='-- ^' end='^\\(\\s*--\\)\\@!' contains=hsFIXME\n\" Haddock sections for import lists\nsyn match hsHaddockSection '-- \\*.*$'\n\" Named documentation chunks (also for import lists)\nsyn match hsHaddockSection '-- \\$.*$'\n\n\n\" Keywords appearing in expressions, plus a few top-level keywords\nsyn keyword hsKeyword do let in _ where\nsyn keyword hsKeyword infix infixl infixr\nsyn keyword hsKeyword forall foreign\nsyn match hsKeyword '\\(^\\(data\\|type\\)\\s\\+\\)\\@<=family\\(\\W\\)\\@='\n\n\" Vim has a special syntax category for conditionals, so here are all of the\n\" haskell conditionals.  These are just keywords with a slightly more flexible\n\" coloring.\nsyn keyword hsConditional case of if then else\n\n\" We define a region for module NNNN (...) where so that haddock section\n\" headers (-- *) can be highlighted specially only within this context.\nsyn region hsModuleHeader start=\"^module\\s\" end=\"where\" contains=hsHaddockSection keepend fold transparent\n\" Treat Module imports as the #include category; it maps reasonably well\nsyn keyword hsImport import qualified as hiding module\n\nsyn keyword hsTypeDecls class instance data newtype type deriving default\n\" FIXME: Maybe we can do something fancy for data/type families?  'family' is\n\" only a keyword if it follows data/type...\n\n\" This is uglier than I'd like.  We want to let '-' participate in operators,\n\" but we can't let it match '--' because that interferes with comments.  Hacks\n\" for now - just include some common operators with '-'.\nsyn match hsOperator \"<-\\|->\\|-->\\|-\\(-\\)\\@!\\|[%\\~\\&\\*/\\$\\^|@:+<!>=#!\\?]\\+\"\n\" A bare . is an operator (but not surrounded by alnum chars)\nsyn match hsOperator \"\\s\\@<=\\.\\s\\@=\"\n\" . is also an operator if adjacent to some other operator char\nsyn match hsOperator \"[%\\~\\&\\*\\$\\^|@:+<!>=#!\\?]\\+\\.[%\\~\\&\\*\\$\\^|@:+<\\.!>=#!\\?]*\"\nsyn match hsOperator \"[%\\~\\&\\*\\$\\^|@:+<!>=#!\\?]*\\.[%\\~\\&\\*\\$\\^|@:+\\.<!>=#!\\?]\\+\"\n\" Include support for infix functions as operators\nsyn match hsOperator \"`[a-zA-Z0-9\\.]\\+`\"\n\n\" Highlight function/value names in type signatures.  Looks ahead to find a ::\n\" after a name.  This allows whitespace before the name so that it can match\n\" in a 'where,' but it won't match local type annotations on random little\n\" things.\nsyn match hsFunctionList \"^\\s*\\([a-z][a-zA-Z0-9']*[[:space:]\\n,]\\+\\)*[a-z][a-zA-Z0-9']*[[:space:]\\n]*::\" contains=hsFunction\nsyn match hsFunction \"\\s*[a-z][a-zA-Z0-9']*[[:space:]\\n]*\\(::\\|,\\)\\@=\" contained\n\" Also support the style where the first where binding is on the same line as\n\" the where keyword.\nsyn match hsFunction \"\\(^\\s\\+where\\s\\+\\)\\@<=[a-z][a-zA-Z0-9']*\\(\\s*::\\)\\@=\"\n\n\" FIXME Ignoring proc for now, also mdo and rec\n\n\" Give undefined a bit of special treatment\nsyn keyword hsScary undefined\n\n\" C Preprocessor stuff\nsyn match hsCPP '\\(^\\s*\\)\\@<=#\\(warning\\|pragma\\|error\\)\\W\\@='\nsyn match hsCPPCond '\\(^\\s*\\)\\@<=#\\(if\\|ifdef\\|elif\\)\\W\\@='\nsyn match hsCPPCond '\\(^\\s*\\)\\@<=#\\(endif\\|else\\)\\(\\s*$\\|\\W\\)\\@='\nsyn match hsCPPInclude '\\(^\\s*\\)\\@<=#include\\W\\@='\nsyn match hsCPPDefine '\\(^\\s*\\)\\@<=#define\\W\\@='\nsyn match hsCPPDefined '\\(^\\s*.*\\W\\)\\@<=defined(\\w\\+)'\n\nif version >= 508 || !exists('did_hs_syntax_inits')\n  if version < 508\n    let did_hs_syntax_inits = 1\n    command -nargs=+ HiLink hi link <args>\n  else\n    command -nargs=+ HiLink hi def link <args>\n  endif\n\n  \" CPP\n  HiLink hsCPP PreProc\n  HiLink hsCPPCond PreCondit\n  HiLink hsCPPInclude Include\n  HiLink hsCPPDefine Define\n  HiLink hsCPPDefined PreProc\n\n  \" Comments\n  HiLink hsLineComment Comment\n  HiLink hsBlockComment Comment\n  HiLink hsPragma Comment\n  HiLink hsHaddockComment SpecialComment\n  HiLink hsHaddockSection SpecialComment\n\n  HiLink hsKeyword Keyword\n  HiLink hsConditional Conditional\n  HiLink hsImport Include\n  HiLink hsTypeDecls Keyword\n\n  HiLink hsFIXME Todo\n\n  HiLink hsOperator Operator\n\n  HiLink hsModuleQualifier StorageClass\n\n  HiLink hsFunction Function\n  HiLink hsTypeName Type\n\n  \" Literals\n  HiLink hsSpecialChar SpecialChar\n  HiLink hsFloat Float\n  HiLink hsNumber Number\n  HiLink hsCharacter Character\n  HiLink hsString String\n\n  HiLink hsScary Todo\n\n  delcommand HiLink\nendif\n\nlet b:current_syntax = \"haskell\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/html/aria.vim",
    "content": "\" Vim syntax file\n\" Language:\t    WAI-ARIA\n\" Maintainer:\tothree <othree@gmail.com>\n\" URL:\t\t    http://github.com/othree/html5-syntax.vim\n\" Last Change:  2010-09-25\n\" License:      MIT\n\" Changes:      update to Draft 16 September 2010\n\nsetlocal iskeyword+=-\n\n\" WAI-ARIA States and Properties\n\" http://www.w3.org/TR/wai-aria/states_and_properties\nsyn keyword  htmlArg contained role\n\n\" Global States and Properties\nsyn keyword  htmlArg contained aria-atomic aria-busy aria-controls aria-describedby\nsyn keyword  htmlArg contained aria-disabled aria-dropeffect aria-flowto aria-grabbed\nsyn keyword  htmlArg contained aria-haspopup aria-hidden aria-invalid aria-label\nsyn keyword  htmlArg contained aria-labelledby aria-live aria-owns aria-relevant\n\n\" Widget Attributes\nsyn keyword  htmlArg contained aria-autocomplete aria-checked aria-disabled aria-expanded\nsyn keyword  htmlArg contained aria-haspopup aria-hidden aria-invalid aria-label\nsyn keyword  htmlArg contained aria-level aria-multiline aria-multiselectable aria-orientation\nsyn keyword  htmlArg contained aria-pressed aria-readonly aria-required aria-selected\nsyn keyword  htmlArg contained aria-sort aria-valuemax aria-valuemin aria-valuenow aria-valuetext\n\n\" Live Region Attributes\nsyn keyword  htmlArg contained aria-atomic aria-busy aria-live aria-relevant\n\n\" Drag-and-Drop attributes\nsyn keyword  htmlArg contained aria-dropeffect aria-grabbed\n\n\" Relationship Attributes\nsyn keyword  htmlArg contained aria-activedescendant aria-controls aria-describedby aria-flowto\nsyn keyword  htmlArg contained aria-labelledby aria-owns aria-posinset aria-setsize\n\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/html/rdfa.vim",
    "content": "\" Vim syntax file\n\" Language:     RDFa\n\" Maintainer:   othree <othree@gmail.com>\n\" URL:          http://github.com/othree/html5-syntax.vim\n\" Last Change:  2012-06-08\n\" License:      MIT\n\" Changes:      update to Rec 07 June 2012\n\n\" RDFa\n\" http://www.w3.org/TR/rdfa-syntax/#s_syntax\nsyn keyword htmlArg contained about content datatype href inlist prefix property rel resource rev src typeof vocab\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/html.vim",
    "content": "\" Vim syntax file\n\" Language:\tHTML (version 5)\n\" Maintainer:\tRodrigo Machado <rcmachado@gmail.com>\n\" URL:\t\thttp://rm.blog.br/vim/syntax/html.vim\n\" Last Change:  2009 Aug 19\n\" License:      Public domain\n\"               (but let me know if you like :) )\n\"\n\" Note: This file just adds the new tags from HTML 5\n\"       and don't replace default html.vim syntax file\n\"\n\" Modified:     othree <othree@gmail.com>\n\" Changes:      update to Draft 13 January 2011\n\"               add complete new attributes\n\"               add microdata Attributes\n\"               add bdi element\n\" Modified:     htdebeer <H.T.de.Beer@gmail.com>\n\" Changes:      add common SVG elements and attributes for inline SVG\n\n\" HTML 5 tags\nsyn keyword htmlTagName contained article aside audio canvas command\nsyn keyword htmlTagName contained datalist details dialog embed figcaption figure footer\nsyn keyword htmlTagName contained header hgroup keygen main mark meter menu nav output\nsyn keyword htmlTagName contained progress ruby rt rp section source summary time track video data\nsyn keyword htmlTagName contained template content shadow\nsyn keyword htmlTagName contained wbr bdi\n\n\" SVG tags\n\" http://www.w3.org/TR/SVG/\n\" as found in http://www.w3.org/TR/SVG/eltindex.html\nsyn keyword htmlTagName contained svg \nsyn keyword htmlTagName contained altGlyph altGlyphDef altGlyphItem \nsyn keyword htmlTagName contained animate animateColor animateMotion animateTransform \nsyn keyword htmlTagName contained circle ellipse rect line polyline polygon image path\nsyn keyword htmlTagName contained clipPath color-profile cursor \nsyn keyword htmlTagName contained defs desc g symbol view use switch foreignObject\nsyn keyword htmlTagName contained filter feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix feDiffuseLighting feDisplacementMap feDistantLight feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feImage feMerge feMergeNode feMorphology feOffset fePointLight feSpecularLighting feSpotLight feTile feTurbulence \nsyn keyword htmlTagName contained font font-face font-face-format font-face-name font-face-src font-face-uri \nsyn keyword htmlTagName contained glyph glyphRef hkern \nsyn keyword htmlTagName contained linearGradient marker mask pattern radialGradient set stop\nsyn keyword htmlTagName contained missing-glyph mpath \nsyn keyword htmlTagName contained text textPath tref tspan vkern\n\n\" Custom Element\nsyn match htmlTagName contained \"\\<[a-z_]\\+\\(\\-[a-z_]\\+\\)\\+\\>\"\n\n\" HTML 5 arguments\n\" Core Attributes\nsyn keyword htmlArg contained accesskey class contenteditable contextmenu dir \nsyn keyword htmlArg contained draggable hidden id is lang spellcheck style tabindex title translate\n\" Event-handler Attributes\nsyn keyword htmlArg contained onabort onblur oncanplay oncanplaythrough onchange\nsyn keyword htmlArg contained onclick oncontextmenu ondblclick ondrag ondragend ondragenter ondragleave ondragover \nsyn keyword htmlArg contained ondragstart ondrop ondurationchange onemptied onended onerror onfocus onformchange \nsyn keyword htmlArg contained onforminput oninput oninvalid onkeydown onkeypress onkeyup onload onloadeddata \nsyn keyword htmlArg contained onloadedmetadata onloadstart onmousedown onmousemove onmouseout onmouseover onmouseup\nsyn keyword htmlArg contained onmousewheel onpause onplay onplaying onprogress onratechange onreadystatechange \nsyn keyword htmlArg contained onscroll onseeked onseeking onselect onshow onstalled onsubmit onsuspend ontimeupdate \nsyn keyword htmlArg contained onvolumechange onwaiting\n\" XML Attributes\nsyn keyword htmlArg contained xml:lang xml:space xml:base xmlns\n\" new features\n\" <body>\nsyn keyword htmlArg contained onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload \nsyn keyword htmlArg contained onmessage onoffline ononline onpopstate onredo onresize onstorage onundo onunload\n\" <video>, <audio>, <source>, <track>\nsyn keyword htmlArg contained autoplay preload controls loop poster media kind charset srclang track\n\" <form>, <input>, <button>\nsyn keyword htmlArg contained form autocomplete autofocus list min max step\nsyn keyword htmlArg contained formaction autofocus formenctype formmethod formtarget formnovalidate\nsyn keyword htmlArg contained required placeholder\n\" <command>, <details>, <time>\nsyn keyword htmlArg contained label icon open datetime pubdate\n\" <script>\nsyn keyword htmlArg contained async\n\" <content>\nsyn keyword htmlArg contained select\n\n\" Custom Data Attributes\n\" http://dev.w3.org/html5/spec/elements.html#embedding-custom-non-visible-data\nsyn match   htmlArg \"\\<\\(data\\(\\-[a-z]\\+\\)\\+\\)\\=\\>\" contained\n\n\" Microdata\n\" http://dev.w3.org/html5/md/\nsyn keyword htmlArg contained itemid itemscope itemtype itemprop itemref\n\n\" SVG\n\" http://www.w3.org/TR/SVG/\n\" Some common attributes from http://www.w3.org/TR/SVG/attindex.html\nsyn keyword htmlArg contained accent-height accumulate additive alphabetic amplitude arabic-form ascent attributeName attributeType azimuth \nsyn keyword htmlArg contained baseFrequency baseProfile bbox begin bias by \nsyn keyword htmlArg contained calcMode cap-height class clipPathUnits contentScriptType contentStyleType cx cy \nsyn keyword htmlArg contained d descent diffuseConstant divisor dur dx dy \nsyn keyword htmlArg contained edgeMode elevation end exponent externalResourcesRequired \nsyn keyword htmlArg contained fill filterRes filterUnits font-family font-size font-stretch font-style font-variant font-weight format format from fx fy \nsyn keyword htmlArg contained g1 g2 glyph-name glyphRef gradientTransform gradientUnits \nsyn keyword htmlArg contained hanging height horiz-adv-x horiz-origin-y \nsyn keyword htmlArg contained id ideographic in in2 intercept \nsyn keyword htmlArg contained k k1 k2 k3 k4 kernelMatrix kernelUnitLength keyPoints keySplines keyTimes \nsyn keyword htmlArg contained lang lengthAdjust limitingConeAngle local \nsyn keyword htmlArg contained markerHeight markerUnits markerWidth maskContentUnits maskUnits mathematical max media method min mode name \nsyn keyword htmlArg contained numOctaves \nsyn keyword htmlArg contained offset offset onabort onactivate onbegin onclick onend onerror onfocusin onfocusout onload onload onmousedown onmousemove onmouseout onmouseover onmouseup onrepeat onresize onscroll onunload onzoom operator order orient orientation origin overline-position overline-thickness \nsyn keyword htmlArg contained panose-1 path pathLength patternContentUnits patternTransform patternUnits points pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits \nsyn keyword htmlArg contained r radius refX refY rendering-intent repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate rx ry \nsyn keyword htmlArg contained scale seed slope spacing specularConstant specularExponent spreadMethod startOffset stdDeviation stemh stemv stitchTiles strikethrough-position strikethrough-thickness string surfaceScale systemLanguage \nsyn keyword htmlArg contained tableValues target targetX targetY textLength title to transform type u\nsyn keyword htmlArg contained 1 u2 underline-position underline-thickness unicode unicode-range units-per-em \nsyn keyword htmlArg contained v-alphabetic v-hanging v-ideographic v-mathematical values version vert-adv-y vert-origin-x vert-origin-y viewBox viewTarget \nsyn keyword htmlArg contained width widths \nsyn keyword htmlArg contained x x-height x1 x2 xChannelSelector xlink:actuate xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:show xlink:title xlink:type xml:base xml:lang xml:space \nsyn keyword htmlArg contained y y1 y2 yChannelSelector \nsyn keyword htmlArg contained z zoomAndPan \nsyn keyword htmlArg contained alignment-baseline baseline-shift clip-path clip-rule clip color-interpolation-filters color-interpolation color-profile color-rendering color cursor direction display dominant-baseline enable-background fill-opacity fill-rule fill filter flood-color flood-opacity font-family font-size-adjust font-size font-stretch font-style font-variant font-weight glyph-orientation-horizontal glyph-orientation-vertical image-rendering kerning letter-spacing lighting-color marker-end marker-mid marker-start mask opacity overflow pointer-events shape-rendering stop-color stop-opacity stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width stroke text-anchor text-decoration text-rendering unicode-bidi visibility word-spacing writing-mode\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/jade.vim",
    "content": "\" Vim syntax file\n\" Language: Jade\n\" Maintainer: Joshua Borton\n\" Credits: Tim Pope\n\" Filenames: *.jade\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nif !exists(\"main_syntax\")\n  let main_syntax = 'jade'\nendif\n\nruntime! syntax/html.vim\nruntime! syntax/html/html5.vim\nsilent! syntax include @htmlCoffeescript syntax/coffee.vim\nunlet! b:current_syntax\nsilent! syntax include @htmlStylus syntax/stylus.vim\nunlet! b:current_syntax\nsilent! syntax include @htmlMarkdown syntax/markdown.vim\nunlet! b:current_syntax\n\nsyn case match\n\nsyn region  javascriptParenthesisBlock start=\"(\" end=\")\" contains=@htmlJavascript contained keepend\nsyn cluster htmlJavascript add=javascriptParenthesisBlock\n\nsyn region  jadeJavascript matchgroup=jadeJavascriptOutputChar start=\"[!&]\\==\\|\\~\" skip=\",\\s*$\" end=\"$\" contained contains=@htmlJavascript keepend\nsyn region  jadeJavascript matchgroup=jadeJavascriptChar start=\"-\" skip=\",\\s*$\" end=\"$\" contained contains=@htmlJavascript keepend\nsyn cluster jadeTop contains=jadeBegin,jadeComment,jadeHtmlComment,jadeJavascript\nsyn match   jadeBegin \"^\\s*\\%([<>]\\|&[^=~ ]\\)\\@!\" nextgroup=jadeTag,jadeClassChar,jadeIdChar,jadePlainChar,jadeJavascript,jadeScriptConditional,jadeScriptStatement\nsyn match   jadeTag \"+\\?\\w\\+\\%(:\\w\\+\\)\\=\" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@jadeComponent\nsyn cluster jadeComponent contains=jadeAttributes,jadeIdChar,jadeBlockExpansionChar,jadeClassChar,jadePlainChar,jadeJavascript\nsyn match   jadeComment '\\s*\\/\\/.*$'\nsyn region  jadeHtmlComment start=\"^\\z(\\s*\\)/\"  end=\"^\\%(\\z1\\s\\|\\s*$\\)\\@!\"\nsyn region  jadeAttributes matchgroup=jadeAttributesDelimiter start=\"(\" end=\")\" contained contains=@htmlJavascript,jadeHtmlArg,htmlArg,htmlEvent,htmlCssDefinition nextgroup=@jadeComponent\nsyn match   jadeClassChar \"\\.\" contained nextgroup=jadeClass\nsyn match   jadeBlockExpansionChar \":\\s\" contained nextgroup=jadeTag\nsyn match   jadeIdChar \"#{\\@!\" contained nextgroup=jadeId\nsyn match   jadeClass \"\\%(\\w\\|-\\)\\+\" contained nextgroup=@jadeComponent\nsyn match   jadeId \"\\%(\\w\\|-\\)\\+\" contained nextgroup=@jadeComponent\nsyn region  jadeDocType start=\"^\\s*\\(!!!\\|doctype\\)\" end=\"$\"\n\" Unless I'm mistaken, syntax/html.vim requires\n\" that the = sign be present for these matches.\n\" This adds the matches back for jade.\nsyn keyword jadeHtmlArg contained href title\n\nsyn match   jadePlainChar \"\\\\\" contained\nsyn region  jadeInterpolation matchgroup=jadeInterpolationDelimiter start=\"#{\" end=\"}\" contains=@htmlJavascript\nsyn match   jadeInterpolationEscape \"\\\\\\@<!\\%(\\\\\\\\\\)*\\\\\\%(\\\\\\ze#{\\|#\\ze{\\)\"\n\nsyn region  jadeJavascriptFilter matchgroup=jadeFilter start=\"^\\z(\\s*\\):javascript\\s*$\" end=\"^\\%(\\z1\\s\\|\\s*$\\)\\@!\" contains=@htmlJavascript\nsyn region  jadeCoffeescriptFilter matchgroup=jadeFilter start=\"^\\z(\\s*\\):coffeescript\\s*$\" end=\"^\\%(\\z1\\s\\|\\s*$\\)\\@!\" contains=@htmlCoffeescript\nsyn region  jadeMarkdownFilter matchgroup=jadeFilter start=/^\\z(\\s*\\):markdown\\s*$/ end=/^\\%(\\z1\\s\\|\\s*$\\)\\@!/ contains=@htmlMarkdown\nsyn region  jadeStylusFilter matchgroup=jadeFilter start=\"^\\z(\\s*\\):stylus\\s*$\" end=\"^\\%(\\z1\\s\\|\\s*$\\)\\@!\" contains=@htmlStylus\nsyn region  jadePlainFilter matchgroup=jadeFilter start=\"^\\z(\\s*\\):\\%(sass\\|less\\|cdata\\)\\s*$\" end=\"^\\%(\\z1\\s\\|\\s*$\\)\\@!\"\n\nsyn match  jadeScriptConditional \"\\<\\%(if\\|else\\|unless\\|while\\|for\\|until\\|case\\|when\\|default\\)\\>[?!]\\@!\"\nsyn match  jadeScriptStatement \"\\<\\%(each\\|block\\|prepend\\|append\\|mixin\\|extends\\|include\\)\\>[?!]\\@!\"\n\nsyn region  jadeJavascript start=\"^\\z(\\s*\\)script\\%(:\\w\\+\\)\\=\" end=\"^\\%(\\z1\\s\\|\\s*$\\)\\@!\" contains=@htmlJavascript,jadeJavascriptTag keepend \nsyn region  jadeJavascriptTag contained start=\"^\\z(\\s*\\)script\\%(:\\w\\+\\)\\=\" end=\"$\" contains=jadeBegin,jadeTag\nsyn region  jadeCssBlock        start=\"^\\z(\\s*\\)style\" nextgroup=@jadeComponent,jadeError  end=\"^\\%(\\z1\\s\\|\\s*$\\)\\@!\" contains=@jadeTop,@htmlCss keepend\n\nsyn match  jadeError \"\\$\" contained\n\nhi def link jadePlainChar              Special\nhi def link jadeScriptConditional      PreProc\nhi def link jadeScriptStatement        PreProc\nhi def link jadeHtmlArg                htmlArg\nhi def link jadeAttributeString        String\nhi def link jadeAttributesDelimiter    Identifier\nhi def link jadeIdChar                 Special\nhi def link jadeClassChar              Special\nhi def link jadeBlockExpansionChar     Special\nhi def link jadeId                     Identifier\nhi def link jadeClass                  Type\nhi def link jadeInterpolationDelimiter Delimiter\nhi def link jadeFilter                 PreProc\nhi def link jadeDocType                PreProc\nhi def link jadeComment                Comment\nhi def link jadeHtmlComment            jadeComment\n\nlet b:current_syntax = \"jade\"\n\nif main_syntax == \"jade\"\n  unlet main_syntax\nendif\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/javascript/html5.vim",
    "content": "\" Vim syntax file\n\" Language:\t    HTML5 New Stuff\n\" Maintainer:\tothree <othree@gmail.com>\n\" URL:\t\t    http://github.com/othree/html5-syntax.vim\n\" Last Change:  2011-05-27\n\" License:      MIT\n\" Changes:      \n\nsyn keyword javascriptHtmlEvents onabort onblur oncanplay oncanplaythrough onchange \nsyn keyword javascriptHtmlEvents onclick oncontextmenu ondblclick ondrag ondragend ondragenter ondragleave ondragover \nsyn keyword javascriptHtmlEvents ondragstart ondrop ondurationchange onemptied onended onerror onfocus onformchange \nsyn keyword javascriptHtmlEvents onforminput oninput oninvalid onkeydown onkeypress onkeyup onload onloadeddata \nsyn keyword javascriptHtmlEvents onloadedmetadata onloadstart onmousedown onmousemove onmouseout onmouseover onmouseup\nsyn keyword javascriptHtmlEvents onmousewheel onpause onplay onplaying onprogress onratechange onreadystatechange \nsyn keyword javascriptHtmlEvents onscroll onseeked onseeking onselect onshow onstalled onsubmit onsuspend ontimeupdate \nsyn keyword javascriptHtmlEvents onvolumechange onwaiting\n\n\" <body>\nsyn keyword javascriptHtmlEvents onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload \nsyn keyword javascriptHtmlEvents onmessage onoffline ononline onpopstate onredo onresize onstorage onundo onunload\n\n\" Media Controller\nsyn keyword javascriptDomElemAttrs buffered seekable duration currentTime paused\nsyn keyword javascriptDomElemAttrs played defaultPlaybackRate playbackRate volume muted\nsyn keyword javascriptDomElemAttrs mediaGroup\nsyn keyword javascriptDomElemFuncs load play pause \n\nsyn keyword javascriptHtmlEvents oncanplay oncanplaythrough ondurationchange onemptied \nsyn keyword javascriptHtmlEvents onloadeddata onloadedmetadata onloadstart onpause onplay onplaying onratechange \nsyn keyword javascriptHtmlEvents ontimeupdate onvolumechange onwaiting\n\n\" <audio>/<video>\nsyn keyword javascriptDomElemAttrs error src currentSrc networkState preload buffered readyState seeking \nsyn keyword javascriptDomElemAttrs currentTime initialTime duration startOffsetTime paused defaultPlaybackRate playbackRate played\nsyn keyword javascriptDomElemAttrs seekable ended autoplay loop controls volume muted defaltMuted audioTracks videoTracks textTracks\nsyn keyword javascriptDomElemFuncs load addTextTrack\n\n\" <video>\n\" syn keyword javascriptDomElemAttrs width height\nsyn keyword javascriptDomElemAttrs videoWidth videoHeight poster\n\n\" drag and drop\nsyn keyword javascriptDomElemAttrs onDragStart onDragEnd onDragEnter onDragLeave onDragOver onDrag onDrop draggable dropzone\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/javascript.vim",
    "content": "\" Vim syntax file\n\" Language:     JavaScript\n\" Maintainer:   vim-javascript community\n\" URL:          https://github.com/pangloss/vim-javascript\n\nif !exists(\"main_syntax\")\n  if version < 600\n    syntax clear\n  elseif exists(\"b:current_syntax\")\n    finish\n  endif\n  let main_syntax = 'javascript'\nendif\n\nif !exists('g:javascript_conceal')\n  let g:javascript_conceal = 0\nendif\n\n\"\" Drop fold if it is set but VIM doesn't support it.\nlet b:javascript_fold='true'\nif version < 600    \" Don't support the old version\n  unlet! b:javascript_fold\nendif\n\n\"\" dollar sign is permittd anywhere in an identifier\nsetlocal iskeyword+=$\n\nsyntax sync fromstart\n\nsyntax match   jsNoise           /\\%(:\\|,\\|\\;\\|\\.\\)/\n\n\"\" Program Keywords\nsyntax keyword jsStorageClass   const var let\nsyntax keyword jsOperator       delete instanceof typeof void new in\nsyntax match   jsOperator       /\\(!\\||\\|&\\|+\\|-\\|<\\|>\\|=\\|%\\|\\/\\|*\\|\\~\\|\\^\\)/\nsyntax keyword jsBooleanTrue    true\nsyntax keyword jsBooleanFalse   false\n\n\"\" JavaScript comments\nsyntax keyword jsCommentTodo    TODO FIXME XXX TBD contained\nsyntax region  jsLineComment    start=+\\/\\/+ end=+$+ keepend contains=jsCommentTodo,@Spell\nsyntax region  jsEnvComment     start=\"\\%^#!\" end=\"$\" display\nsyntax region  jsLineComment    start=+^\\s*\\/\\/+ skip=+\\n\\s*\\/\\/+ end=+$+ keepend contains=jsCommentTodo,@Spell fold\nsyntax region  jsCvsTag         start=\"\\$\\cid:\" end=\"\\$\" oneline contained\nsyntax region  jsComment        start=\"/\\*\"  end=\"\\*/\" contains=jsCommentTodo,jsCvsTag,@Spell fold\n\n\"\" JSDoc / JSDoc Toolkit\nif !exists(\"javascript_ignore_javaScriptdoc\")\n  syntax case ignore\n\n  \"\" syntax coloring for javadoc comments (HTML)\n  \"syntax include @javaHtml <sfile>:p:h/html.vim\n  \"unlet b:current_syntax\n\n  syntax region jsDocComment      matchgroup=jsComment start=\"/\\*\\*\\s*\"  end=\"\\*/\" contains=jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold\n\n  \" tags containing a param\n  syntax match  jsDocTags         contained \"@\\(alias\\|augments\\|borrows\\|class\\|constructs\\|default\\|defaultvalue\\|emits\\|exception\\|exports\\|extends\\|file\\|fires\\|kind\\|listens\\|member\\|member[oO]f\\|mixes\\|module\\|name\\|namespace\\|requires\\|throws\\|var\\|variation\\|version\\)\\>\" nextgroup=jsDocParam skipwhite\n  \" tags containing type and param\n  syntax match  jsDocTags         contained \"@\\(arg\\|argument\\|param\\|property\\)\\>\" nextgroup=jsDocType skipwhite\n  \" tags containing type but no param\n  syntax match  jsDocTags         contained \"@\\(callback\\|enum\\|external\\|this\\|type\\|typedef\\|return\\|returns\\)\\>\" nextgroup=jsDocTypeNoParam skipwhite\n  \" tags containing references\n  syntax match  jsDocTags         contained \"@\\(lends\\|see\\|tutorial\\)\\>\" nextgroup=jsDocSeeTag skipwhite\n  \" other tags (no extra syntax)\n  syntax match  jsDocTags         contained \"@\\(abstract\\|access\\|author\\|classdesc\\|constant\\|const\\|constructor\\|copyright\\|deprecated\\|desc\\|description\\|event\\|example\\|file[oO]verview\\|function\\|global\\|ignore\\|inner\\|instance\\|license\\|method\\|mixin\\|overview\\|private\\|protected\\|public\\|readonly\\|since\\|static\\|todo\\|summary\\|undocumented\\|virtual\\)\\>\"\n\n  syntax region jsDocType         start=\"{\" end=\"}\" oneline contained nextgroup=jsDocParam skipwhite\n  syntax match  jsDocType         contained \"\\%(#\\|\\\"\\|\\w\\|\\.\\|:\\|\\/\\)\\+\" nextgroup=jsDocParam skipwhite\n  syntax region jsDocTypeNoParam  start=\"{\" end=\"}\" oneline contained\n  syntax match  jsDocTypeNoParam  contained \"\\%(#\\|\\\"\\|\\w\\|\\.\\|:\\|\\/\\)\\+\"\n  syntax match  jsDocParam        contained \"\\%(#\\|\\\"\\|{\\|}\\|\\w\\|\\.\\|:\\|\\/\\)\\+\"\n  syntax region jsDocSeeTag       contained matchgroup=jsDocSeeTag start=\"{\" end=\"}\" contains=jsDocTags\n\n  syntax case match\nendif   \"\" JSDoc end\n\nsyntax case match\n\n\"\" Syntax in the JavaScript code\nsyntax match   jsFuncCall        /\\k\\+\\%(\\s*(\\)\\@=/\nsyntax match   jsSpecial         \"\\v\\\\%(0|\\\\x\\x\\{2\\}\\|\\\\u\\x\\{4\\}\\|\\c[A-Z]|.)\" contained\nsyntax match   jsTemplateVar     \"\\${.\\{-}}\" contained\nsyntax region  jsStringD         start=+\"+  skip=+\\\\\\\\\\|\\\\$\"+  end=+\"+  contains=jsSpecial,@htmlPreproc,@Spell\nsyntax region  jsStringS         start=+'+  skip=+\\\\\\\\\\|\\\\$'+  end=+'+  contains=jsSpecial,@htmlPreproc,@Spell\nsyntax region  jsTemplateString  start=+`+  skip=+\\\\\\\\\\|\\\\$`+  end=+`+  contains=jsTemplateVar,jsSpecial,@htmlPreproc\nsyntax region  jsRegexpCharClass start=+\\[+ skip=+\\\\.+ end=+\\]+ contained\nsyntax match   jsRegexpBoundary   \"\\v%(\\<@![\\^$]|\\\\[bB])\" contained\nsyntax match   jsRegexpBackRef   \"\\v\\\\[1-9][0-9]*\" contained\nsyntax match   jsRegexpQuantifier \"\\v\\\\@<!%([?*+]|\\{\\d+%(,|,\\d+)?})\\??\" contained\nsyntax match   jsRegexpOr        \"\\v\\<@!\\|\" contained\nsyntax match   jsRegexpMod       \"\\v\\(@<=\\?[:=!>]\" contained\nsyntax cluster jsRegexpSpecial   contains=jsSpecial,jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod\nsyntax region  jsRegexpGroup     start=\"\\\\\\@<!(\" end=\"\\\\\\@<!)\" contained contains=jsRegexpCharClass,@jsRegexpSpecial keepend\nsyntax region  jsRegexpString    start=+\\(\\(\\(return\\|case\\)\\s\\+\\)\\@<=\\|\\(\\([)\\]\"']\\|\\d\\|\\w\\)\\s*\\)\\@<!\\)/\\(\\*\\|/\\)\\@!+ skip=+\\\\.\\|\\[\\(\\\\.\\|[^]]\\)*\\]+ end=+/[gimy]\\{,4}+ contains=jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial,@htmlPreproc oneline keepend\nsyntax match   jsNumber          /\\<-\\=\\d\\+L\\=\\>\\|\\<0[xX]\\x\\+\\>/\nsyntax keyword jsNumber          Infinity\nsyntax match   jsFloat           /\\<-\\=\\%(\\d\\+\\.\\d\\+\\|\\d\\+\\.\\|\\.\\d\\+\\)\\%([eE][+-]\\=\\d\\+\\)\\=\\>/\nsyntax match   jsObjectKey       /\\<[a-zA-Z_$][0-9a-zA-Z_$]*\\(\\s*:\\)\\@=/ contains=jsFunctionKey contained\nsyntax match   jsFunctionKey     /\\<[a-zA-Z_$][0-9a-zA-Z_$]*\\(\\s*:\\s*function\\s*\\)\\@=/ contained\n\nif g:javascript_conceal == 1\n  syntax keyword jsNull           null conceal cchar=ø\n  syntax keyword jsThis           this conceal cchar=@\n  syntax keyword jsReturn         return conceal cchar=⇚\n  syntax keyword jsUndefined      undefined conceal cchar=¿\n  syntax keyword jsNan            NaN conceal cchar=ℕ\n  syntax keyword jsPrototype      prototype conceal cchar=¶\nelse\n  syntax keyword jsNull           null\n  syntax keyword jsThis           this\n  syntax keyword jsReturn         return\n  syntax keyword jsUndefined      undefined\n  syntax keyword jsNan            NaN\n  syntax keyword jsPrototype      prototype\nendif\n\n\"\" Statement Keywords\nsyntax keyword jsStatement      break continue with\nsyntax keyword jsConditional    if else switch\nsyntax keyword jsRepeat         do while for\nsyntax keyword jsLabel          case default\nsyntax keyword jsKeyword        yield\nsyntax keyword jsException      try catch throw finally\n\nsyntax keyword jsGlobalObjects   Array Boolean Date Function Iterator Number Object RegExp String Proxy ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray Intl JSON Math console document window\nsyntax match   jsGlobalObjects  /\\%(Intl\\.\\)\\@<=\\(Collator\\|DateTimeFormat\\|NumberFormat\\)/\n\nsyntax keyword jsExceptions     Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError\n\nsyntax keyword jsBuiltins       decodeURI decodeURIComponent encodeURI encodeURIComponent eval isFinite isNaN parseFloat parseInt uneval\n\nsyntax keyword jsFutureKeys     abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws goto private transient debugger implements protected volatile double import public\n\n\"\" DOM/HTML/CSS specified things\n\n\" DOM2 Objects\nsyntax keyword jsGlobalObjects  DOMImplementation DocumentFragment Document Node NodeList NamedNodeMap CharacterData Attr Element Text Comment CDATASection DocumentType Notation Entity EntityReference ProcessingInstruction\nsyntax keyword jsExceptions     DOMException\n\n\" DOM2 CONSTANT\nsyntax keyword jsDomErrNo       INDEX_SIZE_ERR DOMSTRING_SIZE_ERR HIERARCHY_REQUEST_ERR WRONG_DOCUMENT_ERR INVALID_CHARACTER_ERR NO_DATA_ALLOWED_ERR NO_MODIFICATION_ALLOWED_ERR NOT_FOUND_ERR NOT_SUPPORTED_ERR INUSE_ATTRIBUTE_ERR INVALID_STATE_ERR SYNTAX_ERR INVALID_MODIFICATION_ERR NAMESPACE_ERR INVALID_ACCESS_ERR\nsyntax keyword jsDomNodeConsts  ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE CDATA_SECTION_NODE ENTITY_REFERENCE_NODE ENTITY_NODE PROCESSING_INSTRUCTION_NODE COMMENT_NODE DOCUMENT_NODE DOCUMENT_TYPE_NODE DOCUMENT_FRAGMENT_NODE NOTATION_NODE\n\n\" HTML events and internal variables\nsyntax case ignore\nsyntax keyword jsHtmlEvents     onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize\nsyntax case match\n\n\" Follow stuff should be highligh within a special context\n\" While it can't be handled with context depended with Regex based highlight\n\" So, turn it off by default\nif exists(\"javascript_enable_domhtmlcss\")\n\n    \" DOM2 things\n    syntax match jsDomElemAttrs     contained /\\%(nodeName\\|nodeValue\\|nodeType\\|parentNode\\|childNodes\\|firstChild\\|lastChild\\|previousSibling\\|nextSibling\\|attributes\\|ownerDocument\\|namespaceURI\\|prefix\\|localName\\|tagName\\)\\>/\n    syntax match jsDomElemFuncs     contained /\\%(insertBefore\\|replaceChild\\|removeChild\\|appendChild\\|hasChildNodes\\|cloneNode\\|normalize\\|isSupported\\|hasAttributes\\|getAttribute\\|setAttribute\\|removeAttribute\\|getAttributeNode\\|setAttributeNode\\|removeAttributeNode\\|getElementsByTagName\\|getAttributeNS\\|setAttributeNS\\|removeAttributeNS\\|getAttributeNodeNS\\|setAttributeNodeNS\\|getElementsByTagNameNS\\|hasAttribute\\|hasAttributeNS\\)\\>/ nextgroup=jsParen skipwhite\n    \" HTML things\n    syntax match jsHtmlElemAttrs    contained /\\%(className\\|clientHeight\\|clientLeft\\|clientTop\\|clientWidth\\|dir\\|id\\|innerHTML\\|lang\\|length\\|offsetHeight\\|offsetLeft\\|offsetParent\\|offsetTop\\|offsetWidth\\|scrollHeight\\|scrollLeft\\|scrollTop\\|scrollWidth\\|style\\|tabIndex\\|title\\)\\>/\n    syntax match jsHtmlElemFuncs    contained /\\%(blur\\|click\\|focus\\|scrollIntoView\\|addEventListener\\|dispatchEvent\\|removeEventListener\\|item\\)\\>/ nextgroup=jsParen skipwhite\n\n    \" CSS Styles in JavaScript\n    syntax keyword jsCssStyles      contained color font fontFamily fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontWeight letterSpacing lineBreak lineHeight quotes rubyAlign rubyOverhang rubyPosition\n    syntax keyword jsCssStyles      contained textAlign textAlignLast textAutospace textDecoration textIndent textJustify textJustifyTrim textKashidaSpace textOverflowW6 textShadow textTransform textUnderlinePosition\n    syntax keyword jsCssStyles      contained unicodeBidi whiteSpace wordBreak wordSpacing wordWrap writingMode\n    syntax keyword jsCssStyles      contained bottom height left position right top width zIndex\n    syntax keyword jsCssStyles      contained border borderBottom borderLeft borderRight borderTop borderBottomColor borderLeftColor borderTopColor borderBottomStyle borderLeftStyle borderRightStyle borderTopStyle borderBottomWidth borderLeftWidth borderRightWidth borderTopWidth borderColor borderStyle borderWidth borderCollapse borderSpacing captionSide emptyCells tableLayout\n    syntax keyword jsCssStyles      contained margin marginBottom marginLeft marginRight marginTop outline outlineColor outlineStyle outlineWidth padding paddingBottom paddingLeft paddingRight paddingTop\n    syntax keyword jsCssStyles      contained listStyle listStyleImage listStylePosition listStyleType\n    syntax keyword jsCssStyles      contained background backgroundAttachment backgroundColor backgroundImage gackgroundPosition backgroundPositionX backgroundPositionY backgroundRepeat\n    syntax keyword jsCssStyles      contained clear clip clipBottom clipLeft clipRight clipTop content counterIncrement counterReset cssFloat cursor direction display filter layoutGrid layoutGridChar layoutGridLine layoutGridMode layoutGridType\n    syntax keyword jsCssStyles      contained marks maxHeight maxWidth minHeight minWidth opacity MozOpacity overflow overflowX overflowY verticalAlign visibility zoom cssText\n    syntax keyword jsCssStyles      contained scrollbar3dLightColor scrollbarArrowColor scrollbarBaseColor scrollbarDarkShadowColor scrollbarFaceColor scrollbarHighlightColor scrollbarShadowColor scrollbarTrackColor\n\n    \" Highlight ways\n    syntax match jsDotNotation      \"\\.\" nextgroup=jsPrototype,jsDomElemAttrs,jsDomElemFuncs,jsHtmlElemAttrs,jsHtmlElemFuncs\n    syntax match jsDotNotation      \"\\.style\\.\" nextgroup=jsCssStyles\n\nendif \"DOM/HTML/CSS\n\n\"\" end DOM/HTML/CSS specified things\n\n\n\"\" Code blocks\nsyntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsTemplateString,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins,jsNoise\nsyntax cluster jsAll        contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsReturn,jsStatement,jsTernaryIf,jsException\nsyntax region  jsBracket    matchgroup=jsBrackets     start=\"\\[\" end=\"\\]\" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc fold\nsyntax region  jsParen      matchgroup=jsParens       start=\"(\"  end=\")\"  contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc fold\nsyntax region  jsBlock      matchgroup=jsBraces       start=\"{\"  end=\"}\"  contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,jsObjectKey,@htmlPreproc fold\nsyntax region  jsFuncBlock  matchgroup=jsFuncBraces   start=\"{\"  end=\"}\"  contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc contained fold\nsyntax region  jsTernaryIf  matchgroup=jsTernaryIfOperator start=+?+  end=+:+  contains=@jsExpression,jsTernaryIf\n\n\"\" catch errors caused by wrong parenthesis\nsyntax match   jsParensError    \")\\|}\\|\\]\"\nsyntax match   jsParensErrA     contained \"\\]\"\nsyntax match   jsParensErrB     contained \")\"\nsyntax match   jsParensErrC     contained \"}\"\n\nif main_syntax == \"javascript\"\n  syntax sync clear\n  syntax sync ccomment jsComment minlines=200\n  syntax sync match jsHighlight grouphere jsBlock /{/\nendif\n\nif g:javascript_conceal == 1\n  syntax match   jsFunction       /\\<function\\>/ nextgroup=jsFuncName,jsFuncArgs skipwhite conceal cchar=ƒ\nelse\n  syntax match   jsFunction       /\\<function\\>/ nextgroup=jsFuncName,jsFuncArgs skipwhite\nendif\n\nsyntax match   jsFuncName       contained /\\<[a-zA-Z_$][0-9a-zA-Z_$]*/ nextgroup=jsFuncArgs skipwhite\nsyntax region  jsFuncArgs       contained matchgroup=jsFuncParens start='(' end=')' contains=jsFuncArgCommas,jsFuncArgRest nextgroup=jsFuncBlock keepend skipwhite skipempty\nsyntax match   jsFuncArgCommas  contained ','\nsyntax match   jsFuncArgRest    contained /\\%(\\.\\.\\.[a-zA-Z_$][0-9a-zA-Z_$]*\\))/\nsyntax keyword jsArgsObj        arguments contained containedin=jsFuncBlock\n\nsyntax match jsArrowFunction /=>/\n\n\" Define the default highlighting.\n\" For version 5.7 and earlier: only when not done already\n\" For version 5.8 and later: only when an item doesn't have highlighting yet\nif version >= 508 || !exists(\"did_javascript_syn_inits\")\n  if version < 508\n    let did_javascript_syn_inits = 1\n    command -nargs=+ HiLink hi link <args>\n  else\n    command -nargs=+ HiLink hi def link <args>\n  endif\n  HiLink jsFuncArgRest          Special\n  HiLink jsComment              Comment\n  HiLink jsLineComment          Comment\n  HiLink jsEnvComment           PreProc\n  HiLink jsDocComment           Comment\n  HiLink jsCommentTodo          Todo\n  HiLink jsCvsTag               Function\n  HiLink jsDocTags              Special\n  HiLink jsDocSeeTag            Function\n  HiLink jsDocType              Type\n  HiLink jsDocTypeNoParam       Type\n  HiLink jsDocParam             Label\n  HiLink jsStringS              String\n  HiLink jsStringD              String\n  HiLink jsTemplateString       String\n  HiLink jsTernaryIfOperator    Conditional\n  HiLink jsRegexpString         String\n  HiLink jsRegexpBoundary       SpecialChar\n  HiLink jsRegexpQuantifier     SpecialChar\n  HiLink jsRegexpOr             Conditional\n  HiLink jsRegexpMod            SpecialChar\n  HiLink jsRegexpBackRef        SpecialChar\n  HiLink jsRegexpGroup          jsRegexpString\n  HiLink jsRegexpCharClass      Character\n  HiLink jsCharacter            Character\n  HiLink jsPrototype            Special\n  HiLink jsConditional          Conditional\n  HiLink jsBranch               Conditional\n  HiLink jsLabel                Label\n  HiLink jsReturn               Statement\n  HiLink jsRepeat               Repeat\n  HiLink jsStatement            Statement\n  HiLink jsException            Exception\n  HiLink jsKeyword              Keyword\n  HiLink jsArrowFunction        Type\n  HiLink jsFunction             Type\n  HiLink jsFuncName             Function\n  HiLink jsArgsObj              Special\n  HiLink jsError                Error\n  HiLink jsParensError          Error\n  HiLink jsParensErrA           Error\n  HiLink jsParensErrB           Error\n  HiLink jsParensErrC           Error\n  HiLink jsOperator             Operator\n  HiLink jsStorageClass         StorageClass\n  HiLink jsThis                 Special\n  HiLink jsNan                  Number\n  HiLink jsNull                 Type\n  HiLink jsUndefined            Type\n  HiLink jsNumber               Number\n  HiLink jsFloat                Float\n  HiLink jsBooleanTrue          Boolean\n  HiLink jsBooleanFalse         Boolean\n  HiLink jsNoise                Noise\n  HiLink jsBrackets             Noise\n  HiLink jsParens               Noise\n  HiLink jsBraces               Noise\n  HiLink jsFuncBraces           Noise\n  HiLink jsFuncParens           Noise\n  HiLink jsSpecial              Special\n  HiLink jsTemplateVar          Special\n  HiLink jsGlobalObjects        Special\n  HiLink jsExceptions           Special\n  HiLink jsFutureKeys           Special\n  HiLink jsBuiltins             Special\n\n  HiLink jsDomErrNo             Constant\n  HiLink jsDomNodeConsts        Constant\n  HiLink jsDomElemAttrs         Label\n  HiLink jsDomElemFuncs         PreProc\n\n  HiLink jsHtmlEvents           Special\n  HiLink jsHtmlElemAttrs        Label\n  HiLink jsHtmlElemFuncs        PreProc\n\n  HiLink jsCssStyles            Label\n\n  delcommand HiLink\nendif\n\n\" Define the htmlJavaScript for HTML syntax html.vim\n\"syntax clear htmlJavaScript\n\"syntax clear jsExpression\nsyntax cluster  htmlJavaScript       contains=@jsAll,jsBracket,jsParen,jsBlock\nsyntax cluster  javaScriptExpression contains=@jsAll,jsBracket,jsParen,jsBlock,@htmlPreproc\n\" Vim's default html.vim highlights all javascript as 'Special'\nhi! def link javaScript              NONE\n\nlet b:current_syntax = \"javascript\"\nif main_syntax == 'javascript'\n  unlet main_syntax\nendif\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/json.vim",
    "content": "\" Vim syntax file\n\" Language:\tJSON\n\" Maintainer:\tJeroen Ruigrok van der Werven <asmodai@in-nomine.org>\n\" Last Change:\t2009-06-16\n\" Version:      0.4\n\" {{{1\n\n\" Syntax setup {{{2\n\" For version 5.x: Clear all syntax items\n\" For version 6.x: Quit when a syntax file was already loaded\n\nif !exists(\"main_syntax\")\n  if version < 600\n    syntax clear\n  elseif exists(\"b:current_syntax\")\n    finish\n  endif\n  let main_syntax = 'json'\nendif\n\n\" Syntax: Strings {{{2\nsyn region  jsonString    start=+\"+  skip=+\\\\\\\\\\|\\\\\"+  end=+\"+  contains=jsonEscape\n\" Syntax: JSON does not allow strings with single quotes, unlike JavaScript.\nsyn region  jsonStringSQ  start=+'+  skip=+\\\\\\\\\\|\\\\\"+  end=+'+\n\n\" Syntax: Escape sequences {{{3\nsyn match   jsonEscape    \"\\\\[\"\\\\/bfnrt]\" contained\nsyn match   jsonEscape    \"\\\\u\\x\\{4}\" contained\n\n\" Syntax: Strings should always be enclosed with quotes.\nsyn match   jsonNoQuotes  \"\\<\\a\\+\\>\"\n\n\" Syntax: Numbers {{{2\nsyn match   jsonNumber    \"-\\=\\<\\%(0\\|[1-9]\\d*\\)\\%(\\.\\d\\+\\)\\=\\%([eE][-+]\\=\\d\\+\\)\\=\\>\"\n\n\" Syntax: An integer part of 0 followed by other digits is not allowed.\nsyn match   jsonNumError  \"-\\=\\<0\\d\\.\\d*\\>\"\n\n\" Syntax: Boolean {{{2\nsyn keyword jsonBoolean   true false\n\n\" Syntax: Null {{{2\nsyn keyword jsonNull      null\n\n\" Syntax: Braces {{{2\nsyn match   jsonBraces\t   \"[{}\\[\\]]\"\n\n\" Define the default highlighting. {{{1\n\" For version 5.7 and earlier: only when not done already\n\" For version 5.8 and later: only when an item doesn't have highlighting yet\nif version >= 508 || !exists(\"did_json_syn_inits\")\n  if version < 508\n    let did_json_syn_inits = 1\n    command -nargs=+ HiLink hi link <args>\n  else\n    command -nargs=+ HiLink hi def link <args>\n  endif\n  HiLink jsonString             String\n  HiLink jsonEscape             Special\n  HiLink jsonNumber\t\tNumber\n  HiLink jsonBraces\t\tOperator\n  HiLink jsonNull\t\tFunction\n  HiLink jsonBoolean\t\tBoolean\n\n  HiLink jsonNumError           Error\n  HiLink jsonStringSQ           Error\n  HiLink jsonNoQuotes           Error\n  delcommand HiLink\nendif\n\nlet b:current_syntax = \"json\"\nif main_syntax == 'json'\n  unlet main_syntax\nendif\n\n\" Vim settings {{{2\n\" vim: ts=8 fdm=marker\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/jst.vim",
    "content": "if exists(\"b:current_syntax\")\n  finish\nendif\n\nif !exists(\"main_syntax\")\n  let main_syntax = 'jst'\nendif\n\nif !exists(\"g:jst_default_subtype\")\n  let g:jst_default_subtype = \"html\"\nendif\n\nif &filetype =~ '^jst\\.'\n  let b:jst_subtype = matchstr(&filetype,'^jst\\.\\zs\\w\\+')\nelseif !exists(\"b:jst_subtype\") && main_syntax == 'jst'\n  let s:lines = getline(1).\"\\n\".getline(2).\"\\n\".getline(3).\"\\n\".getline(4).\"\\n\".getline(5).\"\\n\".getline(\"$\")\n  let b:jst_subtype = matchstr(s:lines,'jst_subtype=\\zs\\w\\+')\n  if b:jst_subtype == ''\n    let b:jst_subtype = matchstr(substitute(expand(\"%:t\"),'\\c\\%(\\.jst\\)\\+$','',''),'\\.\\zs\\w\\+$')\n  endif\n  if b:jst_subtype == 'rhtml'\n    let b:jst_subtype = 'html'\n  elseif b:jst_subtype == 'hamljs'\n    let b:jst_subtype = 'haml'\n  elseif b:jst_subtype == 'ejs'\n    let b:jst_subtype = 'html'\n  elseif b:jst_subtype == 'rb'\n    let b:jst_subtype = 'ruby'\n  elseif b:jst_subtype == 'yml'\n    let b:jst_subtype = 'yaml'\n  elseif b:jst_subtype == 'js'\n    let b:jst_subtype = 'javascript'\n  elseif b:jst_subtype == 'txt'\n    \" Conventional; not a real file type\n    let b:jst_subtype = 'text'\n  elseif b:jst_subtype == ''\n    let b:jst_subtype = g:jst_default_subtype\n  endif\nendif\n\nif !exists(\"b:jst_nest_level\")\n  let b:jst_nest_level = strlen(substitute(substitute(substitute(expand(\"%:t\"),'@','','g'),'\\c\\.\\%(erb\\|rhtml\\)\\>','@','g'),'[^@]','','g'))\nendif\nif !b:jst_nest_level\n  let b:jst_nest_level = 1\nendif\n\nif exists(\"b:jst_subtype\") && b:jst_subtype != ''\n  exe \"runtime! syntax/\".b:jst_subtype.\".vim\"\n  unlet! b:current_syntax\nendif\n\nsyn include @jsTop syntax/javascript.vim\n\nsyn cluster jstRegions contains=jstOneLiner,jstBlock,jstExpression,jstComment\n\nexe 'syn region  jstOneLiner   matchgroup=jstDelimiter start=\"^%\\{1,'.b:jst_nest_level.'\\}%\\@!\"    end=\"$\"     contains=@jsTop\t     containedin=ALLBUT,@jstRegions keepend oneline'\nexe 'syn region  jstBlock      matchgroup=jstDelimiter start=\"<%\\{1,'.b:jst_nest_level.'\\}%\\@!-\\=\" end=\"[=-]\\=%\\@<!%\\{1,'.b:jst_nest_level.'\\}>\" contains=@jsTop  containedin=ALLBUT,@jstRegions keepend'\nexe 'syn region  jstExpression matchgroup=jstDelimiter start=\"<%\\{1,'.b:jst_nest_level.'\\}=\\{1,4}\" end=\"[=-]\\=%\\@<!%\\{1,'.b:jst_nest_level.'\\}>\" contains=@jsTop  containedin=ALLBUT,@jstRegions keepend'\nexe 'syn region  jstComment    matchgroup=jstDelimiter start=\"<%\\{1,'.b:jst_nest_level.'\\}#\"       end=\"%\\@<!%\\{1,'.b:jst_nest_level.'\\}>\" contains=jsTodo,@Spell containedin=ALLBUT,@jstRegions keepend'\n\n\" Define the default highlighting.\n\nhi def link jstDelimiter\t\tPreProc\nhi def link jstComment\t\tComment\n\nlet b:current_syntax = 'jst'\n\nif main_syntax == 'jst'\n  unlet main_syntax\nendif\n\n\" vim: nowrap sw=2 sts=2 ts=8:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/latextoc.vim",
    "content": "syntax match helpText /^.*: .*/\nsyntax match secNum /^\\S\\+\\(\\.\\S\\+\\)\\?\\s*/ contained conceal\nsyntax match secLine /^\\S\\+\\t.\\+/ contains=secNum\nsyntax match mainSecLine /^[^\\.]\\+\\t.*/ contains=secNum\nsyntax match ssubSecLine /^[^\\.]\\+\\.[^\\.]\\+\\.[^\\.]\\+\\t.*/ contains=secNum\nhighlight link helpText\t\tPreProc\nhighlight link secNum\t\tNumber\nhighlight link mainSecLine\tTitle\nhighlight link ssubSecLine\tComment\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/less.vim",
    "content": "if exists(\"b:current_syntax\")\n  finish\nendif\n\nruntime! syntax/css.vim\nruntime! after/syntax/css.vim\n\" load files from vim-css3-syntax plugin (https://github.com/hail2u/vim-css3-syntax)\nruntime! after/syntax/css/*.vim\n\nsyn case ignore\n\nsyn region lessDefinition transparent matchgroup=cssBraces start='{' end='}' contains=css.*Attr,css.*Prop,cssComment,cssValue.*,cssColor,cssTagName,cssPseudoClass,cssUrl,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,lessDefinition,lessComment,lessClassChar,lessVariable,lessMixinChar,lessAmpersandChar,lessFunction,lessNestedSelector,@cssColors fold\n\nsyn match lessVariable \"@[[:alnum:]_-]\\+\" contained\nsyn match lessVariable \"@[[:alnum:]_-]\\+\" nextgroup=lessVariableAssignment skipwhite\nsyn match lessVariableAssignment \":\" contained nextgroup=lessVariableValue skipwhite\nsyn match lessVariableValue \".*;\"me=e-1 contained contains=lessVariable,lessOperator,lessDefault,cssValue.*,@cssColors \"me=e-1 means that the last char of the pattern is not highlighted\n\nsyn match lessOperator \"+\" contained\nsyn match lessOperator \"-\" contained\nsyn match lessOperator \"/\" contained\nsyn match lessOperator \"*\" contained\n\nsyn match lessNestedSelector \"[^/]* {\"me=e-1 contained contains=cssTagName,cssAttributeSelector,lessAmpersandChar,lessVariable,lessMixinChar,lessFunction,lessNestedProperty\nsyn match lessNestedProperty \"[[:alnum:]]\\+:\"me=e-1 contained\n\nsyn match lessDefault \"!default\" contained\n\nsyn match lessMixinChar \"\\.[[:alnum:]_-]\\@=\" contained nextgroup=lessClass\nsyn match lessAmpersandChar \"&\" contained nextgroup=lessClass,cssPseudoClass\nsyn match lessClass \"[[:alnum:]_-]\\+\" contained\n\n\" functions {{{\n\n\" string functions\nsyn keyword lessFunction escape e % containedin=cssDefinition contained\n\" misc functions\nsyn keyword lessFunction unit containedin=cssDefinition contained\n\" math functions\nsyn keyword lessFunction ceil floor percentage round containedin=cssDefinition contained\n\" color definition\nsyn keyword lessFunction rgb rgba argb hsl hsla hsv hsva containedin=cssDefinition contained\n\" color channel information\nsyn keyword lessFunction hue saturation lightness red green blue alpha luma containedin=cssDefinition contained\n\" color operations\nsyn keyword lessFunction saturate desaturate lighten darken fadein fadeout fade spin mix greyscale contrast containedin=cssDefinition contained\n\" color blending\nsyn keyword lessFunction multiply screen overlay softlight hardlight difference exclusion average negation containedin=cssDefinition contained\n\n\" }}}\n\nsyn match lessComment \"//.*$\" contains=@Spell\n\nhi def link lessVariable Special\nhi def link lessVariableValue Constant\nhi def link lessDefault Special\nhi def link lessComment Comment\nhi def link lessFunction Function\nhi def link lessMixinChar Special\nhi def link lessAmpersandChar Special\nhi def link lessNestedProperty Type\nhi def link lessClass PreProc\n\nlet b:current_syntax = \"less\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/markdown.vim",
    "content": "\" Vim syntax file\n\" Language:     Markdown\n\" Maintainer:   Tim Pope <vimNOSPAM@tpope.org>\n\" Filenames:    *.markdown\n\" Last Change:  2013 May 30\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nif !exists('main_syntax')\n  let main_syntax = 'markdown'\nendif\n\nruntime! syntax/html.vim\nunlet! b:current_syntax\n\nif !exists('g:markdown_fenced_languages')\n  let g:markdown_fenced_languages = []\nendif\nfor s:type in map(copy(g:markdown_fenced_languages),'matchstr(v:val,\"[^=]*$\")')\n  if s:type =~ '\\.'\n    let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\\.\\zs.*')\n  endif\n  exe 'syn include @markdownHighlight'.substitute(s:type,'\\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim'\n  unlet! b:current_syntax\nendfor\nunlet! s:type\n\nsyn sync minlines=10\nsyn case ignore\n\nsyn match markdownValid '[<>]\\c[a-z/$!]\\@!'\nsyn match markdownValid '&\\%(#\\=\\w*;\\)\\@!'\n\nsyn match markdownLineStart \"^[<@]\\@!\" nextgroup=@markdownBlock,htmlSpecialChar\n\nsyn cluster markdownBlock contains=markdownH1,markdownH2,markdownH3,markdownH4,markdownH5,markdownH6,markdownBlockquote,markdownListMarker,markdownOrderedListMarker,markdownCodeBlock,markdownRule\nsyn cluster markdownInline contains=markdownLineBreak,markdownLinkText,markdownItalic,markdownBold,markdownCode,markdownEscape,@htmlTop,markdownError\n\nsyn match markdownH1 \"^.\\+\\n=\\+$\" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink\nsyn match markdownH2 \"^.\\+\\n-\\+$\" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink\n\nsyn match markdownHeadingRule \"^[=-]\\+$\" contained\n\nsyn region markdownH1 matchgroup=markdownHeadingDelimiter start=\"##\\@!\"      end=\"#*\\s*$\" keepend oneline contains=@markdownInline,markdownAutomaticLink contained\nsyn region markdownH2 matchgroup=markdownHeadingDelimiter start=\"###\\@!\"     end=\"#*\\s*$\" keepend oneline contains=@markdownInline,markdownAutomaticLink contained\nsyn region markdownH3 matchgroup=markdownHeadingDelimiter start=\"####\\@!\"    end=\"#*\\s*$\" keepend oneline contains=@markdownInline,markdownAutomaticLink contained\nsyn region markdownH4 matchgroup=markdownHeadingDelimiter start=\"#####\\@!\"   end=\"#*\\s*$\" keepend oneline contains=@markdownInline,markdownAutomaticLink contained\nsyn region markdownH5 matchgroup=markdownHeadingDelimiter start=\"######\\@!\"  end=\"#*\\s*$\" keepend oneline contains=@markdownInline,markdownAutomaticLink contained\nsyn region markdownH6 matchgroup=markdownHeadingDelimiter start=\"#######\\@!\" end=\"#*\\s*$\" keepend oneline contains=@markdownInline,markdownAutomaticLink contained\n\nsyn match markdownBlockquote \">\\%(\\s\\|$\\)\" contained nextgroup=@markdownBlock\n\nsyn region markdownCodeBlock start=\"    \\|\\t\" end=\"$\" contained\n\n\" TODO: real nesting\nsyn match markdownListMarker \"\\%(\\t\\| \\{0,4\\}\\)[-*+]\\%(\\s\\+\\S\\)\\@=\" contained\nsyn match markdownOrderedListMarker \"\\%(\\t\\| \\{0,4}\\)\\<\\d\\+\\.\\%(\\s\\+\\S\\)\\@=\" contained\n\nsyn match markdownRule \"\\* *\\* *\\*[ *]*$\" contained\nsyn match markdownRule \"- *- *-[ -]*$\" contained\n\nsyn match markdownLineBreak \" \\{2,\\}$\"\n\nsyn region markdownIdDeclaration matchgroup=markdownLinkDelimiter start=\"^ \\{0,3\\}!\\=\\[\" end=\"\\]:\" oneline keepend nextgroup=markdownUrl skipwhite\nsyn match markdownUrl \"\\S\\+\" nextgroup=markdownUrlTitle skipwhite contained\nsyn region markdownUrl matchgroup=markdownUrlDelimiter start=\"<\" end=\">\" oneline keepend nextgroup=markdownUrlTitle skipwhite contained\nsyn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+\"+ end=+\"+ keepend contained\nsyn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+'+ end=+'+ keepend contained\nsyn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+(+ end=+)+ keepend contained\n\nsyn region markdownLinkText matchgroup=markdownLinkTextDelimiter start=\"!\\=\\[\\%(\\_[^]]*]\\%( \\=[[(]\\)\\)\\@=\" end=\"\\]\\%( \\=[[(]\\)\\@=\" nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart\nsyn region markdownLink matchgroup=markdownLinkDelimiter start=\"(\" end=\")\" contains=markdownUrl keepend contained\nsyn region markdownId matchgroup=markdownIdDelimiter start=\"\\[\" end=\"\\]\" keepend contained\nsyn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start=\"<\\%(\\w\\+:\\|[[:alnum:]_+-]\\+@\\)\\@=\" end=\">\" keepend oneline\n\nsyn region markdownItalic start=\"\\S\\@<=\\*\\|\\*\\S\\@=\" end=\"\\S\\@<=\\*\\|\\*\\S\\@=\" keepend contains=markdownLineStart\nsyn region markdownItalic start=\"\\S\\@<=_\\|_\\S\\@=\" end=\"\\S\\@<=_\\|_\\S\\@=\" keepend contains=markdownLineStart\nsyn region markdownBold start=\"\\S\\@<=\\*\\*\\|\\*\\*\\S\\@=\" end=\"\\S\\@<=\\*\\*\\|\\*\\*\\S\\@=\" keepend contains=markdownLineStart,markdownItalic\nsyn region markdownBold start=\"\\S\\@<=__\\|__\\S\\@=\" end=\"\\S\\@<=__\\|__\\S\\@=\" keepend contains=markdownLineStart,markdownItalic\nsyn region markdownBoldItalic start=\"\\S\\@<=\\*\\*\\*\\|\\*\\*\\*\\S\\@=\" end=\"\\S\\@<=\\*\\*\\*\\|\\*\\*\\*\\S\\@=\" keepend contains=markdownLineStart\nsyn region markdownBoldItalic start=\"\\S\\@<=___\\|___\\S\\@=\" end=\"\\S\\@<=___\\|___\\S\\@=\" keepend contains=markdownLineStart\nsyn region markdownCode matchgroup=markdownCodeDelimiter start=\"`\" end=\"`\" keepend contains=markdownLineStart\nsyn region markdownCode matchgroup=markdownCodeDelimiter start=\"`` \\=\" end=\" \\=``\" keepend contains=markdownLineStart\nsyn region markdownCode matchgroup=markdownCodeDelimiter start=\"^\\s*```.*$\" end=\"^\\s*```\\ze\\s*$\" keepend\n\nsyn match markdownFootnote \"\\[^[^\\]]\\]\\s*$\"\nsyn match markdownFootnoteDefinition \"^\\[^[^\\]]\\]:\"\n\nif main_syntax ==# 'markdown'\n  for s:type in g:markdown_fenced_languages\n    exe 'syn region markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\\..*','','').' matchgroup=markdownCodeDelimiter start=\"^\\s*```\\s*'.matchstr(s:type,'[^=]*').'\\>.*$\" end=\"^\\s*```\\ze\\s*$\" keepend contains=@markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\\.','','g')\n  endfor\n  unlet! s:type\nendif\n\nsyn match markdownEscape \"\\\\[][\\\\`*_{}()#+.!-]\"\nsyn match markdownError \"\\w\\@<=_\\w\\@=\"\n\nhi def link markdownH1                    htmlH1\nhi def link markdownH2                    htmlH2\nhi def link markdownH3                    htmlH3\nhi def link markdownH4                    htmlH4\nhi def link markdownH5                    htmlH5\nhi def link markdownH6                    htmlH6\nhi def link markdownHeadingRule           markdownRule\nhi def link markdownHeadingDelimiter      Delimiter\nhi def link markdownOrderedListMarker     markdownListMarker\nhi def link markdownListMarker            htmlTagName\nhi def link markdownBlockquote            Comment\nhi def link markdownRule                  PreProc\n\nhi def link markdownFootnote              Typedef\nhi def link markdownFootnoteDefinition    Typedef\n\nhi def link markdownLinkText              htmlLink\nhi def link markdownIdDeclaration         Typedef\nhi def link markdownId                    Type\nhi def link markdownAutomaticLink         markdownUrl\nhi def link markdownUrl                   Float\nhi def link markdownUrlTitle              String\nhi def link markdownIdDelimiter           markdownLinkDelimiter\nhi def link markdownUrlDelimiter          htmlTag\nhi def link markdownUrlTitleDelimiter     Delimiter\n\nhi def link markdownItalic                htmlItalic\nhi def link markdownBold                  htmlBold\nhi def link markdownBoldItalic            htmlBoldItalic\nhi def link markdownCodeDelimiter         Delimiter\n\nhi def link markdownEscape                Special\nhi def link markdownError                 Error\n\nlet b:current_syntax = \"markdown\"\nif main_syntax ==# 'markdown'\n  unlet main_syntax\nendif\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/mason.vim",
    "content": "\" Vim syntax file\n\" Language:     Mason (Perl embedded in HTML)\n\" Maintainer:   vim-perl <vim-perl@googlegroups.com>\n\" Homepage:      http://github.com/vim-perl/vim-perl/tree/master\n\" Bugs/requests: http://github.com/vim-perl/vim-perl/issues\n\" Last Change:  {{LAST_CHANGE}}\n\" Contributors: Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>\n\"               Andrew Smith <andrewdsmith@yahoo.com>\n\"\n\" TODO:\n\"  - Fix <%text> blocks to show HTML tags but ignore Mason tags.\n\"\n\n\" Clear previous syntax settings unless this is v6 or above, in which case just\n\" exit without doing anything.\n\"\nif version < 600\n\tsyn clear\nelseif exists(\"b:current_syntax\")\n\tfinish\nendif\n\n\" The HTML syntax file included below uses this variable.\n\"\nif !exists(\"main_syntax\")\n\tlet main_syntax = 'mason'\nendif\n\n\" First pull in the HTML syntax.\n\"\nif version < 600\n\tso <sfile>:p:h/html.vim\nelse\n\truntime! syntax/html.vim\n\tunlet b:current_syntax\nendif\n\nsyn cluster htmlPreproc add=@masonTop\n\n\" Now pull in the Perl syntax.\n\"\nif version < 600\n\tsyn include @perlTop <sfile>:p:h/perl.vim\n        unlet b:current_syntax\n\tsyn include @podTop <sfile>:p:h/pod.vim\nelse\n\tsyn include @perlTop syntax/perl.vim\n        unlet b:current_syntax\n        syn include @podTop syntax/pod.vim\nendif\n\n\" It's hard to reduce down to the correct sub-set of Perl to highlight in some\n\" of these cases so I've taken the safe option of just using perlTop in all of\n\" them. If you have any suggestions, please let me know.\n\"\nsyn region masonPod start=\"^=[a-z]\" end=\"^=cut\" keepend contained contains=@podTop\nsyn cluster perlTop remove=perlBraces\nsyn region masonLine matchgroup=Delimiter start=\"^%\" end=\"$\" keepend contains=@perlTop\nsyn region masonPerlComment start=\"#\" end=\"\\%(%>\\)\\@=\\|$\" contained contains=perlTodo,@Spell\nsyn region masonExpr matchgroup=Delimiter start=\"<%\" end=\"%>\" contains=@perlTop,masonPerlComment\nsyn region masonPerl matchgroup=Delimiter start=\"<%perl>\" end=\"</%perl>\" contains=masonPod,@perlTop\nsyn region masonComp keepend matchgroup=Delimiter start=\"<&\\s*\\%([-._/[:alnum:]]\\+:\\)\\?[-._/[:alnum:]]*\" end=\"&>\" contains=@perlTop\nsyn region masonComp keepend matchgroup=Delimiter skipnl start=\"<&|\\s*\\%([-._/[:alnum:]]\\+:\\)\\?[-._/[:alnum:]]*\" end=\"&>\" contains=@perlTop nextgroup=masonCompContent\nsyn region masonCompContent matchgroup=Delimiter start=\"\" end=\"</&>\" contained contains=@masonTop\n\nsyn region masonArgs matchgroup=Delimiter start=\"<%args>\" end=\"</%args>\" contains=masonPod,@perlTop\n\nsyn region masonInit matchgroup=Delimiter start=\"<%init>\" end=\"</%init>\" contains=masonPod,@perlTop\nsyn region masonCleanup matchgroup=Delimiter start=\"<%cleanup>\" end=\"</%cleanup>\" contains=masonPod,@perlTop\nsyn region masonOnce matchgroup=Delimiter start=\"<%once>\" end=\"</%once>\" contains=masonPod,@perlTop\nsyn region masonClass matchgroup=Delimiter start=\"<%class>\" end=\"</%class>\" contains=masonPod,@perlTop\nsyn region masonShared matchgroup=Delimiter start=\"<%shared>\" end=\"</%shared>\" contains=masonPod,@perlTop\n\nsyn region masonDef matchgroup=Delimiter start=\"<%def\\s*[-._/[:alnum:]]\\+\\s*>\" end=\"</%def>\" contains=@htmlTop\nsyn region masonMethod matchgroup=Delimiter start=\"<%method\\s*[-._/[:alnum:]]\\+\\s*>\" end=\"</%method>\" contains=@htmlTop\n\nsyn region masonFlags matchgroup=Delimiter start=\"<%flags>\" end=\"</%flags>\" contains=masonPod,@perlTop\nsyn region masonAttr matchgroup=Delimiter start=\"<%attr>\" end=\"</%attr>\" contains=masonPod,@perlTop\n\nsyn region masonFilter matchgroup=Delimiter start=\"<%filter>\" end=\"</%filter>\" contains=masonPod,@perlTop\n\nsyn region masonDoc matchgroup=Delimiter start=\"<%doc>\" end=\"</%doc>\"\nsyn region masonText matchgroup=Delimiter start=\"<%text>\" end=\"</%text>\"\n\nsyn cluster masonTop contains=masonLine,masonExpr,masonPerl,masonComp,masonArgs,masonInit,masonCleanup,masonOnce,masonShared,masonDef,masonMethod,masonFlags,masonAttr,masonFilter,masonDoc,masonText\n\n\" Set up default highlighting. Almost all of this is done in the included\n\" syntax files.\n\"\nif version >= 508 || !exists(\"did_mason_syn_inits\")\n\tif version < 508\n\t\tlet did_mason_syn_inits = 1\n\t\tcom -nargs=+ HiLink hi link <args>\n\telse\n\t\tcom -nargs=+ HiLink hi def link <args>\n\tendif\n\n\tHiLink masonDoc Comment\n\tHiLink masonPod Comment\n\tHiLink masonPerlComment perlComment\n\n\tdelc HiLink\nendif\n\nlet b:current_syntax = \"mason\"\n\nif main_syntax == 'mason'\n\tunlet main_syntax\nendif\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/mustache.vim",
    "content": "\" Mustache & Handlebars syntax\n\" Language:\tMustache, Handlebars\n\" Maintainer:\tJuvenn Woo <machese@gmail.com>\n\" Screenshot:   http://imgur.com/6F408\n\" Version:\t2\n\" Last Change:  Oct 26th 2013\n\" Remark:\n\"   It lexically hilights embedded mustaches (exclusively) in html file.\n\"   While it was written for Ruby-based Mustache template system, it should\n\"   work for Google's C-based *ctemplate* as well as Erlang-based *et*. All\n\"   of them are, AFAIK, based on the idea of ctemplate.\n\" References:\n\"   [Mustache](http://github.com/defunkt/mustache)\n\"   [Handlebars](https://github.com/wycats/handlebars.js)\n\"   [ctemplate](http://code.google.com/p/google-ctemplate/)\n\"   [ctemplate doc](http://google-ctemplate.googlecode.com/svn/trunk/doc/howto.html)\n\"   [et](http://www.ivan.fomichev.name/2008/05/erlang-template-engine-prototype.html)\n\" TODO: Feedback is welcomed.\n\n\n\" Read the HTML syntax to start with\nif version < 600\n  so <sfile>:p:h/html.vim\nelse\n  runtime! syntax/html.vim\n  unlet b:current_syntax\nendif\n\nif version < 600\n  syntax clear\nelseif exists(\"b:current_syntax\")\n  finish\nendif\n\n\" Standard HiLink will not work with included syntax files\nif version < 508\n  command! -nargs=+ HtmlHiLink hi link <args>\nelse\n  command! -nargs=+ HtmlHiLink hi def link <args>\nendif\n\nsyntax match mustacheError '}}}\\?'\nsyntax match mustacheInsideError '{{[{#<>=!\\/]\\?'\nsyntax region mustacheInside start=/{{/ end=/}}}\\?/ keepend containedin=TOP,@htmlMustacheContainer\nsyntax match mustacheOperators '=\\|\\.\\|/' contained containedin=mustacheInside,@htmlMustacheContainer\nsyntax region mustacheSection start='{{[#^/]'lc=2 end=/}}/me=e-2 contained containedin=mustacheInside,@htmlMustacheContainer\nsyntax region mustachePartial start=/{{[<>]/lc=2 end=/}}/me=e-2 contained containedin=mustacheInside,@htmlMustacheContainer\nsyntax region mustacheMarkerSet start=/{{=/lc=2 end=/=}}/me=e-2 contained containedin=mustacheInside,@htmlMustacheContainer\nsyntax match mustacheHandlebars '{{\\|}}' contained containedin=mustacheInside,@htmlMustacheContainer\nsyntax match mustacheUnescape '{{{\\|}}}' contained containedin=mustacheInside,@htmlMustacheContainer\nsyntax match mustacheConditionals '\\([/#]\\(if\\|unless\\)\\|else\\)' contained containedin=mustacheInside\nsyntax match mustacheHelpers '[/#]\\(with\\|each\\)' contained containedin=mustacheSection\nsyntax region mustacheComment start=/{{!/rs=s+2 end=/}}/re=e-2 contains=Todo contained containedin=mustacheInside,@htmlMustacheContainer\nsyntax region mustacheBlockComment start=/{{!--/rs=s+2 end=/--}}/re=e-2 contains=Todo\nsyntax region mustacheQString start=/'/ skip=/\\\\'/ end=/'/ contained containedin=mustacheInside\nsyntax region mustacheDQString start=/\"/ skip=/\\\\\"/ end=/\"/ contained containedin=mustacheInside\n\n\" Clustering\nsyntax cluster htmlMustacheContainer add=htmlHead,htmlTitle,htmlString,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,htmlLink,htmlBold,htmlUnderline,htmlItalic,htmlValue\n\n\n\" Hilighting\n\" mustacheInside hilighted as Number, which is rarely used in html\n\" you might like change it to Function or Identifier\nHtmlHiLink mustacheVariable Number\nHtmlHiLink mustacheVariableUnescape Number\nHtmlHiLink mustachePartial Number\nHtmlHiLink mustacheSection Number\nHtmlHiLink mustacheMarkerSet Number\n\nHtmlHiLink mustacheComment Comment\nHtmlHiLink mustacheBlockComment Comment\nHtmlHiLink mustacheError Error\nHtmlHiLink mustacheInsideError Error\n\nHtmlHiLink mustacheHandlebars Special\nHtmlHiLink mustacheUnescape Identifier\nHtmlHiLink mustacheOperators Operator\nHtmlHiLink mustacheConditionals Conditional\nHtmlHiLink mustacheHelpers Repeat\nHtmlHiLink mustacheQString String\nHtmlHiLink mustacheDQString String\n\nsyn region mustacheScriptTemplate start=+<script [^>]*type *=[^>]*text/\\(mustache\\|x-handlebars-template\\)[^>]*>+\n\\                       end=+</script>+me=s-1 keepend\n\\                       contains=mustacheInside,@htmlMustacheContainer,htmlTag,htmlEndTag,htmlTagName,htmlSpecialChar\n\nlet b:current_syntax = \"mustache\"\ndelcommand HtmlHiLink\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/nginx.vim",
    "content": "\" Vim syntax file\n\" Language: nginx.conf\n\nif exists(\"b:current_syntax\")\n  finish\nend\n\nsetlocal iskeyword+=.\nsetlocal iskeyword+=/\nsetlocal iskeyword+=:\n\nsyn match ngxVariable '\\$\\w\\w*'\nsyn match ngxVariableBlock '\\$\\w\\w*' contained\nsyn match ngxVariableString '\\$\\w\\w*' contained\nsyn region ngxBlock start=+^+ end=+{+ contains=ngxComment,ngxDirectiveBlock,ngxVariableBlock,ngxString oneline\nsyn region ngxString start=+\"+ end=+\"+ skip=+\\\\\\\\\\|\\\\\"+ contains=ngxVariableString oneline\nsyn region ngxString start=+'+ end=+'+ skip=+\\\\\\\\\\|\\\\'+ contains=ngxVariableString oneline\nsyn match ngxComment ' *#.*$'\n\nsyn keyword ngxBoolean on\nsyn keyword ngxBoolean off\n\nsyn keyword ngxDirectiveBlock http         contained\nsyn keyword ngxDirectiveBlock mail         contained\nsyn keyword ngxDirectiveBlock events       contained\nsyn keyword ngxDirectiveBlock server       contained\nsyn keyword ngxDirectiveBlock types        contained\nsyn keyword ngxDirectiveBlock location     contained\nsyn keyword ngxDirectiveBlock upstream     contained\nsyn keyword ngxDirectiveBlock charset_map  contained\nsyn keyword ngxDirectiveBlock limit_except contained\nsyn keyword ngxDirectiveBlock if           contained\nsyn keyword ngxDirectiveBlock geo          contained\nsyn keyword ngxDirectiveBlock map          contained\n\nsyn keyword ngxDirectiveImportant include\nsyn keyword ngxDirectiveImportant root\nsyn keyword ngxDirectiveImportant server\nsyn keyword ngxDirectiveImportant server_name\nsyn keyword ngxDirectiveImportant listen\nsyn keyword ngxDirectiveImportant internal\nsyn keyword ngxDirectiveImportant proxy_pass\nsyn keyword ngxDirectiveImportant memcached_pass\nsyn keyword ngxDirectiveImportant fastcgi_pass\nsyn keyword ngxDirectiveImportant try_files\n\nsyn keyword ngxDirectiveControl break\nsyn keyword ngxDirectiveControl return\nsyn keyword ngxDirectiveControl rewrite\nsyn keyword ngxDirectiveControl set\n\nsyn keyword ngxDirectiveError error_page\nsyn keyword ngxDirectiveError post_action\n\nsyn keyword ngxDirectiveDeprecated connections\nsyn keyword ngxDirectiveDeprecated imap\nsyn keyword ngxDirectiveDeprecated open_file_cache_retest\nsyn keyword ngxDirectiveDeprecated optimize_server_names\nsyn keyword ngxDirectiveDeprecated satisfy_any\n\nsyn keyword ngxDirective accept_mutex\nsyn keyword ngxDirective accept_mutex_delay\nsyn keyword ngxDirective access_log\nsyn keyword ngxDirective add_after_body\nsyn keyword ngxDirective add_before_body\nsyn keyword ngxDirective add_header\nsyn keyword ngxDirective addition_types\nsyn keyword ngxDirective aio\nsyn keyword ngxDirective alias\nsyn keyword ngxDirective allow\nsyn keyword ngxDirective ancient_browser\nsyn keyword ngxDirective ancient_browser_value\nsyn keyword ngxDirective auth_basic\nsyn keyword ngxDirective auth_basic_user_file\nsyn keyword ngxDirective auth_http\nsyn keyword ngxDirective auth_http_header\nsyn keyword ngxDirective auth_http_timeout\nsyn keyword ngxDirective autoindex\nsyn keyword ngxDirective autoindex_exact_size\nsyn keyword ngxDirective autoindex_localtime\nsyn keyword ngxDirective charset\nsyn keyword ngxDirective charset_types\nsyn keyword ngxDirective client_body_buffer_size\nsyn keyword ngxDirective client_body_in_file_only\nsyn keyword ngxDirective client_body_in_single_buffer\nsyn keyword ngxDirective client_body_temp_path\nsyn keyword ngxDirective client_body_timeout\nsyn keyword ngxDirective client_header_buffer_size\nsyn keyword ngxDirective client_header_timeout\nsyn keyword ngxDirective client_max_body_size\nsyn keyword ngxDirective connection_pool_size\nsyn keyword ngxDirective create_full_put_path\nsyn keyword ngxDirective daemon\nsyn keyword ngxDirective dav_access\nsyn keyword ngxDirective dav_methods\nsyn keyword ngxDirective debug_connection\nsyn keyword ngxDirective debug_points\nsyn keyword ngxDirective default_type\nsyn keyword ngxDirective degradation\nsyn keyword ngxDirective degrade\nsyn keyword ngxDirective deny\nsyn keyword ngxDirective devpoll_changes\nsyn keyword ngxDirective devpoll_events\nsyn keyword ngxDirective directio\nsyn keyword ngxDirective directio_alignment\nsyn keyword ngxDirective empty_gif\nsyn keyword ngxDirective env\nsyn keyword ngxDirective epoll_events\nsyn keyword ngxDirective error_log\nsyn keyword ngxDirective eventport_events\nsyn keyword ngxDirective expires\nsyn keyword ngxDirective fastcgi_bind\nsyn keyword ngxDirective fastcgi_buffer_size\nsyn keyword ngxDirective fastcgi_buffers\nsyn keyword ngxDirective fastcgi_busy_buffers_size\nsyn keyword ngxDirective fastcgi_cache\nsyn keyword ngxDirective fastcgi_cache_key\nsyn keyword ngxDirective fastcgi_cache_methods\nsyn keyword ngxDirective fastcgi_cache_min_uses\nsyn keyword ngxDirective fastcgi_cache_path\nsyn keyword ngxDirective fastcgi_cache_use_stale\nsyn keyword ngxDirective fastcgi_cache_valid\nsyn keyword ngxDirective fastcgi_catch_stderr\nsyn keyword ngxDirective fastcgi_connect_timeout\nsyn keyword ngxDirective fastcgi_hide_header\nsyn keyword ngxDirective fastcgi_ignore_client_abort\nsyn keyword ngxDirective fastcgi_ignore_headers\nsyn keyword ngxDirective fastcgi_index\nsyn keyword ngxDirective fastcgi_intercept_errors\nsyn keyword ngxDirective fastcgi_max_temp_file_size\nsyn keyword ngxDirective fastcgi_next_upstream\nsyn keyword ngxDirective fastcgi_param\nsyn keyword ngxDirective fastcgi_pass_header\nsyn keyword ngxDirective fastcgi_pass_request_body\nsyn keyword ngxDirective fastcgi_pass_request_headers\nsyn keyword ngxDirective fastcgi_read_timeout\nsyn keyword ngxDirective fastcgi_send_lowat\nsyn keyword ngxDirective fastcgi_send_timeout\nsyn keyword ngxDirective fastcgi_split_path_info\nsyn keyword ngxDirective fastcgi_store\nsyn keyword ngxDirective fastcgi_store_access\nsyn keyword ngxDirective fastcgi_temp_file_write_size\nsyn keyword ngxDirective fastcgi_temp_path\nsyn keyword ngxDirective fastcgi_upstream_fail_timeout\nsyn keyword ngxDirective fastcgi_upstream_max_fails\nsyn keyword ngxDirective flv\nsyn keyword ngxDirective geoip_city\nsyn keyword ngxDirective geoip_country\nsyn keyword ngxDirective google_perftools_profiles\nsyn keyword ngxDirective gzip\nsyn keyword ngxDirective gzip_buffers\nsyn keyword ngxDirective gzip_comp_level\nsyn keyword ngxDirective gzip_disable\nsyn keyword ngxDirective gzip_hash\nsyn keyword ngxDirective gzip_http_version\nsyn keyword ngxDirective gzip_min_length\nsyn keyword ngxDirective gzip_no_buffer\nsyn keyword ngxDirective gzip_proxied\nsyn keyword ngxDirective gzip_static\nsyn keyword ngxDirective gzip_types\nsyn keyword ngxDirective gzip_vary\nsyn keyword ngxDirective gzip_window\nsyn keyword ngxDirective if_modified_since\nsyn keyword ngxDirective ignore_invalid_headers\nsyn keyword ngxDirective image_filter\nsyn keyword ngxDirective image_filter_buffer\nsyn keyword ngxDirective image_filter_jpeg_quality\nsyn keyword ngxDirective image_filter_transparency\nsyn keyword ngxDirective imap_auth\nsyn keyword ngxDirective imap_capabilities\nsyn keyword ngxDirective imap_client_buffer\nsyn keyword ngxDirective index\nsyn keyword ngxDirective ip_hash\nsyn keyword ngxDirective keepalive_requests\nsyn keyword ngxDirective keepalive_timeout\nsyn keyword ngxDirective kqueue_changes\nsyn keyword ngxDirective kqueue_events\nsyn keyword ngxDirective large_client_header_buffers\nsyn keyword ngxDirective limit_conn\nsyn keyword ngxDirective limit_conn_log_level\nsyn keyword ngxDirective limit_rate\nsyn keyword ngxDirective limit_rate_after\nsyn keyword ngxDirective limit_req\nsyn keyword ngxDirective limit_req_log_level\nsyn keyword ngxDirective limit_req_zone\nsyn keyword ngxDirective limit_zone\nsyn keyword ngxDirective lingering_time\nsyn keyword ngxDirective lingering_timeout\nsyn keyword ngxDirective lock_file\nsyn keyword ngxDirective log_format\nsyn keyword ngxDirective log_not_found\nsyn keyword ngxDirective log_subrequest\nsyn keyword ngxDirective map_hash_bucket_size\nsyn keyword ngxDirective map_hash_max_size\nsyn keyword ngxDirective master_process\nsyn keyword ngxDirective memcached_bind\nsyn keyword ngxDirective memcached_buffer_size\nsyn keyword ngxDirective memcached_connect_timeout\nsyn keyword ngxDirective memcached_next_upstream\nsyn keyword ngxDirective memcached_read_timeout\nsyn keyword ngxDirective memcached_send_timeout\nsyn keyword ngxDirective memcached_upstream_fail_timeout\nsyn keyword ngxDirective memcached_upstream_max_fails\nsyn keyword ngxDirective merge_slashes\nsyn keyword ngxDirective min_delete_depth\nsyn keyword ngxDirective modern_browser\nsyn keyword ngxDirective modern_browser_value\nsyn keyword ngxDirective msie_padding\nsyn keyword ngxDirective msie_refresh\nsyn keyword ngxDirective multi_accept\nsyn keyword ngxDirective open_file_cache\nsyn keyword ngxDirective open_file_cache_errors\nsyn keyword ngxDirective open_file_cache_events\nsyn keyword ngxDirective open_file_cache_min_uses\nsyn keyword ngxDirective open_file_cache_valid\nsyn keyword ngxDirective open_log_file_cache\nsyn keyword ngxDirective output_buffers\nsyn keyword ngxDirective override_charset\nsyn keyword ngxDirective perl\nsyn keyword ngxDirective perl_modules\nsyn keyword ngxDirective perl_require\nsyn keyword ngxDirective perl_set\nsyn keyword ngxDirective pid\nsyn keyword ngxDirective pop3_auth\nsyn keyword ngxDirective pop3_capabilities\nsyn keyword ngxDirective port_in_redirect\nsyn keyword ngxDirective postpone_gzipping\nsyn keyword ngxDirective postpone_output\nsyn keyword ngxDirective protocol\nsyn keyword ngxDirective proxy\nsyn keyword ngxDirective proxy_bind\nsyn keyword ngxDirective proxy_buffer\nsyn keyword ngxDirective proxy_buffer_size\nsyn keyword ngxDirective proxy_buffering\nsyn keyword ngxDirective proxy_buffers\nsyn keyword ngxDirective proxy_busy_buffers_size\nsyn keyword ngxDirective proxy_cache\nsyn keyword ngxDirective proxy_cache_key\nsyn keyword ngxDirective proxy_cache_methods\nsyn keyword ngxDirective proxy_cache_min_uses\nsyn keyword ngxDirective proxy_cache_path\nsyn keyword ngxDirective proxy_cache_use_stale\nsyn keyword ngxDirective proxy_cache_valid\nsyn keyword ngxDirective proxy_connect_timeout\nsyn keyword ngxDirective proxy_headers_hash_bucket_size\nsyn keyword ngxDirective proxy_headers_hash_max_size\nsyn keyword ngxDirective proxy_hide_header\nsyn keyword ngxDirective proxy_ignore_client_abort\nsyn keyword ngxDirective proxy_ignore_headers\nsyn keyword ngxDirective proxy_intercept_errors\nsyn keyword ngxDirective proxy_max_temp_file_size\nsyn keyword ngxDirective proxy_method\nsyn keyword ngxDirective proxy_next_upstream\nsyn keyword ngxDirective proxy_pass_error_message\nsyn keyword ngxDirective proxy_pass_header\nsyn keyword ngxDirective proxy_pass_request_body\nsyn keyword ngxDirective proxy_pass_request_headers\nsyn keyword ngxDirective proxy_read_timeout\nsyn keyword ngxDirective proxy_redirect\nsyn keyword ngxDirective proxy_send_lowat\nsyn keyword ngxDirective proxy_send_timeout\nsyn keyword ngxDirective proxy_set_body\nsyn keyword ngxDirective proxy_set_header\nsyn keyword ngxDirective proxy_ssl_session_reuse\nsyn keyword ngxDirective proxy_store\nsyn keyword ngxDirective proxy_store_access\nsyn keyword ngxDirective proxy_temp_file_write_size\nsyn keyword ngxDirective proxy_temp_path\nsyn keyword ngxDirective proxy_timeout\nsyn keyword ngxDirective proxy_upstream_fail_timeout\nsyn keyword ngxDirective proxy_upstream_max_fails\nsyn keyword ngxDirective random_index\nsyn keyword ngxDirective read_ahead\nsyn keyword ngxDirective real_ip_header\nsyn keyword ngxDirective recursive_error_pages\nsyn keyword ngxDirective request_pool_size\nsyn keyword ngxDirective reset_timedout_connection\nsyn keyword ngxDirective resolver\nsyn keyword ngxDirective resolver_timeout\nsyn keyword ngxDirective rewrite_log\nsyn keyword ngxDirective rtsig_overflow_events\nsyn keyword ngxDirective rtsig_overflow_test\nsyn keyword ngxDirective rtsig_overflow_threshold\nsyn keyword ngxDirective rtsig_signo\nsyn keyword ngxDirective satisfy\nsyn keyword ngxDirective secure_link_secret\nsyn keyword ngxDirective send_lowat\nsyn keyword ngxDirective send_timeout\nsyn keyword ngxDirective sendfile\nsyn keyword ngxDirective sendfile_max_chunk\nsyn keyword ngxDirective server_name_in_redirect\nsyn keyword ngxDirective server_names_hash_bucket_size\nsyn keyword ngxDirective server_names_hash_max_size\nsyn keyword ngxDirective server_tokens\nsyn keyword ngxDirective set_real_ip_from\nsyn keyword ngxDirective smtp_auth\nsyn keyword ngxDirective smtp_capabilities\nsyn keyword ngxDirective smtp_client_buffer\nsyn keyword ngxDirective smtp_greeting_delay\nsyn keyword ngxDirective so_keepalive\nsyn keyword ngxDirective source_charset\nsyn keyword ngxDirective ssi\nsyn keyword ngxDirective ssi_ignore_recycled_buffers\nsyn keyword ngxDirective ssi_min_file_chunk\nsyn keyword ngxDirective ssi_silent_errors\nsyn keyword ngxDirective ssi_types\nsyn keyword ngxDirective ssi_value_length\nsyn keyword ngxDirective ssl\nsyn keyword ngxDirective ssl_certificate\nsyn keyword ngxDirective ssl_certificate_key\nsyn keyword ngxDirective ssl_ciphers\nsyn keyword ngxDirective ssl_client_certificate\nsyn keyword ngxDirective ssl_crl\nsyn keyword ngxDirective ssl_dhparam\nsyn keyword ngxDirective ssl_engine\nsyn keyword ngxDirective ssl_prefer_server_ciphers\nsyn keyword ngxDirective ssl_protocols\nsyn keyword ngxDirective ssl_session_cache\nsyn keyword ngxDirective ssl_session_timeout\nsyn keyword ngxDirective ssl_verify_client\nsyn keyword ngxDirective ssl_verify_depth\nsyn keyword ngxDirective starttls\nsyn keyword ngxDirective stub_status\nsyn keyword ngxDirective sub_filter\nsyn keyword ngxDirective sub_filter_once\nsyn keyword ngxDirective sub_filter_types\nsyn keyword ngxDirective tcp_nodelay\nsyn keyword ngxDirective tcp_nopush\nsyn keyword ngxDirective thread_stack_size\nsyn keyword ngxDirective timeout\nsyn keyword ngxDirective timer_resolution\nsyn keyword ngxDirective types_hash_bucket_size\nsyn keyword ngxDirective types_hash_max_size\nsyn keyword ngxDirective underscores_in_headers\nsyn keyword ngxDirective uninitialized_variable_warn\nsyn keyword ngxDirective use\nsyn keyword ngxDirective user\nsyn keyword ngxDirective userid\nsyn keyword ngxDirective userid_domain\nsyn keyword ngxDirective userid_expires\nsyn keyword ngxDirective userid_mark\nsyn keyword ngxDirective userid_name\nsyn keyword ngxDirective userid_p3p\nsyn keyword ngxDirective userid_path\nsyn keyword ngxDirective userid_service\nsyn keyword ngxDirective valid_referers\nsyn keyword ngxDirective variables_hash_bucket_size\nsyn keyword ngxDirective variables_hash_max_size\nsyn keyword ngxDirective worker_connections\nsyn keyword ngxDirective worker_cpu_affinity\nsyn keyword ngxDirective worker_priority\nsyn keyword ngxDirective worker_processes\nsyn keyword ngxDirective worker_rlimit_core\nsyn keyword ngxDirective worker_rlimit_nofile\nsyn keyword ngxDirective worker_rlimit_sigpending\nsyn keyword ngxDirective worker_threads\nsyn keyword ngxDirective working_directory\nsyn keyword ngxDirective xclient\nsyn keyword ngxDirective xml_entities\nsyn keyword ngxDirective xslt_stylesheet\nsyn keyword ngxDirective xslt_types\n\n\" 3rd party module list:\n\" http://wiki.nginx.org/Nginx3rdPartyModules\n\n\" Accept Language Module <http://wiki.nginx.org/NginxAcceptLanguageModule>\n\" Parses the Accept-Language header and gives the most suitable locale from a list of supported locales.\nsyn keyword ngxDirectiveThirdParty set_from_accept_language\n\n\" Access Key Module <http://wiki.nginx.org/NginxHttpAccessKeyModule>\n\" Denies access unless the request URL contains an access key. \nsyn keyword ngxDirectiveThirdParty accesskey\nsyn keyword ngxDirectiveThirdParty accesskey_arg\nsyn keyword ngxDirectiveThirdParty accesskey_hashmethod\nsyn keyword ngxDirectiveThirdParty accesskey_signature\n\n\" Auth PAM Module <http://web.iti.upv.es/~sto/nginx/>\n\" HTTP Basic Authentication using PAM.\nsyn keyword ngxDirectiveThirdParty auth_pam\nsyn keyword ngxDirectiveThirdParty auth_pam_service_name\n\n\" Cache Purge Module <http://labs.frickle.com/nginx_ngx_cache_purge/>\n\" Module adding ability to purge content from FastCGI and proxy caches.\nsyn keyword ngxDirectiveThirdParty fastcgi_cache_purge\nsyn keyword ngxDirectiveThirdParty proxy_cache_purge\n\n\" Chunkin Module <http://wiki.nginx.org/NginxHttpChunkinModule>\n\" HTTP 1.1 chunked-encoding request body support for Nginx.\nsyn keyword ngxDirectiveThirdParty chunkin\nsyn keyword ngxDirectiveThirdParty chunkin_keepalive\nsyn keyword ngxDirectiveThirdParty chunkin_max_chunks_per_buf\nsyn keyword ngxDirectiveThirdParty chunkin_resume\n\n\" Circle GIF Module <http://wiki.nginx.org/NginxHttpCircleGifModule>\n\" Generates simple circle images with the colors and size specified in the URL.\nsyn keyword ngxDirectiveThirdParty circle_gif\nsyn keyword ngxDirectiveThirdParty circle_gif_max_radius\nsyn keyword ngxDirectiveThirdParty circle_gif_min_radius\nsyn keyword ngxDirectiveThirdParty circle_gif_step_radius\n\n\" Drizzle Module <http://github.com/chaoslawful/drizzle-nginx-module>\n\" Make nginx talk directly to mysql, drizzle, and sqlite3 by libdrizzle.\nsyn keyword ngxDirectiveThirdParty drizzle_connect_timeout\nsyn keyword ngxDirectiveThirdParty drizzle_dbname\nsyn keyword ngxDirectiveThirdParty drizzle_keepalive\nsyn keyword ngxDirectiveThirdParty drizzle_module_header\nsyn keyword ngxDirectiveThirdParty drizzle_pass\nsyn keyword ngxDirectiveThirdParty drizzle_query\nsyn keyword ngxDirectiveThirdParty drizzle_recv_cols_timeout\nsyn keyword ngxDirectiveThirdParty drizzle_recv_rows_timeout\nsyn keyword ngxDirectiveThirdParty drizzle_send_query_timeout\nsyn keyword ngxDirectiveThirdParty drizzle_server\n\n\" Echo Module <http://wiki.nginx.org/NginxHttpEchoModule>\n\" Brings 'echo', 'sleep', 'time', 'exec' and more shell-style goodies to Nginx config file.\nsyn keyword ngxDirectiveThirdParty echo\nsyn keyword ngxDirectiveThirdParty echo_after_body\nsyn keyword ngxDirectiveThirdParty echo_before_body\nsyn keyword ngxDirectiveThirdParty echo_blocking_sleep\nsyn keyword ngxDirectiveThirdParty echo_duplicate\nsyn keyword ngxDirectiveThirdParty echo_end\nsyn keyword ngxDirectiveThirdParty echo_exec\nsyn keyword ngxDirectiveThirdParty echo_flush\nsyn keyword ngxDirectiveThirdParty echo_foreach_split\nsyn keyword ngxDirectiveThirdParty echo_location\nsyn keyword ngxDirectiveThirdParty echo_location_async\nsyn keyword ngxDirectiveThirdParty echo_read_request_body\nsyn keyword ngxDirectiveThirdParty echo_request_body\nsyn keyword ngxDirectiveThirdParty echo_reset_timer\nsyn keyword ngxDirectiveThirdParty echo_sleep\nsyn keyword ngxDirectiveThirdParty echo_subrequest\nsyn keyword ngxDirectiveThirdParty echo_subrequest_async\n\n\" Events Module <http://docs.dutov.org/nginx_modules_events_en.html>\n\" Privides options for start/stop events.\nsyn keyword ngxDirectiveThirdParty on_start\nsyn keyword ngxDirectiveThirdParty on_stop\n\n\" EY Balancer Module <http://github.com/ry/nginx-ey-balancer>\n\" Adds a request queue to Nginx that allows the limiting of concurrent requests passed to the upstream.\nsyn keyword ngxDirectiveThirdParty max_connections\nsyn keyword ngxDirectiveThirdParty max_connections_max_queue_length\nsyn keyword ngxDirectiveThirdParty max_connections_queue_timeout\n\n\" Fancy Indexes Module <https://connectical.com/projects/ngx-fancyindex/wiki>\n\" Like the built-in autoindex module, but fancier.\nsyn keyword ngxDirectiveThirdParty fancyindex\nsyn keyword ngxDirectiveThirdParty fancyindex_exact_size\nsyn keyword ngxDirectiveThirdParty fancyindex_footer\nsyn keyword ngxDirectiveThirdParty fancyindex_header\nsyn keyword ngxDirectiveThirdParty fancyindex_localtime\nsyn keyword ngxDirectiveThirdParty fancyindex_readme\nsyn keyword ngxDirectiveThirdParty fancyindex_readme_mode\n\n\" GeoIP Module (DEPRECATED) <http://wiki.nginx.org/NginxHttp3rdPartyGeoIPModule>\n\" Country code lookups via the MaxMind GeoIP API.\nsyn keyword ngxDirectiveThirdParty geoip_country_file\n\n\" Headers More Module <http://wiki.nginx.org/NginxHttpHeadersMoreModule>\n\" Set and clear input and output headers...more than \"add\"!\nsyn keyword ngxDirectiveThirdParty more_clear_headers\nsyn keyword ngxDirectiveThirdParty more_clear_input_headers\nsyn keyword ngxDirectiveThirdParty more_set_headers\nsyn keyword ngxDirectiveThirdParty more_set_input_headers\n\n\" HTTP Push Module <http://pushmodule.slact.net/>\n\" Turn Nginx into an adept long-polling HTTP Push (Comet) server.\nsyn keyword ngxDirectiveThirdParty push_buffer_size\nsyn keyword ngxDirectiveThirdParty push_listener\nsyn keyword ngxDirectiveThirdParty push_message_timeout\nsyn keyword ngxDirectiveThirdParty push_queue_messages\nsyn keyword ngxDirectiveThirdParty push_sender\n\n\" HTTP Redis Module <http://people.FreeBSD.ORG/~osa/ngx_http_redis-0.3.1.tar.gz>>\n\" Redis <http://code.google.com/p/redis/> support.>\nsyn keyword ngxDirectiveThirdParty redis_bind\nsyn keyword ngxDirectiveThirdParty redis_buffer_size\nsyn keyword ngxDirectiveThirdParty redis_connect_timeout\nsyn keyword ngxDirectiveThirdParty redis_next_upstream\nsyn keyword ngxDirectiveThirdParty redis_pass\nsyn keyword ngxDirectiveThirdParty redis_read_timeout\nsyn keyword ngxDirectiveThirdParty redis_send_timeout\n\n\" HTTP JavaScript Module <http://wiki.github.com/kung-fu-tzu/ngx_http_js_module>\n\" Embedding SpiderMonkey. Nearly full port on Perl module.\nsyn keyword ngxDirectiveThirdParty js\nsyn keyword ngxDirectiveThirdParty js_filter\nsyn keyword ngxDirectiveThirdParty js_filter_types\nsyn keyword ngxDirectiveThirdParty js_load\nsyn keyword ngxDirectiveThirdParty js_maxmem\nsyn keyword ngxDirectiveThirdParty js_require\nsyn keyword ngxDirectiveThirdParty js_set\nsyn keyword ngxDirectiveThirdParty js_utf8\n\n\" Log Request Speed <http://wiki.nginx.org/NginxHttpLogRequestSpeed>\n\" Log the time it took to process each request.\nsyn keyword ngxDirectiveThirdParty log_request_speed_filter\nsyn keyword ngxDirectiveThirdParty log_request_speed_filter_timeout\n\n\" Memc Module <http://wiki.nginx.org/NginxHttpMemcModule>\n\" An extended version of the standard memcached module that supports set, add, delete, and many more memcached commands.\nsyn keyword ngxDirectiveThirdParty memc_buffer_size\nsyn keyword ngxDirectiveThirdParty memc_cmds_allowed\nsyn keyword ngxDirectiveThirdParty memc_connect_timeout\nsyn keyword ngxDirectiveThirdParty memc_flags_to_last_modified\nsyn keyword ngxDirectiveThirdParty memc_next_upstream\nsyn keyword ngxDirectiveThirdParty memc_pass\nsyn keyword ngxDirectiveThirdParty memc_read_timeout\nsyn keyword ngxDirectiveThirdParty memc_send_timeout\nsyn keyword ngxDirectiveThirdParty memc_upstream_fail_timeout\nsyn keyword ngxDirectiveThirdParty memc_upstream_max_fails\n\n\" Mogilefs Module <http://www.grid.net.ru/nginx/mogilefs.en.html>\n\" Implements a MogileFS client, provides a replace to the Perlbal reverse proxy of the original MogileFS.\nsyn keyword ngxDirectiveThirdParty mogilefs_connect_timeout\nsyn keyword ngxDirectiveThirdParty mogilefs_domain\nsyn keyword ngxDirectiveThirdParty mogilefs_methods\nsyn keyword ngxDirectiveThirdParty mogilefs_noverify\nsyn keyword ngxDirectiveThirdParty mogilefs_pass\nsyn keyword ngxDirectiveThirdParty mogilefs_read_timeout\nsyn keyword ngxDirectiveThirdParty mogilefs_send_timeout\nsyn keyword ngxDirectiveThirdParty mogilefs_tracker\n\n\" MP4 Streaming Lite Module <http://wiki.nginx.org/NginxMP4StreamingLite>\n\" Will seek to a certain time within H.264/MP4 files when provided with a 'start' parameter in the URL. \nsyn keyword ngxDirectiveThirdParty mp4\n\n\" Nginx Notice Module <http://xph.us/software/nginx-notice/>\n\" Serve static file to POST requests.\nsyn keyword ngxDirectiveThirdParty notice\nsyn keyword ngxDirectiveThirdParty notice_type\n\n\" Phusion Passenger <http://www.modrails.com/documentation.html>\n\" Easy and robust deployment of Ruby on Rails application on Apache and Nginx webservers.\nsyn keyword ngxDirectiveThirdParty passenger_base_uri\nsyn keyword ngxDirectiveThirdParty passenger_default_user\nsyn keyword ngxDirectiveThirdParty passenger_enabled\nsyn keyword ngxDirectiveThirdParty passenger_log_level\nsyn keyword ngxDirectiveThirdParty passenger_max_instances_per_app\nsyn keyword ngxDirectiveThirdParty passenger_max_pool_size\nsyn keyword ngxDirectiveThirdParty passenger_pool_idle_time\nsyn keyword ngxDirectiveThirdParty passenger_root\nsyn keyword ngxDirectiveThirdParty passenger_ruby\nsyn keyword ngxDirectiveThirdParty passenger_use_global_queue\nsyn keyword ngxDirectiveThirdParty passenger_user_switching\nsyn keyword ngxDirectiveThirdParty rack_env\nsyn keyword ngxDirectiveThirdParty rails_app_spawner_idle_time\nsyn keyword ngxDirectiveThirdParty rails_env\nsyn keyword ngxDirectiveThirdParty rails_framework_spawner_idle_time\nsyn keyword ngxDirectiveThirdParty rails_spawn_method\n\n\" RDS JSON Module <http://github.com/agentzh/rds-json-nginx-module>\n\" Help ngx_drizzle and other DBD modules emit JSON data.\nsyn keyword ngxDirectiveThirdParty rds_json\nsyn keyword ngxDirectiveThirdParty rds_json_content_type\nsyn keyword ngxDirectiveThirdParty rds_json_format\nsyn keyword ngxDirectiveThirdParty rds_json_ret\n\n\" RRD Graph Module <http://wiki.nginx.org/NginxNgx_rrd_graph>\n\" This module provides an HTTP interface to RRDtool's graphing facilities.\nsyn keyword ngxDirectiveThirdParty rrd_graph\nsyn keyword ngxDirectiveThirdParty rrd_graph_root\n\n\" Secure Download <http://wiki.nginx.org/NginxHttpSecureDownload>\n\" Create expiring links.\nsyn keyword ngxDirectiveThirdParty secure_download\nsyn keyword ngxDirectiveThirdParty secure_download_fail_location\nsyn keyword ngxDirectiveThirdParty secure_download_path_mode\nsyn keyword ngxDirectiveThirdParty secure_download_secret\n\n\" SlowFS Cache Module <http://labs.frickle.com/nginx_ngx_slowfs_cache/>\n\" Module adding ability to cache static files.\nsyn keyword ngxDirectiveThirdParty slowfs_big_file_size\nsyn keyword ngxDirectiveThirdParty slowfs_cache\nsyn keyword ngxDirectiveThirdParty slowfs_cache_key\nsyn keyword ngxDirectiveThirdParty slowfs_cache_min_uses\nsyn keyword ngxDirectiveThirdParty slowfs_cache_path\nsyn keyword ngxDirectiveThirdParty slowfs_cache_purge\nsyn keyword ngxDirectiveThirdParty slowfs_cache_valid\nsyn keyword ngxDirectiveThirdParty slowfs_temp_path\n\n\" Strip Module <http://wiki.nginx.org/NginxHttpStripModule>\n\" Whitespace remover.\nsyn keyword ngxDirectiveThirdParty strip\n\n\" Substitutions Module <http://wiki.nginx.org/NginxHttpSubsModule>\n\" A filter module which can do both regular expression and fixed string substitutions on response bodies.\nsyn keyword ngxDirectiveThirdParty subs_filter\nsyn keyword ngxDirectiveThirdParty subs_filter_types\n\n\" Supervisord Module <http://labs.frickle.com/nginx_ngx_supervisord/>\n\" Module providing nginx with API to communicate with supervisord and manage (start/stop) backends on-demand.\nsyn keyword ngxDirectiveThirdParty supervisord\nsyn keyword ngxDirectiveThirdParty supervisord_inherit_backend_status\nsyn keyword ngxDirectiveThirdParty supervisord_name\nsyn keyword ngxDirectiveThirdParty supervisord_start\nsyn keyword ngxDirectiveThirdParty supervisord_stop\n\n\" Upload Module <http://www.grid.net.ru/nginx/upload.en.html>\n\" Parses multipart/form-data allowing arbitrary handling of uploaded files.\nsyn keyword ngxDirectiveThirdParty upload_aggregate_form_field\nsyn keyword ngxDirectiveThirdParty upload_buffer_size\nsyn keyword ngxDirectiveThirdParty upload_cleanup\nsyn keyword ngxDirectiveThirdParty upload_limit_rate\nsyn keyword ngxDirectiveThirdParty upload_max_file_size\nsyn keyword ngxDirectiveThirdParty upload_max_output_body_len\nsyn keyword ngxDirectiveThirdParty upload_max_part_header_len\nsyn keyword ngxDirectiveThirdParty upload_pass\nsyn keyword ngxDirectiveThirdParty upload_pass_args\nsyn keyword ngxDirectiveThirdParty upload_pass_form_field\nsyn keyword ngxDirectiveThirdParty upload_set_form_field\nsyn keyword ngxDirectiveThirdParty upload_store\nsyn keyword ngxDirectiveThirdParty upload_store_access\n\n\" Upload Progress Module <http://wiki.nginx.org/NginxHttpUploadProgressModule>\n\" Tracks and reports upload progress.\nsyn keyword ngxDirectiveThirdParty report_uploads\nsyn keyword ngxDirectiveThirdParty track_uploads\nsyn keyword ngxDirectiveThirdParty upload_progress\nsyn keyword ngxDirectiveThirdParty upload_progress_content_type\nsyn keyword ngxDirectiveThirdParty upload_progress_header\nsyn keyword ngxDirectiveThirdParty upload_progress_json_output\nsyn keyword ngxDirectiveThirdParty upload_progress_template\n\n\" Upstream Fair Balancer <http://wiki.nginx.org/NginxHttpUpstreamFairModule>\n\" Sends an incoming request to the least-busy backend server, rather than distributing requests round-robin.\nsyn keyword ngxDirectiveThirdParty fair\nsyn keyword ngxDirectiveThirdParty upstream_fair_shm_size\n\n\" Upstream Consistent Hash <http://wiki.nginx.org/NginxHttpUpstreamConsistentHash>\n\" Select backend based on Consistent hash ring.\nsyn keyword ngxDirectiveThirdParty consistent_hash\n\n\" Upstream Hash Module <http://wiki.nginx.org/NginxHttpUpstreamRequestHashModule>\n\" Provides simple upstream load distribution by hashing a configurable variable.\nsyn keyword ngxDirectiveThirdParty hash\nsyn keyword ngxDirectiveThirdParty hash_again\n\n\" XSS Module <http://github.com/agentzh/xss-nginx-module>\n\" Native support for cross-site scripting (XSS) in an nginx.\nsyn keyword ngxDirectiveThirdParty xss_callback_arg\nsyn keyword ngxDirectiveThirdParty xss_get\nsyn keyword ngxDirectiveThirdParty xss_input_types\nsyn keyword ngxDirectiveThirdParty xss_output_type\n\n\" highlight\n\nhi link ngxComment Comment\nhi link ngxVariable Identifier\nhi link ngxVariableBlock Identifier\nhi link ngxVariableString PreProc\nhi link ngxBlock Normal\nhi link ngxString String\n\nhi link ngxBoolean Boolean\nhi link ngxDirectiveBlock Statement\nhi link ngxDirectiveImportant Type\nhi link ngxDirectiveControl Keyword\nhi link ngxDirectiveError Constant\nhi link ngxDirectiveDeprecated Error\nhi link ngxDirective Identifier\nhi link ngxDirectiveThirdParty Special\n\nlet b:current_syntax = \"nginx\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/ocaml.vim",
    "content": "\" Vim syntax file\n\" Language:     OCaml\n\" Filenames:    *.ml *.mli *.mll *.mly\n\" Maintainers:  Markus Mottl      <markus.mottl@gmail.com>\n\"               Karl-Heinz Sylla  <Karl-Heinz.Sylla@gmd.de>\n\"               Issac Trotts      <ijtrotts@ucdavis.edu>\n\" URL:          http://www.ocaml.info/vim/syntax/ocaml.vim\n\" Last Change:  2010 Oct 11 - Added highlighting of lnot (MM, thanks to Erick Matsen)\n\"               2010 Sep 03 - Fixed escaping bug (MM, thanks to Florent Monnier)\n\"               2010 Aug 07 - Fixed module type bug (MM)\n\n\" A minor patch was applied to the official version so that object/end\n\" can be distinguished from begin/end, which is used for indentation,\n\" and folding. (David Baelde)\n\n\" For version 5.x: Clear all syntax items\n\" For version 6.x: Quit when a syntax file was already loaded\nif version < 600\n  syntax clear\nelseif exists(\"b:current_syntax\") && b:current_syntax == \"ocaml\"\n  finish\nendif\n\n\" OCaml is case sensitive.\nsyn case match\n\n\" Access to the method of an object\nsyn match    ocamlMethod       \"#\"\n\n\" Script headers highlighted like comments\nsyn match    ocamlComment   \"^#!.*\"\n\n\" Scripting directives\nsyn match    ocamlScript \"^#\\<\\(quit\\|labels\\|warnings\\|directory\\|cd\\|load\\|use\\|install_printer\\|remove_printer\\|require\\|thread\\|trace\\|untrace\\|untrace_all\\|print_depth\\|print_length\\|camlp4o\\)\\>\"\n\n\" lowercase identifier - the standard way to match\nsyn match    ocamlLCIdentifier /\\<\\(\\l\\|_\\)\\(\\w\\|'\\)*\\>/\n\nsyn match    ocamlKeyChar    \"|\"\n\n\" Errors\nsyn match    ocamlBraceErr   \"}\"\nsyn match    ocamlBrackErr   \"\\]\"\nsyn match    ocamlParenErr   \")\"\nsyn match    ocamlArrErr     \"|]\"\n\nsyn match    ocamlCommentErr \"\\*)\"\n\nsyn match    ocamlCountErr   \"\\<downto\\>\"\nsyn match    ocamlCountErr   \"\\<to\\>\"\n\nif !exists(\"ocaml_revised\")\n  syn match    ocamlDoErr      \"\\<do\\>\"\nendif\n\nsyn match    ocamlDoneErr    \"\\<done\\>\"\nsyn match    ocamlThenErr    \"\\<then\\>\"\n\n\" Error-highlighting of \"end\" without synchronization:\n\" as keyword or as error (default)\nif exists(\"ocaml_noend_error\")\n  syn match    ocamlKeyword    \"\\<end\\>\"\nelse\n  syn match    ocamlEndErr     \"\\<end\\>\"\nendif\n\n\" Some convenient clusters\nsyn cluster  ocamlAllErrs contains=ocamlBraceErr,ocamlBrackErr,ocamlParenErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr\n\nsyn cluster  ocamlAENoParen contains=ocamlBraceErr,ocamlBrackErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr\n\nsyn cluster  ocamlContained contains=ocamlTodo,ocamlPreDef,ocamlModParam,ocamlModParam1,ocamlPreMPRestr,ocamlMPRestr,ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3,ocamlModRHS,ocamlFuncWith,ocamlFuncStruct,ocamlModTypeRestr,ocamlModTRWith,ocamlWith,ocamlWithRest,ocamlModType,ocamlFullMod,ocamlVal\n\n\n\" Enclosing delimiters\nsyn region   ocamlEncl transparent matchgroup=ocamlKeyword start=\"(\" matchgroup=ocamlKeyword end=\")\" contains=ALLBUT,@ocamlContained,ocamlParenErr\nsyn region   ocamlEncl transparent matchgroup=ocamlKeyword start=\"{\" matchgroup=ocamlKeyword end=\"}\"  contains=ALLBUT,@ocamlContained,ocamlBraceErr\nsyn region   ocamlEncl transparent matchgroup=ocamlKeyword start=\"\\[\" matchgroup=ocamlKeyword end=\"\\]\" contains=ALLBUT,@ocamlContained,ocamlBrackErr\nsyn region   ocamlEncl transparent matchgroup=ocamlKeyword start=\"\\[|\" matchgroup=ocamlKeyword end=\"|\\]\" contains=ALLBUT,@ocamlContained,ocamlArrErr\n\n\n\" Comments\nsyn region   ocamlComment start=\"(\\*\" end=\"\\*)\" contains=ocamlComment,ocamlTodo\nsyn keyword  ocamlTodo contained TODO FIXME XXX NOTE\n\n\n\" Objects\nsyn region   ocamlEnd matchgroup=ocamlObject start=\"\\<object\\>\" matchgroup=ocamlObject end=\"\\<end\\>\" contains=ALLBUT,@ocamlContained,ocamlEndErr\n\n\n\" Blocks\nif !exists(\"ocaml_revised\")\n  syn region   ocamlEnd matchgroup=ocamlKeyword start=\"\\<begin\\>\" matchgroup=ocamlKeyword end=\"\\<end\\>\" contains=ALLBUT,@ocamlContained,ocamlEndErr\nendif\n\n\n\" \"for\"\nsyn region   ocamlNone matchgroup=ocamlKeyword start=\"\\<for\\>\" matchgroup=ocamlKeyword end=\"\\<\\(to\\|downto\\)\\>\" contains=ALLBUT,@ocamlContained,ocamlCountErr\n\n\n\" \"do\"\nif !exists(\"ocaml_revised\")\n  syn region   ocamlDo matchgroup=ocamlKeyword start=\"\\<do\\>\" matchgroup=ocamlKeyword end=\"\\<done\\>\" contains=ALLBUT,@ocamlContained,ocamlDoneErr\nendif\n\n\" \"if\"\nsyn region   ocamlNone matchgroup=ocamlKeyword start=\"\\<if\\>\" matchgroup=ocamlKeyword end=\"\\<then\\>\" contains=ALLBUT,@ocamlContained,ocamlThenErr\n\n\n\"\" Modules\n\n\" \"sig\"\nsyn region   ocamlSig matchgroup=ocamlModule start=\"\\<sig\\>\" matchgroup=ocamlModule end=\"\\<end\\>\" contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule\nsyn region   ocamlModSpec matchgroup=ocamlKeyword start=\"\\<module\\>\" matchgroup=ocamlModule end=\"\\<\\u\\(\\w\\|'\\)*\\>\" contained contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlModTRWith,ocamlMPRestr\n\n\" \"open\"\nsyn region   ocamlNone matchgroup=ocamlKeyword start=\"\\<open\\>\" matchgroup=ocamlModule end=\"\\<\\u\\(\\w\\|'\\)*\\(\\.\\u\\(\\w\\|'\\)*\\)*\\>\" contains=@ocamlAllErrs,ocamlComment\n\n\" \"include\"\nsyn match    ocamlKeyword \"\\<include\\>\" skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod\n\n\" \"module\" - somewhat complicated stuff ;-)\nsyn region   ocamlModule matchgroup=ocamlKeyword start=\"\\<module\\>\" matchgroup=ocamlModule end=\"\\<\\u\\(\\w\\|'\\)*\\>\" contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlPreDef\nsyn region   ocamlPreDef start=\".\"me=e-1 matchgroup=ocamlKeyword end=\"\\l\\|=\\|)\"me=e-1 contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlModTypeRestr,ocamlModTRWith nextgroup=ocamlModPreRHS\nsyn region   ocamlModParam start=\"([^*]\" end=\")\" contained contains=@ocamlAENoParen,ocamlModParam1,ocamlVal\nsyn match    ocamlModParam1 \"\\<\\u\\(\\w\\|'\\)*\\>\" contained skipwhite skipempty nextgroup=ocamlPreMPRestr\n\nsyn region   ocamlPreMPRestr start=\".\"me=e-1 end=\")\"me=e-1 contained contains=@ocamlAllErrs,ocamlComment,ocamlMPRestr,ocamlModTypeRestr\n\nsyn region   ocamlMPRestr start=\":\" end=\".\"me=e-1 contained contains=@ocamlComment skipwhite skipempty nextgroup=ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3\nsyn region   ocamlMPRestr1 matchgroup=ocamlModule start=\"\\ssig\\s\\=\" matchgroup=ocamlModule end=\"\\<end\\>\" contained contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule\nsyn region   ocamlMPRestr2 start=\"\\sfunctor\\(\\s\\|(\\)\\=\"me=e-1 matchgroup=ocamlKeyword end=\"->\" contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam skipwhite skipempty nextgroup=ocamlFuncWith,ocamlMPRestr2\nsyn match    ocamlMPRestr3 \"\\w\\(\\w\\|'\\)*\\(\\.\\w\\(\\w\\|'\\)*\\)*\" contained\nsyn match    ocamlModPreRHS \"=\" contained skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod\nsyn keyword  ocamlKeyword val\nsyn region   ocamlVal matchgroup=ocamlKeyword start=\"\\<val\\>\" matchgroup=ocamlLCIdentifier end=\"\\<\\l\\(\\w\\|'\\)*\\>\" contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlMPRestr\nsyn region   ocamlModRHS start=\".\" end=\".\\w\\|([^*]\"me=e-2 contained contains=ocamlComment skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod\nsyn match    ocamlFullMod \"\\<\\u\\(\\w\\|'\\)*\\(\\.\\u\\(\\w\\|'\\)*\\)*\" contained skipwhite skipempty nextgroup=ocamlFuncWith\n\nsyn region   ocamlFuncWith start=\"([^*]\"me=e-1 end=\")\" contained contains=ocamlComment,ocamlWith,ocamlFuncStruct skipwhite skipempty nextgroup=ocamlFuncWith\nsyn region   ocamlFuncStruct matchgroup=ocamlModule start=\"[^a-zA-Z]struct\\>\"hs=s+1 matchgroup=ocamlModule end=\"\\<end\\>\" contains=ALLBUT,@ocamlContained,ocamlEndErr\n\nsyn match    ocamlModTypeRestr \"\\<\\w\\(\\w\\|'\\)*\\(\\.\\w\\(\\w\\|'\\)*\\)*\\>\" contained\nsyn region   ocamlModTRWith start=\":\\s*(\"hs=s+1 end=\")\" contained contains=@ocamlAENoParen,ocamlWith\nsyn match    ocamlWith \"\\<\\(\\u\\(\\w\\|'\\)*\\.\\)*\\w\\(\\w\\|'\\)*\\>\" contained skipwhite skipempty nextgroup=ocamlWithRest\nsyn region   ocamlWithRest start=\"[^)]\" end=\")\"me=e-1 contained contains=ALLBUT,@ocamlContained\n\n\" \"struct\"\nsyn region   ocamlStruct matchgroup=ocamlModule start=\"\\<\\(module\\s\\+\\)\\=struct\\>\" matchgroup=ocamlModule end=\"\\<end\\>\" contains=ALLBUT,@ocamlContained,ocamlEndErr\n\n\" \"module type\"\nsyn region   ocamlKeyword start=\"\\<module\\>\\s*\\<type\\>\\(\\s*\\<of\\>\\)\\=\" matchgroup=ocamlModule end=\"\\<\\w\\(\\w\\|'\\)*\\>\" contains=ocamlComment skipwhite skipempty nextgroup=ocamlMTDef\nsyn match    ocamlMTDef \"=\\s*\\w\\(\\w\\|'\\)*\\>\"hs=s+1,me=s\n\nsyn keyword  ocamlKeyword  and as assert class\nsyn keyword  ocamlKeyword  constraint else\nsyn keyword  ocamlKeyword  exception external fun\n\nsyn keyword  ocamlKeyword  in inherit initializer\nsyn keyword  ocamlKeyword  land lazy let match\nsyn keyword  ocamlKeyword  method mutable new of\nsyn keyword  ocamlKeyword  parser private raise rec\nsyn keyword  ocamlKeyword  try type\nsyn keyword  ocamlKeyword  virtual when while with\n\nif exists(\"ocaml_revised\")\n  syn keyword  ocamlKeyword  do value\n  syn keyword  ocamlBoolean  True False\nelse\n  syn keyword  ocamlKeyword  function\n  syn keyword  ocamlBoolean  true false\n  syn match    ocamlKeyChar  \"!\"\nendif\n\nsyn keyword  ocamlType     array bool char exn float format format4\nsyn keyword  ocamlType     int int32 int64 lazy_t list nativeint option\nsyn keyword  ocamlType     string unit\n\nsyn keyword  ocamlOperator asr lnot lor lsl lsr lxor mod not\n\nsyn match    ocamlConstructor  \"(\\s*)\"\nsyn match    ocamlConstructor  \"\\[\\s*\\]\"\nsyn match    ocamlConstructor  \"\\[|\\s*>|]\"\nsyn match    ocamlConstructor  \"\\[<\\s*>\\]\"\nsyn match    ocamlConstructor  \"\\u\\(\\w\\|'\\)*\\>\"\n\n\" Polymorphic variants\nsyn match    ocamlConstructor  \"`\\w\\(\\w\\|'\\)*\\>\"\n\n\" Module prefix\nsyn match    ocamlModPath      \"\\u\\(\\w\\|'\\)*\\.\"he=e-1\n\nsyn match    ocamlCharacter    \"'\\\\\\d\\d\\d'\\|'\\\\[\\'ntbr]'\\|'.'\"\nsyn match    ocamlCharacter    \"'\\\\x\\x\\x'\"\nsyn match    ocamlCharErr      \"'\\\\\\d\\d'\\|'\\\\\\d'\"\nsyn match    ocamlCharErr      \"'\\\\[^\\'ntbr]'\"\nsyn region   ocamlString       start=+\"+ skip=+\\\\\\\\\\|\\\\\"+ end=+\"+\n\nsyn match    ocamlFunDef       \"->\"\nsyn match    ocamlRefAssign    \":=\"\nsyn match    ocamlTopStop      \";;\"\nsyn match    ocamlOperator     \"\\^\"\nsyn match    ocamlOperator     \"::\"\n\nsyn match    ocamlOperator     \"&&\"\nsyn match    ocamlOperator     \"<\"\nsyn match    ocamlOperator     \">\"\nsyn match    ocamlAnyVar       \"\\<_\\>\"\nsyn match    ocamlKeyChar      \"|[^\\]]\"me=e-1\nsyn match    ocamlKeyChar      \";\"\nsyn match    ocamlKeyChar      \"\\~\"\nsyn match    ocamlKeyChar      \"?\"\nsyn match    ocamlKeyChar      \"\\*\"\nsyn match    ocamlKeyChar      \"=\"\n\nif exists(\"ocaml_revised\")\n  syn match    ocamlErr        \"<-\"\nelse\n  syn match    ocamlOperator   \"<-\"\nendif\n\nsyn match    ocamlNumber        \"\\<-\\=\\d\\(_\\|\\d\\)*[l|L|n]\\?\\>\"\nsyn match    ocamlNumber        \"\\<-\\=0[x|X]\\(\\x\\|_\\)\\+[l|L|n]\\?\\>\"\nsyn match    ocamlNumber        \"\\<-\\=0[o|O]\\(\\o\\|_\\)\\+[l|L|n]\\?\\>\"\nsyn match    ocamlNumber        \"\\<-\\=0[b|B]\\([01]\\|_\\)\\+[l|L|n]\\?\\>\"\nsyn match    ocamlFloat         \"\\<-\\=\\d\\(_\\|\\d\\)*\\.\\?\\(_\\|\\d\\)*\\([eE][-+]\\=\\d\\(_\\|\\d\\)*\\)\\=\\>\"\n\n\" Labels\nsyn match    ocamlLabel        \"\\~\\(\\l\\|_\\)\\(\\w\\|'\\)*\"lc=1\nsyn match    ocamlLabel        \"?\\(\\l\\|_\\)\\(\\w\\|'\\)*\"lc=1\nsyn region   ocamlLabel transparent matchgroup=ocamlLabel start=\"?(\\(\\l\\|_\\)\\(\\w\\|'\\)*\"lc=2 end=\")\"me=e-1 contains=ALLBUT,@ocamlContained,ocamlParenErr\n\n\n\" Synchronization\nsyn sync minlines=50\nsyn sync maxlines=500\n\nif !exists(\"ocaml_revised\")\n  syn sync match ocamlDoSync      grouphere  ocamlDo      \"\\<do\\>\"\n  syn sync match ocamlDoSync      groupthere ocamlDo      \"\\<done\\>\"\nendif\n\nif exists(\"ocaml_revised\")\n  syn sync match ocamlEndSync     grouphere  ocamlEnd     \"\\<\\(object\\)\\>\"\nelse\n  syn sync match ocamlEndSync     grouphere  ocamlEnd     \"\\<\\(begin\\|object\\)\\>\"\nendif\n\nsyn sync match ocamlEndSync     groupthere ocamlEnd     \"\\<end\\>\"\nsyn sync match ocamlStructSync  grouphere  ocamlStruct  \"\\<struct\\>\"\nsyn sync match ocamlStructSync  groupthere ocamlStruct  \"\\<end\\>\"\nsyn sync match ocamlSigSync     grouphere  ocamlSig     \"\\<sig\\>\"\nsyn sync match ocamlSigSync     groupthere ocamlSig     \"\\<end\\>\"\n\n\" Define the default highlighting.\n\" For version 5.7 and earlier: only when not done already\n\" For version 5.8 and later: only when an item doesn't have highlighting yet\nif version >= 508 || !exists(\"did_ocaml_syntax_inits\")\n  if version < 508\n    let did_ocaml_syntax_inits = 1\n    command -nargs=+ HiLink hi link <args>\n  else\n    command -nargs=+ HiLink hi def link <args>\n  endif\n\n  HiLink ocamlBraceErr\t   Error\n  HiLink ocamlBrackErr\t   Error\n  HiLink ocamlParenErr\t   Error\n  HiLink ocamlArrErr\t   Error\n\n  HiLink ocamlCommentErr   Error\n\n  HiLink ocamlCountErr\t   Error\n  HiLink ocamlDoErr\t   Error\n  HiLink ocamlDoneErr\t   Error\n  HiLink ocamlEndErr\t   Error\n  HiLink ocamlThenErr\t   Error\n\n  HiLink ocamlCharErr\t   Error\n\n  HiLink ocamlErr\t   Error\n\n  HiLink ocamlComment\t   Comment\n\n  HiLink ocamlModPath\t   Include\n  HiLink ocamlObject\t   Include\n  HiLink ocamlModule\t   Include\n  HiLink ocamlModParam1    Include\n  HiLink ocamlModType\t   Include\n  HiLink ocamlMPRestr3\t   Include\n  HiLink ocamlFullMod\t   Include\n  HiLink ocamlModTypeRestr Include\n  HiLink ocamlWith\t   Include\n  HiLink ocamlMTDef\t   Include\n\n  HiLink ocamlScript\t   Include\n\n  HiLink ocamlConstructor  Constant\n\n  HiLink ocamlVal          Keyword\n  HiLink ocamlModPreRHS    Keyword\n  HiLink ocamlMPRestr2\t   Keyword\n  HiLink ocamlKeyword\t   Keyword\n  HiLink ocamlMethod\t   Include\n  HiLink ocamlFunDef\t   Keyword\n  HiLink ocamlRefAssign    Keyword\n  HiLink ocamlKeyChar\t   Keyword\n  HiLink ocamlAnyVar\t   Keyword\n  HiLink ocamlTopStop\t   Keyword\n  HiLink ocamlOperator\t   Keyword\n\n  HiLink ocamlBoolean\t   Boolean\n  HiLink ocamlCharacter    Character\n  HiLink ocamlNumber\t   Number\n  HiLink ocamlFloat\t   Float\n  HiLink ocamlString\t   String\n\n  HiLink ocamlLabel\t   Identifier\n\n  HiLink ocamlType\t   Type\n\n  HiLink ocamlTodo\t   Todo\n\n  HiLink ocamlEncl\t   Keyword\n\n  delcommand HiLink\nendif\n\nlet b:current_syntax = \"ocaml\"\n\n\" vim: ts=8\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/octave.vim",
    "content": "\" Vim syntax file\n\" Language:             Octave\n\" Maintainer:           Rik <rik@nomad.inbox5.com>\n\" Original Maintainers: Jaroslav Hajek <highegg@gmail.com>\n\"                       Francisco Castro <fcr@adinet.com.uy>\n\"                       Preben 'Peppe' Guldberg <peppe-vim@wielders.org>\n\" Original Author: Mario Eusebio\n\" Last Change: 07 Jun 2011\n\" Syntax matched to Octave Release: 3.4.0\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\nif version < 600\n  syntax clear\nelseif exists(\"b:current_syntax\")\n  finish\nendif\n\n\" Use case sensitive matching of keywords\nsyn case match\n\n\" Stop keywords embedded in structures from lighting up\n\" For example, mystruct.length = 1 should not highlight length.\n\" WARNING: beginning of word pattern \\< will no longer match '.'\nsetlocal iskeyword +=.\n\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\" Syntax group definitions for Octave\nsyn keyword octaveBeginKeyword  for function if switch try unwind_protect while\nsyn keyword octaveBeginKeyword  do\nsyn keyword octaveEndKeyword    end endfor endfunction endif endswitch\nsyn keyword octaveEndKeyword    end_try_catch end_unwind_protect endwhile until\nsyn keyword octaveElseKeyword   case catch else elseif otherwise\nsyn keyword octaveElseKeyword   unwind_protect_cleanup\n\nsyn keyword octaveStatement  break continue global persistent return\n\nsyn keyword octaveReserved  __FILE__ __LINE__ classdef endclassdef endevents\nsyn keyword octaveReserved  endmethods endproperties events methods properties\nsyn keyword octaveReserved  static\n\n\" List of commands (these don't require a parenthesis to invoke)\nsyn keyword octaveCommand contained  cd chdir clear close dbcont dbquit dbstep\nsyn keyword octaveCommand contained  demo diary doc echo edit edit_history\nsyn keyword octaveCommand contained  example format help history hold ishold\nsyn keyword octaveCommand contained  load lookfor ls mkoctfile more pkg run\nsyn keyword octaveCommand contained  run_history save shg test type what which\nsyn keyword octaveCommand contained  who whos\n\n\" List of functions which set internal variables\nsyn keyword octaveSetVarFun contained  EDITOR EXEC_PATH F_SETFD F_SETFL I\nsyn keyword octaveSetVarFun contained  IMAGE_PATH Inf J NA NaN O_APPEND O_ASYNC\nsyn keyword octaveSetVarFun contained  PAGER PAGER_FLAGS PS1 PS2 PS4\nsyn keyword octaveSetVarFun contained  __error_text__\nsyn keyword octaveSetVarFun contained  allow_noninteger_range_as_index ans argv\nsyn keyword octaveSetVarFun contained  beep_on_error completion_append_char\nsyn keyword octaveSetVarFun contained  confirm_recursive_rmdir\nsyn keyword octaveSetVarFun contained  crash_dumps_octave_core debug_on_error\nsyn keyword octaveSetVarFun contained  debug_on_interrupt debug_on_warning\nsyn keyword octaveSetVarFun contained  default_save_options\nsyn keyword octaveSetVarFun contained  do_braindead_shortcircuit_evaluation\nsyn keyword octaveSetVarFun contained  doc_cache_file e echo_executing_commands\nsyn keyword octaveSetVarFun contained  eps error_text false filemarker\nsyn keyword octaveSetVarFun contained  fixed_point_format gnuplot_binary\nsyn keyword octaveSetVarFun contained  gui_mode history_control history_file\nsyn keyword octaveSetVarFun contained  history_size\nsyn keyword octaveSetVarFun contained  history_timestamp_format_string i\nsyn keyword octaveSetVarFun contained  ignore_function_time_stamp inf info_file\nsyn keyword octaveSetVarFun contained  info_program j ls_command\nsyn keyword octaveSetVarFun contained  makeinfo_program max_recursion_depth\nsyn keyword octaveSetVarFun contained  missing_function_hook mouse_wheel_zoom\nsyn keyword octaveSetVarFun contained  nan nargin nargout octave_core_file_limit\nsyn keyword octaveSetVarFun contained  octave_core_file_name\nsyn keyword octaveSetVarFun contained  octave_core_file_options\nsyn keyword octaveSetVarFun contained  optimize_subsasgn_calls\nsyn keyword octaveSetVarFun contained  output_max_field_width output_precision\nsyn keyword octaveSetVarFun contained  page_output_immediately\nsyn keyword octaveSetVarFun contained  page_screen_output pathsep pi\nsyn keyword octaveSetVarFun contained  print_empty_dimensions\nsyn keyword octaveSetVarFun contained  print_struct_array_contents\nsyn keyword octaveSetVarFun contained  program_invocation_name program_name\nsyn keyword octaveSetVarFun contained  realmax realmin\nsyn keyword octaveSetVarFun contained  save_header_format_string save_precision\nsyn keyword octaveSetVarFun contained  saving_history sighup_dumps_octave_core\nsyn keyword octaveSetVarFun contained  sigterm_dumps_octave_core\nsyn keyword octaveSetVarFun contained  silent_functions sparse_auto_mutate\nsyn keyword octaveSetVarFun contained  split_long_rows string_fill_char\nsyn keyword octaveSetVarFun contained  struct_levels_to_print\nsyn keyword octaveSetVarFun contained  suppress_verbose_help_message svd_driver\nsyn keyword octaveSetVarFun contained  true whos_line_format\n\n\" List of functions which query internal variables\n\" Excluded i,j from list above because they are often used as loop variables\n\" They will be highlighted appropriately by the rule which matches numbers\nsyn keyword octaveVariable contained  EDITOR EXEC_PATH F_SETFD F_SETFL I\nsyn keyword octaveVariable contained  IMAGE_PATH Inf J NA NaN O_APPEND O_ASYNC\nsyn keyword octaveVariable contained  PAGER PAGER_FLAGS PS1 PS2 PS4\nsyn keyword octaveVariable contained  __error_text__\nsyn keyword octaveVariable contained  allow_noninteger_range_as_index ans argv\nsyn keyword octaveVariable contained  beep_on_error completion_append_char\nsyn keyword octaveVariable contained  confirm_recursive_rmdir\nsyn keyword octaveVariable contained  crash_dumps_octave_core debug_on_error\nsyn keyword octaveVariable contained  debug_on_interrupt debug_on_warning\nsyn keyword octaveVariable contained  default_save_options\nsyn keyword octaveVariable contained  do_braindead_shortcircuit_evaluation\nsyn keyword octaveVariable contained  doc_cache_file e echo_executing_commands\nsyn keyword octaveVariable contained  eps error_text false filemarker\nsyn keyword octaveVariable contained  fixed_point_format gnuplot_binary\nsyn keyword octaveVariable contained  gui_mode history_control history_file\nsyn keyword octaveVariable contained  history_size\nsyn keyword octaveVariable contained  history_timestamp_format_string\nsyn keyword octaveVariable contained  ignore_function_time_stamp inf info_file\nsyn keyword octaveVariable contained  info_program ls_command\nsyn keyword octaveVariable contained  makeinfo_program max_recursion_depth\nsyn keyword octaveVariable contained  missing_function_hook mouse_wheel_zoom\nsyn keyword octaveVariable contained  nan nargin nargout octave_core_file_limit\nsyn keyword octaveVariable contained  octave_core_file_name\nsyn keyword octaveVariable contained  octave_core_file_options\nsyn keyword octaveVariable contained  optimize_subsasgn_calls\nsyn keyword octaveVariable contained  output_max_field_width output_precision\nsyn keyword octaveVariable contained  page_output_immediately\nsyn keyword octaveVariable contained  page_screen_output pathsep pi\nsyn keyword octaveVariable contained  print_empty_dimensions\nsyn keyword octaveVariable contained  print_struct_array_contents\nsyn keyword octaveVariable contained  program_invocation_name program_name\nsyn keyword octaveVariable contained  realmax realmin\nsyn keyword octaveVariable contained  save_header_format_string save_precision\nsyn keyword octaveVariable contained  saving_history sighup_dumps_octave_core\nsyn keyword octaveVariable contained  sigterm_dumps_octave_core\nsyn keyword octaveVariable contained  silent_functions sparse_auto_mutate\nsyn keyword octaveVariable contained  split_long_rows string_fill_char\nsyn keyword octaveVariable contained  struct_levels_to_print\nsyn keyword octaveVariable contained  suppress_verbose_help_message svd_driver\nsyn keyword octaveVariable contained  true whos_line_format\n\n\" Read-only variables\nsyn keyword octaveVariable contained  F_DUPFD F_GETFD F_GETFL OCTAVE_HOME\nsyn keyword octaveVariable contained  OCTAVE_VERSION O_CREAT O_EXCL O_NONBLOCK\nsyn keyword octaveVariable contained  O_RDONLY O_RDWR O_SYNC O_TRUNC O_WRONLY\nsyn keyword octaveVariable contained  P_tmpdir SEEK_CUR SEEK_END SEEK_SET\nsyn keyword octaveVariable contained  WCONTINUE WCOREDUMP WEXITSTATUS\nsyn keyword octaveVariable contained  WIFCONTINUED WIFEXITED WIFSIGNALED\nsyn keyword octaveVariable contained  WIFSTOPPED WNOHANG WSTOPSIG WTERMSIG\nsyn keyword octaveVariable contained  WUNTRACED matlabroot pwd stderr stdin\nsyn keyword octaveVariable contained  stdout\n\n\" List of functions\nsyn keyword octaveFunction contained  SIG S_ISBLK S_ISCHR S_ISDIR S_ISFIFO\nsyn keyword octaveFunction contained  S_ISLNK S_ISREG S_ISSOCK\nsyn keyword octaveFunction contained  __accumarray_max__ __accumarray_min__\nsyn keyword octaveFunction contained  __accumarray_sum__ __accumdim_sum__\nsyn keyword octaveFunction contained  __all_opts__ __builtins__\nsyn keyword octaveFunction contained  __calc_dimensions__ __contourc__\nsyn keyword octaveFunction contained  __current_scope__ __delaunayn__\nsyn keyword octaveFunction contained  __dispatch__ __display_tokens__\nsyn keyword octaveFunction contained  __dsearchn__ __dump_symtab_info__ __end__\nsyn keyword octaveFunction contained  __finish__ __fltk_ginput__\nsyn keyword octaveFunction contained  __fltk_maxtime__ __fltk_print__\nsyn keyword octaveFunction contained  __fltk_redraw__ __fltk_uigetfile__\nsyn keyword octaveFunction contained  __ftp__ __ftp_ascii__ __ftp_binary__\nsyn keyword octaveFunction contained  __ftp_close__ __ftp_cwd__ __ftp_delete__\nsyn keyword octaveFunction contained  __ftp_dir__ __ftp_mget__ __ftp_mkdir__\nsyn keyword octaveFunction contained  __ftp_mode__ __ftp_mput__ __ftp_pwd__\nsyn keyword octaveFunction contained  __ftp_rename__ __ftp_rmdir__ __get__\nsyn keyword octaveFunction contained  __glpk__ __gnuplot_drawnow__\nsyn keyword octaveFunction contained  __gnuplot_get_var__ __gnuplot_ginput__\nsyn keyword octaveFunction contained  __gnuplot_has_feature__\nsyn keyword octaveFunction contained  __gnuplot_open_stream__ __gnuplot_print__\nsyn keyword octaveFunction contained  __gnuplot_version__ __go_axes__\nsyn keyword octaveFunction contained  __go_axes_init__ __go_close_all__\nsyn keyword octaveFunction contained  __go_delete__ __go_draw_axes__\nsyn keyword octaveFunction contained  __go_draw_figure__\nsyn keyword octaveFunction contained  __go_execute_callback__ __go_figure__\nsyn keyword octaveFunction contained  __go_figure_handles__ __go_handles__\nsyn keyword octaveFunction contained  __go_hggroup__ __go_image__ __go_line__\nsyn keyword octaveFunction contained  __go_patch__ __go_surface__ __go_text__\nsyn keyword octaveFunction contained  __go_uimenu__ __gud_mode__\nsyn keyword octaveFunction contained  __image_pixel_size__ __init_fltk__\nsyn keyword octaveFunction contained  __isa_parent__ __keywords__\nsyn keyword octaveFunction contained  __lexer_debug_flag__ __lin_interpn__\nsyn keyword octaveFunction contained  __list_functions__ __magick_finfo__\nsyn keyword octaveFunction contained  __magick_format_list__ __magick_read__\nsyn keyword octaveFunction contained  __magick_write__ __makeinfo__\nsyn keyword octaveFunction contained  __marching_cube__ __next_line_color__\nsyn keyword octaveFunction contained  __next_line_style__ __operators__\nsyn keyword octaveFunction contained  __parent_classes__ __parser_debug_flag__\nsyn keyword octaveFunction contained  __pathorig__ __pchip_deriv__\nsyn keyword octaveFunction contained  __plt_get_axis_arg__ __print_parse_opts__\nsyn keyword octaveFunction contained  __qp__ __remove_fltk__\nsyn keyword octaveFunction contained  __request_drawnow__ __sort_rows_idx__\nsyn keyword octaveFunction contained  __strip_html_tags__ __token_count__\nsyn keyword octaveFunction contained  __varval__ __version_info__ __voronoi__\nsyn keyword octaveFunction contained  __which__ abs accumarray accumdim acos\nsyn keyword octaveFunction contained  acosd acosh acot acotd acoth acsc acscd\nsyn keyword octaveFunction contained  acsch add_input_event_hook addlistener\nsyn keyword octaveFunction contained  addpath addproperty addtodate airy all\nsyn keyword octaveFunction contained  allchild amd ancestor and angle anova any\nsyn keyword octaveFunction contained  arch_fit arch_rnd arch_test area arg\nsyn keyword octaveFunction contained  argnames arma_rnd arrayfun asctime asec\nsyn keyword octaveFunction contained  asecd asech asin asind asinh assert\nsyn keyword octaveFunction contained  assignin atan atan2 atand atanh atexit\nsyn keyword octaveFunction contained  autocor autocov autoload autoreg_matrix\nsyn keyword octaveFunction contained  autumn available_graphics_toolkits axes\nsyn keyword octaveFunction contained  axis balance bar barh bartlett\nsyn keyword octaveFunction contained  bartlett_test base2dec beep bessel\nsyn keyword octaveFunction contained  besselh besseli besselj besselk bessely\nsyn keyword octaveFunction contained  beta betacdf betai betainc betainv betaln\nsyn keyword octaveFunction contained  betapdf betarnd bicgstab bicubic bin2dec\nsyn keyword octaveFunction contained  bincoeff binocdf binoinv binopdf binornd\nsyn keyword octaveFunction contained  bitand bitcmp bitget bitmax bitor bitpack\nsyn keyword octaveFunction contained  bitset bitshift bitunpack bitxor blackman\nsyn keyword octaveFunction contained  blanks blkdiag blkmm bone box brighten\nsyn keyword octaveFunction contained  bsxfun bug_report builtin bunzip2 bzip2\nsyn keyword octaveFunction contained  calendar canonicalize_file_name cart2pol\nsyn keyword octaveFunction contained  cart2sph cast cat cauchy_cdf cauchy_inv\nsyn keyword octaveFunction contained  cauchy_pdf cauchy_rnd caxis cbrt ccolamd\nsyn keyword octaveFunction contained  ceil cell cell2mat cell2struct celldisp\nsyn keyword octaveFunction contained  cellfun cellidx cellindexmat cellslices\nsyn keyword octaveFunction contained  cellstr center cgs char chi2cdf chi2inv\nsyn keyword octaveFunction contained  chi2pdf chi2rnd\nsyn keyword octaveFunction contained  chisquare_test_homogeneity\nsyn keyword octaveFunction contained  chisquare_test_independence chol chol2inv\nsyn keyword octaveFunction contained  choldelete cholinsert cholinv cholshift\nsyn keyword octaveFunction contained  cholupdate chop circshift cla clabel\nsyn keyword octaveFunction contained  class clc clf clg clock cloglog closereq\nsyn keyword octaveFunction contained  colamd colloc colon colorbar colormap\nsyn keyword octaveFunction contained  colperm colstyle columns comet comet3\nsyn keyword octaveFunction contained  comma command_line_path common_size\nsyn keyword octaveFunction contained  commutation_matrix compan\nsyn keyword octaveFunction contained  compare_versions compass complement\nsyn keyword octaveFunction contained  completion_matches complex computer cond\nsyn keyword octaveFunction contained  condest conj contour contour3 contourc\nsyn keyword octaveFunction contained  contourf contrast conv conv2 convhull\nsyn keyword octaveFunction contained  convhulln convn cool copper copyfile cor\nsyn keyword octaveFunction contained  cor_test corrcoef cos cosd cosh cot cotd\nsyn keyword octaveFunction contained  coth cov cplxpair cputime cquad\nsyn keyword octaveFunction contained  create_set cross csc cscd csch cstrcat\nsyn keyword octaveFunction contained  csvread csvwrite csymamd ctime ctranspose\nsyn keyword octaveFunction contained  cummax cummin cumprod cumsum cumtrapz\nsyn keyword octaveFunction contained  curl cut cylinder daspect daspk\nsyn keyword octaveFunction contained  daspk_options dasrt dasrt_options dassl\nsyn keyword octaveFunction contained  dassl_options date datenum datestr\nsyn keyword octaveFunction contained  datetick datevec dbclear dbdown dblquad\nsyn keyword octaveFunction contained  dbnext dbstack dbstatus dbstop dbtype\nsyn keyword octaveFunction contained  dbup dbwhere deal deblank debug dec2base\nsyn keyword octaveFunction contained  dec2bin dec2hex deconv del2 delaunay\nsyn keyword octaveFunction contained  delaunay3 delaunayn delete dellistener\nsyn keyword octaveFunction contained  det detrend diag diff diffpara diffuse\nsyn keyword octaveFunction contained  dir discrete_cdf discrete_inv\nsyn keyword octaveFunction contained  discrete_pdf discrete_rnd disp dispatch\nsyn keyword octaveFunction contained  display divergence dlmread dlmwrite\nsyn keyword octaveFunction contained  dmperm dmult do_string_escapes dos dot\nsyn keyword octaveFunction contained  double drawnow dsearch dsearchn\nsyn keyword octaveFunction contained  dump_prefs dup2 duplication_matrix\nsyn keyword octaveFunction contained  durbinlevinson eig eigs ellipsoid\nsyn keyword octaveFunction contained  empirical_cdf empirical_inv empirical_pdf\nsyn keyword octaveFunction contained  empirical_rnd endgrent endpwent eomday eq\nsyn keyword octaveFunction contained  erf erfc erfcx erfinv errno errno_list\nsyn keyword octaveFunction contained  error errorbar etime etree etreeplot eval\nsyn keyword octaveFunction contained  evalin exec exist exit exp expcdf expinv\nsyn keyword octaveFunction contained  expm expm1 exppdf exprnd eye ezcontour\nsyn keyword octaveFunction contained  ezcontourf ezmesh ezmeshc ezplot ezplot3\nsyn keyword octaveFunction contained  ezpolar ezsurf ezsurfc f_test_regression\nsyn keyword octaveFunction contained  factor factorial fail fcdf fclear fclose\nsyn keyword octaveFunction contained  fcntl fdisp feather feof ferror feval\nsyn keyword octaveFunction contained  fflush fft fft2 fftconv fftfilt fftn\nsyn keyword octaveFunction contained  fftshift fftw fgetl fgets fieldnames\nsyn keyword octaveFunction contained  figure file_in_loadpath file_in_path\nsyn keyword octaveFunction contained  fileattrib fileparts fileread filesep\nsyn keyword octaveFunction contained  fill filter filter2 find find_dir_in_path\nsyn keyword octaveFunction contained  findall findobj findstr finite finv fix\nsyn keyword octaveFunction contained  flag flipdim fliplr flipud floor fminbnd\nsyn keyword octaveFunction contained  fminunc fmod fnmatch fopen fork formula\nsyn keyword octaveFunction contained  fpdf fplot fprintf fputs fractdiff fread\nsyn keyword octaveFunction contained  freport freqz freqz_plot frewind frnd\nsyn keyword octaveFunction contained  fscanf fseek fskipl fsolve fstat ftell\nsyn keyword octaveFunction contained  full fullfile func2str functions fwrite\nsyn keyword octaveFunction contained  fzero gamcdf gaminv gamma gammai gammainc\nsyn keyword octaveFunction contained  gammaln gampdf gamrnd gca gcbf gcbo gcd\nsyn keyword octaveFunction contained  gcf ge gen_doc_cache genpath genvarname\nsyn keyword octaveFunction contained  geocdf geoinv geopdf geornd get\nsyn keyword octaveFunction contained  get_first_help_sentence get_help_text\nsyn keyword octaveFunction contained  get_help_text_from_file getappdata\nsyn keyword octaveFunction contained  getegid getenv geteuid getfield getgid\nsyn keyword octaveFunction contained  getgrent getgrgid getgrnam gethostname\nsyn keyword octaveFunction contained  getpgrp getpid getppid getpwent getpwnam\nsyn keyword octaveFunction contained  getpwuid getrusage getuid ginput givens\nsyn keyword octaveFunction contained  glob glpk glpkmex gls gmap40 gmres gmtime\nsyn keyword octaveFunction contained  gplot gradient graphics_toolkit gray\nsyn keyword octaveFunction contained  gray2ind grid griddata griddata3\nsyn keyword octaveFunction contained  griddatan gt gtext gunzip gzip hadamard\nsyn keyword octaveFunction contained  hamming hankel hanning hess hex2dec\nsyn keyword octaveFunction contained  hex2num hggroup hidden hilb hist histc\nsyn keyword octaveFunction contained  home horzcat hot hotelling_test\nsyn keyword octaveFunction contained  hotelling_test_2 housh hsv hsv2rgb hurst\nsyn keyword octaveFunction contained  hygecdf hygeinv hygepdf hygernd hypot\nsyn keyword octaveFunction contained  idivide ifelse ifft ifft2 ifftn ifftshift\nsyn keyword octaveFunction contained  imag image imagesc imfinfo imread imshow\nsyn keyword octaveFunction contained  imwrite ind2gray ind2rgb ind2sub index\nsyn keyword octaveFunction contained  inferiorto info inline inpolygon input\nsyn keyword octaveFunction contained  inputname int16 int2str int32 int64 int8\nsyn keyword octaveFunction contained  interp1 interp1q interp2 interp3 interpft\nsyn keyword octaveFunction contained  interpn intersect intmax intmin\nsyn keyword octaveFunction contained  intwarning inv inverse invhilb ipermute\nsyn keyword octaveFunction contained  iqr is_absolute_filename\nsyn keyword octaveFunction contained  is_duplicate_entry is_global is_leap_year\nsyn keyword octaveFunction contained  is_rooted_relative_filename\nsyn keyword octaveFunction contained  is_valid_file_id isa isalnum isalpha\nsyn keyword octaveFunction contained  isappdata isargout isascii isbool iscell\nsyn keyword octaveFunction contained  iscellstr ischar iscntrl iscolumn\nsyn keyword octaveFunction contained  iscommand iscomplex isdebugmode\nsyn keyword octaveFunction contained  isdefinite isdeployed isdigit isdir\nsyn keyword octaveFunction contained  isempty isequal isequalwithequalnans\nsyn keyword octaveFunction contained  isfield isfigure isfinite isfloat\nsyn keyword octaveFunction contained  isglobal isgraph ishandle ishermitian\nsyn keyword octaveFunction contained  ishghandle isieee isindex isinf isinteger\nsyn keyword octaveFunction contained  iskeyword isletter islogical islower\nsyn keyword octaveFunction contained  ismac ismatrix ismember ismethod isna\nsyn keyword octaveFunction contained  isnan isnull isnumeric isobject isocolors\nsyn keyword octaveFunction contained  isonormals isosurface ispc isprime\nsyn keyword octaveFunction contained  isprint isprop ispunct israwcommand\nsyn keyword octaveFunction contained  isreal isrow isscalar issorted isspace\nsyn keyword octaveFunction contained  issparse issquare isstr isstrprop\nsyn keyword octaveFunction contained  isstruct issymmetric isunix isupper\nsyn keyword octaveFunction contained  isvarname isvector isxdigit jet kbhit\nsyn keyword octaveFunction contained  kendall keyboard kill\nsyn keyword octaveFunction contained  kolmogorov_smirnov_cdf\nsyn keyword octaveFunction contained  kolmogorov_smirnov_test\nsyn keyword octaveFunction contained  kolmogorov_smirnov_test_2 kron\nsyn keyword octaveFunction contained  kruskal_wallis_test krylov krylovb\nsyn keyword octaveFunction contained  kurtosis laplace_cdf laplace_inv\nsyn keyword octaveFunction contained  laplace_pdf laplace_rnd lasterr lasterror\nsyn keyword octaveFunction contained  lastwarn lchol lcm ldivide le legend\nsyn keyword octaveFunction contained  legendre length lgamma license lin2mu\nsyn keyword octaveFunction contained  line link linkprop linspace\nsyn keyword octaveFunction contained  list_in_columns list_primes loadaudio\nsyn keyword octaveFunction contained  loadimage loadobj localtime log log10\nsyn keyword octaveFunction contained  log1p log2 logical logistic_cdf\nsyn keyword octaveFunction contained  logistic_inv logistic_pdf\nsyn keyword octaveFunction contained  logistic_regression logistic_rnd logit\nsyn keyword octaveFunction contained  loglog loglogerr logm logncdf logninv\nsyn keyword octaveFunction contained  lognpdf lognrnd logspace lookup lower\nsyn keyword octaveFunction contained  lsode lsode_options lsqnonneg lstat lt lu\nsyn keyword octaveFunction contained  luinc luupdate magic mahalanobis\nsyn keyword octaveFunction contained  make_absolute_filename manova\nsyn keyword octaveFunction contained  mark_as_command mark_as_rawcommand\nsyn keyword octaveFunction contained  mat2cell mat2str matrix_type max\nsyn keyword octaveFunction contained  mcnemar_test md5sum mean meansq median\nsyn keyword octaveFunction contained  menu merge mesh meshc meshgrid meshz\nsyn keyword octaveFunction contained  methods mex mexext mfilename mgorth min\nsyn keyword octaveFunction contained  minus mislocked mkdir mkfifo mkpp mkstemp\nsyn keyword octaveFunction contained  mktime mldivide mlock mod mode moment\nsyn keyword octaveFunction contained  movefile mpoles mpower mrdivide mtimes\nsyn keyword octaveFunction contained  mu2lin munlock namelengthmax nargchk\nsyn keyword octaveFunction contained  nargoutchk native_float_format nbincdf\nsyn keyword octaveFunction contained  nbininv nbinpdf nbinrnd nchoosek ndgrid\nsyn keyword octaveFunction contained  ndims ne newplot news nextpow2 nfields\nsyn keyword octaveFunction contained  nnz nonzeros norm normcdf normest norminv\nsyn keyword octaveFunction contained  normpdf normrnd not now nproc nth_element\nsyn keyword octaveFunction contained  nthroot ntsc2rgb null num2cell num2hex\nsyn keyword octaveFunction contained  num2str numel nzmax ocean\nsyn keyword octaveFunction contained  octave_config_info octave_tmp_file_name\nsyn keyword octaveFunction contained  ols onCleanup onenormest ones optimget\nsyn keyword octaveFunction contained  optimset or orderfields orient orth pack\nsyn keyword octaveFunction contained  paren pareto parseparams pascal patch\nsyn keyword octaveFunction contained  path pathdef pause pbaspect pcg pchip\nsyn keyword octaveFunction contained  pclose pcolor pcr peaks periodogram perl\nsyn keyword octaveFunction contained  perms permute perror pie pie3 pink pinv\nsyn keyword octaveFunction contained  pipe planerot playaudio plot plot3\nsyn keyword octaveFunction contained  plotmatrix plotyy plus poisscdf poissinv\nsyn keyword octaveFunction contained  poisspdf poissrnd pol2cart polar poly\nsyn keyword octaveFunction contained  polyaffine polyarea polyder polyderiv\nsyn keyword octaveFunction contained  polyfit polygcd polyint polyout\nsyn keyword octaveFunction contained  polyreduce polyval polyvalm popen popen2\nsyn keyword octaveFunction contained  postpad pow2 power powerset ppder ppint\nsyn keyword octaveFunction contained  ppjumps ppplot ppval pqpnonneg prctile\nsyn keyword octaveFunction contained  prepad primes print print_usage printf\nsyn keyword octaveFunction contained  prism probit prod prop_test_2 putenv puts\nsyn keyword octaveFunction contained  qp qqplot qr qrdelete qrinsert qrshift\nsyn keyword octaveFunction contained  qrupdate quad quad_options quadcc quadgk\nsyn keyword octaveFunction contained  quadl quadv quantile quit quiver quiver3\nsyn keyword octaveFunction contained  qz qzhess rainbow rand rande randg randi\nsyn keyword octaveFunction contained  randn randp randperm range rank ranks rat\nsyn keyword octaveFunction contained  rats rcond rdivide\nsyn keyword octaveFunction contained  re_read_readline_init_file\nsyn keyword octaveFunction contained  read_readline_init_file readdir readlink\nsyn keyword octaveFunction contained  real reallog realpow realsqrt record\nsyn keyword octaveFunction contained  rectangle rectint refresh refreshdata\nsyn keyword octaveFunction contained  regexp regexpi regexprep regexptranslate\nsyn keyword octaveFunction contained  rehash rem remove_input_event_hook rename\nsyn keyword octaveFunction contained  repelems replot repmat reset reshape\nsyn keyword octaveFunction contained  residue resize restoredefaultpath rethrow\nsyn keyword octaveFunction contained  rgb2hsv rgb2ind rgb2ntsc ribbon rindex\nsyn keyword octaveFunction contained  rmappdata rmdir rmfield rmpath roots rose\nsyn keyword octaveFunction contained  rosser rot90 rotdim round roundb rows\nsyn keyword octaveFunction contained  rref rsf2csf run_count run_test rundemos\nsyn keyword octaveFunction contained  runlength runtests saveas saveaudio\nsyn keyword octaveFunction contained  saveimage saveobj savepath scanf scatter\nsyn keyword octaveFunction contained  scatter3 schur sec secd sech semicolon\nsyn keyword octaveFunction contained  semilogx semilogxerr semilogy semilogyerr\nsyn keyword octaveFunction contained  set setappdata setaudio setdiff setenv\nsyn keyword octaveFunction contained  setfield setgrent setpwent setstr setxor\nsyn keyword octaveFunction contained  shading shell_cmd shift shiftdim sign\nsyn keyword octaveFunction contained  sign_test sin sinc sind sinetone sinewave\nsyn keyword octaveFunction contained  single sinh size size_equal sizemax\nsyn keyword octaveFunction contained  sizeof skewness sleep slice sombrero sort\nsyn keyword octaveFunction contained  sortrows source spalloc sparse spatan2\nsyn keyword octaveFunction contained  spaugment spchol spchol2inv spcholinv\nsyn keyword octaveFunction contained  spconvert spcumprod spcumsum spdet spdiag\nsyn keyword octaveFunction contained  spdiags spearman spectral_adf\nsyn keyword octaveFunction contained  spectral_xdf specular speed spencer speye\nsyn keyword octaveFunction contained  spfind spfun sph2cart sphcat sphere\nsyn keyword octaveFunction contained  spinmap spinv spkron splchol spline split\nsyn keyword octaveFunction contained  splu spmax spmin spones spparms spprod\nsyn keyword octaveFunction contained  spqr sprand sprandn sprandsym sprank\nsyn keyword octaveFunction contained  spring sprintf spstats spsum spsumsq\nsyn keyword octaveFunction contained  spvcat spy sqp sqrt sqrtm squeeze sscanf\nsyn keyword octaveFunction contained  stairs stat statistics std stdnormal_cdf\nsyn keyword octaveFunction contained  stdnormal_inv stdnormal_pdf stdnormal_rnd\nsyn keyword octaveFunction contained  stem stem3 stft str2double str2func\nsyn keyword octaveFunction contained  str2mat str2num strcat strchr strcmp\nsyn keyword octaveFunction contained  strcmpi strerror strfind strftime strjust\nsyn keyword octaveFunction contained  strmatch strncmp strncmpi strptime\nsyn keyword octaveFunction contained  strread strrep strsplit strtok strtrim\nsyn keyword octaveFunction contained  strtrunc struct struct2cell structfun\nsyn keyword octaveFunction contained  strvcat studentize sub2ind subplot\nsyn keyword octaveFunction contained  subsasgn subsindex subspace subsref\nsyn keyword octaveFunction contained  substr substruct sum summer sumsq\nsyn keyword octaveFunction contained  superiorto surf surface surfc surfl\nsyn keyword octaveFunction contained  surfnorm svd svds swapbytes syl\nsyn keyword octaveFunction contained  sylvester_matrix symamd symbfact symlink\nsyn keyword octaveFunction contained  symrcm symvar synthesis system t_test\nsyn keyword octaveFunction contained  t_test_2 t_test_regression table tan tand\nsyn keyword octaveFunction contained  tanh tar tcdf tempdir tempname\nsyn keyword octaveFunction contained  terminal_size text textread textscan tic\nsyn keyword octaveFunction contained  tilde_expand time times tinv title\nsyn keyword octaveFunction contained  tmpfile tmpnam toascii toc toeplitz\nsyn keyword octaveFunction contained  tolower toupper tpdf trace transpose\nsyn keyword octaveFunction contained  trapz treelayout treeplot tril trimesh\nsyn keyword octaveFunction contained  triplequad triplot trisurf triu trnd\nsyn keyword octaveFunction contained  tsearch tsearchn typecast typeinfo u_test\nsyn keyword octaveFunction contained  uigetdir uigetfile uimenu uint16 uint32\nsyn keyword octaveFunction contained  uint64 uint8 uiputfile umask uminus uname\nsyn keyword octaveFunction contained  undo_string_escapes unidcdf unidinv\nsyn keyword octaveFunction contained  unidpdf unidrnd unifcdf unifinv unifpdf\nsyn keyword octaveFunction contained  unifrnd unimplemented union unique unix\nsyn keyword octaveFunction contained  unlink unmark_command unmark_rawcommand\nsyn keyword octaveFunction contained  unmkpp unpack untabify untar unwrap unzip\nsyn keyword octaveFunction contained  uplus upper urlread urlwrite usage usleep\nsyn keyword octaveFunction contained  validatestring values vander var var_test\nsyn keyword octaveFunction contained  vec vech vectorize ver version vertcat\nsyn keyword octaveFunction contained  view voronoi voronoin waitforbuttonpress\nsyn keyword octaveFunction contained  waitpid warning warning_ids warranty\nsyn keyword octaveFunction contained  wavread wavwrite wblcdf wblinv wblpdf\nsyn keyword octaveFunction contained  wblrnd weekday weibcdf weibinv weibpdf\nsyn keyword octaveFunction contained  weibrnd welch_test white whitebg wienrnd\nsyn keyword octaveFunction contained  wilcoxon_test wilkinson winter xlabel\nsyn keyword octaveFunction contained  xlim xor yes_or_no ylabel ylim yulewalker\nsyn keyword octaveFunction contained  z_test z_test_2 zeros zip zlabel zlim\n\n\" Add functions defined in .m file being read to list of highlighted functions\nfunction! s:CheckForFunctions()\n  let i = 1\n  while i <= line('$')\n    let line = getline(i)\n    \" Only look for functions at start of line.\n    \" Commented function, '# function', will not trigger as match returns 3\n    if match(line, '\\Cfunction') == 0\n      let line = substitute(line, '\\vfunction *([^(]*\\= *)?', '', '')\n      let nfun = matchstr(line, '\\v^\\h\\w*')\n      if !empty(nfun)\n        execute \"syn keyword octaveFunction\" nfun\n      endif\n    \" Include anonymous functions 'func = @(...)'.\n    \" Use contained keyword to prevent highlighting on LHS of '='\n    elseif match(line, '\\<\\(\\h\\w*\\)\\s*=\\s*@\\s*(') != -1\n      let list = matchlist(line, '\\<\\(\\h\\w*\\)\\s*=\\s*@\\s*(')\n      let nfun = list[1]\n      if !empty(nfun)\n        execute \"syn keyword octaveFunction contained\" nfun\n      endif\n    endif\n    let i = i + 1\n  endwhile\nendfunction\n\ncall s:CheckForFunctions()\n\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\" Define clusters for ease of writing subsequent rules\nsyn cluster AllFuncVarCmd contains=octaveVariable,octaveFunction,octaveCommand\nsyn cluster AllFuncSetCmd contains=octaveSetVarFun,octaveFunction,octaveCommand\n\n\" Switch highlighting of variables based on coding use.\n\" Query -> Constant, Set -> Function\n\" order of items is is important here\nsyn match octaveQueryVar \"\\<\\h\\w*[^(]\"me=e-1  contains=@AllFuncVarCmd\nsyn match octaveSetVar   \"\\<\\h\\w*\\s*(\"me=e-1  contains=@AllFuncSetCmd\nsyn match octaveQueryVar \"\\<\\h\\w*\\s*\\((\\s*)\\)\\@=\"  contains=@AllFuncVarCmd\n\n\" Don't highlight Octave keywords on LHS of '=', these are user vars\nsyn match octaveUserVar  \"\\<\\h\\w*\\ze[^<>!~=]\\{-}==\\@!\"\nsyn match octaveUserVar  \"\\<\\h\\w*\\s*[<>!~=]=\" contains=octaveVariable\n\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\" Errors (placed early so they may be overriden by more specific rules\n\" Struct with nonvalid identifier starting with number (Example: 1.a or a.1b)\nsyn region octaveError  start=\"\\<\\d\\+\\(\\w*\\.\\)\\@=\"  end=\"[^0-9]\"he=s-1 oneline\nsyn region octaveError  start=\"\\.\\d\\+\\(\\w*\\)\\@=\"hs=s+1  end=\"[^0-9]\"he=s-1 oneline\n\" Numbers with double decimal points (Example: 1.2.3)\nsyn region octaveError  start=\"\\<-\\?\\d\\+\\.\\d\\+\\.[^*/\\\\^]\"hs=e-1 end=\"\\>\"  oneline\nsyn region octaveError  start=\"\\<-\\?\\d\\+\\.\\d\\+[eEdD][-+]\\?\\d\\+\\.[^*/\\\\^]\"hs=e-1 end=\"\\>\"  oneline\n\n\" Operators\n\" Uncommment \"Hilink octaveOperator\" below to highlight these\nsyn match octaveLogicalOperator     \"[&|~!]\"\nsyn match octaveArithmeticOperator  \"\\.\\?[-+*/\\\\^]\"\nsyn match octaveRelationalOperator  \"[=!~]=\"\nsyn match octaveRelationalOperator  \"[<>]=\\?\"\n\n\" User Variables\n\" Uncomment this syntax group and \"Hilink octaveIdentifier\" below to highlight\n\"syn match octaveIdentifier  \"\\<\\h\\w*\\>\"\n\n\" Strings\nsyn region octaveString  start=/'/  end=/'/  skip=/\\\\'/ contains=octaveLineContinuation,@Spell\nsyn region octaveString  start=/\"/  end=/\"/  skip=/\\\\\"/ contains=octaveLineContinuation,@Spell\n\n\" Standard numbers\nsyn match octaveNumber  \"\\<\\d\\+[ij]\\?\\>\"\n\" Floating point number, with dot, optional exponent\nsyn match octaveFloat   \"\\<\\d\\+\\(\\.\\d*\\)\\?\\([edED][-+]\\?\\d\\+\\)\\?[ij]\\?\\>\"\n\" Floating point number, starting with a dot, optional exponent\nsyn match octaveFloat   \"\\.\\d\\+\\([edED][-+]\\?\\d\\+\\)\\?[ij]\\?\\>\"\n\n\" Delimiters and transpose character\nsyn match octaveDelimiter          \"[][(){}@]\"\nsyn match octaveTransposeOperator  \"[])[:alnum:]._]\\@<='\"\n\n\" Tabs, for possibly highlighting as errors\nsyn match octaveTab  \"\\t\"\n\" Other special constructs\nsyn match octaveSemicolon  \";\"\nsyn match octaveTilde \"\\~\\s*[[:punct:]]\"me=e-1\n\n\" Line continuations, order of matches is important here\nsyn match octaveLineContinuation  \"\\.\\{3}$\"\nsyn match octaveLineContinuation  \"\\\\$\"\nsyn match octaveError  \"\\.\\{3}.\\+$\"hs=s+3\nsyn match octaveError  \"\\\\\\s\\+$\"hs=s+1\n\" Line continuations w/comments\nsyn match octaveLineContinuation  \"\\.\\{3}\\s*[#%]\"me=e-1\nsyn match octaveLineContinuation  \"\\\\\\s*[#%]\"me=e-1\n\n\" Comments, order of matches is important here\nsyn keyword octaveFIXME contained  FIXME TODO\nsyn match  octaveComment  \"[%#].*$\"  contains=octaveFIXME,octaveTab,@Spell\nsyn match  octaveError    \"[#%][{}]\"\nsyn region octaveBlockComment  start=\"^\\s*[#%]{\\s*$\"  end=\"^\\s*[#%]}\\s*$\" contains=octaveFIXME,octaveTab,@Spell\n\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\" Apply highlight groups to syntax groups defined above\n\n\" Define the default highlighting.\n\" For version 5.7 and earlier: only when not done already\n\" For version 5.8 and later: only when an item doesn't have highlighting yet\nif version >= 508 || !exists(\"did_octave_syntax_inits\")\n  if version < 508\n    let did_octave_syntax_inits = 1\n    command -nargs=+ HiLink hi link <args>\n  else\n    command -nargs=+ HiLink hi def link <args>\n  endif\n\n  HiLink octaveBeginKeyword             Conditional\n  HiLink octaveElseKeyword              Conditional\n  HiLink octaveEndKeyword               Conditional\n  HiLink octaveReserved                 Conditional\n\n  HiLink octaveStatement                Statement\n  HiLink octaveVariable                 Constant\n  HiLink octaveSetVarFun                Function\n  HiLink octaveCommand                  Statement\n  HiLink octaveFunction                 Function\n\n  HiLink octaveConditional              Conditional\n  HiLink octaveLabel                    Label\n  HiLink octaveRepeat                   Repeat\n  HiLink octaveFIXME                    Todo\n  HiLink octaveString                   String\n  HiLink octaveDelimiter                Identifier\n  HiLink octaveNumber                   Number\n  HiLink octaveFloat                    Float\n  HiLink octaveError                    Error\n  HiLink octaveComment                  Comment\n  HiLink octaveBlockComment             Comment\n  HiLink octaveSemicolon                SpecialChar\n  HiLink octaveTilde                    SpecialChar\n  HiLink octaveLineContinuation         Special\n\n  HiLink octaveTransposeOperator        octaveOperator\n  HiLink octaveArithmeticOperator       octaveOperator\n  HiLink octaveRelationalOperator       octaveOperator\n  HiLink octaveLogicalOperator          octaveOperator\n\n\" Optional highlighting\n\"  HiLink octaveOperator                Operator\n\"  HiLink octaveIdentifier              Identifier\n\"  HiLink octaveTab                     Error\n\n  delcommand HiLink\nendif\n\nlet b:current_syntax = \"octave\"\n\n\"EOF\tvim: ts=8 noet tw=100 sw=8 sts=0\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/opencl.vim",
    "content": "\" Vim syntax file\n\" Language:\tOpenCL (Open Computing Language)\n\" Maintainer:\tTerence Ou (rivan_@msn.com)\n\" Last Change:\t19-July-2010\n\nif version < 600\n  syntax clear\nelseif exists(\"b:current_syntax\")\n  finish\nendif\n\n\" Read the C syntax to start with\nif version < 600\n  source <sfile>:p:h/c.vim\nelse\n  runtime! syntax/c.vim\nendif\n\n\" address space qualifiers\nsyn keyword clStorageClass\tglobal __global local __local constant __constant private __private\n\" function qualifiers\nsyn keyword clStorageClass      kernel __kernel  __attribute__\nsyn keyword clStorageClass      read_only __read_only write_only __write_only\nsyn keyword clStorageClass      complex imaginary\n\n\" scalar types\nsyn keyword clType              bool uchar ushort uint ulong half quad\n\n\" vector types\nsyn keyword clType\t\tchar2 char3 char4 char8 char16\nsyn keyword clType\t\tuchar2 uchar3 uchar4 uchar8 uchar16\nsyn keyword clType\t\tshort2 short3 short4 short8 short16\nsyn keyword clType\t\tushort2 ushort3 ushort4 ushort8 ushort16\nsyn keyword clType\t\tint2 int3 int4 int8 int16\nsyn keyword clType\t\tuint2 uint3 uint4 uint8 uint16\nsyn keyword clType\t\tlong2 long3 long4 long8 long16\nsyn keyword clType\t\tulong2 ulong3 ulong4 ulong8 ulong16\nsyn keyword clType\t\tfloat2 float3 float4 float8 float16\nsyn keyword clType\t\tdouble2 double3 double4 double8 double16\nsyn keyword clType              half2 half3 half4 half8 half16\n\n\" other types\nsyn keyword clType              ptrdiff_t intptr_t uintptr_t\nsyn keyword clType\t\timage2d_t image3d_t sampler_t event_t\n\n\" reserved types\nsyn keyword clType              bool2 bool3 bool4 bool8 bool16\nsyn keyword clType              quad2 quad3 quad4 quad8 quad16\nsyn match clType                \"\\(float\\|double\\)\\(2\\|3\\|4\\|8\\|16\\)x\\(2\\|3\\|4\\|8\\|16\\)\"\n\n\" abstract data types\nsyn keyword clType              _cl_platform_id _cl_device_id _cl_context _cl_command_queue _cl_mem _cl_program _cl_kernel _cl_event _cl_sampler\n\n\" image format descriptor structure\nsyn keyword clType              cl_image_format\n\nsyn keyword clCast              vec_type_hint work_group_size_hint aligned packed endian\n\nsyn match clCast                \"as_\\(uchar\\|char\\|ushort\\|short\\|uint\\|int\\|ulong\\|long\\|float\\|double\\)(\"\n\nsyn match clCast                \"as_\\(uchar\\|char\\|ushort\\|short\\|uint\\|int\\|ulong\\|long\\|float\\|double\\)\\(2\\|3\\|4\\|8\\|16\\)(\"\n\nsyn match clCast                \"convert_\\(uchar\\|char\\|ushort\\|short\\|uint\\|int\\|ulong\\|long\\|float\\|double\\))\\(2\\|3\\|4\\|8\\|16\\)(\"\n\nsyn match clCast                \"convert_\\(uchar\\|char\\|ushort\\|short\\|uint\\|int\\|ulong\\|long\\|float\\|double\\))\\(2\\|3\\|4\\|8\\|16\\)_sat(\"\n\nsyn match clCast                \"convert_\\(uchar\\|char\\|ushort\\|short\\|uint\\|int\\|ulong\\|long\\|float\\|double\\))\\(2\\|3\\|4\\|8\\|16\\)_sat_\\(rte\\|rtz\\|rtp\\|rtn\\)(\"\n\n\" work item functions\nsyn keyword clFunction          get_work_dim get_global_size get_global_id get_local_size get_local_id get_num_groups get_group_id get_global_offset\n\n\" math functions\nsyn keyword clFunction          cos cosh cospi acos acosh acospi\nsyn keyword clFunction          sin sincos sinh sinpi asin asinh asinpi \nsyn keyword clFunction          tan tanh tanpi atan atan2 atanh atanpi atan2pi \nsyn keyword clFunction          cbrt ceil copysign\nsyn keyword clFunction          erfc erf \nsyn keyword clFunction          exp exp2 exp10 expm1 \nsyn keyword clFunction          fabs fdim floor fma fmax fmin \nsyn keyword clFunction          fract frexp hypot ilogb \nsyn keyword clFunction          ldexp ldexp lgamma lgamma_r\nsyn keyword clFunction          log log2 log10 log1p logb\nsyn keyword clFunction          mad modf\nsyn keyword clFunction          nan nextafter\nsyn keyword clFunction          pow pown powr\nsyn keyword clFunction          remainder remquo rint rootn round rsqrt sqrt\nsyn keyword clFunction          tgamma trunc\nsyn keyword clFunction          half_cos half_divide half_exp half_exp2 half_exp10 half_log half_log2 half_log10 half_powr half_recip half_rsqrt half_sin half_sqrt half_tan\nsyn keyword clFunction          native_cos native_divide native_exp native_exp2 native_exp10 native_log native_log2 native_log10 native_powr native_recip native_rsqrt native_sin native_sqrt native_tan\n\n\" integer functions\nsyn keyword clFunction          abs abs_diff add_sat hadd rhadd clz mad_hi mad_sat max min mul_hi rotate sub_sat upsample mad24 mul24\n\n\" common functions\nsyn keyword clFunction          clamp degrees max min mix radians step smoothstep sign\n\n\" geometric functions\nsyn keyword clFunction          cross dot distance length normalize fast_distance fast_length fast_normalize\n\n\" miscellaneous vector functions\nsyn keyword clFunction          vec_step shuffle shuffle2\n\n\" relational functions\nsyn keyword clFunction          isequal isnotequal isgreater isgreaterequal isless islessequal islessgreater isfinite isinf isnan isnormal isordered isunordered signbit any all bitselect select\n\n\" vector data load and store functions\nsyn keyword clFunction          vload_half vstore_half\nsyn match clFunction            \"vload\\(2\\|3\\|4\\|8\\|16\\)(\"\nsyn match clFunction            \"vload_half\\(2\\|3\\|4\\|8\\|16\\)(\"\nsyn match clFunction            \"vloada_half\\(2\\|3\\|4\\|8\\|16\\)(\"\nsyn match clFunction            \"vloada_half\\(2\\|3\\|4\\|8\\|16\\)_\\(rte\\|rtz\\|rtp\\)(\"\nsyn match clFunction            \"vstore\\(2\\|3\\|4\\|8\\|16\\)(\"\nsyn match clFunction            \"vstore\\(rte\\|rtz\\|rtp\\|rtn\\)(\"\nsyn match clFunction            \"vstore_half\\(2\\|3\\|4\\|8\\|16\\)(\"\nsyn match clFunction            \"vstore_half_\\(rte\\|rtz\\|rtp\\|rtn\\)(\"\nsyn match clFunction            \"vstore_half\\(2\\|3\\|4\\|8\\|16\\)_\\(rte\\|rtz\\|rtp\\|rtn\\)(\"\nsyn match clFunction            \"vstorea_half\\(2\\|3\\|4\\|8\\|16\\)(\"\nsyn match clFunction            \"vstorea_half\\(2\\|3\\|4\\|8\\|16\\)_\\(rte\\|rtz\\|rtp\\|rtn\\)(\"\n\n\" image read and write functions\nsyn match clFunction            \"read_image\\(f\\|i\\|ui\\|h\\)(\"\nsyn match clFunction            \"write_image\\(f\\|i\\|ui\\|h\\)(\"\nsyn keyword clFunction          get_image_width get_image_height get_image_depth get_image_channel_data_type get_image_channel_order get_image_dim\n\n\" explicit memory fence functions\nsyn keyword clFunction          barrier mem_fence read_mem_fence write_mem_fence\n\n\" async copies from global to local mem to and fro and prefetch\nsyn keyword clFunction          async_work_group_copy async_work_group__strided_copy wait_group_events prefetch\n\n\" atomic functions\nsyn match clFunction            \"atom_\\(add\\|sub\\|xchg\\|inc\\|dec\\|cmpxchg\\|min\\|max\\|and\\|or\\|xor\\)(\"\n\nsyn keyword clConstant          MAXFLOAT HUGE_VALF INFINITY NAN\nsyn keyword clConstant          FLT_DIG FLT_MANT_DIG FLT_MAX_10_EXP FLT_MAX_EXP FLT_MIN_10_EXP FLT_MIN_EXP FLT_RADIX FLT_MAX FLT_MIN FLT_EPSILON\nsyn keyword clConstant          CHAR_BIT CHAR_MAX CHAR_MIN INT_MIN INT_MAX LONG_MAX LONG_MIN SCHAR_MAX SCHAR_MIN SHRT_MAX SHRT_MIN UCHAR_MAX UCHAR_MIN UINT_MAX ULONG_MAX\nsyn keyword clConstant          DBL_DIG DBL_MANT_DIG DBL_MAX_10_EXP DBL_MIN_10_EXP DBL_MIN_EXP DBL_MAX DBL_MIN DBL_EPSILON\nsyn keyword clConstant          M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI2 M_PI4 M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2 \nsyn keyword clConstant          CLK_NORMALIZED_COORDS_TRUE CLK_NORMALIZED_COORDS_FALSE \nsyn keyword clConstant          CLK_ADDRESS_REPEAT CLK_ADDRESS_CLAMP_TO_EDGE CLK_ADDRESS_CLAMP \nsyn keyword clConstant          CL_INTENSITY CL_RA CL_ARGB CL_BGRA CL_RGBA CL_R CL_RG CL_RGB CL_RGx CL_RGBx CL_Rx CL_A CL_LUMINANCE\nsyn keyword clConstant          CL_SNORM_INT8 CL_SNORM_INT16 CL_UNORM_INT8 CL_UNORM_INT16 CL_UNORM_SHORT_565 CL_UNORM_SHORT_555 CL_UNORM_INT_101010 CL_SIGNED_INT8 CL_SIGNED_INT16 CL_SIGNED_INT32 CL_UNSIGNED_INT8 CL_UNSIGNED_INT16 CL_UNSIGNED_INT32 CL_HALF_FLOAT CL_FLOAT\nsyn keyword clConstant          CLK_ADDRESS_NONE CLK_FILTER_NEAREST CLK_FILTER_LINEAR\nsyn keyword clConstant          CLK_GLOBAL_MEM_FENCE CLK_LOCAL_MEM_FENCE\n\nhi def link clStorageClass\tStorageClass\nhi def link clStructure         Structure\nhi def link clType\t\tType\nhi def link clVariable\t        Identifier\nhi def link clConstant\t        Constant\nhi def link clCast              Operator\nhi def link clFunction          Function\nhi def link clStatement         Statement\n\nlet b:current_syntax = \"opencl\"\n\n\" vim: ts=8\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/perl.vim",
    "content": "\" Vim syntax file\n\" Language:      Perl 5\n\" Maintainer:    vim-perl <vim-perl@googlegroups.com>\n\" Homepage:      http://github.com/vim-perl/vim-perl/tree/master\n\" Bugs/requests: http://github.com/vim-perl/vim-perl/issues\n\" Last Change:   {{LAST_CHANGE}}\n\" Contributors:  Andy Lester <andy@petdance.com>\n\"                Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>\n\"                Lukas Mai <l.mai.web.de>\n\"                Nick Hibma <nick@van-laarhoven.org>\n\"                Sonia Heimann <niania@netsurf.org>\n\"                Rob Hoelz <rob@hoelz.ro>\n\"                and many others.\n\"\n\" Please download the most recent version first, before mailing\n\" any comments.\n\"\n\" The following parameters are available for tuning the\n\" perl syntax highlighting, with defaults given:\n\"\n\" let perl_include_pod = 1\n\" unlet perl_no_scope_in_variables\n\" unlet perl_no_extended_vars\n\" unlet perl_string_as_statement\n\" unlet perl_no_sync_on_sub\n\" unlet perl_no_sync_on_global_var\n\" let perl_sync_dist = 100\n\" unlet perl_fold\n\" unlet perl_fold_blocks\n\" unlet perl_nofold_packages\n\" let perl_nofold_subs = 1\n\" unlet perl_fold_anonymous_subs\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nlet s:cpo_save = &cpo\nset cpo&vim\n\nif exists('&regexpengine')\n  let s:regexpengine=&regexpengine\n  set regexpengine=1\nendif\n\n\" POD starts with ^=<word> and ends with ^=cut\n\nif !exists(\"perl_include_pod\") || perl_include_pod == 1\n  \" Include a while extra syntax file\n  syn include @Pod syntax/pod.vim\n  unlet b:current_syntax\n  if exists(\"perl_fold\")\n    syn region perlPOD start=\"^=[a-z]\" end=\"^=cut\" contains=@Pod,@Spell,perlTodo keepend fold extend\n    syn region perlPOD start=\"^=cut\" end=\"^=cut\" contains=perlTodo keepend fold extend\n  else\n    syn region perlPOD start=\"^=[a-z]\" end=\"^=cut\" contains=@Pod,@Spell,perlTodo keepend\n    syn region perlPOD start=\"^=cut\" end=\"^=cut\" contains=perlTodo keepend\n  endif\nelse\n  \" Use only the bare minimum of rules\n  if exists(\"perl_fold\")\n    syn region perlPOD start=\"^=[a-z]\" end=\"^=cut\" fold\n  else\n    syn region perlPOD start=\"^=[a-z]\" end=\"^=cut\"\n  endif\nendif\n\n\nsyn cluster perlTop\t\tcontains=TOP\n\nsyn region perlBraces start=\"{\" end=\"}\" transparent extend\n\n\" All keywords\n\"\nsyn match perlConditional\t\t\"\\<\\%(if\\|elsif\\|unless\\|given\\|when\\|default\\)\\>\"\nsyn match perlConditional\t\t\"\\<else\\%(\\%(\\_s\\*if\\>\\)\\|\\>\\)\" contains=perlElseIfError skipwhite skipnl skipempty\nsyn match perlRepeat\t\t\t\"\\<\\%(while\\|for\\%(each\\)\\=\\|do\\|until\\|continue\\)\\>\"\nsyn match perlOperator\t\t\t\"\\<\\%(defined\\|undef\\|eq\\|ne\\|[gl][et]\\|cmp\\|not\\|and\\|or\\|xor\\|not\\|bless\\|ref\\|do\\)\\>\"\n\" for some reason, adding this as the nextgroup for perlControl fixes BEGIN\n\" folding issues...\nsyn match perlFakeGroup \t\t\"\" contained\nsyn match perlControl\t\t\t\"\\<\\%(BEGIN\\|CHECK\\|INIT\\|END\\|UNITCHECK\\)\\>\\_s*\" nextgroup=perlFakeGroup\n\nsyn match perlStatementStorage\t\t\"\\<\\%(my\\|our\\|local\\|state\\)\\>\"\nsyn match perlStatementControl\t\t\"\\<\\%(return\\|last\\|next\\|redo\\|goto\\|break\\)\\>\"\nsyn match perlStatementScalar\t\t\"\\<\\%(chom\\=p\\|chr\\|crypt\\|r\\=index\\|lc\\%(first\\)\\=\\|length\\|ord\\|pack\\|sprintf\\|substr\\|fc\\|uc\\%(first\\)\\=\\)\\>\"\nsyn match perlStatementRegexp\t\t\"\\<\\%(pos\\|quotemeta\\|split\\|study\\)\\>\"\nsyn match perlStatementNumeric\t\t\"\\<\\%(abs\\|atan2\\|cos\\|exp\\|hex\\|int\\|log\\|oct\\|rand\\|sin\\|sqrt\\|srand\\)\\>\"\nsyn match perlStatementList\t\t\"\\<\\%(splice\\|unshift\\|shift\\|push\\|pop\\|join\\|reverse\\|grep\\|map\\|sort\\|unpack\\)\\>\"\nsyn match perlStatementHash\t\t\"\\<\\%(delete\\|each\\|exists\\|keys\\|values\\)\\>\"\nsyn match perlStatementIOfunc\t\t\"\\<\\%(syscall\\|dbmopen\\|dbmclose\\)\\>\"\nsyn match perlStatementFiledesc\t\t\"\\<\\%(binmode\\|close\\%(dir\\)\\=\\|eof\\|fileno\\|getc\\|lstat\\|printf\\=\\|read\\%(dir\\|line\\|pipe\\)\\|rewinddir\\|say\\|select\\|stat\\|tell\\%(dir\\)\\=\\|write\\)\\>\" nextgroup=perlFiledescStatementNocomma skipwhite\nsyn match perlStatementFiledesc\t\t\"\\<\\%(fcntl\\|flock\\|ioctl\\|open\\%(dir\\)\\=\\|read\\|seek\\%(dir\\)\\=\\|sys\\%(open\\|read\\|seek\\|write\\)\\|truncate\\)\\>\" nextgroup=perlFiledescStatementComma skipwhite\nsyn match perlStatementVector\t\t\"\\<vec\\>\"\nsyn match perlStatementFiles\t\t\"\\<\\%(ch\\%(dir\\|mod\\|own\\|root\\)\\|glob\\|link\\|mkdir\\|readlink\\|rename\\|rmdir\\|symlink\\|umask\\|unlink\\|utime\\)\\>\"\nsyn match perlStatementFiles\t\t\"-[rwxoRWXOezsfdlpSbctugkTBMAC]\\>\"\nsyn match perlStatementFlow\t\t\"\\<\\%(caller\\|die\\|dump\\|eval\\|exit\\|wantarray\\|evalbytes\\)\\>\"\nsyn match perlStatementInclude\t\t\"\\<\\%(require\\|import\\|unimport\\)\\>\"\nsyn match perlStatementInclude\t\t\"\\<\\%(use\\|no\\)\\s\\+\\%(\\%(attributes\\|attrs\\|autouse\\|parent\\|base\\|big\\%(int\\|num\\|rat\\)\\|blib\\|bytes\\|charnames\\|constant\\|diagnostics\\|encoding\\%(::warnings\\)\\=\\|feature\\|fields\\|filetest\\|if\\|integer\\|less\\|lib\\|locale\\|mro\\|open\\|ops\\|overload\\|re\\|sigtrap\\|sort\\|strict\\|subs\\|threads\\%(::shared\\)\\=\\|utf8\\|vars\\|version\\|vmsish\\|warnings\\%(::register\\)\\=\\)\\>\\)\\=\"\nsyn match perlStatementProc\t\t\"\\<\\%(alarm\\|exec\\|fork\\|get\\%(pgrp\\|ppid\\|priority\\)\\|kill\\|pipe\\|set\\%(pgrp\\|priority\\)\\|sleep\\|system\\|times\\|wait\\%(pid\\)\\=\\)\\>\"\nsyn match perlStatementSocket\t\t\"\\<\\%(accept\\|bind\\|connect\\|get\\%(peername\\|sock\\%(name\\|opt\\)\\)\\|listen\\|recv\\|send\\|setsockopt\\|shutdown\\|socket\\%(pair\\)\\=\\)\\>\"\nsyn match perlStatementIPC\t\t\"\\<\\%(msg\\%(ctl\\|get\\|rcv\\|snd\\)\\|sem\\%(ctl\\|get\\|op\\)\\|shm\\%(ctl\\|get\\|read\\|write\\)\\)\\>\"\nsyn match perlStatementNetwork\t\t\"\\<\\%(\\%(end\\|[gs]et\\)\\%(host\\|net\\|proto\\|serv\\)ent\\|get\\%(\\%(host\\|net\\)by\\%(addr\\|name\\)\\|protoby\\%(name\\|number\\)\\|servby\\%(name\\|port\\)\\)\\)\\>\"\nsyn match perlStatementPword\t\t\"\\<\\%(get\\%(pw\\%(uid\\|nam\\)\\|gr\\%(gid\\|nam\\)\\|login\\)\\)\\|\\%(end\\|[gs]et\\)\\%(pw\\|gr\\)ent\\>\"\nsyn match perlStatementTime\t\t\"\\<\\%(gmtime\\|localtime\\|time\\)\\>\"\n\nsyn match perlStatementMisc\t\t\"\\<\\%(warn\\|format\\|formline\\|reset\\|scalar\\|prototype\\|lock\\|tied\\=\\|untie\\)\\>\"\n\nsyn keyword perlTodo\t\t\tTODO TODO: TBD TBD: FIXME FIXME: XXX XXX: NOTE NOTE: contained\n\nsyn region perlStatementIndirObjWrap   matchgroup=perlStatementIndirObj start=\"\\%(\\<\\%(map\\|grep\\|sort\\|printf\\=\\|say\\|system\\|exec\\)\\>\\s*\\)\\@<={\" end=\"}\" transparent extend\n\nsyn match perlLabel      \"^\\s*\\h\\w*\\s*::\\@!\\%(\\<v\\d\\+\\s*:\\)\\@<!\"\n\n\" Perl Identifiers.\n\"\n\" Should be cleaned up to better handle identifiers in particular situations\n\" (in hash keys for example)\n\"\n\" Plain identifiers: $foo, @foo, $#foo, %foo, &foo and dereferences $$foo, @$foo, etc.\n\" We do not process complex things such as @{${\"foo\"}}. Too complicated, and\n\" too slow. And what is after the -> is *not* considered as part of the\n\" variable - there again, too complicated and too slow.\n\n\" Special variables first ($^A, ...) and ($|, $', ...)\nsyn match  perlVarPlain\t\t \"$^[ACDEFHILMNOPRSTVWX]\\=\"\nsyn match  perlVarPlain\t\t \"$[\\\\\\\"\\[\\]'&`+*.,;=%~!?@#$<>(-]\"\nsyn match  perlVarPlain\t\t \"@[-+]\"\nsyn match  perlVarPlain\t\t \"$\\%(0\\|[1-9]\\d*\\)\"\n\" Same as above, but avoids confusion in $::foo (equivalent to $main::foo)\nsyn match  perlVarPlain\t\t \"$::\\@!\"\n\" These variables are not recognized within matches.\nsyn match  perlVarNotInMatches\t \"$[|)]\"\n\" This variable is not recognized within matches delimited by m//.\nsyn match  perlVarSlash\t\t \"$/\"\n\n\" And plain identifiers\nsyn match  perlPackageRef\t \"[$@#%*&]\\%(\\%(::\\|'\\)\\=\\I\\i*\\%(\\%(::\\|'\\)\\I\\i*\\)*\\)\\=\\%(::\\|'\\)\\I\"ms=s+1,me=e-1 contained\n\n\" To not highlight packages in variables as a scope reference - i.e. in\n\" $pack::var, pack:: is a scope, just set \"perl_no_scope_in_variables\"\n\" If you don't want complex things like @{${\"foo\"}} to be processed,\n\" just set the variable \"perl_no_extended_vars\"...\n\nif !exists(\"perl_no_scope_in_variables\")\n  syn match  perlVarPlain       \"\\%([@$]\\|\\$#\\)\\$*\\%(\\I\\i*\\)\\=\\%(\\%(::\\|'\\)\\I\\i*\\)*\\%(::\\|\\i\\@<=\\)\" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod\n  syn match  perlVarPlain2                   \"%\\$*\\%(\\I\\i*\\)\\=\\%(\\%(::\\|'\\)\\I\\i*\\)*\\%(::\\|\\i\\@<=\\)\" contains=perlPackageRef\n  syn match  perlFunctionName                \"&\\$*\\%(\\I\\i*\\)\\=\\%(\\%(::\\|'\\)\\I\\i*\\)*\\%(::\\|\\i\\@<=\\)\" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod\nelse\n  syn match  perlVarPlain       \"\\%([@$]\\|\\$#\\)\\$*\\%(\\I\\i*\\)\\=\\%(\\%(::\\|'\\)\\I\\i*\\)*\\%(::\\|\\i\\@<=\\)\" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod\n  syn match  perlVarPlain2                   \"%\\$*\\%(\\I\\i*\\)\\=\\%(\\%(::\\|'\\)\\I\\i*\\)*\\%(::\\|\\i\\@<=\\)\"\n  syn match  perlFunctionName                \"&\\$*\\%(\\I\\i*\\)\\=\\%(\\%(::\\|'\\)\\I\\i*\\)*\\%(::\\|\\i\\@<=\\)\" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod\nendif\n\nsyn match  perlVarPlain2\t \"%[-+]\"\n\nif !exists(\"perl_no_extended_vars\")\n  syn cluster perlExpr\t\tcontains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlArrow,perlBraces\n  syn region perlArrow\t\tmatchgroup=perlArrow start=\"->\\s*(\" end=\")\" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained\n  syn region perlArrow\t\tmatchgroup=perlArrow start=\"->\\s*\\[\" end=\"\\]\" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained\n  syn region perlArrow\t\tmatchgroup=perlArrow start=\"->\\s*{\" end=\"}\" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained\n  syn match  perlArrow\t\t\"->\\s*{\\s*\\I\\i*\\s*}\" contains=perlVarSimpleMemberName nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained\n  syn region perlArrow\t\tmatchgroup=perlArrow start=\"->\\s*\\$*\\I\\i*\\s*(\" end=\")\" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained\n  syn region perlVarBlock\tmatchgroup=perlVarPlain start=\"\\%($#\\|[$@]\\)\\$*{\" skip=\"\\\\}\" end=+}\\|\\%(\\%(<<\\%('\\|\"\\)\\?\\)\\@=\\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend\n  syn region perlVarBlock2\tmatchgroup=perlVarPlain start=\"[%&*]\\$*{\" skip=\"\\\\}\" end=+}\\|\\%(\\%(<<\\%('\\|\"\\)\\?\\)\\@=\\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend\n  syn match  perlVarPlain2\t\"[%&*]\\$*{\\I\\i*}\" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend\n  syn match  perlVarPlain\t\"\\%(\\$#\\|[@$]\\)\\$*{\\I\\i*}\" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend\n  syn region perlVarMember\tmatchgroup=perlVarPlain start=\"\\%(->\\)\\={\" skip=\"\\\\}\" end=\"}\" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend\n  syn match  perlVarSimpleMember\t\"\\%(->\\)\\={\\s*\\I\\i*\\s*}\" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contains=perlVarSimpleMemberName contained extend\n  syn match  perlVarSimpleMemberName\t\"\\I\\i*\" contained\n  syn region perlVarMember\tmatchgroup=perlVarPlain start=\"\\%(->\\)\\=\\[\" skip=\"\\\\]\" end=\"]\" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend\n  syn match perlPackageConst\t\"__PACKAGE__\" nextgroup=perlMethod\n  syn match  perlMethod\t\t\"->\\$*\\I\\i*\" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod\nendif\n\n\" File Descriptors\nsyn match  perlFiledescRead\t\"<\\h\\w*>\"\n\nsyn match  perlFiledescStatementComma\t\"(\\=\\s*\\<\\u\\w*\\>\\s*,\"me=e-1 transparent contained contains=perlFiledescStatement\nsyn match  perlFiledescStatementNocomma \"(\\=\\s*\\<\\u\\w*\\>\\s*[^, \\t]\"me=e-1 transparent contained contains=perlFiledescStatement\n\nsyn match  perlFiledescStatement\t\"\\<\\u\\w*\\>\" contained\n\n\" Special characters in strings and matches\nsyn match  perlSpecialString\t\"\\\\\\%(\\o\\{1,3}\\|x\\%({\\x\\+}\\|\\x\\{1,2}\\)\\|c.\\|[^cx]\\)\" contained extend\nsyn match  perlSpecialStringU2\t\"\\\\.\" extend contained contains=NONE\nsyn match  perlSpecialStringU\t\"\\\\\\\\\" contained\nsyn match  perlSpecialMatch\t\"\\\\[1-9]\" contained extend\nsyn match  perlSpecialMatch\t\"\\\\g\\%(\\d\\+\\|{\\%(-\\=\\d\\+\\|\\h\\w*\\)}\\)\" contained\nsyn match  perlSpecialMatch\t\"\\\\k\\%(<\\h\\w*>\\|'\\h\\w*'\\)\" contained\nsyn match  perlSpecialMatch\t\"{\\d\\+\\%(,\\%(\\d\\+\\)\\=\\)\\=}\" contained\nsyn match  perlSpecialMatch\t\"\\[[]-]\\=[^\\[\\]]*[]-]\\=\\]\" contained extend\nsyn match  perlSpecialMatch\t\"[+*()?.]\" contained\nsyn match  perlSpecialMatch\t\"(?[#:=!]\" contained\nsyn match  perlSpecialMatch\t\"(?[impsx]*\\%(-[imsx]\\+\\)\\=)\" contained\nsyn match  perlSpecialMatch\t\"(?\\%([-+]\\=\\d\\+\\|R\\))\" contained\nsyn match  perlSpecialMatch\t\"(?\\%(&\\|P[>=]\\)\\h\\w*)\" contained\nsyn match  perlSpecialMatch\t\"(\\*\\%(\\%(PRUNE\\|SKIP\\|THEN\\)\\%(:[^)]*\\)\\=\\|\\%(MARK\\|\\):[^)]*\\|COMMIT\\|F\\%(AIL\\)\\=\\|ACCEPT\\))\" contained\n\n\" Possible errors\n\"\n\" Highlight lines with only whitespace (only in blank delimited here documents) as errors\nsyn match  perlNotEmptyLine\t\"^\\s\\+$\" contained\n\" Highlight \"} else if (...) {\", it should be \"} else { if (...) { \" or \"} elsif (...) {\"\nsyn match perlElseIfError\t\"else\\_s*if\" containedin=perlConditional\nsyn keyword perlElseIfError\telseif containedin=perlConditional\n\n\" Variable interpolation\n\"\n\" These items are interpolated inside \"\" strings and similar constructs.\nsyn cluster perlInterpDQ\tcontains=perlSpecialString,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBlock\n\" These items are interpolated inside '' strings and similar constructs.\nsyn cluster perlInterpSQ\tcontains=perlSpecialStringU,perlSpecialStringU2\n\" These items are interpolated inside m// matches and s/// substitutions.\nsyn cluster perlInterpSlash\tcontains=perlSpecialString,perlSpecialMatch,perlVarPlain,perlVarBlock\n\" These items are interpolated inside m## matches and s### substitutions.\nsyn cluster perlInterpMatch\tcontains=@perlInterpSlash,perlVarSlash\n\n\" Shell commands\nsyn region  perlShellCommand\tmatchgroup=perlMatchStartEnd start=\"`\" end=\"`\" contains=@perlInterpDQ keepend\n\n\" Constants\n\"\n\" Numbers\nsyn match  perlNumber\t\"\\<\\%(0\\%(x\\x[[:xdigit:]_]*\\|b[01][01_]*\\|\\o[0-7_]*\\|\\)\\|[1-9][[:digit:]_]*\\)\\>\"\nsyn match  perlFloat\t\"\\<\\d[[:digit:]_]*[eE][\\-+]\\=\\d\\+\"\nsyn match  perlFloat\t\"\\<\\d[[:digit:]_]*\\.[[:digit:]_]*\\%([eE][\\-+]\\=\\d\\+\\)\\=\"\nsyn match  perlFloat    \"\\.[[:digit:]][[:digit:]_]*\\%([eE][\\-+]\\=\\d\\+\\)\\=\"\n\nsyn match  perlString\t\"\\<\\%(v\\d\\+\\%(\\.\\d\\+\\)*\\|\\d\\+\\%(\\.\\d\\+\\)\\{2,}\\)\\>\" contains=perlVStringV\nsyn match  perlVStringV\t\"\\<v\" contained\n\n\nsyn region perlParensSQ\t\tstart=+(+ end=+)+ extend contained contains=perlParensSQ,@perlInterpSQ keepend\nsyn region perlBracketsSQ\tstart=+\\[+ end=+\\]+ extend contained contains=perlBracketsSQ,@perlInterpSQ keepend\nsyn region perlBracesSQ\t\tstart=+{+ end=+}+ extend contained contains=perlBracesSQ,@perlInterpSQ keepend\nsyn region perlAnglesSQ\t\tstart=+<+ end=+>+ extend contained contains=perlAnglesSQ,@perlInterpSQ keepend\n\nsyn region perlParensDQ\t\tstart=+(+ end=+)+ extend contained contains=perlParensDQ,@perlInterpDQ keepend\nsyn region perlBracketsDQ\tstart=+\\[+ end=+\\]+ extend contained contains=perlBracketsDQ,@perlInterpDQ keepend\nsyn region perlBracesDQ\t\tstart=+{+ end=+}+ extend contained contains=perlBracesDQ,@perlInterpDQ keepend\nsyn region perlAnglesDQ\t\tstart=+<+ end=+>+ extend contained contains=perlAnglesDQ,@perlInterpDQ keepend\n\n\n\" Simple version of searches and matches\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!m\\>\\s*\\z([^[:space:]'([{<#]\\)+ end=+\\z1[msixpodualgc]*+ contains=@perlInterpMatch keepend extend\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!m#+ end=+#[msixpodualgc]*+ contains=@perlInterpMatch keepend extend\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!m\\s*'+ end=+'[msixpodualgc]*+ contains=@perlInterpSQ keepend extend\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!m\\s*/+ end=+/[msixpodualgc]*+ contains=@perlInterpSlash keepend extend\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!m\\s*(+ end=+)[msixpodualgc]*+ contains=@perlInterpMatch,perlParensDQ keepend extend\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!m\\s*{+ end=+}[msixpodualgc]*+ contains=@perlInterpMatch,perlBracesDQ extend\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!m\\s*<+ end=+>[msixpodualgc]*+ contains=@perlInterpMatch,perlAnglesDQ keepend extend\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!m\\s*\\[+ end=+\\][msixpodualgc]*+ contains=@perlInterpMatch,perlBracketsDQ keepend extend\n\n\" Below some hacks to recognise the // variant. This is virtually impossible to catch in all\n\" cases as the / is used in so many other ways, but these should be the most obvious ones.\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=\"\\%([$@%&*]\\@<!\\%(\\<split\\|\\<while\\|\\<if\\|\\<unless\\|\\.\\.\\|[-+*!~(\\[{=]\\)\\s*\\)\\@<=/\\%(/=\\)\\@!\" start=+^/\\%(/=\\)\\@!+ start=+\\s\\@<=/\\%(/=\\)\\@![^[:space:][:digit:]$@%=]\\@=\\%(/\\_s*\\%([([{$@%&*[:digit:]\"'`]\\|\\_s\\w\\|[[:upper:]_abd-fhjklnqrt-wyz]\\)\\)\\@!+ skip=+\\\\/+ end=+/[msixpodualgc]*+ contains=@perlInterpSlash extend\n\n\n\" Substitutions\n\" perlMatch is the first part, perlSubstitution* is the substitution part\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!s\\>\\s*\\z([^[:space:]'([{<#]\\)+ end=+\\z1+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend extend\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!s\\s*'+  end=+'+me=e-1 contains=@perlInterpSQ nextgroup=perlSubstitutionSQ keepend extend\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!s\\s*/+  end=+/+me=e-1 contains=@perlInterpSlash nextgroup=perlSubstitutionGQQ keepend extend\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!s#+  end=+#+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend extend\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!s\\s*(+ end=+)+ contains=@perlInterpMatch,perlParensDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!s\\s*<+ end=+>+ contains=@perlInterpMatch,perlAnglesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!s\\s*\\[+ end=+\\]+ contains=@perlInterpMatch,perlBracketsDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!s\\s*{+ end=+}+ contains=@perlInterpMatch,perlBracesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend\nsyn region perlSubstitutionGQQ\t\tmatchgroup=perlMatchStartEnd start=+\\z([^[:space:]'([{<]\\)+ end=+\\z1[msixpodualgcer]*+ keepend contained contains=@perlInterpDQ extend\nsyn region perlSubstitutionGQQ\t\tmatchgroup=perlMatchStartEnd start=+(+ end=+)[msixpodualgcer]*+ contained contains=@perlInterpDQ,perlParensDQ keepend extend\nsyn region perlSubstitutionGQQ\t\tmatchgroup=perlMatchStartEnd start=+\\[+ end=+\\][msixpodualgcer]*+ contained contains=@perlInterpDQ,perlBracketsDQ keepend extend\nsyn region perlSubstitutionGQQ\t\tmatchgroup=perlMatchStartEnd start=+{+ end=+}[msixpodualgcer]*+ contained contains=@perlInterpDQ,perlBracesDQ keepend extend extend\nsyn region perlSubstitutionGQQ\t\tmatchgroup=perlMatchStartEnd start=+<+ end=+>[msixpodualgcer]*+ contained contains=@perlInterpDQ,perlAnglesDQ keepend extend\nsyn region perlSubstitutionSQ\t\tmatchgroup=perlMatchStartEnd start=+'+  end=+'[msixpodualgcer]*+ contained contains=@perlInterpSQ keepend extend\n\n\" Translations\n\" perlMatch is the first part, perlTranslation* is the second, translator part.\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!\\%(tr\\|y\\)\\>\\s*\\z([^[:space:]([{<#]\\)+ end=+\\z1+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!\\%(tr\\|y\\)#+ end=+#+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!\\%(tr\\|y\\)\\s*\\[+ end=+\\]+ contains=@perlInterpSQ,perlBracketsSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!\\%(tr\\|y\\)\\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!\\%(tr\\|y\\)\\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl\nsyn region perlMatch\tmatchgroup=perlMatchStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!\\%(tr\\|y\\)\\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl\nsyn region perlTranslationGQ\t\tmatchgroup=perlMatchStartEnd start=+\\z([^[:space:]([{<]\\)+ end=+\\z1[cdsr]*+ contained\nsyn region perlTranslationGQ\t\tmatchgroup=perlMatchStartEnd start=+(+ end=+)[cdsr]*+ contains=perlParensSQ contained\nsyn region perlTranslationGQ\t\tmatchgroup=perlMatchStartEnd start=+\\[+ end=+\\][cdsr]*+ contains=perlBracketsSQ contained\nsyn region perlTranslationGQ\t\tmatchgroup=perlMatchStartEnd start=+{+ end=+}[cdsr]*+ contains=perlBracesSQ contained\nsyn region perlTranslationGQ\t\tmatchgroup=perlMatchStartEnd start=+<+ end=+>[cdsr]*+ contains=perlAnglesSQ contained\n\n\n\" Strings and q, qq, qw and qr expressions\n\nsyn region perlStringUnexpanded\tmatchgroup=perlStringStartEnd start=\"'\" end=\"'\" contains=@perlInterpSQ keepend extend\nsyn region perlString\t\tmatchgroup=perlStringStartEnd start=+\"+  end=+\"+ contains=@perlInterpDQ keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!q\\>\\s*\\z([^[:space:]#([{<]\\)+ end=+\\z1+ contains=@perlInterpSQ keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!q#+ end=+#+ contains=@perlInterpSQ keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!q\\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!q\\s*\\[+ end=+\\]+ contains=@perlInterpSQ,perlBracketsSQ keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!q\\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!q\\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ keepend extend\n\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!q[qx]\\>\\s*\\z([^[:space:]#([{<]\\)+ end=+\\z1+ contains=@perlInterpDQ keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!q[qx]#+ end=+#+ contains=@perlInterpDQ keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!q[qx]\\s*(+ end=+)+ contains=@perlInterpDQ,perlParensDQ keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!q[qx]\\s*\\[+ end=+\\]+ contains=@perlInterpDQ,perlBracketsDQ keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!q[qx]\\s*{+ end=+}+ contains=@perlInterpDQ,perlBracesDQ keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!q[qx]\\s*<+ end=+>+ contains=@perlInterpDQ,perlAnglesDQ keepend extend\n\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!qw\\s*\\z([^[:space:]#([{<]\\)+  end=+\\z1+ contains=@perlInterpSQ keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!qw#+  end=+#+ contains=@perlInterpSQ keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!qw\\s*(+  end=+)+ contains=@perlInterpSQ,perlParensSQ keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!qw\\s*\\[+  end=+\\]+ contains=@perlInterpSQ,perlBracketsSQ keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!qw\\s*{+  end=+}+ contains=@perlInterpSQ,perlBracesSQ keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!qw\\s*<+  end=+>+ contains=@perlInterpSQ,perlAnglesSQ keepend extend\n\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!qr\\>\\s*\\z([^[:space:]#([{<'/]\\)+  end=+\\z1[imosx]*+ contains=@perlInterpMatch keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!qr\\s*/+  end=+/[imosx]*+ contains=@perlInterpSlash keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!qr#+  end=+#[imosx]*+ contains=@perlInterpMatch keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!qr\\s*'+  end=+'[imosx]*+ contains=@perlInterpSQ keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!qr\\s*(+  end=+)[imosx]*+ contains=@perlInterpMatch,perlParensDQ keepend extend\n\n\" A special case for qr{}, qr<> and qr[] which allows for comments and extra whitespace in the pattern\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!qr\\s*{+  end=+}[imosx]*+ contains=@perlInterpMatch,perlBracesDQ,perlComment keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!qr\\s*<+  end=+>[imosx]*+ contains=@perlInterpMatch,perlAnglesDQ,perlComment keepend extend\nsyn region perlQQ\t\tmatchgroup=perlStringStartEnd start=+\\<\\%(::\\|'\\|->\\)\\@<!qr\\s*\\[+  end=+\\][imosx]*+ contains=@perlInterpMatch,perlBracketsDQ,perlComment keepend extend\n\n\" Constructs such as print <<EOF [...] EOF, 'here' documents\n\"\n\" XXX Any statements after the identifier are in perlString colour (i.e.\n\" 'if $a' in 'print <<EOF if $a'). This is almost impossible to get right it\n\" seems due to the 'auto-extending nature' of regions.\nif exists(\"perl_fold\")\n  syn region perlHereDoc\tmatchgroup=perlStringStartEnd start=+<<\\z(\\I\\i*\\).*+    end=+^\\z1$+ contains=@perlInterpDQ fold extend\n  syn region perlHereDoc\tmatchgroup=perlStringStartEnd start=+<<\\s*\"\\z([^\\\\\"]*\\%(\\\\.[^\\\\\"]*\\)*\\)\"+ end=+^\\z1$+ contains=@perlInterpDQ fold extend\n  syn region perlHereDoc\tmatchgroup=perlStringStartEnd start=+<<\\s*'\\z([^\\\\']*\\%(\\\\.[^\\\\']*\\)*\\)'+ end=+^\\z1$+ contains=@perlInterpSQ fold extend\n  syn region perlHereDoc\tmatchgroup=perlStringStartEnd start=+<<\\s*\"\"+           end=+^$+    contains=@perlInterpDQ,perlNotEmptyLine fold extend\n  syn region perlHereDoc\tmatchgroup=perlStringStartEnd start=+<<\\s*''+           end=+^$+    contains=@perlInterpSQ,perlNotEmptyLine fold extend\n  syn region perlAutoload\tmatchgroup=perlStringStartEnd start=+<<\\s*\\(['\"]\\=\\)\\z(END_\\%(SUB\\|OF_FUNC\\|OF_AUTOLOAD\\)\\)\\1+ end=+^\\z1$+ contains=ALL fold extend\nelse\n  syn region perlHereDoc\tmatchgroup=perlStringStartEnd start=+<<\\z(\\I\\i*\\).*+    end=+^\\z1$+ contains=@perlInterpDQ\n  syn region perlHereDoc\tmatchgroup=perlStringStartEnd start=+<<\\s*\"\\z([^\\\\\"]*\\%(\\\\.[^\\\\\"]*\\)*\\)\"+ end=+^\\z1$+ contains=@perlInterpDQ\n  syn region perlHereDoc\tmatchgroup=perlStringStartEnd start=+<<\\s*'\\z([^\\\\']*\\%(\\\\.[^\\\\']*\\)*\\)'+ end=+^\\z1$+ contains=@perlInterpSQ\n  syn region perlHereDoc\tmatchgroup=perlStringStartEnd start=+<<\\s*\"\"+           end=+^$+    contains=@perlInterpDQ,perlNotEmptyLine\n  syn region perlHereDoc\tmatchgroup=perlStringStartEnd start=+<<\\s*''+           end=+^$+    contains=@perlInterpSQ,perlNotEmptyLine\n  syn region perlAutoload\tmatchgroup=perlStringStartEnd start=+<<\\s*\\(['\"]\\=\\)\\z(END_\\%(SUB\\|OF_FUNC\\|OF_AUTOLOAD\\)\\)\\1+ end=+^\\z1$+ contains=ALL\nendif\n\n\n\" Class declarations\n\"\nsyn match   perlPackageDecl\t\t\"\\<package\\s\\+\\%(\\h\\|::\\)\\%(\\w\\|::\\)*\" contains=perlStatementPackage\nsyn keyword perlStatementPackage\tpackage contained\n\n\" Functions\n\"       sub [name] [(prototype)] {\n\"\nsyn match perlSubError \"[^[:space:];{#]\" contained\nif v:version == 701 && !has('patch221')  \" XXX I hope that's the right one\n    syn match perlSubAttributes \":\" contained\nelse\n    syn match perlSubAttributesCont \"\\h\\w*\\_s*\\%(:\\_s*\\)\\=\" nextgroup=@perlSubAttrMaybe contained\n    syn region perlSubAttributesCont matchgroup=perlSubAttributesCont start=\"\\h\\w*(\" end=\")\\_s*\\%(:\\_s*\\)\\=\" nextgroup=@perlSubAttrMaybe contained contains=@perlInterpSQ,perlParensSQ\n    syn cluster perlSubAttrMaybe contains=perlSubAttributesCont,perlSubError,perlFakeGroup\n    syn match perlSubAttributes \"\" contained nextgroup=perlSubError\n    syn match perlSubAttributes \":\\_s*\" contained nextgroup=@perlSubAttrMaybe\nendif\nif !exists(\"perl_no_subprototype_error\") \" Set 1 if using signatures feature in perl5.19.9\n    syn match perlSubPrototypeError \"(\\%(\\_s*\\%(\\%(\\\\\\%([$@%&*]\\|\\[[$@%&*]\\+\\]\\)\\|[$&*]\\|[@%]\\%(\\_s*)\\)\\@=\\|;\\%(\\_s*[)$@%&*\\\\]\\)\\@=\\|_\\%(\\_s*[);]\\)\\@=\\)\\_s*\\)*\\)\\@>\\zs\\_[^)]\\+\" contained\n    syn match perlSubPrototype +(\\_[^)]*)\\_s*\\|+ nextgroup=perlSubAttributes,perlComment contained contains=perlSubPrototypeError\nendif\nsyn match perlSubName +\\%(\\h\\|::\\|'\\w\\)\\%(\\w\\|::\\|'\\w\\)*\\_s*\\|+ contained nextgroup=perlSubPrototype,perlComment\n\nsyn match perlFunction +\\<sub\\>\\_s*+ nextgroup=perlSubName\n\n\" The => operator forces a bareword to the left of it to be interpreted as\n\" a string\nsyn match  perlString \"\\I\\@<!-\\?\\I\\i*\\%(\\s*=>\\)\\@=\"\n\n\" All other # are comments, except ^#!\nsyn match  perlComment\t\t\"#.*\" contains=perlTodo,@Spell extend\nsyn match  perlSharpBang\t\"^#!.*\"\n\n\" Formats\nsyn region perlFormat\t\tmatchgroup=perlStatementIOFunc start=\"^\\s*\\<format\\s\\+\\k\\+\\s*=\\s*$\"rs=s+6 end=\"^\\s*\\.\\s*$\" contains=perlFormatName,perlFormatField,perlVarPlain,perlVarPlain2\nsyn match  perlFormatName\t\"format\\s\\+\\k\\+\\s*=\"lc=7,me=e-1 contained\nsyn match  perlFormatField\t\"[@^][|<>~]\\+\\%(\\.\\.\\.\\)\\=\" contained\nsyn match  perlFormatField\t\"[@^]#[#.]*\" contained\nsyn match  perlFormatField\t\"@\\*\" contained\nsyn match  perlFormatField\t\"@[^A-Za-z_|<>~#*]\"me=e-1 contained\nsyn match  perlFormatField\t\"@$\" contained\n\n\" __END__ and __DATA__ clauses\nif exists(\"perl_fold\")\n  syntax region perlDATA\t\tstart=\"^__DATA__$\" skip=\".\" end=\".\" fold\n  syntax region perlDATA\t\tstart=\"^__END__$\" skip=\".\" end=\".\" contains=perlPOD,@perlDATA fold\nelse\n  syntax region perlDATA\t\tstart=\"^__DATA__$\" skip=\".\" end=\".\"\n  syntax region perlDATA\t\tstart=\"^__END__$\" skip=\".\" end=\".\" contains=perlPOD,@perlDATA\nendif\n\n\"\n\" Folding\n\nif exists(\"perl_fold\")\n  \" Note: this bit must come before the actual highlighting of the \"package\"\n  \" keyword, otherwise this will screw up Pod lines that match /^package/\n  if !exists(\"perl_nofold_packages\")\n    syn region perlPackageFold start=\"^package \\S\\+;\\s*\\%(#.*\\)\\=$\" end=\"^1;\\=\\s*\\%(#.*\\)\\=$\" end=\"\\n\\+package\"me=s-1 transparent fold keepend\n  endif\n  if !exists(\"perl_nofold_subs\")\n    if exists(\"perl_fold_anonymous_subs\") && perl_fold_anonymous_subs\n      syn region perlSubFold     start=\"\\<sub\\>[^;]*{\" end=\"}\" transparent fold keepend extend\n      syn region perlSubFold     start=\"\\<\\%(BEGIN\\|END\\|CHECK\\|INIT\\)\\>\\s*{\" end=\"}\" transparent fold keepend\n    else\n      syn region perlSubFold     start=\"^\\z(\\s*\\)\\<sub\\>.*[^};]$\" end=\"^\\z1}\\s*\\%(#.*\\)\\=$\" transparent fold keepend\n      syn region perlSubFold start=\"^\\z(\\s*\\)\\<\\%(BEGIN\\|END\\|CHECK\\|INIT\\|UNITCHECK\\)\\>.*[^};]$\" end=\"^\\z1}\\s*$\" transparent fold keepend\n    endif\n  endif\n\n  if exists(\"perl_fold_blocks\")\n    syn region perlBlockFold start=\"^\\z(\\s*\\)\\%(if\\|elsif\\|unless\\|for\\|while\\|until\\|given\\)\\s*(.*)\\%(\\s*{\\)\\=\\s*\\%(#.*\\)\\=$\" start=\"^\\z(\\s*\\)foreach\\s*\\%(\\%(my\\|our\\)\\=\\s*\\S\\+\\s*\\)\\=(.*)\\%(\\s*{\\)\\=\\s*\\%(#.*\\)\\=$\" end=\"^\\z1}\\s*;\\=\\%(#.*\\)\\=$\" transparent fold keepend\n    syn region perlBlockFold start=\"^\\z(\\s*\\)\\%(do\\|else\\)\\%(\\s*{\\)\\=\\s*\\%(#.*\\)\\=$\" end=\"^\\z1}\\s*while\" end=\"^\\z1}\\s*;\\=\\%(#.*\\)\\=$\" transparent fold keepend\n  endif\n\n  setlocal foldmethod=syntax\n  syn sync fromstart\nelse\n  \" fromstart above seems to set minlines even if perl_fold is not set.\n  syn sync minlines=0\nendif\n\ncommand -nargs=+ HiLink hi def link <args>\n\n\" NOTE: If you're linking new highlight groups to perlString, please also put\n\"       them into b:match_skip in ftplugin/perl.vim.\n\n\" The default highlighting.\nHiLink perlSharpBang\t\tPreProc\nHiLink perlControl\t\tPreProc\nHiLink perlInclude\t\tInclude\nHiLink perlSpecial\t\tSpecial\nHiLink perlString\t\tString\nHiLink perlCharacter\t\tCharacter\nHiLink perlNumber\t\tNumber\nHiLink perlFloat\t\tFloat\nHiLink perlType\t\t\tType\nHiLink perlIdentifier\t\tIdentifier\nHiLink perlLabel\t\tLabel\nHiLink perlStatement\t\tStatement\nHiLink perlConditional\t\tConditional\nHiLink perlRepeat\t\tRepeat\nHiLink perlOperator\t\tOperator\nHiLink perlFunction\t\tKeyword\nHiLink perlSubName\t\tFunction\nHiLink perlSubPrototype\t\tType\nHiLink perlSubAttributes\tPreProc\nHiLink perlSubAttributesCont\tperlSubAttributes\nHiLink perlComment\t\tComment\nHiLink perlTodo\t\t\tTodo\nif exists(\"perl_string_as_statement\")\n  HiLink perlStringStartEnd\tperlStatement\nelse\n  HiLink perlStringStartEnd\tperlString\nendif\nHiLink perlVStringV\t\tperlStringStartEnd\nHiLink perlList\t\t\tperlStatement\nHiLink perlMisc\t\t\tperlStatement\nHiLink perlVarPlain\t\tperlIdentifier\nHiLink perlVarPlain2\t\tperlIdentifier\nHiLink perlArrow\t\tperlIdentifier\nHiLink perlFiledescRead\t\tperlIdentifier\nHiLink perlFiledescStatement\tperlIdentifier\nHiLink perlVarSimpleMember\tperlIdentifier\nHiLink perlVarSimpleMemberName \tperlString\nHiLink perlVarNotInMatches\tperlIdentifier\nHiLink perlVarSlash\t\tperlIdentifier\nHiLink perlQQ\t\t\tperlString\nHiLink perlHereDoc\t\tperlString\nHiLink perlStringUnexpanded\tperlString\nHiLink perlSubstitutionSQ\tperlString\nHiLink perlSubstitutionGQQ\tperlString\nHiLink perlTranslationGQ\tperlString\nHiLink perlMatch\t\tperlString\nHiLink perlMatchStartEnd\tperlStatement\nHiLink perlFormatName\t\tperlIdentifier\nHiLink perlFormatField\t\tperlString\nHiLink perlPackageDecl\t\tperlType\nHiLink perlStorageClass\t\tperlType\nHiLink perlPackageRef\t\tperlType\nHiLink perlStatementPackage\tperlStatement\nHiLink perlStatementStorage\tperlStatement\nHiLink perlStatementControl\tperlStatement\nHiLink perlStatementScalar\tperlStatement\nHiLink perlStatementRegexp\tperlStatement\nHiLink perlStatementNumeric\tperlStatement\nHiLink perlStatementList\tperlStatement\nHiLink perlStatementHash\tperlStatement\nHiLink perlStatementIOfunc\tperlStatement\nHiLink perlStatementFiledesc\tperlStatement\nHiLink perlStatementVector\tperlStatement\nHiLink perlStatementFiles\tperlStatement\nHiLink perlStatementFlow\tperlStatement\nHiLink perlStatementInclude\tperlStatement\nHiLink perlStatementProc\tperlStatement\nHiLink perlStatementSocket\tperlStatement\nHiLink perlStatementIPC\t\tperlStatement\nHiLink perlStatementNetwork\tperlStatement\nHiLink perlStatementPword\tperlStatement\nHiLink perlStatementTime\tperlStatement\nHiLink perlStatementMisc\tperlStatement\nHiLink perlStatementIndirObj\tperlStatement\nHiLink perlFunctionName\t\tperlIdentifier\nHiLink perlMethod\t\tperlIdentifier\nHiLink perlFunctionPRef\t\tperlType\nif !get(g:, 'perl_include_pod', 1)\n  HiLink perlPOD\t\tperlComment\nendif\nHiLink perlShellCommand\t\tperlString\nHiLink perlSpecialAscii\t\tperlSpecial\nHiLink perlSpecialDollar\tperlSpecial\nHiLink perlSpecialString\tperlSpecial\nHiLink perlSpecialStringU\tperlSpecial\nHiLink perlSpecialMatch\t\tperlSpecial\nHiLink perlDATA\t\t\tperlComment\n\n\" NOTE: Due to a bug in Vim (or more likely, a misunderstanding on my part),\n\"       I had to remove the transparent property from the following regions\n\"       in order to get them to highlight correctly.  Feel free to remove\n\"       these and reinstate the transparent property if you know how.\nHiLink perlParensSQ\t\tperlString\nHiLink perlBracketsSQ\t\tperlString\nHiLink perlBracesSQ\t\tperlString\nHiLink perlAnglesSQ\t\tperlString\n\nHiLink perlParensDQ\t\tperlString\nHiLink perlBracketsDQ\t\tperlString\nHiLink perlBracesDQ\t\tperlString\nHiLink perlAnglesDQ\t\tperlString\n\nHiLink perlSpecialStringU2\tperlString\n\n\" Possible errors\nHiLink perlNotEmptyLine\t\tError\nHiLink perlElseIfError\t\tError\nHiLink perlSubPrototypeError\tError\nHiLink perlSubError\t\tError\n\ndelcommand HiLink\n\n\" Syncing to speed up processing\n\"\nif !exists(\"perl_no_sync_on_sub\")\n  syn sync match perlSync\tgrouphere NONE \"^\\s*\\<package\\s\"\n  syn sync match perlSync\tgrouphere NONE \"^\\s*\\<sub\\>\"\n  syn sync match perlSync\tgrouphere NONE \"^}\"\nendif\n\nif !exists(\"perl_no_sync_on_global_var\")\n  syn sync match perlSync\tgrouphere NONE \"^$\\I[[:alnum:]_:]+\\s*=\\s*{\"\n  syn sync match perlSync\tgrouphere NONE \"^[@%]\\I[[:alnum:]_:]+\\s*=\\s*(\"\nendif\n\nif exists(\"perl_sync_dist\")\n  execute \"syn sync maxlines=\" . perl_sync_dist\nelse\n  syn sync maxlines=100\nendif\n\nsyn sync match perlSyncPOD\tgrouphere perlPOD \"^=pod\"\nsyn sync match perlSyncPOD\tgrouphere perlPOD \"^=head\"\nsyn sync match perlSyncPOD\tgrouphere perlPOD \"^=item\"\nsyn sync match perlSyncPOD\tgrouphere NONE \"^=cut\"\n\nlet b:current_syntax = \"perl\"\n\nif exists('&regexpengine')\n  let &regexpengine=s:regexpengine\n  unlet s:regexpengine\nendif\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" XXX Change to sts=4:sw=4\n\" vim:ts=8:sts=2:sw=2:expandtab:ft=vim\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/perl6.vim",
    "content": "\" Vim syntax file\n\" Language:      Perl 6\n\" Maintainer:    vim-perl <vim-perl@googlegroups.com>\n\" Homepage:      http://github.com/vim-perl/vim-perl/tree/master\n\" Bugs/requests: http://github.com/vim-perl/vim-perl/issues\n\" Last Change:   {{LAST_CHANGE}}\n\n\" Contributors:  Luke Palmer <fibonaci@babylonia.flatirons.org>\n\"                Moritz Lenz <moritz@faui2k3.org>\n\"                Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>\n\"\n\" This is a big undertaking. Perl 6 is the sort of language that only Perl\n\" can parse. But I'll do my best to get vim to.\n\"\n\" You can associate the extension \".pl\" with the filetype \"perl6\" by setting\n\"     autocmd BufNewFile,BufRead *.pl setf perl6\n\" in your ~/.vimrc. But that will infringe on Perl 5, so you might want to\n\" put a modeline near the beginning or end of your Perl 6 files instead:\n\"     # vim: filetype=perl6\n\n\" TODO:\n\"   * Deal with s:Perl5//\n\"   * m:s// is a match, not a substitution\n\"   * Make these highlight as strings, not operators:\n\"       <==> <=:=> <===> <=~> <« »> «>» «<»\n\"   * Allow more keywords to match as function calls(leave() is export(), etc)\n\"   * Optimization: use nextgroup instead of lookaround (:help syn-nextgroup)\n\"   * Fix s''' substitutions being matched as package names\n\"   * Match s/// and m/// better, so things like \"$s/\" won't match\n\"   * Add more support for folding (:help syn-fold)\n\"   * Add more syntax syncing hooks (:help syn-sync)\n\"   * Q//:\n\"       :to, :heredoc\n\"       interpolate \\q:s{$scalar} (though the spec isn't very clear on it)\n\"\n\" Impossible TODO?:\n\"   * Unspace\n\"   * Unicode bracketing characters for quoting (there are so many)\n\"   * Various tricks depending on context. I.e. we can't know when Perl\n\"     expects «*» to be a string or a hyperoperator. The latter is presumably\n\"     more common, so that's what we assume.\n\"   * Selective highlighting of Pod formatting codes with the :allow option\n\"   * Arbitrary number, order, and negation of adverbs to Q//, q//, qq//.\n\"     Currently only the first adverb is considered significant. Anything\n\"     more would require an exponential amount of regexes, making this\n\"     already slow syntax file even slower.\n\"\n\" If you want to have Pir code inside Q:PIR// strings highlighted, do:\n\"  let perl6_embedded_pir=1\n\"\n\" The above requires pir.vim, which you can find in Parrot's repository:\n\" https://svn.parrot.org/parrot/trunk/editor/\n\"\n\" Some less than crucial things have been made optional to speed things up.\n\" Look at the comments near the if/else branches in this file to see exactly\n\" which features are affected. \"perl6_extended_all\" enables everything.\n\"\n\" The defaults are:\n\"\n\"  unlet perl6_extended_comments\n\"  unlet perl6_extended_q\n\"  unlet perl6_extended_all\n\n\" For version 5.x: Clear all syntax items\n\" For version 6.x: Quit when a syntax file was already loaded\nif version < 600\n    syntax clear\nelseif exists(\"b:current_syntax\")\n    finish\nendif\nlet s:keepcpo= &cpo\nset cpo&vim\n\n\" identifiers\nsyn match p6Normal display \"\\K\\%(\\k\\|[-']\\K\\@=\\)*\"\n\n\" This is used in the for loops below\n\" Don't use the \"syn keyword\" construct because that always has higher\n\" priority than matches/regions, so the words can't be autoquoted with\n\" the \"=>\" and \"p5=>\" operators. All the lookaround stuff is to make sure\n\" we don't match them as part of some other identifier.\nlet s:before_keyword = \" display \\\"\\\\%(\\\\k\\\\|\\\\K\\\\@<=[-']\\\\)\\\\@<!\\\\%(\"\nlet s:after_keyword = \"\\\\)\\\\%(\\\\k\\\\|[-']\\\\K\\\\@=\\\\)\\\\@!\\\"\"\n\n\" Billions of keywords\nlet s:keywords = {\n \\ \"p6Attention\": [\n \\   \"ACHTUNG ATTN ATTENTION FIXME NB TODO TBD WTF XXX NOTE\",\n \\ ],\n \\ \"p6DeclareRoutine\": [\n \\   \"macro sub submethod method multi proto only rule token regex category\",\n \\ ],\n \\ \"p6Module\": [\n \\   \"module class role package enum grammar slang subset\",\n \\ ],\n \\ \"p6Variable\": [\n \\   \"self\",\n \\ ],\n \\ \"p6Include\": [\n \\   \"use require\",\n \\ ],\n \\ \"p6Conditional\": [\n \\   \"if else elsif unless\",\n \\ ],\n \\ \"p6VarStorage\": [\n \\   \"let my our state temp has constant\",\n \\ ],\n \\ \"p6Repeat\": [\n \\   \"for loop repeat while until gather given\",\n \\ ],\n \\ \"p6FlowControl\": [\n \\   \"take do when next last redo return contend maybe defer\",\n \\   \"default exit make continue break goto leave async lift\",\n \\ ],\n \\ \"p6TypeConstraint\": [\n \\   \"is as but trusts of returns handles where augment supersede\",\n \\ ],\n \\ \"p6ClosureTrait\": [\n \\   \"BEGIN CHECK INIT START FIRST ENTER LEAVE KEEP\",\n \\   \"UNDO NEXT LAST PRE POST END CATCH CONTROL TEMP\",\n \\ ],\n \\ \"p6Exception\": [\n \\   \"die fail try warn\",\n \\ ],\n \\ \"p6Property\": [\n \\   \"prec irs ofs ors export deep binary unary reparsed rw parsed cached\",\n \\   \"readonly defequiv will ref copy inline tighter looser equiv assoc\",\n \\   \"required\",\n \\ ],\n \\ \"p6Number\": [\n \\   \"NaN Inf\",\n \\ ],\n \\ \"p6Pragma\": [\n \\   \"oo fatal\",\n \\ ],\n \\ \"p6Type\": [\n \\   \"Object Any Junction Whatever Capture Match\",\n \\   \"Signature Proxy Matcher Package Module Class\",\n \\   \"Grammar Scalar Array Hash KeyHash KeySet KeyBag\",\n \\   \"Pair List Seq Range Set Bag Mapping Void Undef\",\n \\   \"Failure Exception Code Block Routine Sub Macro\",\n \\   \"Method Submethod Regex Str Blob Char Byte\",\n \\   \"Codepoint Grapheme StrPos StrLen Version Num\",\n \\   \"Complex num complex Bit bit bool True False\",\n \\   \"Increasing Decreasing Ordered Callable AnyChar\",\n \\   \"Positional Associative Ordering KeyExtractor\",\n \\   \"Comparator OrderingPair IO KitchenSink Role\",\n \\   \"Int int int1 int2 int4 int8 int16 int32 int64\",\n \\   \"Rat rat rat1 rat2 rat4 rat8 rat16 rat32 rat64\",\n \\   \"Buf buf buf1 buf2 buf4 buf8 buf16 buf32 buf64\",\n \\   \"UInt uint uint1 uint2 uint4 uint8 uint16 uint32\",\n \\   \"uint64 Abstraction utf8 utf16 utf32\",\n \\ ],\n \\ \"p6Operator\": [\n \\   \"div x xx mod also leg cmp before after eq ne le lt\",\n \\   \"gt ge eqv ff fff and andthen Z X or xor\",\n \\   \"orelse extra m mm rx s tr\",\n \\ ],\n\\ }\n\nfor [group, words] in items(s:keywords)\n    let s:words_space = join(words, \" \")\n    let s:temp = split(s:words_space)\n    let s:words = join(s:temp, \"\\\\|\")\n    exec \"syn match \". group .\" \". s:before_keyword . s:words . s:after_keyword\nendfor\nunlet s:keywords s:words_space s:temp s:words\n\n\" More operators\n\" Don't put a \"\\+\" at the end of the character class. That makes it so\n\" greedy that the \"%\" \" in \"+%foo\" won't be allowed to match as a sigil,\n\" among other things\nsyn match p6Operator display \"[-+/*~?|=^!%&,<>.;\\\\]\"\nsyn match p6Operator display \"\\%(:\\@<!::\\@!\\|::=\\|\\.::\\)\"\n\" these require whitespace on the left side\nsyn match p6Operator display \"\\%(\\s\\|^\\)\\@<=\\%(xx=\\|p5=>\\)\"\n\" \"i\" requires a digit to the left, and no keyword char to the right\nsyn match p6Operator display \"\\d\\@<=i\\k\\@!\"\n\" index overloading\nsyn match p6Operator display \"\\%(&\\.(\\@=\\|@\\.\\[\\@=\\|%\\.{\\@=\\)\"\n\n\" all infix operators except nonassocative ones\nlet s:infix_a = [\n    \\ \"div % mod +& +< +> \\\\~& ?& \\\\~< \\\\~> +| +\\\\^ \\\\~| \\\\~\\\\^ ?| ?\\\\^ xx x\",\n    \\ \"\\\\~ && & also <== ==> <<== ==>> == != < <= > >= \\\\~\\\\~ eq ne lt le gt\",\n    \\ \"ge =:= === eqv before after \\\\^\\\\^ min max \\\\^ff ff\\\\^ \\\\^ff\\\\^\",\n    \\ \"\\\\^fff fff\\\\^ \\\\^fff\\\\^ fff ff ::= := \\\\.= => , : p5=> Z minmax\",\n    \\ \"\\\\.\\\\.\\\\. and andthen or orelse xor \\\\^ += -= /= \\\\*= \\\\~= //= ||=\",\n    \\ \"+ - \\\\*\\\\* \\\\* // / \\\\~ || |\",\n\\ ]\n\" nonassociative infix operators\nlet s:infix_n = \"but does <=> leg cmp \\\\.\\\\. \\\\.\\\\.\\\\^\\\\^ \\\\^\\\\.\\\\. \\\\^\\\\.\\\\.\\\\^\"\n\nlet s:infix_a_long = join(s:infix_a, \" \")\nlet s:infix_a_words = split(s:infix_a_long)\nlet s:infix_a_pattern = join(s:infix_a_words, \"\\\\|\")\n\nlet s:infix_n_words = split(s:infix_n)\nlet s:infix_n_pattern = join(s:infix_n_words, \"\\\\|\")\n\nlet s:both = [s:infix_a_pattern, s:infix_n_pattern]\nlet s:infix = join(s:both, \"\\\\|\")\n\nlet s:infix_assoc = \"!\\\\?\\\\%(\" . s:infix_a_pattern . \"\\\\)\"\nlet s:infix = \"!\\\\?\\\\%(\" . s:infix . \"\\\\)\"\n\nunlet s:infix_a s:infix_a_long s:infix_a_words s:infix_a_pattern\nunlet s:infix_n s:infix_n_pattern s:both\n\n\" [+] reduce\nexec \"syn match p6ReduceOp display \\\"\\\\k\\\\@<!\\\\[[R\\\\\\\\]\\\\?!\\\\?\". s:infix_assoc .\"]\\\\%(«\\\\|<<\\\\)\\\\?\\\"\"\nunlet s:infix_assoc\n\n\" Reverse and cross operators (Rop, Xop)\nexec \"syn match p6ReverseCrossOp display \\\"[RX]\". s:infix .\"\\\"\"\n\n\" q() or whatever() is always a function call\nsyn match p6Normal display \"\\K\\%(\\k\\|[-']\\K\\@=\\)*(\\@=\"\n\n\" basically all builtins that can be followed by parentheses\nlet s:routines = [\n \\ \"eager hyper substr index rindex grep map sort join lines hints chmod\",\n \\ \"split reduce min max reverse truncate zip cat roundrobin classify\",\n \\ \"first sum keys values pairs defined delete exists elems end kv any\",\n \\ \"all one wrap shape key value name pop push shift splice unshift floor\",\n \\ \"ceiling abs exp log log10 rand sign sqrt sin cos tan round strand\",\n \\ \"roots cis unpolar polar atan2 pick chop p5chop chomp p5chomp lc\",\n \\ \"lcfirst uc ucfirst capitalize normalize pack unpack quotemeta comb\",\n \\ \"samecase sameaccent chars nfd nfc nfkd nfkc printf sprintf caller\",\n \\ \"evalfile run runinstead nothing want bless chr ord gmtime time eof\",\n \\ \"localtime gethost getpw chroot getlogin getpeername kill fork wait\",\n \\ \"perl graphs codes bytes clone print open read write readline say seek\",\n \\ \"close opendir readdir slurp pos fmt vec link unlink symlink uniq pair\",\n \\ \"asin atan sec cosec cotan asec acosec acotan sinh cosh tanh asinh\",\n \\ \"acos acosh atanh sech cosech cotanh sech acosech acotanh asech ok\",\n \\ \"plan_ok dies_ok lives_ok skip todo pass flunk force_todo use_ok isa_ok\",\n \\ \"diag is_deeply isnt like skip_rest unlike cmp_ok eval_dies_ok nok_error\",\n \\ \"eval_lives_ok approx is_approx throws_ok version_lt plan eval succ pred\",\n \\ \"times nonce once signature new connect operator undef undefine sleep\",\n \\ \"from to infix postfix prefix circumfix postcircumfix minmax lazy count\",\n \\ \"unwrap getc pi e context void quasi body each contains rewinddir subst\",\n \\ \"can isa flush arity assuming rewind callwith callsame nextwith nextsame\",\n \\ \"attr eval_elsewhere none srand trim trim_start trim_end lastcall WHAT\",\n \\ \"WHERE HOW WHICH VAR WHO WHENCE ACCEPTS REJECTS does not true iterator by\",\n \\ \"re im invert flip\",\n\\ ]\n\n\" we want to highlight builtins like split() though, so this comes afterwards\n\" TODO: check if this would be faster as one big regex\nlet s:words_space = join(s:routines, \" \")\nlet s:temp = split(s:words_space)\nlet s:words = join(s:temp, \"\\\\|\")\nexec \"syn match p6Routine \". s:before_keyword . s:words . s:after_keyword\nunlet s:before_keyword s:after_keyword s:words_space s:temp s:words s:routines\n\n\" packages, must come after all the keywords\nsyn match p6Normal display \"\\%(::\\)\\@<=\\K\\%(\\k\\|[-']\\K\\@=\\)*\"\nsyn match p6Normal display \"\\K\\%(\\k\\|[-']\\K\\@=\\)*\\%(::\\)\\@=\"\n\n\" some standard packages\nsyn match p6Type display \"\\%(::\\|\\k\\|\\K\\@<=[-']\\)\\@<!\\%(Order\\%(::Same\\|::Increase\\|::Decrease\\)\\?\\)\\%(\\k\\|[-']\\K\\@=\\)\\@!\"\nsyn match p6Type display \"\\%(::\\|\\k\\|\\K\\@<=[-']\\)\\@<!\\%(Bool\\%(::True\\|::False\\)\\?\\)\\%(\\k\\|[-']\\K\\@=\\)\\@!\"\n\n\nsyn match p6Shebang    display \"\\%^#!.*\"\nsyn match p6BlockLabel display \"\\%(^\\s*\\)\\@<=\\h\\w*\\s*::\\@!\\_s\\@=\"\nsyn match p6Number     display \"\\k\\@<!_\\@!\\%(\\d\\|__\\@!\\)\\+_\\@<!\\%([eE]_\\@!+\\?\\%(\\d\\|_\\)\\+\\)\\?_\\@<!\"\nsyn match p6Float      display \"\\k\\@<!_\\@!\\%(\\d\\|__\\@!\\)\\+_\\@<![eE]_\\@!-\\%(\\d\\|_\\)\\+\"\nsyn match p6Float      display \"\\k\\@<!_\\@<!\\%(\\d\\|__\\@!\\)*_\\@<!\\.\\@<!\\._\\@!\\.\\@!\\a\\@!\\%(\\d\\|_\\)\\+_\\@<!\\%([eE]_\\@!\\%(\\d\\|_\\)\\+\\)\\?\"\n\nsyn match p6NumberBase display \"[obxd]\" contained\nsyn match p6Number     display \"\\<0\\%(o[0-7][0-7_]*\\)\\@=\"     nextgroup=p6NumberBase\nsyn match p6Number     display \"\\<0\\%(b[01][01_]*\\)\\@=\"       nextgroup=p6NumberBase\nsyn match p6Number     display \"\\<0\\%(x\\x[[:xdigit:]_]*\\)\\@=\" nextgroup=p6NumberBase\nsyn match p6Number     display \"\\<0\\%(d\\d[[:digit:]_]*\\)\\@=\"  nextgroup=p6NumberBase\nsyn match p6Number     display \"\\%(\\<0o\\)\\@<=[0-7][0-7_]*\"\nsyn match p6Number     display \"\\%(\\<0b\\)\\@<=[01][01_]*\"\nsyn match p6Number     display \"\\%(\\<0x\\)\\@<=\\x[[:xdigit:]_]*\"\nsyn match p6Number     display \"\\%(\\<0d\\)\\@<=\\d[[:digit:]_]*\"\n\nsyn match p6Version    display \"\\<v\\d\\@=\" nextgroup=p6VersionNum\nsyn match p6VersionNum display \"\\d\\+\" nextgroup=p6VersionDot contained\nsyn match p6VersionDot display \"\\.\\%(\\d\\|\\*\\)\\@=\" nextgroup=p6VersionNum contained\n\n\" try to distinguish the \"is\" function from the \"is\" trail auxiliary\nsyn match p6Routine     display \"\\%(\\%(\\S\\k\\@<!\\|^\\)\\s*\\)\\@<=is\\>\"\n\n\" does is a type constraint sometimes\nsyn match p6TypeConstraint display \"does\\%(\\s*\\%(\\k\\|[-']\\K\\@=\\)\\)\\@=\"\n\n\" int is a type sometimes\nsyn match p6Type        display \"\\<int\\>\\%(\\s*(\\|\\s\\+\\d\\)\\@!\"\n\n\" these Routine names are also Properties, if preceded by \"is\"\nsyn match p6Property    display \"\\%(is\\s\\+\\)\\@<=\\%(signature\\|context\\|also\\|shape\\)\"\n\n\" The sigil in ::*Package\nsyn match p6PackageTwigil display \"\\%(::\\)\\@<=\\*\"\n\n\" $<match>\nsyn region p6MatchVarSigil\n    \\ matchgroup=p6Variable\n    \\ start=\"\\$\\%(<<\\@!\\)\\@=\"\n    \\ end=\">\\@<=\"\n    \\ contains=p6MatchVar\n\nsyn region p6MatchVar\n    \\ matchgroup=p6Twigil\n    \\ start=\"<\"\n    \\ end=\">\"\n    \\ contained\n\n\" Contextualizers\nsyn match p6Context display \"\\<\\%(item\\|list\\|slice\\|hash\\)\\>\"\nsyn match p6Context display \"\\%(\\$\\|@\\|%\\|&\\|@@\\)(\\@=\"\n\n\" the \"$\" placeholder in \"$var1, $, var2 = @list\"\nsyn match p6Placeholder display \"\\%(,\\s*\\)\\@<=\\$\\%(\\K\\|\\%([.^*?=!~]\\|:\\@<!::\\@!\\)\\)\\@!\"\nsyn match p6Placeholder display \"\\$\\%(\\K\\|\\%([.^*?=!~]\\|:\\@<!::\\@!\\)\\)\\@!\\%(,\\s*\\)\\@=\"\n\n\" Quoting\n\n\" one cluster for every quote adverb\nsyn cluster p6Interp_s\n    \\ add=p6InterpScalar\nsyn cluster p6Interp_scalar\n    \\ add=p6InterpScalar\n\nsyn cluster p6Interp_a\n    \\ add=p6InterpArray\nsyn cluster p6Interp_array\n    \\ add=p6InterpArray\n\nsyn cluster p6Interp_h\n    \\ add=p6InterpHash\nsyn cluster p6Interp_hash\n    \\ add=p6InterpHash\n\nsyn cluster p6Interp_f\n    \\ add=p6InterpFunction\nsyn cluster p6Interp_f\n    \\ add=p6InterpFunction\n\nsyn cluster p6Interp_c\n    \\ add=p6InterpClosure\nsyn cluster p6Interp_closure\n    \\ add=p6InterpClosure\n\n\nif exists(\"perl6_extended_q\") || exists(\"perl6_extended_all\")\n    syn cluster p6Interp_ww\n        \\ add=p6StringSQ\n        \\ add=p6StringDQ\n    syn cluster p6Interp_quotewords\n        \\ add=p6StringSQ\n        \\ add=p6StringDQ\nendif\n\nsyn cluster p6Interp_q\n    \\ add=p6EscQQ\n    \\ add=p6EscBackSlash\nsyn cluster p6Interp_single\n    \\ add=p6EscQQ\n    \\ add=p6EscBackSlash\n\nsyn cluster p6Interp_b\n    \\ add=@p6Interp_q\n    \\ add=p6Escape\n    \\ add=p6EscOpenCurly\n    \\ add=p6EscCodePoint\n    \\ add=p6EscHex\n    \\ add=p6EscOct\n    \\ add=p6EscOctOld\n    \\ add=p6EscNull\nsyn cluster p6Interp_backslash\n    \\ add=@p6Interp_q\n    \\ add=p6Escape\n    \\ add=p6EscOpenCurly\n    \\ add=p6EscCodePoint\n    \\ add=p6EscHex\n    \\ add=p6EscOct\n    \\ add=p6EscOctOld\n    \\ add=p6EscNull\n\nsyn cluster p6Interp_qq\n    \\ add=@p6Interp_scalar\n    \\ add=@p6Interp_array\n    \\ add=@p6Interp_hash\n    \\ add=@p6Interp_function\n    \\ add=@p6Interp_closure\n    \\ add=@p6Interp_backslash\nsyn cluster p6Interp_double\n    \\ add=@p6Interp_scalar\n    \\ add=@p6Interp_array\n    \\ add=@p6Interp_hash\n    \\ add=@p6Interp_function\n    \\ add=@p6Interp_closure\n    \\ add=@p6Interp_backslash\n\nsyn region p6InterpScalar\n    \\ start=\"\\ze\\z(\\$\\%(\\%(\\%(\\d\\+\\|!\\|/\\|¢\\)\\|\\%(\\%(\\%([.^*?=!~]\\|:\\@<!::\\@!\\)\\K\\@=\\)\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\)\\%(\\.\\%(\\K\\%(\\k\\|[-']\\K\\@=\\)*\\)\\|\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\)*\\)\\.\\?\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\)\\)\"\n    \\ start=\"\\ze\\z(\\$\\%(\\%(\\%(\\%([.^*?=!~]\\|:\\@<!::\\@!\\)\\K\\@=\\)\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\)\\|\\%(\\d\\+\\|!\\|/\\|¢\\)\\)\\)\"\n    \\ end=\"\\z1\\zs\"\n    \\ contained\n    \\ contains=TOP\n    \\ keepend\n\nsyn region p6InterpScalar\n    \\ matchgroup=p6Context\n    \\ start=\"\\$\\ze()\\@!\"\n    \\ skip=\"([^)]*)\"\n    \\ end=\")\\zs\"\n    \\ contained\n    \\ contains=TOP\n\nsyn region p6InterpArray\n    \\ start=\"\\ze\\z(@\\$*\\%(\\%(\\%(!\\|/\\|¢\\)\\|\\%(\\%(\\%([.^*?=!~]\\|:\\@<!::\\@!\\)\\K\\@=\\)\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\)\\%(\\.\\%(\\K\\%(\\k\\|[-']\\K\\@=\\)*\\)\\|\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\)*\\)\\.\\?\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\)\\)\"\n    \\ end=\"\\z1\\zs\"\n    \\ contained\n    \\ contains=TOP\n    \\ keepend\n\nsyn region p6InterpArray\n    \\ matchgroup=p6Context\n    \\ start=\"@\\ze()\\@!\"\n    \\ start=\"@@\\ze()\\@!\"\n    \\ skip=\"([^)]*)\"\n    \\ end=\")\\zs\"\n    \\ contained\n    \\ contains=TOP\n\nsyn region p6InterpHash\n    \\ start=\"\\ze\\z(%\\$*\\%(\\%(\\%(!\\|/\\|¢\\)\\|\\%(\\%(\\%([.^*?=!~]\\|:\\@<!::\\@!\\)\\K\\@=\\)\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\)\\%(\\.\\%(\\K\\%(\\k\\|[-']\\K\\@=\\)*\\)\\|\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\)*\\)\\.\\?\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\)\\)\"\n    \\ end=\"\\z1\\zs\"\n    \\ contained\n    \\ contains=TOP\n    \\ keepend\n\nsyn region p6InterpHash\n    \\ matchgroup=p6Context\n    \\ start=\"%\\ze()\\@!\"\n    \\ skip=\"([^)]*)\"\n    \\ end=\")\\zs\"\n    \\ contained\n    \\ contains=TOP\n\nsyn region p6InterpFunction\n    \\ start=\"\\ze\\z(&\\%(\\%(!\\|/\\|¢\\)\\|\\%(\\%(\\%([.^*?=!~]\\|:\\@<!::\\@!\\)\\K\\@=\\)\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\%(\\.\\%(\\K\\%(\\k\\|[-']\\K\\@=\\)*\\)\\|\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\)*\\)\\.\\?\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\)\\)\"\n    \\ end=\"\\z1\\zs\"\n    \\ contained\n    \\ contains=TOP\n    \\ keepend\n\nsyn region p6InterpFunction\n    \\ matchgroup=p6Context\n    \\ start=\"&\\ze()\\@!\"\n    \\ skip=\"([^)]*)\"\n    \\ end=\")\\zs\"\n    \\ contained\n    \\ contains=TOP\n\nsyn region p6InterpClosure\n    \\ start=\"\\\\\\@<!{}\\@!\"\n    \\ skip=\"{[^}]*}\"\n    \\ end=\"}\"\n    \\ contained\n    \\ contains=TOP\n    \\ keepend\n\n\" generic escape\nsyn match p6Escape          display \"\\\\\\S\" contained\n\n\" escaped closing delimiters\nsyn match p6EscQuote        display \"\\\\'\" contained\nsyn match p6EscDoubleQuote  display \"\\\\\\\"\" contained\nsyn match p6EscCloseAngle   display \"\\\\>\" contained\nsyn match p6EscCloseFrench  display \"\\\\»\" contained\nsyn match p6EscBackTick     display \"\\\\`\" contained\nsyn match p6EscForwardSlash display \"\\\\/\" contained\nsyn match p6EscVerticalBar  display \"\\\\|\" contained\nsyn match p6EscExclamation  display \"\\\\!\" contained\nsyn match p6EscComma        display \"\\\\,\" contained\nsyn match p6EscDollar       display \"\\\\\\$\" contained\nsyn match p6EscCloseCurly   display \"\\\\}\" contained\nsyn match p6EscCloseBracket display \"\\\\\\]\" contained\n\n\" misc escapes\nsyn match p6EscOctOld    display \"\\\\\\d\\{1,3}\" contained\nsyn match p6EscNull      display \"\\\\0\\d\\@!\" contained\nsyn match p6EscCodePoint display \"\\%(\\\\c\\)\\@<=\\%(\\d\\|\\S\\|\\[\\)\\@=\" contained nextgroup=p6CodePoint\nsyn match p6EscHex       display \"\\%(\\\\x\\)\\@<=\\%(\\x\\|\\[\\)\\@=\" contained nextgroup=p6HexSequence\nsyn match p6EscOct       display \"\\%(\\\\o\\)\\@<=\\%(\\o\\|\\[\\)\\@=\" contained nextgroup=p6OctSequence\nsyn match p6EscQQ        display \"\\\\qq\" contained nextgroup=p6QQSequence\nsyn match p6EscOpenCurly display \"\\\\{\" contained\nsyn match p6EscHash      display \"\\\\#\" contained\nsyn match p6EscBackSlash display \"\\\\\\\\\" contained\n\nsyn region p6QQSequence\n    \\ matchgroup=p6Escape\n    \\ start=\"\\[\"\n    \\ skip=\"\\[[^\\]]*]\"\n    \\ end=\"]\"\n    \\ contained\n    \\ transparent\n    \\ contains=@p6Interp_qq\n\nsyn match p6CodePoint   display \"\\%(\\d\\+\\|\\S\\)\" contained\nsyn region p6CodePoint\n    \\ matchgroup=p6Escape\n    \\ start=\"\\[\"\n    \\ end=\"]\"\n    \\ contained\n\nsyn match p6HexSequence display \"\\x\\+\" contained\nsyn region p6HexSequence\n    \\ matchgroup=p6Escape\n    \\ start=\"\\[\"\n    \\ end=\"]\"\n    \\ contained\n\nsyn match p6OctSequence display \"\\o\\+\" contained\nsyn region p6OctSequence\n    \\ matchgroup=p6Escape\n    \\ start=\"\\[\"\n    \\ end=\"]\"\n    \\ contained\n\n\" matches :key, :!key, :$var, :key<var>, etc\n\" Since we don't know in advance how the adverb ends, we use a trick.\n\" Consume nothing with the start pattern (\\ze at the beginning),\n\" while capturing the whole adverb into \\z1 and then putting it before\n\" the match start (\\zs) of the end pattern.\nsyn region p6Adverb\n    \\ start=\"\\ze\\z(:!\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\?\\)\"\n    \\ start=\"\\ze\\z(:!\\?[@$%]\\$*\\%(::\\|\\%(\\$\\@<=\\d\\+\\|!\\|/\\|¢\\)\\|\\%(\\%([.^*?=!~]\\|:\\@<!::\\@!\\)\\K\\)\\|\\%(\\K\\%(\\k\\|[-']\\K\\@=\\)*\\)\\)\\)\"\n    \\ end=\"\\z1\\zs\"\n    \\ contained\n    \\ contains=TOP\n    \\ keepend\n\n\" <words>\n\" FIXME: not sure how to distinguish this from the \"less than\" operator\n\" in all cases. For now, it matches if any of the following is true:\n\"\n\" * There is whitespace missing on either side of the \"<\", since\n\"   people tend to put spaces around \"less than\"\n\" * It comes after \"enum\", \"for\", \"any\", \"all\", or \"none\"\n\" * It's the first or last thing on a line (ignoring whitespace)\n\" * It's preceded by \"= \"\n\"\n\" It never matches when:\n\"\n\" * Preceded by [<+~=] (e.g. <<foo>>, =<$foo>)\n\" * Followed by [-=] (e.g. <--, <=, <==)\nsyn region p6StringAngle\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\<\\%(enum\\|for\\|any\\|all\\|none\\)\\>\\s*(\\?\\s*\\)\\@<=<\\%(<\\|=>\\|[-=]\\{1,2}>\\@!\\)\\@!\"\n    \\ start=\"\\%(\\s\\|[<+~=]\\)\\@<!<\\%(<\\|=>\\|[-=]\\{1,2}>\\@!\\)\\@!\"\n    \\ start=\"[<+~=]\\@<!<\\%(\\s\\|<\\|=>\\|[-=]\\{1,2}>\\@!\\)\\@!\"\n    \\ start=\"\\%(^\\s*\\)\\@<=<\\%(<\\|=>\\|[-=]\\{1,2}>\\@!\\)\\@!\"\n    \\ start=\"[<+~=]\\@<!<\\%(\\s*$\\)\\@=\"\n    \\ start=\"\\%(=\\s\\+\\)\\@=<\\%(<\\|=>\\|[-=]\\{1,2}>\\@!\\)\\@!\"\n    \\ skip=\"\\\\\\@<!\\\\>\"\n    \\ end=\">\"\n    \\ contains=p6InnerAnglesOne,p6EscBackSlash,p6EscCloseAngle\n\nsyn region p6InnerAnglesOne\n    \\ matchgroup=p6StringAngle\n    \\ start=\"<\"\n    \\ skip=\"\\\\\\@<!\\\\>\"\n    \\ end=\">\"\n    \\ transparent\n    \\ contained\n    \\ contains=p6InnerAnglesOne\n\n\" <<words>>\nsyn region p6StringAngles\n    \\ matchgroup=p6Quote\n    \\ start=\"<<=\\@!\"\n    \\ skip=\"\\\\\\@<!\\\\>\"\n    \\ end=\">>\"\n    \\ contains=p6InnerAnglesTwo,@p6Interp_qq,p6Comment,p6EscHash,p6EscCloseAngle,p6Adverb,p6StringSQ,p6StringDQ\n\nsyn region p6InnerAnglesTwo\n    \\ matchgroup=p6StringAngles\n    \\ start=\"<<\"\n    \\ skip=\"\\\\\\@<!\\\\>\"\n    \\ end=\">>\"\n    \\ transparent\n    \\ contained\n    \\ contains=p6InnerAnglesTwo\n\n\" «words»\nsyn region p6StringFrench\n    \\ matchgroup=p6Quote\n    \\ start=\"«\"\n    \\ skip=\"\\\\\\@<!\\\\»\"\n    \\ end=\"»\"\n    \\ contains=p6InnerFrench,@p6Interp_qq,p6Comment,p6EscHash,p6EscCloseFrench,p6Adverb,p6StringSQ,p6StringDQ\n\nsyn region p6InnerFrench\n    \\ matchgroup=p6StringFrench\n    \\ start=\"«\"\n    \\ skip=\"\\\\\\@<!\\\\»\"\n    \\ end=\"»\"\n    \\ transparent\n    \\ contained\n    \\ contains=p6InnerFrench\n\n\" 'string'\nsyn region p6StringSQ\n    \\ matchgroup=p6Quote\n    \\ start=\"'\"\n    \\ skip=\"\\\\\\@<!\\\\'\"\n    \\ end=\"'\"\n    \\ contains=@p6Interp_q,p6EscQuote\n\n\" \"string\"\nsyn region p6StringDQ\n    \\ matchgroup=p6Quote\n    \\ start=+\"+\n    \\ skip=+\\\\\\@<!\\\\\"+\n    \\ end=+\"+\n    \\ contains=@p6Interp_qq,p6EscDoubleQuote\n\n\" Q// and friends.\n\nsyn match p6QuoteQ display \"\\%([Qq]\\%(ww\\|to\\|[qwxsahfcb]\\)\\?\\)\\>\" nextgroup=p6QPairs skipwhite skipempty\nsyn match p6QPairs contained transparent skipwhite skipempty nextgroup=p6StringQ,p6StringQ_PIR \"\\%(\\_s*:!\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\?\\)*\"\n\nif exists(\"perl6_embedded_pir\")\n    syn include @p6PIR syntax/pir.vim\nendif\n\n\" hardcoded set of delimiters\nlet s:delims = [\n  \\ [\"\\\\\\\"\",         \"\\\\\\\"\", \"p6EscDoubleQuote\",  \"\\\\\\\\\\\\@<!\\\\\\\\\\\\\\\"\"],\n  \\ [\"'\",            \"'\",    \"p6EscQuote\",        \"\\\\\\\\\\\\@<!\\\\\\\\'\"],\n  \\ [\"/\",            \"/\",    \"p6EscForwardSlash\", \"\\\\\\\\\\\\@<!\\\\\\\\/\"],\n  \\ [\"`\",            \"`\",    \"p6EscBackTick\",     \"\\\\\\\\\\\\@<!\\\\\\\\`\"],\n  \\ [\"|\",            \"|\",    \"p6EscVerticalBar\",  \"\\\\\\\\\\\\@<!\\\\\\\\|\"],\n  \\ [\"!\",            \"!\",    \"p6EscExclamation\",  \"\\\\\\\\\\\\@<!\\\\\\\\!\"],\n  \\ [\",\",            \",\",    \"p6EscComma\",        \"\\\\\\\\\\\\@<!\\\\\\\\,\"],\n  \\ [\"\\\\$\",          \"\\\\$\",  \"p6EscDollar\",       \"\\\\\\\\\\\\@<!\\\\\\\\\\\\$\"],\n  \\ [\"{\",            \"}\",    \"p6EscCloseCurly\",   \"\\\\%(\\\\\\\\\\\\@<!\\\\\\\\}\\\\|{[^}]*}\\\\)\"],\n  \\ [\"<\",            \">\",    \"p6EscCloseAngle\",   \"\\\\%(\\\\\\\\\\\\@<!\\\\\\\\>\\\\|<[^>]*>\\\\)\"],\n  \\ [\"«\",            \"»\",    \"p6EscCloseFrench\",  \"\\\\%(\\\\\\\\\\\\@<!\\\\\\\\»\\\\|«[^»]*»\\\\)\"],\n  \\ [\"\\\\\\[\",         \"]\",    \"p6EscCloseBracket\", \"\\\\%(\\\\\\\\\\\\@<!\\\\\\\\]\\\\|\\\\[^\\\\]]*]\\\\)\"],\n  \\ [\"\\\\s\\\\@<=(\",    \")\",    \"p6EscCloseParen\",   \"\\\\%(\\\\\\\\\\\\@<!\\\\\\\\)\\\\|([^)]*)\\\\)\"],\n\\ ]\n\n\" double and triple delimiters too\nif exists(\"perl6_extended_q\") || exists(\"perl6_extended_all\")\n    call add(s:delims, [\"««\",           \"»»\",  \"p6EscCloseFrench\",  \"\\\\%(\\\\\\\\\\\\@<!\\\\\\\\»»\\\\|««\\\\%([^»]\\\\|»»\\\\@!\\\\)*»»\\\\)\"])\n    call add(s:delims, [\"«««\",          \"»»»\", \"p6EscCloseFrench\",  \"\\\\%(\\\\\\\\\\\\@<!\\\\\\\\»»»\\\\|«««\\\\%([^»]\\\\|»\\\\%(»»\\\\)\\\\@!\\\\)*»»»\\\\)\"])\n    call add(s:delims, [\"{{\",           \"}}\",  \"p6EscCloseCurly\",   \"\\\\%(\\\\\\\\\\\\@<!\\\\\\\\}}\\\\|{{\\\\%([^}]\\\\|}}\\\\@!\\\\)*}}\\\\)\"])\n    call add(s:delims, [\"{{{\",          \"}}}\", \"p6EscCloseCurly\",   \"\\\\%(\\\\\\\\\\\\@<!\\\\\\\\}}}\\\\|{{{\\\\%([^}]\\\\|}\\\\%(}}\\\\)\\\\@!\\\\)*}}}\\\\)\"])\n    call add(s:delims, [\"\\\\\\[\\\\\\[\",     \"]]\",  \"p6EscCloseBracket\", \"\\\\%(\\\\\\\\\\\\@<!\\\\\\\\]]\\\\|\\\\[\\\\[\\\\%([^\\\\]]\\\\|]]\\\\@!\\\\)*]]\\\\)\"])\n    call add(s:delims, [\"\\\\\\[\\\\\\[\\\\\\[\", \"]]]\", \"p6EscCloseBracket\", \"\\\\%(\\\\\\\\\\\\@<!\\\\\\\\]]]\\\\|\\\\[\\\\[\\\\[\\\\%([^\\\\]]\\\\|]\\\\%(]]\\\\)\\\\@!\\\\)*]]]\\\\)\"])\n    call add(s:delims, [\"\\\\s\\\\@<=((\",   \"))\",  \"p6EscCloseParen\",   \"\\\\%(\\\\\\\\\\\\@<!\\\\\\\\))\\\\|((\\\\%([^)]\\\\|))\\\\@!\\\\)*))\\\\)\"])\n    call add(s:delims, [\"\\\\s\\\\@<=(((\",  \")))\", \"p6EscCloseParen\",   \"\\\\%(\\\\\\\\\\\\@<!\\\\\\\\)))\\\\|(((\\\\%([^)]\\\\|)\\\\%())\\\\)\\\\@!\\\\)*)))\\\\)\"])\n    call add(s:delims, [\"\\\\s\\\\@<=<<\",   \">>\",  \"p6EscCloseAngle\",   \"\\\\%(\\\\\\\\\\\\@<!\\\\\\\\>>\\\\|<<\\\\%([^>]\\\\|>>\\\\@!\\\\)*>>\\\\)\"])\n    call add(s:delims, [\"\\\\s\\\\@<=<<<\",  \">>>\", \"p6EscCloseAngle\",   \"\\\\%(\\\\\\\\\\\\@<!\\\\\\\\>>>\\\\|<<<\\\\%([^>]\\\\|>\\\\%(>>\\\\)\\\\@!\\\\)*>>>\\\\)\"])\nendif\n\nif !exists(\"perl6_extended_q\") && !exists(\"perl6_extended_all\")\n    \" simple version, no special highlighting within the string\n    for [start_delim, end_delim, end_group, skip] in s:delims\n        exec \"syn region p6StringQ matchgroup=p6Quote start=\\\"\".start_delim.\"\\\" skip=\\\"\".skip.\"\\\" end=\\\"\".end_delim.\"\\\" contains=\".end_group.\" contained\"\n    endfor\n\n    if exists(\"perl6_embedded_pir\")\n        \" highlight embedded PIR code\n        for [start_delim, end_delim, end_group, skip] in s:delims\n            exec \"syn region p6StringQ_PIR matchgroup=p6Quote start=\\\"\\\\%(Q\\\\s*:PIR\\\\s*\\\\)\\\\@<=\".start_delim.\"\\\" skip=\\\"\".skip.\"\\\" end=\\\"\".end_delim.\"\\\" contains=@p6PIR,\".end_group.\" contained\"\n        endfor\n    endif\nelse\n    let s:before = \"syn region p6StringQ matchgroup=p6Quote start=\\\"\\\\%(\"\n    let s:after  = \"\\\\%(\\\\_s*:!\\\\?\\\\K\\\\%(\\\\k\\\\|[-']\\\\K\\\\@=\\\\)*\\\\%(([^)]*)\\\\|\\\\[[^\\\\]]*]\\\\|<[^>]*>\\\\|«[^»]*»\\\\|{[^}]*}\\\\)\\\\?\\\\)*\\\\_s*\\\\)\\\\@<=\"\n\n    let s:adverbs = [\n        \\ [\"s\", \"scalar\"],\n        \\ [\"a\", \"array\"],\n        \\ [\"h\", \"hash\"],\n        \\ [\"f\", \"function\"],\n        \\ [\"c\", \"closure\"],\n        \\ [\"b\", \"backslash\"],\n        \\ [\"w\", \"words\"],\n        \\ [\"ww\", \"quotewords\"],\n        \\ [\"x\", \"exec\"],\n    \\ ]\n\n    \" these can't be conjoined with q and qq (e.g. as qqq and qqqq)\n    let s:q_adverbs = [\n        \\ [\"q\", \"single\"],\n        \\ [\"qq\", \"double\"],\n    \\ ]\n\n    for [start_delim, end_delim, end_group, skip] in s:delims\n        \" Q, q, and qq with any number of (ignored) adverbs\n        exec s:before .\"Q\". s:after .start_delim.\"\\\" end=\\\"\". end_delim .\"\\\"\".\" contained\"\n        exec s:before .\"q\". s:after .start_delim .\"\\\" skip=\\\"\". skip .\"\\\" end=\\\"\". end_delim .\"\\\" contains=\". end_group .\",@p6Interp_q\".\" contained\"\n        exec s:before .\"qq\". s:after .start_delim .\"\\\" skip=\\\"\". skip .\"\\\" end=\\\"\". end_delim .\"\\\" contains=\". end_group .\",@p6Interp_qq\".\" contained\"\n\n        for [short, long] in s:adverbs\n            \" Qs, qs, qqs, Qa, qa, qqa, etc, with ignored adverbs\n            exec s:before .\"Q\".short. s:after .start_delim .\"\\\" end=\\\"\". end_delim .\"\\\" contains=@p6Interp_\".long.\" contained\"\n            exec s:before .\"q\".short. s:after .start_delim .\"\\\" skip=\\\"\". skip .\"\\\" end=\\\"\". end_delim .\"\\\" contains=\". end_group .\",@p6Interp_q,@p6Interp_\".long.\" contained\"\n            exec s:before .\"qq\".short. s:after .start_delim .\"\\\" skip=\\\"\". skip .\"\\\" end=\\\"\". end_delim .\"\\\" contains=\". end_group .\",@p6Interp_qq,@p6Interp_\".long.\" contained\"\n\n            \" Q, q, and qq, with one significant adverb\n            exec s:before .\"Q\\\\s*:\\\\%(\".short.\"\\\\|\".long.\"\\\\)\". s:after .start_delim .\"\\\" end=\\\"\". end_delim .\"\\\" contains=@p6Interp_\".long.\" contained\"\n            for [q_short, q_long] in s:q_adverbs\n                exec s:before .\"Q\\\\s*:\\\\%(\".q_short.\"\\\\|\".q_long.\"\\\\)\". s:after .start_delim .\"\\\" end=\\\"\". end_delim .\"\\\" contains=@p6Interp_\".q_long.\" contained\"\n            endfor\n            exec s:before .\"q\\\\s*:\\\\%(\".short.\"\\\\|\".long.\"\\\\)\". s:after .start_delim .\"\\\" skip=\\\"\". skip .\"\\\" end=\\\"\". end_delim .\"\\\" contains=\". end_group .\",@p6Interp_q,@p6Interp_\".long.\" contained\"\n            exec s:before .\"qq\\\\s*:\\\\%(\".short.\"\\\\|\".long.\"\\\\)\". s:after .start_delim .\"\\\" skip=\\\"\". skip .\"\\\" end=\\\"\". end_delim .\"\\\" contains=\". end_group .\",@p6Interp_qq,@p6Interp_\".long.\" contained\"\n\n            for [short2, long2] in s:adverbs\n                \" Qs, qs, qqs, Qa, qa, qqa, etc, with one significant adverb\n                exec s:before .\"Q\".short.\"\\\\s*:\\\\%(\".short2.\"\\\\|\".long2.\"\\\\)\". s:after .start_delim .\"\\\" end=\\\"\". end_delim .\"\\\" contains=@p6Interp_\".long.\",@p6Interp_\".long2.\" contained\"\n                for [q_short2, q_long2] in s:q_adverbs\n                    exec s:before .\"Q\".short.\"\\\\s*:\\\\%(\".q_short2.\"\\\\|\".q_long2.\"\\\\)\". s:after .start_delim .\"\\\" end=\\\"\". end_delim .\"\\\" contains=@p6Interp_\".long.\",@p6Interp_\".q_long2.\" contained\"\n                endfor\n                exec s:before .\"q\".short.\"\\\\s*:\\\\%(\".short2.\"\\\\|\".long2.\"\\\\)\". s:after .start_delim .\"\\\" skip=\\\"\". skip .\"\\\" end=\\\"\". end_delim .\"\\\" contains=\". end_group .\",@p6Interp_q,@p6Interp_\".long.\",@p6Interp_\".long2.\" contained\"\n                exec s:before .\"qq\".short.\"\\\\s*:\\\\%(\".short2.\"\\\\|\".long2.\"\\\\)\". s:after .start_delim .\"\\\" skip=\\\"\". skip .\"\\\" end=\\\"\". end_delim .\"\\\" contains=\". end_group .\",@p6Interp_qq,@p6Interp_\".long.\",@p6Interp_\".long2.\" contained\"\n            endfor\n        endfor\n    endfor\n    unlet s:before s:after s:adverbs s:q_adverbs\nendif\nunlet s:delims\n\n\" Match these so something else above can't. E.g. the \"q\" in \"role q { }\"\n\" should not be considered a string\nsyn match p6Normal display \"\\%(\\<\\%(role\\|grammar\\|slang\\)\\s\\+\\)\\@<=\\K\\%(\\k\\|[-']\\K\\@=\\)*\"\n\n\" :key\nsyn match p6Operator display \":\\@<!::\\@!!\\?\" nextgroup=p6Key\nsyn match p6Key display \"\\k\\%(\\k\\|[-']\\K\\@=\\)*\" contained\n\n\" => and p5=> autoquoting\nsyn match p6StringP5Auto display \"\\K\\%(\\k\\|[-']\\K\\@=\\)*\\ze\\s\\+p5=>\"\nsyn match p6StringAuto   display \"\\K\\%(\\k\\|[-']\\K\\@=\\)*\\ze\\%(p5\\)\\@<!=>\"\nsyn match p6StringAuto   display \"\\K\\%(\\k\\|[-']\\K\\@=\\)*\\ze\\s\\+=>\"\nsyn match p6StringAuto   display \"\\K\\%(\\k\\|[-']\\K\\@=\\)*p5\\ze=>\"\n\n\" Hyperoperators. Needs to come after the quoting operators (<>, «», etc)\nexec \"syn match p6HyperOp display \\\"»\"   .s:infix.\"»\\\\?\\\"\"\nexec \"syn match p6HyperOp display \\\"«\\\\?\".s:infix.\"«\\\"\"\nexec \"syn match p6HyperOp display \\\"»\"   .s:infix.\"«\\\"\"\nexec \"syn match p6HyperOp display \\\"«\"   .s:infix. \"»\\\"\"\n\nexec \"syn match p6HyperOp display \\\">>\"          .s:infix.\"\\\\%(>>\\\\)\\\\?\\\"\"\nexec \"syn match p6HyperOp display \\\"\\\\%(<<\\\\)\\\\?\".s:infix.\"<<\\\"\"\nexec \"syn match p6HyperOp display \\\">>\"          .s:infix.\"<<\\\"\"\nexec \"syn match p6HyperOp display \\\"<<\"          .s:infix.\">>\\\"\"\nunlet s:infix\n\n\" Regexes and grammars\n\nsyn match p6RegexName display \"\\%(\\<\\%(regex\\|rule\\|token\\)\\s\\+\\)\\@<=\\K\\%(\\k\\|[-']\\K\\@=\\)*\" nextgroup=p6RegexBlockCrap skipwhite skipempty\nsyn match p6RegexBlockCrap \"[^{]*\" nextgroup=p6RegexBlock skipwhite skipempty transparent contained\n\nsyn region p6RegexBlock\n    \\ matchgroup=p6Normal\n    \\ start=\"{\"\n    \\ end=\"}\"\n    \\ contained\n    \\ contains=@p6Regexen,@p6Variables\n\n\" Perl 6 regex bits\n\nsyn cluster p6Regexen\n    \\ add=p6RxMeta\n    \\ add=p6RxEscape\n    \\ add=p6EscHex\n    \\ add=p6EscOct\n    \\ add=p6EscNull\n    \\ add=p6RxAnchor\n    \\ add=p6RxCapture\n    \\ add=p6RxGroup\n    \\ add=p6RxAlternation\n    \\ add=p6RxAdverb\n    \\ add=p6RxAdverbArg\n    \\ add=p6RxStorage\n    \\ add=p6RxAssertion\n    \\ add=p6RxQuoteWords\n    \\ add=p6RxClosure\n    \\ add=p6RxStringSQ\n    \\ add=p6RxStringDQ\n    \\ add=p6Comment\n\nsyn match p6RxMeta        display contained \".\\%(\\k\\|\\s\\)\\@<!\"\nsyn match p6RxAnchor      display contained \"[$^]\"\nsyn match p6RxEscape      display contained \"\\\\\\S\"\nsyn match p6RxCapture     display contained \"[()]\"\nsyn match p6RxAlternation display contained \"|\"\nsyn match p6RxRange       display contained \"\\.\\.\"\n\nsyn region p6RxClosure\n    \\ matchgroup=p6Normal\n    \\ start=\"{\"\n    \\ end=\"}\"\n    \\ contained\n    \\ containedin=p6RxClosure\n    \\ contains=TOP\nsyn region p6RxGroup\n    \\ matchgroup=p6StringSpecial2\n    \\ start=\"\\[\"\n    \\ end=\"]\"\n    \\ contained\n    \\ contains=@p6Regexen,@p6Variables\nsyn region p6RxAssertion\n    \\ matchgroup=p6StringSpecial2\n    \\ start=\"<\"\n    \\ end=\">\"\n    \\ contained\n    \\ contains=@p6Regexen,@p6Variables,p6RxCharClass,p6RxAssertCall\nsyn region p6RxAssertCall\n    \\ matchgroup=p6Normal\n    \\ start=\"\\%(::\\|\\%(\\K\\%(\\k\\|[-']\\K\\@=\\)*\\)\\)\\@<=(\\@=\"\n    \\ end=\")\\@<=\"\n    \\ contained\n    \\ contains=TOP\nsyn region p6RxCharClass\n    \\ matchgroup=p6StringSpecial2\n    \\ start=\"\\%(<[-!+?]\\?\\)\\@<=\\[\"\n    \\ skip=\"\\\\]\"\n    \\ end=\"]\"\n    \\ contained\n    \\ contains=p6RxRange,p6RxEscape,p6EscHex,p6EscOct,p6EscNull\nsyn region p6RxQuoteWords\n    \\ matchgroup=p6StringSpecial2\n    \\ start=\"< \"\n    \\ end=\">\"\n    \\ contained\nsyn region p6RxAdverb\n    \\ start=\"\\ze\\z(:!\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\)\"\n    \\ end=\"\\z1\\zs\"\n    \\ contained\n    \\ contains=TOP\n    \\ keepend\nsyn region p6RxAdverbArg\n    \\ start=\"\\%(:!\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\)\\@<=(\"\n    \\ skip=\"([^)]*)\"\n    \\ end=\")\"\n    \\ contained\n    \\ contains=TOP\nsyn region p6RxStorage\n    \\ matchgroup=p6Operator\n    \\ start=\"\\%(^\\s*\\)\\@<=:\\%(my\\>\\|temp\\>\\)\\@=\"\n    \\ end=\"$\"\n    \\ contains=TOP\n    \\ contained\n\n\" Perl 5 regex bits\n\nsyn cluster p6RegexP5Base\n    \\ add=p6RxP5Escape\n    \\ add=p6RxP5Oct\n    \\ add=p6RxP5Hex\n    \\ add=p6RxP5EscMeta\n    \\ add=p6RxP5CodePoint\n    \\ add=p6RxP5Prop\n\n\" normal regex stuff\nsyn cluster p6RegexP5\n    \\ add=@p6RegexP5Base\n    \\ add=p6RxP5Quantifier\n    \\ add=p6RxP5Meta\n    \\ add=p6RxP5QuoteMeta\n    \\ add=p6RxP5ParenMod\n    \\ add=p6RxP5Verb\n    \\ add=p6RxP5Count\n    \\ add=p6RxP5Named\n    \\ add=p6RxP5ReadRef\n    \\ add=p6RxP5WriteRef\n    \\ add=p6RxP5CharClass\n    \\ add=p6RxP5Anchor\n\n\" inside character classes\nsyn cluster p6RegexP5Class\n    \\ add=@p6RegexP5Base\n    \\ add=p6RxP5Posix\n    \\ add=p6RxP5Range\n\nsyn match p6RxP5Escape     display contained \"\\\\\\S\"\nsyn match p6RxP5CodePoint  display contained \"\\\\c\\S\\@=\" nextgroup=p6RxP5CPId\nsyn match p6RxP5CPId       display contained \"\\S\"\nsyn match p6RxP5Oct        display contained \"\\\\\\%(\\o\\{1,3}\\)\\@=\" nextgroup=p6RxP5OctSeq\nsyn match p6RxP5OctSeq     display contained \"\\o\\{1,3}\"\nsyn match p6RxP5Anchor     display contained \"[\\^$]\"\nsyn match p6RxP5Hex        display contained \"\\\\x\\%({\\x\\+}\\|\\x\\{1,2}\\)\\@=\" nextgroup=p6RxP5HexSeq\nsyn match p6RxP5HexSeq     display contained \"\\x\\{1,2}\"\nsyn region p6RxP5HexSeq\n    \\ matchgroup=p6RxP5Escape\n    \\ start=\"{\"\n    \\ end=\"}\"\n    \\ contained\nsyn region p6RxP5Named\n    \\ matchgroup=p6RxP5Escape\n    \\ start=\"\\%(\\\\N\\)\\@<={\"\n    \\ end=\"}\"\n    \\ contained\nsyn match p6RxP5Quantifier display contained \"\\%([+*]\\|(\\@<!?\\)\"\nsyn match p6RxP5ReadRef    display contained \"\\\\[1-9]\\d\\@!\"\nsyn match p6RxP5ReadRef    display contained \"\\\\k<\\@=\" nextgroup=p6RxP5ReadRefId\nsyn region p6RxP5ReadRefId\n    \\ matchgroup=p6RxP5Escape\n    \\ start=\"<\"\n    \\ end=\">\"\n    \\ contained\nsyn match p6RxP5WriteRef   display contained \"\\\\g\\%(\\d\\|{\\)\\@=\" nextgroup=p6RxP5WriteRefId\nsyn match p6RxP5WriteRefId display contained \"\\d\\+\"\nsyn region p6RxP5WriteRefId\n    \\ matchgroup=p6RxP5Escape\n    \\ start=\"{\"\n    \\ end=\"}\"\n    \\ contained\nsyn match p6RxP5Prop       display contained \"\\\\[pP]\\%(\\a\\|{\\)\\@=\" nextgroup=p6RxP5PropId\nsyn match p6RxP5PropId     display contained \"\\a\"\nsyn region p6RxP5PropId\n    \\ matchgroup=p6RxP5Escape\n    \\ start=\"{\"\n    \\ end=\"}\"\n    \\ contained\nsyn match p6RxP5Meta       display contained \"[(|).]\"\nsyn match p6RxP5ParenMod   display contained \"(\\@<=?\\@=\" nextgroup=p6RxP5Mod,p6RxP5ModName,p6RxP5Code\nsyn match p6RxP5Mod        display contained \"?\\%(<\\?=\\|<\\?!\\|[#:|]\\)\"\nsyn match p6RxP5Mod        display contained \"?-\\?[impsx]\\+\"\nsyn match p6RxP5Mod        display contained \"?\\%([-+]\\?\\d\\+\\|R\\)\"\nsyn match p6RxP5Mod        display contained \"?(DEFINE)\"\nsyn match p6RxP5Mod        display contained \"?\\%(&\\|P[>=]\\)\" nextgroup=p6RxP5ModDef\nsyn match p6RxP5ModDef     display contained \"\\h\\w*\"\nsyn region p6RxP5ModName\n    \\ matchgroup=p6StringSpecial\n    \\ start=\"?'\"\n    \\ end=\"'\"\n    \\ contained\nsyn region p6RxP5ModName\n    \\ matchgroup=p6StringSpecial\n    \\ start=\"?P\\?<\"\n    \\ end=\">\"\n    \\ contained\nsyn region p6RxP5Code\n    \\ matchgroup=p6StringSpecial\n    \\ start=\"??\\?{\"\n    \\ end=\"})\\@=\"\n    \\ contained\n    \\ contains=TOP\nsyn match p6RxP5EscMeta    display contained \"\\\\[?*.{}()[\\]|\\^$]\"\nsyn match p6RxP5Count      display contained \"\\%({\\d\\+\\%(,\\%(\\d\\+\\)\\?\\)\\?}\\)\\@=\" nextgroup=p6RxP5CountId\nsyn region p6RxP5CountId\n    \\ matchgroup=p6RxP5Escape\n    \\ start=\"{\"\n    \\ end=\"}\"\n    \\ contained\nsyn match p6RxP5Verb       display contained \"(\\@<=\\*\\%(\\%(PRUNE\\|SKIP\\|THEN\\)\\%(:[^)]*\\)\\?\\|\\%(MARK\\|\\):[^)]*\\|COMMIT\\|F\\%(AIL\\)\\?\\|ACCEPT\\)\"\nsyn region p6RxP5QuoteMeta\n    \\ matchgroup=p6RxP5Escape\n    \\ start=\"\\\\Q\"\n    \\ end=\"\\\\E\"\n    \\ contained\n    \\ contains=@p6Variables,p6EscBackSlash\nsyn region p6RxP5CharClass\n    \\ matchgroup=p6StringSpecial\n    \\ start=\"\\[\\^\\?\"\n    \\ skip=\"\\\\]\"\n    \\ end=\"]\"\n    \\ contained\n    \\ contains=@p6RegexP5Class\nsyn region p6RxP5Posix\n    \\ matchgroup=p6RxP5Escape\n    \\ start=\"\\[:\"\n    \\ end=\":]\"\n    \\ contained\nsyn match p6RxP5Range      display contained \"-\"\n\n\" 'string' inside a regex\nsyn region p6RxStringSQ\n    \\ matchgroup=p6Quote\n    \\ start=\"'\"\n    \\ skip=\"\\\\\\@<!\\\\'\"\n    \\ end=\"'\"\n    \\ contained\n    \\ contains=p6EscQuote,p6EscBackSlash\n\n\" \"string\" inside a regex\nsyn region p6RxStringDQ\n    \\ matchgroup=p6Quote\n    \\ start=+\"+\n    \\ skip=+\\\\\\@<!\\\\\"+\n    \\ end=+\"+\n    \\ contained\n    \\ contains=p6EscDoubleQuote,p6EscBackSlash\n\n\" $!, $var, $!var, $::var, $package::var $*::package::var, etc\n\" Thus must come after the matches for the \"$\" regex anchor, but before\n\" the match for the $ regex delimiter\nsyn cluster p6Variables\n    \\ add=p6VarSlash\n    \\ add=p6VarExclam\n    \\ add=p6VarMatch\n    \\ add=p6VarNum\n    \\ add=p6Variable\n\nsyn match p6VarSlash     display \"\\$/\"\nsyn match p6VarExclam    display \"\\$!\"\nsyn match p6VarMatch     display \"\\$¢\"\nsyn match p6VarNum       display \"\\$\\d\\+\"\nsyn match p6Variable     display \"\\%(@@\\|[@&$%]\\$*\\)\\%(::\\|\\%(\\%([.^*?=!~]\\|:\\@<!::\\@!\\)\\K\\)\\|\\K\\)\\@=\" nextgroup=p6Twigil,p6VarName,p6PackageScope\nsyn match p6VarName      display \"\\K\\%(\\k\\|[-']\\K\\@=\\)*\" contained\nsyn match p6Twigil       display \"\\%([.^*?=!~]\\|:\\@<!::\\@!\\)\\K\\@=\" nextgroup=p6PackageScope,p6VarName contained\nsyn match p6PackageScope display \"\\%(\\K\\%(\\k\\|[-']\\K\\@=\\)*\\)\\?::\" nextgroup=p6PackageScope,p6VarName contained\n\n\" Perl 6 regex regions\n\n\" /foo/\n\" Below some hacks to recognise the // variant. This is virtually impossible\n\" to catch in all cases as the / is used in so many other ways, but these\n\" should be the most obvious ones.\n\" TODO: mostly stolen from perl.vim, might need more work\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\%(\\<\\%(split\\|while\\|until\\|if\\|unless\\)\\|\\.\\.\\|[-+*!~(\\[{=]\\)\\s*\\)\\@<=//\\@!\"\n    \\ start=\"^//\\@!\"\n    \\ start=+\\s\\@<=/[^[:space:][:digit:]$@%=]\\@=\\%(/\\_s*\\%([([{$@%&*[:digit:]\"'`]\\|\\_s\\w\\|[[:upper:]_abd-fhjklnqrt-wyz]\\)\\)\\@!/\\@!+\n    \\ skip=\"\\\\/\"\n    \\ end=\"/\"\n    \\ contains=@p6Regexen,p6Variable,p6VarExclam,p6VarMatch,p6VarNum\n\n\" m/foo/, mm/foo/, rx/foo/\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<\\%(mm\\?\\|rx\\)\\%(\\s*:!\\?\\k\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\)\\?\\)*\\s*\\)\\@<=//\\@!\"\n    \\ skip=\"\\\\/\"\n    \\ end=\"/\"\n    \\ keepend\n    \\ contains=@p6Regexen,p6Variable,p6VarExclam,p6VarMatch,p6VarNum\n\n\" m!foo!, mm!foo!, rx!foo!\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<\\%(mm\\?\\|rx\\)\\%(\\s*:!\\?\\k\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\)\\?\\)*\\s*\\)\\@<=!!\\@!\"\n    \\ skip=\"\\\\!\"\n    \\ end=\"!\"\n    \\ keepend\n    \\ contains=@p6Regexen,p6Variable,p6VarSlash,p6VarMatch,p6VarNum\n\n\" m$foo$, mm$foo$, rx$foo$, m|foo|, mm|foo|, rx|foo|, etc\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<\\%(mm\\?\\|rx\\)\\%(\\s*:!\\?\\k\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\)\\?\\)*\\s*\\)\\@<=\\z([\\\"'`|,$]\\)\\$\\@!\"\n    \\ skip=\"\\\\\\z1\"\n    \\ end=\"\\z1\"\n    \\ keepend\n    \\ contains=@p6Regexen,@p6Variables\n\n\" m (foo), mm (foo), rx (foo)\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<\\%(mm\\?\\|rx\\)\\%(\\s*:!\\?\\k\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\)\\?\\)*\\s\\+\\)\\@<=()\\@!)\\@!\"\n    \\ skip=\"\\\\)\"\n    \\ end=\")\"\n    \\ contains=@p6Regexen,@p6Variables\n\n\" m[foo], mm[foo], rx[foo]\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<\\%(mm\\?\\|rx\\)\\%(\\s*:!\\?\\k\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\)\\?\\)*\\s*\\)\\@<=\\[]\\@!]\\@!\"\n    \\ skip=\"\\\\]\"\n    \\ end=\"]\"\n    \\ contains=@p6Regexen,@p6Variables\n\n\" m{foo}, mm{foo}, rx{foo}\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<\\%(mm\\?\\|rx\\)\\%(\\s*:!\\?\\k\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\)\\?\\)*\\s*\\)\\@<={}\\@!}\\@!\"\n    \\ skip=\"\\\\}\"\n    \\ end=\"}\"\n    \\ contains=@p6Regexen,@p6Variables\n\n\" m<foo>, mm<foo>, rx<foo>\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<\\%(mm\\?\\|rx\\)\\%(\\s*:!\\?\\k\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\)\\?\\)*\\s*\\)\\@<=<>\\@!>\\@!\"\n    \\ skip=\"\\\\>\"\n    \\ end=\">\"\n    \\ contains=@p6Regexen,@p6Variables\n\n\" m«foo», mm«foo», rx«foo»\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<\\%(mm\\?\\|rx\\)\\%(\\s*:!\\?\\k\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\)\\?\\)*\\s*\\)\\@<=«»\\@!»\\@!\"\n    \\ skip=\"\\\\»\"\n    \\ end=\"»\"\n    \\ contains=@p6Regexen,@p6Variables\n\n\" Substitutions\n\n\" s/foo/bar/\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<s\\%(\\s*:!\\?\\k\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\)\\?\\)*\\s*\\)\\@<=/\"\n    \\ skip=\"\\\\/\"\n    \\ end=\"/\"me=e-1\n    \\ keepend\n    \\ contains=@p6Regexen,p6Variable,p6VarExclam,p6VarMatch,p6VarNum\n    \\ nextgroup=p6Substitution\n\nsyn region p6Substitution\n    \\ matchgroup=p6Quote\n    \\ start=\"/\"\n    \\ skip=\"\\\\/\"\n    \\ end=\"/\"\n    \\ contained\n    \\ keepend\n    \\ contains=@p6Interp_qq\n\n\" s!foo!bar!\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<s\\%(\\s*:!\\?\\k\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\)\\?\\)*\\s*\\)\\@<=!\"\n    \\ skip=\"\\\\!\"\n    \\ end=\"!\"me=e-1\n    \\ keepend\n    \\ contains=@p6Regexen,p6Variable,p6VarSlash,p6VarMatch,p6VarNum\n    \\ nextgroup=p6Substitution\n\nsyn region p6Substitution\n    \\ matchgroup=p6Quote\n    \\ start=\"!\"\n    \\ skip=\"\\\\!\"\n    \\ end=\"!\"\n    \\ contained\n    \\ keepend\n    \\ contains=@p6Interp_qq\n\n\" s$foo$bar$, s|foo|bar, etc\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<s\\%(\\s*:!\\?\\k\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\)\\?\\)*\\s*\\)\\@<=\\z([\\\"'`|,$]\\)\"\n    \\ skip=\"\\\\\\z1\"\n    \\ end=\"\\z1\"me=e-1\n    \\ keepend\n    \\ contains=@p6Regexen,@p6Variables\n    \\ nextgroup=p6Substitution\n\nsyn region p6Substitution\n    \\ matchgroup=p6Quote\n    \\ start=\"\\z([\\\"'`|,$]\\)\"\n    \\ skip=\"\\\\\\z1\"\n    \\ end=\"\\z1\"\n    \\ contained\n    \\ keepend\n    \\ contains=@p6Interp_qq\n\n\" s{foo}\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<s\\%(\\s*:!\\?\\k\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\)\\?\\)*\\s*\\)\\@<={}\\@!\"\n    \\ skip=\"\\\\}\"\n    \\ end=\"}\"\n    \\ contains=@p6Regexen,@p6Variables\n\n\" s[foo]\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<s\\%(\\s*:!\\?\\k\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\)\\?\\)*\\s*\\)\\@<=\\[]\\@!\"\n    \\ skip=\"\\\\]\"\n    \\ end=\"]\"\n    \\ contains=@p6Regexen,@p6Variables\n\n\" s<foo>\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<s\\%(\\s*:!\\?\\k\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\)\\?\\)*\\s*\\)\\@<=<>\\@!\"\n    \\ skip=\"\\\\>\"\n    \\ end=\">\"\n    \\ contains=@p6Regexen,@p6Variables\n\n\" s«foo»\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<s\\%(\\s*:!\\?\\k\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\)\\?\\)*\\s*\\)\\@<=«»\\@!\"\n    \\ skip=\"\\\\»\"\n    \\ end=\"»\"\n    \\ contains=@p6Regexen,@p6Variables\n\n\" s (foo)\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<s\\%(\\s*:!\\?\\k\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\)\\?\\)*\\s\\+\\)\\@<=()\\@!\"\n    \\ skip=\"\\\\)\"\n    \\ end=\")\"\n    \\ contains=@p6Regexen,@p6Variables\n\n\" Perl 5 regex regions\n\n\" m:P5//\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<m\\s*:P\\%(erl\\)\\?5\\s*\\)\\@<=/\"\n    \\ skip=\"\\\\/\"\n    \\ end=\"/\"\n    \\ contains=@p6RegexP5,p6Variable,p6VarExclam,p6VarMatch,p6VarNum\n\n\" m:P5!!\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<m\\s*:P\\%(erl\\)\\?5\\s*\\)\\@<=!\"\n    \\ skip=\"\\\\!\"\n    \\ end=\"!\"\n    \\ contains=@p6RegexP5,p6Variable,p6VarSlash,p6VarMatch,p6VarNum\n\n\" m:P5$$, m:P5||, etc\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<m\\s*:P\\%(erl\\)\\?5\\s*\\)\\@<=\\z([\\\"'`|,$]\\)\"\n    \\ skip=\"\\\\\\z1\"\n    \\ end=\"\\z1\"\n    \\ contains=@p6RegexP5,@p6Variables\n\n\" m:P5 ()\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<m\\s*:P\\%(erl\\)\\?5\\s\\+\\)\\@<=()\\@!\"\n    \\ skip=\"\\\\)\"\n    \\ end=\")\"\n    \\ contains=@p6RegexP5,@p6Variables\n\n\" m:P5[]\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<m\\s*:P\\%(erl\\)\\?5\\s*\\)\\@<=[]\\@!\"\n    \\ skip=\"\\\\]\"\n    \\ end=\"]\"\n    \\ contains=@p6RegexP5,@p6Variables\n\n\" m:P5{}\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<m\\s*:P\\%(erl\\)\\?5\\s*\\)\\@<={}\\@!\"\n    \\ skip=\"\\\\}\"\n    \\ end=\"}\"\n    \\ contains=@p6RegexP5,p6Variables\n\n\" m:P5<>\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<m\\s*:P\\%(erl\\)\\?5\\s*\\)\\@<=<>\\@!\"\n    \\ skip=\"\\\\>\"\n    \\ end=\">\"\n    \\ contains=@p6RegexP5,p6Variables\n\n\" m:P5«»\nsyn region p6Match\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<m\\s*:P\\%(erl\\)\\?5\\s*\\)\\@<=«»\\@!\"\n    \\ skip=\"\\\\»\"\n    \\ end=\"»\"\n    \\ contains=@p6RegexP5,p6Variables\n\n\" Transliteration\n\n\" tr/foo/bar/, tr|foo|bar, etc\nsyn region p6String\n    \\ matchgroup=p6Quote\n    \\ start=\"\\%(\\%(::\\|[$@%&][.!^:*?]\\?\\|\\.\\)\\@<!\\<tr\\%(\\s*:!\\?\\k\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\)\\?\\)*\\s*\\)\\@<=\\z([/\\\"'`|!,$]\\)\"\n    \\ skip=\"\\\\\\z1\"\n    \\ end=\"\\z1\"me=e-1\n    \\ contains=p6RxRange\n    \\ nextgroup=p6Transliteration\n\nsyn region p6Transliteration\n    \\ matchgroup=p6Quote\n    \\ start=\"\\z([/\\\"'`|!,$]\\)\"\n    \\ skip=\"\\\\\\z1\"\n    \\ end=\"\\z1\"\n    \\ contained\n    \\ contains=@p6Interp_qq\n\n\" Comments\n\n\" normal end-of-line comment\nsyn match p6Comment display \"#.*\" contains=p6Attention\n\n\" Multiline comments. Arbitrary numbers of opening brackets are allowed,\n\" but we only define regions for 1 to 3\nsyn region p6Comment\n    \\ matchgroup=p6Comment\n    \\ start=\"^\\@<!#(\"\n    \\ skip=\"([^)]*)\"\n    \\ end=\")\"\n    \\ matchgroup=p6Error\n    \\ start=\"^#(\"\n    \\ contains=p6Attention,p6Comment\nsyn region p6Comment\n    \\ matchgroup=p6Comment\n    \\ start=\"^\\@<!#\\[\"\n    \\ skip=\"\\[[^\\]]*]\"\n    \\ end=\"]\"\n    \\ matchgroup=p6Error\n    \\ start=\"^#\\[\"\n    \\ contains=p6Attention,p6Comment\nsyn region p6Comment\n    \\ matchgroup=p6Comment\n    \\ start=\"^\\@<!#{\"\n    \\ skip=\"{[^}]*}\"\n    \\ end=\"}\"\n    \\ matchgroup=p6Error\n    \\ start=\"^#{\"\n    \\ contains=p6Attention,p6Comment\nsyn region p6Comment\n    \\ matchgroup=p6Comment\n    \\ start=\"^\\@<!#<\"\n    \\ skip=\"<[^>]*>\"\n    \\ end=\">\"\n    \\ matchgroup=p6Error\n    \\ start=\"^#<\"\n    \\ contains=p6Attention,p6Comment\nsyn region p6Comment\n    \\ matchgroup=p6Comment\n    \\ start=\"^\\@<!#«\"\n    \\ skip=\"«[^»]*»\"\n    \\ end=\"»\"\n    \\ matchgroup=p6Error\n    \\ start=\"^#«\"\n    \\ contains=p6Attention,p6Comment\n\n\" double and triple delimiters\nif exists(\"perl6_extended_comments\") || exists(\"perl6_extended_all\")\n    syn region p6Comment\n        \\ matchgroup=p6Comment\n        \\ start=\"^\\@<!#((\"\n        \\ skip=\"((\\%([^)\\|))\\@!]\\)*))\"\n        \\ end=\"))\"\n        \\ matchgroup=p6Error\n        \\ start=\"^#((\"\n        \\ contains=p6Attention,p6Comment\n    syn region p6Comment\n        \\ matchgroup=p6Comment\n        \\ start=\"^\\@<!#(((\"\n        \\ skip=\"(((\\%([^)]\\|)\\%())\\)\\@!\\)*)))\"\n        \\ end=\")))\"\n        \\ matchgroup=p6Error\n        \\ start=\"^#(((\"\n        \\ contains=p6Attention,p6Comment\n\n    syn region p6Comment\n        \\ matchgroup=p6Comment\n        \\ start=\"^\\@<!#\\[\\[\"\n        \\ skip=\"\\[\\[\\%([^\\]]\\|]]\\@!\\)*]]\"\n        \\ end=\"]]\"\n        \\ matchgroup=p6Error\n        \\ start=\"^#\\[\\[\"\n        \\ contains=p6Attention,p6Comment\n    syn region p6Comment\n        \\ matchgroup=p6Comment\n        \\ start=\"^\\@<!#\\[\\[\\[\"\n        \\ skip=\"\\[\\[\\[\\%([^\\]]\\|]\\%(]]\\)\\@!\\)*]]]\"\n        \\ end=\"]]]\"\n        \\ matchgroup=p6Error\n        \\ start=\"^#\\[\\[\\[\"\n        \\ contains=p6Attention,p6Comment\n\n    syn region p6Comment\n        \\ matchgroup=p6Comment\n        \\ start=\"^\\@<!#{{\"\n        \\ skip=\"{{\\%([^}]\\|}}\\@!\\)*}}\"\n        \\ end=\"}}\"\n        \\ matchgroup=p6Error\n        \\ start=\"^#{{\"\n        \\ contains=p6Attention,p6Comment\n    syn region p6Comment\n        \\ matchgroup=p6Comment\n        \\ start=\"^\\@<!#{{{\"\n        \\ skip=\"{{{\\%([^}]\\|}\\%(}}\\)\\@!\\)*}}}\"\n        \\ end=\"}}}\"\n        \\ matchgroup=p6Error\n        \\ start=\"^#{{{\"\n        \\ contains=p6Attention,p6Comment\n\n    syn region p6Comment\n        \\ matchgroup=p6Comment\n        \\ start=\"^\\@<!#<<\"\n        \\ skip=\"<<\\%([^>]\\|>>\\@!\\)*>>\"\n        \\ end=\">>\"\n        \\ matchgroup=p6Error\n        \\ start=\"^#<<\"\n        \\ contains=p6Attention,p6Comment\n    syn region p6Comment\n        \\ matchgroup=p6Comment\n        \\ start=\"^\\@<!#<<<\"\n        \\ skip=\"<<<\\%([^>]\\|>\\%(>>\\)\\@!\\)*>>>\"\n        \\ end=\">>>\"\n        \\ matchgroup=p6Error\n        \\ start=\"^#<<<\"\n        \\ contains=p6Attention,p6Comment\n\n    syn region p6Comment\n        \\ matchgroup=p6Comment\n        \\ start=\"^\\@<!#««\"\n        \\ skip=\"««\\%([^»]\\|»»\\@!\\)*»»\"\n        \\ end=\"»»\"\n        \\ matchgroup=p6Error\n        \\ start=\"^#««\"\n        \\ contains=p6Attention,p6Comment\n    syn region p6Comment\n        \\ matchgroup=p6Comment\n        \\ start=\"^\\@<!#«««\"\n        \\ skip=\"«««\\%([^»]\\|»\\%(»»\\)\\@!\\)*»»»\"\n        \\ end=\"»»»\"\n        \\ matchgroup=p6Error\n        \\ start=\"^#«««\"\n        \\ contains=p6Attention,p6Comment\nendif\n\n\" Pod\n\n\" Abbreviated blocks (implicit code forbidden)\nsyn region p6PodAbbrRegion\n    \\ matchgroup=p6PodPrefix\n    \\ start=\"^=\\ze\\K\\k*\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contains=p6PodAbbrNoCodeType\n    \\ keepend\n\nsyn region p6PodAbbrNoCodeType\n    \\ matchgroup=p6PodType\n    \\ start=\"\\K\\k*\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contained\n    \\ contains=p6PodName,p6PodAbbrNoCode\n\nsyn match p6PodName contained \".\\+\" contains=@p6PodFormat\nsyn match p6PodComment contained \".\\+\"\n\nsyn region p6PodAbbrNoCode\n    \\ start=\"^\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contained\n    \\ contains=@p6PodFormat\n\n\" Abbreviated blocks (everything is code)\nsyn region p6PodAbbrRegion\n    \\ matchgroup=p6PodPrefix\n    \\ start=\"^=\\zecode\\>\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contains=p6PodAbbrCodeType\n    \\ keepend\n\nsyn region p6PodAbbrCodeType\n    \\ matchgroup=p6PodType\n    \\ start=\"\\K\\k*\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contained\n    \\ contains=p6PodName,p6PodAbbrCode\n\nsyn region p6PodAbbrCode\n    \\ start=\"^\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contained\n\n\" Abbreviated blocks (everything is a comment)\nsyn region p6PodAbbrRegion\n    \\ matchgroup=p6PodPrefix\n    \\ start=\"^=\\zecomment\\>\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contains=p6PodAbbrCommentType\n    \\ keepend\n\nsyn region p6PodAbbrCommentType\n    \\ matchgroup=p6PodType\n    \\ start=\"\\K\\k*\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contained\n    \\ contains=p6PodComment,p6PodAbbrNoCode\n\n\" Abbreviated blocks (implicit code allowed)\nsyn region p6PodAbbrRegion\n    \\ matchgroup=p6PodPrefix\n    \\ start=\"^=\\ze\\%(pod\\|item\\|nested\\|\\u\\+\\)\\>\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contains=p6PodAbbrType\n    \\ keepend\n\nsyn region p6PodAbbrType\n    \\ matchgroup=p6PodType\n    \\ start=\"\\K\\k*\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contained\n    \\ contains=p6PodName,p6PodAbbr\n\nsyn region p6PodAbbr\n    \\ start=\"^\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contained\n    \\ contains=@p6PodFormat,p6PodImplicitCode\n\n\" Abbreviated block to end-of-file\nsyn region p6PodAbbrRegion\n    \\ matchgroup=p6PodPrefix\n    \\ start=\"^=\\zeEND\\>\"\n    \\ end=\"\\%$\"\n    \\ contains=p6PodAbbrEOFType\n    \\ keepend\n\nsyn region p6PodAbbrEOFType\n    \\ matchgroup=p6PodType\n    \\ start=\"\\K\\k*\"\n    \\ end=\"\\%$\"\n    \\ contained\n    \\ contains=p6PodName,p6PodAbbrEOF\n\nsyn region p6PodAbbrEOF\n    \\ start=\"^\"\n    \\ end=\"\\%$\"\n    \\ contained\n    \\ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode\n\n\" Directives\nsyn region p6PodDirectRegion\n    \\ matchgroup=p6PodPrefix\n    \\ start=\"^=\\%(config\\|use\\)\\>\"\n    \\ end=\"^\\ze\\%([^=]\\|=\\K\\|\\s*$\\)\"\n    \\ contains=p6PodDirectArgRegion\n    \\ keepend\n\nsyn region p6PodDirectArgRegion\n    \\ matchgroup=p6PodType\n    \\ start=\"\\S\\+\"\n    \\ end=\"^\\ze\\%([^=]\\|=\\K\\|\\s*$\\)\"\n    \\ contained\n    \\ contains=p6PodDirectConfigRegion\n\nsyn region p6PodDirectConfigRegion\n    \\ start=\"\"\n    \\ end=\"^\\ze\\%([^=]\\|=\\K\\|\\s*$\\)\"\n    \\ contained\n    \\ contains=@p6PodConfig\n\n\" =encoding is a special directive\nsyn region p6PodDirectRegion\n    \\ matchgroup=p6PodPrefix\n    \\ start=\"^=encoding\\>\"\n    \\ end=\"^\\ze\\%([^=]\\|=\\K\\|\\s*$\\)\"\n    \\ contains=p6PodEncodingArgRegion\n    \\ keepend\n\nsyn region p6PodEncodingArgRegion\n    \\ matchgroup=p6PodName\n    \\ start=\"\\S\\+\"\n    \\ end=\"^\\ze\\%([^=]\\|=\\K\\|\\s*$\\)\"\n    \\ contained\n\n\" Paragraph blocks (implicit code forbidden)\nsyn region p6PodParaRegion\n    \\ matchgroup=p6PodPrefix\n    \\ start=\"^=for\\>\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contains=p6PodParaNoCodeTypeRegion\n    \\ keepend\n    \\ extend\n\nsyn region p6PodParaNoCodeTypeRegion\n    \\ matchgroup=p6PodType\n    \\ start=\"\\K\\k*\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contained\n    \\ contains=p6PodParaNoCode,p6PodParaConfigRegion\n\nsyn region p6PodParaConfigRegion\n    \\ start=\"\"\n    \\ end=\"^\\ze\\%([^=]\\|=\\k\\@<!\\)\"\n    \\ contained\n    \\ contains=@p6PodConfig\n\nsyn region p6PodParaNoCode\n    \\ start=\"^[^=]\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contained\n    \\ contains=@p6PodFormat\n\n\" Paragraph blocks (everything is code)\nsyn region p6PodParaRegion\n    \\ matchgroup=p6PodPrefix\n    \\ start=\"^=for\\>\\ze\\s*code\\>\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contains=p6PodParaCodeTypeRegion\n    \\ keepend\n    \\ extend\n\nsyn region p6PodParaCodeTypeRegion\n    \\ matchgroup=p6PodType\n    \\ start=\"\\K\\k*\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contained\n    \\ contains=p6PodParaCode,p6PodParaConfigRegion\n\nsyn region p6PodParaCode\n    \\ start=\"^[^=]\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contained\n\n\" Paragraph blocks (implicit code allowed)\nsyn region p6PodParaRegion\n    \\ matchgroup=p6PodPrefix\n    \\ start=\"^=for\\>\\ze\\s*\\%(pod\\|item\\|nested\\|\\u\\+\\)\\>\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contains=p6PodParaTypeRegion\n    \\ keepend\n    \\ extend\n\nsyn region p6PodParaTypeRegion\n    \\ matchgroup=p6PodType\n    \\ start=\"\\K\\k*\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contained\n    \\ contains=p6PodPara,p6PodParaConfigRegion\n\nsyn region p6PodPara\n    \\ start=\"^[^=]\"\n    \\ end=\"^\\ze\\%(\\s*$\\|=\\K\\)\"\n    \\ contained\n    \\ contains=@p6PodFormat,p6PodImplicitCode\n\n\" Paragraph block to end-of-file\nsyn region p6PodParaRegion\n    \\ matchgroup=p6PodPrefix\n    \\ start=\"^=for\\>\\ze\\s\\+END\\>\"\n    \\ end=\"\\%$\"\n    \\ contains=p6PodParaEOFTypeRegion\n    \\ keepend\n    \\ extend\n\nsyn region p6PodParaEOFTypeRegion\n    \\ matchgroup=p6PodType\n    \\ start=\"\\K\\k*\"\n    \\ end=\"\\%$\"\n    \\ contained\n    \\ contains=p6PodParaEOF,p6PodParaConfigRegion\n\nsyn region p6PodParaEOF\n    \\ start=\"^[^=]\"\n    \\ end=\"\\%$\"\n    \\ contained\n    \\ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode\n\n\" Delimited blocks (implicit code forbidden)\nsyn region p6PodDelimRegion\n    \\ matchgroup=p6PodPrefix\n    \\ start=\"^=begin\\>\"\n    \\ end=\"^=end\\>\"\n    \\ contains=p6PodDelimNoCodeTypeRegion\n    \\ keepend\n    \\ extend\n\nsyn region p6PodDelimNoCodeTypeRegion\n    \\ matchgroup=p6PodType\n    \\ start=\"\\K\\k*\"\n    \\ end=\"^\\ze=end\\>\"\n    \\ contained\n    \\ contains=p6PodDelimNoCode,p6PodDelimConfigRegion\n\nsyn region p6PodDelimConfigRegion\n    \\ start=\"\"\n    \\ end=\"^\\ze\\%([^=]\\|=\\K\\|\\s*$\\)\"\n    \\ contained\n    \\ contains=@p6PodConfig\n\nsyn region p6PodDelimNoCode\n    \\ start=\"^\"\n    \\ end=\"^\\ze=end\\>\"\n    \\ contained\n    \\ contains=@p6PodNestedBlocks,@p6PodFormat\n\n\" Delimited blocks (everything is code)\nsyn region p6PodDelimRegion\n    \\ matchgroup=p6PodPrefix\n    \\ start=\"^=begin\\>\\ze\\s*code\\>\"\n    \\ end=\"^=end\\>\"\n    \\ contains=p6PodDelimCodeTypeRegion\n    \\ keepend\n    \\ extend\n\nsyn region p6PodDelimCodeTypeRegion\n    \\ matchgroup=p6PodType\n    \\ start=\"\\K\\k*\"\n    \\ end=\"^\\ze=end\\>\"\n    \\ contained\n    \\ contains=p6PodDelimCode,p6PodDelimConfigRegion\n\nsyn region p6PodDelimCode\n    \\ start=\"^\"\n    \\ end=\"^\\ze=end\\>\"\n    \\ contained\n    \\ contains=@p6PodNestedBlocks\n\n\" Delimited blocks (implicit code allowed)\nsyn region p6PodDelimRegion\n    \\ matchgroup=p6PodPrefix\n    \\ start=\"^=begin\\>\\ze\\s*\\%(pod\\|item\\|nested\\|\\u\\+\\)\\>\"\n    \\ end=\"^=end\\>\"\n    \\ contains=p6PodDelimTypeRegion\n    \\ keepend\n    \\ extend\n\nsyn region p6PodDelimTypeRegion\n    \\ matchgroup=p6PodType\n    \\ start=\"\\K\\k*\"\n    \\ end=\"^\\ze=end\\>\"\n    \\ contained\n    \\ contains=p6PodDelim,p6PodDelimConfigRegion\n\nsyn region p6PodDelim\n    \\ start=\"^\"\n    \\ end=\"^\\ze=end\\>\"\n    \\ contained\n    \\ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode\n\n\" Delimited block to end-of-file\nsyn region p6PodDelimRegion\n    \\ matchgroup=p6PodPrefix\n    \\ start=\"^=begin\\>\\ze\\s\\+END\\>\"\n    \\ end=\"\\%$\"\n    \\ contains=p6PodDelimEOFTypeRegion\n    \\ extend\n\nsyn region p6PodDelimEOFTypeRegion\n    \\ matchgroup=p6PodType\n    \\ start=\"\\K\\k*\"\n    \\ end=\"\\%$\"\n    \\ contained\n    \\ contains=p6PodDelimEOF,p6PodDelimConfigRegion\n\nsyn region p6PodDelimEOF\n    \\ start=\"^\"\n    \\ end=\"\\%$\"\n    \\ contained\n    \\ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode\n\nsyn cluster p6PodConfig\n    \\ add=p6PodConfigOperator\n    \\ add=p6PodExtraConfig\n    \\ add=p6StringAuto\n    \\ add=p6PodAutoQuote\n    \\ add=p6StringSQ\n\nsyn region p6PodParens\n    \\ start=\"(\"\n    \\ end=\")\"\n    \\ contained\n    \\ contains=p6Number,p6StringSQ\n\nsyn match p6PodAutoQuote      display contained \"=>\"\nsyn match p6PodConfigOperator display contained \":!\\?\" nextgroup=p6PodConfigOption\nsyn match p6PodConfigOption   display contained \"[^[:space:](<]\\+\" nextgroup=p6PodParens,p6StringAngle\nsyn match p6PodExtraConfig    display contained \"^=\"\nsyn match p6PodVerticalBar    display contained \"|\"\nsyn match p6PodColon          display contained \":\"\nsyn match p6PodSemicolon      display contained \";\"\nsyn match p6PodComma          display contained \",\"\nsyn match p6PodImplicitCode   display contained \"^\\s.*\"\n\nsyn region p6PodDelimEndRegion\n    \\ matchgroup=p6PodType\n    \\ start=\"\\%(^=end\\>\\)\\@<=\"\n    \\ end=\"\\K\\k*\"\n\n\" These may appear inside delimited blocks\nsyn cluster p6PodNestedBlocks\n    \\ add=p6PodAbbrRegion\n    \\ add=p6PodDirectRegion\n    \\ add=p6PodParaRegion\n    \\ add=p6PodDelimRegion\n    \\ add=p6PodDelimEndRegion\n\n\" Pod formatting codes\n\nsyn cluster p6PodFormat\n    \\ add=p6PodFormatOne\n    \\ add=p6PodFormatTwo\n    \\ add=p6PodFormatThree\n    \\ add=p6PodFormatFrench\n\n\" Balanced angles found inside formatting codes. Ensures proper nesting.\n\nsyn region p6PodFormatAnglesOne\n    \\ matchgroup=p6PodFormat\n    \\ start=\"<\"\n    \\ skip=\"<[^>]*>\"\n    \\ end=\">\"\n    \\ transparent\n    \\ contained\n    \\ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne\n\nsyn region p6PodFormatAnglesTwo\n    \\ matchgroup=p6PodFormat\n    \\ start=\"<<\"\n    \\ skip=\"<<[^>]*>>\"\n    \\ end=\">>\"\n    \\ transparent\n    \\ contained\n    \\ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo\n\nsyn region p6PodFormatAnglesThree\n    \\ matchgroup=p6PodFormat\n    \\ start=\"<<<\"\n    \\ skip=\"<<<[^>]*>>>\"\n    \\ end=\">>>\"\n    \\ transparent\n    \\ contained\n    \\ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree\n\nsyn region p6PodFormatAnglesFrench\n    \\ matchgroup=p6PodFormat\n    \\ start=\"«\"\n    \\ skip=\"«[^»]*»\"\n    \\ end=\"»\"\n    \\ transparent\n    \\ contained\n    \\ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree\n\n\" All formatting codes\n\nsyn region p6PodFormatOne\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"\\u<\"\n    \\ skip=\"<[^>]*>\"\n    \\ end=\">\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne\n\nsyn region p6PodFormatTwo\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"\\u<<\"\n    \\ skip=\"<<[^>]*>>\"\n    \\ end=\">>\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo\n\nsyn region p6PodFormatThree\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"\\u<<<\"\n    \\ skip=\"<<<[^>]*>>>\"\n    \\ end=\">>>\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree\n\nsyn region p6PodFormatFrench\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"\\u«\"\n    \\ skip=\"«[^»]*»\"\n    \\ end=\"»\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree\n\n\" C<> and V<> don't allow nested formatting formatting codes\n\nsyn region p6PodFormatOne\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"[CV]<\"\n    \\ skip=\"<[^>]*>\"\n    \\ end=\">\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesOne\n\nsyn region p6PodFormatTwo\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"[CV]<<\"\n    \\ skip=\"<<[^>]*>>\"\n    \\ end=\">>\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesTwo\n\nsyn region p6PodFormatThree\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"[CV]<<<\"\n    \\ skip=\"<<<[^>]*>>>\"\n    \\ end=\">>>\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesThree\n\nsyn region p6PodFormatFrench\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"[CV]«\"\n    \\ skip=\"«[^»]*»\"\n    \\ end=\"»\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesFrench\n\n\" L<> can have a \"|\" separator\n\nsyn region p6PodFormatOne\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"L<\"\n    \\ skip=\"<[^>]*>\"\n    \\ end=\">\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar\n\nsyn region p6PodFormatTwo\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"L<<\"\n    \\ skip=\"<<[^>]*>>\"\n    \\ end=\">>\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar\n\nsyn region p6PodFormatThree\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"L<<<\"\n    \\ skip=\"<<<[^>]*>>>\"\n    \\ end=\">>>\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar\n\nsyn region p6PodFormatFrench\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"L«\"\n    \\ skip=\"«[^»]*»\"\n    \\ end=\"»\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar\n\n\" E<> can have a \";\" separator\n\nsyn region p6PodFormatOne\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"E<\"\n    \\ skip=\"<[^>]*>\"\n    \\ end=\">\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodSemiColon\n\nsyn region p6PodFormatTwo\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"E<<\"\n    \\ skip=\"<<[^>]*>>\"\n    \\ end=\">>\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodSemiColon\n\nsyn region p6PodFormatThree\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"E<<<\"\n    \\ skip=\"<<<[^>]*>>>\"\n    \\ end=\">>>\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon\n\nsyn region p6PodFormatFrench\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"E«\"\n    \\ skip=\"«[^»]*»\"\n    \\ end=\"»\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon\n\n\" M<> can have a \":\" separator\n\nsyn region p6PodFormatOne\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"M<\"\n    \\ skip=\"<[^>]*>\"\n    \\ end=\">\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodColon\n\nsyn region p6PodFormatTwo\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"M<<\"\n    \\ skip=\"<<[^>]*>>\"\n    \\ end=\">>\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodColon\n\nsyn region p6PodFormatThree\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"M<<<\"\n    \\ skip=\"<<<[^>]*>>>\"\n    \\ end=\">>>\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon\n\nsyn region p6PodFormatFrench\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"M«\"\n    \\ skip=\"«[^»]*»\"\n    \\ end=\"»\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon\n\n\" D<> can have \"|\" and \";\" separators\n\nsyn region p6PodFormatOne\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"D<\"\n    \\ skip=\"<[^>]*>\"\n    \\ end=\">\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon\n\nsyn region p6PodFormatTwo\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"D<<\"\n    \\ skip=\"<<[^>]*>>\"\n    \\ end=\">>\"\n    \\ contained\n    \\ contains=p6PodFormatAngleTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon\n\nsyn region p6PodFormatThree\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"D<<<\"\n    \\ skip=\"<<<[^>]*>>>\"\n    \\ end=\">>>\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon\n\nsyn region p6PodFormatFrench\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"D«\"\n    \\ skip=\"«[^»]*»\"\n    \\ end=\"»\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon\n\n\" X<> can have \"|\", \",\" and \";\" separators\n\nsyn region p6PodFormatOne\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"X<\"\n    \\ skip=\"<[^>]*>\"\n    \\ end=\">\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon,p6PodComma\n\nsyn region p6PodFormatTwo\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"X<<\"\n    \\ skip=\"<<[^>]*>>\"\n    \\ end=\">>\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon,p6PodComma\n\nsyn region p6PodFormatThree\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"X<<<\"\n    \\ skip=\"<<<[^>]*>>>\"\n    \\ end=\">>>\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma\n\nsyn region p6PodFormatFrench\n    \\ matchgroup=p6PodFormatCode\n    \\ start=\"X«\"\n    \\ skip=\"«[^»]*»\"\n    \\ end=\"»\"\n    \\ contained\n    \\ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma\n\n\" Define the default highlighting.\n\" For version 5.7 and earlier: only when not done already\n\" For version 5.8 and later: only when an item doesn't have highlighting yet\nif version >= 508 || !exists(\"did_perl6_syntax_inits\")\n    if version < 508\n        let did_perl6_syntax_inits = 1\n        command -nargs=+ HiLink hi link <args>\n    else\n        command -nargs=+ HiLink hi def link <args>\n    endif\n\n    HiLink p6EscOctOld       p6Error\n    HiLink p6PackageTwigil   p6Twigil\n    HiLink p6StringAngle     p6String\n    HiLink p6StringFrench    p6String\n    HiLink p6StringAngles    p6String\n    HiLink p6StringSQ        p6String\n    HiLink p6StringDQ        p6String\n    HiLink p6StringQ         p6String\n    HiLink p6RxStringSQ      p6String\n    HiLink p6RxStringDQ      p6String\n    HiLink p6Substitution    p6String\n    HiLink p6Transliteration p6String\n    HiLink p6StringAuto      p6String\n    HiLink p6StringP5Auto    p6String\n    HiLink p6Key             p6String\n    HiLink p6Match           p6String\n    HiLink p6RegexBlock      p6String\n    HiLink p6RxP5CharClass   p6String\n    HiLink p6RxP5QuoteMeta   p6String\n    HiLink p6RxCharClass     p6String\n    HiLink p6RxQuoteWords    p6String\n    HiLink p6ReduceOp        p6Operator\n    HiLink p6ReverseCrossOp  p6Operator\n    HiLink p6HyperOp         p6Operator\n    HiLink p6QuoteQ          p6Operator\n    HiLink p6RxRange         p6StringSpecial\n    HiLink p6RxAnchor        p6StringSpecial\n    HiLink p6RxP5Anchor      p6StringSpecial\n    HiLink p6CodePoint       p6StringSpecial\n    HiLink p6RxMeta          p6StringSpecial\n    HiLink p6RxP5Range       p6StringSpecial\n    HiLink p6RxP5CPId        p6StringSpecial\n    HiLink p6RxP5Posix       p6StringSpecial\n    HiLink p6RxP5Mod         p6StringSpecial\n    HiLink p6RxP5HexSeq      p6StringSpecial\n    HiLink p6RxP5OctSeq      p6StringSpecial\n    HiLink p6RxP5WriteRefId  p6StringSpecial\n    HiLink p6HexSequence     p6StringSpecial\n    HiLink p6OctSequence     p6StringSpecial\n    HiLink p6RxP5Named       p6StringSpecial\n    HiLink p6RxP5PropId      p6StringSpecial\n    HiLink p6RxP5Quantifier  p6StringSpecial\n    HiLink p6RxP5CountId     p6StringSpecial\n    HiLink p6RxP5Verb        p6StringSpecial\n    HiLink p6Escape          p6StringSpecial2\n    HiLink p6EscNull         p6StringSpecial2\n    HiLink p6EscHash         p6StringSpecial2\n    HiLink p6EscQQ           p6StringSpecial2\n    HiLink p6EscQuote        p6StringSpecial2\n    HiLink p6EscDoubleQuote  p6StringSpecial2\n    HiLink p6EscBackTick     p6StringSpecial2\n    HiLink p6EscForwardSlash p6StringSpecial2\n    HiLink p6EscVerticalBar  p6StringSpecial2\n    HiLink p6EscExclamation  p6StringSpecial2\n    HiLink p6EscDollar       p6StringSpecial2\n    HiLink p6EscOpenCurly    p6StringSpecial2\n    HiLink p6EscCloseCurly   p6StringSpecial2\n    HiLink p6EscCloseBracket p6StringSpecial2\n    HiLink p6EscCloseAngle   p6StringSpecial2\n    HiLink p6EscCloseFrench  p6StringSpecial2\n    HiLink p6EscBackSlash    p6StringSpecial2\n    HiLink p6RxEscape        p6StringSpecial2\n    HiLink p6RxCapture       p6StringSpecial2\n    HiLink p6RxAlternation   p6StringSpecial2\n    HiLink p6RxP5            p6StringSpecial2\n    HiLink p6RxP5ReadRef     p6StringSpecial2\n    HiLink p6RxP5Oct         p6StringSpecial2\n    HiLink p6RxP5Hex         p6StringSpecial2\n    HiLink p6RxP5EscMeta     p6StringSpecial2\n    HiLink p6RxP5Meta        p6StringSpecial2\n    HiLink p6RxP5Escape      p6StringSpecial2\n    HiLink p6RxP5CodePoint   p6StringSpecial2\n    HiLink p6RxP5WriteRef    p6StringSpecial2\n    HiLink p6RxP5Prop        p6StringSpecial2\n\n    HiLink p6Property       Tag\n    HiLink p6Attention      Todo\n    HiLink p6Type           Type\n    HiLink p6Error          Error\n    HiLink p6BlockLabel     Label\n    HiLink p6Float          Float\n    HiLink p6Normal         Normal\n    HiLink p6Package        Normal\n    HiLink p6PackageScope   Normal\n    HiLink p6Number         Number\n    HiLink p6VersionNum     Number\n    HiLink p6String         String\n    HiLink p6Repeat         Repeat\n    HiLink p6Keyword        Keyword\n    HiLink p6Pragma         Keyword\n    HiLink p6Module         Keyword\n    HiLink p6DeclareRoutine Keyword\n    HiLink p6VarStorage     Special\n    HiLink p6FlowControl    Special\n    HiLink p6NumberBase     Special\n    HiLink p6Twigil         Special\n    HiLink p6StringSpecial2 Special\n    HiLink p6VersionDot     Special\n    HiLink p6Comment        Comment\n    HiLink p6Include        Include\n    HiLink p6Shebang        PreProc\n    HiLink p6ClosureTrait   PreProc\n    HiLink p6Routine        Function\n    HiLink p6Operator       Operator\n    HiLink p6Version        Operator\n    HiLink p6Context        Operator\n    HiLink p6Quote          Delimiter\n    HiLink p6TypeConstraint PreCondit\n    HiLink p6Exception      Exception\n    HiLink p6Placeholder    Identifier\n    HiLink p6Variable       Identifier\n    HiLink p6VarSlash       Identifier\n    HiLink p6VarNum         Identifier\n    HiLink p6VarExclam      Identifier\n    HiLink p6VarMatch       Identifier\n    HiLink p6VarName        Identifier\n    HiLink p6MatchVar       Identifier\n    HiLink p6RxP5ReadRefId  Identifier\n    HiLink p6RxP5ModDef     Identifier\n    HiLink p6RxP5ModName    Identifier\n    HiLink p6Conditional    Conditional\n    HiLink p6StringSpecial  SpecialChar\n\n    HiLink p6PodAbbr         p6Pod\n    HiLink p6PodAbbrEOF      p6Pod\n    HiLink p6PodAbbrNoCode   p6Pod\n    HiLink p6PodAbbrCode     p6PodCode\n    HiLink p6PodPara         p6Pod\n    HiLink p6PodParaEOF      p6Pod\n    HiLink p6PodParaNoCode   p6Pod\n    HiLink p6PodParaCode     p6PodCode\n    HiLink p6PodDelim        p6Pod\n    HiLink p6PodDelimEOF     p6Pod\n    HiLink p6PodDelimNoCode  p6Pod\n    HiLink p6PodDelimCode    p6PodCode\n    HiLink p6PodImplicitCode p6PodCode\n    HiLink p6PodExtraConfig  p6PodPrefix\n    HiLink p6PodVerticalBar  p6PodFormatCode\n    HiLink p6PodColon        p6PodFormatCode\n    HiLink p6PodSemicolon    p6PodFormatCode\n    HiLink p6PodComma        p6PodFormatCode\n    HiLink p6PodFormatOne    p6PodFormat\n    HiLink p6PodFormatTwo    p6PodFormat\n    HiLink p6PodFormatThree  p6PodFormat\n    HiLink p6PodFormatFrench p6PodFormat\n\n    HiLink p6PodType           Type\n    HiLink p6PodConfigOption   String\n    HiLink p6PodCode           PreProc\n    HiLink p6Pod               Comment\n    HiLink p6PodComment        Comment\n    HiLink p6PodAutoQuote      Operator\n    HiLink p6PodConfigOperator Operator\n    HiLink p6PodPrefix         Statement\n    HiLink p6PodName           Identifier\n    HiLink p6PodFormatCode     SpecialChar\n    HiLink p6PodFormat         SpecialComment\n\n    delcommand HiLink\nendif\n\n\" Syncing to speed up processing\n\"syn sync match p6SyncPod groupthere p6PodAbbrRegion     \"^=\\K\\k*\\>\"\n\"syn sync match p6SyncPod groupthere p6PodDirectRegion   \"^=\\%(config\\|use\\|encoding\\)\\>\"\n\"syn sync match p6SyncPod groupthere p6PodParaRegion     \"^=for\\>\"\n\"syn sync match p6SyncPod groupthere p6PodDelimRegion    \"^=begin\\>\"\n\"syn sync match p6SyncPod groupthere p6PodDelimEndRegion \"^=end\\>\"\n\n\" Let's just sync whole file, the other methods aren't reliable (or I don't\n\" know how to use them reliably)\nsyn sync fromstart\n\nsetlocal foldmethod=syntax\n\nlet b:current_syntax = \"perl6\"\n\nlet &cpo = s:keepcpo\nunlet s:keepcpo\n\n\" vim:ts=8:sts=4:sw=4:expandtab:ft=vim\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/php.vim",
    "content": "\" Vim syntax file\n\" Language: PHP 5.3 & up\n\"\n\" Maintainer: Paul Garvin <paul@paulgarvin.net>\n\"\n\" Contributor: Stan Angeloff <stanimir@angeloff.name>\n\" URL: https://github.com/StanAngeloff/php.vim\n\"\n\" Contributor: Alessandro Antonello <aleantonello@hotmail.com>\n\" URL: https://github.com/aantonello/php.vim\n\"\n\" Contributor: Tim Carry <tim@pixelastic.com>\n\" URL: https://github.com/pixelastic/php.vim\n\"\n\" Contributor: Joshua Sherman <josh@gravityblvd.com>\n\" URL: https://github.com/joshtronic/php.vim\n\"\n\" Former Maintainer:  Peter Hodge <toomuchphp-vim@yahoo.com>\n\" Former URL: http://www.vim.org/scripts/script.php?script_id=1571\n\"\n\" Note: All of the switches for VIM 5.X and 6.X compatability were removed.\n\"       DO NOT USE THIS FILE WITH A VERSION OF VIM < 7.0.\n\"\n\" Note: If you are using a colour terminal with dark background, you will probably find\n\"       the 'elflord' colorscheme is much better for PHP's syntax than the default\n\"       colourscheme, because elflord's colours will better highlight the break-points\n\"       (Statements) in your code.\n\"\n\" Options:  php_sql_query = 1  for SQL syntax highlighting inside strings\n\"           php_html_in_strings = 1  for HTML syntax highlighting inside strings\n\"           php_parent_error_close = 1  for highlighting parent error ] or )\n\"           php_parent_error_open = 1  for skipping an php end tag,\n\"                                      if there exists an open ( or [ without a closing one\n\"           php_no_shorttags = 1  don't sync <? ?> as php\n\"           php_folding = 1  for folding classes and functions\n\"           php_sync_method = x\n\"                             x=-1 to sync by search ( default )\n\"                             x>0 to sync at least x lines backwards\n\"                             x=0 to sync from start\n\"\n\"           php_var_selector_is_identifier = 1  include the '$' as part of identifiers.\n\"                                               Variables will be highlighted as a single 'phpIdentifier' group\n\"                                               instead of as 'phpOperator' for '$' and 'phpIdentifier' the rest.\n\"\n\" Note:\n\" Setting php_folding=1 will match a closing } by comparing the indent\n\" before the class or function keyword with the indent of a matching }.\n\" Setting php_folding=2 will match all of pairs of {,} ( see known\n\" bugs ii )\n\"\n\" Known Bugs:\n\"  - setting  php_parent_error_close  on  and  php_parent_error_open  off\n\"    has these two leaks:\n\"     i) A closing ) or ] inside a string match to the last open ( or [\n\"        before the string, when the the closing ) or ] is on the same line\n\"        where the string started. In this case a following ) or ] after\n\"        the string would be highlighted as an error, what is incorrect.\n\"    ii) Same problem if you are setting php_folding = 2 with a closing\n\"        } inside an string on the first line of this string.\n\"\n\"  - A double-quoted string like this:\n\"      \"$foo->someVar->someOtherVar->bar\"\n\"    will highight '->someOtherVar->bar' as though they will be parsed\n\"    as object member variables, but PHP only recognizes the first\n\"    object member variable ($foo->someVar).\n\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nif !exists(\"main_syntax\")\n  let main_syntax = 'php'\nendif\n\nruntime! syntax/html.vim\nunlet! b:current_syntax\n\" HTML syntax file turns on spelling for all top level words, we attempt to turn off\nsyntax spell default\n\n\" Set sync method if none declared\nif !exists(\"php_sync_method\")\n  if exists(\"php_minlines\")\n    let php_sync_method=php_minlines\n  else\n    let php_sync_method=-1\n  endif\nendif\n\nsyn cluster htmlPreproc add=phpRegion\n\n\" Use MySQL as the default SQL syntax file.\n\" See https://github.com/StanAngeloff/php.vim/pull/1\nif !exists('b:sql_type_override') && !exists('g:sql_type_default')\n  let b:sql_type_override='mysql'\nendif\nsyn include @sqlTop syntax/sql.vim\n\nsyn sync clear\nunlet! b:current_syntax\nsyn cluster sqlTop remove=sqlString,sqlComment\nif exists(\"php_sql_query\")\n  syn cluster phpAddStrings contains=@sqlTop\nendif\n\nif exists(\"php_html_in_strings\")\n  syn cluster phpAddStrings add=@htmlTop\nendif\n\nsyn case match\n\n\" Superglobals\nsyn keyword phpSuperglobals GLOBALS _GET _POST _REQUEST _FILES _COOKIE _SERVER _SESSION _ENV HTTP_RAW_POST_DATA php_errormsg http_response_header argc argv contained\n\n\" Magic Constants\nsyn keyword phpMagicConstants __LINE__ __FILE__ __DIR__ __FUNCTION__ __CLASS__ __METHOD__ __NAMESPACE__ contained\n\n\" $_SERVER Variables\nsyn keyword phpServerVars GATEWAY_INTERFACE SERVER_NAME SERVER_SOFTWARE SERVER_PROTOCOL REQUEST_METHOD QUERY_STRING DOCUMENT_ROOT HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CONNECTION HTTP_HOST HTTP_REFERER HTTP_USER_AGENT REMOTE_ADDR REMOTE_PORT SCRIPT_FILENAME SERVER_ADMIN SERVER_PORT SERVER_SIGNATURE PATH_TRANSLATED SCRIPT_NAME REQUEST_URI PHP_SELF contained\n\n\" === BEGIN BUILTIN FUNCTIONS, CLASSES, AND CONSTANTS ===================================\n\nsyn case match\n\n\" Core\nsyn keyword phpConstants E_ERROR E_RECOVERABLE_ERROR E_WARNING E_PARSE E_NOTICE E_STRICT E_DEPRECATED E_CORE_ERROR E_CORE_WARNING E_COMPILE_ERROR E_COMPILE_WARNING E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_USER_DEPRECATED E_ALL DEBUG_BACKTRACE_PROVIDE_OBJECT DEBUG_BACKTRACE_IGNORE_ARGS TRUE FALSE NULL ZEND_THREAD_SAFE ZEND_DEBUG_BUILD PHP_VERSION PHP_MAJOR_VERSION PHP_MINOR_VERSION PHP_RELEASE_VERSION PHP_EXTRA_VERSION PHP_VERSION_ID PHP_ZTS PHP_DEBUG PHP_OS PHP_SAPI DEFAULT_INCLUDE_PATH PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_PREFIX PHP_BINDIR PHP_MANDIR PHP_LIBDIR PHP_DATADIR PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_CONFIG_FILE_SCAN_DIR PHP_SHLIB_SUFFIX PHP_EOL PHP_MAXPATHLEN PHP_INT_MAX PHP_INT_SIZE PHP_BINARY PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_WRITE PHP_OUTPUT_HANDLER_FLUSH PHP_OUTPUT_HANDLER_CLEAN PHP_OUTPUT_HANDLER_FINAL PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END PHP_OUTPUT_HANDLER_CLEANABLE PHP_OUTPUT_HANDLER_FLUSHABLE PHP_OUTPUT_HANDLER_REMOVABLE PHP_OUTPUT_HANDLER_STDFLAGS PHP_OUTPUT_HANDLER_STARTED PHP_OUTPUT_HANDLER_DISABLED UPLOAD_ERR_OK UPLOAD_ERR_INI_SIZE UPLOAD_ERR_FORM_SIZE UPLOAD_ERR_PARTIAL UPLOAD_ERR_NO_FILE UPLOAD_ERR_NO_TMP_DIR UPLOAD_ERR_CANT_WRITE UPLOAD_ERR_EXTENSION STDIN STDOUT STDERR contained\n\n\" curl\nsyn keyword phpConstants CURLOPT_AUTOREFERER CURLOPT_BINARYTRANSFER CURLOPT_BUFFERSIZE CURLOPT_CAINFO CURLOPT_CAPATH CURLOPT_CLOSEPOLICY CURLOPT_CONNECTTIMEOUT CURLOPT_COOKIE CURLOPT_COOKIEFILE CURLOPT_COOKIEJAR CURLOPT_COOKIESESSION CURLOPT_CRLF CURLOPT_CUSTOMREQUEST CURLOPT_DNS_CACHE_TIMEOUT CURLOPT_DNS_USE_GLOBAL_CACHE CURLOPT_EGDSOCKET CURLOPT_ENCODING CURLOPT_FAILONERROR CURLOPT_FILE CURLOPT_FILETIME CURLOPT_FOLLOWLOCATION CURLOPT_FORBID_REUSE CURLOPT_FRESH_CONNECT CURLOPT_FTPAPPEND CURLOPT_FTPLISTONLY CURLOPT_FTPPORT CURLOPT_FTP_USE_EPRT CURLOPT_FTP_USE_EPSV CURLOPT_HEADER CURLOPT_HEADERFUNCTION CURLOPT_HTTP200ALIASES CURLOPT_HTTPGET CURLOPT_HTTPHEADER CURLOPT_HTTPPROXYTUNNEL CURLOPT_HTTP_VERSION CURLOPT_INFILE CURLOPT_INFILESIZE CURLOPT_INTERFACE CURLOPT_KRB4LEVEL CURLOPT_LOW_SPEED_LIMIT CURLOPT_LOW_SPEED_TIME CURLOPT_MAXCONNECTS CURLOPT_MAXREDIRS CURLOPT_NETRC CURLOPT_NOBODY CURLOPT_NOPROGRESS CURLOPT_NOSIGNAL CURLOPT_PORT CURLOPT_POST CURLOPT_POSTFIELDS CURLOPT_POSTQUOTE CURLOPT_PREQUOTE CURLOPT_PRIVATE CURLOPT_PROGRESSFUNCTION CURLOPT_PROXY CURLOPT_PROXYPORT CURLOPT_PROXYTYPE CURLOPT_PROXYUSERPWD CURLOPT_PUT CURLOPT_QUOTE CURLOPT_RANDOM_FILE CURLOPT_RANGE CURLOPT_READDATA CURLOPT_READFUNCTION CURLOPT_REFERER CURLOPT_RESUME_FROM CURLOPT_RETURNTRANSFER CURLOPT_SHARE CURLOPT_SSLCERT CURLOPT_SSLCERTPASSWD CURLOPT_SSLCERTTYPE CURLOPT_SSLENGINE CURLOPT_SSLENGINE_DEFAULT CURLOPT_SSLKEY CURLOPT_SSLKEYPASSWD CURLOPT_SSLKEYTYPE CURLOPT_SSLVERSION CURLOPT_SSL_CIPHER_LIST CURLOPT_SSL_VERIFYHOST CURLOPT_SSL_VERIFYPEER CURLOPT_STDERR CURLOPT_TELNETOPTIONS CURLOPT_TIMECONDITION CURLOPT_TIMEOUT CURLOPT_TIMEVALUE CURLOPT_TRANSFERTEXT CURLOPT_UNRESTRICTED_AUTH CURLOPT_UPLOAD CURLOPT_URL CURLOPT_USERAGENT CURLOPT_USERPWD CURLOPT_VERBOSE CURLOPT_WRITEFUNCTION CURLOPT_WRITEHEADER CURLCLOSEPOLICY_CALLBACK CURLCLOSEPOLICY_LEAST_RECENTLY_USED CURLCLOSEPOLICY_LEAST_TRAFFIC CURLCLOSEPOLICY_OLDEST CURLCLOSEPOLICY_SLOWEST CURLE_ABORTED_BY_CALLBACK CURLE_BAD_CALLING_ORDER CURLE_BAD_CONTENT_ENCODING CURLE_BAD_DOWNLOAD_RESUME CURLE_BAD_FUNCTION_ARGUMENT CURLE_BAD_PASSWORD_ENTERED CURLE_COULDNT_CONNECT CURLE_COULDNT_RESOLVE_HOST CURLE_COULDNT_RESOLVE_PROXY CURLE_FAILED_INIT CURLE_FILE_COULDNT_READ_FILE CURLE_FTP_ACCESS_DENIED CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_FTP_CANT_GET_HOST CURLE_FTP_CANT_RECONNECT CURLE_FTP_COULDNT_GET_SIZE CURLE_FTP_COULDNT_RETR_FILE CURLE_FTP_COULDNT_SET_ASCII CURLE_FTP_COULDNT_SET_BINARY CURLE_FTP_COULDNT_STOR_FILE CURLE_FTP_COULDNT_USE_REST CURLE_FTP_PARTIAL_FILE CURLE_FTP_PORT_FAILED CURLE_FTP_QUOTE_ERROR CURLE_FTP_USER_PASSWORD_INCORRECT CURLE_FTP_WEIRD_227_FORMAT CURLE_FTP_WEIRD_PASS_REPLY CURLE_FTP_WEIRD_PASV_REPLY CURLE_FTP_WEIRD_SERVER_REPLY CURLE_FTP_WEIRD_USER_REPLY CURLE_FTP_WRITE_ERROR CURLE_FUNCTION_NOT_FOUND CURLE_GOT_NOTHING CURLE_HTTP_NOT_FOUND CURLE_HTTP_PORT_FAILED CURLE_HTTP_POST_ERROR CURLE_HTTP_RANGE_ERROR CURLE_HTTP_RETURNED_ERROR CURLE_LDAP_CANNOT_BIND CURLE_LDAP_SEARCH_FAILED CURLE_LIBRARY_NOT_FOUND CURLE_MALFORMAT_USER CURLE_OBSOLETE CURLE_OK CURLE_OPERATION_TIMEDOUT CURLE_OPERATION_TIMEOUTED CURLE_OUT_OF_MEMORY CURLE_PARTIAL_FILE CURLE_READ_ERROR CURLE_RECV_ERROR CURLE_SEND_ERROR CURLE_SHARE_IN_USE CURLE_SSL_CACERT CURLE_SSL_CERTPROBLEM CURLE_SSL_CIPHER CURLE_SSL_CONNECT_ERROR CURLE_SSL_ENGINE_NOTFOUND CURLE_SSL_ENGINE_SETFAILED CURLE_SSL_PEER_CERTIFICATE CURLE_TELNET_OPTION_SYNTAX CURLE_TOO_MANY_REDIRECTS CURLE_UNKNOWN_TELNET_OPTION CURLE_UNSUPPORTED_PROTOCOL CURLE_URL_MALFORMAT CURLE_URL_MALFORMAT_USER CURLE_WRITE_ERROR CURLINFO_CONNECT_TIME CURLINFO_CONTENT_LENGTH_DOWNLOAD CURLINFO_CONTENT_LENGTH_UPLOAD CURLINFO_CONTENT_TYPE CURLINFO_EFFECTIVE_URL CURLINFO_FILETIME CURLINFO_HEADER_OUT CURLINFO_HEADER_SIZE CURLINFO_HTTP_CODE CURLINFO_LASTONE CURLINFO_NAMELOOKUP_TIME CURLINFO_PRETRANSFER_TIME CURLINFO_PRIVATE CURLINFO_REDIRECT_COUNT CURLINFO_REDIRECT_TIME CURLINFO_REQUEST_SIZE CURLINFO_SIZE_DOWNLOAD CURLINFO_SIZE_UPLOAD CURLINFO_SPEED_DOWNLOAD CURLINFO_SPEED_UPLOAD CURLINFO_SSL_VERIFYRESULT CURLINFO_STARTTRANSFER_TIME CURLINFO_TOTAL_TIME CURLMSG_DONE CURLVERSION_NOW CURLM_BAD_EASY_HANDLE CURLM_BAD_HANDLE CURLM_CALL_MULTI_PERFORM CURLM_INTERNAL_ERROR CURLM_OK CURLM_OUT_OF_MEMORY CURLPROXY_HTTP CURLPROXY_SOCKS4 CURLPROXY_SOCKS5 CURLSHOPT_NONE CURLSHOPT_SHARE CURLSHOPT_UNSHARE CURL_HTTP_VERSION_1_0 CURL_HTTP_VERSION_1_1 CURL_HTTP_VERSION_NONE CURL_LOCK_DATA_COOKIE CURL_LOCK_DATA_DNS CURL_LOCK_DATA_SSL_SESSION CURL_NETRC_IGNORED CURL_NETRC_OPTIONAL CURL_NETRC_REQUIRED CURL_SSLVERSION_DEFAULT CURL_SSLVERSION_SSLv2 CURL_SSLVERSION_SSLv3 CURL_SSLVERSION_TLSv1 CURL_TIMECOND_IFMODSINCE CURL_TIMECOND_IFUNMODSINCE CURL_TIMECOND_LASTMOD CURL_TIMECOND_NONE CURL_VERSION_IPV6 CURL_VERSION_KERBEROS4 CURL_VERSION_LIBZ CURL_VERSION_SSL CURLOPT_HTTPAUTH CURLAUTH_ANY CURLAUTH_ANYSAFE CURLAUTH_BASIC CURLAUTH_DIGEST CURLAUTH_GSSNEGOTIATE CURLAUTH_NONE CURLAUTH_NTLM CURLINFO_HTTP_CONNECTCODE CURLOPT_FTP_CREATE_MISSING_DIRS CURLOPT_PROXYAUTH CURLE_FILESIZE_EXCEEDED CURLE_LDAP_INVALID_URL CURLINFO_HTTPAUTH_AVAIL CURLINFO_RESPONSE_CODE CURLINFO_PROXYAUTH_AVAIL CURLOPT_FTP_RESPONSE_TIMEOUT CURLOPT_IPRESOLVE CURLOPT_MAXFILESIZE CURL_IPRESOLVE_V4 CURL_IPRESOLVE_V6 CURL_IPRESOLVE_WHATEVER CURLE_FTP_SSL_FAILED CURLFTPSSL_ALL CURLFTPSSL_CONTROL CURLFTPSSL_NONE CURLFTPSSL_TRY CURLOPT_FTP_SSL CURLOPT_NETRC_FILE CURLFTPAUTH_DEFAULT CURLFTPAUTH_SSL CURLFTPAUTH_TLS CURLOPT_FTPSSLAUTH CURLOPT_FTP_ACCOUNT CURLOPT_TCP_NODELAY CURLINFO_OS_ERRNO CURLINFO_NUM_CONNECTS CURLINFO_SSL_ENGINES CURLINFO_COOKIELIST CURLOPT_COOKIELIST CURLOPT_IGNORE_CONTENT_LENGTH CURLOPT_FTP_SKIP_PASV_IP CURLOPT_FTP_FILEMETHOD CURLOPT_CONNECT_ONLY CURLOPT_LOCALPORT CURLOPT_LOCALPORTRANGE CURLFTPMETHOD_MULTICWD CURLFTPMETHOD_NOCWD CURLFTPMETHOD_SINGLECWD CURLINFO_FTP_ENTRY_PATH CURLOPT_FTP_ALTERNATIVE_TO_USER CURLOPT_MAX_RECV_SPEED_LARGE CURLOPT_MAX_SEND_SPEED_LARGE CURLOPT_SSL_SESSIONID_CACHE CURLMOPT_PIPELINING CURLE_SSH CURLOPT_FTP_SSL_CCC CURLOPT_SSH_AUTH_TYPES CURLOPT_SSH_PRIVATE_KEYFILE CURLOPT_SSH_PUBLIC_KEYFILE CURLFTPSSL_CCC_ACTIVE CURLFTPSSL_CCC_NONE CURLFTPSSL_CCC_PASSIVE CURLOPT_CONNECTTIMEOUT_MS CURLOPT_HTTP_CONTENT_DECODING CURLOPT_HTTP_TRANSFER_DECODING CURLOPT_TIMEOUT_MS CURLMOPT_MAXCONNECTS CURLOPT_KRBLEVEL CURLOPT_NEW_DIRECTORY_PERMS CURLOPT_NEW_FILE_PERMS CURLOPT_APPEND CURLOPT_DIRLISTONLY CURLOPT_USE_SSL CURLUSESSL_ALL CURLUSESSL_CONTROL CURLUSESSL_NONE CURLUSESSL_TRY CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 CURLOPT_PROXY_TRANSFER_MODE CURLPAUSE_ALL CURLPAUSE_CONT CURLPAUSE_RECV CURLPAUSE_RECV_CONT CURLPAUSE_SEND CURLPAUSE_SEND_CONT CURL_READFUNC_PAUSE CURL_WRITEFUNC_PAUSE CURLINFO_REDIRECT_URL CURLINFO_APPCONNECT_TIME CURLINFO_PRIMARY_IP CURLOPT_ADDRESS_SCOPE CURLOPT_CRLFILE CURLOPT_ISSUERCERT CURLOPT_KEYPASSWD CURLSSH_AUTH_ANY CURLSSH_AUTH_DEFAULT CURLSSH_AUTH_HOST CURLSSH_AUTH_KEYBOARD CURLSSH_AUTH_NONE CURLSSH_AUTH_PASSWORD CURLSSH_AUTH_PUBLICKEY CURLINFO_CERTINFO CURLOPT_CERTINFO CURLOPT_PASSWORD CURLOPT_POSTREDIR CURLOPT_PROXYPASSWORD CURLOPT_PROXYUSERNAME CURLOPT_USERNAME CURLAUTH_DIGEST_IE CURLINFO_CONDITION_UNMET CURLOPT_NOPROXY CURLOPT_PROTOCOLS CURLOPT_REDIR_PROTOCOLS CURLOPT_SOCKS5_GSSAPI_NEC CURLOPT_SOCKS5_GSSAPI_SERVICE CURLOPT_TFTP_BLKSIZE CURLPROTO_ALL CURLPROTO_DICT CURLPROTO_FILE CURLPROTO_FTP CURLPROTO_FTPS CURLPROTO_HTTP CURLPROTO_HTTPS CURLPROTO_LDAP CURLPROTO_LDAPS CURLPROTO_SCP CURLPROTO_SFTP CURLPROTO_TELNET CURLPROTO_TFTP CURLOPT_SSH_KNOWNHOSTS CURLINFO_RTSP_CLIENT_CSEQ CURLINFO_RTSP_CSEQ_RECV CURLINFO_RTSP_SERVER_CSEQ CURLINFO_RTSP_SESSION_ID CURLOPT_FTP_USE_PRET CURLOPT_MAIL_FROM CURLOPT_MAIL_RCPT CURLOPT_RTSP_CLIENT_CSEQ CURLOPT_RTSP_REQUEST CURLOPT_RTSP_SERVER_CSEQ CURLOPT_RTSP_SESSION_ID CURLOPT_RTSP_STREAM_URI CURLOPT_RTSP_TRANSPORT CURLPROTO_IMAP CURLPROTO_IMAPS CURLPROTO_POP3 CURLPROTO_POP3S CURLPROTO_RTSP CURLPROTO_SMTP CURLPROTO_SMTPS CURL_RTSPREQ_ANNOUNCE CURL_RTSPREQ_DESCRIBE CURL_RTSPREQ_GET_PARAMETER CURL_RTSPREQ_OPTIONS CURL_RTSPREQ_PAUSE CURL_RTSPREQ_PLAY CURL_RTSPREQ_RECEIVE CURL_RTSPREQ_RECORD CURL_RTSPREQ_SETUP CURL_RTSPREQ_SET_PARAMETER CURL_RTSPREQ_TEARDOWN CURLINFO_LOCAL_IP CURLINFO_LOCAL_PORT CURLINFO_PRIMARY_PORT CURLOPT_FNMATCH_FUNCTION CURLOPT_WILDCARDMATCH CURLPROTO_RTMP CURLPROTO_RTMPE CURLPROTO_RTMPS CURLPROTO_RTMPT CURLPROTO_RTMPTE CURLPROTO_RTMPTS CURL_FNMATCHFUNC_FAIL CURL_FNMATCHFUNC_MATCH CURL_FNMATCHFUNC_NOMATCH CURLPROTO_GOPHER CURLAUTH_ONLY CURLOPT_RESOLVE CURLOPT_TLSAUTH_PASSWORD CURLOPT_TLSAUTH_TYPE CURLOPT_TLSAUTH_USERNAME CURL_TLSAUTH_SRP CURLOPT_ACCEPT_ENCODING CURLOPT_TRANSFER_ENCODING CURLGSSAPI_DELEGATION_FLAG CURLGSSAPI_DELEGATION_POLICY_FLAG CURLOPT_GSSAPI_DELEGATION CURLOPT_SAFE_UPLOAD contained\n\n\" date\nsyn keyword phpConstants DATE_ATOM DATE_COOKIE DATE_ISO8601 DATE_RFC822 DATE_RFC850 DATE_RFC1036 DATE_RFC1123 DATE_RFC2822 DATE_RFC3339 DATE_RSS DATE_W3C SUNFUNCS_RET_TIMESTAMP SUNFUNCS_RET_STRING SUNFUNCS_RET_DOUBLE ATOM COOKIE ISO8601 RFC822 RFC850 RFC1036 RFC1123 RFC2822 RFC3339 RSS W3C AFRICA AMERICA ANTARCTICA ARCTIC ASIA ATLANTIC AUSTRALIA EUROPE INDIAN PACIFIC UTC ALL ALL_WITH_BC PER_COUNTRY EXCLUDE_START_DATE contained\n\n\" dom\nsyn keyword phpConstants XML_ELEMENT_NODE XML_ATTRIBUTE_NODE XML_TEXT_NODE XML_CDATA_SECTION_NODE XML_ENTITY_REF_NODE XML_ENTITY_NODE XML_PI_NODE XML_COMMENT_NODE XML_DOCUMENT_NODE XML_DOCUMENT_TYPE_NODE XML_DOCUMENT_FRAG_NODE XML_NOTATION_NODE XML_HTML_DOCUMENT_NODE XML_DTD_NODE XML_ELEMENT_DECL_NODE XML_ATTRIBUTE_DECL_NODE XML_ENTITY_DECL_NODE XML_NAMESPACE_DECL_NODE XML_LOCAL_NAMESPACE XML_ATTRIBUTE_CDATA XML_ATTRIBUTE_ID XML_ATTRIBUTE_IDREF XML_ATTRIBUTE_IDREFS XML_ATTRIBUTE_ENTITY XML_ATTRIBUTE_NMTOKEN XML_ATTRIBUTE_NMTOKENS XML_ATTRIBUTE_ENUMERATION XML_ATTRIBUTE_NOTATION DOM_PHP_ERR DOM_INDEX_SIZE_ERR DOMSTRING_SIZE_ERR DOM_HIERARCHY_REQUEST_ERR DOM_WRONG_DOCUMENT_ERR DOM_INVALID_CHARACTER_ERR DOM_NO_DATA_ALLOWED_ERR DOM_NO_MODIFICATION_ALLOWED_ERR DOM_NOT_FOUND_ERR DOM_NOT_SUPPORTED_ERR DOM_INUSE_ATTRIBUTE_ERR DOM_INVALID_STATE_ERR DOM_SYNTAX_ERR DOM_INVALID_MODIFICATION_ERR DOM_NAMESPACE_ERR DOM_INVALID_ACCESS_ERR DOM_VALIDATION_ERR contained\n\n\" gd\nsyn keyword phpConstants IMG_GIF IMG_JPG IMG_JPEG IMG_PNG IMG_WBMP IMG_XPM IMG_COLOR_TILED IMG_COLOR_STYLED IMG_COLOR_BRUSHED IMG_COLOR_STYLEDBRUSHED IMG_COLOR_TRANSPARENT IMG_ARC_ROUNDED IMG_ARC_PIE IMG_ARC_CHORD IMG_ARC_NOFILL IMG_ARC_EDGED IMG_GD2_RAW IMG_GD2_COMPRESSED IMG_FLIP_HORIZONTAL IMG_FLIP_VERTICAL IMG_FLIP_BOTH IMG_EFFECT_REPLACE IMG_EFFECT_ALPHABLEND IMG_EFFECT_NORMAL IMG_EFFECT_OVERLAY IMG_CROP_DEFAULT IMG_CROP_TRANSPARENT IMG_CROP_BLACK IMG_CROP_WHITE IMG_CROP_SIDES IMG_CROP_THRESHOLD IMG_BELL IMG_BESSEL IMG_BILINEAR_FIXED IMG_BICUBIC IMG_BICUBIC_FIXED IMG_BLACKMAN IMG_BOX IMG_BSPLINE IMG_CATMULLROM IMG_GAUSSIAN IMG_GENERALIZED_CUBIC IMG_HERMITE IMG_HAMMING IMG_HANNING IMG_MITCHELL IMG_POWER IMG_QUADRATIC IMG_SINC IMG_NEAREST_NEIGHBOUR IMG_WEIGHTED4 IMG_TRIANGLE IMG_AFFINE_TRANSLATE IMG_AFFINE_SCALE IMG_AFFINE_ROTATE IMG_AFFINE_SHEAR_HORIZONTAL IMG_AFFINE_SHEAR_VERTICAL GD_BUNDLED IMG_FILTER_NEGATE IMG_FILTER_GRAYSCALE IMG_FILTER_BRIGHTNESS IMG_FILTER_CONTRAST IMG_FILTER_COLORIZE IMG_FILTER_EDGEDETECT IMG_FILTER_GAUSSIAN_BLUR IMG_FILTER_SELECTIVE_BLUR IMG_FILTER_EMBOSS IMG_FILTER_MEAN_REMOVAL IMG_FILTER_SMOOTH IMG_FILTER_PIXELATE GD_VERSION GD_MAJOR_VERSION GD_MINOR_VERSION GD_RELEASE_VERSION GD_EXTRA_VERSION PNG_NO_FILTER PNG_FILTER_NONE PNG_FILTER_SUB PNG_FILTER_UP PNG_FILTER_AVG PNG_FILTER_PAETH PNG_ALL_FILTERS contained\n\n\" hash\nsyn keyword phpConstants HASH_HMAC MHASH_CRC32 MHASH_MD5 MHASH_SHA1 MHASH_HAVAL256 MHASH_RIPEMD160 MHASH_TIGER MHASH_GOST MHASH_CRC32B MHASH_HAVAL224 MHASH_HAVAL192 MHASH_HAVAL160 MHASH_HAVAL128 MHASH_TIGER128 MHASH_TIGER160 MHASH_MD4 MHASH_SHA256 MHASH_ADLER32 MHASH_SHA224 MHASH_SHA512 MHASH_SHA384 MHASH_WHIRLPOOL MHASH_RIPEMD128 MHASH_RIPEMD256 MHASH_RIPEMD320 MHASH_SNEFRU256 MHASH_MD2 MHASH_FNV132 MHASH_FNV1A32 MHASH_FNV164 MHASH_FNV1A64 MHASH_JOAAT contained\n\n\" iconv\nsyn keyword phpConstants ICONV_IMPL ICONV_VERSION ICONV_MIME_DECODE_STRICT ICONV_MIME_DECODE_CONTINUE_ON_ERROR contained\n\n\" json\nsyn keyword phpConstants JSON_HEX_TAG JSON_HEX_AMP JSON_HEX_APOS JSON_HEX_QUOT JSON_FORCE_OBJECT JSON_NUMERIC_CHECK JSON_UNESCAPED_SLASHES JSON_PRETTY_PRINT JSON_UNESCAPED_UNICODE JSON_PARTIAL_OUTPUT_ON_ERROR JSON_ERROR_STATE_MISMATCH JSON_ERROR_CTRL_CHAR JSON_ERROR_UTF8 JSON_ERROR_RECURSION JSON_ERROR_INF_OR_NAN JSON_ERROR_UNSUPPORTED_TYPE JSON_ERROR_NONE JSON_ERROR_DEPTH JSON_ERROR_SYNTAX JSON_OBJECT_AS_ARRAY JSON_PARSER_NOTSTRICT JSON_BIGINT_AS_STRING JSON_C_BUNDLED JSON_C_VERSION JSON_PARSER_SUCCESS JSON_PARSER_CONTINUE contained\n\n\" libxml\nsyn keyword phpConstants LIBXML_VERSION LIBXML_DOTTED_VERSION LIBXML_LOADED_VERSION LIBXML_NOENT LIBXML_DTDLOAD LIBXML_DTDATTR LIBXML_DTDVALID LIBXML_NOERROR LIBXML_NOWARNING LIBXML_NOBLANKS LIBXML_XINCLUDE LIBXML_NSCLEAN LIBXML_NOCDATA LIBXML_NONET LIBXML_PEDANTIC LIBXML_COMPACT LIBXML_NOXMLDECL LIBXML_PARSEHUGE LIBXML_NOEMPTYTAG LIBXML_SCHEMA_CREATE LIBXML_HTML_NOIMPLIED LIBXML_HTML_NODEFDTD LIBXML_ERR_NONE LIBXML_ERR_WARNING LIBXML_ERR_ERROR LIBXML_ERR_FATAL contained\n\n\" mbstring\nsyn keyword phpConstants MB_OVERLOAD_MAIL MB_OVERLOAD_STRING MB_OVERLOAD_REGEX MB_CASE_UPPER MB_CASE_LOWER MB_CASE_TITLE contained\n\n\" mcrypt\nsyn keyword phpConstants MCRYPT_ENCRYPT MCRYPT_DECRYPT MCRYPT_DEV_RANDOM MCRYPT_DEV_URANDOM MCRYPT_RAND MCRYPT_3DES MCRYPT_ARCFOUR_IV MCRYPT_ARCFOUR MCRYPT_BLOWFISH MCRYPT_BLOWFISH_COMPAT MCRYPT_CAST_128 MCRYPT_CAST_256 MCRYPT_CRYPT MCRYPT_DES MCRYPT_ENIGNA MCRYPT_GOST MCRYPT_LOKI97 MCRYPT_PANAMA MCRYPT_RC2 MCRYPT_RIJNDAEL_128 MCRYPT_RIJNDAEL_192 MCRYPT_RIJNDAEL_256 MCRYPT_SAFER64 MCRYPT_SAFER128 MCRYPT_SAFERPLUS MCRYPT_SERPENT MCRYPT_THREEWAY MCRYPT_TRIPLEDES MCRYPT_TWOFISH MCRYPT_WAKE MCRYPT_XTEA MCRYPT_IDEA MCRYPT_MARS MCRYPT_RC6 MCRYPT_SKIPJACK MCRYPT_MODE_CBC MCRYPT_MODE_CFB MCRYPT_MODE_ECB MCRYPT_MODE_NOFB MCRYPT_MODE_OFB MCRYPT_MODE_STREAM contained\n\n\" mysql\nsyn keyword phpConstants MYSQL_ASSOC MYSQL_NUM MYSQL_BOTH MYSQL_CLIENT_COMPRESS MYSQL_CLIENT_SSL MYSQL_CLIENT_INTERACTIVE MYSQL_CLIENT_IGNORE_SPACE contained\n\n\" mysqli\nsyn keyword phpConstants MYSQLI_READ_DEFAULT_GROUP MYSQLI_READ_DEFAULT_FILE MYSQLI_OPT_CONNECT_TIMEOUT MYSQLI_OPT_LOCAL_INFILE MYSQLI_INIT_COMMAND MYSQLI_OPT_SSL_VERIFY_SERVER_CERT MYSQLI_CLIENT_SSL MYSQLI_CLIENT_COMPRESS MYSQLI_CLIENT_INTERACTIVE MYSQLI_CLIENT_IGNORE_SPACE MYSQLI_CLIENT_NO_SCHEMA MYSQLI_CLIENT_FOUND_ROWS MYSQLI_STORE_RESULT MYSQLI_USE_RESULT MYSQLI_ASSOC MYSQLI_NUM MYSQLI_BOTH MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH MYSQLI_STMT_ATTR_CURSOR_TYPE MYSQLI_CURSOR_TYPE_NO_CURSOR MYSQLI_CURSOR_TYPE_READ_ONLY MYSQLI_CURSOR_TYPE_FOR_UPDATE MYSQLI_CURSOR_TYPE_SCROLLABLE MYSQLI_STMT_ATTR_PREFETCH_ROWS MYSQLI_NOT_NULL_FLAG MYSQLI_PRI_KEY_FLAG MYSQLI_UNIQUE_KEY_FLAG MYSQLI_MULTIPLE_KEY_FLAG MYSQLI_BLOB_FLAG MYSQLI_UNSIGNED_FLAG MYSQLI_ZEROFILL_FLAG MYSQLI_AUTO_INCREMENT_FLAG MYSQLI_TIMESTAMP_FLAG MYSQLI_SET_FLAG MYSQLI_NUM_FLAG MYSQLI_PART_KEY_FLAG MYSQLI_GROUP_FLAG MYSQLI_ENUM_FLAG MYSQLI_BINARY_FLAG MYSQLI_NO_DEFAULT_VALUE_FLAG MYSQLI_TYPE_DECIMAL MYSQLI_TYPE_TINY MYSQLI_TYPE_SHORT MYSQLI_TYPE_LONG MYSQLI_TYPE_FLOAT MYSQLI_TYPE_DOUBLE MYSQLI_TYPE_NULL MYSQLI_TYPE_TIMESTAMP MYSQLI_TYPE_LONGLONG MYSQLI_TYPE_INT24 MYSQLI_TYPE_DATE MYSQLI_TYPE_TIME MYSQLI_TYPE_DATETIME MYSQLI_TYPE_YEAR MYSQLI_TYPE_NEWDATE MYSQLI_TYPE_ENUM MYSQLI_TYPE_SET MYSQLI_TYPE_TINY_BLOB MYSQLI_TYPE_MEDIUM_BLOB MYSQLI_TYPE_LONG_BLOB MYSQLI_TYPE_BLOB MYSQLI_TYPE_VAR_STRING MYSQLI_TYPE_STRING MYSQLI_TYPE_CHAR MYSQLI_TYPE_INTERVAL MYSQLI_TYPE_GEOMETRY MYSQLI_TYPE_NEWDECIMAL MYSQLI_TYPE_BIT MYSQLI_SET_CHARSET_NAME MYSQLI_SET_CHARSET_DIR MYSQLI_NO_DATA MYSQLI_DATA_TRUNCATED MYSQLI_REPORT_INDEX MYSQLI_REPORT_ERROR MYSQLI_REPORT_STRICT MYSQLI_REPORT_ALL MYSQLI_REPORT_OFF MYSQLI_DEBUG_TRACE_ENABLED MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED MYSQLI_SERVER_QUERY_NO_INDEX_USED MYSQLI_SERVER_QUERY_WAS_SLOW MYSQLI_SERVER_PS_OUT_PARAMS MYSQLI_REFRESH_GRANT MYSQLI_REFRESH_LOG MYSQLI_REFRESH_TABLES MYSQLI_REFRESH_HOSTS MYSQLI_REFRESH_STATUS MYSQLI_REFRESH_THREADS MYSQLI_REFRESH_SLAVE MYSQLI_REFRESH_MASTER MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT MYSQLI_TRANS_START_READ_WRITE MYSQLI_TRANS_START_READ_ONLY MYSQLI_TRANS_COR_AND_CHAIN MYSQLI_TRANS_COR_AND_NO_CHAIN MYSQLI_TRANS_COR_RELEASE MYSQLI_TRANS_COR_NO_RELEASE contained\n\n\" openssl\nsyn keyword phpConstants OPENSSL_VERSION_TEXT OPENSSL_VERSION_NUMBER X509_PURPOSE_SSL_CLIENT X509_PURPOSE_SSL_SERVER X509_PURPOSE_NS_SSL_SERVER X509_PURPOSE_SMIME_SIGN X509_PURPOSE_SMIME_ENCRYPT X509_PURPOSE_CRL_SIGN X509_PURPOSE_ANY OPENSSL_ALGO_SHA1 OPENSSL_ALGO_MD5 OPENSSL_ALGO_MD4 OPENSSL_ALGO_DSS1 OPENSSL_ALGO_SHA224 OPENSSL_ALGO_SHA256 OPENSSL_ALGO_SHA384 OPENSSL_ALGO_SHA512 OPENSSL_ALGO_RMD160 PKCS7_DETACHED PKCS7_TEXT PKCS7_NOINTERN PKCS7_NOVERIFY PKCS7_NOCHAIN PKCS7_NOCERTS PKCS7_NOATTR PKCS7_BINARY PKCS7_NOSIGS OPENSSL_PKCS1_PADDING OPENSSL_SSLV23_PADDING OPENSSL_NO_PADDING OPENSSL_PKCS1_OAEP_PADDING OPENSSL_CIPHER_RC2_40 OPENSSL_CIPHER_RC2_128 OPENSSL_CIPHER_RC2_64 OPENSSL_CIPHER_DES OPENSSL_CIPHER_3DES OPENSSL_CIPHER_AES_128_CBC OPENSSL_CIPHER_AES_192_CBC OPENSSL_CIPHER_AES_256_CBC OPENSSL_KEYTYPE_RSA OPENSSL_KEYTYPE_DSA OPENSSL_KEYTYPE_DH OPENSSL_KEYTYPE_EC OPENSSL_RAW_DATA OPENSSL_ZERO_PADDING OPENSSL_TLSEXT_SERVER_NAME contained\n\n\" pcre\nsyn keyword phpConstants PREG_PATTERN_ORDER PREG_SET_ORDER PREG_OFFSET_CAPTURE PREG_SPLIT_NO_EMPTY PREG_SPLIT_DELIM_CAPTURE PREG_SPLIT_OFFSET_CAPTURE PREG_GREP_INVERT PREG_NO_ERROR PREG_INTERNAL_ERROR PREG_BACKTRACK_LIMIT_ERROR PREG_RECURSION_LIMIT_ERROR PREG_BAD_UTF8_ERROR PREG_BAD_UTF8_OFFSET_ERROR PCRE_VERSION contained\n\n\" PDO\nsyn keyword phpConstants PARAM_BOOL PARAM_NULL PARAM_INT PARAM_STR PARAM_LOB PARAM_STMT PARAM_INPUT_OUTPUT PARAM_EVT_ALLOC PARAM_EVT_FREE PARAM_EVT_EXEC_PRE PARAM_EVT_EXEC_POST PARAM_EVT_FETCH_PRE PARAM_EVT_FETCH_POST PARAM_EVT_NORMALIZE FETCH_LAZY FETCH_ASSOC FETCH_NUM FETCH_BOTH FETCH_OBJ FETCH_BOUND FETCH_COLUMN FETCH_CLASS FETCH_INTO FETCH_FUNC FETCH_GROUP FETCH_UNIQUE FETCH_KEY_PAIR FETCH_CLASSTYPE FETCH_SERIALIZE FETCH_PROPS_LATE FETCH_NAMED ATTR_AUTOCOMMIT ATTR_PREFETCH ATTR_TIMEOUT ATTR_ERRMODE ATTR_SERVER_VERSION ATTR_CLIENT_VERSION ATTR_SERVER_INFO ATTR_CONNECTION_STATUS ATTR_CASE ATTR_CURSOR_NAME ATTR_CURSOR ATTR_ORACLE_NULLS ATTR_PERSISTENT ATTR_STATEMENT_CLASS ATTR_FETCH_TABLE_NAMES ATTR_FETCH_CATALOG_NAMES ATTR_DRIVER_NAME ATTR_STRINGIFY_FETCHES ATTR_MAX_COLUMN_LEN ATTR_EMULATE_PREPARES ATTR_DEFAULT_FETCH_MODE ERRMODE_SILENT ERRMODE_WARNING ERRMODE_EXCEPTION CASE_NATURAL CASE_LOWER CASE_UPPER NULL_NATURAL NULL_EMPTY_STRING NULL_TO_STRING ERR_NONE FETCH_ORI_NEXT FETCH_ORI_PRIOR FETCH_ORI_FIRST FETCH_ORI_LAST FETCH_ORI_ABS FETCH_ORI_REL CURSOR_FWDONLY CURSOR_SCROLL MYSQL_ATTR_USE_BUFFERED_QUERY MYSQL_ATTR_LOCAL_INFILE MYSQL_ATTR_INIT_COMMAND MYSQL_ATTR_MAX_BUFFER_SIZE MYSQL_ATTR_READ_DEFAULT_FILE MYSQL_ATTR_READ_DEFAULT_GROUP MYSQL_ATTR_COMPRESS MYSQL_ATTR_DIRECT_QUERY MYSQL_ATTR_FOUND_ROWS MYSQL_ATTR_IGNORE_SPACE MYSQL_ATTR_SSL_KEY MYSQL_ATTR_SSL_CERT MYSQL_ATTR_SSL_CA MYSQL_ATTR_SSL_CAPATH MYSQL_ATTR_SSL_CIPHER PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT PGSQL_TRANSACTION_IDLE PGSQL_TRANSACTION_ACTIVE PGSQL_TRANSACTION_INTRANS PGSQL_TRANSACTION_INERROR PGSQL_TRANSACTION_UNKNOWN contained\n\n\" pgsql\nsyn keyword phpConstants PGSQL_LIBPQ_VERSION PGSQL_LIBPQ_VERSION_STR PGSQL_CONNECT_FORCE_NEW PGSQL_ASSOC PGSQL_NUM PGSQL_BOTH PGSQL_CONNECTION_BAD PGSQL_CONNECTION_OK PGSQL_TRANSACTION_IDLE PGSQL_TRANSACTION_ACTIVE PGSQL_TRANSACTION_INTRANS PGSQL_TRANSACTION_INERROR PGSQL_TRANSACTION_UNKNOWN PGSQL_ERRORS_TERSE PGSQL_ERRORS_DEFAULT PGSQL_ERRORS_VERBOSE PGSQL_SEEK_SET PGSQL_SEEK_CUR PGSQL_SEEK_END PGSQL_STATUS_LONG PGSQL_STATUS_STRING PGSQL_EMPTY_QUERY PGSQL_COMMAND_OK PGSQL_TUPLES_OK PGSQL_COPY_OUT PGSQL_COPY_IN PGSQL_BAD_RESPONSE PGSQL_NONFATAL_ERROR PGSQL_FATAL_ERROR PGSQL_DIAG_SEVERITY PGSQL_DIAG_SQLSTATE PGSQL_DIAG_MESSAGE_PRIMARY PGSQL_DIAG_MESSAGE_DETAIL PGSQL_DIAG_MESSAGE_HINT PGSQL_DIAG_STATEMENT_POSITION PGSQL_DIAG_INTERNAL_POSITION PGSQL_DIAG_INTERNAL_QUERY PGSQL_DIAG_CONTEXT PGSQL_DIAG_SOURCE_FILE PGSQL_DIAG_SOURCE_LINE PGSQL_DIAG_SOURCE_FUNCTION PGSQL_CONV_IGNORE_DEFAULT PGSQL_CONV_FORCE_NULL PGSQL_CONV_IGNORE_NOT_NULL PGSQL_DML_NO_CONV PGSQL_DML_EXEC PGSQL_DML_ASYNC PGSQL_DML_STRING contained\n\n\" Phar\nsyn keyword phpConstants CURRENT_MODE_MASK CURRENT_AS_PATHNAME CURRENT_AS_FILEINFO CURRENT_AS_SELF KEY_MODE_MASK KEY_AS_PATHNAME FOLLOW_SYMLINKS KEY_AS_FILENAME NEW_CURRENT_AND_KEY OTHER_MODE_MASK SKIP_DOTS UNIX_PATHS BZ2 GZ NONE PHAR TAR ZIP COMPRESSED PHP PHPS MD5 OPENSSL SHA1 SHA256 SHA512 contained\n\n\" Reflection\nsyn keyword phpConstants IS_DEPRECATED IS_STATIC IS_PUBLIC IS_PROTECTED IS_PRIVATE IS_ABSTRACT IS_FINAL IS_IMPLICIT_ABSTRACT IS_EXPLICIT_ABSTRACT contained\n\n\" session\nsyn keyword phpConstants PHP_SESSION_DISABLED PHP_SESSION_NONE PHP_SESSION_ACTIVE contained\n\n\" soap\nsyn keyword phpConstants SOAP_1_1 SOAP_1_2 SOAP_PERSISTENCE_SESSION SOAP_PERSISTENCE_REQUEST SOAP_FUNCTIONS_ALL SOAP_ENCODED SOAP_LITERAL SOAP_RPC SOAP_DOCUMENT SOAP_ACTOR_NEXT SOAP_ACTOR_NONE SOAP_ACTOR_UNLIMATERECEIVER SOAP_COMPRESSION_ACCEPT SOAP_COMPRESSION_GZIP SOAP_COMPRESSION_DEFLATE SOAP_AUTHENTICATION_BASIC SOAP_AUTHENTICATION_DIGEST UNKNOWN_TYPE XSD_STRING XSD_BOOLEAN XSD_DECIMAL XSD_FLOAT XSD_DOUBLE XSD_DURATION XSD_DATETIME XSD_TIME XSD_DATE XSD_GYEARMONTH XSD_GYEAR XSD_GMONTHDAY XSD_GDAY XSD_GMONTH XSD_HEXBINARY XSD_BASE64BINARY XSD_ANYURI XSD_QNAME XSD_NOTATION XSD_NORMALIZEDSTRING XSD_TOKEN XSD_LANGUAGE XSD_NMTOKEN XSD_NAME XSD_NCNAME XSD_ID XSD_IDREF XSD_IDREFS XSD_ENTITY XSD_ENTITIES XSD_INTEGER XSD_NONPOSITIVEINTEGER XSD_NEGATIVEINTEGER XSD_LONG XSD_INT XSD_SHORT XSD_BYTE XSD_NONNEGATIVEINTEGER XSD_UNSIGNEDLONG XSD_UNSIGNEDINT XSD_UNSIGNEDSHORT XSD_UNSIGNEDBYTE XSD_POSITIVEINTEGER XSD_NMTOKENS XSD_ANYTYPE XSD_ANYXML APACHE_MAP SOAP_ENC_OBJECT SOAP_ENC_ARRAY XSD_1999_TIMEINSTANT XSD_NAMESPACE XSD_1999_NAMESPACE SOAP_SINGLE_ELEMENT_ARRAYS SOAP_WAIT_ONE_WAY_CALLS SOAP_USE_XSI_ARRAY_TYPE WSDL_CACHE_NONE WSDL_CACHE_DISK WSDL_CACHE_MEMORY WSDL_CACHE_BOTH SOAP_SSL_METHOD_TLS SOAP_SSL_METHOD_SSLv2 SOAP_SSL_METHOD_SSLv3 SOAP_SSL_METHOD_SSLv23 contained\n\n\" sockets\nsyn keyword phpConstants AF_UNIX AF_INET AF_INET6 SOCK_STREAM SOCK_DGRAM SOCK_RAW SOCK_SEQPACKET SOCK_RDM MSG_OOB MSG_WAITALL MSG_CTRUNC MSG_TRUNC MSG_PEEK MSG_DONTROUTE MSG_EOR MSG_EOF MSG_CONFIRM MSG_ERRQUEUE MSG_NOSIGNAL MSG_DONTWAIT MSG_MORE MSG_WAITFORONE MSG_CMSG_CLOEXEC SO_DEBUG SO_REUSEADDR SO_KEEPALIVE SO_DONTROUTE SO_LINGER SO_BROADCAST SO_OOBINLINE SO_SNDBUF SO_RCVBUF SO_SNDLOWAT SO_RCVLOWAT SO_SNDTIMEO SO_RCVTIMEO SO_TYPE SO_ERROR SO_BINDTODEVICE SOL_SOCKET SOMAXCONN TCP_NODELAY PHP_NORMAL_READ PHP_BINARY_READ MCAST_JOIN_GROUP MCAST_LEAVE_GROUP MCAST_BLOCK_SOURCE MCAST_UNBLOCK_SOURCE MCAST_JOIN_SOURCE_GROUP MCAST_LEAVE_SOURCE_GROUP IP_MULTICAST_IF IP_MULTICAST_TTL IP_MULTICAST_LOOP IPV6_MULTICAST_IF IPV6_MULTICAST_HOPS IPV6_MULTICAST_LOOP SOCKET_EPERM SOCKET_ENOENT SOCKET_EINTR SOCKET_EIO SOCKET_ENXIO SOCKET_E2BIG SOCKET_EBADF SOCKET_EAGAIN SOCKET_ENOMEM SOCKET_EACCES SOCKET_EFAULT SOCKET_ENOTBLK SOCKET_EBUSY SOCKET_EEXIST SOCKET_EXDEV SOCKET_ENODEV SOCKET_ENOTDIR SOCKET_EISDIR SOCKET_EINVAL SOCKET_ENFILE SOCKET_EMFILE SOCKET_ENOTTY SOCKET_ENOSPC SOCKET_ESPIPE SOCKET_EROFS SOCKET_EMLINK SOCKET_EPIPE SOCKET_ENAMETOOLONG SOCKET_ENOLCK SOCKET_ENOSYS SOCKET_ENOTEMPTY SOCKET_ELOOP SOCKET_EWOULDBLOCK SOCKET_ENOMSG SOCKET_EIDRM SOCKET_ECHRNG SOCKET_EL2NSYNC SOCKET_EL3HLT SOCKET_EL3RST SOCKET_ELNRNG SOCKET_EUNATCH SOCKET_ENOCSI SOCKET_EL2HLT SOCKET_EBADE SOCKET_EBADR SOCKET_EXFULL SOCKET_ENOANO SOCKET_EBADRQC SOCKET_EBADSLT SOCKET_ENOSTR SOCKET_ENODATA SOCKET_ETIME SOCKET_ENOSR SOCKET_ENONET SOCKET_EREMOTE SOCKET_ENOLINK SOCKET_EADV SOCKET_ESRMNT SOCKET_ECOMM SOCKET_EPROTO SOCKET_EMULTIHOP SOCKET_EBADMSG SOCKET_ENOTUNIQ SOCKET_EBADFD SOCKET_EREMCHG SOCKET_ERESTART SOCKET_ESTRPIPE SOCKET_EUSERS SOCKET_ENOTSOCK SOCKET_EDESTADDRREQ SOCKET_EMSGSIZE SOCKET_EPROTOTYPE SOCKET_ENOPROTOOPT SOCKET_EPROTONOSUPPORT SOCKET_ESOCKTNOSUPPORT SOCKET_EOPNOTSUPP SOCKET_EPFNOSUPPORT SOCKET_EAFNOSUPPORT SOCKET_EADDRINUSE SOCKET_EADDRNOTAVAIL SOCKET_ENETDOWN SOCKET_ENETUNREACH SOCKET_ENETRESET SOCKET_ECONNABORTED SOCKET_ECONNRESET SOCKET_ENOBUFS SOCKET_EISCONN SOCKET_ENOTCONN SOCKET_ESHUTDOWN SOCKET_ETOOMANYREFS SOCKET_ETIMEDOUT SOCKET_ECONNREFUSED SOCKET_EHOSTDOWN SOCKET_EHOSTUNREACH SOCKET_EALREADY SOCKET_EINPROGRESS SOCKET_EISNAM SOCKET_EREMOTEIO SOCKET_EDQUOT SOCKET_ENOMEDIUM SOCKET_EMEDIUMTYPE IPPROTO_IP IPPROTO_IPV6 SOL_TCP SOL_UDP IPV6_UNICAST_HOPS IPV6_RECVPKTINFO IPV6_PKTINFO IPV6_RECVHOPLIMIT IPV6_HOPLIMIT IPV6_RECVTCLASS IPV6_TCLASS SCM_RIGHTS SCM_CREDENTIALS SO_PASSCRED contained\n\n\" SPL\nsyn keyword phpConstants LEAVES_ONLY SELF_FIRST CHILD_FIRST CATCH_GET_CHILD CALL_TOSTRING TOSTRING_USE_KEY TOSTRING_USE_CURRENT TOSTRING_USE_INNER FULL_CACHE USE_KEY MATCH GET_MATCH ALL_MATCHES SPLIT REPLACE BYPASS_CURRENT BYPASS_KEY PREFIX_LEFT PREFIX_MID_HAS_NEXT PREFIX_MID_LAST PREFIX_END_HAS_NEXT PREFIX_END_LAST PREFIX_RIGHT STD_PROP_LIST ARRAY_AS_PROPS CHILD_ARRAYS_ONLY CURRENT_MODE_MASK CURRENT_AS_PATHNAME CURRENT_AS_FILEINFO CURRENT_AS_SELF KEY_MODE_MASK KEY_AS_PATHNAME FOLLOW_SYMLINKS KEY_AS_FILENAME NEW_CURRENT_AND_KEY OTHER_MODE_MASK SKIP_DOTS UNIX_PATHS DROP_NEW_LINE READ_AHEAD SKIP_EMPTY READ_CSV IT_MODE_LIFO IT_MODE_FIFO IT_MODE_DELETE IT_MODE_KEEP EXTR_BOTH EXTR_PRIORITY EXTR_DATA MIT_NEED_ANY MIT_NEED_ALL MIT_KEYS_NUMERIC MIT_KEYS_ASSOC contained\n\n\" sqlite3\nsyn keyword phpConstants SQLITE3_ASSOC SQLITE3_NUM SQLITE3_BOTH SQLITE3_INTEGER SQLITE3_FLOAT SQLITE3_TEXT SQLITE3_BLOB SQLITE3_NULL SQLITE3_OPEN_READONLY SQLITE3_OPEN_READWRITE SQLITE3_OPEN_CREATE contained\n\n\" standard\nsyn keyword phpConstants CONNECTION_ABORTED CONNECTION_NORMAL CONNECTION_TIMEOUT INI_USER INI_PERDIR INI_SYSTEM INI_ALL INI_SCANNER_NORMAL INI_SCANNER_RAW PHP_URL_SCHEME PHP_URL_HOST PHP_URL_PORT PHP_URL_USER PHP_URL_PASS PHP_URL_PATH PHP_URL_QUERY PHP_URL_FRAGMENT PHP_QUERY_RFC1738 PHP_QUERY_RFC3986 M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4 M_1_PI M_2_PI M_SQRTPI M_2_SQRTPI M_LNPI M_EULER M_SQRT2 M_SQRT1_2 M_SQRT3 INF NAN PHP_ROUND_HALF_UP PHP_ROUND_HALF_DOWN PHP_ROUND_HALF_EVEN PHP_ROUND_HALF_ODD INFO_GENERAL INFO_CREDITS INFO_CONFIGURATION INFO_MODULES INFO_ENVIRONMENT INFO_VARIABLES INFO_LICENSE INFO_ALL CREDITS_GROUP CREDITS_GENERAL CREDITS_SAPI CREDITS_MODULES CREDITS_DOCS CREDITS_FULLPAGE CREDITS_QA CREDITS_ALL HTML_SPECIALCHARS HTML_ENTITIES ENT_COMPAT ENT_QUOTES ENT_NOQUOTES ENT_IGNORE ENT_SUBSTITUTE ENT_DISALLOWED ENT_HTML401 ENT_XML1 ENT_XHTML ENT_HTML5 STR_PAD_LEFT STR_PAD_RIGHT STR_PAD_BOTH PATHINFO_DIRNAME PATHINFO_BASENAME PATHINFO_EXTENSION PATHINFO_FILENAME CHAR_MAX LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_ALL LC_MESSAGES SEEK_SET SEEK_CUR SEEK_END LOCK_SH LOCK_EX LOCK_UN LOCK_NB STREAM_NOTIFY_CONNECT STREAM_NOTIFY_AUTH_REQUIRED STREAM_NOTIFY_AUTH_RESULT STREAM_NOTIFY_MIME_TYPE_IS STREAM_NOTIFY_FILE_SIZE_IS STREAM_NOTIFY_REDIRECTED STREAM_NOTIFY_PROGRESS STREAM_NOTIFY_FAILURE STREAM_NOTIFY_COMPLETED STREAM_NOTIFY_RESOLVE STREAM_NOTIFY_SEVERITY_INFO STREAM_NOTIFY_SEVERITY_WARN STREAM_NOTIFY_SEVERITY_ERR STREAM_FILTER_READ STREAM_FILTER_WRITE STREAM_FILTER_ALL STREAM_CLIENT_PERSISTENT STREAM_CLIENT_ASYNC_CONNECT STREAM_CLIENT_CONNECT STREAM_CRYPTO_METHOD_SSLv2_CLIENT STREAM_CRYPTO_METHOD_SSLv3_CLIENT STREAM_CRYPTO_METHOD_SSLv23_CLIENT STREAM_CRYPTO_METHOD_TLS_CLIENT STREAM_CRYPTO_METHOD_SSLv2_SERVER STREAM_CRYPTO_METHOD_SSLv3_SERVER STREAM_CRYPTO_METHOD_SSLv23_SERVER STREAM_CRYPTO_METHOD_TLS_SERVER STREAM_SHUT_RD STREAM_SHUT_WR STREAM_SHUT_RDWR STREAM_PF_INET STREAM_PF_INET6 STREAM_PF_UNIX STREAM_IPPROTO_IP STREAM_IPPROTO_TCP STREAM_IPPROTO_UDP STREAM_IPPROTO_ICMP STREAM_IPPROTO_RAW STREAM_SOCK_STREAM STREAM_SOCK_DGRAM STREAM_SOCK_RAW STREAM_SOCK_SEQPACKET STREAM_SOCK_RDM STREAM_PEEK STREAM_OOB STREAM_SERVER_BIND STREAM_SERVER_LISTEN FILE_USE_INCLUDE_PATH FILE_IGNORE_NEW_LINES FILE_SKIP_EMPTY_LINES FILE_APPEND FILE_NO_DEFAULT_CONTEXT FILE_TEXT FILE_BINARY FNM_NOESCAPE FNM_PATHNAME FNM_PERIOD FNM_CASEFOLD PSFS_PASS_ON PSFS_FEED_ME PSFS_ERR_FATAL PSFS_FLAG_NORMAL PSFS_FLAG_FLUSH_INC PSFS_FLAG_FLUSH_CLOSE PASSWORD_DEFAULT PASSWORD_BCRYPT PASSWORD_BCRYPT_DEFAULT_COST ABDAY_1 ABDAY_2 ABDAY_3 ABDAY_4 ABDAY_5 ABDAY_6 ABDAY_7 DAY_1 DAY_2 DAY_3 DAY_4 DAY_5 DAY_6 DAY_7 ABMON_1 ABMON_2 ABMON_3 ABMON_4 ABMON_5 ABMON_6 ABMON_7 ABMON_8 ABMON_9 ABMON_10 ABMON_11 ABMON_12 MON_1 MON_2 MON_3 MON_4 MON_5 MON_6 MON_7 MON_8 MON_9 MON_10 MON_11 MON_12 AM_STR PM_STR D_T_FMT D_FMT T_FMT T_FMT_AMPM ERA ERA_D_T_FMT ERA_D_FMT ERA_T_FMT ALT_DIGITS CRNCYSTR RADIXCHAR THOUSEP YESEXPR NOEXPR CODESET CRYPT_SALT_LENGTH CRYPT_STD_DES CRYPT_EXT_DES CRYPT_MD5 CRYPT_BLOWFISH CRYPT_SHA256 CRYPT_SHA512 DIRECTORY_SEPARATOR PATH_SEPARATOR SCANDIR_SORT_ASCENDING SCANDIR_SORT_DESCENDING SCANDIR_SORT_NONE GLOB_BRACE GLOB_MARK GLOB_NOSORT GLOB_NOCHECK GLOB_NOESCAPE GLOB_ERR GLOB_ONLYDIR GLOB_AVAILABLE_FLAGS LOG_EMERG LOG_ALERT LOG_CRIT LOG_ERR LOG_WARNING LOG_NOTICE LOG_INFO LOG_DEBUG LOG_KERN LOG_USER LOG_MAIL LOG_DAEMON LOG_AUTH LOG_SYSLOG LOG_LPR LOG_NEWS LOG_UUCP LOG_CRON LOG_AUTHPRIV LOG_LOCAL0 LOG_LOCAL1 LOG_LOCAL2 LOG_LOCAL3 LOG_LOCAL4 LOG_LOCAL5 LOG_LOCAL6 LOG_LOCAL7 LOG_PID LOG_CONS LOG_ODELAY LOG_NDELAY LOG_NOWAIT LOG_PERROR EXTR_OVERWRITE EXTR_SKIP EXTR_PREFIX_SAME EXTR_PREFIX_ALL EXTR_PREFIX_INVALID EXTR_PREFIX_IF_EXISTS EXTR_IF_EXISTS EXTR_REFS SORT_ASC SORT_DESC SORT_REGULAR SORT_NUMERIC SORT_STRING SORT_LOCALE_STRING SORT_NATURAL SORT_FLAG_CASE CASE_LOWER CASE_UPPER COUNT_NORMAL COUNT_RECURSIVE ASSERT_ACTIVE ASSERT_CALLBACK ASSERT_BAIL ASSERT_WARNING ASSERT_QUIET_EVAL STREAM_USE_PATH STREAM_IGNORE_URL STREAM_REPORT_ERRORS STREAM_MUST_SEEK STREAM_URL_STAT_LINK STREAM_URL_STAT_QUIET STREAM_MKDIR_RECURSIVE STREAM_IS_URL STREAM_OPTION_BLOCKING STREAM_OPTION_READ_TIMEOUT STREAM_OPTION_READ_BUFFER STREAM_OPTION_WRITE_BUFFER STREAM_BUFFER_NONE STREAM_BUFFER_LINE STREAM_BUFFER_FULL STREAM_CAST_AS_STREAM STREAM_CAST_FOR_SELECT STREAM_META_TOUCH STREAM_META_OWNER STREAM_META_OWNER_NAME STREAM_META_GROUP STREAM_META_GROUP_NAME STREAM_META_ACCESS IMAGETYPE_GIF IMAGETYPE_JPEG IMAGETYPE_PNG IMAGETYPE_SWF IMAGETYPE_PSD IMAGETYPE_BMP IMAGETYPE_TIFF_II IMAGETYPE_TIFF_MM IMAGETYPE_JPC IMAGETYPE_JP2 IMAGETYPE_JPX IMAGETYPE_JB2 IMAGETYPE_SWC IMAGETYPE_IFF IMAGETYPE_WBMP IMAGETYPE_JPEG2000 IMAGETYPE_XBM IMAGETYPE_ICO IMAGETYPE_UNKNOWN IMAGETYPE_COUNT DNS_A DNS_NS DNS_CNAME DNS_SOA DNS_PTR DNS_HINFO DNS_MX DNS_TXT DNS_SRV DNS_NAPTR DNS_AAAA DNS_A6 DNS_ANY DNS_ALL contained\n\n\" tokenizer\nsyn keyword phpConstants T_REQUIRE_ONCE T_REQUIRE T_EVAL T_INCLUDE_ONCE T_INCLUDE T_LOGICAL_OR T_LOGICAL_XOR T_LOGICAL_AND T_PRINT T_SR_EQUAL T_SL_EQUAL T_XOR_EQUAL T_OR_EQUAL T_AND_EQUAL T_MOD_EQUAL T_CONCAT_EQUAL T_DIV_EQUAL T_MUL_EQUAL T_MINUS_EQUAL T_PLUS_EQUAL T_BOOLEAN_OR T_BOOLEAN_AND T_IS_NOT_IDENTICAL T_IS_IDENTICAL T_IS_NOT_EQUAL T_IS_EQUAL T_IS_GREATER_OR_EQUAL T_IS_SMALLER_OR_EQUAL T_SR T_SL T_INSTANCEOF T_UNSET_CAST T_BOOL_CAST T_OBJECT_CAST T_ARRAY_CAST T_STRING_CAST T_DOUBLE_CAST T_INT_CAST T_DEC T_INC T_CLONE T_NEW T_EXIT T_IF T_ELSEIF T_ELSE T_ENDIF T_LNUMBER T_DNUMBER T_STRING T_STRING_VARNAME T_VARIABLE T_NUM_STRING T_INLINE_HTML T_CHARACTER T_BAD_CHARACTER T_ENCAPSED_AND_WHITESPACE T_CONSTANT_ENCAPSED_STRING T_ECHO T_DO T_WHILE T_ENDWHILE T_FOR T_ENDFOR T_FOREACH T_ENDFOREACH T_DECLARE T_ENDDECLARE T_AS T_SWITCH T_ENDSWITCH T_CASE T_DEFAULT T_BREAK T_CONTINUE T_GOTO T_FUNCTION T_CONST T_RETURN T_YIELD T_TRY T_CATCH T_FINALLY T_THROW T_USE T_INSTEADOF T_GLOBAL T_PUBLIC T_PROTECTED T_PRIVATE T_FINAL T_ABSTRACT T_STATIC T_VAR T_UNSET T_ISSET T_EMPTY T_HALT_COMPILER T_CLASS T_TRAIT T_INTERFACE T_EXTENDS T_IMPLEMENTS T_OBJECT_OPERATOR T_DOUBLE_ARROW T_LIST T_ARRAY T_CALLABLE T_CLASS_C T_TRAIT_C T_METHOD_C T_FUNC_C T_LINE T_FILE T_COMMENT T_DOC_COMMENT T_OPEN_TAG T_OPEN_TAG_WITH_ECHO T_CLOSE_TAG T_WHITESPACE T_START_HEREDOC T_END_HEREDOC T_DOLLAR_OPEN_CURLY_BRACES T_CURLY_OPEN T_PAAMAYIM_NEKUDOTAYIM T_NAMESPACE T_NS_C T_DIR T_NS_SEPARATOR T_DOUBLE_COLON contained\n\n\" xml\nsyn keyword phpConstants XML_ERROR_NONE XML_ERROR_NO_MEMORY XML_ERROR_SYNTAX XML_ERROR_NO_ELEMENTS XML_ERROR_INVALID_TOKEN XML_ERROR_UNCLOSED_TOKEN XML_ERROR_PARTIAL_CHAR XML_ERROR_TAG_MISMATCH XML_ERROR_DUPLICATE_ATTRIBUTE XML_ERROR_JUNK_AFTER_DOC_ELEMENT XML_ERROR_PARAM_ENTITY_REF XML_ERROR_UNDEFINED_ENTITY XML_ERROR_RECURSIVE_ENTITY_REF XML_ERROR_ASYNC_ENTITY XML_ERROR_BAD_CHAR_REF XML_ERROR_BINARY_ENTITY_REF XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF XML_ERROR_MISPLACED_XML_PI XML_ERROR_UNKNOWN_ENCODING XML_ERROR_INCORRECT_ENCODING XML_ERROR_UNCLOSED_CDATA_SECTION XML_ERROR_EXTERNAL_ENTITY_HANDLING XML_OPTION_CASE_FOLDING XML_OPTION_TARGET_ENCODING XML_OPTION_SKIP_TAGSTART XML_OPTION_SKIP_WHITE XML_SAX_IMPL contained\n\n\" xmlreader\nsyn keyword phpConstants NONE ELEMENT ATTRIBUTE TEXT CDATA ENTITY_REF ENTITY PI COMMENT DOC DOC_TYPE DOC_FRAGMENT NOTATION WHITESPACE SIGNIFICANT_WHITESPACE END_ELEMENT END_ENTITY XML_DECLARATION LOADDTD DEFAULTATTRS VALIDATE SUBST_ENTITIES contained\n\n\" zip\nsyn keyword phpConstants CREATE EXCL CHECKCONS OVERWRITE FL_NOCASE FL_NODIR FL_COMPRESSED FL_UNCHANGED CM_DEFAULT CM_STORE CM_SHRINK CM_REDUCE_1 CM_REDUCE_2 CM_REDUCE_3 CM_REDUCE_4 CM_IMPLODE CM_DEFLATE CM_DEFLATE64 CM_PKWARE_IMPLODE CM_BZIP2 CM_LZMA CM_TERSE CM_LZ77 CM_WAVPACK CM_PPMD ER_OK ER_MULTIDISK ER_RENAME ER_CLOSE ER_SEEK ER_READ ER_WRITE ER_CRC ER_ZIPCLOSED ER_NOENT ER_EXISTS ER_OPEN ER_TMPOPEN ER_ZLIB ER_MEMORY ER_CHANGED ER_COMPNOTSUPP ER_EOF ER_INVAL ER_NOZIP ER_INTERNAL ER_INCONS ER_REMOVE ER_DELETED contained\n\n\" zlib\nsyn keyword phpConstants FORCE_GZIP FORCE_DEFLATE ZLIB_ENCODING_RAW ZLIB_ENCODING_GZIP ZLIB_ENCODING_DEFLATE contained\n\nsyn case ignore\n\n\" bcmath\nsyn keyword phpFunctions bcadd bcsub bcmul bcdiv bcmod bcpow bcsqrt bcscale bccomp bcpowmod contained\n\" bz2\nsyn keyword phpFunctions bzopen bzread bzwrite bzflush bzclose bzerrno bzerrstr bzerror bzcompress bzdecompress contained\n\" Core\nsyn keyword phpFunctions zend_version func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined get_class get_called_class get_parent_class method_exists property_exists class_exists interface_exists trait_exists function_exists class_alias get_included_files get_required_files is_subclass_of is_a get_class_vars get_object_vars get_class_methods trigger_error user_error set_error_handler restore_error_handler set_exception_handler restore_exception_handler get_declared_classes get_declared_traits get_declared_interfaces get_defined_functions get_defined_vars create_function get_resource_type get_loaded_extensions extension_loaded get_extension_funcs get_defined_constants debug_backtrace debug_print_backtrace gc_collect_cycles gc_enabled gc_enable gc_disable contained\nsyn keyword phpClasses stdClass Traversable IteratorAggregate Iterator ArrayAccess Serializable Exception ErrorException Closure Generator contained\n\n\" curl\nsyn keyword phpFunctions curl_init curl_copy_handle curl_version curl_setopt curl_setopt_array curl_exec curl_getinfo curl_error curl_errno curl_close curl_strerror curl_multi_strerror curl_reset curl_escape curl_unescape curl_pause curl_multi_init curl_multi_add_handle curl_multi_remove_handle curl_multi_select curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_close curl_multi_setopt curl_share_init curl_share_close curl_share_setopt curl_file_create contained\nsyn keyword phpClasses CURLFile contained\n\n\" date\nsyn keyword phpFunctions strtotime date idate gmdate mktime gmmktime checkdate strftime gmstrftime time localtime getdate date_create date_create_immutable date_create_from_format date_create_immutable_from_format date_parse date_parse_from_format date_get_last_errors date_format date_modify date_add date_sub date_timezone_get date_timezone_set date_offset_get date_diff date_time_set date_date_set date_isodate_set date_timestamp_set date_timestamp_get timezone_open timezone_name_get timezone_name_from_abbr timezone_offset_get timezone_transitions_get timezone_location_get timezone_identifiers_list timezone_abbreviations_list timezone_version_get date_interval_create_from_date_string date_interval_format date_default_timezone_set date_default_timezone_get date_sunrise date_sunset date_sun_info contained\nsyn keyword phpClasses DateTimeInterface DateTime DateTimeImmutable DateTimeZone DateInterval DatePeriod contained\n\n\" dom\nsyn keyword phpFunctions dom_import_simplexml contained\nsyn keyword phpClasses DOMException DOMStringList DOMNameList DOMImplementationList DOMImplementationSource DOMImplementation DOMNode DOMNameSpaceNode DOMDocumentFragment DOMDocument DOMNodeList DOMNamedNodeMap DOMCharacterData DOMAttr DOMElement DOMText DOMComment DOMTypeinfo DOMUserDataHandler DOMDomError DOMErrorHandler DOMLocator DOMConfiguration DOMCdataSection DOMDocumentType DOMNotation DOMEntity DOMEntityReference DOMProcessingInstruction DOMStringExtend DOMXPath contained\n\n\" ereg\nsyn keyword phpFunctions ereg ereg_replace eregi eregi_replace split spliti sql_regcase contained\n\" gd\nsyn keyword phpFunctions gd_info imagearc imageellipse imagechar imagecharup imagecolorat imagecolorallocate imagepalettecopy imagecreatefromstring imagecolorclosest imagecolorclosesthwb imagecolordeallocate imagecolorresolve imagecolorexact imagecolorset imagecolortransparent imagecolorstotal imagecolorsforindex imagecopy imagecopymerge imagecopymergegray imagecopyresized imagecreate imagecreatetruecolor imageistruecolor imagetruecolortopalette imagepalettetotruecolor imagesetthickness imagefilledarc imagefilledellipse imagealphablending imagesavealpha imagecolorallocatealpha imagecolorresolvealpha imagecolorclosestalpha imagecolorexactalpha imagecopyresampled imagerotate imageflip imagecrop imagecropauto imagescale imageaffine imageaffinematrixconcat imageaffinematrixget imagesetinterpolation imagesettile imagesetbrush imagesetstyle imagecreatefrompng imagecreatefromwebp imagecreatefromgif imagecreatefromjpeg imagecreatefromwbmp imagecreatefromxbm imagecreatefromxpm imagecreatefromgd imagecreatefromgd2 imagecreatefromgd2part imagepng imagewebp imagegif imagejpeg imagewbmp imagegd imagegd2 imagedestroy imagegammacorrect imagefill imagefilledpolygon imagefilledrectangle imagefilltoborder imagefontwidth imagefontheight imageinterlace imageline imageloadfont imagepolygon imagerectangle imagesetpixel imagestring imagestringup imagesx imagesy imagedashedline imagettfbbox imagettftext imageftbbox imagefttext imagetypes jpeg2wbmp png2wbmp image2wbmp imagelayereffect imagexbm imagecolormatch imagefilter imageconvolution contained\n\" gettext\nsyn keyword phpFunctions textdomain gettext _ dgettext dcgettext bindtextdomain ngettext dngettext dcngettext bind_textdomain_codeset contained\n\" hash\nsyn keyword phpFunctions hash hash_file hash_hmac hash_hmac_file hash_init hash_update hash_update_stream hash_update_file hash_final hash_copy hash_algos hash_pbkdf2 mhash_keygen_s2k mhash_get_block_size mhash_get_hash_name mhash_count mhash contained\n\" iconv\nsyn keyword phpFunctions iconv iconv_get_encoding iconv_set_encoding iconv_strlen iconv_substr iconv_strpos iconv_strrpos iconv_mime_encode iconv_mime_decode iconv_mime_decode_headers contained\n\" json\nsyn keyword phpFunctions json_encode json_decode json_last_error json_last_error_msg contained\nsyn keyword phpClasses JsonSerializable JsonIncrementalParser contained\n\n\" libxml\nsyn keyword phpFunctions libxml_set_streams_context libxml_use_internal_errors libxml_get_last_error libxml_clear_errors libxml_get_errors libxml_disable_entity_loader libxml_set_external_entity_loader contained\nsyn keyword phpClasses LibXMLError contained\n\n\" mbstring\nsyn keyword phpFunctions mb_convert_case mb_strtoupper mb_strtolower mb_language mb_internal_encoding mb_http_input mb_http_output mb_detect_order mb_substitute_character mb_parse_str mb_output_handler mb_preferred_mime_name mb_strlen mb_strpos mb_strrpos mb_stripos mb_strripos mb_strstr mb_strrchr mb_stristr mb_strrichr mb_substr_count mb_substr mb_strcut mb_strwidth mb_strimwidth mb_convert_encoding mb_detect_encoding mb_list_encodings mb_encoding_aliases mb_convert_kana mb_encode_mimeheader mb_decode_mimeheader mb_convert_variables mb_encode_numericentity mb_decode_numericentity mb_send_mail mb_get_info mb_check_encoding mb_regex_encoding mb_regex_set_options mb_ereg mb_eregi mb_ereg_replace mb_eregi_replace mb_ereg_replace_callback mb_split mb_ereg_match mb_ereg_search mb_ereg_search_pos mb_ereg_search_regs mb_ereg_search_init mb_ereg_search_getregs mb_ereg_search_getpos mb_ereg_search_setpos mbregex_encoding mbereg mberegi mbereg_replace mberegi_replace mbsplit mbereg_match mbereg_search mbereg_search_pos mbereg_search_regs mbereg_search_init mbereg_search_getregs mbereg_search_getpos mbereg_search_setpos contained\n\" mcrypt\nsyn keyword phpFunctions mcrypt_ecb mcrypt_cbc mcrypt_cfb mcrypt_ofb mcrypt_get_key_size mcrypt_get_block_size mcrypt_get_cipher_name mcrypt_create_iv mcrypt_list_algorithms mcrypt_list_modes mcrypt_get_iv_size mcrypt_encrypt mcrypt_decrypt mcrypt_module_open mcrypt_generic_init mcrypt_generic mdecrypt_generic mcrypt_generic_end mcrypt_generic_deinit mcrypt_enc_self_test mcrypt_enc_is_block_algorithm_mode mcrypt_enc_is_block_algorithm mcrypt_enc_is_block_mode mcrypt_enc_get_block_size mcrypt_enc_get_key_size mcrypt_enc_get_supported_key_sizes mcrypt_enc_get_iv_size mcrypt_enc_get_algorithms_name mcrypt_enc_get_modes_name mcrypt_module_self_test mcrypt_module_is_block_algorithm_mode mcrypt_module_is_block_algorithm mcrypt_module_is_block_mode mcrypt_module_get_algo_block_size mcrypt_module_get_algo_key_size mcrypt_module_get_supported_key_sizes mcrypt_module_close contained\n\" mhash\n\" mysql\nsyn keyword phpFunctions mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_ping mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql_set_charset mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name contained\n\" mysqli\nsyn keyword phpFunctions mysqli_affected_rows mysqli_autocommit mysqli_begin_transaction mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect mysqli_connect_errno mysqli_connect_error mysqli_data_seek mysqli_dump_debug_info mysqli_debug mysqli_errno mysqli_error mysqli_error_list mysqli_stmt_execute mysqli_execute mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_field_direct mysqli_fetch_lengths mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_object mysqli_fetch_row mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_charset mysqli_get_client_info mysqli_get_client_version mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_get_warnings mysqli_init mysqli_info mysqli_insert_id mysqli_kill mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows mysqli_options mysqli_ping mysqli_prepare mysqli_report mysqli_query mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_release_savepoint mysqli_rollback mysqli_savepoint mysqli_select_db mysqli_set_charset mysqli_stmt_affected_rows mysqli_stmt_attr_get mysqli_stmt_attr_set mysqli_stmt_bind_param mysqli_stmt_bind_result mysqli_stmt_close mysqli_stmt_data_seek mysqli_stmt_errno mysqli_stmt_error mysqli_stmt_error_list mysqli_stmt_fetch mysqli_stmt_field_count mysqli_stmt_free_result mysqli_stmt_get_warnings mysqli_stmt_init mysqli_stmt_insert_id mysqli_stmt_num_rows mysqli_stmt_param_count mysqli_stmt_prepare mysqli_stmt_reset mysqli_stmt_result_metadata mysqli_stmt_send_long_data mysqli_stmt_store_result mysqli_stmt_sqlstate mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count mysqli_refresh mysqli_escape_string mysqli_set_opt contained\nsyn keyword phpClasses mysqli_sql_exception mysqli_driver mysqli mysqli_warning mysqli_result mysqli_stmt contained\n\n\" openssl\nsyn keyword phpFunctions openssl_pkey_free openssl_pkey_new openssl_pkey_export openssl_pkey_export_to_file openssl_pkey_get_private openssl_pkey_get_public openssl_pkey_get_details openssl_free_key openssl_get_privatekey openssl_get_publickey openssl_x509_read openssl_x509_free openssl_x509_parse openssl_x509_checkpurpose openssl_x509_check_private_key openssl_x509_export openssl_x509_export_to_file openssl_pkcs12_export openssl_pkcs12_export_to_file openssl_pkcs12_read openssl_csr_new openssl_csr_export openssl_csr_export_to_file openssl_csr_sign openssl_csr_get_subject openssl_csr_get_public_key openssl_digest openssl_encrypt openssl_decrypt openssl_cipher_iv_length openssl_sign openssl_verify openssl_seal openssl_open openssl_pbkdf2 openssl_pkcs7_verify openssl_pkcs7_decrypt openssl_pkcs7_sign openssl_pkcs7_encrypt openssl_private_encrypt openssl_private_decrypt openssl_public_encrypt openssl_public_decrypt openssl_get_md_methods openssl_get_cipher_methods openssl_dh_compute_key openssl_random_pseudo_bytes openssl_error_string contained\n\" pcre\nsyn keyword phpFunctions preg_match preg_match_all preg_replace preg_replace_callback preg_filter preg_split preg_quote preg_grep preg_last_error contained\n\" PDO\nsyn keyword phpFunctions pdo_drivers contained\nsyn keyword phpClasses PDOException PDO PDOStatement PDORow contained\n\n\" pgsql\nsyn keyword phpFunctions pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_version pg_ping pg_parameter_status pg_transaction_status pg_query pg_query_params pg_prepare pg_execute pg_send_query pg_send_query_params pg_send_prepare pg_send_execute pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_fetch_all_columns pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_type_oid pg_field_prtlen pg_field_is_null pg_field_table pg_get_notify pg_get_pid pg_result_error pg_result_error_field pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_escape_literal pg_escape_identifier pg_set_error_verbosity pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport pg_clientencoding pg_setclientencoding contained\n\" Phar\nsyn keyword phpClasses PharException Phar PharData PharFileInfo contained\n\n\" Reflection\nsyn keyword phpClasses ReflectionException Reflection Reflector ReflectionFunctionAbstract ReflectionFunction ReflectionParameter ReflectionMethod ReflectionClass ReflectionObject ReflectionProperty ReflectionExtension ReflectionZendExtension contained\n\n\" session\nsyn keyword phpFunctions session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close session_status session_register_shutdown session_commit contained\nsyn keyword phpClasses SessionHandlerInterface SessionIdInterface SessionHandler contained\n\n\" SimpleXML\nsyn keyword phpFunctions simplexml_load_file simplexml_load_string simplexml_import_dom contained\nsyn keyword phpClasses SimpleXMLElement SimpleXMLIterator contained\n\n\" soap\nsyn keyword phpFunctions use_soap_error_handler is_soap_fault contained\nsyn keyword phpClasses SoapClient SoapVar SoapServer SoapFault SoapParam SoapHeader contained\n\n\" sockets\nsyn keyword phpFunctions socket_select socket_create socket_create_listen socket_create_pair socket_accept socket_set_nonblock socket_set_block socket_listen socket_close socket_write socket_read socket_getsockname socket_getpeername socket_connect socket_strerror socket_bind socket_recv socket_send socket_recvfrom socket_sendto socket_get_option socket_set_option socket_shutdown socket_last_error socket_clear_error socket_import_stream socket_sendmsg socket_recvmsg socket_cmsg_space socket_getopt socket_setopt contained\n\" SPL\nsyn keyword phpFunctions spl_classes spl_autoload spl_autoload_extensions spl_autoload_register spl_autoload_unregister spl_autoload_functions spl_autoload_call class_parents class_implements class_uses spl_object_hash iterator_to_array iterator_count iterator_apply contained\nsyn keyword phpClasses LogicException BadFunctionCallException BadMethodCallException DomainException InvalidArgumentException LengthException OutOfRangeException RuntimeException OutOfBoundsException OverflowException RangeException UnderflowException UnexpectedValueException RecursiveIterator RecursiveIteratorIterator OuterIterator IteratorIterator FilterIterator RecursiveFilterIterator CallbackFilterIterator RecursiveCallbackFilterIterator ParentIterator Countable SeekableIterator LimitIterator CachingIterator RecursiveCachingIterator NoRewindIterator AppendIterator InfiniteIterator RegexIterator RecursiveRegexIterator EmptyIterator RecursiveTreeIterator ArrayObject ArrayIterator RecursiveArrayIterator SplFileInfo DirectoryIterator FilesystemIterator RecursiveDirectoryIterator GlobIterator SplFileObject SplTempFileObject SplDoublyLinkedList SplQueue SplStack SplHeap SplMinHeap SplMaxHeap SplPriorityQueue SplFixedArray SplObserver SplSubject SplObjectStorage MultipleIterator contained\n\n\" sqlite3\nsyn keyword phpClasses SQLite3 SQLite3Stmt SQLite3Result contained\n\n\" standard\nsyn keyword phpFunctions constant bin2hex hex2bin sleep usleep time_nanosleep time_sleep_until strptime flush wordwrap htmlspecialchars htmlentities html_entity_decode htmlspecialchars_decode get_html_translation_table sha1 sha1_file md5 md5_file crc32 iptcparse iptcembed getimagesize getimagesizefromstring image_type_to_mime_type image_type_to_extension phpinfo phpversion phpcredits php_sapi_name php_uname php_ini_scanned_files php_ini_loaded_file strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos stripos strrpos strripos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count str_split strpbrk substr_compare strcoll money_format substr substr_replace quotemeta ucfirst lcfirst ucwords strtr addslashes addcslashes rtrim str_replace str_ireplace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode join setlocale localeconv nl_langinfo soundex levenshtein chr ord parse_str str_getcsv str_pad chop strchr sprintf printf vprintf vsprintf fprintf vfprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode http_build_query readlink linkinfo symlink link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close proc_terminate proc_get_status proc_nice rand srand getrandmax mt_rand mt_srand mt_getrandmax getservbyname getservbyport getprotobyname getprotobynumber getmyuid getmygid getmypid getmyinode getlastmod base64_decode base64_encode password_hash password_get_info password_needs_rehash password_verify convert_uuencode convert_uudecode abs ceil floor round sin cos tan asin acos atan atanh atan2 sinh cosh tanh asinh acosh expm1 log1p pi is_finite is_nan is_infinite pow exp log log10 sqrt hypot deg2rad rad2deg bindec hexdec octdec decbin decoct dechex base_convert number_format fmod inet_ntop inet_pton ip2long long2ip getenv putenv getopt sys_getloadavg microtime gettimeofday getrusage uniqid quoted_printable_decode quoted_printable_encode convert_cyr_string get_current_user set_time_limit header_register_callback get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime error_log error_get_last call_user_func call_user_func_array call_user_method call_user_method_array forward_static_call forward_static_call_array serialize unserialize var_dump var_export debug_zval_dump print_r memory_get_usage memory_get_peak_usage register_shutdown_function register_tick_function unregister_tick_function highlight_file show_source highlight_string php_strip_whitespace ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie setrawcookie header header_remove headers_sent headers_list http_response_code connection_aborted connection_status ignore_user_abort parse_ini_file parse_ini_string is_uploaded_file move_uploaded_file gethostbyaddr gethostbyname gethostbynamel gethostname dns_check_record checkdnsrr dns_get_mx getmxrr dns_get_record intval floatval doubleval strval boolval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar is_callable pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents file_put_contents stream_select stream_context_create stream_context_set_params stream_context_get_params stream_context_set_option stream_context_get_options stream_context_get_default stream_context_set_default stream_filter_prepend stream_filter_append stream_filter_remove stream_socket_client stream_socket_server stream_socket_accept stream_socket_get_name stream_socket_recvfrom stream_socket_sendto stream_socket_enable_crypto stream_socket_shutdown stream_socket_pair stream_copy_to_stream stream_get_contents stream_supports_lock fgetcsv fputcsv flock get_meta_tags stream_set_read_buffer stream_set_write_buffer set_file_buffer stream_set_chunk_size set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_get_line stream_wrapper_register stream_register_wrapper stream_wrapper_unregister stream_wrapper_restore stream_get_wrappers stream_get_transports stream_resolve_include_path stream_is_local get_headers stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir chroot getcwd rewinddir readdir dir scandir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown chgrp lchown lchgrp chmod touch clearstatcache disk_total_space disk_free_space diskfreespace realpath_cache_size realpath_cache_get mail ezmlm_hash openlog syslog closelog lcg_value metaphone ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk array_walk_recursive count end prev next reset current key min max in_array array_search extract compact array_fill array_fill_keys range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_replace array_replace_recursive array_keys array_values array_count_values array_column array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_key array_intersect_ukey array_uintersect array_intersect_assoc array_uintersect_assoc array_intersect_uassoc array_uintersect_uassoc array_diff array_diff_key array_diff_ukey array_udiff array_diff_assoc array_udiff_assoc array_diff_uassoc array_udiff_uassoc array_sum array_product array_filter array_map array_chunk array_combine array_key_exists pos sizeof key_exists assert assert_options version_compare ftok str_rot13 stream_get_filters stream_filter_register stream_bucket_make_writeable stream_bucket_prepend stream_bucket_append stream_bucket_new output_add_rewrite_var output_reset_rewrite_vars sys_get_temp_dir dl cli_set_process_title cli_get_process_title contained\nsyn keyword phpClasses __PHP_Incomplete_Class php_user_filter Directory contained\n\n\" tokenizer\nsyn keyword phpFunctions token_get_all token_name contained\n\" wddx\nsyn keyword phpFunctions wddx_serialize_value wddx_serialize_vars wddx_packet_start wddx_packet_end wddx_add_vars wddx_deserialize contained\n\" xml\nsyn keyword phpFunctions xml_parser_create xml_parser_create_ns xml_set_object xml_set_element_handler xml_set_character_data_handler xml_set_processing_instruction_handler xml_set_default_handler xml_set_unparsed_entity_decl_handler xml_set_notation_decl_handler xml_set_external_entity_ref_handler xml_set_start_namespace_decl_handler xml_set_end_namespace_decl_handler xml_parse xml_parse_into_struct xml_get_error_code xml_error_string xml_get_current_line_number xml_get_current_column_number xml_get_current_byte_index xml_parser_free xml_parser_set_option xml_parser_get_option utf8_encode utf8_decode contained\n\" xmlreader\nsyn keyword phpClasses XMLReader contained\n\n\" xmlwriter\nsyn keyword phpFunctions xmlwriter_open_uri xmlwriter_open_memory xmlwriter_set_indent xmlwriter_set_indent_string xmlwriter_start_comment xmlwriter_end_comment xmlwriter_start_attribute xmlwriter_end_attribute xmlwriter_write_attribute xmlwriter_start_attribute_ns xmlwriter_write_attribute_ns xmlwriter_start_element xmlwriter_end_element xmlwriter_full_end_element xmlwriter_start_element_ns xmlwriter_write_element xmlwriter_write_element_ns xmlwriter_start_pi xmlwriter_end_pi xmlwriter_write_pi xmlwriter_start_cdata xmlwriter_end_cdata xmlwriter_write_cdata xmlwriter_text xmlwriter_write_raw xmlwriter_start_document xmlwriter_end_document xmlwriter_write_comment xmlwriter_start_dtd xmlwriter_end_dtd xmlwriter_write_dtd xmlwriter_start_dtd_element xmlwriter_end_dtd_element xmlwriter_write_dtd_element xmlwriter_start_dtd_attlist xmlwriter_end_dtd_attlist xmlwriter_write_dtd_attlist xmlwriter_start_dtd_entity xmlwriter_end_dtd_entity xmlwriter_write_dtd_entity xmlwriter_output_memory xmlwriter_flush contained\nsyn keyword phpClasses XMLWriter contained\n\n\" zip\nsyn keyword phpFunctions zip_open zip_close zip_read zip_entry_open zip_entry_close zip_entry_read zip_entry_filesize zip_entry_name zip_entry_compressedsize zip_entry_compressionmethod contained\nsyn keyword phpClasses ZipArchive contained\n\n\" zlib\nsyn keyword phpFunctions readgzfile gzrewind gzclose gzeof gzgetc gzgets gzgetss gzread gzopen gzpassthru gzseek gztell gzwrite gzputs gzfile gzcompress gzuncompress gzdeflate gzinflate gzencode gzdecode zlib_encode zlib_decode zlib_get_coding_type ob_gzhandler contained\n\n\n\" === END BUILTIN FUNCTIONS, CLASSES, AND CONSTANTS =====================================\n\n\" The following is needed afterall it seems.\nsyntax keyword phpClasses containedin=ALLBUT,phpComment,phpDocComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar\n\n\" Control Structures\nsyn keyword phpKeyword if echo else elseif while do for foreach function break switch case default continue return goto as endif endwhile endfor endforeach endswitch declare endeclare print new clone yield contained\n\n\" Exception Keywords\nsyn keyword phpKeyword try catch finally throw contained\n\n\" Class Keywords\nsyn keyword phpType class abstract extends interface implements static final var public private protected const trait contained\n\n\" Magic Methods\nsyn keyword phpStatement __construct __destruct __call __callStatic __get __set __isset __unset __sleep __wakeup __toString __invoke __set_state __clone contained\n\n\" Language Constructs\nsyn keyword phpKeyword die exit eval empty isset unset list instanceof insteadof contained\n\n\" Include & friends\nsyn keyword phpInclude include include_once require require_once namespace use contained\n\n\" Types\nsyn keyword phpType bool[ean] int[eger] real double float string array object null self parent global this stdClass callable contained\n\n\" Operator\nsyn match phpOperator       \"[-=+%^&|*!.~?:]\" contained display\nsyn match phpOperator       \"[-+*/%^&|.]=\"  contained display\nsyn match phpOperator       \"/[^*/]\"me=e-1  contained display\nsyn match phpOperator       \"\\$\"  contained display\nsyn match phpOperator       \"&&\\|\\<and\\>\" contained display\nsyn match phpOperator       \"||\\|\\<x\\=or\\>\" contained display\nsyn match phpOperator       \"[!=<>]=\" contained display\nsyn match phpOperator       \"[<>]\"  contained display\nsyn match phpMemberSelector \"->\"  contained display\nsyn match phpVarSelector    \"\\$\"  contained display\n\" highlight object variables inside strings\nsyn match phpMethodsVar     \"->\\h\\w*\" contained contains=phpMethods,phpMemberSelector display containedin=phpStringDouble\nsyn match phpSplatOperator  \"\\.\\.\\.\" contained display\n\n\" Identifier\nsyn match  phpIdentifier         \"$\\h\\w*\"  contained contains=phpSuperglobals,phpVarSelector display\nsyn match  phpIdentifierSimply   \"${\\h\\w*}\"  contains=phpOperator,phpParent  contained display\nsyn region phpIdentifierComplex  matchgroup=phpParent start=\"{\\$\"rs=e-1 end=\"}\"  contains=phpIdentifier,phpMemberSelector,phpVarSelector,phpIdentifierArray contained extend\nsyn region phpIdentifierArray    matchgroup=phpParent start=\"\\[\" end=\"]\" contains=@phpClInside contained\n\n\" Boolean\nsyn keyword phpBoolean true false  contained\n\n\" Number\nsyn match phpNumber \"-\\=\\<\\d\\+\\>\" contained display\nsyn match phpNumber \"\\<0x\\x\\{1,8}\\>\"  contained display\nsyn match phpNumber \"\\<0b[01]\\+\\>\"    contained display\n\n\" Float\nsyn match phpNumber \"\\(-\\=\\<\\d+\\|-\\=\\)\\.\\d\\+\\>\" contained display\n\n\" SpecialChar\nsyn match phpSpecialChar \"\\\\[fnrtv\\\\]\" contained display\nsyn match phpSpecialChar \"\\\\\\d\\{3}\"  contained contains=phpOctalError display\nsyn match phpSpecialChar \"\\\\x\\x\\{2}\" contained display\n\" corrected highlighting for an escaped '\\$' inside a double-quoted string\nsyn match phpSpecialChar \"\\\\\\$\"  contained display\nsyn match phpSpecialChar +\\\\\"+   contained display\nsyn match phpStrEsc      \"\\\\\\\\\"  contained display\nsyn match phpStrEsc      \"\\\\'\"   contained display\n\n\" Format specifiers (printf)\n\" See https://github.com/aantonello/php.vim/commit/9d24eab4ea4b3752a54aebf14d3491b6d8edb6d8\nsyn match phpSpecialChar display contained /%\\(\\d\\+\\$\\)\\=[-+' #0*]*\\(\\d*\\|\\*\\|\\*\\d\\+\\$\\)\\(\\.\\(\\d*\\|\\*\\|\\*\\d\\+\\$\\)\\)\\=\\([aAbBdiouxXDOUfFeEgGcCsSpnmMyYhH]\\|\\[\\^\\=.[^]]*\\]\\)/ containedin=phpStringSingle,phpStringDouble,phpHereDoc\nsyn match phpSpecialChar display contained /%%/ containedin=phpStringSingle,phpStringDouble,phpHereDoc\n\n\" Error\nsyn match phpOctalError \"[89]\"  contained display\nif exists(\"php_parent_error_close\")\n  syn match phpParentError \"[)\\]}]\"  contained display\nendif\n\n\" Todo\nsyn case match\nsyn keyword phpTodo TODO FIXME XXX NOTE contained\nsyn case ignore\n\n\" Comment\nif exists(\"php_parent_error_open\")\n  syn region phpComment start=\"/\\*\" end=\"\\*/\" contained contains=phpTodo,@Spell\nelse\n  syn region phpComment start=\"/\\*\" end=\"\\*/\" contained contains=phpTodo,@Spell extend\nendif\n\nsyn match phpCommentStar contained \"^\\s*\\*[^/]\"me=e-1\nsyn match phpCommentStar contained \"^\\s*\\*$\"\n\nif !exists(\"php_ignore_phpdoc\")\n  syn case ignore\n\n  syn region phpDocComment   start=\"/\\*\\*\" end=\"\\*/\" keepend contains=phpCommentTitle,phpDocTags,phpTodo,@Spell\n  syn region phpCommentTitle contained matchgroup=phpDocComment start=\"/\\*\\*\" matchgroup=phpCommmentTitle keepend end=\"\\.$\" end=\"\\.[ \\t\\r<&]\"me=e-1 end=\"[^{]@\"me=s-2,he=s-1 end=\"\\*/\"me=s-1,he=s-1 contains=phpCommentStar,phpTodo,phpDocTags,@Spell containedin=phpDocComment\n\n  syn region phpDocTags  start=\"{@\\(example\\|id\\|internal\\|inheritdoc\\|link\\|source\\|toc\\|tutorial\\)\" end=\"}\" containedin=phpDocComment\n  syn match  phpDocTags  \"@\\(abstract\\|access\\|author\\|category\\|copyright\\|deprecated\\|example\\|exception\\|filesource\\|final\\|global\\|id\\|ignore\\|inheritdoc\\|internal\\|license\\|link\\|magic\\|method\\|name\\|package\\|param\\|property\\|return\\|see\\|since\\|source\\|static\\|staticvar\\|subpackage\\|throws\\|toc\\|todo\\|tutorial\\|uses\\|var\\|version\\)\\s\\+\\S\\+.*\" contains=phpDocParam containedin=phpDocComment\n  syn match  phpDocParam \"\\s\\S\\+\" contained contains=phpDocIdentifier\n  syn match  phpDocIdentifier contained \"$\\h\\w*\"\n\n  syn case match\nendif\n\nif version >= 600\n  syn match phpComment  \"#.\\{-}\\(?>\\|$\\)\\@=\"  contained contains=phpTodo,@Spell\n  syn match phpComment  \"//.\\{-}\\(?>\\|$\\)\\@=\" contained contains=phpTodo,@Spell\nelse\n  syn match phpComment  \"#.\\{-}$\" contained contains=phpTodo,@Spell\n  syn match phpComment  \"#.\\{-}?>\"me=e-2  contained contains=phpTodo,@Spell\n  syn match phpComment  \"//.\\{-}$\"  contained contains=phpTodo,@Spell\n  syn match phpComment  \"//.\\{-}?>\"me=e-2 contained contains=phpTodo,@Spell\nendif\n\n\" String\nif exists(\"php_parent_error_open\")\n  syn region phpStringDouble matchgroup=phpStringDelimiter start=+\"+ skip=+\\\\\\\\\\|\\\\\"+ end=+\"+  contains=@Spell,@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex,phpStrEsc contained keepend\n  syn region phpBacktick matchgroup=phpStringDelimiter start=+`+ skip=+\\\\\\\\\\|\\\\\"+ end=+`+  contains=@Spell,@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex,phpStrEsc contained keepend\n  syn region phpStringSingle matchgroup=phpStringDelimiter start=+'+ skip=+\\\\\\\\\\|\\\\'+ end=+'+  contains=@Spell,@phpAddStrings,phpStrEsc contained keepend\nelse\n  syn region phpStringDouble matchgroup=phpStringDelimiter start=+\"+ skip=+\\\\\\\\\\|\\\\\"+ end=+\"+  contains=@Spell,@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex,phpStrEsc contained extend keepend\n  syn region phpBacktick matchgroup=phpStringDelimiter start=+`+ skip=+\\\\\\\\\\|\\\\\"+ end=+`+  contains=@Spell,@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex,phpStrEsc contained extend keepend\n  syn region phpStringSingle matchgroup=phpStringDelimiter start=+'+ skip=+\\\\\\\\\\|\\\\'+ end=+'+  contains=@Spell,@phpAddStrings,phpStrEsc contained keepend extend\nendif\n\n\" HereDoc\n  syn case match\n  syn region phpHereDoc matchgroup=Delimiter start=\"\\(<<<\\)\\@<=\\z(\\I\\i*\\)$\" end=\"^\\z1\\(;\\=$\\)\\@=\" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend\n  syn region phpHereDoc matchgroup=Delimiter start=+\\(<<<\\)\\@<=\"\\z(\\I\\i*\\)\"$+ end=\"^\\z1\\(;\\=$\\)\\@=\" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend\n\" including HTML,JavaScript,SQL even if not enabled via options\n  syn region phpHereDoc matchgroup=Delimiter start=\"\\(<<<\\)\\@<=\\z(\\(\\I\\i*\\)\\=\\(html\\)\\c\\(\\i*\\)\\)$\" end=\"^\\z1\\(;\\=$\\)\\@=\"  contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend\n  syn region phpHereDoc matchgroup=Delimiter start=\"\\(<<<\\)\\@<=\\z(\\(\\I\\i*\\)\\=\\(sql\\)\\c\\(\\i*\\)\\)$\" end=\"^\\z1\\(;\\=$\\)\\@=\" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend\n  syn region phpHereDoc matchgroup=Delimiter start=\"\\(<<<\\)\\@<=\\z(\\(\\I\\i*\\)\\=\\(javascript\\)\\c\\(\\i*\\)\\)$\" end=\"^\\z1\\(;\\=$\\)\\@=\"  contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend\n  syn case ignore\n\n\" NowDoc\n  syn region phpNowDoc matchgroup=Delimiter start=+\\(<<<\\)\\@<='\\z(\\I\\i*\\)'$+ end=\"^\\z1\\(;\\=$\\)\\@=\" contained keepend extend\n\n\" Parent\nif exists(\"php_parent_error_close\") || exists(\"php_parent_error_open\")\n  syn match  phpParent \"[{}]\"  contained\n  syn region phpParent matchgroup=Delimiter start=\"(\" end=\")\"  contained contains=@phpClFunction transparent\n  syn region phpParent matchgroup=Delimiter start=\"\\[\" end=\"\\]\"  contained contains=@phpClInside transparent\n  if !exists(\"php_parent_error_close\")\n    syn match phpParent \"[\\])]\" contained\n  endif\nelse\n  syn match phpParent \"[({[\\]})]\" contained\nendif\n\n\" Static classes\nsyn match phpStaticClasses \"\\v\\h\\w+(::)@=\" contained display\n\n\" Clusters\nsyn cluster phpClConst contains=phpFunctions,phpClasses,phpStaticClasses,phpIdentifier,phpStatement,phpKeyword,phpOperator,phpSplatOperator,phpStringSingle,phpStringDouble,phpBacktick,phpNumber,phpType,phpBoolean,phpStructure,phpMethodsVar,phpConstants,phpException,phpSuperglobals,phpMagicConstants,phpServerVars\nsyn cluster phpClInside contains=@phpClConst,phpComment,phpDocComment,phpParent,phpParentError,phpInclude,phpHereDoc,phpNowDoc\nsyn cluster phpClFunction contains=@phpClInside,phpDefine,phpParentError,phpStorageClass,phpKeyword\nsyn cluster phpClTop contains=@phpClFunction,phpFoldFunction,phpFoldClass,phpFoldInterface,phpFoldTry,phpFoldCatch\n\n\" Php Region\nif exists(\"php_parent_error_open\")\n  syn region phpRegion matchgroup=Delimiter start=\"<?\\(php\\)\\=\" end=\"?>\" contains=@phpClTop\nelse\n  syn region phpRegion matchgroup=Delimiter start=\"<?\\(php\\)\\=\" end=\"?>\" contains=@phpClTop keepend\nendif\n\n\" Fold\nif exists(\"php_folding\") && php_folding==1\n\" match one line constructs here and skip them at folding\n  syn keyword phpSCKeyword  abstract final private protected public static  contained\n  syn keyword phpFCKeyword  function  contained\n  syn match phpDefine \"\\(\\s\\|^\\)\\(abstract\\s\\+\\|final\\s\\+\\|private\\s\\+\\|protected\\s\\+\\|public\\s\\+\\|static\\s\\+\\)*function\\(\\s\\+.*[;}]\\)\\@=\"  contained contains=phpSCKeyword\n  syn match phpStructure \"\\(\\s\\|^\\)\\(abstract\\s\\+\\|final\\s\\+\\)*class\\(\\s\\+.*}\\)\\@=\"  contained\n  syn match phpStructure \"\\(\\s\\|^\\)interface\\(\\s\\+.*}\\)\\@=\"  contained\n  syn match phpException \"\\(\\s\\|^\\)try\\(\\s\\+.*}\\)\\@=\"  contained\n  syn match phpException \"\\(\\s\\|^\\)catch\\(\\s\\+.*}\\)\\@=\"  contained\n\n  set foldmethod=syntax\n  syn region phpFoldHtmlInside matchgroup=Delimiter start=\"?>\" end=\"<?\\(php\\)\\=\" contained transparent contains=@htmlTop\n  syn region phpFoldFunction matchgroup=Storageclass start=\"^\\z(\\s*\\)\\(abstract\\s\\+\\|final\\s\\+\\|private\\s\\+\\|protected\\s\\+\\|public\\s\\+\\|static\\s\\+\\)*function\\s\\([^};]*$\\)\\@=\"rs=e-9 matchgroup=Delimiter end=\"^\\z1}\" contains=@phpClFunction,phpFoldHtmlInside,phpFCKeyword contained transparent fold extend\n  syn region phpFoldFunction matchgroup=Define start=\"^function\\s\\([^};]*$\\)\\@=\" matchgroup=Delimiter end=\"^}\" contains=@phpClFunction,phpFoldHtmlInside contained transparent fold extend\n  syn region phpFoldClass matchgroup=Structure start=\"^\\z(\\s*\\)\\(abstract\\s\\+\\|final\\s\\+\\)*class\\s\\+\\([^}]*$\\)\\@=\" matchgroup=Delimiter end=\"^\\z1}\" contains=@phpClFunction,phpFoldFunction,phpSCKeyword contained transparent fold extend\n  syn region phpFoldInterface matchgroup=Structure start=\"^\\z(\\s*\\)interface\\s\\+\\([^}]*$\\)\\@=\" matchgroup=Delimiter end=\"^\\z1}\" contains=@phpClFunction,phpFoldFunction contained transparent fold extend\n  syn region phpFoldCatch matchgroup=Exception start=\"^\\z(\\s*\\)catch\\s\\+\\([^}]*$\\)\\@=\" matchgroup=Delimiter end=\"^\\z1}\" contains=@phpClFunction,phpFoldFunction contained transparent fold extend\n  syn region phpFoldTry matchgroup=Exception start=\"^\\z(\\s*\\)try\\s\\+\\([^}]*$\\)\\@=\" matchgroup=Delimiter end=\"^\\z1}\" contains=@phpClFunction,phpFoldFunction contained transparent fold extend\nelseif exists(\"php_folding\") && php_folding==2\n  set foldmethod=syntax\n  syn region phpFoldHtmlInside matchgroup=Delimiter start=\"?>\" end=\"<?\\(php\\)\\=\" contained transparent contains=@htmlTop\n  syn region phpParent matchgroup=Delimiter start=\"{\" end=\"}\"  contained contains=@phpClFunction,phpFoldHtmlInside transparent fold\nendif\n\n\" Sync\nif php_sync_method==-1\n  syn sync match phpRegionSync grouphere phpRegion \"^\\s*<?\\(php\\)\\=\\s*$\"\n  syn sync match phpRegionSync grouphere NONE \"^\\s*?>\\s*$\"\n  syn sync match phpRegionSync grouphere NONE \"^\\s*%>\\s*$\"\n  syn sync match phpRegionSync grouphere phpRegion \"function\\s.*(.*\\$\"\nelseif php_sync_method>0\n  exec \"syn sync minlines=\" . php_sync_method\nelse\n  exec \"syn sync fromstart\"\nendif\n\n\" Define the default highlighting.\n\" For version 5.8 and later: only when an item doesn't have highlighting yet\nif !exists(\"did_php_syn_inits\")\n\n  hi def link phpComment          Comment\n  hi def link phpMagicConstants   Constant\n  hi def link phpServerVars       Constant\n  hi def link phpConstants        Constant\n  hi def link phpBoolean          Boolean\n  hi def link phpNumber           Number\n  hi def link phpStringSingle     String\n  hi def link phpStringDouble     String\n  hi def link phpBacktick         String\n  hi def link phpStringDelimiter  String\n  hi def link phpHereDoc          String\n  hi def link phpNowDoc           String\n  hi def link phpFunctions        Function\n  hi def link phpMethods          Function\n  hi def link phpClasses          StorageClass\n  hi def link phpException        StorageClass\n  hi def link phpIdentifier       Identifier\n  hi def link phpIdentifierSimply Identifier\n  hi def link phpStatement        Statement\n  hi def link phpStructure        Statement\n  hi def link phpOperator         Operator\n  hi def link phpMemberSelector   Operator\n  hi def link phpInclude          PreProc\n  hi def link phpDefine           PreProc\n  hi def link phpKeyword          Keyword\n  hi def link phpSuperglobals     Type\n  hi def link phpType             Type\n  hi def link phpParent           Special\n  hi def link phpSpecialChar      SpecialChar\n  hi def link phpStrEsc           SpecialChar\n  hi def link phpParentError      Error\n  hi def link phpOctalError       Error\n  hi def link phpTodo             Todo\n\n  hi def link phpSplatOperator    phpOperator\n\n  hi def link phpCommentStar      phpComment\n  hi def link phpDocComment       phpComment\n  hi def link phpCommentTitle     phpComment\n  hi def link phpDocTags          phpComment\n  hi def link phpDocParam         phpComment\n  hi def link phpDocIdentifier    phpComment\n\n  hi def link phpFCKeyword        phpKeyword\n  hi def link phpSCKeyword        phpKeyword\n\n  hi def link phpStaticClasses    phpClasses\n\n  if exists(\"php_var_selector_is_identifier\")\n    hi def link phpVarSelector    phpIdentifier\n  else\n    hi def link phpVarSelector    phpOperator\n  endif\n\nendif\n\nlet b:current_syntax = \"php\"\n\nif main_syntax == 'php'\n  unlet main_syntax\nendif\n\n\" vim: ts=8 sts=2 sw=2 expandtab\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/pod.vim",
    "content": "\" Vim syntax file\n\" Language:      Perl POD format\n\" Maintainer:    vim-perl <vim-perl@googlegroups.com>\n\" Previously:    Scott Bigham <dsb@killerbunnies.org>\n\" Homepage:      http://github.com/vim-perl/vim-perl\n\" Bugs/requests: http://github.com/vim-perl/vim-perl/issues\n\" Last Change:   {{LAST_CHANGE}}\n\n\" To add embedded POD documentation highlighting to your syntax file, add\n\" the commands:\n\"\n\"   syn include @Pod <sfile>:p:h/pod.vim\n\"   syn region myPOD start=\"^=pod\" start=\"^=head\" end=\"^=cut\" keepend contained contains=@Pod\n\"\n\" and add myPod to the contains= list of some existing region, probably a\n\" comment.  The \"keepend\" flag is needed because \"=cut\" is matched as a\n\" pattern in its own right.\n\n\n\" Remove any old syntax stuff hanging around (this is suppressed\n\" automatically by \":syn include\" if necessary).\n\" For version 5.x: Clear all syntax items\n\" For version 6.x: Quit when a syntax file was already loaded\nif version < 600\n  syntax clear\nelseif exists(\"b:current_syntax\")\n  finish\nendif\n\nlet s:cpo_save = &cpo\nset cpo&vim\n\n\" POD commands\nsyn match podCommand    \"^=encoding\"  nextgroup=podCmdText contains=@NoSpell\nsyn match podCommand    \"^=head[1234]\"  nextgroup=podCmdText contains=@NoSpell\nsyn match podCommand    \"^=item\"        nextgroup=podCmdText contains=@NoSpell\nsyn match podCommand    \"^=over\"        nextgroup=podOverIndent skipwhite contains=@NoSpell\nsyn match podCommand    \"^=back\"        contains=@NoSpell\nsyn match podCommand    \"^=cut\"         contains=@NoSpell\nsyn match podCommand    \"^=pod\"         contains=@NoSpell\nsyn match podCommand    \"^=for\"         nextgroup=podForKeywd skipwhite contains=@NoSpell\nsyn match podCommand    \"^=begin\"       nextgroup=podForKeywd skipwhite contains=@NoSpell\nsyn match podCommand    \"^=end\"         nextgroup=podForKeywd skipwhite contains=@NoSpell\n\n\" Text of a =head1, =head2 or =item command\nsyn match podCmdText\t\".*$\" contained contains=podFormat,@NoSpell\n\n\" Indent amount of =over command\nsyn match podOverIndent\t\"\\d\\+\" contained contains=@NoSpell\n\n\" Formatter identifier keyword for =for, =begin and =end commands\nsyn match podForKeywd\t\"\\S\\+\" contained contains=@NoSpell\n\n\" An indented line, to be displayed verbatim\nsyn match podVerbatimLine\t\"^\\s.*$\" contains=@NoSpell\n\n\" Inline textual items handled specially by POD\nsyn match podSpecial\t\"\\(\\<\\|&\\)\\I\\i*\\(::\\I\\i*\\)*([^)]*)\" contains=@NoSpell\nsyn match podSpecial\t\"[$@%]\\I\\i*\\(::\\I\\i*\\)*\\>\" contains=@NoSpell\n\n\" Special formatting sequences\nsyn region podFormat\tstart=\"[IBSCLFX]<[^<]\"me=e-1 end=\">\" oneline contains=podFormat,@NoSpell\nsyn region podFormat\tstart=\"[IBSCLFX]<<\\s\" end=\"\\s>>\" oneline contains=podFormat,@NoSpell\nsyn match  podFormat\t\"Z<>\"\nsyn match  podFormat\t\"E<\\(\\d\\+\\|\\I\\i*\\)>\" contains=podEscape,podEscape2,@NoSpell\nsyn match  podEscape\t\"\\I\\i*>\"me=e-1 contained contains=@NoSpell\nsyn match  podEscape2\t\"\\d\\+>\"me=e-1 contained contains=@NoSpell\n\n\" Define the default highlighting.\n\" For version 5.7 and earlier: only when not done already\n\" For version 5.8 and later: only when an item doesn't have highlighting yet\nif version >= 508 || !exists(\"did_pod_syntax_inits\")\n  if version < 508\n    let did_pod_syntax_inits = 1\n    command -nargs=+ HiLink hi link <args>\n  else\n    command -nargs=+ HiLink hi def link <args>\n  endif\n\n  HiLink podCommand\t\tStatement\n  HiLink podCmdText\t\tString\n  HiLink podOverIndent\t\tNumber\n  HiLink podForKeywd\t\tIdentifier\n  HiLink podFormat\t\tIdentifier\n  HiLink podVerbatimLine\tPreProc\n  HiLink podSpecial\t\tIdentifier\n  HiLink podEscape\t\tString\n  HiLink podEscape2\t\tNumber\n\n  delcommand HiLink\nendif\n\nif exists(\"perl_pod_spellcheck_headings\")\n  \" Spell-check headings\n  syn clear podCmdText\n  syn match podCmdText    \".*$\" contained contains=podFormat\nendif\n\nif exists(\"perl_pod_formatting\")\n  \" By default, escapes like C<> are not checked for spelling. Remove B<>\n  \" and I<> from the list of escapes.\n  syn clear podFormat\n  syn region podFormat start=\"[CLF]<[^<]\"me=e-1 end=\">\" oneline contains=podFormat,@NoSpell\n  syn region podFormat start=\"[CLF]<<\\s\" end=\"\\s>>\" oneline contains=podFormat,@NoSpell\n\n  \" Don't spell-check inside E<>, but ensure that the E< itself isn't\n  \" marked as a spelling mistake.\n  syn match podFormat   \"E<\\(\\d\\+\\|\\I\\i*\\)>\" contains=podEscape,podEscape2,@NoSpell\n\n  \" Z<> is a mock formatting code. Ensure Z<> on its own isn't marked as a\n  \" spelling mistake.\n  syn match podFormat   \"Z<>\" contains=podEscape,podEscape2,@NoSpell\n\n  \" These are required so that whatever is *within* B<...>, I<...>, etc. is\n  \" spell-checked, but not the B, I, ... itself.\n  syn match podBoldOpen    \"B<\" contains=@NoSpell\n  syn match podItalicOpen  \"I<\" contains=@NoSpell\n  syn match podNoSpaceOpen \"S<\" contains=@NoSpell\n  syn match podIndexOpen   \"X<\" contains=@NoSpell\n\n  \" Same as above but for the << >> syntax.\n  syn match podBoldAlternativeDelimOpen    \"B<< \" contains=@NoSpell\n  syn match podItalicAlternativeDelimOpen  \"I<< \" contains=@NoSpell\n  syn match podNoSpaceAlternativeDelimOpen \"S<< \" contains=@NoSpell\n  syn match podIndexAlternativeDelimOpen   \"X<< \" contains=@NoSpell\n\n  \" Add support for spell checking text inside B<>, I<>, S<> and X<>.\n  syn region podBold start=\"B<[^<]\"me=e end=\">\" oneline contains=podBoldItalic,podBoldOpen\n  syn region podBoldAlternativeDelim start=\"B<<\\s\" end=\"\\s>>\" oneline contains=podBoldAlternativeDelimOpen\n\n  syn region podItalic start=\"I<[^<]\"me=e end=\">\" oneline contains=podItalicBold,podItalicOpen\n  syn region podItalicAlternativeDelim start=\"I<<\\s\" end=\"\\s>>\" oneline contains=podItalicAlternativeDelimOpen\n\n  \" Nested bold/italic and vice-versa\n  syn region podBoldItalic contained start=\"I<[^<]\"me=e end=\">\" oneline\n  syn region podItalicBold contained start=\"B<[^<]\"me=e end=\">\" oneline\n\n  syn region podNoSpace start=\"S<[^<]\"ms=s-2 end=\">\"me=e oneline contains=podNoSpaceOpen\n  syn region podNoSpaceAlternativeDelim start=\"S<<\\s\"ms=s-2 end=\"\\s>>\"me=e oneline contains=podNoSpaceAlternativeDelimOpen\n\n  syn region podIndex start=\"X<[^<]\"ms=s-2 end=\">\"me=e oneline contains=podIndexOpen\n  syn region podIndexAlternativeDelim start=\"X<<\\s\"ms=s-2 end=\"\\s>>\"me=e oneline contains=podIndexAlternativeDelimOpen\n\n  \" Restore this (otherwise B<> is shown as bold inside verbatim)\n  syn match podVerbatimLine\t\"^\\s.*$\" contains=@NoSpell\n\n  \" Ensure formatted text can be displayed in headings and items\n  syn clear podCmdText\n\n  if exists(\"perl_pod_spellcheck_headings\")\n    syn match podCmdText \".*$\" contained contains=podFormat,podBold,\n          \\podBoldAlternativeDelim,podItalic,podItalicAlternativeDelim,\n          \\podBoldOpen,podItalicOpen,podBoldAlternativeDelimOpen,\n          \\podItalicAlternativeDelimOpen,podNoSpaceOpen\n  else\n    syn match podCmdText \".*$\" contained contains=podFormat,podBold,\n          \\podBoldAlternativeDelim,podItalic,podItalicAlternativeDelim,\n          \\@NoSpell\n  endif\n\n  \" Specify how to display these\n  hi def podBold term=bold cterm=bold gui=bold\n\n  hi link podBoldAlternativeDelim podBold\n  hi link podBoldAlternativeDelimOpen podBold\n  hi link podBoldOpen podBold\n\n  hi link podNoSpace                 Identifier\n  hi link podNoSpaceAlternativeDelim Identifier\n\n  hi link podIndex                   Identifier\n  hi link podIndexAlternativeDelim   Identifier\n\n  hi def podItalic term=italic cterm=italic gui=italic\n\n  hi link podItalicAlternativeDelim podItalic\n  hi link podItalicAlternativeDelimOpen podItalic\n  hi link podItalicOpen podItalic\n\n  hi def podBoldItalic term=italic,bold cterm=italic,bold gui=italic,bold\n  hi def podItalicBold term=italic,bold cterm=italic,bold gui=italic,bold\nendif\n\nlet b:current_syntax = \"pod\"\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim: ts=8\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/proto.vim",
    "content": "\" Protocol Buffers - Google's data interchange format\n\" Copyright 2008 Google Inc.  All rights reserved.\n\" http://code.google.com/p/protobuf/\n\"\n\" Redistribution and use in source and binary forms, with or without\n\" modification, are permitted provided that the following conditions are\n\" met:\n\"\n\"     * Redistributions of source code must retain the above copyright\n\" notice, this list of conditions and the following disclaimer.\n\"     * Redistributions in binary form must reproduce the above\n\" copyright notice, this list of conditions and the following disclaimer\n\" in the documentation and/or other materials provided with the\n\" distribution.\n\"     * Neither the name of Google Inc. nor the names of its\n\" contributors may be used to endorse or promote products derived from\n\" this software without specific prior written permission.\n\"\n\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\" \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n\" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n\" OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n\" OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\" This is the Vim syntax file for Google Protocol Buffers.\n\"\n\" Usage:\n\"\n\" 1. cp proto.vim ~/.vim/syntax/\n\" 2. Add the following to ~/.vimrc:\n\"\n\" augroup filetype\n\"   au! BufRead,BufNewFile *.proto setfiletype proto\n\" augroup end\n\"\n\" Or just create a new file called ~/.vim/ftdetect/proto.vim with the\n\" previous lines on it.\n\nif version < 600\n  syntax clear\nelseif exists(\"b:current_syntax\")\n  finish\nendif\n\nsyn case match\n\nsyn keyword pbTodo       contained TODO FIXME XXX\nsyn cluster pbCommentGrp contains=pbTodo\n\nsyn keyword pbSyntax     syntax import option\nsyn keyword pbStructure  package message group\nsyn keyword pbRepeat     optional required repeated\nsyn keyword pbDefault    default\nsyn keyword pbExtend     extend extensions to max\nsyn keyword pbRPC        service rpc returns\n\nsyn keyword pbType      int32 int64 uint32 uint64 sint32 sint64\nsyn keyword pbType      fixed32 fixed64 sfixed32 sfixed64\nsyn keyword pbType      float double bool string bytes\nsyn keyword pbTypedef   enum\nsyn keyword pbBool      true false\n\nsyn match   pbInt     /-\\?\\<\\d\\+\\>/\nsyn match   pbInt     /\\<0[xX]\\x+\\>/\nsyn match   pbFloat   /\\<-\\?\\d*\\(\\.\\d*\\)\\?/\n\" TODO: .proto also supports C-style block comments;\n\" see /usr/share/vim/vim70/syntax/c.vim for how it's done.\nsyn region  pbComment start=\"//\" skip=\"\\\\$\" end=\"$\" keepend contains=@pbCommentGrp\nsyn region  pbString  start=/\"/ skip=/\\\\\"/ end=/\"/\nsyn region  pbString  start=/'/ skip=/\\\\'/ end=/'/\n\nif version >= 508 || !exists(\"did_proto_syn_inits\")\n  if version < 508\n    let did_proto_syn_inits = 1\n    command -nargs=+ HiLink hi link <args>\n  else\n    command -nargs=+ HiLink hi def link <args>\n  endif\n\n  HiLink pbTodo         Todo\n\n  HiLink pbSyntax       Include\n  HiLink pbStructure    Structure\n  HiLink pbRepeat       Repeat\n  HiLink pbDefault      Keyword\n  HiLink pbExtend       Keyword\n  HiLink pbRPC          Keyword\n  HiLink pbType         Type\n  HiLink pbTypedef      Typedef\n  HiLink pbBool         Boolean\n\n  HiLink pbInt          Number\n  HiLink pbFloat        Float\n  HiLink pbComment      Comment\n  HiLink pbString       String\n\n  delcommand HiLink\nendif\n\nlet b:current_syntax = \"proto\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/puppet.vim",
    "content": "\" puppet syntax file\n\" Filename:     puppet.vim\n\" Language:     puppet configuration file\n\" Maintainer:   Luke Kanies <luke@madstop.com>\n\" URL:\n\" Last Change:\n\" Version:\n\"\n\n\" Copied from the cfengine, ruby, and perl syntax files\n\" For version 5.x: Clear all syntax items\n\" For version 6.x: Quit when a syntax file was already loaded\nif version < 600\n  syntax clear\nelseif exists(\"b:current_syntax\")\n  finish\nendif\n\n\" match class/definition/node declarations\nsyn region  puppetDefine        start=\"^\\s*\\(class\\|define\\|node\\)\\s\" end=\"{\" contains=puppetDefType,puppetDefName,puppetDefArguments,puppetNodeRe\nsyn keyword puppetDefType       class define node inherits contained\nsyn region  puppetDefArguments  start=\"(\" end=\")\" contained contains=puppetArgument,puppetString\nsyn match   puppetArgument      \"\\w\\+\" contained\nsyn match   puppetArgument      \"\\$\\w\\+\" contained\nsyn match   puppetArgument      \"'[^']+'\" contained\nsyn match   puppetArgument      '\"[^\"]+\"' contained\nsyn match   puppetDefName       \"\\w\\+\" contained\nsyn match   puppetNodeRe        \"/.*/\" contained\n\n\" match 'foo' in 'class foo { ...'\n\" match 'foo::bar' in 'class foo::bar { ...'\n\" match 'Foo::Bar' in 'Foo::Bar[\"...\"]\n\"FIXME: \"Foo-bar\" doesn't get highlighted as expected, although \"foo-bar\" does.\nsyn match   puppetInstance      \"[A-Za-z0-9_-]\\+\\(::[A-Za-z0-9_-]\\+\\)*\\s*{\" contains=puppetTypeName,puppetTypeDefault\nsyn match   puppetInstance      \"[A-Z][a-z_-]\\+\\(::[A-Z][a-z_-]\\+\\)*\\s*[[{]\" contains=puppetTypeName,puppetTypeDefault\nsyn match   puppetInstance      \"[A-Z][a-z_-]\\+\\(::[A-Z][a-z_-]\\+\\)*\\s*<\\?<|\" contains=puppetTypeName,puppetTypeDefault\nsyn match   puppetTypeName      \"[a-z]\\w*\" contained\nsyn match   puppetTypeDefault   \"[A-Z]\\w*\" contained\n\n\" match 'foo' in 'foo => \"bar\"'\nsyn match   puppetParam         \"\\w\\+\\s*[=+]>\" contains=puppetParamName\nsyn match   puppetParamName     \"\\w\\+\" contained\n\n\" match 'present' in 'ensure => present'\n\" match '2755' in 'mode => 2755'\n\" don't match 'bar' in 'foo => bar'\nsyn match   puppetParam         \"\\w\\+\\s*[=+]>\\s*[a-z0-9]\\+\" contains=puppetParamString,puppetParamName\nsyn match   puppetParamString   \"[=+]>\\s*\\w\\+\" contains=puppetParamKeyword,puppetParamSpecial,puppetParamDigits contained\nsyn keyword puppetParamKeyword  present absent purged latest installed running stopped mounted unmounted role configured file directory link contained\nsyn keyword puppetParamSpecial  true false undef contained\nsyn match   puppetParamDigits   \"[0-9]\\+\"\n\n\" match 'template' in 'content => template(\"...\")'\nsyn match   puppetParam         \"\\w\\+\\s*[=+]>\\s*\\w\\+\\s*(\" contains=puppetFunction,puppetParamName\n\" statements\nsyn region  puppetFunction      start=\"^\\s*\\(alert\\|crit\\|debug\\|emerg\\|err\\|fail\\|include\\|info\\|notice\\|realize\\|require\\|search\\|tag\\|warning\\)\\s*(\" end=\")\" contained contains=puppetString\n\" rvalues\nsyn region  puppetFunction      start=\"^\\s*\\(defined\\|file\\|fqdn_rand\\|generate\\|inline_template\\|regsubst\\|sha1\\|shellquote\\|split\\|sprintf\\|tagged\\|template\\|versioncmp\\)\\s*(\" end=\")\" contained contains=puppetString\n\nsyn match   puppetVariable      \"$[a-zA-Z0-9_:]\\+\"\nsyn match   puppetVariable      \"${[a-zA-Z0-9_:]\\+}\"\n\n\" match anything between simple/double quotes.\n\" don't match variables if preceded by a backslash.\nsyn region  puppetString        start=+'+ skip=+\\\\\\\\\\|\\\\'+ end=+'+\nsyn region  puppetString        start=+\"+ skip=+\\\\\\\\\\|\\\\\"+ end=+\"+ contains=puppetVariable,puppetNotVariable\nsyn match   puppetString        \"/[^/]*/\"\nsyn match   puppetNotVariable   \"\\\\$\\w\\+\" contained\nsyn match   puppetNotVariable   \"\\\\${\\w\\+}\" contained\n\nsyn keyword puppetKeyword       import inherits include\nsyn keyword puppetControl       case default if else elsif\nsyn keyword puppetSpecial       true false undef\n\n\" comments last overriding everything else\nsyn match   puppetComment       \"\\s*#.*$\" contains=puppetTodo\nsyn region  puppetComment       start=\"/\\*\" end=\"\\*/\" contains=puppetTodo extend\nsyn keyword puppetTodo          TODO NOTE FIXME XXX BUG HACK contained\n\n\" Define the default highlighting.\n\" For version 5.7 and earlier: only when not done already\n\" For version 5.8 and later: only when an item doesn't have highlighting yet\nif version >= 508 || !exists(\"did_puppet_syn_inits\")\n  if version < 508\n    let did_puppet_syn_inits = 1\n    command -nargs=+ HiLink hi link <args>\n  else\n    command -nargs=+ HiLink hi def link <args>\n  endif\n\n  HiLink puppetVariable             Identifier\n  HiLink puppetType                 Identifier\n  HiLink puppetKeyword              Define\n  HiLink puppetComment              Comment\n  HiLink puppetString               String\n  HiLink puppetParamKeyword         String\n  HiLink puppetParamDigits          String\n  HiLink puppetNotVariable          String\n  HiLink puppetParamSpecial         Special\n  HiLink puppetSpecial              Special\n  HiLink puppetTodo                 Todo\n  HiLink puppetControl              Statement\n  HiLink puppetDefType              Define\n  HiLink puppetDefName              Type\n  HiLink puppetNodeRe               Type\n  HiLink puppetTypeName             Statement\n  HiLink puppetTypeDefault          Type\n  HiLink puppetParamName            Identifier\n  HiLink puppetArgument             Identifier\n  HiLink puppetFunction             Function\n\n  delcommand HiLink\nendif\n\nlet b:current_syntax = \"puppet\"\nset iskeyword=-,:,@,48-57,_,192-255\n\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/python.vim",
    "content": "\" Vim syntax file\n\" Language:\tPython\n\" Maintainer:\tDmitry Vasiliev <dima@hlabs.spb.ru>\n\" URL:\t\thttp://www.hlabs.spb.ru/vim/python.vim\n\" Last Change:\t2010-04-09\n\" Filenames:\t*.py\n\" Version:\t2.6.6\n\"\n\" Based on python.vim (from Vim 6.1 distribution)\n\" by Neil Schemenauer <nas@python.ca>\n\"\n\" Thanks:\n\"\n\"    Jeroen Ruigrok van der Werven\n\"        for the idea to highlight erroneous operators\n\"    Pedro Algarvio\n\"        for the patch to enable spell checking only for the right spots\n\"        (strings and comments)\n\"    John Eikenberry\n\"        for the patch fixing small typo\n\"    Caleb Adamantine\n\"        for the patch fixing highlighting for decorators\n\"    Andrea Riciputi\n\"        for the patch with new configuration options\n\n\"\n\" Options:\n\"\n\"    For set option do: let OPTION_NAME = 1\n\"    For clear option do: let OPTION_NAME = 0\n\"\n\" Option names:\n\"\n\"    For highlight builtin functions and objects:\n\"       python_highlight_builtins\n\"\n\"    For highlight builtin objects:\n\"       python_highlight_builtin_objs\n\"\n\"    For highlight builtin funtions:\n\"       python_highlight_builtin_funcs\n\"\n\"    For highlight standard exceptions:\n\"       python_highlight_exceptions\n\"\n\"    For highlight string formatting:\n\"       python_highlight_string_formatting\n\"\n\"    For highlight str.format syntax:\n\"       python_highlight_string_format\n\"\n\"    For highlight string.Template syntax:\n\"       python_highlight_string_templates\n\"\n\"    For highlight indentation errors:\n\"       python_highlight_indent_errors\n\"\n\"    For highlight trailing spaces:\n\"       python_highlight_space_errors\n\"\n\"    For highlight doc-tests:\n\"       python_highlight_doctests\n\"\n\"    If you want all Python highlightings above:\n\"       python_highlight_all\n\"    (This option not override previously set options)\n\"\n\"    For fast machines:\n\"       python_slow_sync\n\"\n\"    For \"print\" builtin as function:\n\"       python_print_as_function\n\n\" For version 5.x: Clear all syntax items\n\" For version 6.x: Quit when a syntax file was already loaded\nif version < 600\n  syntax clear\nelseif exists(\"b:current_syntax\")\n  finish\nendif\n\nif exists(\"python_highlight_all\") && python_highlight_all != 0\n  \" Not override previously set options\n  if !exists(\"python_highlight_builtins\")\n    if !exists(\"python_highlight_builtin_objs\")\n      let python_highlight_builtin_objs = 1\n    endif\n    if !exists(\"python_highlight_builtin_funcs\")\n      let python_highlight_builtin_funcs = 1\n    endif\n  endif\n  if !exists(\"python_highlight_exceptions\")\n    let python_highlight_exceptions = 1\n  endif\n  if !exists(\"python_highlight_string_formatting\")\n    let python_highlight_string_formatting = 1\n  endif\n  if !exists(\"python_highlight_string_format\")\n    let python_highlight_string_format = 1\n  endif\n  if !exists(\"python_highlight_string_templates\")\n    let python_highlight_string_templates = 1\n  endif\n  if !exists(\"python_highlight_indent_errors\")\n    let python_highlight_indent_errors = 1\n  endif\n  if !exists(\"python_highlight_space_errors\")\n    let python_highlight_space_errors = 1\n  endif\n  if !exists(\"python_highlight_doctests\")\n    let python_highlight_doctests = 1\n  endif\nendif\n\n\" Keywords\nsyn keyword pythonStatement\tbreak continue del\nsyn keyword pythonStatement\texec return\nsyn keyword pythonStatement\tpass raise\nsyn keyword pythonStatement\tglobal assert\nsyn keyword pythonStatement\tlambda yield\nsyn keyword pythonStatement\twith\nsyn keyword pythonStatement\tdef class nextgroup=pythonFunction skipwhite\nsyn match   pythonFunction\t\"[a-zA-Z_][a-zA-Z0-9_]*\" display contained\nsyn keyword pythonRepeat\tfor while\nsyn keyword pythonConditional\tif elif else\nsyn keyword pythonPreCondit\timport from as\nsyn keyword pythonException\ttry except finally\nsyn keyword pythonOperator\tand in is not or\n\nif !exists(\"python_print_as_function\") || python_print_as_function == 0\n  syn keyword pythonStatement print\nendif\n\n\" Decorators (new in Python 2.4)\nsyn match   pythonDecorator\t\"@\" display nextgroup=pythonDottedName skipwhite\nsyn match   pythonDottedName \"[a-zA-Z_][a-zA-Z0-9_]*\\(\\.[a-zA-Z_][a-zA-Z0-9_]*\\)*\" display contained\nsyn match   pythonDot        \"\\.\" display containedin=pythonDottedName\n\n\" Comments\nsyn match   pythonComment\t\"#.*$\" display contains=pythonTodo,@Spell\nsyn match   pythonRun\t\t\"\\%^#!.*$\"\nsyn match   pythonCoding\t\"\\%^.*\\(\\n.*\\)\\?#.*coding[:=]\\s*[0-9A-Za-z-_.]\\+.*$\"\nsyn keyword pythonTodo\t\tTODO FIXME XXX contained\n\n\" Errors\nsyn match pythonError\t\t\"\\<\\d\\+\\D\\+\\>\" display\nsyn match pythonError\t\t\"[$?]\" display\nsyn match pythonError\t\t\"[&|]\\{2,}\" display\nsyn match pythonError\t\t\"[=]\\{3,}\" display\n\n\" TODO: Mixing spaces and tabs also may be used for pretty formatting multiline\n\" statements. For now I don't know how to work around this.\nif exists(\"python_highlight_indent_errors\") && python_highlight_indent_errors != 0\n  syn match pythonIndentError\t\"^\\s*\\( \\t\\|\\t \\)\\s*\\S\"me=e-1 display\nendif\n\n\" Trailing space errors\nif exists(\"python_highlight_space_errors\") && python_highlight_space_errors != 0\n  syn match pythonSpaceError\t\"\\s\\+$\" display\nendif\n\n\" Strings\nsyn region pythonString\t\tstart=+[bB]\\='+ skip=+\\\\\\\\\\|\\\\'\\|\\\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonEscape,pythonEscapeError,@Spell\nsyn region pythonString\t\tstart=+[bB]\\=\"+ skip=+\\\\\\\\\\|\\\\\"\\|\\\\$+ excludenl end=+\"+ end=+$+ keepend contains=pythonEscape,pythonEscapeError,@Spell\nsyn region pythonString\t\tstart=+[bB]\\=\"\"\"+ end=+\"\"\"+ keepend contains=pythonEscape,pythonEscapeError,pythonDocTest2,pythonSpaceError,@Spell\nsyn region pythonString\t\tstart=+[bB]\\='''+ end=+'''+ keepend contains=pythonEscape,pythonEscapeError,pythonDocTest,pythonSpaceError,@Spell\n\nsyn match  pythonEscape\t\t+\\\\[abfnrtv'\"\\\\]+ display contained\nsyn match  pythonEscape\t\t\"\\\\\\o\\o\\=\\o\\=\" display contained\nsyn match  pythonEscapeError\t\"\\\\\\o\\{,2}[89]\" display contained\nsyn match  pythonEscape\t\t\"\\\\x\\x\\{2}\" display contained\nsyn match  pythonEscapeError\t\"\\\\x\\x\\=\\X\" display contained\nsyn match  pythonEscape\t\t\"\\\\$\"\n\n\" Unicode strings\nsyn region pythonUniString\tstart=+[uU]'+ skip=+\\\\\\\\\\|\\\\'\\|\\\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError,@Spell\nsyn region pythonUniString\tstart=+[uU]\"+ skip=+\\\\\\\\\\|\\\\\"\\|\\\\$+ excludenl end=+\"+ end=+$+ keepend contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError,@Spell\nsyn region pythonUniString\tstart=+[uU]\"\"\"+ end=+\"\"\"+ keepend contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell\nsyn region pythonUniString\tstart=+[uU]'''+ end=+'''+ keepend contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell\n\nsyn match  pythonUniEscape\t\"\\\\u\\x\\{4}\" display contained\nsyn match  pythonUniEscapeError\t\"\\\\u\\x\\{,3}\\X\" display contained\nsyn match  pythonUniEscape\t\"\\\\U\\x\\{8}\" display contained\nsyn match  pythonUniEscapeError\t\"\\\\U\\x\\{,7}\\X\" display contained\nsyn match  pythonUniEscape\t\"\\\\N{[A-Z ]\\+}\" display contained\nsyn match  pythonUniEscapeError\t\"\\\\N{[^A-Z ]\\+}\" display contained\n\n\" Raw strings\nsyn region pythonRawString\tstart=+[rR]'+ skip=+\\\\\\\\\\|\\\\'\\|\\\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell\nsyn region pythonRawString\tstart=+[rR]\"+ skip=+\\\\\\\\\\|\\\\\"\\|\\\\$+ excludenl end=+\"+ end=+$+ keepend contains=pythonRawEscape,@Spell\nsyn region pythonRawString\tstart=+[rR]\"\"\"+ end=+\"\"\"+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell\nsyn region pythonRawString\tstart=+[rR]'''+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell\n\nsyn match pythonRawEscape\t+\\\\['\"]+ display transparent contained\n\n\" Unicode raw strings\nsyn region pythonUniRawString\tstart=+[uU][rR]'+ skip=+\\\\\\\\\\|\\\\'\\|\\\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError,@Spell\nsyn region pythonUniRawString\tstart=+[uU][rR]\"+ skip=+\\\\\\\\\\|\\\\\"\\|\\\\$+ excludenl end=+\"+ end=+$+ keepend contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError,@Spell\nsyn region pythonUniRawString\tstart=+[uU][rR]\"\"\"+ end=+\"\"\"+ keepend contains=pythonUniRawEscape,pythonUniRawEscapeError,pythonDocTest2,pythonSpaceError,@Spell\nsyn region pythonUniRawString\tstart=+[uU][rR]'''+ end=+'''+ keepend contains=pythonUniRawEscape,pythonUniRawEscapeError,pythonDocTest,pythonSpaceError,@Spell\n\nsyn match  pythonUniRawEscape\t\t\"\\([^\\\\]\\(\\\\\\\\\\)*\\)\\@<=\\\\u\\x\\{4}\" display contained\nsyn match  pythonUniRawEscapeError\t\"\\([^\\\\]\\(\\\\\\\\\\)*\\)\\@<=\\\\u\\x\\{,3}\\X\" display contained\n\nif exists(\"python_highlight_string_formatting\") && python_highlight_string_formatting != 0\n  \" String formatting\n  syn match pythonStrFormatting\t\"%\\(([^)]\\+)\\)\\=[-#0 +]*\\d*\\(\\.\\d\\+\\)\\=[hlL]\\=[diouxXeEfFgGcrs%]\" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString\n  syn match pythonStrFormatting\t\"%[-#0 +]*\\(\\*\\|\\d\\+\\)\\=\\(\\.\\(\\*\\|\\d\\+\\)\\)\\=[hlL]\\=[diouxXeEfFgGcrs%]\" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString\nendif\n\nif exists(\"python_highlight_string_format\") && python_highlight_string_format != 0\n  \" str.format syntax\n  syn match pythonStrFormat \"{{\\|}}\" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString\n  syn match pythonStrFormat\t\"{\\([a-zA-Z_][a-zA-Z0-9_]*\\|\\d\\+\\)\\(\\.[a-zA-Z_][a-zA-Z0-9_]*\\|\\[\\(\\d\\+\\|[^!:\\}]\\+\\)\\]\\)*\\(![rs]\\)\\=\\(:\\({\\([a-zA-Z_][a-zA-Z0-9_]*\\|\\d\\+\\)}\\|\\([^}]\\=[<>=^]\\)\\=[ +-]\\=#\\=0\\=\\d*\\(\\.\\d\\+\\)\\=[bcdeEfFgGnoxX%]\\=\\)\\=\\)\\=}\" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString\nendif\n\nif exists(\"python_highlight_string_templates\") && python_highlight_string_templates != 0\n  \" String templates\n  syn match pythonStrTemplate\t\"\\$\\$\" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString\n  syn match pythonStrTemplate\t\"\\${[a-zA-Z_][a-zA-Z0-9_]*}\" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString\n  syn match pythonStrTemplate\t\"\\$[a-zA-Z_][a-zA-Z0-9_]*\" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString\nendif\n\nif exists(\"python_highlight_doctests\") && python_highlight_doctests != 0\n  \" DocTests\n  syn region pythonDocTest\tstart=\"^\\s*>>>\" end=+'''+he=s-1 end=\"^\\s*$\" contained\n  syn region pythonDocTest2\tstart=\"^\\s*>>>\" end=+\"\"\"+he=s-1 end=\"^\\s*$\" contained\nendif\n\n\" Numbers (ints, longs, floats, complex)\nsyn match   pythonHexError\t\"\\<0[xX]\\x*[g-zG-Z]\\x*[lL]\\=\\>\" display\n\nsyn match   pythonHexNumber\t\"\\<0[xX]\\x\\+[lL]\\=\\>\" display\nsyn match   pythonOctNumber \"\\<0[oO]\\o\\+[lL]\\=\\>\" display\nsyn match   pythonBinNumber \"\\<0[bB][01]\\+[lL]\\=\\>\" display\n\nsyn match   pythonNumber\t\"\\<\\d\\+[lLjJ]\\=\\>\" display\n\nsyn match   pythonFloat\t\t\"\\.\\d\\+\\([eE][+-]\\=\\d\\+\\)\\=[jJ]\\=\\>\" display\nsyn match   pythonFloat\t\t\"\\<\\d\\+[eE][+-]\\=\\d\\+[jJ]\\=\\>\" display\nsyn match   pythonFloat\t\t\"\\<\\d\\+\\.\\d*\\([eE][+-]\\=\\d\\+\\)\\=[jJ]\\=\" display\n\nsyn match   pythonOctError\t\"\\<0[oO]\\=\\o*[8-9]\\d*[lL]\\=\\>\" display\nsyn match   pythonBinError\t\"\\<0[bB][01]*[2-9]\\d*[lL]\\=\\>\" display\n\nif exists(\"python_highlight_builtin_objs\") && python_highlight_builtin_objs != 0\n  \" Builtin objects and types\n  syn keyword pythonBuiltinObj\tTrue False Ellipsis None NotImplemented\n  syn keyword pythonBuiltinObj\t__debug__ __doc__ __file__ __name__ __package__\nendif\n\nif exists(\"python_highlight_builtin_funcs\") && python_highlight_builtin_funcs != 0\n  \" Builtin functions\n  syn keyword pythonBuiltinFunc\t__import__ abs all any apply\n  syn keyword pythonBuiltinFunc\tbasestring bin bool buffer bytearray bytes callable\n  syn keyword pythonBuiltinFunc\tchr classmethod cmp coerce compile complex\n  syn keyword pythonBuiltinFunc\tdelattr dict dir divmod enumerate eval\n  syn keyword pythonBuiltinFunc\texecfile file filter float format frozenset getattr\n  syn keyword pythonBuiltinFunc\tglobals hasattr hash help hex id\n  syn keyword pythonBuiltinFunc\tinput int intern isinstance\n  syn keyword pythonBuiltinFunc\tissubclass iter len list locals long map max\n  syn keyword pythonBuiltinFunc\tmin next object oct open ord\n  syn keyword pythonBuiltinFunc\tpow property range\n  syn keyword pythonBuiltinFunc\traw_input reduce reload repr\n  syn keyword pythonBuiltinFunc\treversed round set setattr\n  syn keyword pythonBuiltinFunc\tslice sorted staticmethod str sum super tuple\n  syn keyword pythonBuiltinFunc\ttype unichr unicode vars xrange zip\n\n  if exists(\"python_print_as_function\") && python_print_as_function != 0\n      syn keyword pythonBuiltinFunc\tprint\n  endif\nendif\n\nif exists(\"python_highlight_exceptions\") && python_highlight_exceptions != 0\n  \" Builtin exceptions and warnings\n  syn keyword pythonExClass\tBaseException\n  syn keyword pythonExClass\tException StandardError ArithmeticError\n  syn keyword pythonExClass\tLookupError EnvironmentError\n\n  syn keyword pythonExClass\tAssertionError AttributeError BufferError EOFError\n  syn keyword pythonExClass\tFloatingPointError GeneratorExit IOError\n  syn keyword pythonExClass\tImportError IndexError KeyError\n  syn keyword pythonExClass\tKeyboardInterrupt MemoryError NameError\n  syn keyword pythonExClass\tNotImplementedError OSError OverflowError\n  syn keyword pythonExClass\tReferenceError RuntimeError StopIteration\n  syn keyword pythonExClass\tSyntaxError IndentationError TabError\n  syn keyword pythonExClass\tSystemError SystemExit TypeError\n  syn keyword pythonExClass\tUnboundLocalError UnicodeError\n  syn keyword pythonExClass\tUnicodeEncodeError UnicodeDecodeError\n  syn keyword pythonExClass\tUnicodeTranslateError ValueError VMSError\n  syn keyword pythonExClass\tWindowsError ZeroDivisionError\n\n  syn keyword pythonExClass\tWarning UserWarning BytesWarning DeprecationWarning\n  syn keyword pythonExClass\tPendingDepricationWarning SyntaxWarning\n  syn keyword pythonExClass\tRuntimeWarning FutureWarning\n  syn keyword pythonExClass\tImportWarning UnicodeWarning\nendif\n\nif exists(\"python_slow_sync\") && python_slow_sync != 0\n  syn sync minlines=2000\nelse\n  \" This is fast but code inside triple quoted strings screws it up. It\n  \" is impossible to fix because the only way to know if you are inside a\n  \" triple quoted string is to start from the beginning of the file.\n  syn sync match pythonSync grouphere NONE \"):$\"\n  syn sync maxlines=200\nendif\n\nif version >= 508 || !exists(\"did_python_syn_inits\")\n  if version <= 508\n    let did_python_syn_inits = 1\n    command -nargs=+ HiLink hi link <args>\n  else\n    command -nargs=+ HiLink hi def link <args>\n  endif\n\n  HiLink pythonStatement\tStatement\n  HiLink pythonPreCondit\tStatement\n  HiLink pythonFunction\t\tFunction\n  HiLink pythonConditional\tConditional\n  HiLink pythonRepeat\t\tRepeat\n  HiLink pythonException\tException\n  HiLink pythonOperator\t\tOperator\n\n  HiLink pythonDecorator\tDefine\n  HiLink pythonDottedName\tFunction\n  HiLink pythonDot          Normal\n\n  HiLink pythonComment\t\tComment\n  HiLink pythonCoding\t\tSpecial\n  HiLink pythonRun\t\tSpecial\n  HiLink pythonTodo\t\tTodo\n\n  HiLink pythonError\t\tError\n  HiLink pythonIndentError\tError\n  HiLink pythonSpaceError\tError\n\n  HiLink pythonString\t\tString\n  HiLink pythonUniString\tString\n  HiLink pythonRawString\tString\n  HiLink pythonUniRawString\tString\n\n  HiLink pythonEscape\t\t\tSpecial\n  HiLink pythonEscapeError\t\tError\n  HiLink pythonUniEscape\t\tSpecial\n  HiLink pythonUniEscapeError\t\tError\n  HiLink pythonUniRawEscape\t\tSpecial\n  HiLink pythonUniRawEscapeError\tError\n\n  HiLink pythonStrFormatting\tSpecial\n  HiLink pythonStrFormat    \tSpecial\n  HiLink pythonStrTemplate\t    Special\n\n  HiLink pythonDocTest\t\tSpecial\n  HiLink pythonDocTest2\t\tSpecial\n\n  HiLink pythonNumber\t\tNumber\n  HiLink pythonHexNumber\tNumber\n  HiLink pythonOctNumber\tNumber\n  HiLink pythonBinNumber\tNumber\n  HiLink pythonFloat\t\tFloat\n  HiLink pythonOctError\t    Error\n  HiLink pythonHexError\t\tError\n  HiLink pythonBinError\t\tError\n\n  HiLink pythonBuiltinObj\tStructure\n  HiLink pythonBuiltinFunc\tFunction\n\n  HiLink pythonExClass\tStructure\n\n  delcommand HiLink\nendif\n\nlet b:current_syntax = \"python\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/rhelp.vim",
    "content": "\" Vim syntax file\n\" Language:    R Help File\n\" Maintainer:  Johannes Ranke <jranke@uni-bremen.de>\n\" Last Change: 2006 Apr 24\n\" Version:     0.7\n\" SVN:\t\t   $Id: rhelp.vim 57 2006-04-24 15:52:13Z ranke $\n\" Remarks:     - Now includes R syntax highlighting in the appropriate\n\"                sections if an r.vim file is in the same directory or in the\n\"                default debian location.\n\"              - There is no Latex markup in equations\n\n\" Version Clears: {{{1\n\" For version 5.x: Clear all syntax items\n\" For version 6.x and 7.x: Quit when a syntax file was already loaded\nif version < 600 \n  syntax clear\nelseif exists(\"b:current_syntax\")\n  finish\nendif \n\nsyn case match\n\n\" R help identifiers {{{\nsyn region rhelpIdentifier matchgroup=rhelpSection\tstart=\"\\\\name{\" end=\"}\" \nsyn region rhelpIdentifier matchgroup=rhelpSection\tstart=\"\\\\alias{\" end=\"}\" \nsyn region rhelpIdentifier matchgroup=rhelpSection\tstart=\"\\\\pkg{\" end=\"}\" \nsyn region rhelpIdentifier matchgroup=rhelpSection\tstart=\"\\\\item{\" end=\"}\" contained contains=rhelpDots\nsyn region rhelpIdentifier matchgroup=rhelpSection start=\"\\\\method{\" end=/}/ contained\n\n\" Highlighting of R code using an existing r.vim syntax file if available {{{1\nsyn include @R syntax/r.vim\nsyn match rhelpDots\t\t\"\\\\dots\" containedin=@R\nsyn region rhelpRcode matchgroup=Delimiter start=\"\\\\examples{\" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpSection\nsyn region rhelpRcode matchgroup=Delimiter start=\"\\\\usage{\" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpIdentifier,rhelpS4method\nsyn region rhelpRcode matchgroup=Delimiter start=\"\\\\synopsis{\" matchgroup=Delimiter transparent end=/}/ contains=@R\nsyn region rhelpRcode matchgroup=Delimiter start=\"\\\\special{\" matchgroup=Delimiter transparent end=/}/ contains=@R contained\nsyn region rhelpRcode matchgroup=Delimiter start=\"\\\\code{\" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpLink contained\nsyn region rhelpS4method matchgroup=Delimiter start=\"\\\\S4method{.*}(\" matchgroup=Delimiter transparent end=/)/ contains=@R,rhelpDots contained\n\n\" Strings {{{1\nsyn region rhelpString start=/\"/ end=/\"/ \n\n\" Special characters  ( \\$ \\& \\% \\# \\{ \\} \\_) {{{1\nsyn match rhelpSpecialChar        \"\\\\[$&%#{}_]\"\n\n\" Special Delimiters {{{1\nsyn match rhelpDelimiter\t\t\"\\\\cr\"\nsyn match rhelpDelimiter\t\t\"\\\\tab \"\n\n\" Keywords {{{1\nsyn match rhelpKeyword\t\"\\\\R\"\nsyn match rhelpKeyword\t\"\\\\ldots\"\nsyn match rhelpKeyword  \"--\"\nsyn match rhelpKeyword  \"---\"\nsyn match rhelpKeyword  \"<\"\nsyn match rhelpKeyword  \">\"\n\n\" Links {{{1\nsyn region rhelpLink matchgroup=rhelpSection start=\"\\\\link{\" end=\"}\" contained keepend\nsyn region rhelpLink matchgroup=rhelpSection start=\"\\\\link\\[.*\\]{\" end=\"}\" contained keepend\nsyn region rhelpLink matchgroup=rhelpSection start=\"\\\\linkS4class{\" end=\"}\" contained keepend\n\n\" Type Styles {{{1\nsyn match rhelpType\t\t\"\\\\emph\\>\"\nsyn match rhelpType\t\t\"\\\\strong\\>\"\nsyn match rhelpType\t\t\"\\\\bold\\>\"\nsyn match rhelpType\t\t\"\\\\sQuote\\>\"\nsyn match rhelpType\t\t\"\\\\dQuote\\>\"\nsyn match rhelpType\t\t\"\\\\preformatted\\>\"\nsyn match rhelpType\t\t\"\\\\kbd\\>\"\nsyn match rhelpType\t\t\"\\\\samp\\>\"\nsyn match rhelpType\t\t\"\\\\eqn\\>\"\nsyn match rhelpType\t\t\"\\\\deqn\\>\"\nsyn match rhelpType\t\t\"\\\\file\\>\"\nsyn match rhelpType\t\t\"\\\\email\\>\"\nsyn match rhelpType\t\t\"\\\\url\\>\"\nsyn match rhelpType\t\t\"\\\\var\\>\"\nsyn match rhelpType\t\t\"\\\\env\\>\"\nsyn match rhelpType\t\t\"\\\\option\\>\"\nsyn match rhelpType\t\t\"\\\\command\\>\"\nsyn match rhelpType\t\t\"\\\\dfn\\>\"\nsyn match rhelpType\t\t\"\\\\cite\\>\"\nsyn match rhelpType\t\t\"\\\\acronym\\>\"\n\n\" rhelp sections {{{1\nsyn match rhelpSection\t\t\"\\\\encoding\\>\"\nsyn match rhelpSection\t\t\"\\\\title\\>\"\nsyn match rhelpSection\t\t\"\\\\description\\>\"\nsyn match rhelpSection\t\t\"\\\\concept\\>\"\nsyn match rhelpSection\t\t\"\\\\arguments\\>\"\nsyn match rhelpSection\t\t\"\\\\details\\>\"\nsyn match rhelpSection\t\t\"\\\\value\\>\"\nsyn match rhelpSection\t\t\"\\\\references\\>\"\nsyn match rhelpSection\t\t\"\\\\note\\>\"\nsyn match rhelpSection\t\t\"\\\\author\\>\"\nsyn match rhelpSection\t\t\"\\\\seealso\\>\"\nsyn match rhelpSection\t\t\"\\\\keyword\\>\"\nsyn match rhelpSection\t\t\"\\\\docType\\>\"\nsyn match rhelpSection\t\t\"\\\\format\\>\"\nsyn match rhelpSection\t\t\"\\\\source\\>\"\nsyn match rhelpSection     \"\\\\itemize\\>\"\nsyn match rhelpSection     \"\\\\describe\\>\"\nsyn match rhelpSection     \"\\\\enumerate\\>\"\nsyn match rhelpSection     \"\\\\item \"\nsyn match rhelpSection     \"\\\\item$\"\nsyn match rhelpSection\t\t\"\\\\tabular{[lcr]*}\"\nsyn match rhelpSection\t\t\"\\\\dontrun\\>\"\nsyn match rhelpSection\t\t\"\\\\dontshow\\>\"\nsyn match rhelpSection\t\t\"\\\\testonly\\>\"\n\n\" Freely named Sections {{{1\nsyn region rhelpFreesec matchgroup=Delimiter start=\"\\\\section{\" matchgroup=Delimiter transparent end=/}/ \n\n\" R help file comments {{{1\nsyn match rhelpComment /%.*$/ contained \n\n\" Error {{{1\nsyn region rhelpRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rhelpError,rhelpBraceError,rhelpCurlyError\nsyn region rhelpRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rhelpError,rhelpBraceError,rhelpParenError\nsyn region rhelpRegion matchgroup=Delimiter start=/\\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rhelpError,rhelpCurlyError,rhelpParenError\nsyn match rhelpError      /[)\\]}]/\nsyn match rhelpBraceError /[)}]/ contained\nsyn match rhelpCurlyError /[)\\]]/ contained\nsyn match rhelpParenError /[\\]}]/ contained\n\n\" Define the default highlighting {{{1\n\" For version 5.7 and earlier: only when not done already\n\" For version 5.8 and later: only when an item doesn't have highlighting yet\nif version >= 508 || !exists(\"did_rhelp_syntax_inits\")\n  if version < 508\n    let did_rhelp_syntax_inits = 1\n    command -nargs=+ HiLink hi link <args>\n  else\n    command -nargs=+ HiLink hi def link <args>\n  endif\n  HiLink rhelpIdentifier  Identifier\n  HiLink rhelpString      String\n  HiLink rhelpKeyword     Keyword\n  HiLink rhelpDots        Keyword\n  HiLink rhelpLink        Underlined\n  HiLink rhelpType\t      Type\n  HiLink rhelpSection     PreCondit\n  HiLink rhelpError       Error\n  HiLink rhelpBraceError  Error\n  HiLink rhelpCurlyError  Error\n  HiLink rhelpParenError  Error\n  HiLink rhelpDelimiter   Delimiter\n  HiLink rhelpComment     Comment\n  HiLink rhelpRComment    Comment\n  HiLink rhelpSpecialChar SpecialChar\n  delcommand HiLink\nendif \n\nlet   b:current_syntax = \"rhelp\"\n\" vim: foldmethod=marker:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/rnoweb.vim",
    "content": "\" Vim syntax file\n\" Language:    R noweb Files\n\" Maintainer:  Johannes Ranke <jranke@uni-bremen.de>\n\" Last Change: 2007 Mr 30\n\" Version:     0.8\n\" SVN:\t       $Id: rnoweb.vim 69 2007-03-30 08:55:36Z ranke $\n\" Remarks:     - This file is inspired by the proposal of \n\"\t\t\t\t Fernando Henrique Ferraz Pereira da Rosa <feferraz@ime.usp.br>\n\"\t\t\t     http://www.ime.usp.br/~feferraz/en/sweavevim.html\n\"\n\n\" Version Clears: {{{1\n\" For version 5.x: Clear all syntax items\n\" For version 6.x and 7.x: Quit when a syntax file was already loaded\nif version < 600 \n  syntax clear\nelseif exists(\"b:current_syntax\")\n  finish\nendif \n\nsyn case match\n\n\" Extension of Tex clusters {{{1\nruntime syntax/tex.vim\nunlet b:current_syntax\n\nsyn cluster texMatchGroup add=@rnoweb\nsyn cluster texEnvGroup add=@rnoweb\nsyn cluster texFoldGroup add=@rnoweb\nsyn cluster texDocGroup\t\tadd=@rnoweb\nsyn cluster texPartGroup\t\tadd=@rnoweb\nsyn cluster texChapterGroup\t\tadd=@rnoweb\nsyn cluster texSectionGroup\t\tadd=@rnoweb\nsyn cluster texSubSectionGroup\t\tadd=@rnoweb\nsyn cluster texSubSubSectionGroup\tadd=@rnoweb\nsyn cluster texParaGroup\t\tadd=@rnoweb\n\n\" Highlighting of R code using an existing r.vim syntax file if available {{{1\nsyn include @rnowebR syntax/r.vim\nsyn region rnowebChunk matchgroup=rnowebDelimiter start=\"^<<.*>>=\" matchgroup=rnowebDelimiter end=\"^@\" contains=@rnowebR,rnowebChunkReference,rnowebChunk fold keepend\nsyn match rnowebChunkReference \"^<<.*>>$\" contained\nsyn region rnowebSexpr matchgroup=Delimiter start=\"\\\\Sexpr{\" matchgroup=Delimiter end=\"}\" contains=@rnowebR\n\n\" Sweave options command {{{1\nsyn region rnowebSweaveopts matchgroup=Delimiter start=\"\\\\SweaveOpts{\" matchgroup=Delimiter end=\"}\"\n\n\" rnoweb Cluster {{{1\nsyn cluster rnoweb contains=rnowebChunk,rnowebChunkReference,rnowebDelimiter,rnowebSexpr,rnowebSweaveopts\n\n\" Highlighting {{{1\nhi def link rnowebDelimiter\tDelimiter\nhi def link rnowebSweaveOpts Statement\nhi def link rnowebChunkReference Delimiter\n\nlet   b:current_syntax = \"rnoweb\"\n\" vim: foldmethod=marker:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/ruby.vim",
    "content": "\" Vim syntax file\n\" Language:\t\tRuby\n\" Maintainer:\t\tDoug Kearns <dougkearns@gmail.com>\n\" URL:\t\t\thttps://github.com/vim-ruby/vim-ruby\n\" Release Coordinator:\tDoug Kearns <dougkearns@gmail.com>\n\" ----------------------------------------------------------------------------\n\"\n\" Previous Maintainer:\tMirko Nasato\n\" Thanks to perl.vim authors, and to Reimer Behrends. :-) (MN)\n\" ----------------------------------------------------------------------------\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nif has(\"folding\") && exists(\"ruby_fold\")\n  setlocal foldmethod=syntax\nendif\n\nsyn cluster rubyNotTop contains=@rubyExtendedStringSpecial,@rubyRegexpSpecial,@rubyDeclaration,rubyConditional,rubyExceptional,rubyMethodExceptional,rubyTodo\n\nif exists(\"ruby_space_errors\")\n  if !exists(\"ruby_no_trail_space_error\")\n    syn match rubySpaceError display excludenl \"\\s\\+$\"\n  endif\n  if !exists(\"ruby_no_tab_space_error\")\n    syn match rubySpaceError display \" \\+\\t\"me=e-1\n  endif\nendif\n\n\" Operators\nif exists(\"ruby_operators\")\n  syn match  rubyOperator \"[~!^&|*/%+-]\\|\\%(class\\s*\\)\\@<!<<\\|<=>\\|<=\\|\\%(<\\|\\<class\\s\\+\\u\\w*\\s*\\)\\@<!<[^<]\\@=\\|===\\|==\\|=\\~\\|>>\\|>=\\|=\\@<!>\\|\\*\\*\\|\\.\\.\\.\\|\\.\\.\\|::\"\n  syn match  rubyOperator \"->\\|-=\\|/=\\|\\*\\*=\\|\\*=\\|&&=\\|&=\\|&&\\|||=\\||=\\|||\\|%=\\|+=\\|!\\~\\|!=\"\n  syn region rubyBracketOperator matchgroup=rubyOperator start=\"\\%(\\w[?!]\\=\\|[]})]\\)\\@<=\\[\\s*\" end=\"\\s*]\" contains=ALLBUT,@rubyNotTop\nendif\n\n\" Expression Substitution and Backslash Notation\nsyn match rubyStringEscape \"\\\\\\\\\\|\\\\[abefnrstv]\\|\\\\\\o\\{1,3}\\|\\\\x\\x\\{1,2}\"\t\t\t\t\t\t    contained display\nsyn match rubyStringEscape \"\\%(\\\\M-\\\\C-\\|\\\\C-\\\\M-\\|\\\\M-\\\\c\\|\\\\c\\\\M-\\|\\\\c\\|\\\\C-\\|\\\\M-\\)\\%(\\\\\\o\\{1,3}\\|\\\\x\\x\\{1,2}\\|\\\\\\=\\S\\)\" contained display\nsyn match rubyQuoteEscape  \"\\\\[\\\\']\"\t\t\t\t\t\t\t\t\t\t\t    contained display\n\nsyn region rubyInterpolation\t      matchgroup=rubyInterpolationDelimiter start=\"#{\" end=\"}\" contained contains=ALLBUT,@rubyNotTop\nsyn match  rubyInterpolation\t      \"#\\%(\\$\\|@@\\=\\)\\w\\+\"    display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable,rubyPredefinedVariable\nsyn match  rubyInterpolationDelimiter \"#\\ze\\%(\\$\\|@@\\=\\)\\w\\+\" display contained\nsyn match  rubyInterpolation\t      \"#\\$\\%(-\\w\\|\\W\\)\"       display contained contains=rubyInterpolationDelimiter,rubyPredefinedVariable,rubyInvalidVariable\nsyn match  rubyInterpolationDelimiter \"#\\ze\\$\\%(-\\w\\|\\W\\)\"    display contained\nsyn region rubyNoInterpolation\t      start=\"\\\\#{\" end=\"}\"            contained\nsyn match  rubyNoInterpolation\t      \"\\\\#{\"\t\t      display contained\nsyn match  rubyNoInterpolation\t      \"\\\\#\\%(\\$\\|@@\\=\\)\\w\\+\"  display contained\nsyn match  rubyNoInterpolation\t      \"\\\\#\\$\\W\"\t\t      display contained\n\nsyn match rubyDelimEscape\t\"\\\\[(<{\\[)>}\\]]\" transparent display contained contains=NONE\n\nsyn region rubyNestedParentheses    start=\"(\"  skip=\"\\\\\\\\\\|\\\\)\"  matchgroup=rubyString end=\")\"\ttransparent contained\nsyn region rubyNestedCurlyBraces    start=\"{\"  skip=\"\\\\\\\\\\|\\\\}\"  matchgroup=rubyString end=\"}\"\ttransparent contained\nsyn region rubyNestedAngleBrackets  start=\"<\"  skip=\"\\\\\\\\\\|\\\\>\"  matchgroup=rubyString end=\">\"\ttransparent contained\nsyn region rubyNestedSquareBrackets start=\"\\[\" skip=\"\\\\\\\\\\|\\\\\\]\" matchgroup=rubyString end=\"\\]\"\ttransparent contained\n\n\" These are mostly Oniguruma ready\nsyn region rubyRegexpComment\tmatchgroup=rubyRegexpSpecial   start=\"(?#\"\t\t\t\t\t\t\t\t  skip=\"\\\\)\"  end=\")\"  contained\nsyn region rubyRegexpParens\tmatchgroup=rubyRegexpSpecial   start=\"(\\(?:\\|?<\\=[=!]\\|?>\\|?<[a-z_]\\w*>\\|?[imx]*-[imx]*:\\=\\|\\%(?#\\)\\@!\\)\" skip=\"\\\\)\"  end=\")\"  contained transparent contains=@rubyRegexpSpecial\nsyn region rubyRegexpBrackets\tmatchgroup=rubyRegexpCharClass start=\"\\[\\^\\=\"\t\t\t\t\t\t\t\t  skip=\"\\\\\\]\" end=\"\\]\" contained transparent contains=rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass oneline\nsyn match  rubyRegexpCharClass\t\"\\\\[DdHhSsWw]\"\t       contained display\nsyn match  rubyRegexpCharClass\t\"\\[:\\^\\=\\%(alnum\\|alpha\\|ascii\\|blank\\|cntrl\\|digit\\|graph\\|lower\\|print\\|punct\\|space\\|upper\\|xdigit\\):\\]\" contained\nsyn match  rubyRegexpEscape\t\"\\\\[].*?+^$|\\\\/(){}[]\" contained\nsyn match  rubyRegexpQuantifier\t\"[*?+][?+]\\=\"\t       contained display\nsyn match  rubyRegexpQuantifier\t\"{\\d\\+\\%(,\\d*\\)\\=}?\\=\" contained display\nsyn match  rubyRegexpAnchor\t\"[$^]\\|\\\\[ABbGZz]\"     contained display\nsyn match  rubyRegexpDot\t\"\\.\"\t\t       contained display\nsyn match  rubyRegexpSpecial\t\"|\"\t\t       contained display\nsyn match  rubyRegexpSpecial\t\"\\\\[1-9]\\d\\=\\d\\@!\"     contained display\nsyn match  rubyRegexpSpecial\t\"\\\\k<\\%([a-z_]\\w*\\|-\\=\\d\\+\\)\\%([+-]\\d\\+\\)\\=>\" contained display\nsyn match  rubyRegexpSpecial\t\"\\\\k'\\%([a-z_]\\w*\\|-\\=\\d\\+\\)\\%([+-]\\d\\+\\)\\='\" contained display\nsyn match  rubyRegexpSpecial\t\"\\\\g<\\%([a-z_]\\w*\\|-\\=\\d\\+\\)>\" contained display\nsyn match  rubyRegexpSpecial\t\"\\\\g'\\%([a-z_]\\w*\\|-\\=\\d\\+\\)'\" contained display\n\nsyn cluster rubyStringSpecial\t      contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape\nsyn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets\nsyn cluster rubyRegexpSpecial\t      contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment\n\n\" Numbers and ASCII Codes\nsyn match rubyASCIICode\t\"\\%(\\w\\|[]})\\\"'/]\\)\\@<!\\%(?\\%(\\\\M-\\\\C-\\|\\\\C-\\\\M-\\|\\\\M-\\\\c\\|\\\\c\\\\M-\\|\\\\c\\|\\\\C-\\|\\\\M-\\)\\=\\%(\\\\\\o\\{1,3}\\|\\\\x\\x\\{1,2}\\|\\\\\\=\\S\\)\\)\"\nsyn match rubyInteger\t\"\\%(\\%(\\w\\|[]})\\\"']\\s*\\)\\@<!-\\)\\=\\<0[xX]\\x\\+\\%(_\\x\\+\\)*\\>\"\t\t\t\t\t\t\t\tdisplay\nsyn match rubyInteger\t\"\\%(\\%(\\w\\|[]})\\\"']\\s*\\)\\@<!-\\)\\=\\<\\%(0[dD]\\)\\=\\%(0\\|[1-9]\\d*\\%(_\\d\\+\\)*\\)\\>\"\t\t\t\t\t\tdisplay\nsyn match rubyInteger\t\"\\%(\\%(\\w\\|[]})\\\"']\\s*\\)\\@<!-\\)\\=\\<0[oO]\\=\\o\\+\\%(_\\o\\+\\)*\\>\"\t\t\t\t\t\t\t\tdisplay\nsyn match rubyInteger\t\"\\%(\\%(\\w\\|[]})\\\"']\\s*\\)\\@<!-\\)\\=\\<0[bB][01]\\+\\%(_[01]\\+\\)*\\>\"\t\t\t\t\t\t\t\tdisplay\nsyn match rubyFloat\t\"\\%(\\%(\\w\\|[]})\\\"']\\s*\\)\\@<!-\\)\\=\\<\\%(0\\|[1-9]\\d*\\%(_\\d\\+\\)*\\)\\.\\d\\+\\%(_\\d\\+\\)*\\>\"\t\t\t\t\tdisplay\nsyn match rubyFloat\t\"\\%(\\%(\\w\\|[]})\\\"']\\s*\\)\\@<!-\\)\\=\\<\\%(0\\|[1-9]\\d*\\%(_\\d\\+\\)*\\)\\%(\\.\\d\\+\\%(_\\d\\+\\)*\\)\\=\\%([eE][-+]\\=\\d\\+\\%(_\\d\\+\\)*\\)\\>\"\tdisplay\n\n\" Identifiers\nsyn match rubyLocalVariableOrMethod \"\\<[_[:lower:]][_[:alnum:]]*[?!=]\\=\" contains=NONE display transparent\nsyn match rubyBlockArgument\t    \"&[_[:lower:]][_[:alnum:]]\"\t\t contains=NONE display transparent\n\nsyn match  rubyConstant\t\t\"\\%(\\%(^\\|[^.]\\)\\.\\s*\\)\\@<!\\<\\u\\%(\\w\\|[^\\x00-\\x7F]\\)*\\>\\%(\\s*(\\)\\@!\"\nsyn match  rubyClassVariable\t\"@@\\%(\\h\\|[^\\x00-\\x7F]\\)\\%(\\w\\|[^\\x00-\\x7F]\\)*\" display\nsyn match  rubyInstanceVariable \"@\\%(\\h\\|[^\\x00-\\x7F]\\)\\%(\\w\\|[^\\x00-\\x7F]\\)*\"  display\nsyn match  rubyGlobalVariable\t\"$\\%(\\%(\\h\\|[^\\x00-\\x7F]\\)\\%(\\w\\|[^\\x00-\\x7F]\\)*\\|-.\\)\"\nsyn match  rubySymbol\t\t\"[]})\\\"':]\\@<!:\\%(\\^\\|\\~\\|<<\\|<=>\\|<=\\|<\\|===\\|[=!]=\\|[=!]\\~\\|!\\|>>\\|>=\\|>\\||\\|-@\\|-\\|/\\|\\[]=\\|\\[]\\|\\*\\*\\|\\*\\|&\\|%\\|+@\\|+\\|`\\)\"\nsyn match  rubySymbol\t\t\"[]})\\\"':]\\@<!:\\$\\%(-.\\|[`~<=>_,;:!?/.'\"@$*\\&+0]\\)\"\nsyn match  rubySymbol\t\t\"[]})\\\"':]\\@<!:\\%(\\$\\|@@\\=\\)\\=\\%(\\h\\|[^\\x00-\\x7F]\\)\\%(\\w\\|[^\\x00-\\x7F]\\)*\"\nsyn match  rubySymbol\t\t\"[]})\\\"':]\\@<!:\\%(\\h\\|[^\\x00-\\x7F]\\)\\%(\\w\\|[^\\x00-\\x7F]\\)*\\%([?!=]>\\@!\\)\\=\"\nsyn match  rubySymbol\t\t\"\\%([{(,]\\_s*\\)\\@<=\\l\\w*[!?]\\=::\\@!\"he=e-1\nsyn match  rubySymbol\t\t\"[]})\\\"':]\\@<!\\%(\\h\\|[^\\x00-\\x7F]\\)\\%(\\w\\|[^\\x00-\\x7F]\\)*[!?]\\=:[[:space:],]\\@=\"he=e-1\nsyn match  rubySymbol\t\t\"\\%([{(,]\\_s*\\)\\@<=[[:space:],{]\\l\\w*[!?]\\=::\\@!\"hs=s+1,he=e-1\nsyn match  rubySymbol\t\t\"[[:space:],{(]\\%(\\h\\|[^\\x00-\\x7F]\\)\\%(\\w\\|[^\\x00-\\x7F]\\)*[!?]\\=:[[:space:],]\\@=\"hs=s+1,he=e-1\nsyn region rubySymbol\t\tstart=\"[]})\\\"':]\\@<!:'\"  end=\"'\"  skip=\"\\\\\\\\\\|\\\\'\"  contains=rubyQuoteEscape fold\nsyn region rubySymbol\t\tstart=\"[]})\\\"':]\\@<!:\\\"\" end=\"\\\"\" skip=\"\\\\\\\\\\|\\\\\\\"\" contains=@rubyStringSpecial fold\n\nsyn match  rubyBlockParameter\t  \"\\%(\\h\\|[^\\x00-\\x7F]\\)\\%(\\w\\|[^\\x00-\\x7F]\\)*\" contained\nsyn region rubyBlockParameterList start=\"\\%(\\%(\\<do\\>\\|{\\)\\s*\\)\\@<=|\" end=\"|\" oneline display contains=rubyBlockParameter\n\nsyn match rubyInvalidVariable\t \"$[^ A-Za-z_-]\"\nsyn match rubyPredefinedVariable #$[!$&\"'*+,./0:;<=>?@\\`~]#\nsyn match rubyPredefinedVariable \"$\\d\\+\"\t\t\t\t\t\t\t\t\t\t   display\nsyn match rubyPredefinedVariable \"$_\\>\"\t\t\t\t\t\t\t\t\t\t\t   display\nsyn match rubyPredefinedVariable \"$-[0FIKadilpvw]\\>\"\t\t\t\t\t\t\t\t\t   display\nsyn match rubyPredefinedVariable \"$\\%(deferr\\|defout\\|stderr\\|stdin\\|stdout\\)\\>\"\t\t\t\t\t   display\nsyn match rubyPredefinedVariable \"$\\%(DEBUG\\|FILENAME\\|KCODE\\|LOADED_FEATURES\\|LOAD_PATH\\|PROGRAM_NAME\\|SAFE\\|VERBOSE\\)\\>\" display\nsyn match rubyPredefinedConstant \"\\%(\\%(^\\|[^.]\\)\\.\\s*\\)\\@<!\\<\\%(ARGF\\|ARGV\\|ENV\\|DATA\\|FALSE\\|NIL\\|STDERR\\|STDIN\\|STDOUT\\|TOPLEVEL_BINDING\\|TRUE\\)\\>\\%(\\s*(\\)\\@!\"\nsyn match rubyPredefinedConstant \"\\%(\\%(^\\|[^.]\\)\\.\\s*\\)\\@<!\\<\\%(RUBY_\\%(VERSION\\|RELEASE_DATE\\|PLATFORM\\|PATCHLEVEL\\|REVISION\\|DESCRIPTION\\|COPYRIGHT\\|ENGINE\\)\\)\\>\\%(\\s*(\\)\\@!\"\n\n\" Normal Regular Expression\nsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start=\"\\%(\\%(^\\|\\<\\%(and\\|or\\|while\\|until\\|unless\\|if\\|elsif\\|when\\|not\\|then\\|else\\)\\|[;\\~=!|&(,{[<>?:*+-]\\)\\s*\\)\\@<=/\" end=\"/[iomxneus]*\" skip=\"\\\\\\\\\\|\\\\/\" contains=@rubyRegexpSpecial fold\nsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start=\"\\%(\\h\\k*\\s\\+\\)\\@<=/[ \\t=]\\@!\" end=\"/[iomxneus]*\" skip=\"\\\\\\\\\\|\\\\/\" contains=@rubyRegexpSpecial fold\n\n\" Generalized Regular Expression\nsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start=\"%r\\z([~`!@#$%^&*_\\-+=|\\:;\"',.? /]\\)\" end=\"\\z1[iomxneus]*\" skip=\"\\\\\\\\\\|\\\\\\z1\" contains=@rubyRegexpSpecial fold\nsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start=\"%r{\"\t\t\t\t end=\"}[iomxneus]*\"   skip=\"\\\\\\\\\\|\\\\}\"\t contains=@rubyRegexpSpecial fold\nsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start=\"%r<\"\t\t\t\t end=\">[iomxneus]*\"   skip=\"\\\\\\\\\\|\\\\>\"\t contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold\nsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start=\"%r\\[\"\t\t\t\t end=\"\\][iomxneus]*\"  skip=\"\\\\\\\\\\|\\\\\\]\"\t contains=@rubyRegexpSpecial fold\nsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start=\"%r(\"\t\t\t\t end=\")[iomxneus]*\"   skip=\"\\\\\\\\\\|\\\\)\"\t contains=@rubyRegexpSpecial fold\n\n\" Normal String and Shell Command Output\nsyn region rubyString matchgroup=rubyStringDelimiter start=\"\\\"\" end=\"\\\"\" skip=\"\\\\\\\\\\|\\\\\\\"\" contains=@rubyStringSpecial,@Spell fold\nsyn region rubyString matchgroup=rubyStringDelimiter start=\"'\"\tend=\"'\"  skip=\"\\\\\\\\\\|\\\\'\"  contains=rubyQuoteEscape,@Spell    fold\nsyn region rubyString matchgroup=rubyStringDelimiter start=\"`\"\tend=\"`\"  skip=\"\\\\\\\\\\|\\\\`\"  contains=@rubyStringSpecial fold\n\n\" Generalized Single Quoted String, Symbol and Array of Strings\nsyn region rubyString matchgroup=rubyStringDelimiter start=\"%[qwi]\\z([~`!@#$%^&*_\\-+=|\\:;\"',.?/]\\)\" end=\"\\z1\" skip=\"\\\\\\\\\\|\\\\\\z1\" fold\nsyn region rubyString matchgroup=rubyStringDelimiter start=\"%[qwi]{\"\t\t\t\t   end=\"}\"   skip=\"\\\\\\\\\\|\\\\}\"\tfold contains=rubyNestedCurlyBraces,rubyDelimEscape\nsyn region rubyString matchgroup=rubyStringDelimiter start=\"%[qwi]<\"\t\t\t\t   end=\">\"   skip=\"\\\\\\\\\\|\\\\>\"\tfold contains=rubyNestedAngleBrackets,rubyDelimEscape\nsyn region rubyString matchgroup=rubyStringDelimiter start=\"%[qwi]\\[\"\t\t\t\t   end=\"\\]\"  skip=\"\\\\\\\\\\|\\\\\\]\"\tfold contains=rubyNestedSquareBrackets,rubyDelimEscape\nsyn region rubyString matchgroup=rubyStringDelimiter start=\"%[qwi](\"\t\t\t\t   end=\")\"   skip=\"\\\\\\\\\\|\\\\)\"\tfold contains=rubyNestedParentheses,rubyDelimEscape\nsyn region rubyString matchgroup=rubyStringDelimiter start=\"%q \"\t\t\t\t   end=\" \"   skip=\"\\\\\\\\\\|\\\\)\"\tfold\n\nsyn region rubySymbol matchgroup=rubySymbolDelimiter start=\"%s\\z([~`!@#$%^&*_\\-+=|\\:;\"',.? /]\\)\"   end=\"\\z1\" skip=\"\\\\\\\\\\|\\\\\\z1\" fold\nsyn region rubySymbol matchgroup=rubySymbolDelimiter start=\"%s{\"\t\t\t\t   end=\"}\"   skip=\"\\\\\\\\\\|\\\\}\"\tfold contains=rubyNestedCurlyBraces,rubyDelimEscape\nsyn region rubySymbol matchgroup=rubySymbolDelimiter start=\"%s<\"\t\t\t\t   end=\">\"   skip=\"\\\\\\\\\\|\\\\>\"\tfold contains=rubyNestedAngleBrackets,rubyDelimEscape\nsyn region rubySymbol matchgroup=rubySymbolDelimiter start=\"%s\\[\"\t\t\t\t   end=\"\\]\"  skip=\"\\\\\\\\\\|\\\\\\]\"\tfold contains=rubyNestedSquareBrackets,rubyDelimEscape\nsyn region rubySymbol matchgroup=rubySymbolDelimiter start=\"%s(\"\t\t\t\t   end=\")\"   skip=\"\\\\\\\\\\|\\\\)\"\tfold contains=rubyNestedParentheses,rubyDelimEscape\n\n\" Generalized Double Quoted String and Array of Strings and Shell Command Output\n\" Note: %= is not matched here as the beginning of a double quoted string\nsyn region rubyString matchgroup=rubyStringDelimiter start=\"%\\z([~`!@#$%^&*_\\-+|\\:;\"',.?/]\\)\"\t    end=\"\\z1\" skip=\"\\\\\\\\\\|\\\\\\z1\" contains=@rubyStringSpecial fold\nsyn region rubyString matchgroup=rubyStringDelimiter start=\"%[QWIx]\\z([~`!@#$%^&*_\\-+=|\\:;\"',.?/]\\)\" end=\"\\z1\" skip=\"\\\\\\\\\\|\\\\\\z1\" contains=@rubyStringSpecial fold\nsyn region rubyString matchgroup=rubyStringDelimiter start=\"%[QWIx]\\={\"\t\t\t\t    end=\"}\"   skip=\"\\\\\\\\\\|\\\\}\"\t contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimEscape    fold\nsyn region rubyString matchgroup=rubyStringDelimiter start=\"%[QWIx]\\=<\"\t\t\t\t    end=\">\"   skip=\"\\\\\\\\\\|\\\\>\"\t contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimEscape  fold\nsyn region rubyString matchgroup=rubyStringDelimiter start=\"%[QWIx]\\=\\[\"\t\t\t\t    end=\"\\]\"  skip=\"\\\\\\\\\\|\\\\\\]\"\t contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimEscape fold\nsyn region rubyString matchgroup=rubyStringDelimiter start=\"%[QWIx]\\=(\"\t\t\t\t    end=\")\"   skip=\"\\\\\\\\\\|\\\\)\"\t contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape    fold\nsyn region rubyString matchgroup=rubyStringDelimiter start=\"%[Qx] \"\t\t\t\t    end=\" \"   skip=\"\\\\\\\\\\|\\\\)\"   contains=@rubyStringSpecial fold\n\n\" Here Document\nsyn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\\%(\\%(class\\s*\\|\\%([]})\"'.]\\|::\\)\\)\\_s*\\|\\w\\)\\@<!<<-\\=\\zs\\%(\\%(\\h\\|[^\\x00-\\x7F]\\)\\%(\\w\\|[^\\x00-\\x7F]\\)*\\)+\t end=+$+ oneline contains=ALLBUT,@rubyNotTop\nsyn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\\%(\\%(class\\s*\\|\\%([]})\"'.]\\|::\\)\\)\\_s*\\|\\w\\)\\@<!<<-\\=\\zs\"\\%([^\"]*\\)\"+ end=+$+ oneline contains=ALLBUT,@rubyNotTop\nsyn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\\%(\\%(class\\s*\\|\\%([]})\"'.]\\|::\\)\\)\\_s*\\|\\w\\)\\@<!<<-\\=\\zs'\\%([^']*\\)'+ end=+$+ oneline contains=ALLBUT,@rubyNotTop\nsyn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\\%(\\%(class\\s*\\|\\%([]})\"'.]\\|::\\)\\)\\_s*\\|\\w\\)\\@<!<<-\\=\\zs`\\%([^`]*\\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop\n\nsyn region rubyString start=+\\%(\\%(class\\|::\\)\\_s*\\|\\%([]})\"'.]\\)\\s\\|\\w\\)\\@<!<<\\z(\\%(\\h\\|[^\\x00-\\x7F]\\)\\%(\\w\\|[^\\x00-\\x7F]\\)*\\)\\ze\\%(.*<<-\\=['`\"]\\=\\h\\)\\@!+hs=s+2\tmatchgroup=rubyStringDelimiter end=+^\\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend\nsyn region rubyString start=+\\%(\\%(class\\|::\\)\\_s*\\|\\%([]})\"'.]\\)\\s\\|\\w\\)\\@<!<<\"\\z([^\"]*\\)\"\\ze\\%(.*<<-\\=['`\"]\\=\\h\\)\\@!+hs=s+2\tmatchgroup=rubyStringDelimiter end=+^\\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend\nsyn region rubyString start=+\\%(\\%(class\\|::\\)\\_s*\\|\\%([]})\"'.]\\)\\s\\|\\w\\)\\@<!<<'\\z([^']*\\)'\\ze\\%(.*<<-\\=['`\"]\\=\\h\\)\\@!+hs=s+2\tmatchgroup=rubyStringDelimiter end=+^\\z1$+ contains=rubyHeredocStart,rubyHeredoc\t\t\tfold keepend\nsyn region rubyString start=+\\%(\\%(class\\|::\\)\\_s*\\|\\%([]})\"'.]\\)\\s\\|\\w\\)\\@<!<<`\\z([^`]*\\)`\\ze\\%(.*<<-\\=['`\"]\\=\\h\\)\\@!+hs=s+2\tmatchgroup=rubyStringDelimiter end=+^\\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend\n\nsyn region rubyString start=+\\%(\\%(class\\|::\\)\\_s*\\|\\%([]}).]\\)\\s\\|\\w\\)\\@<!<<-\\z(\\%(\\h\\|[^\\x00-\\x7F]\\)\\%(\\w\\|[^\\x00-\\x7F]\\)*\\)\\ze\\%(.*<<-\\=['`\"]\\=\\h\\)\\@!+hs=s+3    matchgroup=rubyStringDelimiter end=+^\\s*\\zs\\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend\nsyn region rubyString start=+\\%(\\%(class\\|::\\)\\_s*\\|\\%([]}).]\\)\\s\\|\\w\\)\\@<!<<-\"\\z([^\"]*\\)\"\\ze\\%(.*<<-\\=['`\"]\\=\\h\\)\\@!+hs=s+3  matchgroup=rubyStringDelimiter end=+^\\s*\\zs\\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend\nsyn region rubyString start=+\\%(\\%(class\\|::\\)\\_s*\\|\\%([]}).]\\)\\s\\|\\w\\)\\@<!<<-'\\z([^']*\\)'\\ze\\%(.*<<-\\=['`\"]\\=\\h\\)\\@!+hs=s+3  matchgroup=rubyStringDelimiter end=+^\\s*\\zs\\z1$+ contains=rubyHeredocStart\t\t     fold keepend\nsyn region rubyString start=+\\%(\\%(class\\|::\\)\\_s*\\|\\%([]}).]\\)\\s\\|\\w\\)\\@<!<<-`\\z([^`]*\\)`\\ze\\%(.*<<-\\=['`\"]\\=\\h\\)\\@!+hs=s+3  matchgroup=rubyStringDelimiter end=+^\\s*\\zs\\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend\n\nif exists('main_syntax') && main_syntax == 'eruby'\n  let b:ruby_no_expensive = 1\nend\n\nsyn match  rubyAliasDeclaration    \"[^[:space:];#.()]\\+\" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable nextgroup=rubyAliasDeclaration2 skipwhite\nsyn match  rubyAliasDeclaration2   \"[^[:space:];#.()]\\+\" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable\nsyn match  rubyMethodDeclaration   \"[^[:space:];#(]\\+\"\t contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable\nsyn match  rubyClassDeclaration    \"[^[:space:];#<]\\+\"\t contained contains=rubyConstant,rubyOperator\nsyn match  rubyModuleDeclaration   \"[^[:space:];#<]\\+\"\t contained contains=rubyConstant,rubyOperator\nsyn match  rubyFunction \"\\<[_[:alpha:]][_[:alnum:]]*[?!=]\\=[[:alnum:]_.:?!=]\\@!\" contained containedin=rubyMethodDeclaration\nsyn match  rubyFunction \"\\%(\\s\\|^\\)\\@<=[_[:alpha:]][_[:alnum:]]*[?!=]\\=\\%(\\s\\|$\\)\\@=\" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2\nsyn match  rubyFunction \"\\%([[:space:].]\\|^\\)\\@<=\\%(\\[\\]=\\=\\|\\*\\*\\|[+-]@\\=\\|[*/%|&^~]\\|<<\\|>>\\|[<>]=\\=\\|<=>\\|===\\|[=!]=\\|[=!]\\~\\|!\\|`\\)\\%([[:space:];#(]\\|$\\)\\@=\" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration\n\nsyn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyFunction,rubyBlockParameter\n\n\" Keywords\n\" Note: the following keywords have already been defined:\n\" begin case class def do end for if module unless until while\nsyn match   rubyControl\t       \"\\<\\%(and\\|break\\|in\\|next\\|not\\|or\\|redo\\|rescue\\|retry\\|return\\)\\>[?!]\\@!\"\nsyn match   rubyOperator       \"\\<defined?\" display\nsyn match   rubyKeyword\t       \"\\<\\%(super\\|yield\\)\\>[?!]\\@!\"\nsyn match   rubyBoolean\t       \"\\<\\%(true\\|false\\)\\>[?!]\\@!\"\nsyn match   rubyPseudoVariable \"\\<\\%(nil\\|self\\|__ENCODING__\\|__dir__\\|__FILE__\\|__LINE__\\|__callee__\\|__method__\\)\\>[?!]\\@!\" \" TODO: reorganise\nsyn match   rubyBeginEnd       \"\\<\\%(BEGIN\\|END\\)\\>[?!]\\@!\"\n\n\" Expensive Mode - match 'end' with the appropriate opening keyword for syntax\n\" based folding and special highlighting of module/class/method definitions\nif !exists(\"b:ruby_no_expensive\") && !exists(\"ruby_no_expensive\")\n  syn match  rubyDefine \"\\<alias\\>\"  nextgroup=rubyAliasDeclaration  skipwhite skipnl\n  syn match  rubyDefine \"\\<def\\>\"    nextgroup=rubyMethodDeclaration skipwhite skipnl\n  syn match  rubyDefine \"\\<undef\\>\"  nextgroup=rubyFunction\t     skipwhite skipnl\n  syn match  rubyClass\t\"\\<class\\>\"  nextgroup=rubyClassDeclaration  skipwhite skipnl\n  syn match  rubyModule \"\\<module\\>\" nextgroup=rubyModuleDeclaration skipwhite skipnl\n\n  syn region rubyMethodBlock start=\"\\<def\\>\"\tmatchgroup=rubyDefine end=\"\\%(\\<def\\_s\\+\\)\\@<!\\<end\\>\" contains=ALLBUT,@rubyNotTop fold\n  syn region rubyBlock\t     start=\"\\<class\\>\"\tmatchgroup=rubyClass  end=\"\\<end\\>\"\t\t       contains=ALLBUT,@rubyNotTop fold\n  syn region rubyBlock\t     start=\"\\<module\\>\" matchgroup=rubyModule end=\"\\<end\\>\"\t\t       contains=ALLBUT,@rubyNotTop fold\n\n  \" modifiers\n  syn match rubyConditionalModifier \"\\<\\%(if\\|unless\\)\\>\"    display\n  syn match rubyRepeatModifier\t     \"\\<\\%(while\\|until\\)\\>\" display\n\n  syn region rubyDoBlock      matchgroup=rubyControl start=\"\\<do\\>\" end=\"\\<end\\>\"                 contains=ALLBUT,@rubyNotTop fold\n  \" curly bracket block or hash literal\n  syn region rubyCurlyBlock\tmatchgroup=rubyCurlyBlockDelimiter  start=\"{\" end=\"}\"\t\t\t\tcontains=ALLBUT,@rubyNotTop fold\n  syn region rubyArrayLiteral\tmatchgroup=rubyArrayDelimiter\t    start=\"\\%(\\w\\|[\\]})]\\)\\@<!\\[\" end=\"]\"\tcontains=ALLBUT,@rubyNotTop fold\n\n  \" statements without 'do'\n  syn region rubyBlockExpression       matchgroup=rubyControl\t  start=\"\\<begin\\>\" end=\"\\<end\\>\" contains=ALLBUT,@rubyNotTop fold\n  syn region rubyCaseExpression\t       matchgroup=rubyConditional start=\"\\<case\\>\"  end=\"\\<end\\>\" contains=ALLBUT,@rubyNotTop fold\n  syn region rubyConditionalExpression matchgroup=rubyConditional start=\"\\%(\\%(^\\|\\.\\.\\.\\=\\|[{:,;([<>~\\*/%&^|+=-]\\|\\%(\\<[_[:lower:]][_[:alnum:]]*\\)\\@<![?!]\\)\\s*\\)\\@<=\\%(if\\|unless\\)\\>\" end=\"\\%(\\%(\\%(\\.\\@<!\\.\\)\\|::\\)\\s*\\)\\@<!\\<end\\>\" contains=ALLBUT,@rubyNotTop fold\n\n  syn match rubyConditional \"\\<\\%(then\\|else\\|when\\)\\>[?!]\\@!\"\tcontained containedin=rubyCaseExpression\n  syn match rubyConditional \"\\<\\%(then\\|else\\|elsif\\)\\>[?!]\\@!\" contained containedin=rubyConditionalExpression\n\n  syn match rubyExceptional\t  \"\\<\\%(\\%(\\%(;\\|^\\)\\s*\\)\\@<=rescue\\|else\\|ensure\\)\\>[?!]\\@!\" contained containedin=rubyBlockExpression\n  syn match rubyMethodExceptional \"\\<\\%(\\%(\\%(;\\|^\\)\\s*\\)\\@<=rescue\\|else\\|ensure\\)\\>[?!]\\@!\" contained containedin=rubyMethodBlock\n\n  \" statements with optional 'do'\n  syn region rubyOptionalDoLine   matchgroup=rubyRepeat start=\"\\<for\\>[?!]\\@!\" start=\"\\%(\\%(^\\|\\.\\.\\.\\=\\|[{:,;([<>~\\*/%&^|+-]\\|\\%(\\<[_[:lower:]][_[:alnum:]]*\\)\\@<![!=?]\\)\\s*\\)\\@<=\\<\\%(until\\|while\\)\\>\" matchgroup=rubyOptionalDo end=\"\\%(\\<do\\>\\)\" end=\"\\ze\\%(;\\|$\\)\" oneline contains=ALLBUT,@rubyNotTop\n  syn region rubyRepeatExpression start=\"\\<for\\>[?!]\\@!\" start=\"\\%(\\%(^\\|\\.\\.\\.\\=\\|[{:,;([<>~\\*/%&^|+-]\\|\\%(\\<[_[:lower:]][_[:alnum:]]*\\)\\@<![!=?]\\)\\s*\\)\\@<=\\<\\%(until\\|while\\)\\>\" matchgroup=rubyRepeat end=\"\\<end\\>\" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine fold\n\n  if !exists(\"ruby_minlines\")\n    let ruby_minlines = 500\n  endif\n  exec \"syn sync minlines=\" . ruby_minlines\n\nelse\n  syn match rubyControl \"\\<def\\>[?!]\\@!\"    nextgroup=rubyMethodDeclaration skipwhite skipnl\n  syn match rubyControl \"\\<class\\>[?!]\\@!\"  nextgroup=rubyClassDeclaration  skipwhite skipnl\n  syn match rubyControl \"\\<module\\>[?!]\\@!\" nextgroup=rubyModuleDeclaration skipwhite skipnl\n  syn match rubyControl \"\\<\\%(case\\|begin\\|do\\|for\\|if\\|unless\\|while\\|until\\|else\\|elsif\\|ensure\\|then\\|when\\|end\\)\\>[?!]\\@!\"\n  syn match rubyKeyword \"\\<\\%(alias\\|undef\\)\\>[?!]\\@!\"\nendif\n\n\" Special Methods\nif !exists(\"ruby_no_special_methods\")\n  syn keyword rubyAccess    public protected private public_class_method private_class_method public_constant private_constant module_function\n  \" attr is a common variable name\n  syn match   rubyAttribute \"\\%(\\%(^\\|;\\)\\s*\\)\\@<=attr\\>\\(\\s*[.=]\\)\\@!\"\n  syn keyword rubyAttribute attr_accessor attr_reader attr_writer\n  syn match   rubyControl   \"\\<\\%(exit!\\|\\%(abort\\|at_exit\\|exit\\|fork\\|loop\\|trap\\)\\>[?!]\\@!\\)\"\n  syn keyword rubyEval\t    eval class_eval instance_eval module_eval\n  syn keyword rubyException raise fail catch throw\n  \" false positive with 'include?'\n  syn match   rubyInclude   \"\\<include\\>[?!]\\@!\"\n  syn keyword rubyInclude   autoload extend load prepend refine require require_relative using\n  syn keyword rubyKeyword   callcc caller lambda proc\nendif\n\n\" Comments and Documentation\nsyn match   rubySharpBang \"\\%^#!.*\" display\nsyn keyword rubyTodo\t  FIXME NOTE TODO OPTIMIZE XXX todo contained\nsyn match   rubyComment   \"#.*\" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell\nif !exists(\"ruby_no_comment_fold\")\n  syn region rubyMultilineComment start=\"\\%(\\%(^\\s*#.*\\n\\)\\@<!\\%(^\\s*#.*\\n\\)\\)\\%(\\(^\\s*#.*\\n\\)\\{1,}\\)\\@=\" end=\"\\%(^\\s*#.*\\n\\)\\@<=\\%(^\\s*#.*\\n\\)\\%(^\\s*#\\)\\@!\" contains=rubyComment transparent fold keepend\n  syn region rubyDocumentation\t  start=\"^=begin\\ze\\%(\\s.*\\)\\=$\" end=\"^=end\\%(\\s.*\\)\\=$\" contains=rubySpaceError,rubyTodo,@Spell fold\nelse\n  syn region rubyDocumentation\t  start=\"^=begin\\s*$\" end=\"^=end\\s*$\" contains=rubySpaceError,rubyTodo,@Spell\nendif\n\n\" Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver\nsyn match rubyKeywordAsMethod \"\\%(\\%(\\.\\@<!\\.\\)\\|::\\)\\_s*\\%(alias\\|and\\|begin\\|break\\|case\\|class\\|def\\|defined\\|do\\|else\\)\\>\"\t\t  transparent contains=NONE\nsyn match rubyKeywordAsMethod \"\\%(\\%(\\.\\@<!\\.\\)\\|::\\)\\_s*\\%(elsif\\|end\\|ensure\\|false\\|for\\|if\\|in\\|module\\|next\\|nil\\)\\>\"\t\t  transparent contains=NONE\nsyn match rubyKeywordAsMethod \"\\%(\\%(\\.\\@<!\\.\\)\\|::\\)\\_s*\\%(not\\|or\\|redo\\|refine\\|rescue\\|retry\\|return\\|self\\|super\\|then\\|true\\)\\>\"\t\t  transparent contains=NONE\nsyn match rubyKeywordAsMethod \"\\%(\\%(\\.\\@<!\\.\\)\\|::\\)\\_s*\\%(undef\\|unless\\|until\\|when\\|while\\|yield\\|BEGIN\\|END\\|__FILE__\\|__LINE__\\)\\>\" transparent contains=NONE\n\nsyn match rubyKeywordAsMethod \"\\<\\%(alias\\|begin\\|case\\|class\\|def\\|do\\|end\\)[?!]\" transparent contains=NONE\nsyn match rubyKeywordAsMethod \"\\<\\%(if\\|module\\|refine\\|undef\\|unless\\|until\\|while\\)[?!]\" transparent contains=NONE\n\nsyn match rubyKeywordAsMethod \"\\%(\\%(\\.\\@<!\\.\\)\\|::\\)\\_s*\\%(abort\\|at_exit\\|attr\\|attr_accessor\\|attr_reader\\)\\>\"\ttransparent contains=NONE\nsyn match rubyKeywordAsMethod \"\\%(\\%(\\.\\@<!\\.\\)\\|::\\)\\_s*\\%(attr_writer\\|autoload\\|callcc\\|catch\\|caller\\)\\>\"\t\ttransparent contains=NONE\nsyn match rubyKeywordAsMethod \"\\%(\\%(\\.\\@<!\\.\\)\\|::\\)\\_s*\\%(eval\\|class_eval\\|instance_eval\\|module_eval\\|exit\\)\\>\"\ttransparent contains=NONE\nsyn match rubyKeywordAsMethod \"\\%(\\%(\\.\\@<!\\.\\)\\|::\\)\\_s*\\%(extend\\|fail\\|fork\\|include\\|lambda\\)\\>\"\t\t\ttransparent contains=NONE\nsyn match rubyKeywordAsMethod \"\\%(\\%(\\.\\@<!\\.\\)\\|::\\)\\_s*\\%(load\\|loop\\|prepend\\|private\\|proc\\|protected\\)\\>\"\t\ttransparent contains=NONE\nsyn match rubyKeywordAsMethod \"\\%(\\%(\\.\\@<!\\.\\)\\|::\\)\\_s*\\%(public\\|require\\|require_relative\\|raise\\|throw\\|trap\\|using\\)\\>\"\ttransparent contains=NONE\n\n\" __END__ Directive\nsyn region rubyData matchgroup=rubyDataDirective start=\"^__END__$\" end=\"\\%$\" fold\n\nhi def link rubyClass\t\t\trubyDefine\nhi def link rubyModule\t\t\trubyDefine\nhi def link rubyMethodExceptional\trubyDefine\nhi def link rubyDefine\t\t\tDefine\nhi def link rubyFunction\t\tFunction\nhi def link rubyConditional\t\tConditional\nhi def link rubyConditionalModifier\trubyConditional\nhi def link rubyExceptional\t\trubyConditional\nhi def link rubyRepeat\t\t\tRepeat\nhi def link rubyRepeatModifier\t\trubyRepeat\nhi def link rubyOptionalDo\t\trubyRepeat\nhi def link rubyControl\t\t\tStatement\nhi def link rubyInclude\t\t\tInclude\nhi def link rubyInteger\t\t\tNumber\nhi def link rubyASCIICode\t\tCharacter\nhi def link rubyFloat\t\t\tFloat\nhi def link rubyBoolean\t\t\tBoolean\nhi def link rubyException\t\tException\nif !exists(\"ruby_no_identifiers\")\n  hi def link rubyIdentifier\t\tIdentifier\nelse\n  hi def link rubyIdentifier\t\tNONE\nendif\nhi def link rubyClassVariable\t\trubyIdentifier\nhi def link rubyConstant\t\tType\nhi def link rubyGlobalVariable\t\trubyIdentifier\nhi def link rubyBlockParameter\t\trubyIdentifier\nhi def link rubyInstanceVariable\trubyIdentifier\nhi def link rubyPredefinedIdentifier\trubyIdentifier\nhi def link rubyPredefinedConstant\trubyPredefinedIdentifier\nhi def link rubyPredefinedVariable\trubyPredefinedIdentifier\nhi def link rubySymbol\t\t\tConstant\nhi def link rubyKeyword\t\t\tKeyword\nhi def link rubyOperator\t\tOperator\nhi def link rubyBeginEnd\t\tStatement\nhi def link rubyAccess\t\t\tStatement\nhi def link rubyAttribute\t\tStatement\nhi def link rubyEval\t\t\tStatement\nhi def link rubyPseudoVariable\t\tConstant\n\nhi def link rubyComment\t\t\tComment\nhi def link rubyData\t\t\tComment\nhi def link rubyDataDirective\t\tDelimiter\nhi def link rubyDocumentation\t\tComment\nhi def link rubyTodo\t\t\tTodo\n\nhi def link rubyQuoteEscape\t\trubyStringEscape\nhi def link rubyStringEscape\t\tSpecial\nhi def link rubyInterpolationDelimiter\tDelimiter\nhi def link rubyNoInterpolation\t\trubyString\nhi def link rubySharpBang\t\tPreProc\nhi def link rubyRegexpDelimiter\t\trubyStringDelimiter\nhi def link rubySymbolDelimiter\t\trubyStringDelimiter\nhi def link rubyStringDelimiter\t\tDelimiter\nhi def link rubyHeredoc\t\t\trubyString\nhi def link rubyString\t\t\tString\nhi def link rubyRegexpEscape\t\trubyRegexpSpecial\nhi def link rubyRegexpQuantifier\trubyRegexpSpecial\nhi def link rubyRegexpAnchor\t\trubyRegexpSpecial\nhi def link rubyRegexpDot\t\trubyRegexpCharClass\nhi def link rubyRegexpCharClass\t\trubyRegexpSpecial\nhi def link rubyRegexpSpecial\t\tSpecial\nhi def link rubyRegexpComment\t\tComment\nhi def link rubyRegexp\t\t\trubyString\n\nhi def link rubyInvalidVariable\t\tError\nhi def link rubyError\t\t\tError\nhi def link rubySpaceError\t\trubyError\n\nlet b:current_syntax = \"ruby\"\n\n\" vim: nowrap sw=2 sts=2 ts=8 noet:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/rust.vim",
    "content": "\" Vim syntax file\n\" Language:     Rust\n\" Maintainer:   Patrick Walton <pcwalton@mozilla.com>\n\" Maintainer:   Ben Blum <bblum@cs.cmu.edu>\n\" Maintainer:   Chris Morgan <me@chrismorgan.info>\n\" Last Change:  2014 Feb 27\n\nif version < 600\n  syntax clear\nelseif exists(\"b:current_syntax\")\n  finish\nendif\n\n\" Syntax definitions {{{1\n\" Basic keywords {{{2\nsyn keyword   rustConditional match if else\nsyn keyword   rustOperator    as\n\nsyn match     rustAssert      \"\\<assert\\(\\w\\)*!\" contained\nsyn match     rustFail        \"\\<fail\\(\\w\\)*!\" contained\nsyn keyword   rustKeyword     break continue\nsyn keyword   rustKeyword     extern nextgroup=rustExternCrate,rustObsoleteExternMod skipwhite\nsyn keyword   rustKeyword     for in if impl let\nsyn keyword   rustKeyword     loop once priv pub\nsyn keyword   rustKeyword     return\nsyn keyword   rustKeyword     unsafe while\nsyn keyword   rustKeyword     use nextgroup=rustModPath skipwhite\n\" FIXME: Scoped impl's name is also fallen in this category\nsyn keyword   rustKeyword     mod trait struct enum type nextgroup=rustIdentifier skipwhite\nsyn keyword   rustKeyword     fn nextgroup=rustFuncName skipwhite\nsyn keyword   rustKeyword     proc\nsyn keyword   rustStorage     mut ref static\nsyn keyword   rustObsoleteStorage const\n\nsyn keyword   rustInvalidBareKeyword crate\n\nsyn keyword   rustExternCrate crate contained nextgroup=rustIdentifier skipwhite\nsyn keyword   rustObsoleteExternMod mod contained nextgroup=rustIdentifier skipwhite\n\nsyn match     rustIdentifier  contains=rustIdentifierPrime \"\\%([^[:cntrl:][:space:][:punct:][:digit:]]\\|_\\)\\%([^[:cntrl:][:punct:][:space:]]\\|_\\)*\" display contained\nsyn match     rustFuncName    \"\\%([^[:cntrl:][:space:][:punct:][:digit:]]\\|_\\)\\%([^[:cntrl:][:punct:][:space:]]\\|_\\)*\" display contained\n\n\" Reserved (but not yet used) keywords {{{2\nsyn keyword   rustReservedKeyword alignof be do offsetof pure sizeof typeof yield\n\n\" Built-in types {{{2\nsyn keyword   rustType        int uint float char bool u8 u16 u32 u64 f32\nsyn keyword   rustType        f64 i8 i16 i32 i64 str Self\n\n\" Things from the prelude (src/libstd/prelude.rs) {{{2\n\" This section is just straight transformation of the contents of the prelude,\n\" to make it easy to update.\n\n\" Core operators {{{3\nsyn keyword   rustTrait       Freeze Pod Send Sized\nsyn keyword   rustTrait       Add Sub Mul Div Rem Neg Not\nsyn keyword   rustTrait       BitAnd BitOr BitXor\nsyn keyword   rustTrait       Drop\nsyn keyword   rustTrait       Shl Shr Index\nsyn keyword   rustEnum        Option\nsyn keyword   rustEnumVariant Some None\nsyn keyword   rustEnum        Result\nsyn keyword   rustEnumVariant Ok Err\n\n\" Functions {{{3\n\"syn keyword rustFunction from_str\n\"syn keyword rustFunction range\n\"syn keyword rustFunction drop\n\n\" Types and traits {{{3\nsyn keyword rustTrait Any AnyOwnExt AnyRefExt AnyMutRefExt\nsyn keyword rustTrait Ascii AsciiCast OwnedAsciiCast AsciiStr IntoBytes\nsyn keyword rustTrait ToCStr\nsyn keyword rustTrait Char\nsyn keyword rustTrait Clone DeepClone\nsyn keyword rustTrait Eq Ord TotalEq TotalOrd Ordering Equiv\nsyn keyword rustEnumVariant Less Equal Greater\nsyn keyword rustTrait Container Mutable Map MutableMap Set MutableSet\nsyn keyword rustTrait FromIterator Extendable\nsyn keyword rustTrait Iterator DoubleEndedIterator RandomAccessIterator CloneableIterator\nsyn keyword rustTrait OrdIterator MutableDoubleEndedIterator ExactSize\nsyn keyword rustTrait Num NumCast CheckedAdd CheckedSub CheckedMul\nsyn keyword rustTrait Signed Unsigned Round\nsyn keyword rustTrait Primitive Int Float ToPrimitive FromPrimitive\nsyn keyword rustTrait GenericPath Path PosixPath WindowsPath\nsyn keyword rustTrait RawPtr\nsyn keyword rustTrait Buffer Writer Reader Seek\nsyn keyword rustTrait Str StrVector StrSlice OwnedStr IntoMaybeOwned\nsyn keyword rustTrait ToStr IntoStr\nsyn keyword rustTrait Tuple1 Tuple2 Tuple3 Tuple4\nsyn keyword rustTrait Tuple5 Tuple6 Tuple7 Tuple8\nsyn keyword rustTrait Tuple9 Tuple10 Tuple11 Tuple12\nsyn keyword rustTrait ImmutableEqVector ImmutableTotalOrdVector ImmutableCloneableVector\nsyn keyword rustTrait OwnedVector OwnedCloneableVector OwnedEqVector\nsyn keyword rustTrait MutableVector MutableTotalOrdVector\nsyn keyword rustTrait Vector VectorVector CloneableVector ImmutableVector\n\n\"syn keyword rustFunction stream\nsyn keyword rustTrait Sender Receiver\n\"syn keyword rustFunction spawn\n\nsyn keyword   rustSelf        self\nsyn keyword   rustBoolean     true false\n\n\" Other syntax {{{2\n\n\" If foo::bar changes to foo.bar, change this (\"::\" to \"\\.\").\n\" If foo::bar changes to Foo::bar, change this (first \"\\w\" to \"\\u\").\nsyn match     rustModPath     \"\\w\\(\\w\\)*::[^<]\"he=e-3,me=e-3\nsyn match     rustModPath     \"\\w\\(\\w\\)*\" contained \" only for 'use path;'\nsyn match     rustModPathSep  \"::\"\n\nsyn match     rustFuncCall    \"\\w\\(\\w\\)*(\"he=e-1,me=e-1\nsyn match     rustFuncCall    \"\\w\\(\\w\\)*::<\"he=e-3,me=e-3 \" foo::<T>();\n\n\" This is merely a convention; note also the use of [A-Z], restricting it to\n\" latin identifiers rather than the full Unicode uppercase. I have not used\n\" [:upper:] as it depends upon 'noignorecase'\n\"syn match     rustCapsIdent    display \"[A-Z]\\w\\(\\w\\)*\"\n\nsyn match     rustOperator     display \"\\%(+\\|-\\|/\\|*\\|=\\|\\^\\|&\\||\\|!\\|>\\|<\\|%\\)=\\?\"\n\" This one isn't *quite* right, as we could have binary-& with a reference\nsyn match     rustSigil        display /&\\s\\+[&~@*][^)= \\t\\r\\n]/he=e-1,me=e-1\nsyn match     rustSigil        display /[&~@*][^)= \\t\\r\\n]/he=e-1,me=e-1\n\" This isn't actually correct; a closure with no arguments can be `|| { }`.\n\" Last, because the & in && isn't a sigil\nsyn match     rustOperator     display \"&&\\|||\"\n\nsyn match     rustMacro       '\\w\\(\\w\\)*!' contains=rustAssert,rustFail\nsyn match     rustMacro       '#\\w\\(\\w\\)*' contains=rustAssert,rustFail\n\nsyn match     rustSpecialError display contained /\\\\./\nsyn match     rustSpecial     display contained /\\\\\\([nrt0\\\\'\"]\\|x\\x\\{2}\\|u\\x\\{4}\\|U\\x\\{8}\\)/\nsyn match     rustStringContinuation display contained /\\\\\\n\\s*/\nsyn region    rustString      start=+\"+ skip=+\\\\\\\\\\|\\\\\"+ end=+\"+ contains=rustSpecial,rustSpecialError,rustStringContinuation,@Spell\nsyn region    rustString      start='r\\z(#*\\)\"' end='\"\\z1' contains=@Spell\n\nsyn region    rustAttribute   start=\"#\\[\" end=\"\\]\" contains=rustString,rustDeriving\nsyn region    rustDeriving    start=\"deriving(\" end=\")\" contained contains=rustTrait\n\n\" Number literals\nsyn match     rustDecNumber   display \"\\<[0-9][0-9_]*\\%([iu]\\%(8\\|16\\|32\\|64\\)\\=\\)\\=\"\nsyn match     rustHexNumber   display \"\\<0x[a-fA-F0-9_]\\+\\%([iu]\\%(8\\|16\\|32\\|64\\)\\=\\)\\=\"\nsyn match     rustOctNumber   display \"\\<0o[0-7_]\\+\\%([iu]\\%(8\\|16\\|32\\|64\\)\\=\\)\\=\"\nsyn match     rustBinNumber   display \"\\<0b[01_]\\+\\%([iu]\\%(8\\|16\\|32\\|64\\)\\=\\)\\=\"\n\n\" Special case for numbers of the form \"1.\" which are float literals, unless followed by\n\" an identifier, which makes them integer literals with a method call or field access.\n\" (This must go first so the others take precedence.)\nsyn match     rustFloat       display \"\\<[0-9][0-9_]*\\.\\%([^[:cntrl:][:space:][:punct:][:digit:]]\\|_\\)\\@!\"\n\" To mark a number as a normal float, it must have at least one of the three things integral values don't have:\n\" a decimal point and more numbers; an exponent; and a type suffix.\nsyn match     rustFloat       display \"\\<[0-9][0-9_]*\\%(\\.[0-9][0-9_]*\\)\\%([eE][+-]\\=[0-9_]\\+\\)\\=\\(f32\\|f64\\)\\=\"\nsyn match     rustFloat       display \"\\<[0-9][0-9_]*\\%(\\.[0-9][0-9_]*\\)\\=\\%([eE][+-]\\=[0-9_]\\+\\)\\(f32\\|f64\\)\\=\"\nsyn match     rustFloat       display \"\\<[0-9][0-9_]*\\%(\\.[0-9][0-9_]*\\)\\=\\%([eE][+-]\\=[0-9_]\\+\\)\\=\\(f32\\|f64\\)\"\n\n\" For the benefit of delimitMate\nsyn region rustLifetimeCandidate display start=/&'\\%(\\([^'\\\\]\\|\\\\\\(['nrt0\\\\\\\"]\\|x\\x\\{2}\\|u\\x\\{4}\\|U\\x\\{8}\\)\\)'\\)\\@!/ end=/[[:cntrl:][:space:][:punct:]]\\@=\\|$/ contains=rustSigil,rustLifetime\nsyn region rustGenericRegion display start=/<\\%('\\|[^[cntrl:][:space:][:punct:]]\\)\\@=')\\S\\@=/ end=/>/ contains=rustGenericLifetimeCandidate\nsyn region rustGenericLifetimeCandidate display start=/\\%(<\\|,\\s*\\)\\@<='/ end=/[[:cntrl:][:space:][:punct:]]\\@=\\|$/ contains=rustSigil,rustLifetime\n\n\"rustLifetime must appear before rustCharacter, or chars will get the lifetime highlighting\nsyn match     rustLifetime    display \"\\'\\%([^[:cntrl:][:space:][:punct:][:digit:]]\\|_\\)\\%([^[:cntrl:][:punct:][:space:]]\\|_\\)*\"\nsyn match   rustCharacter   /'\\([^'\\\\]\\|\\\\\\(.\\|x\\x\\{2}\\|u\\x\\{4}\\|U\\x\\{8}\\)\\)'/ contains=rustSpecial,rustSpecialError\n\nsyn region rustCommentLine                                        start=\"//\"                      end=\"$\"   contains=rustTodo,@Spell\nsyn region rustCommentLineDoc                                     start=\"//\\%(//\\@!\\|!\\)\"         end=\"$\"   contains=rustTodo,@Spell\nsyn region rustCommentBlock    matchgroup=rustCommentBlock        start=\"/\\*\\%(!\\|\\*[*/]\\@!\\)\\@!\" end=\"\\*/\" contains=rustTodo,rustCommentBlockNest,@Spell\nsyn region rustCommentBlockDoc matchgroup=rustCommentBlockDoc     start=\"/\\*\\%(!\\|\\*[*/]\\@!\\)\"    end=\"\\*/\" contains=rustTodo,rustCommentBlockDocNest,@Spell\nsyn region rustCommentBlockNest matchgroup=rustCommentBlock       start=\"/\\*\"                     end=\"\\*/\" contains=rustTodo,rustCommentBlockNest,@Spell contained transparent\nsyn region rustCommentBlockDocNest matchgroup=rustCommentBlockDoc start=\"/\\*\"                     end=\"\\*/\" contains=rustTodo,rustCommentBlockDocNest,@Spell contained transparent\n\" FIXME: this is a really ugly and not fully correct implementation. Most\n\" importantly, a case like ``/* */*`` should have the final ``*`` not being in\n\" a comment, but in practice at present it leaves comments open two levels\n\" deep. But as long as you stay away from that particular case, I *believe*\n\" the highlighting is correct. Due to the way Vim's syntax engine works\n\" (greedy for start matches, unlike Rust's tokeniser which is searching for\n\" the earliest-starting match, start or end), I believe this cannot be solved.\n\" Oh you who would fix it, don't bother with things like duplicating the Block\n\" rules and putting ``\\*\\@<!`` at the start of them; it makes it worse, as\n\" then you must deal with cases like ``/*/**/*/``. And don't try making it\n\" worse with ``\\%(/\\@<!\\*\\)\\@<!``, either...\n\nsyn keyword rustTodo contained TODO FIXME XXX NB NOTE\n\n\" Folding rules {{{2\n\" Trivial folding rules to begin with.\n\" TODO: use the AST to make really good folding\nsyn region rustFoldBraces start=\"{\" end=\"}\" transparent fold\n\" If you wish to enable this, setlocal foldmethod=syntax\n\" It's not enabled by default as it would drive some people mad.\n\n\" Default highlighting {{{1\nhi def link rustDecNumber       rustNumber\nhi def link rustHexNumber       rustNumber\nhi def link rustOctNumber       rustNumber\nhi def link rustBinNumber       rustNumber\nhi def link rustIdentifierPrime rustIdentifier\nhi def link rustTrait           rustType\n\nhi def link rustSigil         StorageClass\nhi def link rustSpecial       Special\nhi def link rustSpecialError  Error\nhi def link rustStringContinuation Special\nhi def link rustString        String\nhi def link rustCharacter     Character\nhi def link rustNumber        Number\nhi def link rustBoolean       Boolean\nhi def link rustEnum          rustType\nhi def link rustEnumVariant   rustConstant\nhi def link rustConstant      Constant\nhi def link rustSelf          Constant\nhi def link rustFloat         Float\nhi def link rustOperator      Operator\nhi def link rustKeyword       Keyword\nhi def link rustReservedKeyword Error\nhi def link rustConditional   Conditional\nhi def link rustIdentifier    Identifier\nhi def link rustCapsIdent     rustIdentifier\nhi def link rustModPath       Include\nhi def link rustModPathSep    Delimiter\nhi def link rustFunction      Function\nhi def link rustFuncName      Function\nhi def link rustFuncCall      Function\nhi def link rustCommentLine   Comment\nhi def link rustCommentLineDoc SpecialComment\nhi def link rustCommentBlock  rustCommentLine\nhi def link rustCommentBlockDoc rustCommentLineDoc\nhi def link rustAssert        PreCondit\nhi def link rustFail          PreCondit\nhi def link rustMacro         Macro\nhi def link rustType          Type\nhi def link rustTodo          Todo\nhi def link rustAttribute     PreProc\nhi def link rustDeriving      PreProc\nhi def link rustStorage       StorageClass\nhi def link rustObsoleteStorage Error\nhi def link rustLifetime      Special\nhi def link rustInvalidBareKeyword Error\nhi def link rustExternCrate   rustKeyword\nhi def link rustObsoleteExternMod Error\n\n\" Other Suggestions:\n\" hi rustAttribute ctermfg=cyan\n\" hi rustDeriving ctermfg=cyan\n\" hi rustAssert ctermfg=yellow\n\" hi rustFail ctermfg=red\n\" hi rustMacro ctermfg=magenta\n\nsyn sync minlines=200\nsyn sync maxlines=500\n\nlet b:current_syntax = \"rust\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/sass.vim",
    "content": "\" Vim syntax file\n\" Language:\tSass\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Filenames:\t*.sass\n\" Last Change:\t2010 Aug 09\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nruntime! syntax/css.vim\n\nsyn case ignore\n\nsyn cluster sassCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp\nsyn cluster sassCssAttributes contains=css.*Attr,sassEndOfLineComment,scssComment,cssValue.*,cssColor,cssURL,sassDefault,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp\n\nsyn region sassDefinition matchgroup=cssBraces start=\"{\" end=\"}\" contains=TOP\n\nsyn match sassProperty \"\\%([{};]\\s*\\|^\\)\\@<=\\%([[:alnum:]-]\\|#{[^{}]*}\\)\\+\\s*:\" contains=css.*Prop skipwhite nextgroup=sassCssAttribute contained containedin=sassDefinition\nsyn match sassProperty \"^\\s*\\zs\\s\\%(\\%([[:alnum:]-]\\|#{[^{}]*}\\)\\+\\s*:\\|:[[:alnum:]-]\\+\\)\"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute\nsyn match sassProperty \"^\\s*\\zs\\s\\%(:\\=[[:alnum:]-]\\+\\s*=\\)\"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute\nsyn match sassCssAttribute +\\%(\"\\%([^\"]\\|\\\\\"\\)*\"\\|'\\%([^']\\|\\\\'\\)*'\\|#{[^{}]*}\\|[^{};]\\)*+ contained contains=@sassCssAttributes,sassVariable,sassFunction,sassInterpolation\nsyn match sassDefault \"!default\\>\" contained\nsyn match sassVariable \"!\\%(important\\>\\|default\\>\\)\\@![[:alnum:]_-]\\+\"\nsyn match sassVariable \"$[[:alnum:]_-]\\+\"\nsyn match sassVariableAssignment \"\\%([!$][[:alnum:]_-]\\+\\s*\\)\\@<=\\%(||\\)\\==\" nextgroup=sassCssAttribute skipwhite\nsyn match sassVariableAssignment \"\\%([!$][[:alnum:]_-]\\+\\s*\\)\\@<=:\" nextgroup=sassCssAttribute skipwhite\n\nsyn match sassFunction \"\\<\\%(rgb\\|rgba\\|red\\|green\\|blue\\|mix\\)\\>(\\@=\" contained\nsyn match sassFunction \"\\<\\%(hsl\\|hsla\\|hue\\|saturation\\|lightness\\|adjust-hue\\|lighten\\|darken\\|saturate\\|desaturate\\|grayscale\\|complement\\)\\>(\\@=\" contained\nsyn match sassFunction \"\\<\\%(alpha\\|opacity\\|rgba\\|opacify\\|fade-in\\|transparentize\\|fade-out\\)\\>(\\@=\" contained\nsyn match sassFunction \"\\<\\%(unquote\\|quote\\)\\>(\\@=\" contained\nsyn match sassFunction \"\\<\\%(percentage\\|round\\|ceil\\|floor\\|abs\\)\\>(\\@=\" contained\nsyn match sassFunction \"\\<\\%(type-of\\|unit\\|unitless\\|comparable\\)\\>(\\@=\" contained\n\nsyn region sassInterpolation matchgroup=sassInterpolationDelimiter start=\"#{\" end=\"}\" contains=@sassCssAttributes,sassVariable,sassFunction containedin=cssStringQ,cssStringQQ,cssPseudoClass,sassProperty\n\nsyn match sassMixinName \"[[:alnum:]_-]\\+\" contained nextgroup=sassCssAttribute\nsyn match sassMixin  \"^=\"               nextgroup=sassMixinName skipwhite\nsyn match sassMixin  \"\\%([{};]\\s*\\|^\\s*\\)\\@<=@mixin\"   nextgroup=sassMixinName skipwhite\nsyn match sassMixing \"^\\s\\+\\zs+\"        nextgroup=sassMixinName\nsyn match sassMixing \"\\%([{};]\\s*\\|^\\s*\\)\\@<=@include\" nextgroup=sassMixinName skipwhite\nsyn match sassExtend \"\\%([{};]\\s*\\|^\\s*\\)\\@<=@extend\"\nsyn match sassPlaceholder \"\\%([{};]\\s*\\|^\\s*\\)\\@<=%\"   nextgroup=sassMixinName skipwhite\n\nsyn match sassFunctionName \"[[:alnum:]_-]\\+\" contained nextgroup=sassCssAttribute\nsyn match sassFunctionDecl \"\\%([{};]\\s*\\|^\\s*\\)\\@<=@function\"   nextgroup=sassFunctionName skipwhite\nsyn match sassReturn \"\\%([{};]\\s*\\|^\\s*\\)\\@<=@return\"\n\nsyn match sassEscape     \"^\\s*\\zs\\\\\"\nsyn match sassIdChar     \"#[[:alnum:]_-]\\@=\" nextgroup=sassId\nsyn match sassId         \"[[:alnum:]_-]\\+\" contained\nsyn match sassClassChar  \"\\.[[:alnum:]_-]\\@=\" nextgroup=sassClass\nsyn match sassClass      \"[[:alnum:]_-]\\+\" contained\nsyn match sassAmpersand  \"&\"\n\n\" TODO: Attribute namespaces\n\" TODO: Arithmetic (including strings and concatenation)\n\nsyn region sassInclude start=\"@import\" end=\";\\|$\" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType\nsyn region sassDebugLine end=\";\\|$\" matchgroup=sassDebug start=\"@debug\\>\" contains=@sassCssAttributes,sassVariable,sassFunction\nsyn region sassWarnLine end=\";\\|$\" matchgroup=sassWarn start=\"@warn\\>\" contains=@sassCssAttributes,sassVariable,sassFunction\nsyn region sassControlLine matchgroup=sassControl start=\"@\\%(if\\|else\\%(\\s\\+if\\)\\=\\|while\\|for\\|each\\)\\>\" end=\"[{};]\\@=\\|$\" contains=sassFor,@sassCssAttributes,sassVariable,sassFunction\nsyn keyword sassFor from to through in contained\n\nsyn keyword sassTodo        FIXME NOTE TODO OPTIMIZE XXX contained\nsyn region  sassComment     start=\"^\\z(\\s*\\)//\"  end=\"^\\%(\\z1 \\)\\@!\" contains=sassTodo,@Spell\nsyn region  sassCssComment  start=\"^\\z(\\s*\\)/\\*\" end=\"^\\%(\\z1 \\)\\@!\" contains=sassTodo,@Spell\nsyn match   sassEndOfLineComment \"//.*\" contains=sassComment,sassTodo,@Spell\n\nhi def link sassEndOfLineComment        sassComment\nhi def link sassCssComment              sassComment\nhi def link sassComment                 Comment\nhi def link sassDefault                 cssImportant\nhi def link sassVariable                Identifier\nhi def link sassFunction                Function\nhi def link sassMixing                  PreProc\nhi def link sassMixin                   PreProc\nhi def link sassPlaceholder             PreProc\nhi def link sassExtend                  PreProc\nhi def link sassFunctionDecl            PreProc\nhi def link sassReturn                  PreProc\nhi def link sassTodo                    Todo\nhi def link sassInclude                 Include\nhi def link sassDebug                   sassControl\nhi def link sassWarn                    sassControl\nhi def link sassControl                 PreProc\nhi def link sassFor                     PreProc\nhi def link sassEscape                  Special\nhi def link sassIdChar                  Special\nhi def link sassClassChar               Special\nhi def link sassInterpolationDelimiter  Delimiter\nhi def link sassAmpersand               Character\nhi def link sassId                      Identifier\nhi def link sassClass                   Type\n\nlet b:current_syntax = \"sass\"\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/sbt.vim",
    "content": "\" Vim syntax file\n\" Language:     sbt\n\" Maintainer:   Derek Wyatt <derek@{myfirstname}{mylastname}.org>\n\" Last Change:  2013 Oct 20\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nruntime! syntax/scala.vim\n\nsyn region sbtString start=\"\\\"[^\"]\" skip=\"\\\\\\\"\" end=\"\\\"\" contains=sbtStringEscape\nsyn match sbtStringEscape \"\\\\u[0-9a-fA-F]\\{4}\" contained\nsyn match sbtStringEscape \"\\\\[nrfvb\\\\\\\"]\" contained\n\nsyn match sbtIdentitifer \"^\\S\\+\\ze\\s*\\(:=\\|++=\\|+=\\|<<=\\|<+=\\)\"\nsyn match sbtBeginningSeq \"^[Ss]eq\\>\"\nsyn match sbtAddPlugin \"^addSbtPlugin\\>\"\n\nsyn match sbtSpecial \"\\(:=\\|++=\\|+=\\|<<=\\|<+=\\)\"\n\nsyn match sbtLineComment \"//.*\"\nsyn region sbtComment start=\"/\\*\" end=\"\\*/\"\nsyn region sbtDocComment start=\"/\\*\\*\" end=\"\\*/\" keepend\n\nhi link sbtString String\nhi link sbtIdentitifer Keyword\nhi link sbtBeginningSeq Keyword\nhi link sbtAddPlugin Keyword\nhi link sbtSpecial Special\nhi link sbtComment Comment\nhi link sbtLineComment Comment\nhi link sbtDocComment Comment\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/scala.vim",
    "content": "if version < 600\n  syntax clear\nelseif exists(\"b:current_syntax\")\n  finish\nendif\n\nlet b:current_syntax = \"scala\"\n\nsyn case match\nsyn sync minlines=200 maxlines=1000\n\nsyn keyword scalaKeyword catch do else final finally for forSome if\nsyn keyword scalaKeyword match return throw try while yield macro\nsyn keyword scalaKeyword class trait object extends with nextgroup=scalaInstanceDeclaration skipwhite\nsyn keyword scalaKeyword case nextgroup=scalaKeyword,scalaCaseFollowing skipwhite\nsyn keyword scalaKeyword val nextgroup=scalaNameDefinition,scalaQuasiQuotes skipwhite\nsyn keyword scalaKeyword def var nextgroup=scalaNameDefinition skipwhite\nhi link scalaKeyword Keyword\n\nsyn keyword scalaAkkaSpecialWord when goto using startWith initialize onTransition stay become unbecome\nhi link scalaAkkaSpecialWord PreProc\n\nsyn match scalaSymbol /'[_A-Za-z0-9$]\\+/\nhi link scalaSymbol Number\n\nsyn match scalaChar /'.'/\nsyn match scalaEscapedChar /\\\\[\\\\ntbrf]/\nsyn match scalaUnicodeChar /\\\\u[A-Fa-f0-9]\\{4}/\nhi link scalaChar Character\nhi link scalaEscapedChar Function\nhi link scalaUnicodeChar Special\n\nsyn match scalaOperator \"||\"\nsyn match scalaOperator \"&&\"\nhi link scalaOperator Special\n\nsyn match scalaNameDefinition /\\<[_A-Za-z0-9$]\\+\\>/ contained nextgroup=scalaPostNameDefinition\nsyn match scalaNameDefinition /`[^`]\\+`/ contained nextgroup=scalaPostNameDefinition\nsyn match scalaPostNameDefinition /\\_s*:\\_s*/ contained nextgroup=scalaTypeDeclaration\nhi link scalaNameDefinition Function\n\nsyn match scalaInstanceDeclaration /\\<[_\\.A-Za-z0-9$]\\+\\>/ contained nextgroup=scalaInstanceHash\nsyn match scalaInstanceDeclaration /`[^`]\\+`/ contained\nsyn match scalaInstanceHash /#/ contained nextgroup=scalaInstanceDeclaration\nhi link scalaInstanceDeclaration Special\nhi link scalaInstanceHash Type\n\nsyn match scalaCapitalWord /\\<[A-Z][A-Za-z0-9$]*\\>/\nhi link scalaCapitalWord Special\n\n\" Handle type declarations specially\nsyn region scalaTypeStatement matchgroup=Keyword start=/\\<type\\_s\\+\\ze/ end=/$/ contains=scalaTypeTypeDeclaration,scalaSquareBrackets,scalaTypeTypeEquals,scalaTypeStatement\n\n\" Ugh... duplication of all the scalaType* stuff to handle special highlighting\n\" of `type X =` declarations\nsyn match scalaTypeTypeDeclaration /(/ contained nextgroup=scalaTypeTypeExtension,scalaTypeTypeEquals contains=scalaRoundBrackets skipwhite\nsyn match scalaTypeTypeDeclaration /\\%(⇒\\|=>\\)\\ze/ contained nextgroup=scalaTypeTypeDeclaration contains=scalaTypeTypeExtension skipwhite\nsyn match scalaTypeTypeDeclaration /\\<[_\\.A-Za-z0-9$]\\+\\>/ contained nextgroup=scalaTypeTypeExtension,scalaTypeTypeEquals skipwhite\nsyn match scalaTypeTypeEquals /=\\ze[^>]/ contained nextgroup=scalaTypeTypePostDeclaration skipwhite\nsyn match scalaTypeTypeExtension /)\\?\\_s*\\zs\\%(⇒\\|=>\\|<:\\|:>\\|=:=\\|::\\|#\\)/ contained nextgroup=scalaTypeTypeDeclaration skipwhite\nsyn match scalaTypeTypePostDeclaration /\\<[_\\.A-Za-z0-9$]\\+\\>/ contained nextgroup=scalaTypeTypePostExtension skipwhite\nsyn match scalaTypeTypePostExtension /\\%(⇒\\|=>\\|<:\\|:>\\|=:=\\|::\\)/ contained nextgroup=scalaTypeTypePostDeclaration skipwhite\nhi link scalaTypeTypeDeclaration Type\nhi link scalaTypeTypeExtension Keyword\nhi link scalaTypeTypePostDeclaration Special\nhi link scalaTypeTypePostExtension Keyword\n\nsyn match scalaTypeDeclaration /(/ contained nextgroup=scalaTypeExtension contains=scalaRoundBrackets skipwhite\nsyn match scalaTypeDeclaration /\\%(⇒\\|=>\\)\\ze/ contained nextgroup=scalaTypeDeclaration contains=scalaTypeExtension skipwhite\nsyn match scalaTypeDeclaration /\\<[_\\.A-Za-z0-9$]\\+\\>/ contained nextgroup=scalaTypeExtension skipwhite\nsyn match scalaTypeExtension /)\\?\\_s*\\zs\\%(⇒\\|=>\\|<:\\|:>\\|=:=\\|::\\|#\\)/ contained nextgroup=scalaTypeDeclaration skipwhite\nhi link scalaTypeDeclaration Type\nhi link scalaTypeExtension Keyword\nhi link scalaTypePostExtension Keyword\n\nsyn match scalaTypeAnnotation /\\%([_a-zA-Z0-9$\\s]:\\_s*\\)\\ze[_=(\\.A-Za-z0-9$]\\+/ skipwhite nextgroup=scalaTypeDeclaration contains=scalaRoundBrackets\nsyn match scalaTypeAnnotation /)\\_s*:\\_s*\\ze[_=(\\.A-Za-z0-9$]\\+/ skipwhite nextgroup=scalaTypeDeclaration\nhi link scalaTypeAnnotation Normal\n\nsyn match scalaCaseFollowing /\\<[_\\.A-Za-z0-9$]\\+\\>/ contained\nsyn match scalaCaseFollowing /`[^`]\\+`/ contained\nhi link scalaCaseFollowing Special\n\nsyn keyword scalaKeywordModifier abstract override final lazy implicit implicitly private protected sealed null require super\nhi link scalaKeywordModifier Function\n\nsyn keyword scalaSpecial this true false package import ne eq\nsyn keyword scalaSpecial new nextgroup=scalaInstanceDeclaration skipwhite\nsyn match scalaSpecial \"\\%(=>\\|⇒\\|<-\\|←\\|->\\|→\\)\"\nsyn match scalaSpecial /`[^`]*`/  \" Backtick literals\nhi link scalaSpecial PreProc\n\nsyn match scalaStringEmbeddedQuote /\\\\\"/ contained\nsyn region scalaString start=/\"/ end=/\"/ contains=scalaStringEmbeddedQuote,scalaEscapedChar,scalaUnicodeChar\nhi link scalaString String\nhi link scalaStringEmbeddedQuote String\n\nsyn region scalaSString matchgroup=Special start=/s\"/ skip=/\\\\\"/ end=/\"/ contains=scalaInterpolation,scalaEscapedChar,scalaUnicodeChar\nsyn match scalaInterpolation /\\$[a-zA-Z0-9_$]\\+/ contained\nsyn match scalaInterpolation /\\${[^}]\\+}/ contained\nhi link scalaSString String\nhi link scalaInterpolation Function\n\nsyn region scalaFString matchgroup=Special start=/f\"/ skip=/\\\\\"/ end=/\"/ contains=scalaInterpolation,scalaFInterpolation,scalaEscapedChar,scalaUnicodeChar\nsyn match scalaFInterpolation /\\$[a-zA-Z0-9_$]\\+%[-A-Za-z0-9\\.]\\+/ contained\nsyn match scalaFInterpolation /\\${[^}]\\+}%[-A-Za-z0-9\\.]\\+/ contained\nhi link scalaFString String\nhi link scalaFInterpolation Function\n\nsyn region scalaQuasiQuotes matchgroup=Type start=/\\<q\"/ skip=/\\\\\"/ end=/\"/ contains=scalaInterpolation\nsyn region scalaQuasiQuotes matchgroup=Type start=/\\<[tcp]q\"/ skip=/\\\\\"/ end=/\"/ contains=scalaInterpolation\nhi link scalaQuasiQuotes String\n\nsyn region scalaTripleQuasiQuotes matchgroup=Type start=/\\<q\"\"\"/ end=/\"\"\"\\%([^\"]\\|$\\)/ contains=scalaInterpolation\nsyn region scalaTripleQuasiQuotes matchgroup=Type start=/\\<[tcp]q\"\"\"/ end=/\"\"\"\\%([^\"]\\|$\\)/ contains=scalaInterpolation\nhi link scalaTripleQuasiQuotes String\n\nsyn region scalaTripleString start=/\"\"\"/ end=/\"\"\"\\%([^\"]\\|$\\)/ contains=scalaEscapedChar,scalaUnicodeChar\nsyn region scalaTripleSString matchgroup=Special start=/s\"\"\"/ end=/\"\"\"\\%([^\"]\\|$\\)/ contains=scalaInterpolation,scalaEscapedChar,scalaUnicodeChar\nsyn region scalaTripleFString matchgroup=Special start=/f\"\"\"/ end=/\"\"\"\\%([^\"]\\|$\\)/ contains=scalaInterpolation,scalaFInterpolation,scalaEscapedChar,scalaUnicodeChar\nhi link scalaTripleString String\nhi link scalaTripleSString String\nhi link scalaTripleFString String\n\nsyn match scalaNumber /\\<0[dDfFlL]\\?\\>/ \" Just a bare 0\nsyn match scalaNumber /\\<[1-9]\\d*[dDfFlL]\\?\\>/  \" A multi-digit number - octal numbers with leading 0's are deprecated in Scala\nsyn match scalaNumber /\\<0[xX][0-9a-fA-F]\\+[dDfFlL]\\?\\>/ \" Hex number\nsyn match scalaNumber /\\%(\\<\\d\\+\\.\\d*\\|\\.\\d\\+\\)\\%([eE][-+]\\=\\d\\+\\)\\=[fFdD]\\=/ \" exponential notation 1\nsyn match scalaNumber /\\<\\d\\+[eE][-+]\\=\\d\\+[fFdD]\\=\\>/ \" exponential notation 2\nsyn match scalaNumber /\\<\\d\\+\\%([eE][-+]\\=\\d\\+\\)\\=[fFdD]\\>/ \" exponential notation 3\nhi link scalaNumber Number\n\nsyn region scalaRoundBrackets start=\"(\" end=\")\" skipwhite contained contains=scalaTypeDeclaration,scalaSquareBrackets,scalaRoundBrackets\n\nsyn region scalaSquareBrackets matchgroup=Type start=\"\\[\" end=\"\\]\" skipwhite nextgroup=scalaTypeExtension contains=scalaTypeDeclaration,scalaSquareBrackets,scalaTypeOperator,scalaTypeAnnotationParameter\nsyn match scalaTypeOperator /[-+=:<>]\\+/ contained\nsyn match scalaTypeAnnotationParameter /@\\<[`_A-Za-z0-9$]\\+\\>/ contained\nhi link scalaTypeOperator Keyword\nhi link scalaTypeAnnotationParameter Function\n\nsyn region scalaMultilineComment start=\"/\\*\" end=\"\\*/\" contains=scalaMultilineComment,scalaDocLinks,scalaParameterAnnotation,scalaCommentAnnotation,scalaCommentCodeBlock,@scalaHtml keepend\nsyn match scalaCommentAnnotation \"@[_A-Za-z0-9$]\\+\" contained\nsyn match scalaParameterAnnotation \"@param\" nextgroup=scalaParamAnnotationValue skipwhite contained\nsyn match scalaParamAnnotationValue /[`_A-Za-z0-9$]\\+/ contained\nsyn region scalaDocLinks start=\"\\[\\[\" end=\"\\]\\]\" contained\nsyn region scalaCommentCodeBlock matchgroup=Keyword start=\"{{{\" end=\"}}}\" contained\nhi link scalaMultilineComment Comment\nhi link scalaDocLinks Function\nhi link scalaParameterAnnotation Function\nhi link scalaParamAnnotationValue Keyword\nhi link scalaCommentAnnotation Function\nhi link scalaCommentCodeBlock String\n\nsyn match scalaAnnotation /@\\<[`_A-Za-z0-9$]\\+\\>/\nhi link scalaAnnotation PreProc\n\nsyn match scalaTrailingComment \"//.*$\"\nhi link scalaTrailingComment Comment\n\nsyn match scalaAkkaFSM /goto([^)]*)\\_s\\+\\<using\\>/ contains=scalaAkkaFSMGotoUsing\nsyn match scalaAkkaFSM /stay\\_s\\+using/\nsyn match scalaAkkaFSM /^\\s*stay\\s*$/\nsyn match scalaAkkaFSM /when\\ze([^)]*)/\nsyn match scalaAkkaFSM /startWith\\ze([^)]*)/\nsyn match scalaAkkaFSM /initialize\\ze()/\nsyn match scalaAkkaFSM /onTransition/\nsyn match scalaAkkaFSM /onTermination/\nsyn match scalaAkkaFSM /whenUnhandled/\nsyn match scalaAkkaFSMGotoUsing /\\<using\\>/\nsyn match scalaAkkaFSMGotoUsing /\\<goto\\>/\nhi link scalaAkkaFSM PreProc\nhi link scalaAkkaFSMGotoUsing PreProc\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/scss.vim",
    "content": "\" Vim syntax file\n\" Language:\tSCSS\n\" Maintainer:\tTim Pope <vimNOSPAM@tpope.org>\n\" Filenames:\t*.scss\n\" Last Change:\t2010 Jul 26\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nruntime! syntax/sass.vim\n\nsyn match scssComment \"//.*\" contains=sassTodo,@Spell\nsyn region scssComment start=\"/\\*\" end=\"\\*/\" contains=sassTodo,@Spell\n\nhi def link scssComment sassComment\n\nlet b:current_syntax = \"scss\"\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/slim.vim",
    "content": "\" Vim syntax file\n\" Language: Slim\n\" Maintainer: Andrew Stone <andy@stonean.com>\n\" Version:  1\n\" Last Change:  2010 Sep 25\n\" TODO: Feedback is welcomed.\n\n\" Quit when a syntax file is already loaded.\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nif !exists(\"main_syntax\")\n  let main_syntax = 'slim'\nendif\n\n\" Allows a per line syntax evaluation.\nlet b:ruby_no_expensive = 1\n\n\" Include Ruby syntax highlighting\nsyn include @slimRubyTop syntax/ruby.vim\nunlet! b:current_syntax\n\" Include Haml syntax highlighting\nsyn include @slimHaml syntax/haml.vim\nunlet! b:current_syntax\n\nsyn match slimBegin  \"^\\s*\\(&[^= ]\\)\\@!\" nextgroup=slimTag,slimClassChar,slimIdChar,slimRuby\n\nsyn region  rubyCurlyBlock start=\"{\" end=\"}\" contains=@slimRubyTop contained\nsyn cluster slimRubyTop    add=rubyCurlyBlock\n\nsyn cluster slimComponent contains=slimClassChar,slimIdChar,slimWrappedAttrs,slimRuby,slimAttr,slimInlineTagChar\n\nsyn keyword slimDocType        contained html 5 1.1 strict frameset mobile basic transitional\nsyn match   slimDocTypeKeyword \"^\\s*\\(doctype\\)\\s\\+\" nextgroup=slimDocType\n\nsyn keyword slimTodo        FIXME TODO NOTE OPTIMIZE XXX contained\nsyn keyword htmlTagName     contained script\n\nsyn match slimTag           \"\\w\\+[><]*\"         contained contains=htmlTagName nextgroup=@slimComponent\nsyn match slimIdChar        \"#{\\@!\"        contained nextgroup=slimId\nsyn match slimId            \"\\%(\\w\\|-\\)\\+\" contained nextgroup=@slimComponent\nsyn match slimClassChar     \"\\.\"           contained nextgroup=slimClass\nsyn match slimClass         \"\\%(\\w\\|-\\)\\+\" contained nextgroup=@slimComponent\nsyn match slimInlineTagChar \"\\s*:\\s*\"      contained nextgroup=slimTag,slimClassChar,slimIdChar\n\nsyn region slimWrappedAttrs matchgroup=slimWrappedAttrsDelimiter start=\"\\s*{\\s*\" skip=\"}\\s*\\\"\"  end=\"\\s*}\\s*\"  contained contains=slimAttr nextgroup=slimRuby\nsyn region slimWrappedAttrs matchgroup=slimWrappedAttrsDelimiter start=\"\\s*\\[\\s*\" end=\"\\s*\\]\\s*\" contained contains=slimAttr nextgroup=slimRuby\nsyn region slimWrappedAttrs matchgroup=slimWrappedAttrsDelimiter start=\"\\s*(\\s*\"  end=\"\\s*)\\s*\"  contained contains=slimAttr nextgroup=slimRuby\n\nsyn match slimAttr \"\\s*\\%(\\w\\|-\\)\\+\\s*\" contained contains=htmlArg nextgroup=slimAttrAssignment\nsyn match slimAttrAssignment \"\\s*=\\s*\" contained nextgroup=slimWrappedAttrValue,slimAttrString\n\nsyn region slimWrappedAttrValue matchgroup=slimWrappedAttrValueDelimiter start=\"{\" end=\"}\" contained contains=slimAttrString,@slimRubyTop nextgroup=slimAttr,slimRuby,slimInlineTagChar\nsyn region slimWrappedAttrValue matchgroup=slimWrappedAttrValueDelimiter start=\"\\[\" end=\"\\]\" contained contains=slimAttrString,@slimRubyTop nextgroup=slimAttr,slimRuby,slimInlineTagChar\nsyn region slimWrappedAttrValue matchgroup=slimWrappedAttrValueDelimiter start=\"(\" end=\")\" contained contains=slimAttrString,@slimRubyTop nextgroup=slimAttr,slimRuby,slimInlineTagChar\n\nsyn region slimAttrString start=+\\s*\"+ skip=+\\%(\\\\\\\\\\)*\\\\\"+ end=+\"\\s*+ contained contains=slimInterpolation,slimInterpolationEscape nextgroup=slimAttr,slimRuby,slimInlineTagChar\nsyn region slimAttrString start=+\\s*'+ skip=+\\%(\\\\\\\\\\)*\\\\\"+ end=+'\\s*+ contained contains=slimInterpolation,slimInterpolationEscape nextgroup=slimAttr,slimRuby,slimInlineTagChar\n\nsyn region slimInnerAttrString start=+\\s*\"+ skip=+\\%(\\\\\\\\\\)*\\\\\"+ end=+\"\\s*+ contained contains=slimInterpolation,slimInterpolationEscape nextgroup=slimAttr\nsyn region slimInnerAttrString start=+\\s*'+ skip=+\\%(\\\\\\\\\\)*\\\\\"+ end=+'\\s*+ contained contains=slimInterpolation,slimInterpolationEscape nextgroup=slimAttr\n\nsyn region slimInterpolation matchgroup=slimInterpolationDelimiter start=\"#{\" end=\"}\" contains=@hamlRubyTop containedin=javascriptStringS,javascriptStringD,slimWrappedAttrs\nsyn region slimInterpolation matchgroup=slimInterpolationDelimiter start=\"#{{\" end=\"}}\" contains=@hamlRubyTop containedin=javascriptStringS,javascriptStringD,slimWrappedAttrs\nsyn match  slimInterpolationEscape \"\\\\\\@<!\\%(\\\\\\\\\\)*\\\\\\%(\\\\\\ze#{\\|#\\ze{\\)\"\n\nsyn region slimRuby matchgroup=slimRubyOutputChar start=\"\\s*[=]\\==[']\\=\" skip=\",\\s*$\" end=\"$\" contained contains=@slimRubyTop keepend\nsyn region slimRuby matchgroup=slimRubyChar       start=\"\\s*-\"           skip=\",\\s*$\" end=\"$\" contained contains=@slimRubyTop keepend\n\nsyn match slimComment /^\\(\\s*\\)[/].*\\(\\n\\1\\s.*\\)*/ contains=slimTodo\nsyn match slimText    /^\\(\\s*\\)[`|'].*\\(\\n\\1\\s.*\\)*/\n\nsyn match slimFilter /\\s*\\w\\+:\\s*/                            contained\nsyn match slimHaml   /^\\(\\s*\\)\\<haml:\\>.*\\(\\n\\1\\s.*\\)*/       contains=@slimHaml,slimFilter\n\nsyn match slimIEConditional \"\\%(^\\s*/\\)\\@<=\\[\\s*if\\>[^]]*]\" contained containedin=slimComment\n\nhi def link slimAttrString                String\nhi def link slimBegin                     String\nhi def link slimClass                     Type\nhi def link slimAttr                      Type\nhi def link slimClassChar                 Type\nhi def link slimComment                   Comment\nhi def link slimDocType                   Identifier\nhi def link slimDocTypeKeyword            Keyword\nhi def link slimFilter                    Keyword\nhi def link slimIEConditional             SpecialComment\nhi def link slimId                        Identifier\nhi def link slimIdChar                    Identifier\nhi def link slimInnerAttrString           String\nhi def link slimInterpolationDelimiter    Delimiter\nhi def link slimRubyChar                  Special\nhi def link slimRubyOutputChar            Special\nhi def link slimText                      String\nhi def link slimTodo                      Todo\nhi def link slimWrappedAttrValueDelimiter Delimiter\nhi def link slimWrappedAttrsDelimiter     Delimiter\nhi def link slimInlineTagChar             Delimiter\n\nlet b:current_syntax = \"slim\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/stylus.vim",
    "content": "\" Vim syntax file\n\" Language:\tCSS3\n\" Maintainer:\tHsiaoming Yang <lepture@me.com>\n\" URL: http://lepture.me/work/css3/\n\" Created:\tDec 14, 2011\n\" Modified:\tSep 4, 2012\n\n\" For version 5.x: Clear all syntax items\n\" For version 6.x: Quit when a syntax file was already loaded\nif !exists(\"main_syntax\")\n  if version < 600\n    syntax clear\n  elseif exists(\"b:current_syntax\")\n    finish\n  endif\n  let main_syntax = 'css'\nendif\n\nsyn case ignore\nsyn region cssString start='\"' end='\"' contained\nsyn region cssString start=\"'\" end=\"'\" contained\n\n\" HTML4 tags\nsyn keyword cssTagName abbr acronym address applet area base a b\nsyn keyword cssTagName basefont bdo big blockquote body button br\nsyn keyword cssTagName caption cite code col colgroup dd del\nsyn keyword cssTagName dfn dir div dl dt em fieldset form frame\nsyn keyword cssTagName frameset h1 h2 h3 h4 h5 h6 head hr html img i\nsyn keyword cssTagName iframe img input ins isindex kbd label legend li\nsyn keyword cssTagName link map menu meta noframes noscript ol optgroup\nsyn keyword cssTagName option p param pre q s samp script select\nsyn keyword cssTagName span strike strong style sub sup tbody td\nsyn keyword cssTagName textarea tfoot th thead title tr tt ul u var\nsyn match cssTagName \"\\*\"\nsyn match cssTagName /\\<table\\>/\nsyn match cssTagName /\\<small\\>/\nsyn match cssTagName /\\<center\\>/\n\" HTML5 tags\nsyn keyword cssTagName article aside audio bb canvas command datagrid\nsyn keyword cssTagName datalist details dialog embed figure footer figcaption\nsyn keyword cssTagName header hgroup keygen mark meter nav output \nsyn keyword cssTagName progress time rt rp section time video\nsyn match cssTagName /\\<ruby\\>/\n\" class select\nsyn match cssSelector /\\.[A-Za-z][A-Za-z0-9_-]\\+/\n\" id select\nsyn match cssSelector /#[A-Za-z][A-Za-z0-9_-]\\+/\nsyn region cssSelector start='\\[' end='\\]' contains=cssString\n\nsyn region cssDefineBlock start=\"{\" end=\"}\" transparent contains=ALL\n\nsyn keyword cssCommonVal inherit initial auto both normal hidden none medium contained\n\n\n\" Comment\nsyn keyword cssTodo FIXME TODO contained\nsyn region cssComment start=\"/\\*\" end=\"\\*/\" contains=cssTodo\nsyn match cssImportant \"!\\s*important\\>\" contained\n\nsyn match cssValueInteger \"[-+]\\=\\d\\+\" contained\nsyn match cssValueNumber \"[-+]\\=\\d\\+\\(\\.\\d*\\)\\=\"\nsyn match cssValueLength \"[-+]\\=\\d\\+\\(\\.\\d*\\)\\=\\(%\\|mm\\|cm\\|in\\|pt\\|pc\\|em\\|ex\\|px\\|rem\\|vh\\|vw\\|vm\\|fr\\|gr\\)\" contained\nsyn match cssValueAngle \"[-+]\\=\\d\\+\\(\\.\\d*\\)\\=\\(deg\\|grad\\|rad\\|turn\\)\" contained\nsyn match cssValueTime \"+\\=\\d\\+\\(\\.\\d*\\)\\=\\(ms\\|s\\)\" contained\nsyn match cssValueFrequency \"+\\=\\d\\+\\(\\.\\d*\\)\\=\\(Hz\\|kHz\\)\" contained\n\n\n\" Properties http://www.w3.org/community/webed/wiki/CSS/Properties\n\" background http://www.w3.org/TR/css3-background/\nsyn match cssBackgroundProp /\\(background-\\(color\\|image\\|repeat\\|attachment\\|position\\)\\|background\\)/ contained\nsyn match cssBackgroundProp /background-\\(origin\\|\\(repeat\\|position\\)-[xy]\\|clip\\|size\\)/ contained\nsyn match cssBackgroundProp /object-\\(fit\\|position\\)/ contained\n\" http://www.evotech.net/blog/2010/02/css3-properties-values-browser-support/\nsyn keyword cssBackgroundVal tb lr rl snap cover contain widthLength heightLength contained\nsyn match cssBackgroundVal /\\(scale-down\\|from-image\\)/ contained\nsyn match cssBackgroundVal /repeat-[xy]/ contained\nsyn match cssBackgroundVal /no-repeat/ contained\nsyn keyword cssBackgroundVal circle ellipse to at contained\nsyn match cssBackgroundVal /\\(closest\\|farthest\\)-\\(side\\|corner\\)/ contained\n\nsyn region cssFuncVal start=\"\\(url\\|calc\\|min\\|max\\|counter\\|cycle(\\)\" end=\")\" oneline contained contains=cssString,cssValueLength,cssValueInteger,cssValueNumber,cssValueAngle,cssValueTime,cssValueFrequency\nsyn region cssFuncVal start=\"\\(linear\\|radial\\|repeating-linear\\|repeating-radial\\)-gradient(\" end=\")\" oneline contained contains=cssString,cssValueLength,cssValueInteger,cssValueNumber,cssValueAngle,cssValueTime,cssValueFrequency,cssVisualProp,cssColorVal\n\nsyn match cssBorderProp /\\(border-\\(color\\|style\\|width\\|radius\\)\\|border\\)/ contained\nsyn match cssBorderProp /border-\\(image-\\(source\\|slice\\|width\\|outset\\|repeat\\)\\|image\\)/ contained\nsyn match cssBorderProp /border-\\(\\(top\\|right\\|bottom\\|left\\)-\\(color\\|style\\|width\\)\\|\\(top\\|right\\|bottom\\|left\\)\\)/ contained\nsyn match cssBorderProp /border-\\(top\\|bottom\\)-\\(left\\|right\\)-radius/ contained\nsyn keyword cssBorderVal dotted dashed solid double groove ridge inset outset contained\nsyn match cssBorderVal /\\<collapse\\>/ contained\nsyn match cssBorderVal /\\<separate\\>/ contained\nsyn match cssBorderVal /\\<fill\\>/ contained\n\n\" Font\nsyn match cssFontProp /\\(font-\\(family\\|style\\|variant\\|weight\\|size-adjust\\|size\\|stretch\\)\\|font\\)/ contained\nsyn match cssFontVal /\\(sans-serif\\|small-caps\\)/ contained\nsyn match cssFontVal /\\<x\\{1,2\\}-\\(large\\|small\\)\\>/ contained\nsyn keyword cssFontVal cursive fantasy monospace italic oblique serif contained\nsyn keyword cssFontVal bold bolder lighter larger smaller contained\nsyn keyword cssFontVal icon narrower wider contained\n\n\" Color\nsyn match cssColorVal /transparent/ contained\nsyn match cssColorVal \"#[0-9A-Fa-f]\\{3\\}\\>\" contained\nsyn match cssColorVal \"#[0-9A-Fa-f]\\{6\\}\\>\" contained\nsyn match cssFuncVal /rgb(\\(\\d\\{1,3\\}\\s*,\\s*\\)\\{2\\}\\d\\{1,3\\})/ contained contains=cssString,cssValueLength,cssValueInteger,cssValueNumber,cssValueAngle,cssValueTime,cssValueFrequency\nsyn match cssFuncVal /rgba(\\(\\d\\{1,3\\}\\s*,\\s*\\)\\{3\\}\\(1\\|0\\(\\.\\d\\+\\)\\?\\))/ contained contains=cssString,cssValueLength,cssValueInteger,cssValueNumber,cssValueAngle,cssValueTime,cssValueFrequency \nsyn match cssFuncVal /hsl(\\d\\{1,3\\}\\s*,\\s*\\(100\\|\\d\\{1,2\\}\\(\\.\\d\\+\\)\\?\\)%\\s*,\\s*\\(100\\|\\d\\{1,2\\}\\(\\.\\d\\+\\)\\?\\)%)/ contained contains=cssString,cssValueLength,cssValueInteger,cssValueNumber,cssValueAngle,cssValueTime,cssValueFrequency\nsyn match cssFuncVal /hsla(\\d\\{1,3\\}\\s*,\\s*\\(\\(100\\|\\d\\{1,2\\}\\(\\.\\d\\+\\)\\?\\)%\\s*,\\s*\\)\\{2\\}\\(1\\|0\\(\\.\\d\\+\\)\\?\\))/ contained contains=cssString,cssValueLength,cssValueInteger,cssValueNumber,cssValueAngle,cssValueTime,cssValueFrequency\nsyn keyword cssColorVal aliceblue antiquewhite aqua aquamarine azure contained\nsyn keyword cssColorVal beige bisque black blanchedalmond blue blueviolet brown burlywood contained\nsyn keyword cssColorVal cadetblue chartreuse chocolate coral cornflowerblue cornsilk crimson cyan contained\nsyn match cssColorVal /dark\\(blue\\|cyan\\|goldenrod\\|gray\\|green\\|grey\\|khaki\\)/ contained\nsyn match cssColorVal /dark\\(magenta\\|olivegreen\\|orange\\|orchid\\|red\\|salmon\\|seagreen\\)/ contained\nsyn match cssColorVal /darkslate\\(blue\\|gray\\|grey\\)/ contained\nsyn match cssColorVal /dark\\(turquoise\\|violet\\)/ contained\nsyn keyword cssColorVal deeppink deepskyblue dimgray dimgrey dodgerblue firebrick contained\nsyn keyword cssColorVal floralwhite forestgreen fuchsia gainsboro ghostwhite gold contained\nsyn keyword cssColorVal goldenrod gray green greenyellow grey honeydew hotpink contained\nsyn keyword cssColorVal indianred indigo ivory khaki lavender lavenderblush lawngreen contained\nsyn keyword cssColorVal lemonchiffon lime limegreen linen magenta maroon contained\nsyn match cssColorVal /light\\(blue\\|coral\\|cyan\\|goldenrodyellow\\|gray\\|green\\)/ contained\nsyn match cssColorVal /light\\(grey\\|pink\\|salmon\\|seagreen\\|skyblue\\|yellow\\)/ contained\nsyn match cssColorVal /light\\(slategray\\|slategrey\\|steelblue\\)/ contained\nsyn match cssColorVal /medium\\(aquamarine\\|blue\\|orchid\\|purple\\|seagreen\\)/ contained\nsyn match cssColorVal /medium\\(slateblue\\|springgreen\\|turquoise\\|violetred\\)/ contained\nsyn keyword cssColorVal midnightblue mintcream mistyrose moccasin navajowhite contained\nsyn keyword cssColorVal navy oldlace olive olivedrab orange orangered orchid contained\nsyn match cssColorVal /pale\\(goldenrod\\|green\\|turquoise\\|violetred\\)/ contained\nsyn keyword cssColorVal papayawhip peachpuff peru pink plum powderblue purple contained\nsyn keyword cssColorVal red rosybrown royalblue saddlebrown salmon sandybrown contained\nsyn keyword cssColorVal seagreen seashell sienna silver skyblue slateblue contained\nsyn keyword cssColorVal slategray slategrey snow springgreen steelblue tan contained\nsyn keyword cssColorVal teal thistle tomato turquoise violet wheat contained\nsyn keyword cssColorVal whitesmoke yellow yellowgreen contained\nsyn match cssColorVal \"\\<white\\>\" contained\nsyn keyword cssColorProp color opaticy contained\nsyn match cssColorProp /color-profile/ contained\n\n\" Box\nsyn match cssBoxProp /\\(\\(margin\\|padding\\)-\\(top\\|right\\|bottom\\|left\\)\\|\\(margin\\|padding\\)\\)/ contained\nsyn match cssBoxProp /\\(min\\|max\\)-\\(width\\|height\\)/ contained\nsyn match cssBoxProp /box-\\(align\\|decoration-break\\|direction\\|flex-group\\|flex\\|lines\\)/ contained\nsyn match cssBoxProp /box-\\(ordinal-group\\|orient\\|pack\\|shadow\\|sizing\\)/ contained\nsyn match cssBoxProp /\\(outline-\\(color\\|offset\\|style\\|width\\)\\|outline\\)/ contained\nsyn keyword cssBoxProp width height contained\n\n\" Text\nsyn match cssTextProp /text-\\(align-last\\|align\\|decoration\\|emphasis\\|height\\|indent\\|justify\\|outline\\|shadow\\|transform\\|wrap\\|overflow\\)\\|text/ contained\nsyn match cssTextProp /\\(line-stacking-\\(ruby\\|shift\\|strategy\\)\\|line-stacking\\|line-height\\)/ contained\nsyn match cssTextProp /vertical-align/ contained\nsyn match cssTextProp /letter-spacing/ contained\nsyn match cssTextProp /white-\\(space-collapse\\|space\\)/ contained\nsyn match cssTextProp /word-\\(break\\|spacing\\|wrap\\)/ contained\nsyn match cssTextProp \"\\<word-wrap\\>\" contained\nsyn match cssTextVal \"\\<break-word\\>\" contained\nsyn match cssTextVal \"\\<break-all\\>\" contained\nsyn match cssTextVal \"\\<line-through\\>\" contained\nsyn match cssTextVal /text-\\(top\\|bottom\\)/ contained\nsyn keyword cssTextVal uppercase lowercase ellipsis middle contained\n\n\" List\nsyn match cssListProp /\\(list-style-\\(type\\|image\\|position\\)\\|list-style\\)/ contained\nsyn keyword cssListVal armenian circle disc georgian hebrew square contained\nsyn match cssListVal /cjk-ideographic/ contained\nsyn match cssListVal /\\(decimal-leading-zero\\|decimal\\)/ contained\nsyn match cssListVal /\\(\\(hiragana\\|katakana\\)-iroha\\|\\(hiragana\\|katakana\\)\\)/ contained\nsyn match cssListVal /\\(lower\\|upper\\)-\\(alpha\\|latin\\|roman\\)/ contained\nsyn match cssListVal /lower-greek/ contained\n\n\" Visual formatting\nsyn keyword cssVisualProp display position top right bottom left float clear clip contained\nsyn keyword cssVisualProp zoom visibility cursor direction outline resize contained\nsyn keyword cssVisualProp opacity contained\nsyn match cssVisualProp /z-index/ contained\nsyn match cssVisualProp /\\(overflow-\\(style\\|[xy]\\)\\|overflow\\)/ contained\nsyn keyword cssVisualVal inline block compact contained\nsyn match cssVisualVal '\\<table\\>' contained\nsyn match cssVisualVal /\\(inline-\\(block\\|table\\)\\|list-item\\|run-in\\)/ contained\nsyn match cssVisualVal /table-\\(row-group\\|header-group\\|footer-group\\|row\\|column-group\\|column\\|cell\\|caption\\)/ contained\nsyn match cssVisualVal /\\<ruby\\>-\\(base-group\\|text-group\\|base\\|text\\)/  contained\nsyn keyword cssVisualVal static relative absolute fixed contained\nsyn keyword cssVisualVal ltr rtl embed bidi-override pre nowrap contained\nsyn keyword cssVisualVal crosshair help move pointer progress wait contained\nsyn keyword cssVisualVal e-resize n-resize ne-resize nw-resize s-resize se-resize sw-resize w-resize contained\n\n\" Table\nsyn match cssTableProp /border-\\(collapse\\|spacing\\)/ contained\nsyn match cssTableProp /\\(table-layout\\|caption-side\\|empty-cells\\)/ contained\n\n\" Generated content\nsyn match cssCommonProp /counter-\\(reset\\|increment\\)/ contained\nsyn keyword cssCommonProp content quotes contained\n\n\" Print\nsyn match cssPrintProp /break-\\(before\\|after\\|inside\\)/\nsyn match cssPrintProp /\\(page-break-\\(before\\|after\\|inside\\)\\|page-policy\\)/\nsyn keyword cssPrintProp orphans windows\n\n\" special keywords\nsyn match cssSpecialProp /-\\(webkit\\|moz\\|ms\\|o\\)-/\nsyn match cssRuleProp /@\\(media\\|font-face\\|charset\\|import\\|page\\|namespace\\)/\n\" http://www.w3.org/TR/selectors/\nsyn match cssPseudo /:\\(link\\|visited\\|active\\|hover\\|focus\\|before\\|after\\)/\nsyn match cssPseudo /:\\(target\\|lang\\|enabled\\|disabled\\|checked\\|indeterminate\\)/\nsyn match cssPseudo /:\\(root\\|\\(first\\|last\\|only\\)-\\(child\\|of-type\\)\\|empty\\)/\nsyn match cssPseudo /:\\(nth-last-\\|nth-\\)\\(child\\|of-type\\)(\\<\\S\\+\\>)/\nsyn match cssPseudo /:not(\\<\\S*\\>)/\nsyn match cssPseudo /:first-\\(line\\|letter\\)/\nsyn match cssPseudo /::\\(first-\\(line\\|letter\\)\\|before\\|after\\|selection\\)/\n\n\" CSS3 Advanced http://meiert.com/en/indices/css-properties/\nsyn keyword cssAdvancedProp appearance azimuth binding bleed columns crop hyphens icon\nsyn keyword cssAdvancedProp phonemes resize richness size volumne\nsyn match cssAdvancedProp /\\(animation-\\(delay\\|direction\\|duration\\|name\\|iteration-count\\|play-state\\|timing-function\\)\\|animation\\)/\nsyn match cssAdvancedProp /alignment-\\(adjust\\|baseline\\)/\nsyn match cssAdvancedProp /\\(backface-visibility\\baseline-shift\\)/\nsyn match cssAdvancedProp /bookmark-\\(label\\|level\\|state\\|target\\)/\nsyn match cssAdvancedProp /column-\\(count\\|fill\\|gap\\|rule-\\(color\\|style\\|width\\)\\|rule\\|span\\|width\\)/\nsyn match cssAdvancedProp /\\(cue-\\(after\\|before\\)\\|cue\\)/\nsyn match cssAdvancedProp /dominant-baseline/\nsyn match cssAdvancedProp /drop-initial-\\(size\\|value\\|\\(after\\|before\\)-\\(adjust\\|align\\)\\)/\nsyn match cssAdvancedProp /\\(fit-position\\|fit\\)/\nsyn match cssAdvancedProp /\\(float-offset\\|hanging-punctuation\\)/\nsyn match cssAdvancedProp /grid-\\(columns\\|rows\\)/\nsyn match cssAdvancedProp /hyphenate-\\(after\\|before\\|character\\|lines\\|resource\\)/\nsyn match cssAdvancedProp /image-\\(orientation\\|rendering\\|resolution\\)/\nsyn match cssAdvancedProp /inline-box-align/\nsyn match cssAdvancedProp /\\(mark-\\(after\\|before\\)\\|mark\\|marks\\)/\nsyn match cssAdvancedProp /marquee-\\(direction\\|loop\\|play-count\\|speed\\|style\\)/\nsyn match cssAdvancedProp /move-to/\nsyn match cssAdvancedProp /nav-\\(down\\|index\\|left\\|right\\|up\\)/\nsyn match cssAdvancedProp /\\(pause-\\(after\\|before\\)\\|pause\\)/\nsyn match cssAdvancedProp /\\(perspective-origin\\|perspective\\)/\nsyn match cssAdvancedProp /\\(pitch-range\\|pitch\\)/\nsyn match cssAdvancedProp /presentation-level/\nsyn match cssAdvancedProp /punctuation-trim/\nsyn match cssAdvancedProp /rendering-intent/\nsyn match cssAdvancedProp /\\(rest-\\(after\\|before\\)\\|rest\\)/\nsyn match cssAdvancedProp /\\(rotation-point\\|rotation\\)/\nsyn match cssAdvancedProp /ruby-\\(align\\|overhang\\|position\\|span\\)/\nsyn match cssAdvancedProp /\\(target-\\(name\\|new\\|position\\)\\|target\\)/\nsyn match cssAdvancedProp /\\(transform-\\(origin\\|style\\)\\|transform\\)/\nsyn match cssAdvancedProp /\\(transition-\\(delay\\|duration\\|property\\|timing-function\\)\\|transition\\)/\nsyn match cssAdvancedProp /voice-\\(balance\\|duration\\|family\\|pitch-range\\|pitch\\|rate\\|stress\\|volume\\)/\n\nsyn match cssAdvancedVal /\\(ease-\\(in\\|out\\|in-out\\)\\|ease\\)/ contained\n\n\" CSS3 Advanced value \n\"syn match cssAdvancedVal \n\n\nif main_syntax == \"css\"\n  syn sync minlines=10\nendif\n\n\" Define the default highlighting.\n\" For version 5.7 and earlier: only when not done already\n\" For version 5.8 and later: only when an item doesn't have highlighting yet\nif version >= 508 || !exists(\"did_css_syn_inits\")\n  if version < 508\n    let did_css_syn_inits = 1\n    command -nargs=+ HiLink hi link <args>\n  else\n    command -nargs=+ HiLink hi def link <args>\n  endif\n\n  HiLink cssString String\n  HiLink cssComment Comment\n  HiLink cssTagName Statement\n  HiLink cssSelector Function\n  HiLink cssBackgroundProp StorageClass\n  HiLink cssTableProp StorageClass\n  HiLink cssBorderProp StorageClass\n  HiLink cssFontProp StorageClass\n  HiLink cssColorProp StorageClass\n  HiLink cssBoxProp StorageClass\n  HiLink cssTextProp StorageClass\n  HiLink cssListProp StorageClass\n  HiLink cssVisualProp StorageClass\n  HiLink cssAdvancedProp StorageClass\n  HiLink cssCommonProp StorageClass\n  HiLink cssSpecialProp Special \n  HiLink cssImportant Special\n  HiLink cssRuleProp PreProc\n  HiLink cssPseudo PreProc\n\n  HiLink cssColorVal Constant\n  HiLink cssCommonVal Type\n  HiLink cssFontVal Type\n  HiLink cssListVal Type\n  HiLink cssTextVal Type\n  HiLink cssVisualVal Type\n  HiLink cssBorderVal Type\n  HiLink cssBackgroundVal Type\n  HiLink cssFuncVal Function\n  HiLink cssAdvancedVal Function\n\n  HiLink cssValueLength Number\n  HiLink cssValueInteger Number\n  HiLink cssValueNumber Number\n  HiLink cssValueAngle Number\n  HiLink cssValueTime Number\n  HiLink cssValueFrequency Number\n  delcommand HiLink\nendif\n\n\" let b:current_syntax = \"css\"\n\" \nif main_syntax == 'css'\n  unlet main_syntax\nendif\n\n\" Vim syntax file\n\" Language: Stylus\n\" Maintainer: Marc Harter\n\" Filenames: *.styl, *.stylus\n\" Based On: Tim Pope (sass.vim)\n\nsyn case ignore\n\nsyn cluster stylusCssSelectors contains=cssTagName,cssSelector,cssPseudo\nsyn cluster stylusCssValues contains=cssValueLength,cssValueInteger,cssValueNumber,cssValueAngle,cssValueTime,cssValueFrequency,cssColorVal,cssCommonVal,cssFontVal,cssListVal,cssTextVal,cssVisualVal,cssBorderVal,cssBackgroundVal,cssFuncVal,cssAdvancedVal\nsyn cluster stylusCssProperties contains=cssBackgroundProp,cssTableProp,cssBorderProp,cssFontProp,cssColorProp,cssBoxProp,cssTextProp,cssListProp,cssVisualProp,cssAdvancedProp,cssCommonProp,cssSpecialProp\n\nsyn match stylusVariable \"$\\?[[:alnum:]_-]\\+\"\nsyn match stylusVariableAssignment \"\\%([[:alnum:]_-]\\+\\s*\\)\\@<==\" nextgroup=stylusCssAttribute,stylusVariable skipwhite\n\nsyn match stylusProperty \"\\%([{};]\\s*\\|^\\)\\@<=\\%([[:alnum:]-]\\|#{[^{}]*}\\)\\+:\" contains=@stylusCssProperties,@stylusCssSelectors skipwhite nextgroup=stylusCssAttribute contained containedin=cssDefineBlock\nsyn match stylusProperty \"^\\s*\\zs\\s\\%(\\%([[:alnum:]-]\\|#{[^{}]*}\\)\\+[ :]\\|:[[:alnum:]-]\\+\\)\"hs=s+1 contains=@stylusCssProperties,@stylusCssSelectors skipwhite nextgroup=stylusCssAttribute\nsyn match stylusProperty \"^\\s*\\zs\\s\\%(:\\=[[:alnum:]-]\\+\\s*=\\)\"hs=s+1 contains=@stylusCssProperties,@stylusCssSelectors skipwhite nextgroup=stylusCssAttribute\n\nsyn match stylusCssAttribute +\\%(\"\\%([^\"]\\|\\\\\"\\)*\"\\|'\\%([^']\\|\\\\'\\)*'\\|#{[^{}]*}\\|[^{};]\\)*+ contained contains=@stylusCssValues,cssImportant,stylusFunction,stylusVariable,stylusControl,stylusUserFunction,stylusInterpolation,cssString,stylusComment,cssComment\n\nsyn match stylusInterpolation %{[[:alnum:]_-]\\+}%\n\nsyn match stylusFunction \"\\<\\%(red\\|green\\|blue\\|alpha\\|dark\\|light\\)\\>(\\@=\" contained\nsyn match stylusFunction \"\\<\\%(hue\\|saturation\\|lightness\\|push\\|unshift\\|typeof\\|unit\\|match\\)\\>(\\@=\" contained\nsyn match stylusFunction \"\\<\\%(hsla\\|hsl\\|rgba\\|rgb\\|lighten\\|darken\\)\\>(\\@=\" contained\nsyn match stylusFunction \"\\<\\%(abs\\|ceil\\|floor\\|round\\|min\\|max\\|even\\|odd\\|sum\\|avg\\|sin\\|cos\\|join\\)\\>(\\@=\" contained\nsyn match stylusFunction \"\\<\\%(desaturate\\|saturate\\|invert\\|unquote\\|quote\\|s\\)\\>(\\@=\" contained\nsyn match stylusFunction \"\\<\\%(operate\\|length\\|warn\\|error\\|last\\|p\\|\\)\\>(\\@=\" contained\nsyn match stylusFunction \"\\<\\%(opposite-position\\|image-size\\|add-property\\)\\>(\\@=\" contained\n\nsyn keyword stylusVariable null true false arguments\nsyn keyword stylusControl  if else unless for in return\n\nsyn match stylusImport \"@\\%(import\\|require\\)\" nextgroup=stylusImportList\nsyn match stylusImportList \"[^;]\\+\" contained contains=cssString.*,cssMediaType,cssURL\n\nsyn match stylusAmpersand  \"&\"\nsyn match stylusClass      \"[[:alnum:]_-]\\+\" contained\nsyn match stylusClassChar  \"\\.[[:alnum:]_-]\\@=\" nextgroup=stylusClass\nsyn match stylusEscape     \"^\\s*\\zs\\\\\"\nsyn match stylusId         \"[[:alnum:]_-]\\+\" contained\nsyn match stylusIdChar     \"#[[:alnum:]_-]\\@=\" nextgroup=stylusId\n\nsyn region stylusComment    start=\"//\" end=\"$\" contains=cssTodo,@Spell fold\n\nhi def link stylusComment               Comment\nhi def link stylusVariable              Identifier\nhi def link stylusControl               PreProc\nhi def link stylusFunction              Function\nhi def link stylusInterpolation         Delimiter\n\nhi def link stylusAmpersand             Character\nhi def link stylusClass                 Type\nhi def link stylusClassChar             Special\nhi def link stylusEscape                Special\nhi def link stylusId                    Identifier\nhi def link stylusIdChar                Special\n\nlet b:current_syntax = \"stylus\"\n\n\" vim:set sw=2:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/textile.vim",
    "content": "\"\n\"   You will have to restart vim for this to take effect.  In any case\n\"   it is a good idea to read \":he new-filetype\" so that you know what\n\"   is going on, and why the above lines work.\n\"\n\"   Written originally by Dominic Mitchell, Jan 2006.\n\"   happygiraffe.net\n\"\n\"   Modified by Aaron Bieber, May 2007.\n\"   blog.aaronbieber.com\n\"\n\"   Modified by Tim Harper, July 2008 - current\n\"   tim.theenchanter.com\n\" @(#) $Id$\n\nif version < 600\n    syntax clear\nelseif exists(\"b:current_syntax\")\n    finish\nendif\n\n\" Textile commands like \"h1\" are case sensitive, AFAIK.\nsyn case match\n\n\" Textile syntax: <http://textism.com/tools/textile/>\n\n\" Inline elements.\nsyn match txtEmphasis    /_[^_]\\+_/\nsyn match txtBold        /\\*[^*]\\+\\*/\nsyn match txtCite        /??.\\+??/\nsyn match txtDeleted     /-[^-]\\+-/\nsyn match txtInserted    /+[^+]\\++/\nsyn match txtSuper       /\\^[^^]\\+\\^/\nsyn match txtSub         /\\~[^~]\\+\\~/\nsyn match txtSpan        /%[^%]\\+%/\nsyn match txtFootnoteRef /\\[[0-9]\\+]/\nsyn match txtCode        /@[^@]\\+@/\n\n\" Block elements.\nsyn match txtHeader      /^h1\\(([^)]*)\\|{[^}]*}\\|\\[[^]]*\\]\\|[<>=()]\\)*\\. .\\+/\nsyn match txtHeader2     /^h2\\(([^)]*)\\|{[^}]*}\\|\\[[^]]*\\]\\|[<>=()]\\)*\\. .\\+/\nsyn match txtHeader3     /^h[3-6]\\(([^)]*)\\|{[^}]*}\\|\\[[^]]*\\]\\|[<>=()]\\)*\\..\\+/\nsyn match txtFootnoteDef /^fn[0-9]\\+\\(([^)]*)\\|{[^}]*}\\|\\[[^]]*\\]\\|[<>=()]\\)*\\./\nsyn match txtListBullet  /\\v^\\*+ /\nsyn match txtListBullet2  /\\v^(\\*\\*)+ /\nsyn match txtListNumber  /\\v^#+ /\nsyn match txtListNumber2  /\\v^(##)+ /\n\nsyn region txtCodeblock start=\"^bc\\(([^)]*)\\|{[^}]*}\\|\\[[^]]*\\]\\|[<>=()]\\)*\\. \" end=\"^$\"\nsyn region txtBlockquote start=\"^bq\\(([^)]*)\\|{[^}]*}\\|\\[[^]]*\\]\\|[<>=()]\\)*\\. \" end=\"^$\"\nsyn region txtParagraph start=\"^bq\\(([^)]*)\\|{[^}]*}\\|\\[[^]]*\\]\\|[<>=()]\\)*\\. \" end=\"^$\"\n\nsyn cluster txtBlockElement contains=txtHeader,txtBlockElement,txtFootnoteDef,txtListBullet,txtListNumber\n\n\n\" Everything after the first colon is from RFC 2396, with extra\n\" backslashes to keep vim happy...  Original:\n\" ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?\n\"\n\" Revised the pattern to exclude spaces from the URL portion of the\n\" pattern. Aaron Bieber, 2007.\nsyn match txtLink /\"[^\"]\\+\":\\(\\([^:\\/?# ]\\+\\):\\)\\?\\(\\/\\/\\([^\\/?# ]*\\)\\)\\?\\([^?# ]*\\)\\(?\\([^# ]*\\)\\)\\?\\(#\\([^ ]*\\)\\)\\?/\n\nsyn cluster txtInlineElement contains=txtEmphasis,txtBold,txtCite,txtDeleted,txtInserted,txtSuper,txtSub,txtSpan\n\nif version >= 508 || !exists(\"did_txt_syn_inits\")\n    if version < 508\n        let did_txt_syn_inits = 1\n        command -nargs=+ HiLink hi link <args>\n    else\n        command -nargs=+ HiLink hi def link <args>\n    endif\n\n    HiLink txtHeader Title\n    HiLink txtHeader2 Question\n    HiLink txtHeader3 Statement\n    HiLink txtBlockquote Comment\n    HiLink txtCodeblock Identifier\n    HiLink txtListBullet Operator\n    HiLink txtListBullet2 Constant\n    HiLink txtListNumber Operator\n    HiLink txtListNumber2 Constant\n    HiLink txtLink String\n    HiLink txtCode Identifier\n    hi def txtEmphasis term=underline cterm=underline gui=italic\n    hi def txtBold term=bold cterm=bold gui=bold\n\n    delcommand HiLink\nendif\n\n\" vim: set ai et sw=4 :\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/tmux.vim",
    "content": "\" Vim syntax file\n\" Language: tmux(1) configuration file\n\" Maintainer: Tiago Cunha <me@tiagocunha.org>\n\" Last Change: $Date: 2010-07-27 18:29:07 $\n\" License: This file is placed in the public domain.\n\nif version < 600\n\tsyntax clear\nelseif exists(\"b:current_syntax\")\n\tfinish\nendif\n\nsetlocal iskeyword+=-\nsyntax case match\n\nsyn keyword tmuxAction\tany current none\nsyn keyword tmuxBoolean\toff on\n\nsyn keyword tmuxCmds detach[-client] ls list-sessions neww new-window\nsyn keyword tmuxCmds bind[-key] unbind[-key] prev[ious-window] last[-window]\nsyn keyword tmuxCmds lsk list-keys set[-option] renamew rename-window selectw\nsyn keyword tmuxCmds select-window lsw list-windows attach[-session]\nsyn keyword tmuxCmds send-prefix refresh[-client] killw kill-window lsc\nsyn keyword tmuxCmds list-clients linkw link-window unlinkw unlink-window\nsyn keyword tmuxCmds next[-window] send[-keys] swapw swap-window\nsyn keyword tmuxCmds rename[-session] kill-session switchc switch-client\nsyn keyword tmuxCmds has[-session] copy-mode pasteb paste-buffer\nsyn keyword tmuxCmds new[-session] start[-server] kill-server setw\nsyn keyword tmuxCmds set-window-option show[-options] showw show-window-options\nsyn keyword tmuxCmds command-prompt setb set-buffer showb show-buffer lsb\nsyn keyword tmuxCmds list-buffers deleteb delete-buffer lscm list-commands\nsyn keyword tmuxCmds movew move-window respawnw respawn-window\nsyn keyword tmuxCmds source[-file] info server-info clock-mode lock[-server]\nsyn keyword tmuxCmds saveb save-buffer killp\nsyn keyword tmuxCmds kill-pane resizep resize-pane selectp select-pane swapp\nsyn keyword tmuxCmds swap-pane splitw split-window choose-session\nsyn keyword tmuxCmds choose-window loadb load-buffer copyb copy-buffer suspendc\nsyn keyword tmuxCmds suspend-client findw find-window breakp break-pane nextl\nsyn keyword tmuxCmds next-layout rotatew rotate-window confirm[-before]\nsyn keyword tmuxCmds clearhist clear-history selectl select-layout if[-shell]\nsyn keyword tmuxCmds display[-message] setenv set-environment showenv\nsyn keyword tmuxCmds show-environment choose-client displayp display-panes\nsyn keyword tmuxCmds run[-shell] lockc lock-client locks lock-session lsp\nsyn keyword tmuxCmds list-panes pipep pipe-pane showmsgs show-messages capturep\nsyn keyword tmuxCmds capture-pane joinp join-pane choose-buffer\n\nsyn keyword tmuxOptsSet prefix status status-fg status-bg bell-action\nsyn keyword tmuxOptsSet default-command history-limit status-left status-right\nsyn keyword tmuxOptsSet status-interval set-titles display-time buffer-limit\nsyn keyword tmuxOptsSet status-left-length status-right-length\nsyn keyword tmuxOptsSet message-[command-]bg lock-after-time default-path\nsyn keyword tmuxOptsSet message-[command-]attr status-attr set-remain-on-exit\nsyn keyword tmuxOptsSet status-utf8 default-terminal visual-activity repeat-time\nsyn keyword tmuxOptsSet visual-bell visual-content status-justify status-keys\nsyn keyword tmuxOptsSet terminal-overrides status-left-attr status-left-bg\nsyn keyword tmuxOptsSet status-left-fg status-right-attr status-right-bg\nsyn keyword tmuxOptsSet status-right-fg update-environment base-index\nsyn keyword tmuxOptsSet display-panes-colour display-panes-time default-shell\nsyn keyword tmuxOptsSet set-titles-string lock-command lock-server\nsyn keyword tmuxOptsSet mouse-select-pane message-limit quiet escape-time\nsyn keyword tmuxOptsSet pane-active-border-bg pane-active-border-fg\nsyn keyword tmuxOptsSet pane-border-bg pane-border-fg message-[command-]fg\nsyn keyword tmuxOptsSet display-panes-active-colour alternate-screen\nsyn keyword tmuxOptsSet detach-on-destroy\n\nsyn keyword tmuxOptsSetw monitor-activity aggressive-resize force-width\nsyn keyword tmuxOptsSetw force-height remain-on-exit uft8 mode-fg mode-bg\nsyn keyword tmuxOptsSetw mode-keys clock-mode-colour clock-mode-style\nsyn keyword tmuxOptsSetw xterm-keys mode-attr window-status-attr\nsyn keyword tmuxOptsSetw window-status-bg window-status-fg automatic-rename\nsyn keyword tmuxOptsSetw main-pane-width main-pane-height monitor-content\nsyn keyword tmuxOptsSetw window-status-current-attr window-status-current-bg\nsyn keyword tmuxOptsSetw window-status-current-fg mode-mouse synchronize-panes\nsyn keyword tmuxOptsSetw window-status-format window-status-current-format\nsyn keyword tmuxOptsSetw word-separators window-status-alert-attr\nsyn keyword tmuxOptsSetw window-status-alert-bg window-status-alert-fg\n\nsyn keyword tmuxTodo FIXME NOTE TODO XXX contained\n\nsyn match tmuxKey\t\t/\\(C-\\|M-\\|\\^\\)\\+\\S\\+/\tdisplay\nsyn match tmuxNumber \t\t/\\d\\+/\t\t\tdisplay\nsyn match tmuxOptions\t\t/\\s-\\a\\+/\t\tdisplay\nsyn match tmuxVariable\t\t/\\w\\+=/\t\t\tdisplay\nsyn match tmuxVariableExpansion\t/\\${\\=\\w\\+}\\=/\t\tdisplay\n\nsyn region tmuxComment\tstart=/#/ end=/$/ contains=tmuxTodo display oneline\nsyn region tmuxString\tstart=/\"/ end=/\"/ display oneline\nsyn region tmuxString\tstart=/'/ end=/'/ display oneline\n\nhi def link tmuxAction\t\t\tBoolean\nhi def link tmuxBoolean\t\t\tBoolean\nhi def link tmuxCmds\t\t\tKeyword\nhi def link tmuxComment\t\t\tComment\nhi def link tmuxKey\t\t\tSpecial\nhi def link tmuxNumber\t\t\tNumber\nhi def link tmuxOptions\t\t\tIdentifier\nhi def link tmuxOptsSet\t\t\tFunction\nhi def link tmuxOptsSetw\t\tFunction\nhi def link tmuxString\t\t\tString\nhi def link tmuxTodo\t\t\tTodo\nhi def link tmuxVariable\t\tConstant\nhi def link tmuxVariableExpansion\tConstant\n\nlet b:current_syntax = \"tmux\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/tt2.vim",
    "content": "\" Language:      TT2 (Perl Template Toolkit)\n\" Maintainer:    vim-perl <vim-perl@googlegroups.com>\n\" Author:        Moriki, Atsushi <4woods+vim@gmail.com>\n\" Homepage:      http://github.com/vim-perl/vim-perl\n\" Bugs/requests: http://github.com/vim-perl/vim-perl/issues\n\" Last Change:   {{LAST_CHANGE}}\n\"\n\" Instration:\n\"   put tt2.vim and tt2html.vim in to your syntax diretory.\n\"\n\"   add below in your filetype.vim.\n\"       au BufNewFile,BufRead *.tt2 setf tt2\n\"           or\n\"       au BufNewFile,BufRead *.tt2\n\"           \\ if ( getline(1) . getline(2) . getline(3) =~ '<\\chtml' |\n\"           \\           && getline(1) . getline(2) . getline(3) !~ '<[%?]' ) |\n\"           \\   || getline(1) =~ '<!DOCTYPE HTML' |\n\"           \\   setf tt2html |\n\"           \\ else |\n\"           \\   setf tt2 |\n\"           \\ endif\n\"\n\"   define START_TAG, END_TAG\n\"       \"ASP\"\n\"       :let b:tt2_syn_tags = '<% %>'\n\"       \"PHP\"\n\"       :let b:tt2_syn_tags = '<? ?>'\n\"       \"TT2 and HTML\"\n\"       :let b:tt2_syn_tags = '\\[% %] <!-- -->'\n\"\n\" Changes:\n\"           0.1.3\n\"               Changed fileformat from 'dos' to 'unix'\n\"               Deleted 'echo' that print obstructive message\n\"           0.1.2\n\"               Added block comment syntax\n\"               e.g. [%# COMMENT\n\"                        COMMENT TOO %]\n\"                    [%# IT'S SAFE %]  HERE IS OUTSIDE OF TT2 DIRECTIVE\n\"                    [% # WRONG!! %]   HERE STILL BE COMMENT\n\"           0.1.1\n\"               Release\n\"           0.1.0\n\"               Internal\n\"\n\" License: follow Vim :help uganda\n\"\n\nif !exists(\"b:tt2_syn_tags\")\n    let b:tt2_syn_tags = '\\[% %]'\n    \"let b:tt2_syn_tags = '\\[% %] \\[\\* \\*]'\nendif\n\nif !exists(\"b:tt2_syn_inc_perl\")\n    let b:tt2_syn_inc_perl = 1\nendif\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nlet s:cpo_save = &cpo\nset cpo&vim\n\nsyn case match\n\nsyn cluster tt2_top_cluster contains=tt2_perlcode,tt2_tag_region\n\n\" TT2 TAG Region\nif exists(\"b:tt2_syn_tags\")\n\n    let s:str = b:tt2_syn_tags . ' '\n    let s:str = substitute(s:str,'^ \\+','','g')\n    let s:str = substitute(s:str,' \\+',' ','g')\n\n    while stridx(s:str,' ') > 0\n\n        let s:st = strpart(s:str,0,stridx(s:str,' '))\n        let s:str = substitute(s:str,'[^ ]* ','',\"\")\n\n        let s:ed = strpart(s:str,0,stridx(s:str,' '))\n        let s:str = substitute(s:str,'[^ ]* ','',\"\")\n\n        exec 'syn region  tt2_tag_region '.\n                    \\ 'matchgroup=tt2_tag '.\n                    \\ 'start=+\\(' . s:st .'\\)[-]\\=+ '.\n                    \\ 'end=+[-]\\=\\(' . s:ed . '\\)+ '.\n                    \\ 'contains=@tt2_statement_cluster keepend extend'\n\n        exec 'syn region  tt2_commentblock_region '.\n                    \\ 'matchgroup=tt2_tag '.\n                    \\ 'start=+\\(' . s:st .'\\)[-]\\=\\(#\\)\\@=+ '.\n                    \\ 'end=+[-]\\=\\(' . s:ed . '\\)+ '.\n                    \\ 'keepend extend'\n\n        \"Include Perl syntax when 'PERL' 'RAWPERL' block\n        if b:tt2_syn_inc_perl\n            syn include @Perl $VIMRUNTIME/syntax/perl.vim\n            exec 'syn region tt2_perlcode '.\n                        \\ 'start=+\\(\\(RAW\\)\\=PERL\\s*[-]\\=' . s:ed . '\\(\\n\\)\\=\\)\\@<=+ ' .\n                        \\ 'end=+' . s:st . '[-]\\=\\s*END+me=s-1 contains=@Perl keepend'\n        endif\n\n        \"echo 'TAGS ' . s:st . ' ' . s:ed\n        unlet s:st\n        unlet s:ed\n    endwhile\n\nelse\n\n    syn region  tt2_tag_region\n                \\ matchgroup=tt2_tag\n                \\ start=+\\(\\[%\\)[-]\\=+\n                \\ end=+[-]\\=%\\]+\n                \\ contains=@tt2_statement_cluster keepend extend\n\n    syn region  tt2_commentblock_region\n                \\ matchgroup=tt2_tag\n                \\ start=+\\(\\[%\\)[-]\\=#+\n                \\ end=+[-]\\=%\\]+\n                \\ keepend extend\n\n    \"Include Perl syntax when 'PERL' 'RAWPERL' block\n    if b:tt2_syn_inc_perl\n        syn include @Perl $VIMRUNTIME/syntax/perl.vim\n        syn region tt2_perlcode\n                    \\ start=+\\(\\(RAW\\)\\=PERL\\s*[-]\\=%]\\(\\n\\)\\=\\)\\@<=+\n                    \\ end=+\\[%[-]\\=\\s*END+me=s-1\n                    \\ contains=@Perl keepend\n    endif\nendif\n\n\" Directive\nsyn keyword tt2_directive contained\n            \\ GET CALL SET DEFAULT DEBUG\n            \\ LAST NEXT BREAK STOP BLOCK\n            \\ IF IN UNLESS ELSIF FOR FOREACH WHILE SWITCH CASE\n            \\ USE PLUGIN MACRO META\n            \\ TRY FINAL RETURN LAST\n            \\ CLEAR TO STEP AND OR NOT MOD DIV\n            \\ ELSE PERL RAWPERL END\nsyn match   tt2_directive +|+ contained\nsyn keyword tt2_directive contained nextgroup=tt2_string_q,tt2_string_qq,tt2_blockname skipwhite skipempty\n            \\ INSERT INCLUDE PROCESS WRAPPER FILTER\n            \\ THROW CATCH\nsyn keyword tt2_directive contained nextgroup=tt2_def_tag skipwhite skipempty\n            \\ TAGS\n\nsyn match   tt2_def_tag \"\\S\\+\\s\\+\\S\\+\\|\\<\\w\\+\\>\" contained\n\nsyn match   tt2_variable  +\\I\\w*+                           contained\nsyn match   tt2_operator  \"[+*/%:?-]\"                       contained\nsyn match   tt2_operator  \"\\<\\(mod\\|div\\|or\\|and\\|not\\)\\>\"  contained\nsyn match   tt2_operator  \"[!=<>]=\\=\\|&&\\|||\"               contained\nsyn match   tt2_operator  \"\\(\\s\\)\\@<=_\\(\\s\\)\\@=\"            contained\nsyn match   tt2_operator  \"=>\\|,\"                           contained\nsyn match   tt2_deref     \"\\([[:alnum:]_)\\]}]\\s*\\)\\@<=\\.\"   contained\nsyn match   tt2_comment   +#.*$+                            contained extend\nsyn match   tt2_func      +\\<\\I\\w*\\(\\s*(\\)\\@=+              contained nextgroup=tt2_bracket_r skipempty skipwhite\n\"\nsyn region  tt2_bracket_r  start=+(+ end=+)+                contained contains=@tt2_statement_cluster keepend extend\nsyn region  tt2_bracket_b start=+\\[+ end=+]+                contained contains=@tt2_statement_cluster keepend extend\nsyn region  tt2_bracket_b start=+{+  end=+}+                contained contains=@tt2_statement_cluster keepend extend\n\nsyn region  tt2_string_qq start=+\"+ end=+\"+ skip=+\\\\\"+      contained contains=tt2_ivariable keepend extend\nsyn region  tt2_string_q  start=+'+ end=+'+ skip=+\\\\'+      contained keepend extend\n\nsyn match   tt2_ivariable  +\\$\\I\\w*\\>\\(\\.\\I\\w*\\>\\)*+        contained\nsyn match   tt2_ivariable  +\\${\\I\\w*\\>\\(\\.\\I\\w*\\>\\)*}+      contained\n\nsyn match   tt2_number    \"\\d\\+\"        contained\nsyn match   tt2_number    \"\\d\\+\\.\\d\\+\"  contained\nsyn match   tt2_number    \"0x\\x\\+\"      contained\nsyn match   tt2_number    \"0\\o\\+\"       contained\n\nsyn match   tt2_blockname \"\\f\\+\"                       contained                        nextgroup=tt2_blockname_joint skipwhite skipempty\nsyn match   tt2_blockname \"$\\w\\+\"                      contained contains=tt2_ivariable nextgroup=tt2_blockname_joint skipwhite skipempty\nsyn region  tt2_blockname start=+\"+ end=+\"+ skip=+\\\\\"+ contained contains=tt2_ivariable nextgroup=tt2_blockname_joint keepend skipwhite skipempty\nsyn region  tt2_blockname start=+'+ end=+'+ skip=+\\\\'+ contained                        nextgroup=tt2_blockname_joint keepend skipwhite skipempty\nsyn match   tt2_blockname_joint \"+\"                    contained                        nextgroup=tt2_blockname skipwhite skipempty\n\nsyn cluster tt2_statement_cluster contains=tt2_directive,tt2_variable,tt2_operator,tt2_string_q,tt2_string_qq,tt2_deref,tt2_comment,tt2_func,tt2_bracket_b,tt2_bracket_r,tt2_number\n\n\" Synchronizing\nsyn sync minlines=50\n\nhi def link tt2_tag         Type\nhi def link tt2_tag_region  Type\nhi def link tt2_commentblock_region Comment\nhi def link tt2_directive   Statement\nhi def link tt2_variable    Identifier\nhi def link tt2_ivariable   Identifier\nhi def link tt2_operator    Statement\nhi def link tt2_string_qq   String\nhi def link tt2_string_q    String\nhi def link tt2_blockname   String\nhi def link tt2_comment     Comment\nhi def link tt2_func        Function\nhi def link tt2_number      Number\n\nif exists(\"b:tt2_syn_tags\")\n    unlet b:tt2_syn_tags\nendif\n\nlet b:current_syntax = \"tt2\"\n\nlet &cpo = s:cpo_save\nunlet s:cpo_save\n\n\" vim:ts=4:sw=4\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/tt2html.vim",
    "content": "\" Language:      TT2 embedded with HTML\n\" Maintainer:    vim-perl <vim-perl@googlegroups.com>\n\" Author:        Moriki, Atsushi <4woods+vim@gmail.com>\n\" Homepage:      http://github.com/vim-perl/vim-perl\n\" Bugs/requests: http://github.com/vim-perl/vim-perl/issues\n\" Last Change:   {{LAST_CHANGE}}\n\nif exists(\"b:current_syntax\")\n    finish\nendif\n\nruntime! syntax/html.vim\nunlet b:current_syntax\n\nruntime! syntax/tt2.vim\nunlet b:current_syntax\n\nsyn cluster htmlPreProc add=@tt2_top_cluster\n\nlet b:current_syntax = \"tt2html\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/tt2js.vim",
    "content": "\" Language:      TT2 embedded with Javascript\n\" Maintainer:    Andy Lester <andy@petdance.com>\n\" Author:        Yates, Peter <pd.yates@gmail.com>\n\" Homepage:      http://github.com/vim-perl/vim-perl\n\" Bugs/requests: http://github.com/vim-perl/vim-perl/issues\n\" Last Change:   {{LAST_CHANGE}}\n\nif exists(\"b:current_syntax\")\n    finish\nendif\n\nruntime! syntax/javascript.vim\nunlet b:current_syntax\n\nruntime! syntax/tt2.vim\nunlet b:current_syntax\n\nsyn cluster javascriptPreProc add=@tt2_top_cluster\n\nlet b:current_syntax = \"tt2js\"\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/twig.vim",
    "content": "\" Vim syntax file\n\" Language:\t    Twig template\n\" Maintainer:   Gabriel Gosselin <gabrielNOSPAM@evidens.ca>\n\" Last Change:\t2011 July 27\n\" Version:      1.0\n\"\n\" Based Jinja syntax by:\tArmin Ronacher <armin.ronacher@active-4.com>\n\" \n\" Known Bugs:\n\"   because of odd limitations dicts and the modulo operator\n\"   appear wrong in the template.\n\"\n\" Changes:\n\"\n\"     2008 May 9:     Added support for Jinja2 changes (new keyword rules)\n\"     2011 July 27:   Changed all references of jinja tp twig\n\nsyntax case match\n\n\" Jinja template built-in tags and parameters (without filter, macro, is and raw, they\n\" have special threatment)\nsyn keyword twigStatement containedin=twigVarBlock,twigTagBlock,twigNested contained and if else in not or recursive as import\n\nsyn keyword twigStatement containedin=twigVarBlock,twigTagBlock,twigNested contained is filter skipwhite nextgroup=twigFilter\nsyn keyword twigStatement containedin=twigTagBlock contained macro skipwhite nextgroup=twigFunction\nsyn keyword twigStatement containedin=twigTagBlock contained block skipwhite nextgroup=twigBlockName\n\n\" Variable Names\nsyn match twigVariable containedin=twigVarBlock,twigTagBlock,twigNested contained skipwhite /[a-zA-Z_][a-zA-Z0-9_]*/\nsyn keyword twigSpecial containedin=twigVarBlock,twigTagBlock,twigNested contained false true none loop super caller varargs kwargs\n\n\" Filters\nsyn match twigOperator \"|\" containedin=twigVarBlock,twigTagBlock,twigNested contained nextgroup=twigFilter\nsyn match twigFilter contained skipwhite /[a-zA-Z_][a-zA-Z0-9_]*/\nsyn match twigFunction contained skipwhite /[a-zA-Z_][a-zA-Z0-9_]*/\nsyn match twigBlockName contained skipwhite /[a-zA-Z_][a-zA-Z0-9_]*/\n\n\" Jinja template constants\nsyn region twigString containedin=twigVarBlock,twigTagBlock,twigNested contained start=/\"/ skip=/\\\\\"/ end=/\"/\nsyn region twigString containedin=twigVarBlock,twigTagBlock,twigNested contained start=/'/ skip=/\\\\'/ end=/'/\nsyn match twigNumber containedin=twigVarBlock,twigTagBlock,twigNested contained /[0-9]\\+\\(\\.[0-9]\\+\\)\\?/\n\n\" Operators\nsyn match twigOperator containedin=twigVarBlock,twigTagBlock,twigNested contained /[+\\-*\\/<>=!,:]/\nsyn match twigPunctuation containedin=twigVarBlock,twigTagBlock,twigNested contained /[()\\[\\]]/\nsyn match twigOperator containedin=twigVarBlock,twigTagBlock,twigNested contained /\\./ nextgroup=twigAttribute\nsyn match twigAttribute contained /[a-zA-Z_][a-zA-Z0-9_]*/\n\n\" Jinja template tag and variable blocks\nsyn region twigNested matchgroup=twigOperator start=\"(\" end=\")\" transparent display containedin=twigVarBlock,twigTagBlock,twigNested contained\nsyn region twigNested matchgroup=twigOperator start=\"\\[\" end=\"\\]\" transparent display containedin=twigVarBlock,twigTagBlock,twigNested contained\nsyn region twigNested matchgroup=twigOperator start=\"{\" end=\"}\" transparent display containedin=twigVarBlock,twigTagBlock,twigNested contained\nsyn region twigTagBlock matchgroup=twigTagDelim start=/{%-\\?/ end=/-\\?%}/ skipwhite containedin=ALLBUT,twigTagBlock,twigVarBlock,twigRaw,twigString,twigNested,twigComment\n\nsyn region twigVarBlock matchgroup=twigVarDelim start=/{{-\\?/ end=/-\\?}}/ containedin=ALLBUT,twigTagBlock,twigVarBlock,twigRaw,twigString,twigNested,twigComment\n\n\" Jinja template 'raw' tag\nsyn region twigRaw matchgroup=twigRawDelim start=\"{%\\s*raw\\s*%}\" end=\"{%\\s*endraw\\s*%}\" containedin=ALLBUT,twigTagBlock,twigVarBlock,twigString,twigComment\n\n\" Jinja comments\nsyn region twigComment matchgroup=twigCommentDelim start=\"{#\" end=\"#}\" containedin=ALLBUT,twigTagBlock,twigVarBlock,twigString\n\n\" Block start keywords.  A bit tricker.  We only highlight at the start of a\n\" tag block and only if the name is not followed by a comma or equals sign\n\" which usually means that we have to deal with an assignment.\nsyn match twigStatement containedin=twigTagBlock contained skipwhite /\\({%-\\?\\s*\\)\\@<=\\<[a-zA-Z_][a-zA-Z0-9_]*\\>\\(\\s*[,=]\\)\\@!/\n\n\" and context modifiers\nsyn match twigStatement containedin=twigTagBlock contained /\\<with\\(out\\)\\?\\s\\+context\\>/ skipwhite\n\n\n\" Define the default highlighting.\n\" For version 5.7 and earlier: only when not done already\n\" For version 5.8 and later: only when an item doesn't have highlighting yet\nif version >= 508 || !exists(\"did_twig_syn_inits\")\n  if version < 508\n    let did_twig_syn_inits = 1\n    command -nargs=+ HiLink hi link <args>\n  else\n    command -nargs=+ HiLink hi def link <args>\n  endif\n\n  HiLink twigPunctuation twigOperator\n  HiLink twigAttribute twigVariable\n  HiLink twigFunction twigFilter\n\n  HiLink twigTagDelim twigTagBlock\n  HiLink twigVarDelim twigVarBlock\n  HiLink twigCommentDelim twigComment\n  HiLink twigRawDelim twig\n\n  HiLink twigSpecial Special\n  HiLink twigOperator Normal\n  HiLink twigRaw Normal\n  HiLink twigTagBlock PreProc\n  HiLink twigVarBlock PreProc\n  HiLink twigStatement Statement\n  HiLink twigFilter Function\n  HiLink twigBlockName Function\n  HiLink twigVariable Identifier\n  HiLink twigString Constant\n  HiLink twigNumber Constant\n  HiLink twigComment Comment\n\n  delcommand HiLink\nendif\n\nlet b:current_syntax = \"twig\"\n\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/typescript.vim",
    "content": "\" Vim syntax file\n\" Language: TypeScript\n\" Author: MicroSoft Open Technologies Inc.\n\" Version: 0.1\n\" Credits: Zhao Yi, Claudio Fleiner, Scott Shattuck, Jose Elera Campana\n\nif !exists(\"main_syntax\")\n  if version < 600\n    syntax clear\n  elseif exists(\"b:current_syntax\")\n    finish\n  endif\n  let main_syntax = \"typescript\"\nendif\n\n\" Drop fold if it set but vim doesn't support it.\nif version < 600 && exists(\"typeScript_fold\")\n  unlet typeScript_fold\nendif\n\n\"\" dollar sign is permitted anywhere in an identifier\nsetlocal iskeyword+=$\n\nsyntax sync fromstart\n\n\"\" syntax coloring for Node.js shebang line\nsyn match shebang \"^#!.*/bin/env\\s\\+node\\>\"\nhi link shebang Comment\n\n\"\" typeScript comments\"{{{\nsyn keyword typeScriptCommentTodo TODO FIXME XXX TBD contained\nsyn match typeScriptLineComment \"\\/\\/.*\" contains=@Spell,typeScriptCommentTodo,typeScriptRef\nsyn match typeScriptRef /\\/\\/\\/\\s*<reference\\s\\+.*\\/>$/ contains=typeScriptRefD,typeScriptRefS\nsyn region typeScriptRefD start=+\"+ skip=+\\\\\\\\\\|\\\\\"+ end=+\"\\|$+\nsyn region typeScriptRefS start=+'+ skip=+\\\\\\\\\\|\\\\'+ end=+'\\|$+\n\nsyn match typeScriptCommentSkip \"^[ \\t]*\\*\\($\\|[ \\t]\\+\\)\"\nsyn region typeScriptComment start=\"/\\*\" end=\"\\*/\" contains=@Spell,typeScriptCommentTodo\n\"}}}\n\"\" JSDoc support start\"{{{\nif !exists(\"typeScript_ignore_typeScriptdoc\")\n  syntax case ignore\n\n\" syntax coloring for JSDoc comments (HTML)\n\"unlet b:current_syntax\n\n  syntax region typeScriptDocComment matchgroup=typeScriptComment start=\"/\\*\\*\\s*$\" end=\"\\*/\" contains=typeScriptDocTags,typeScriptCommentTodo,typeScriptCvsTag,@typeScriptHtml,@Spell fold\n  syntax match typeScriptDocTags contained \"@\\(param\\|argument\\|requires\\|exception\\|throws\\|type\\|class\\|extends\\|see\\|link\\|member\\|module\\|method\\|title\\|namespace\\|optional\\|default\\|base\\|file\\)\\>\" nextgroup=typeScriptDocParam,typeScriptDocSeeTag skipwhite\n  syntax match typeScriptDocTags contained \"@\\(beta\\|deprecated\\|description\\|fileoverview\\|author\\|license\\|version\\|returns\\=\\|constructor\\|private\\|protected\\|final\\|ignore\\|addon\\|exec\\)\\>\"\n  syntax match typeScriptDocParam contained \"\\%(#\\|\\w\\|\\.\\|:\\|\\/\\)\\+\"\n  syntax region typeScriptDocSeeTag contained matchgroup=typeScriptDocSeeTag start=\"{\" end=\"}\" contains=typeScriptDocTags\n\n  syntax case match\nendif \"\" JSDoc end\n\"}}}\nsyntax case match\n\n\"\" Syntax in the typeScript code\"{{{\nsyn match typeScriptSpecial \"\\\\\\d\\d\\d\\|\\\\.\"\nsyn region typeScriptStringD start=+\"+ skip=+\\\\\\\\\\|\\\\\"+ end=+\"\\|$+\tcontains=typeScriptSpecial,@htmlPreproc\nsyn region typeScriptStringS start=+'+ skip=+\\\\\\\\\\|\\\\'+ end=+'\\|$+\tcontains=typeScriptSpecial,@htmlPreproc\n\nsyn match typeScriptSpecialCharacter \"'\\\\.'\"\nsyn match typeScriptNumber \"-\\=\\<\\d\\+L\\=\\>\\|0[xX][0-9a-fA-F]\\+\\>\"\nsyn region typeScriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\\\\\\|\\\\/+ end=+/[gi]\\{0,2\\}\\s*$+ end=+/[gi]\\{0,2\\}\\s*[;.,)\\]}]+me=e-1 contains=@htmlPreproc oneline\n\" syntax match typeScriptSpecial \"\\\\\\d\\d\\d\\|\\\\x\\x\\{2\\}\\|\\\\u\\x\\{4\\}\\|\\\\.\"\n\" syntax region typeScriptStringD start=+\"+ skip=+\\\\\\\\\\|\\\\$\"+ end=+\"+ contains=typeScriptSpecial,@htmlPreproc\n\" syntax region typeScriptStringS start=+'+ skip=+\\\\\\\\\\|\\\\$'+ end=+'+ contains=typeScriptSpecial,@htmlPreproc\n\" syntax region typeScriptRegexpString start=+/\\(\\*\\|/\\)\\@!+ skip=+\\\\\\\\\\|\\\\/+ end=+/[gim]\\{,3}+ contains=typeScriptSpecial,@htmlPreproc oneline\n\" syntax match typeScriptNumber /\\<-\\=\\d\\+L\\=\\>\\|\\<0[xX]\\x\\+\\>/\nsyntax match typeScriptFloat /\\<-\\=\\%(\\d\\+\\.\\d\\+\\|\\d\\+\\.\\|\\.\\d\\+\\)\\%([eE][+-]\\=\\d\\+\\)\\=\\>/\n\" syntax match typeScriptLabel /\\(?\\s*\\)\\@<!\\<\\w\\+\\(\\s*:\\)\\@=/\n\"}}}\n\"\" typeScript Prototype\"{{{\nsyntax keyword typeScriptPrototype prototype\n\"}}}\n\" DOM, Browser and Ajax Support {{{\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\nsyntax keyword typeScriptBrowserObjects window navigator screen history location\n\nsyntax keyword typeScriptDOMObjects document event HTMLElement Anchor Area Base Body Button Form Frame Frameset Image Link Meta Option Select Style Table TableCell TableRow Textarea\nsyntax keyword typeScriptDOMMethods createTextNode createElement insertBefore replaceChild removeChild appendChild hasChildNodes cloneNode normalize isSupported hasAttributes getAttribute setAttribute removeAttribute getAttributeNode setAttributeNode removeAttributeNode getElementsByTagName hasAttribute getElementById adoptNode close compareDocumentPosition createAttribute createCDATASection createComment createDocumentFragment createElementNS createEvent createExpression createNSResolver createProcessingInstruction createRange createTreeWalker elementFromPoint evaluate getBoxObjectFor getElementsByClassName getSelection getUserData hasFocus importNode\nsyntax keyword typeScriptDOMProperties nodeName nodeValue nodeType parentNode childNodes firstChild lastChild previousSibling nextSibling attributes ownerDocument namespaceURI prefix localName tagName\n\nsyntax keyword typeScriptAjaxObjects XMLHttpRequest\nsyntax keyword typeScriptAjaxProperties readyState responseText responseXML statusText\nsyntax keyword typeScriptAjaxMethods onreadystatechange abort getAllResponseHeaders getResponseHeader open send setRequestHeader\n\nsyntax keyword typeScriptPropietaryObjects ActiveXObject\nsyntax keyword typeScriptPropietaryMethods attachEvent detachEvent cancelBubble returnValue\n\nsyntax keyword typeScriptHtmlElemProperties className clientHeight clientLeft clientTop clientWidth dir href id innerHTML lang length offsetHeight offsetLeft offsetParent offsetTop offsetWidth scrollHeight scrollLeft scrollTop scrollWidth style tabIndex target title\n\nsyntax keyword typeScriptEventListenerKeywords blur click focus mouseover mouseout load item\n\nsyntax keyword typeScriptEventListenerMethods scrollIntoView addEventListener dispatchEvent removeEventListener preventDefault stopPropagation\n\" }}}\n\"\" Programm Keywords\"{{{\nsyntax keyword typeScriptSource import export\nsyntax keyword typeScriptIdentifier arguments this let var void yield\nsyntax keyword typeScriptOperator delete new instanceof typeof\nsyntax keyword typeScriptBoolean true false\nsyntax keyword typeScriptNull null undefined\nsyntax keyword typeScriptMessage alert confirm prompt status\nsyntax keyword typeScriptGlobal self top parent\nsyntax keyword typeScriptDeprecated escape unescape all applets alinkColor bgColor fgColor linkColor vlinkColor xmlEncoding\n\"}}}\n\"\" Statement Keywords\"{{{\nsyntax keyword typeScriptConditional if else switch\nsyntax keyword typeScriptRepeat do while for in\nsyntax keyword typeScriptBranch break continue\nsyntax keyword typeScriptLabel case default\nsyntax keyword typeScriptStatement return with\n\nsyntax keyword typeScriptGlobalObjects Array Boolean Date Function Infinity Math Number NaN Object Packages RegExp String netscape\n\nsyntax keyword typeScriptExceptions try catch throw finally Error EvalError RangeError ReferenceError SyntaxError TypeError URIError\n\nsyntax keyword typeScriptReserved constructor declare as interface module abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public\n\"}}}\n\"\" TypeScript/DOM/HTML/CSS specified things\"{{{\n\n\" TypeScript Objects\"{{{\n  syn match typeScriptFunction \"(super\\s*|constructor\\s*)\" contained nextgroup=typeScriptVars\n  syn region typeScriptVars start=\"(\" end=\")\" contained contains=typeScriptParameters transparent keepend\n  syn match typeScriptParameters \"([a-zA-Z0-9_?.$][\\w?.$]*)\\s*:\\s*([a-zA-Z0-9_?.$][\\w?.$]*)\" contained skipwhite\n\"}}}\n\" DOM2 Objects\"{{{\n  syntax keyword typeScriptType DOMImplementation DocumentFragment Node NodeList NamedNodeMap CharacterData Attr Element Text Comment CDATASection DocumentType Notation Entity EntityReference ProcessingInstruction void any string bool number\n  syntax keyword typeScriptExceptions DOMException\n\"}}}\n\" DOM2 CONSTANT\"{{{\n  syntax keyword typeScriptDomErrNo INDEX_SIZE_ERR DOMSTRING_SIZE_ERR HIERARCHY_REQUEST_ERR WRONG_DOCUMENT_ERR INVALID_CHARACTER_ERR NO_DATA_ALLOWED_ERR NO_MODIFICATION_ALLOWED_ERR NOT_FOUND_ERR NOT_SUPPORTED_ERR INUSE_ATTRIBUTE_ERR INVALID_STATE_ERR SYNTAX_ERR INVALID_MODIFICATION_ERR NAMESPACE_ERR INVALID_ACCESS_ERR\n  syntax keyword typeScriptDomNodeConsts ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE CDATA_SECTION_NODE ENTITY_REFERENCE_NODE ENTITY_NODE PROCESSING_INSTRUCTION_NODE COMMENT_NODE DOCUMENT_NODE DOCUMENT_TYPE_NODE DOCUMENT_FRAGMENT_NODE NOTATION_NODE\n\"}}}\n\" HTML events and internal variables\"{{{\n  syntax case ignore\n  syntax keyword typeScriptHtmlEvents onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize onload onsubmit\n  syntax case match\n\"}}}\n\n\" Follow stuff should be highligh within a special context\n\" While it can't be handled with context depended with Regex based highlight\n\" So, turn it off by default\nif exists(\"typeScript_enable_domhtmlcss\")\n\n\" DOM2 things\"{{{\n    syntax match typeScriptDomElemAttrs contained /\\%(nodeName\\|nodeValue\\|nodeType\\|parentNode\\|childNodes\\|firstChild\\|lastChild\\|previousSibling\\|nextSibling\\|attributes\\|ownerDocument\\|namespaceURI\\|prefix\\|localName\\|tagName\\)\\>/\n    syntax match typeScriptDomElemFuncs contained /\\%(insertBefore\\|replaceChild\\|removeChild\\|appendChild\\|hasChildNodes\\|cloneNode\\|normalize\\|isSupported\\|hasAttributes\\|getAttribute\\|setAttribute\\|removeAttribute\\|getAttributeNode\\|setAttributeNode\\|removeAttributeNode\\|getElementsByTagName\\|getAttributeNS\\|setAttributeNS\\|removeAttributeNS\\|getAttributeNodeNS\\|setAttributeNodeNS\\|getElementsByTagNameNS\\|hasAttribute\\|hasAttributeNS\\)\\>/ nextgroup=typeScriptParen skipwhite\n\"}}}\n\" HTML things\"{{{\n    syntax match typeScriptHtmlElemAttrs contained /\\%(className\\|clientHeight\\|clientLeft\\|clientTop\\|clientWidth\\|dir\\|id\\|innerHTML\\|lang\\|length\\|offsetHeight\\|offsetLeft\\|offsetParent\\|offsetTop\\|offsetWidth\\|scrollHeight\\|scrollLeft\\|scrollTop\\|scrollWidth\\|style\\|tabIndex\\|title\\)\\>/\n    syntax match typeScriptHtmlElemFuncs contained /\\%(blur\\|click\\|focus\\|scrollIntoView\\|addEventListener\\|dispatchEvent\\|removeEventListener\\|item\\)\\>/ nextgroup=typeScriptParen skipwhite\n\"}}}\n\" CSS Styles in typeScript\"{{{\n    syntax keyword typeScriptCssStyles contained color font fontFamily fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontWeight letterSpacing lineBreak lineHeight quotes rubyAlign rubyOverhang rubyPosition\n    syntax keyword typeScriptCssStyles contained textAlign textAlignLast textAutospace textDecoration textIndent textJustify textJustifyTrim textKashidaSpace textOverflowW6 textShadow textTransform textUnderlinePosition\n    syntax keyword typeScriptCssStyles contained unicodeBidi whiteSpace wordBreak wordSpacing wordWrap writingMode\n    syntax keyword typeScriptCssStyles contained bottom height left position right top width zIndex\n    syntax keyword typeScriptCssStyles contained border borderBottom borderLeft borderRight borderTop borderBottomColor borderLeftColor borderTopColor borderBottomStyle borderLeftStyle borderRightStyle borderTopStyle borderBottomWidth borderLeftWidth borderRightWidth borderTopWidth borderColor borderStyle borderWidth borderCollapse borderSpacing captionSide emptyCells tableLayout\n    syntax keyword typeScriptCssStyles contained margin marginBottom marginLeft marginRight marginTop outline outlineColor outlineStyle outlineWidth padding paddingBottom paddingLeft paddingRight paddingTop\n    syntax keyword typeScriptCssStyles contained listStyle listStyleImage listStylePosition listStyleType\n    syntax keyword typeScriptCssStyles contained background backgroundAttachment backgroundColor backgroundImage gackgroundPosition backgroundPositionX backgroundPositionY backgroundRepeat\n    syntax keyword typeScriptCssStyles contained clear clip clipBottom clipLeft clipRight clipTop content counterIncrement counterReset cssFloat cursor direction display filter layoutGrid layoutGridChar layoutGridLine layoutGridMode layoutGridType\n    syntax keyword typeScriptCssStyles contained marks maxHeight maxWidth minHeight minWidth opacity MozOpacity overflow overflowX overflowY verticalAlign visibility zoom cssText\n    syntax keyword typeScriptCssStyles contained scrollbar3dLightColor scrollbarArrowColor scrollbarBaseColor scrollbarDarkShadowColor scrollbarFaceColor scrollbarHighlightColor scrollbarShadowColor scrollbarTrackColor\n\"}}}\n\" Highlight ways\"{{{\n    syntax match typeScriptDotNotation \"\\.\" nextgroup=typeScriptPrototype,typeScriptDomElemAttrs,typeScriptDomElemFuncs,typeScriptHtmlElemAttrs,typeScriptHtmlElemFuncs\n    syntax match typeScriptDotNotation \"\\.style\\.\" nextgroup=typeScriptCssStyles\n\"}}}\nendif \"DOM/HTML/CSS\n\n\"\" end DOM/HTML/CSS specified things\"\"}}}\n\n\n\"\" Code blocks\nsyntax cluster typeScriptAll contains=typeScriptComment,typeScriptLineComment,typeScriptDocComment,typeScriptStringD,typeScriptStringS,typeScriptRegexpString,typeScriptNumber,typeScriptFloat,typeScriptLabel,typeScriptSource,typeScriptType,typeScriptOperator,typeScriptBoolean,typeScriptNull,typeScriptFuncKeyword,typeScriptConditional,typeScriptGlobal,typeScriptRepeat,typeScriptBranch,typeScriptStatement,typeScriptGlobalObjects,typeScriptMessage,typeScriptIdentifier,typeScriptExceptions,typeScriptReserved,typeScriptDeprecated,typeScriptDomErrNo,typeScriptDomNodeConsts,typeScriptHtmlEvents,typeScriptDotNotation,typeScriptBrowserObjects,typeScriptDOMObjects,typeScriptAjaxObjects,typeScriptPropietaryObjects,typeScriptDOMMethods,typeScriptHtmlElemProperties,typeScriptDOMProperties,typeScriptEventListenerKeywords,typeScriptEventListenerMethods,typeScriptAjaxProperties,typeScriptAjaxMethods,typeScriptFuncArg\n\nif main_syntax == \"typeScript\"\n  syntax sync clear\n  syntax sync ccomment typeScriptComment minlines=200\n\" syntax sync match typeScriptHighlight grouphere typeScriptBlock /{/\nendif\n\nsyntax keyword typeScriptFuncKeyword function contained\nsyntax region typeScriptFuncDef start=\"function\" end=\"\\([^)]*\\)\" contains=typeScriptFuncKeyword,typeScriptFuncArg keepend\nsyntax match typeScriptFuncArg \"\\(([^()]*)\\)\" contains=typeScriptParens,typeScriptFuncComma contained\nsyntax match typeScriptFuncComma /,/ contained\n\" syntax region typeScriptFuncBlock contained matchgroup=typeScriptFuncBlock start=\"{\" end=\"}\" contains=@typeScriptAll,typeScriptParensErrA,typeScriptParensErrB,typeScriptParen,typeScriptBracket,typeScriptBlock fold\n\nsyn match\ttypeScriptBraces \"[{}\\[\\]]\"\nsyn match\ttypeScriptParens \"[()]\"\nsyn match\ttypeScriptOpSymbols \"=\\{1,3}\\|!==\\|!=\\|<\\|>\\|>=\\|<=\\|++\\|+=\\|--\\|-=\"\nsyn match typeScriptEndColons \"[;,]\"\nsyn match typeScriptLogicSymbols \"\\(&&\\)\\|\\(||\\)\"\n\n\" typeScriptFold Function {{{\n\nfunction! TypeScriptFold()\nsetl foldlevelstart=1\nsyn region foldBraces start=/{/ end=/}/ transparent fold keepend extend\n\nsetl foldtext=FoldText()\nendfunction\n\nau FileType typeScript call TypeScriptFold()\n\n\" }}}\n\n\" Define the default highlighting.\n\" For version 5.7 and earlier: only when not done already\n\" For version 5.8 and later: only when an item doesn't have highlighting yet\nif version >= 508 || !exists(\"did_typeScript_syn_inits\")\n  if version < 508\n    let did_typeScript_syn_inits = 1\n    command -nargs=+ HiLink hi link <args>\n  else\n    command -nargs=+ HiLink hi def link <args>\n  endif\n\n  \"Typescript highlighting\n  HiLink typeScriptParameters Operator\n  HiLink typescriptSuperBlock Operator\n\n  HiLink typeScriptEndColons Exception\n  HiLink typeScriptOpSymbols Operator\n  HiLink typeScriptLogicSymbols Boolean\n  HiLink typeScriptBraces Function\n  HiLink typeScriptParens Operator\n  HiLink typeScriptComment Comment\n  HiLink typeScriptLineComment Comment\n  HiLink typeScriptRef Include\n  HiLink typeScriptRefS String\n  HiLink typeScriptRefD String\n  HiLink typeScriptDocComment Comment\n  HiLink typeScriptCommentTodo Todo\n  HiLink typeScriptCvsTag Function\n  HiLink typeScriptDocTags Special\n  HiLink typeScriptDocSeeTag Function\n  HiLink typeScriptDocParam Function\n  HiLink typeScriptStringS String\n  HiLink typeScriptStringD String\n  HiLink typeScriptRegexpString String\n  HiLink typeScriptGlobal Constant\n  HiLink typeScriptCharacter Character\n  HiLink typeScriptPrototype Type\n  HiLink typeScriptConditional Conditional\n  HiLink typeScriptBranch Conditional\n  HiLink typeScriptIdentifier Identifier\n  HiLink typeScriptRepeat Repeat\n  HiLink typeScriptStatement Statement\n  HiLink typeScriptFuncKeyword Function\n  HiLink typeScriptMessage Keyword\n  HiLink typeScriptDeprecated Exception\n  HiLink typeScriptError Error\n  HiLink typeScriptParensError Error\n  HiLink typeScriptParensErrA Error\n  HiLink typeScriptParensErrB Error\n  HiLink typeScriptParensErrC Error\n  HiLink typeScriptReserved Keyword\n  HiLink typeScriptOperator Operator\n  HiLink typeScriptType Type\n  HiLink typeScriptNull Type\n  HiLink typeScriptNumber Number\n  HiLink typeScriptFloat Number\n  HiLink typeScriptBoolean Boolean\n  HiLink typeScriptLabel Label\n  HiLink typeScriptSpecial Special\n  HiLink typeScriptSource Special\n  HiLink typeScriptGlobalObjects Special\n  HiLink typeScriptExceptions Special\n\n  HiLink typeScriptDomErrNo Constant\n  HiLink typeScriptDomNodeConsts Constant\n  HiLink typeScriptDomElemAttrs Label\n  HiLink typeScriptDomElemFuncs PreProc\n\n  HiLink typeScriptHtmlElemAttrs Label\n  HiLink typeScriptHtmlElemFuncs PreProc\n\n  HiLink typeScriptCssStyles Label\n\" Ajax Highlighting\nHiLink typeScriptBrowserObjects Constant\n\nHiLink typeScriptDOMObjects Constant\nHiLink typeScriptDOMMethods Exception\nHiLink typeScriptDOMProperties Type\n\nHiLink typeScriptAjaxObjects htmlH1\nHiLink typeScriptAjaxMethods Exception\nHiLink typeScriptAjaxProperties Type\n\nHiLink typeScriptFuncDef Title\n    HiLink typeScriptFuncArg Special\n    HiLink typeScriptFuncComma Operator\n\nHiLink typeScriptHtmlEvents Special\nHiLink typeScriptHtmlElemProperties Type\n\nHiLink typeScriptEventListenerKeywords Keyword\n\nHiLink typeScriptNumber Number\nHiLink typeScriptPropietaryObjects Constant\n\n  delcommand HiLink\nendif\n\n\" Define the htmltypeScript for HTML syntax html.vim\n\"syntax clear htmltypeScript\n\"syntax clear typeScriptExpression\nsyntax cluster htmltypeScript contains=@typeScriptAll,typeScriptBracket,typeScriptParen,typeScriptBlock,typeScriptParenError\nsyntax cluster typeScriptExpression contains=@typeScriptAll,typeScriptBracket,typeScriptParen,typeScriptBlock,typeScriptParenError,@htmlPreproc\n\nlet b:current_syntax = \"typeScript\"\nif main_syntax == 'typeScript'\n  unlet main_syntax\nendif\n\n\" vim: ts=4\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/vbnet.vim",
    "content": "\" Vim syntax file\n\" Language:     VB.NET\n\" Maintainer:   Tim Pope <vim@rebelongto.us>\n\" Last Change:  2006 Apr 28\n\" Filenames:    *.vb\n\" $Id: vbnet.vim,v 1.7 2006/04/28 06:00:29 tpope Exp $\n\n\" For version 5.x: Clear all syntax items\n\" For version 6.x: Quit when a syntax file was already loaded\nif version < 600\n    syntax clear\nelseif exists(\"b:current_syntax\")\n    finish\nendif\n\n\" 2. Lexical Grammar\nsyn case ignore\nsyn sync linebreaks=2\n\" 2.1.4 Comments\nsyn keyword vbTodo contained    TODO FIXME XXX NOTE\nsyn region  vbnetComment start=\"\\<REM\\>\" end=\"$\" contains=vbnetTodo\nsyn region  vbnetComment start=\"'\" end=\"$\" contains=vbnetTodo\nsyn cluster vbnetComments contains=vbnetComment,vbnetXmlComment\n\" 2.3 Keywords\nsyn keyword vbnetKeywordError   EndIf GoSub Let Variant Wend\n\" Every possible keyword (Version 8).  Used for certain errors below\nsyn keyword vbnetKeywordError   AddHandler AddressOf Alias And AndAlso As Boolean ByRef Byte ByVal Call Case Catch CBool CByte CChar CDate CDec CDbl Char CInt Class CLng CObj Const Continue CSByte CShort CSng CStr CType CUInt CULng CUShort Date Decimal Declare Default Delegate Dim DirectCast Do Double Each Else ElseIf End EndIf Enum Erase Error Event Exit False Finally For Friend Function Get GetType Global GoSub GoTo Handles If Implements Imports In Inherits Integer Interface Is IsNot Let Lib Like Long Loop Me Mod Module MustInherit MustOverride MyBase MyClass Namespace Narrowing New Next Not Nothing NotInheritable NotOverridable Object Of On Operator Option Optional Or OrElse Overloads Overridable Overrides ParamArray Partial Private Property Protected Public RaiseEvent ReadOnly ReDim RemoveHandler Resume Return SByte Select Set Shadows Shared Short Single Static Step Stop String Structure Sub SyncLock Then Throw To True Try TryCast TypeOf Variant Wend UInteger ULong UShort Using When While Widening With WithEvents WriteOnly contained\nsyn match   vbnetIdentifier     \"\\[\\h\\w*\\]\"\nsyn cluster vbnetStrict         contains=vbnetIdentifier,vbnetKeywordError\n\" 2.4 Literals\nsyn keyword vbnetBoolean        False True\nsyn match   vbnetNumber         \"[+-]\\=\\(&O[0-7]*\\|&H\\x\\+\\|\\<\\d\\+\\)[SIL]\\=\\>\"\nsyn match   vbnetNumber         \"[+-]\\=\\(\\<\\d\\+\\.\\d*\\|\\.\\d\\+\\)\\([eE][-+]\\=\\d\\+\\)\\=[FRD]\\=\\>\"\nsyn match   vbnetNumber         \"[+-]\\=\\<\\d\\+[eE][-+]\\=\\d\\+[FRD]\\=\\>\"\nsyn match   vbnetNumber         \"[+-]\\=\\<\\d\\+\\([eE][-+]\\=\\d\\+\\)\\=[FRD]\\>\"\nsyn region  vbnetString         start=+\"+ end=+\"+ end=+$+ skip=+\"\"+\nsyn match   vbnetCharacter      +\"\\([^\"]\\|\"\"\\)\"c+\n\" 2.4.6 Date literals\nsyn match   vbnetDate           \"1\\=\\d\\([-/]\\)[123]\\=\\d\\1\\d\\{3,4\\}\" contained\n\" For simplicity, require at least an hour and a minute in a time, and require\n\" minutes and seconds to be two digits\nsyn match   vbnetDate           \"\\<[12]\\=\\d:\\d\\d\\(:\\d\\d\\)\\=\\s*\\([AP]M\\)\\=\\>\" contained\nsyn match   vbnetDate           \"\\<_$\" contained\n\" Avoid matching #directives\nsyn region  vbnetDateGroup      matchgroup=vbnetDate start=\"\\(\\S\\s*\\)\\@<=#\" skip=\"\\<_$\" end=\"\\(\\S\\s*\\)\\@<=#\" end=\"$\" contains=vbnetDate,@vbnetStrict\nsyn keyword vbnetConstant       Nothing\nsyn cluster vbnetLiterals       contains=vbnetBoolean,vbnetNumber,vbnetString,vbnetCharacter,vbnetDateGroup,vbnetConstant\n\n\" 3. Preprocessing Directives\nsyn region  vbnetPreCondit\n            \\ start=\"^\\s*#\\s*\\(If\\|ElseIf\\|Else\\|End\\s\\+If\\)\\>\" skip=\"\\<_$\"\n            \\ end=\"$\" contains=@vbnetComments keepend\n\"syn match      vbnetPreCondit \"\\(\\s*#\\s*\\(Else\\)\\=If\\>.*\\)\\@<=\\<Then\\>\"\nsyn region  vbnetDefine     start=\"^\\s*#\\s*Const\\>\" skip=\"\\<_$\" end=\"$\"\n            \\ contains=@vbnetComments keepend\nsyn region  vbnetInclude\n            \\ start=\"^\\s*#\\s*\\(ExternalSource\\|End\\s\\+ExternalSource\\)\\>\"\n            \\ skip=\"\\<_$\" end=\"$\" contains=@vbnetComments keepend\nsyn region  vbnetRegion matchgroup=vbnetPreProc start=\"^\\s*#\\s*Region\\>\" end=\"^\\s*#\\s*End\\s\\+Region\\>\" fold contains=TOP\nsyn cluster vbnetPreProc contains=vbnetPreCondit,vbnetDefine,vbnetInclude,vbnetRegion\n\n\" 4. General Concepts\nsyn keyword vbnetTypeAccess     Public Private Protected Friend contained\nsyn match   vbnetAccessModifier \"\\<\\(Friend\\|Private\\|Protected\\|Protected\\s\\+\\Friend\\|Public\\)\\>\"\n\" This is from section 9 but must be here to lower the priority\nsyn match   vbnetModifier       \"\\<\\(Shared\\|Static\\|ReadOnly\\|WithEvents\\|Shadows\\)\\>\"\n\n\" 5. Attributes\n\"syn match   vbnetAttribute \"<\\(\\s_\\n\\|[^<=>]\\)\\{-1,}>\"\nsyn match   vbnetAttribute \"<\\s*\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\%(\\s*([^()]*)\\)\\=\\(\\s*,\\s*\\%(_\\n\\s*\\)\\=\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\%(\\s*([^()]*)\\)\\=\\)\\{-}\\s*>\"\n\n\" 6. Source Files and Namespaces\nsyn keyword vbnetImports        Imports\nsyn match   vbnetOption         \"^\\s*Option\\s\\+\\(\\(Explicit\\|Strict\\)\\(\\s\\+On\\|\\s\\+Off\\)\\=\\|Compare\\s\\+\\(Binary\\|Text\\)\\)\\s*$\"\nif ! exists(\"vbnet_no_code_folds\")\n    syn region   vbnetNamespaceBlock matchgroup=vbnetStorage start=\"\\(\\w\\s*\\)\\@<!Namespace\" end=\"\\<End\\s\\+\\Namespace\\>\" contains=TOP fold\nelse\n    syn region   vbnetNamespaceBlock matchgroup=vbnetStorage start=\"\\(\\w\\s*\\)\\@<!Namespace\" end=\"\\<End\\s\\+\\Namespace\\>\" contains=TOP\nendif\n\n\" 7. Types\n\" 7.2 Interface Implementation\nsyn keyword vbnetTypeImplementsKeyword Implements contained\nsyn match   vbnetTypeImplementsClause \"\\(^\\|:\\)\\s*Implements\\s\\+\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\(\\s*,\\s*\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\)*\" contains=vbnetTypeImplementsKeyword,@vbnetStrict contained skipwhite skipnl nextgroup=@vbnetTypeImplements\nsyn match   vbnetTypeImplementsComment \"\\s*\\%('\\|\\<REM\\>\\).*$\" contains=@vbnetComments,@vnetStrict contained skipwhite skipempty nextgroup=@vbnetTypeImplements\nsyn match   vbnetTypeImplementsPreProc \"^\\s*#.*$\" contains=@vbnetPreProc,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetTypeImplements\nsyn cluster vbnetTypeImplements contains=vbnetTypeImplementsClause,vbnetTypeImplementsComment,vbnetTypeImplementsPreProc\n\" 7.3 Primitive Types\nsyn match   vbnetPossibleType   \"\\%(\\<\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\" contained skipwhite nextgroup=vbnetGeneric\nsyn keyword vbnetBuiltinType    Boolean Byte Char Date Decimal Double Single Integer Long Object Short String skipwhite nextgroup=vbnetGeneric\nsyn match   vbnetSystemType    \"\\<System\\.\\(Boolean\\|Byte\\|SByte\\|Char\\|Decimal\\|Double\\|Single\\|Int32\\|UInt32\\|Int64\\|UInt64\\|Int16\\|UInt16\\|Object\\)\\>\" skipwhite nextgroup=vbnetGeneric\nsyn cluster vbnetType           contains=vbnetBuiltinType,vbnetSystemType\nsyn cluster vbnetAnyType        contains=@vbnetType,vbnetPossibleType\nsyn match   vbnetTypeSpecifier  \"[a-zA-Z0-9]\\@<=[\\$%&#]\"\nsyn match   vbnetTypeSpecifier  \"[a-zA-Z0-9]\\@<=!\\([^a-zA-Z0-9]\\|$\\)\"me=s+1\n\" 7.4 Enumerations\nsyn keyword vbnetEnumWords      Shadows Enum contained\nsyn cluster vbnetEnum           contains=vbnetTypeAccess,vbnetEnumWords,vbnetAsClause\nsyn match   vbnetEnumDeclaration \"\\<\\(\\w\\+\\s\\+\\)*\\(\\<End\\>.*\\)\\@<!Enum\\s\\+\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\(\\s\\+As\\s\\+\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\)\\=\" contains=@vbnetEnum,@vbnetStrict containedin=vbnetEnumBlock\nsyn match   vbnetTypeEnd        \"\\<End\\s\\+Enum\\>\" containedin=vbnetEnumBlock\n\" 7.5 Classes\nsyn keyword vbnetClassWords     MustInherit NotInheritable Class contained\nsyn cluster vbnetClass          contains=vbnetTypeAccess,vbnetClassWords\nsyn match   vbnetClassGeneric   \"\\%(\\w\\s*\\)\\@<=(\\s*Of\\s\\+[^)]*)\" contained contains=vbnetGeneric,@vbnetStrict skipwhite skipempty nextgroup=@vbnetClassBase,@vbnetTypeImplements\nsyn match   vbnetClassDeclaration \"\\<\\(\\w\\+\\s\\+\\)*\\(\\<End\\>.*\\)\\@<!Class\\s\\+\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\" contains=@vbnetClass,@vbnetStrict containedin=vbnetClassBlock skipwhite skipempty nextgroup=vbnetClassGeneric,@vbnetClassBase,@vbnetTypeImplements\nsyn match vbnetTypeEnd          \"\\<End\\s\\+Class\\>\" containedin=vbnetClassBlock\n\" 7.5.1 Class Base Specification\nsyn keyword vbnetInheritsKeyword Inherits contained\nsyn match   vbnetClassBase      \"\\(^\\|:\\)\\s*Inherits\\s\\+\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\" contains=vbnetInheritsKeyword,@vbnetType,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetTypeImplements\nsyn match   vbnetClassBaseComment \"\\s*\\%('\\|\\<REM\\>\\).*$\" contains=@vbnetComments,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetClassBase,@vbnetTypeImplements\nsyn match   vbnetClassBasePreProc \"^\\s*#.*$\" contains=@vbnetPreProc,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetClassBase,@vbnetTypeImplements\nsyn cluster vbnetClassBase      contains=vbnetClassBase,vbnetClassBaseComment,vbnetClassBasePreProc\n\" 7.6 Structures\nsyn keyword vbnetStructureWords Implements Structure contained\nsyn cluster vbnetStructure      contains=vbnetTypeAccess,vbnetStructureWords\nsyn match   vbnetStructureDeclaration \"\\<\\(\\w\\+\\s\\+\\)*\\(\\<End\\>.*\\)\\@<!Structure\\s\\+\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\" contains=@vbnetStructure,@vbnetStrict containedin=vbnetStructureBlock skipwhite skipempty nextgroup=@vbnetTypeImplements\nsyn match   vbnetTypeEnd        \"\\<End\\s\\+Structure\\>\" containedin=vbnetStructureBlock\n\" 7.7 Modules\nsyn keyword vbnetModuleWords    Module contained\nsyn cluster vbnetModule         contains=vbnetTypeAccess,vbnetModuleWords\nsyn match   vbnetModuleDeclaration \"\\<\\(\\w\\+\\s\\+\\)*\\(\\<End\\>.*\\)\\@<!Module\\s\\+\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\" contains=@vbnetModule,@vbnetStrict containedin=vbnetModuleBlock\nsyn match   vbnetTypeEnd        \"\\<End\\s\\+Module\\>\" containedin=vbnetModuleBlock\n\" 7.8 Interfaces\nsyn keyword vbnetInterfaceWords Shadows Inherits Interface contained\nsyn cluster vbnetInterface      contains=vbnetTypeAccess,vbnetInterfaceWords\nsyn match   vbnetInterfaceDeclaration \"\\<\\(\\w\\+\\s\\+\\)*\\(\\<End\\>.*\\)\\@<!Interface\\s\\+\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\" contains=@vbnetInterface,@vbnetStrict containedin=vbnetInterfaceBlock skipwhite skipempty nextgroup=@vbnetInterfaceBase\nsyn match   vbnetTypeEnd        \"\\<End\\s\\+Interface\\>\" containedin=vbnetInterfaceBlock\n\" 7.8.1 Interface Inheritance\nsyn match   vbnetInterfaceBase  \"\\(^\\|:\\)\\s*Inherits\\s\\+\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\(\\s*,\\s*\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\)*\" contains=vbnetInheritsKeyword,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetInterfaceBase\nsyn match   vbnetInterfaceBaseComment \"\\s*\\%('\\|\\<REM\\>\\).*$\" contains=@vbnetComments,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetInterfaceBase\nsyn match   vbnetInterfaceBasePreProc \"^\\s*#.*$\" contains=@vbnetPreProc,@vbnetStrict contained skipwhite skipempty nextgroup=@vbnetInterfaceBase\nsyn cluster vbnetInterfaceBase  contains=vbnetInterfaceBase,vbnetInterfaceBaseComment,vbnetInterfaceBasePreProc\n\" 7.10 Delegates\nsyn keyword vbnetStorage        Delegate\n\n\" 9. Type Members\n\" 9.1 Interface Method Implementation\nsyn keyword vbnetImplementsKeyword Implements contained\nsyn match   vbnetImplementsClause \"\\<Implements\\s\\+\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\(\\s*,\\s*\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\)*\" contains=vbnetImplementsKeyword,@vbnetStrict contained\n\" 9.2 Methods\nsyn keyword vbnetProcedureWords Public Private Protected Friend Shadows Shared Overridable NotOverridable MustOverride Overrides Overloads Delegate contained\nsyn keyword vbnetSubWords       Sub New contained\nsyn keyword vbnetAsError        As contained\nsyn cluster vbnetSub            contains=vbnetProcedureWords,vbnetSubWords,vbnetParameter\nsyn keyword vbnetFunctionWords  Function contained\nsyn cluster vbnetFunction       contains=vbnetProcedureWords,vbnetFunctionWords,vbnetParameter\nsyn region  vbnetSubArguments   start=\"(\" skip=\"([^)]*)\\|\\<_$\" end=\")\" end=\"$\" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend skipwhite nextgroup=@vbnetHandlesOrImplements,vbnetAsError contained\nsyn match   vbnetSubDeclaration \"\\<\\(\\w\\+\\s\\+\\)*\\(\\<\\(End\\|Exit\\)\\>.*\\)\\@<!\\<Sub\\>\\s\\+\\%(\\h\\w*\\>\\|\\[\\h\\w*\\]\\)\" contains=@vbnetSub,@vbnetStrict containedin=vbnetSubBlock skipwhite nextgroup=vbnetSubArguments,@vbnetHandlesOrImplements\nsyn match   vbnetProcedureEnd \"\\<End\\s\\+Sub\\>\" containedin=vbnetSubBlock\nsyn region  vbnetFunctionArguments  start=\"(\" skip=\"([^)]*)\\|\\<_$\" end=\")\" end=\"$\" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend skipwhite nextgroup=vbnetFunctionReturn,@vbnetHandlesOrImplements contained\nsyn match   vbnetFunctionReturn     \"\\<As\\s\\+[][(){}A-Za-z0-9_.]\\+\" contains=vbnetAsClause,@vbnetStrict skipwhite nextgroup=@vbnetHandlesOrImplements contained\nsyn match   vbnetFunctionDeclaration \"\\<\\(\\w\\+\\s\\+\\)*\\(\\<\\(End\\|Exit\\)\\>.*\\)\\@<!\\<Function\\>\\s\\+\\%(\\h\\w*\\>\\|\\[\\h\\w*\\]\\)\" contains=@vbnetFunction,@vbnetStrict containedin=vbnetFunctionBlock skipwhite nextgroup=vbnetFunctionArguments,vbnetFunctionReturn,@vbnetHandlesOrImplements\nsyn match   vbnetProcedureEnd \"\\<End\\s\\+Function\\>\" containedin=vbnetFunctionBlock\n\" 9.2.2 External Method Declarations\nsyn keyword vbnetExternalProcedureWords Declare Ansi Unicode Auto Lib Alias contained\nsyn region  vbnetExternalSubArguments   start=\"(\" skip=\"([^)]*)\\|\\<_$\" end=\")\" end=\"$\" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend contained\nsyn match   vbnetExternalSubDeclaration #\\<\\(\\w\\+\\s\\+\\)*\\(\\<\\(End\\|Exit\\)\\>.*\\)\\@<!Declare\\(\\s\\+\\%(Ansi\\|Unicode\\|Auto\\)\\)\\=\\s\\+Sub\\s\\+\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\s\\+Lib\\s\\+\"[^\"]*\"\\(\\s\\+\\<Alias\\>\\s\\+\"[^\"]*\"\\)\\=\\s\\+\\(_\\n\\s*\\)\\=# contains=@vbnetSub,vbnetExternalProcedureWords,vbnetString,@vbnetStrict skipwhite nextgroup=vbnetExternalSubArguments\nsyn region  vbnetExternalFunctionArguments  start=\"(\" skip=\"([^)]*)\\|\\<_$\" end=\")\" end=\"$\" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend skipwhite nextgroup=vbnetAsClause contained\nsyn match   vbnetExternalFunctionDeclaration #\\<\\(\\w\\+\\s\\+\\)*\\(\\<\\(End\\|Exit\\)\\>.*\\)\\@<!Declare\\(\\s\\+\\%(Ansi\\|Unicode\\|Auto\\)\\)\\=\\s\\+Function\\s\\+\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\s\\+Lib\\s\\+\"[^\"]*\"\\(\\s\\+\\<Alias\\>\\s\\+\"[^\"]*\"\\)\\=\\s\\+\\(_\\n\\s*\\)\\=# contains=@vbnetFunction,vbnetExternalProcedureWords,vbnetString,@vbnetStrict skipwhite nextgroup=vbnetExternalFunctionArguments\n\" 9.2.5 Method Parameters\nsyn keyword vbnetParameter      ByVal ByRef Optional ParamArray contained\n\" 9.2.6 Event Handling\nsyn keyword vbnetHandlesKeyword Handles MyBase contained\nsyn match   vbnetHandlesClause  \"\\<Handles\\s\\+\\h\\w*\\.\\h\\w*\\(\\s*,\\s*\\h\\w*\\.\\h\\w*\\)*\\>\" contains=vbnetHandlesKeyword,@vbnetStrict contained\nsyn cluster vbnetHandlesOrImplements contains=vbnetHandlesClause,vbnetImplementsClause\n\" 9.4 Events\nsyn keyword vbnetEventWords     Public Private Protected Friend Shadows Shared Event contained\nsyn cluster vbnetEvent          contains=vbnetEventWords\nsyn region  vbnetEventArguments start=\"(\" skip=\"([^)]*)\\|\\<_$\" end=\")\" end=\"$\" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend skipwhite nextgroup=vbnetImplementsClause,vbnetAsError contained\nsyn match   vbnetEventDeclaration \"\\<\\(\\w\\+\\s\\+\\)*\\(\\<\\(End\\|Exit\\)\\>.*\\)\\@<!\\<Event\\>\\s\\+\\%(\\h\\w*\\>\\|\\[\\h\\w*\\]\\)\" contains=@vbnetEvent,@vbnetStrict skipwhite nextgroup=vbnetEventArguments,vbnetImplementsClause\n\" 9.5 Constants\nsyn keyword vbnetStatement      Const\n\" 9.6 Instance and Shared Variables\nsyn keyword vbnetStatement      Dim\nsyn keyword vbnetAsClause       As skipwhite nextgroup=@vbnetAnyType,@vbnetStrict contained\nsyn keyword vbnetAsNewClause    As skipwhite nextgroup=vbnetNewClause,@vbnetAnyType,@vbnetStrict\n\"syn keyword vbnetVarMemberWords Public Private Protected Friend Shadows Shared ReadOnly WithEvents Dim As contained\n\"syn match vbnetVarMemberDef         \"\\<\\(\\(Public\\|Private\\|Protected\\|Friend\\|Shadows\\|Shared\\|ReadOnly\\|WithEvents\\|Dim\\)\\s\\+\\)\\+\\h\\w*\\(\\s\\+As\\s\\+\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\|[\\$%&#!]\\)\\=\\(\\s*=\\s*[^,]*\\)\\=\\(\\s*,\\s*\\h\\w*\\(\\s\\+As\\s\\+\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\|[\\$%&#!]\\)\\=\\)*\" contains=vbnetVarMemberWords,vbnetAsClause,vbnetTypeSpecifier\n\" 9.7 Properties\nsyn keyword vbnetPropertyWords  Property Default ReadOnly WriteOnly contained\nsyn cluster vbnetProperty       contains=vbnetProcedureWords,vbnetPropertyWords,vbnetParameter\nsyn match   vbnetPropertyDeclaration \"\\<\\(\\w\\+\\s\\+\\)*\\(\\<\\(End\\|Exit\\)\\>.*\\)\\@<!\\<Property\\>\\s\\+\\%(\\h\\w*\\>\\|\\[\\h\\w*\\]\\)\" contains=@vbnetProperty,@vbnetStrict containedin=vbnetReadWritePropertyBlock,vbnetReadOnlyPropertyBlock,vbnetWriteOnlyPropertyBlock skipwhite nextgroup=vbnetPropertyArguments,vbnetPropertyReturn,vbnetImplementsClause\nsyn region  vbnetPropertyArguments start=\"(\" skip=\"([^)]*)\\|\\<_$\" end=\")\" end=\"$\" contains=vbnetParameter,vbnetAsClause,@vbnetLiterals,@vbnetStrict keepend skipwhite nextgroup=vbnetPropertyReturn,vbnetImplementsClause contained\nsyn match   vbnetPropertyReturn     \"\\<As\\s\\+\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\>\" contains=vbnetAsClause,@vbnetStrict skipwhite nextgroup=vbnetImplementsClause contained\nsyn match   vbnetProcedureEnd \"\\<End\\s\\+Property\\>\" containedin=vbnetReadWritePropertyBlock,vbnetReadOnlyPropertyBlock,vbnetWriteOnlyPropertyBlock\nsyn keyword vbnetGetterWords    Get Public Protected Private Friend contained\nsyn cluster vbnetGetter         contains=vbnetGetterWords\nsyn match   vbnetGetterDeclaration  \"\\<\\(\\w\\+\\s\\+\\)*\\(\\<End\\>.*\\)\\@<!\\<Get\\>\" contains=@vbnetGetter,@vbnetStrict contained containedin=vbnetGetterBlock\nsyn keyword vbnetSetterWords    Set ByVal Public Protected Private Friend contained\nsyn cluster vbnetSetter         contains=vbnetSetterWords\nsyn match   vbnetSetterDeclaration  \"\\<\\(\\w\\+\\s\\+\\)*\\(\\<End\\>.*\\)\\@<!\\<Set\\s*\\(([^)]*)\\)\\=\" contains=@vbnetSetter,vbnetAsClause,vbnetTypeSpecifier,@vbnetStrict contained containedin=vbnetSetterBlock\n\n\" 10. Statements\n\" 10.1 Blocks\nsyn match   vbnetLabel          \"^\\h\\w*:\"me=e-1\n\" 10.3 With Statement\nsyn match   vbnetStatement      \"\\<\\(End\\s\\+\\)\\=With\\>\"\n\" 10.4 SyncLock Statement\nsyn match   vbnetStatement      \"\\<\\(End\\s\\+\\)\\=SyncLock\\>\"\n\" 10.5 Event Statements\nsyn keyword vbnetEvent          AddHandler RemoveHandler RaiseEvent\nsyn keyword vbnetStatement      Call\n\" 10.8 Conditional Statements\nsyn keyword vbnetConditional    Then ElseIf Else\nsyn match   vbnetConditional    \"\\<\\(End\\s\\+\\)\\=If\\>\"\nsyn match   vbnetConditional    \"\\<\\(Select\\(\\s\\+Case\\)\\|\\(End\\|Exit\\)\\s\\+Select\\)\\>\"\nsyn keyword vbnetLabel          Case\n\" 10.9 Loop Statements\nsyn keyword vbnetRepeat         To Step Each In Next Loop Until\nsyn match   vbnetRepeat         \"\\<\\(End\\s\\+\\|Exit\\s\\+\\)\\=While\\>\"\nsyn match   vbnetRepeat         \"\\<\\(Exit\\s\\+\\)\\=\\(Do\\|For\\)\\>\"\n\" 10.10 Exception-Handling Statements\nsyn keyword vbnetException      Catch When Finally Resume Throw\nsyn match   vbnetException      \"\\<\\(On\\s\\+Error\\|\\(End\\s\\+\\|Exit\\s\\+\\)\\=Try\\)\\>\"\n\" 10.11 Branch Statements\nsyn keyword vbnetBranch         GoTo Stop Return\nsyn match   vbnetBranch         \"\\<Exit\\s\\+\\(Sub\\|Function\\|Property\\)\\>\"\n\" 10.12 Array-Handling Statements\nsyn keyword vbnetArrayHandler   Erase\nsyn match   vbnetArrayHandler   \"\\<ReDim\\(\\s\\+Preserve\\)\\=\\>\"\n\n\" 11. Expressions\n\" 11.4.3 Instance Expressions\nsyn keyword vbnetStatement      Me MyBase MyClass\n\" 11.4.5 AddressOf Expressions\nsyn keyword vbnetStorage        AddressOf\n\" 11.10 New Expressions\nsyn keyword vbnetNewClause      New skipwhite nextgroup=@vbnetAnyType\n\" 11.11 Cast Expressions\nsyn keyword vbnetCast           CBool CByte CChar CDate CDbl CDec Char CInt CLng CObj CShort CSng CStr CType DirectCast\nsyn keyword vbnetOperator       And Or Not Xor Mod In Is Imp Eqv Like AndAlso OrElse GetType TypeOf\n\n\"\n\" Folding\n\"\n\nif ! exists(\"vbnet_no_code_folds\")\n    \"syn region   vbnetNamespaceBlock    start=\"\\(\\w\\s*\\)\\@<!\\<\\(\\w\\+\\s\\+\\)*\\(\\<End\\>.*\\)\\@<!\\<Namespace\\>\"rs=s end=\"\\<\\End\\s\\+Namespace\\>\"re=e contains=TOP fold\n    syn region   vbnetEnumBlock         start=\"\\(\\w\\s*\\)\\@<!\\<\\(\\w\\+\\s\\+\\)*\\(\\<End\\>.*\\|\\.\\)\\@<!\\<Enum\\s\"rs=s matchgroup=vbnetEnumWords end=\"\\<\\End\\s\\+Enum\\>\" contains=vbnetEnumDeclaration,vbnetAttribute,@vbnetComments,@vbnetPreProc,@vbnetLiterals fold\n    syn region   vbnetClassBlock        start=\"\\(\\w\\s*\\)\\@<!\\<\\(\\w\\+\\s\\+\\)*\\(\\<End\\>.*\\)\\@<!\\<Class\\>\"rs=s matchgroup=vbnetClassWords end=\"\\<\\End\\s\\+Class\\>\" contains=TOP fold\n    syn region   vbnetStructureBlock    start=\"\\(\\w\\s*\\)\\@<!\\<\\(\\w\\+\\s\\+\\)*\\(\\<End\\>.*\\)\\@<!\\<Structure\\>\"rs=s matchgroup=vbnetStructureWords end=\"\\<\\End\\s\\+Structure\\>\" contains=TOP fold\n    syn region   vbnetModuleBlock       start=\"\\(\\w\\s*\\)\\@<!\\<\\(\\w\\+\\s\\+\\)*\\(\\<End\\>.*\\)\\@<!\\<Module\\>\"rs=s matchgroup=vbnetModuleWords end=\"\\<\\End\\s\\+Module\\>\" contains=TOP fold\n    syn region   vbnetInterfaceBlock    start=\"\\(\\w\\s*\\)\\@<!\\<\\(\\w\\+\\s\\+\\)*\\(\\<End\\>.*\\)\\@<!\\<Interface\\>\"rs=s matchgroup=vbnetInterfaceWords end=\"\\<\\End\\s\\+Interface\\>\" contains=vbnetInterfaceDeclaration,vbnetAttribute,@vbnetComments,@vbnetPreProc,vbnetSubDeclaration,vbnetFunctionDeclaration,vbnetPropertyDeclaration,vbnetEventDeclaration fold\n    syn region  vbnetSubBlock           start=\"\\(\\w\\s*\\)\\@<!\\<\\(\\w\\+\\s\\+\\)*\\(\\<\\(End\\|Exit\\|Declare\\|MustOverride\\|Delegate\\)\\>.*\\)\\@<!\\<Sub\\>\"rs=s matchgroup=vbnetProcedure end=\"\\<End\\s\\+Sub\\>\" contains=TOP fold\n    syn region  vbnetFunctionBlock      start=\"\\(\\w\\s*\\)\\@<!\\<\\(\\w\\+\\s\\+\\)*\\(\\<\\(End\\|Exit\\|Declare\\|MustOverride\\|Delegate\\)\\>.*\\)\\@<!\\<Function\\>\"rs=s matchgroup=vbnetProcedure end=\"\\<End\\s\\+Function\\>\" contains=TOP fold\n    syn region  vbnetReadWritePropertyBlock start=\"\\(\\w\\s*\\)\\@<!\\<\\(\\w\\+\\s\\+\\)*\\(\\<\\(End\\|Exit\\|ReadOnly\\|WriteOnly\\)\\>.*\\)\\@<!\\<Property\\>\"rs=s matchgroup=vbnetProcedure end=\"\\<End\\s\\+Property\\>\" contains=vbnetPropertyDeclaration,vbnetGetterBlock,vbnetSetterBlock,@vbnetComments,@vbnetPreProc fold\n    syn region  vbnetReadOnlyPropertyBlock  start=\"\\(\\w\\s*\\)\\@<!\\<\\(.*\\<ReadOnly\\>\\&\\(\\w\\+\\s\\+\\)*\\)Property\\>\"rs=s matchgroup=vbnetProcedure end=\"\\<End\\s\\+Property\\>\" contains=vbnetPropertyDeclaration,vbnetGetterBlock,vbnetSetterErrorBlock,@vbnetComments,@vbnetPreProc fold\n    syn region  vbnetWriteOnlyPropertyBlock start=\"\\(\\w\\s*\\)\\@<!\\<\\(.*\\<WriteOnly\\>\\&\\(\\w\\+\\s\\+\\)*\\)Property\\>\"rs=s matchgroup=vbnetProcedure end=\"\\<End\\s\\+Property\\>\" contains=vbnetPropertyDeclaration,vbnetGetterErrorBlock,vbnetSetterBlock,@vbnetComments,@vbnetPreProc fold\n    syn region vbnetGetterBlock  start=\"\\(\\w\\s*\\)\\@<!\\<\\(\\w\\+\\s\\+\\)*\\(\\<End\\>.*\\)\\@<!\\<Get\\>\"rs=s matchgroup=vbnetProcedure end=\"\\<End\\s\\+Get\\>\" contains=TOP contained fold\n    syn region vbnetSetterBlock  start=\"\\(\\w\\s*\\)\\@<!\\<\\(\\w\\+\\s\\+\\)*\\(\\<End\\>.*\\)\\@<!\\<Set\\>\"rs=s matchgroup=vbnetProcedure end=\"\\<End\\s\\+Set\\>\" contains=TOP contained fold\n    syn region vbnetGetterErrorBlock matchgroup=vbnetError start=\"\\<Get\\>\" end=\"\\<End\\s\\+Get\\>\" contains=TOP contained fold\n    syn region vbnetSetterErrorBlock matchgroup=vbnetError start=\"\\<Set\\>\" end=\"\\<End\\s\\+Set\\>\" contains=TOP contained fold\nelse\n    syn region  vbnetReadWritePropertyBlock start=\"\\(\\w\\s*\\)\\@<!\\<\\(\\w\\+\\s\\+\\)*\\(\\<\\(End\\|Exit\\|ReadOnly\\|WriteOnly\\)\\>.*\\)\\@<!\\<Property\\>\"rs=s matchgroup=vbnetProcedure end=\"\\<End\\s\\+Property\\>\" contains=vbnetPropertyDeclaration,vbnetGetterBlock,vbnetSetterBlock,@vbnetComments,@vbnetPreProc\n    syn region  vbnetReadOnlyPropertyBlock  start=\"\\(\\w\\s*\\)\\@<!\\<\\(.*\\<ReadOnly\\>\\&\\(\\w\\+\\s\\+\\)*\\)Property\\>\"rs=s matchgroup=vbnetProcedure end=\"\\<End\\s\\+Property\\>\" contains=vbnetPropertyDeclaration,vbnetGetterBlock,vbnetSetterErrorBlock,@vbnetComments,@vbnetPreProc\n    syn region  vbnetWriteOnlyPropertyBlock start=\"\\(\\w\\s*\\)\\@<!\\<\\(.*\\<WriteOnly\\>\\&\\(\\w\\+\\s\\+\\)*\\)Property\\>\"rs=s matchgroup=vbnetProcedure end=\"\\<End\\s\\+Property\\>\" contains=vbnetPropertyDeclaration,vbnetGetterErrorBlock,vbnetSetterBlock,@vbnetComments,@vbnetPreProc\n    syn region vbnetGetterBlock  start=\"\\(\\w\\s*\\)\\@<!\\<\\(\\w\\+\\s\\+\\)*\\(\\<End\\>.*\\)\\@<!\\<Get\\>\"rs=s matchgroup=vbnetProcedure end=\"\\<End\\s\\+Get\\>\" contains=TOP contained\n    syn region vbnetSetterBlock  start=\"\\(\\w\\s*\\)\\@<!\\<\\(\\w\\+\\s\\+\\)*\\(\\<End\\>.*\\)\\@<!\\<Set\\>\"rs=s matchgroup=vbnetProcedure end=\"\\<End\\s\\+Set\\>\" contains=TOP contained\n    syn region vbnetGetterErrorBlock matchgroup=vbnetError start=\"\\<Get\\>\" end=\"\\<End\\s\\+Get\\>\" contains=TOP contained\n    syn region vbnetSetterErrorBlock matchgroup=vbnetError start=\"\\<Set\\>\" end=\"\\<End\\s\\+Set\\>\" contains=TOP contained\nendif\n\n\"let vbnet_v7 = 1\nif ! exists(\"vbnet_v7\")\n    \" 4.7 Type and Namespace Names\n    syn keyword vbnetStatement          Global\n    \" 4.9 Generic Types and Methods\n    syn keyword vbnetOfClause           Of skipwhite nextgroup=@vbnetAnyType contained\n    syn match   vbnetGeneric            \"(Of\\s\\+\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\(\\s\\+As\\(\\s\\+\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\|\\s*{\\s*\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\(\\s*,\\s*\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\)*\\s*}\\)*\\)\\=)\" contains=vbnetAsClause,vbnetOfClause,vbnetGenericTypeList,@vbnetStrict contained\n    syn match   vbnetGenericTypeList    \"{\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\(\\s*,\\s*\\%(\\h\\w*\\|\\[\\h\\w*\\]\\)\\%(\\.\\h\\w*\\|\\.\\[\\h\\w*\\]\\)*\\)*}\" contains=@vbnetType contained\n    \" 7.3 Primitive Types\n    syn keyword vbnetBuiltinType        SByte UShort UInteger ULong\n    \" 7.11 Partial Types\n    \"syn keyword vbnetClassModifier      Partial\n    syn keyword vbnetClassWords         Partial contained\n    \" 9.8 Operators\n    \"syn match   vbnetProcedure          \"\\<\\(End\\s\\+\\|Exit\\s\\+\\)\\=Operator\\>\"\n    syn keyword vbnetOperatorWords Public Shared Operator Widening Narrowing ByVal IsTrue IsFalse CType contained\n    \"syn keyword vbnetParameter      ByVal contained\n    syn match   vbnetOperatorDeclaration \"\\<\\(.*\\<Shared\\>\\&\\(\\w\\+\\s\\+\\)*\\)\\(\\<\\(End\\|Exit\\)\\>.*\\)\\@<!\\<Operator\\>\\s\\+[A-Za-z&*+/\\\\^<=>-]*([^)]*)\" contains=vbnetOperatorWords,vbnetAsClause,vbnetTypeSpecifier,@vbnetStrict containedin=vbnetOperatorBlock skipwhite nextgroup=vbnetAsClause\n    syn match vbnetProcedureEnd \"\\<End\\s\\+Operator\\>\" containedin=vbnetOperatorBlock\n    syn match   vbnetBranch         \"\\<Exit\\s\\+\\(Operator\\)\\>\"\n    if ! exists(\"vbnet_no_code_folds\")\n        syn region  vbnetOperatorBlock start=\"\\(^\\|:\\)\\s*\\zs\\<\\(\\w\\+\\s\\+\\)*\\(\\<\\(End\\|Exit\\)\\>.*\\)\\@<!\\<Operator\\>\"rs=s matchgroup=vbnetProcedure end=\"\\<End\\s\\+Operator\\>\" contains=TOP fold\n    endif\n    \" 10.9 Loop Statements\n    syn match   vbnetRepeat             \"\\<Continue\\s\\+\\(Do\\|For\\|While\\)\\>\"\n    \" 10.13 Using Statement\n    syn match   vbnetStatement          \"\\<\\(End\\s\\+\\)\\=Using\\>\"\n    \" 11.5.3 Is Expressions\n    syn keyword vbnetOperator           IsNot\n    \" 11.11 Cast Expressions\n    syn keyword vbnetCast               CSByte CUShort CUInt CULng TryCast\n    \" 12. Documentation Comments\n    syn match   vbnetXmlCommentLeader   +'''+    contained\n    syn match   vbnetXmlComment         +'''.*$+ contains=vbnetXmlCommentLeader,@vbnetXml\n    syn include @vbnetXml syntax/xml.vim\nendif\n\nif ! exists(\"vbnet_no_functions\")\n    \" From the Microsoft.VisualBasic namespace.\n    \" Extracted from the Mono sources; let me know if I missed any.\n    syn keyword vbnetMSConversion ErrorToString Fix Hex Int Oct Str Val\n    syn keyword vbnetMSDateAndTime DateAdd DateDiff DatePart DateSerial DateValue Day Hour Minute Month MonthName Second TimeSerial TimeValue Weekday WeekdayName Year DatePart DateString Now TimeOfDay Timer TimeString Today\n    syn keyword vbnetMSFileSystem ChDir ChDrive CurDir Dir EOF FileAttr FileClose FileCopy FileDateTime FileGet FileGetObject FileLen FileOpen FilePut FilePutObject FileWidth FreeFile GetAttr Input InputString Kill LineInput Loc Lock LOF MkDir Print PrintLine Rename Reset RmDir Seek SetAttr SPC TAB Unlock Write WriteLine\n    syn keyword vbnetMSFinancial DDB FV IPmt IRR MIRR NPer NPV Pmt PPmt PV Rate SLN SYD\n    syn keyword vbnetMSGlobals ScriptEngineBuildVersion ScriptEngineMajorVersion ScriptEngineMinorVersion ScriptEngine \n    syn keyword vbnetMSInformation Erl Err IsArray IsDate IsDBNull IsError IsNothing IsNumeric IsReference LBound QBColor RGB SystemTypeName TypeName UBound VarType VbTypeName\n    syn keyword vbnetMSInteraction AppActivate Beep CallByName Choose Command CreateObject DeleteSetting Environ GetAllSettings GetObject GetSetting IIf InputBox MsgBox Partition SaveSetting Shell Switch\n    syn keyword vbnetMSStrings Asc AscW Chr ChrW Filter Format FormatCurrency FormatDateTime FormatNumber FormatPercent GetChar InStr InStrRev Join LCase Left Len LSet LTrim Mid Replace Right RSet RTrim Space Split StrComp StrConv StrDup StrReverse Trim UCase\n    syn keyword vbnetMSVBMath Randomize Rnd\n    syn match   vbnetMSFunction \"\\<Microsoft\\.VisualBasic\\.\"\nendif\n\n\" Define the default highlighting.\n\" For version 5.7 and earlier: only when not done already\n\" For version 5.8 and later: only when an item doesn't have highlighting yet\nif version >= 508 || !exists(\"did_vbnet_syntax_inits\")\n    if version < 508\n        let did_vbnet_syntax_inits = 1\n        command -nargs=+ HiLink hi link <args>\n    else\n        command -nargs=+ HiLink hi def link <args>\n    endif\n\n    \" 2. Lexical Grammar\n    HiLink vbnetTodo                    Todo\n    HiLink xmlRegion                    vbnetXmlComment\n    HiLink vbnetXmlCommentLeader        vbnetXmlComment\n    HiLink vbnetXmlComment              vbnetComment\n    HiLink vbnetComment                 Comment\n    HiLink vbnetKeywordError            vbnetError\n    HiLink vbnetAsError                 vbnetError\n    HiLink vbnetError                   Error\n    HiLink vbnetBoolean                 Boolean\n    HiLink vbnetNumber                  Number\n    HiLink vbnetCharacter               Character\n    HiLink vbnetString                  String\n    HiLink vbnetDate                    Constant\n    HiLink vbnetConstant                Constant\n\n    \" 3. Preprocessing Directives\n    HiLink vbnetPreCondit               PreCondit\n    HiLink vbnetDefine                  Define\n    HiLink vbnetInclude                 Include\n    HiLink vbnetPreProc                 PreProc\n\n    \" 4. General Concepts\n    HiLink vbnetTypeAccess              vbnetType\n    HiLink vbnetAccessModifier          vbnetModifier\n\n    \" 5. Attributes\n    HiLink vbnetAttribute               Special\n\n    \" 6. Source Files and Namespaces\n    HiLink vbnetStorage                 vbnetStorageClass\n    HiLink vbnetOption                  vbnetPreProc\n    HiLink vbnetImports                 vbnetInclude\n\n    \" 7. Types\n    HiLink vbnetTypeSpecifier           vbnetType\n    HiLink vbnetBuiltinType             vbnetType\n    HiLink vbnetSystemType              vbnetType\n    HiLink vbnetType                    Type\n    HiLink vbnetClassModifier           vbnetStorageClass\n    HiLink vbnetEnumWords               vbnetStorageClass\n    HiLink vbnetModuleWords             vbnetStorageClass\n    HiLink vbnetClassWords              vbnetStorageClass\n    HiLink vbnetStructureWords          vbnetStorageClass\n    HiLink vbnetInterfaceWords          vbnetStorageClass\n    HiLink vbnetTypeImplementsKeyword   vbnetStorageClass\n    HiLink vbnetInheritsKeyword         vbnetStorageClass\n    HiLink vbnetTypeEnd                 vbnetStorageClass\n    HiLink vbnetStorageClass            StorageClass\n\n    \" 9. Type Members\n    HiLink vbnetAsNewClause             vbnetAsClause\n    HiLink vbnetAsClause                vbnetStorageClass\n    HiLink vbnetOfClause                vbnetStorageClass\n    HiLink vbnetProcedureEnd            Statement\n    HiLink vbnetProcedure               Statement\n    HiLink vbnetModifier                vbnetStorageClass\n    HiLink vbnetPropertyWords           vbnetStatement\n    HiLink vbnetGetterWords             vbnetStatement\n    HiLink vbnetSetterWords             vbnetStatement\n    HiLink vbnetExternalProcedureWords  vbnetStatement\n    HiLink vbnetProcedureWords          vbnetStatement\n    HiLink vbnetSubWords                vbnetStatement\n    HiLink vbnetFunctionWords           vbnetStatement\n    HiLink vbnetOperatorWords           vbnetStatement\n    HiLink vbnetVarMemberWords          vbnetStatement\n    HiLink vbnetHandlesKeyword          vbnetStatement\n    HiLink vbnetImplementsKeyword       vbnetStatement\n    HiLink vbnetEventWords              vbnetStatement\n\n    \" 10. Statements\n    HiLink vbnetStatement               Statement\n    HiLink vbnetLabel                   Label\n    HiLink vbnetParameter               Keyword\n    HiLink vbnetEvent                   vbnetStatement\n    HiLink vbnetConditional             Conditional\n    HiLink vbnetRepeat                  Repeat\n    HiLink vbnetException               Exception\n    HiLink vbnetBranch                  Keyword\n    HiLink vbnetArrayHandler            Statement\n\n    \" 11. Expressions\n    HiLink vbnetCast                    vbnetType\n    HiLink vbnetOperator                Operator\n    HiLink vbnetNewClause               Keyword\n\n    \" Functions\n    HiLink vbnetMSConstants             vbnetMSFunction\n    HiLink vbnetMSConversion            vbnetMSFunction\n    HiLink vbnetMSDateAndTime           vbnetMSFunction\n    HiLink vbnetMSFileSystem            vbnetMSFunction\n    HiLink vbnetMSFinancial             vbnetMSFunction\n    HiLink vbnetMSGlobals               vbnetMSFunction\n    HiLink vbnetMSInformation           vbnetMSFunction\n    HiLink vbnetMSInteraction           vbnetMSFunction\n    HiLink vbnetMSStrings               vbnetMSFunction\n    HiLink vbnetMSVBMath                vbnetMSFunction\n    HiLink vbnetMSVBUtils               vbnetMSFunction\n    HiLink vbnetMSFunction              Function\n\n    delcommand HiLink\nendif\n\nlet b:current_syntax = \"vbnet\"\n\n\" vim:set ft=vim sts=4 sw=4:\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/xs.vim",
    "content": "\" Vim syntax file\n\" Language:    XS (Perl extension interface language)\n\" Author:      Autogenerated from perl headers, on an original basis of Michael W. Dodge <sarge@pobox.com>\n\" Maintainer:  vim-perl <vim-perl@googlegroups.com>\n\" Previous:    Vincent Pit <perl@profvince.com>\n\" Last Change: 2013-05-12\n\n\" For version 5.x: Clear all syntax items\n\" For version 6.x: Quit when a syntax file was already loaded\nif version < 600\n  syntax clear\nelseif exists(\"b:current_syntax\")\n  finish\nendif\n\n\" Read the C syntax to start with\nif version < 600\n  source <sfile>:p:h/c.vim\nelse\n  runtime! syntax/c.vim\nendif\n\nlet xs_superseded = 1 \" mark C functions superseded by Perl replacements\nlet xs_not_core   = 1 \" mark private core functions\n\nif exists(\"xs_superseded\") && xs_superseded\nsyn keyword xsSuperseded atof atol calloc clearerr exit fclose feof ferror\nsyn keyword xsSuperseded fflush fgetc fgetpos fgets fopen fprintf fputc fputs\nsyn keyword xsSuperseded fread free freopen fseek fsetpos fwrite getc getenv\nsyn keyword xsSuperseded isalnum isalpha iscntrl isdigit isgraph islower\nsyn keyword xsSuperseded isprint ispunct isspace isupper isxdigit malloc\nsyn keyword xsSuperseded memcpy memmove memset printf putc rand realloc\nsyn keyword xsSuperseded rewind setenv sprintf srand stderr stdin stdout\nsyn keyword xsSuperseded strcat strcmp strcpy strdup strlen strncat strncmp\nsyn keyword xsSuperseded strncpy strstr strtod strtol strtoul system tolower\nsyn keyword xsSuperseded toupper ungetc\nendif\nif exists(\"xs_not_core\") && xs_not_core\nsyn keyword xsPrivate F0convert Perl__add_range_to_invlist\nsyn keyword xsPrivate Perl__core_swash_init Perl__invlist_contents\nsyn keyword xsPrivate Perl__invlist_intersection_maybe_complement_2nd\nsyn keyword xsPrivate Perl__invlist_invert Perl__invlist_invert_prop\nsyn keyword xsPrivate Perl__invlist_populate_swatch\nsyn keyword xsPrivate Perl__invlist_union_maybe_complement_2nd\nsyn keyword xsPrivate Perl__is_utf8__perl_idstart Perl__new_invlist\nsyn keyword xsPrivate Perl__swash_inversion_hash Perl__swash_to_invlist\nsyn keyword xsPrivate Perl__to_fold_latin1 Perl_av_reify Perl_emulate_cop_io\nsyn keyword xsPrivate Perl_find_rundefsvoffset Perl_get_re_arg\nsyn keyword xsPrivate Perl_is_utf8_X_L Perl_is_utf8_X_LV Perl_is_utf8_X_LVT\nsyn keyword xsPrivate Perl_is_utf8_X_LV_LVT_V Perl_is_utf8_X_T\nsyn keyword xsPrivate Perl_is_utf8_X_V Perl_is_utf8_X_begin\nsyn keyword xsPrivate Perl_is_utf8_X_extend Perl_is_utf8_X_non_hangul\nsyn keyword xsPrivate Perl_is_utf8_X_prepend Perl_is_utf8_char\nsyn keyword xsPrivate Perl_new_warnings_bitfield Perl_op_clear\nsyn keyword xsPrivate Perl_ptr_table_clear Perl_qerror Perl_reg_named_buff\nsyn keyword xsPrivate Perl_reg_named_buff_iter Perl_reg_numbered_buff_fetch\nsyn keyword xsPrivate Perl_reg_numbered_buff_length\nsyn keyword xsPrivate Perl_reg_numbered_buff_store Perl_reg_qr_package\nsyn keyword xsPrivate Perl_reg_temp_copy Perl_regprop Perl_report_uninit\nsyn keyword xsPrivate Perl_sv_compile_2op Perl_sv_setsv_cow\nsyn keyword xsPrivate Perl_try_amagic_bin Perl_try_amagic_un\nsyn keyword xsPrivate Perl_utf8_to_uvchr Perl_utf8_to_uvuni\nsyn keyword xsPrivate Perl_vivify_defelem Perl_yylex S_F0convert S_Slab_to_rw\nsyn keyword xsPrivate S__append_range_to_invlist S__new_invlist_C_array\nsyn keyword xsPrivate S_add_alternate S_add_data S_add_utf16_textfilter\nsyn keyword xsPrivate S_adjust_stack_on_leave S_amagic_cmp\nsyn keyword xsPrivate S_amagic_cmp_locale S_amagic_i_ncmp S_amagic_ncmp\nsyn keyword xsPrivate S_anonymise_cv_maybe S_ao S_apply_attrs\nsyn keyword xsPrivate S_apply_attrs_my S_assert_uft8_cache_coherent\nsyn keyword xsPrivate S_bad_type_pv S_bad_type_sv S_bytes_to_uni\nsyn keyword xsPrivate S_check_locale_boundary_crossing S_check_type_and_open\nsyn keyword xsPrivate S_check_uni S_checkcomma S_checkposixcc S_ckwarn_common\nsyn keyword xsPrivate S_cl_and S_cl_anything S_cl_init S_cl_is_anything\nsyn keyword xsPrivate S_cl_or S_clear_placeholders S_closest_cop S_cop_free\nsyn keyword xsPrivate S_core_regclass_swash S_cr_textfilter S_curmad S_curse\nsyn keyword xsPrivate S_cv_dump S_deb_curcv S_deb_stack_n S_debprof\nsyn keyword xsPrivate S_debug_start_match S_del_sv\nsyn keyword xsPrivate S_deprecate_commaless_var_list S_destroy_matcher\nsyn keyword xsPrivate S_div128 S_do_chomp S_do_delete_local S_do_oddball\nsyn keyword xsPrivate S_do_smartmatch S_do_trans_complex\nsyn keyword xsPrivate S_do_trans_complex_utf8 S_do_trans_count\nsyn keyword xsPrivate S_do_trans_count_utf8 S_do_trans_simple\nsyn keyword xsPrivate S_do_trans_simple_utf8 S_docatch S_doeval S_dofindlabel\nsyn keyword xsPrivate S_doform S_dooneliner S_doopen_pm S_doparseform\nsyn keyword xsPrivate S_dopoptoeval S_dopoptogiven S_dopoptolabel\nsyn keyword xsPrivate S_dopoptoloop S_dopoptosub_at S_dopoptowhen\nsyn keyword xsPrivate S_dump_exec_pos S_dump_trie S_dump_trie_interim_list\nsyn keyword xsPrivate S_dump_trie_interim_table S_dumpuntil S_dup_attrlist\nsyn keyword xsPrivate S_exec_failed S_expect_number S_filter_gets\nsyn keyword xsPrivate S_finalize_op S_find_and_forget_pmops\nsyn keyword xsPrivate S_find_array_subscript S_find_beginning S_find_byclass\nsyn keyword xsPrivate S_find_hash_subscript S_find_in_my_stash\nsyn keyword xsPrivate S_find_uninit_var S_first_symbol S_fold_constants\nsyn keyword xsPrivate S_forbid_setid S_force_ident S_force_list S_force_next\nsyn keyword xsPrivate S_force_strict_version S_force_version S_force_word\nsyn keyword xsPrivate S_forget_pmop S_gen_constant_list S_get_aux_mg\nsyn keyword xsPrivate S_get_num S_glob_2number S_glob_assign_glob\nsyn keyword xsPrivate S_glob_assign_ref S_grok_bslash_c S_grok_bslash_o\nsyn keyword xsPrivate S_group_end S_gv_ename S_gv_get_super_pkg\nsyn keyword xsPrivate S_gv_init_svtype S_gv_magicalize_isa\nsyn keyword xsPrivate S_gv_magicalize_overload S_hfreeentries S_hsplit\nsyn keyword xsPrivate S_hv_auxinit S_hv_delete_common S_hv_free_ent_ret\nsyn keyword xsPrivate S_hv_magic_check S_hv_notallowed S_incline S_incpush\nsyn keyword xsPrivate S_incpush_if_exists S_incpush_use_sep S_ingroup\nsyn keyword xsPrivate S_init_ids S_init_interp S_init_main_stash\nsyn keyword xsPrivate S_init_perllib S_init_postdump_symbols\nsyn keyword xsPrivate S_init_predump_symbols S_inplace_aassign\nsyn keyword xsPrivate S_intuit_method S_intuit_more S_invlist_extend\nsyn keyword xsPrivate S_invlist_iternext S_invlist_search\nsyn keyword xsPrivate S_invoke_exception_hook S_is_an_int\nsyn keyword xsPrivate S_is_handle_constructor S_is_list_assignment\nsyn keyword xsPrivate S_is_utf8_char_slow S_is_utf8_common S_isa_lookup\nsyn keyword xsPrivate S_join_exact S_listkids S_looks_like_bool\nsyn keyword xsPrivate S_magic_methcall1 S_make_matcher S_make_trie\nsyn keyword xsPrivate S_make_trie_failtable S_matcher_matches_sv\nsyn keyword xsPrivate S_mayberelocate S_measure_struct S_mem_log_common\nsyn keyword xsPrivate S_mess_alloc S_method_common S_minus_v S_missingterm\nsyn keyword xsPrivate S_modkids S_more_sv S_mro_clean_isarev\nsyn keyword xsPrivate S_mro_gather_and_rename S_mro_get_linear_isa_dfs\nsyn keyword xsPrivate S_mul128 S_mulexp10 S_my_exit_jump S_my_kid S_need_utf8\nsyn keyword xsPrivate S_newDEFSVOP S_newGIVWHENOP S_new_constant S_new_he\nsyn keyword xsPrivate S_new_logop S_next_symbol S_nextchar\nsyn keyword xsPrivate S_no_bareword_allowed S_no_fh_allowed S_no_op\nsyn keyword xsPrivate S_not_a_number S_nuke_stacks S_num_overflow\nsyn keyword xsPrivate S_open_script S_opt_scalarhv S_pack_rec\nsyn keyword xsPrivate S_pad_alloc_name S_pad_check_dup S_pad_findlex\nsyn keyword xsPrivate S_pad_reset S_parse_body S_path_is_absolute S_pidgone\nsyn keyword xsPrivate S_pm_description S_pmtrans S_printbuf\nsyn keyword xsPrivate S_process_special_blocks S_ptr_table_find S_put_byte\nsyn keyword xsPrivate S_qsortsvu S_re_croak2 S_readpipe_override\nsyn keyword xsPrivate S_ref_array_or_hash S_refcounted_he_value S_refkids\nsyn keyword xsPrivate S_refto S_reg S_reg_check_named_buff_matched\nsyn keyword xsPrivate S_reg_namedseq S_reg_node S_reg_recode S_reg_scan_name\nsyn keyword xsPrivate S_reg_skipcomment S_reganode S_regatom S_regbranch\nsyn keyword xsPrivate S_regclass S_regcppop S_regcppush S_regdump_extflags\nsyn keyword xsPrivate S_reghop3 S_reghop4 S_reghopmaybe3 S_reginclass\nsyn keyword xsPrivate S_reginsert S_regmatch S_regpiece S_regpposixcc\nsyn keyword xsPrivate S_regrepeat S_regtail S_regtail_study S_regtry S_reguni\nsyn keyword xsPrivate S_regwhite S_require_tie_mod S_restore_magic S_run_body\nsyn keyword xsPrivate S_run_user_filter S_rxres_free S_rxres_restore\nsyn keyword xsPrivate S_save_hek_flags S_save_lines S_save_magic\nsyn keyword xsPrivate S_save_pushptri32ptr S_save_scalar_at S_scalar_mod_type\nsyn keyword xsPrivate S_scalarboolean S_scalarkids S_scalarseq S_scan_commit\nsyn keyword xsPrivate S_scan_const S_scan_formline S_scan_heredoc\nsyn keyword xsPrivate S_scan_ident S_scan_inputsymbol S_scan_pat S_scan_str\nsyn keyword xsPrivate S_scan_subst S_scan_trans S_scan_word S_search_const\nsyn keyword xsPrivate S_sequence_num S_set_regclass_bit_fold\nsyn keyword xsPrivate S_share_hek_flags S_simplify_sort S_skipspace\nsyn keyword xsPrivate S_skipspace0 S_skipspace1 S_skipspace2 S_sortcv\nsyn keyword xsPrivate S_sortcv_stacked S_sortcv_xsub\nsyn keyword xsPrivate S_space_join_names_mortal S_start_force S_stdize_locale\nsyn keyword xsPrivate S_strip_return S_study_chunk S_sublex_done\nsyn keyword xsPrivate S_sublex_push S_sublex_start S_sv_2iuv_common\nsyn keyword xsPrivate S_sv_2iuv_non_preserve S_sv_add_arena S_sv_dup_common\nsyn keyword xsPrivate S_sv_dup_inc_multiple S_sv_exp_grow S_sv_i_ncmp\nsyn keyword xsPrivate S_sv_ncmp S_sv_pos_b2u_midway S_sv_pos_u2b_cached\nsyn keyword xsPrivate S_sv_pos_u2b_forwards S_sv_pos_u2b_midway\nsyn keyword xsPrivate S_sv_release_COW S_swallow_bom S_swatch_get\nsyn keyword xsPrivate S_to_byte_substr S_to_lower_latin1 S_to_utf8_substr\nsyn keyword xsPrivate S_tokenize_use S_tokeq S_tokereport\nsyn keyword xsPrivate S_too_few_arguments_pv S_too_few_arguments_sv\nsyn keyword xsPrivate S_too_many_arguments_pv S_too_many_arguments_sv\nsyn keyword xsPrivate S_uiv_2buf S_unpack_rec S_unreferenced_to_tmp_stack\nsyn keyword xsPrivate S_unshare_hek_or_pvn S_unwind_handler_stack\nsyn keyword xsPrivate S_update_debugger_info S_usage S_utf16_textfilter\nsyn keyword xsPrivate S_utf8_mg_len_cache_update S_utf8_mg_pos_cache_update\nsyn keyword xsPrivate S_validate_suid S_visit S_with_queued_errors\nsyn keyword xsPrivate S_write_no_mem S_xmldump_attr S_yywarn Slab_to_rw\nsyn keyword xsPrivate _add_range_to_invlist _append_range_to_invlist\nsyn keyword xsPrivate _core_swash_init _invlist_array_init _invlist_contents\nsyn keyword xsPrivate _invlist_intersection\nsyn keyword xsPrivate _invlist_intersection_maybe_complement_2nd\nsyn keyword xsPrivate _invlist_invert _invlist_invert_prop\nsyn keyword xsPrivate _invlist_populate_swatch _invlist_subtract\nsyn keyword xsPrivate _invlist_union _invlist_union_maybe_complement_2nd\nsyn keyword xsPrivate _is_utf8__perl_idstart _new_invlist\nsyn keyword xsPrivate _new_invlist_C_array _swash_inversion_hash\nsyn keyword xsPrivate _swash_to_invlist _to_fold_latin1 add_alternate\nsyn keyword xsPrivate add_cp_to_invlist add_data add_utf16_textfilter\nsyn keyword xsPrivate adjust_stack_on_leave amagic_cmp amagic_cmp_locale\nsyn keyword xsPrivate amagic_i_ncmp amagic_ncmp anonymise_cv_maybe ao\nsyn keyword xsPrivate apply_attrs apply_attrs_my assert_uft8_cache_coherent\nsyn keyword xsPrivate av_reify bad_type_pv bad_type_sv bytes_to_uni\nsyn keyword xsPrivate check_locale_boundary_crossing check_type_and_open\nsyn keyword xsPrivate check_uni checkcomma checkposixcc ckwarn_common cl_and\nsyn keyword xsPrivate cl_anything cl_init cl_is_anything cl_or\nsyn keyword xsPrivate clear_placeholders closest_cop cop_free\nsyn keyword xsPrivate core_regclass_swash cr_textfilter curmad curse cv_dump\nsyn keyword xsPrivate deb_curcv deb_stack_n debprof debug_start_match del_sv\nsyn keyword xsPrivate deprecate_commaless_var_list destroy_matcher div128\nsyn keyword xsPrivate do_aexec do_chomp do_delete_local do_exec do_oddball\nsyn keyword xsPrivate do_smartmatch do_trans_complex do_trans_complex_utf8\nsyn keyword xsPrivate do_trans_count do_trans_count_utf8 do_trans_simple\nsyn keyword xsPrivate do_trans_simple_utf8 docatch doeval dofindlabel doform\nsyn keyword xsPrivate dooneliner doopen_pm doparseform dopoptoeval\nsyn keyword xsPrivate dopoptogiven dopoptolabel dopoptoloop dopoptosub_at\nsyn keyword xsPrivate dopoptowhen dump_exec_pos dump_trie\nsyn keyword xsPrivate dump_trie_interim_list dump_trie_interim_table\nsyn keyword xsPrivate dumpuntil dup_attrlist exec_failed expect_number\nsyn keyword xsPrivate filter_gets finalize_op find_and_forget_pmops\nsyn keyword xsPrivate find_array_subscript find_beginning find_byclass\nsyn keyword xsPrivate find_hash_subscript find_in_my_stash\nsyn keyword xsPrivate find_rundefsvoffset find_uninit_var first_symbol\nsyn keyword xsPrivate fold_constants forbid_setid force_ident force_list\nsyn keyword xsPrivate force_next force_strict_version force_version\nsyn keyword xsPrivate force_word gen_constant_list get_aux_mg\nsyn keyword xsPrivate get_invlist_iter_addr get_invlist_len_addr\nsyn keyword xsPrivate get_invlist_version_id_addr get_invlist_zero_addr\nsyn keyword xsPrivate get_num glob_2number glob_assign_glob glob_assign_ref\nsyn keyword xsPrivate grok_bslash_c grok_bslash_o group_end gv_ename\nsyn keyword xsPrivate gv_get_super_pkg gv_init_svtype gv_magicalize_isa\nsyn keyword xsPrivate gv_magicalize_overload hfreeentries hsplit hv_auxinit\nsyn keyword xsPrivate hv_delete_common hv_free_ent_ret hv_magic_check\nsyn keyword xsPrivate hv_notallowed incline incpush incpush_if_exists\nsyn keyword xsPrivate incpush_use_sep ingroup init_ids init_interp\nsyn keyword xsPrivate init_main_stash init_perllib init_postdump_symbols\nsyn keyword xsPrivate init_predump_symbols inplace_aassign intuit_method\nsyn keyword xsPrivate intuit_more invlist_array invlist_clone invlist_extend\nsyn keyword xsPrivate invlist_iterinit invlist_iternext invlist_len\nsyn keyword xsPrivate invlist_max invlist_search invlist_set_len invlist_trim\nsyn keyword xsPrivate invoke_exception_hook is_an_int is_handle_constructor\nsyn keyword xsPrivate is_list_assignment is_utf8_X_L is_utf8_X_LV\nsyn keyword xsPrivate is_utf8_X_LVT is_utf8_X_LV_LVT_V is_utf8_X_T\nsyn keyword xsPrivate is_utf8_X_V is_utf8_X_begin is_utf8_X_extend\nsyn keyword xsPrivate is_utf8_X_non_hangul is_utf8_X_prepend is_utf8_char\nsyn keyword xsPrivate is_utf8_char_slow is_utf8_common isa_lookup join_exact\nsyn keyword xsPrivate listkids looks_like_bool magic_methcall1 make_matcher\nsyn keyword xsPrivate make_trie make_trie_failtable matcher_matches_sv\nsyn keyword xsPrivate mayberelocate measure_struct mem_log_common mess_alloc\nsyn keyword xsPrivate method_common minus_v missingterm modkids more_sv\nsyn keyword xsPrivate mro_clean_isarev mro_gather_and_rename\nsyn keyword xsPrivate mro_get_linear_isa_dfs mul128 mulexp10 my_exit_jump\nsyn keyword xsPrivate my_kid need_utf8 newDEFSVOP newGIVWHENOP new_he\nsyn keyword xsPrivate new_logop next_symbol nextchar no_bareword_allowed\nsyn keyword xsPrivate no_fh_allowed no_op not_a_number nuke_stacks\nsyn keyword xsPrivate num_overflow op_clear open_script opt_scalarhv pack_rec\nsyn keyword xsPrivate pad_alloc_name pad_check_dup pad_findlex pad_reset\nsyn keyword xsPrivate parse_body path_is_absolute pidgone pm_description\nsyn keyword xsPrivate pmtrans printbuf process_special_blocks ptr_table_clear\nsyn keyword xsPrivate ptr_table_find put_byte qerror qsortsvu re_croak2\nsyn keyword xsPrivate readpipe_override ref_array_or_hash refcounted_he_value\nsyn keyword xsPrivate refkids refto reg reg_check_named_buff_matched\nsyn keyword xsPrivate reg_named_buff reg_named_buff_iter reg_namedseq\nsyn keyword xsPrivate reg_node reg_numbered_buff_fetch\nsyn keyword xsPrivate reg_numbered_buff_length reg_numbered_buff_store\nsyn keyword xsPrivate reg_qr_package reg_recode reg_scan_name reg_skipcomment\nsyn keyword xsPrivate reg_temp_copy reganode regatom regbranch regclass\nsyn keyword xsPrivate regcppop regcppush regcurly regdump_extflags reghop3\nsyn keyword xsPrivate reghop4 reghopmaybe3 reginclass reginsert regmatch\nsyn keyword xsPrivate regpiece regpposixcc regprop regrepeat regtail\nsyn keyword xsPrivate regtail_study regtry reguni regwhite report_uninit\nsyn keyword xsPrivate require_tie_mod restore_magic run_body run_user_filter\nsyn keyword xsPrivate rxres_free rxres_restore save_hek_flags save_lines\nsyn keyword xsPrivate save_magic save_pushptri32ptr save_scalar_at\nsyn keyword xsPrivate scalar_mod_type scalarboolean scalarkids scalarseq\nsyn keyword xsPrivate scan_commit scan_const scan_formline scan_heredoc\nsyn keyword xsPrivate scan_ident scan_inputsymbol scan_pat scan_str\nsyn keyword xsPrivate scan_subst scan_trans scan_word search_const\nsyn keyword xsPrivate sequence_num set_regclass_bit set_regclass_bit_fold\nsyn keyword xsPrivate share_hek_flags simplify_sort skipspace skipspace0\nsyn keyword xsPrivate skipspace1 skipspace2 sortcv sortcv_stacked sortcv_xsub\nsyn keyword xsPrivate space_join_names_mortal start_force stdize_locale\nsyn keyword xsPrivate strip_return study_chunk sublex_done sublex_push\nsyn keyword xsPrivate sublex_start sv_2iuv_common sv_2iuv_non_preserve\nsyn keyword xsPrivate sv_add_arena sv_compile_2op sv_dup_common\nsyn keyword xsPrivate sv_dup_inc_multiple sv_exp_grow sv_i_ncmp sv_ncmp\nsyn keyword xsPrivate sv_pos_b2u_midway sv_pos_u2b_cached sv_pos_u2b_forwards\nsyn keyword xsPrivate sv_pos_u2b_midway sv_release_COW sv_setsv_cow\nsyn keyword xsPrivate swallow_bom swatch_get to_byte_substr to_lower_latin1\nsyn keyword xsPrivate to_utf8_substr tokenize_use tokeq tokereport\nsyn keyword xsPrivate too_few_arguments_pv too_few_arguments_sv\nsyn keyword xsPrivate too_many_arguments_pv too_many_arguments_sv uiv_2buf\nsyn keyword xsPrivate unpack_rec unreferenced_to_tmp_stack unshare_hek_or_pvn\nsyn keyword xsPrivate unwind_handler_stack update_debugger_info usage\nsyn keyword xsPrivate utf16_textfilter utf8_mg_len_cache_update\nsyn keyword xsPrivate utf8_mg_pos_cache_update utf8_to_uvchr utf8_to_uvuni\nsyn keyword xsPrivate visit vivify_defelem with_queued_errors write_no_mem\nsyn keyword xsPrivate xmldump_attr yylex yywarn\nendif\nsyn keyword xsType AMT AMTS ANY AV BHK BINOP BLOCK CHECKPOINT CLONE_PARAMS\nsyn keyword xsType COP COPHH CV DB_Hash_t DB_Prefix_t DEBUG_t Direntry_t\nsyn keyword xsType Fpos_t Free_t GP GV Gid_t Groups_t HE HEK HV I16 I32 I64\nsyn keyword xsType I8 IO IV Int64 JMPENV LISTOP LOGOP LOOP MADPROP MAGIC MGS\nsyn keyword xsType MGVTBL Malloc_t Mmap_t Mode_t NEXTTOKE NV Netdb_hlen_t\nsyn keyword xsType Netdb_host_t Netdb_name_t Netdb_net_t OP OPCODE OP_4tree\nsyn keyword xsType Off_t Optype PAD PADLIST PADOFFSET PADOP PERL_CONTEXT\nsyn keyword xsType PERL_SI PMOP PTR_TBL_ENT_t PTR_TBL_t PVOP PerlIO\nsyn keyword xsType PerlIO_funcs PerlIO_list_s PerlIO_list_t PerlIOl\nsyn keyword xsType PerlInterpreter Pid_t Quad_t REGEXP Rand_seed_t SSize_t\nsyn keyword xsType STRLEN STRUCT_SV SUBLEXINFO SV SVOP Select_fd_set_t\nsyn keyword xsType Shmat_t Signal_t Sigsave_t Size_t Sock_size_t Stat_t TM64\nsyn keyword xsType TOKEN Time64_T Time_t U16 U32 U64 U8 UNOP UV Uid_t Uquad_t\nsyn keyword xsType XOP XPV XPVAV XPVBM XPVCV XPVFM XPVGV XPVHV XPVIO XPVIV\nsyn keyword xsType XPVLV XPVMG XPVNV XPVUV Year _PerlIO _PerlIO_funcs\nsyn keyword xsType _pMY_CXT _pTHX _reg_ac_data _reg_trie_data _reg_trie_state\nsyn keyword xsType _reg_trie_trans _reg_trie_trans_list_elem _sublex_info\nsyn keyword xsType _xhvnameu _xivu _xmgu _xnvu am_table am_table_short\nsyn keyword xsType block_eval block_format block_givwhen block_hooks\nsyn keyword xsType block_loop block_sub bool clone_params custom_op\nsyn keyword xsType cv_flags_t expectation gccbug_semun line_t madprop magic\nsyn keyword xsType mem_log_type mgvtbl mro_alg mro_meta my_cxt_t opcode p5rx\nsyn keyword xsType pMY_CXT pMY_CXT_ pTHX pTHX_ padtidy_type perl_cond\nsyn keyword xsType perl_debug_pad perl_key perl_memory_debug_header\nsyn keyword xsType perl_mstats perl_mstats_t perl_mutex perl_os_thread\nsyn keyword xsType perl_phase perl_vars perl_wait_queue pthread_addr_t\nsyn keyword xsType ptr_tbl ptr_tbl_ent re_save_state refcounted_he\nsyn keyword xsType reg_ac_data reg_data reg_substr_data reg_substr_datum\nsyn keyword xsType reg_trie_data reg_trie_state reg_trie_trans\nsyn keyword xsType reg_trie_trans_le regex_charset regnode regnode_1\nsyn keyword xsType regnode_2 regnode_2L regnode_charclass\nsyn keyword xsType regnode_charclass_class regnode_string semun shared_he\nsyn keyword xsType svtype thread_intern ufuncs xpv xpvav xpvcv xpvfm xpvgv\nsyn keyword xsType xpvhv xpvhv_aux xpvio xpviv xpvlv xpvmg xpvnv xpvuv\nsyn keyword xsType yytokentype\nsyn keyword xsString IVdf NVef NVff NVgf SVf SVf256 SVf32 SVf_ UVof UVuf UVxf\nsyn keyword xsConstant CXt_BLOCK CXt_EVAL CXt_FORMAT CXt_GIVEN CXt_LOOP_FOR\nsyn keyword xsConstant CXt_LOOP_LAZYIV CXt_LOOP_LAZYSV CXt_LOOP_PLAIN\nsyn keyword xsConstant CXt_NULL CXt_SUB CXt_SUBST CXt_WHEN FALSE G_ARRAY\nsyn keyword xsConstant G_DISCARD G_EVAL G_FAKINGEVAL G_KEEPERR G_METHOD\nsyn keyword xsConstant G_NOARGS G_NODEBUG G_SCALAR G_UNDEF_FILL G_VOID G_WANT\nsyn keyword xsConstant G_WARN_ALL_MASK G_WARN_ALL_OFF G_WARN_ALL_ON\nsyn keyword xsConstant G_WARN_OFF G_WARN_ON G_WARN_ONCE G_WRITING_TO_STDERR\nsyn keyword xsConstant OA_AVREF OA_BASEOP OA_BASEOP_OR_UNOP OA_BINOP\nsyn keyword xsConstant OA_CLASS_MASK OA_COP OA_CVREF OA_DANGEROUS OA_DEFGV\nsyn keyword xsConstant OA_FILEREF OA_FILESTATOP OA_FOLDCONST OA_HVREF OA_LIST\nsyn keyword xsConstant OA_LISTOP OA_LOGOP OA_LOOP OA_LOOPEXOP OA_MARK\nsyn keyword xsConstant OA_OPTIONAL OA_OTHERINT OA_PADOP OA_PMOP\nsyn keyword xsConstant OA_PVOP_OR_SVOP OA_RETSCALAR OA_SCALAR OA_SCALARREF\nsyn keyword xsConstant OA_SVOP OA_TARGET OA_TARGLEX OA_UNOP OP_AASSIGN OP_ABS\nsyn keyword xsConstant OP_ACCEPT OP_ADD OP_AEACH OP_AELEM OP_AELEMFAST\nsyn keyword xsConstant OP_AELEMFAST_LEX OP_AKEYS OP_ALARM OP_AND OP_ANDASSIGN\nsyn keyword xsConstant OP_ANONCODE OP_ANONHASH OP_ANONLIST OP_ASLICE OP_ATAN2\nsyn keyword xsConstant OP_AV2ARYLEN OP_AVALUES OP_BACKTICK OP_BIND OP_BINMODE\nsyn keyword xsConstant OP_BIT_AND OP_BIT_OR OP_BIT_XOR OP_BLESS OP_BOOLKEYS\nsyn keyword xsConstant OP_BREAK OP_CALLER OP_CHDIR OP_CHMOD OP_CHOMP OP_CHOP\nsyn keyword xsConstant OP_CHOWN OP_CHR OP_CHROOT OP_CLOSE OP_CLOSEDIR\nsyn keyword xsConstant OP_COMPLEMENT OP_CONCAT OP_COND_EXPR OP_CONNECT\nsyn keyword xsConstant OP_CONST OP_CONTINUE OP_COREARGS OP_COS OP_CRYPT\nsyn keyword xsConstant OP_CUSTOM OP_DBMCLOSE OP_DBMOPEN OP_DBSTATE OP_DEFINED\nsyn keyword xsConstant OP_DELETE OP_DIE OP_DIVIDE OP_DOFILE OP_DOR\nsyn keyword xsConstant OP_DORASSIGN OP_DUMP OP_EACH OP_EGRENT OP_EHOSTENT\nsyn keyword xsConstant OP_ENETENT OP_ENTER OP_ENTEREVAL OP_ENTERGIVEN\nsyn keyword xsConstant OP_ENTERITER OP_ENTERLOOP OP_ENTERSUB OP_ENTERTRY\nsyn keyword xsConstant OP_ENTERWHEN OP_ENTERWRITE OP_EOF OP_EPROTOENT\nsyn keyword xsConstant OP_EPWENT OP_EQ OP_ESERVENT OP_EXEC OP_EXISTS OP_EXIT\nsyn keyword xsConstant OP_EXP OP_FC OP_FCNTL OP_FILENO OP_FLIP OP_FLOCK\nsyn keyword xsConstant OP_FLOP OP_FORK OP_FORMLINE OP_FTATIME OP_FTBINARY\nsyn keyword xsConstant OP_FTBLK OP_FTCHR OP_FTCTIME OP_FTDIR OP_FTEEXEC\nsyn keyword xsConstant OP_FTEOWNED OP_FTEREAD OP_FTEWRITE OP_FTFILE OP_FTIS\nsyn keyword xsConstant OP_FTLINK OP_FTMTIME OP_FTPIPE OP_FTREXEC OP_FTROWNED\nsyn keyword xsConstant OP_FTRREAD OP_FTRWRITE OP_FTSGID OP_FTSIZE OP_FTSOCK\nsyn keyword xsConstant OP_FTSUID OP_FTSVTX OP_FTTEXT OP_FTTTY OP_FTZERO OP_GE\nsyn keyword xsConstant OP_GELEM OP_GETC OP_GETLOGIN OP_GETPEERNAME OP_GETPGRP\nsyn keyword xsConstant OP_GETPPID OP_GETPRIORITY OP_GETSOCKNAME OP_GGRENT\nsyn keyword xsConstant OP_GGRGID OP_GGRNAM OP_GHBYADDR OP_GHBYNAME\nsyn keyword xsConstant OP_GHOSTENT OP_GLOB OP_GMTIME OP_GNBYADDR OP_GNBYNAME\nsyn keyword xsConstant OP_GNETENT OP_GOTO OP_GPBYNAME OP_GPBYNUMBER\nsyn keyword xsConstant OP_GPROTOENT OP_GPWENT OP_GPWNAM OP_GPWUID\nsyn keyword xsConstant OP_GREPSTART OP_GREPWHILE OP_GSBYNAME OP_GSBYPORT\nsyn keyword xsConstant OP_GSERVENT OP_GSOCKOPT OP_GT OP_GV OP_GVSV OP_HELEM\nsyn keyword xsConstant OP_HEX OP_HINTSEVAL OP_HSLICE OP_INDEX OP_INT OP_IOCTL\nsyn keyword xsConstant OP_ITER OP_I_ADD OP_I_DIVIDE OP_I_EQ OP_I_GE OP_I_GT\nsyn keyword xsConstant OP_I_LE OP_I_LT OP_I_MODULO OP_I_MULTIPLY OP_I_NCMP\nsyn keyword xsConstant OP_I_NE OP_I_NEGATE OP_I_POSTDEC OP_I_POSTINC\nsyn keyword xsConstant OP_I_PREDEC OP_I_PREINC OP_I_SUBTRACT OP_JOIN OP_KEYS\nsyn keyword xsConstant OP_KILL OP_LAST OP_LC OP_LCFIRST OP_LE OP_LEAVE\nsyn keyword xsConstant OP_LEAVEEVAL OP_LEAVEGIVEN OP_LEAVELOOP OP_LEAVESUB\nsyn keyword xsConstant OP_LEAVESUBLV OP_LEAVETRY OP_LEAVEWHEN OP_LEAVEWRITE\nsyn keyword xsConstant OP_LEFT_SHIFT OP_LENGTH OP_LINESEQ OP_LINK OP_LIST\nsyn keyword xsConstant OP_LISTEN OP_LOCALTIME OP_LOCK OP_LOG OP_LSLICE\nsyn keyword xsConstant OP_LSTAT OP_LT OP_MAPSTART OP_MAPWHILE OP_MATCH\nsyn keyword xsConstant OP_METHOD OP_METHOD_NAMED OP_MKDIR OP_MODULO OP_MSGCTL\nsyn keyword xsConstant OP_MSGGET OP_MSGRCV OP_MSGSND OP_MULTIPLY OP_NCMP\nsyn keyword xsConstant OP_NE OP_NEGATE OP_NEXT OP_NEXTSTATE OP_NOT OP_NULL\nsyn keyword xsConstant OP_OCT OP_ONCE OP_OPEN OP_OPEN_DIR OP_OR OP_ORASSIGN\nsyn keyword xsConstant OP_ORD OP_PACK OP_PADANY OP_PADAV OP_PADHV OP_PADSV\nsyn keyword xsConstant OP_PIPE_OP OP_POP OP_POS OP_POSTDEC OP_POSTINC OP_POW\nsyn keyword xsConstant OP_PREDEC OP_PREINC OP_PRINT OP_PROTOTYPE OP_PRTF\nsyn keyword xsConstant OP_PUSH OP_PUSHMARK OP_PUSHRE OP_QR OP_QUOTEMETA\nsyn keyword xsConstant OP_RAND OP_RANGE OP_RCATLINE OP_REACH OP_READ\nsyn keyword xsConstant OP_READDIR OP_READLINE OP_READLINK OP_RECV OP_REDO\nsyn keyword xsConstant OP_REF OP_REFGEN OP_REGCMAYBE OP_REGCOMP OP_REGCRESET\nsyn keyword xsConstant OP_RENAME OP_REPEAT OP_REQUIRE OP_RESET OP_RETURN\nsyn keyword xsConstant OP_REVERSE OP_REWINDDIR OP_RIGHT_SHIFT OP_RINDEX\nsyn keyword xsConstant OP_RKEYS OP_RMDIR OP_RUNCV OP_RV2AV OP_RV2CV OP_RV2GV\nsyn keyword xsConstant OP_RV2HV OP_RV2SV OP_RVALUES OP_SASSIGN OP_SAY\nsyn keyword xsConstant OP_SCALAR OP_SCHOMP OP_SCHOP OP_SCMP OP_SCOPE OP_SEEK\nsyn keyword xsConstant OP_SEEKDIR OP_SELECT OP_SEMCTL OP_SEMGET OP_SEMOP\nsyn keyword xsConstant OP_SEND OP_SEQ OP_SETPGRP OP_SETPRIORITY OP_SGE\nsyn keyword xsConstant OP_SGRENT OP_SGT OP_SHIFT OP_SHMCTL OP_SHMGET\nsyn keyword xsConstant OP_SHMREAD OP_SHMWRITE OP_SHOSTENT OP_SHUTDOWN OP_SIN\nsyn keyword xsConstant OP_SLE OP_SLEEP OP_SLT OP_SMARTMATCH OP_SNE OP_SNETENT\nsyn keyword xsConstant OP_SOCKET OP_SOCKPAIR OP_SORT OP_SPLICE OP_SPLIT\nsyn keyword xsConstant OP_SPRINTF OP_SPROTOENT OP_SPWENT OP_SQRT OP_SRAND\nsyn keyword xsConstant OP_SREFGEN OP_SSELECT OP_SSERVENT OP_SSOCKOPT OP_STAT\nsyn keyword xsConstant OP_STRINGIFY OP_STUB OP_STUDY OP_SUBST OP_SUBSTCONT\nsyn keyword xsConstant OP_SUBSTR OP_SUBTRACT OP_SYMLINK OP_SYSCALL OP_SYSOPEN\nsyn keyword xsConstant OP_SYSREAD OP_SYSSEEK OP_SYSTEM OP_SYSWRITE OP_TELL\nsyn keyword xsConstant OP_TELLDIR OP_TIE OP_TIED OP_TIME OP_TMS OP_TRANS\nsyn keyword xsConstant OP_TRANSR OP_TRUNCATE OP_UC OP_UCFIRST OP_UMASK\nsyn keyword xsConstant OP_UNDEF OP_UNLINK OP_UNPACK OP_UNSHIFT OP_UNSTACK\nsyn keyword xsConstant OP_UNTIE OP_UTIME OP_VALUES OP_VEC OP_WAIT OP_WAITPID\nsyn keyword xsConstant OP_WANTARRAY OP_WARN OP_XOR OP_max OPf_KIDS OPf_KNOW\nsyn keyword xsConstant OPf_LIST OPf_MOD OPf_PARENS OPf_REF OPf_SPECIAL\nsyn keyword xsConstant OPf_STACKED OPf_WANT OPf_WANT_LIST OPf_WANT_SCALAR\nsyn keyword xsConstant OPf_WANT_VOID OPpALLOW_FAKE OPpASSIGN_BACKWARDS\nsyn keyword xsConstant OPpASSIGN_COMMON OPpASSIGN_CV_TO_GV OPpCONST_BARE\nsyn keyword xsConstant OPpCONST_ENTERED OPpCONST_NOVER OPpCONST_SHORTCIRCUIT\nsyn keyword xsConstant OPpCONST_STRICT OPpCONST_WARNING OPpCOREARGS_DEREF1\nsyn keyword xsConstant OPpCOREARGS_DEREF2 OPpCOREARGS_PUSHMARK\nsyn keyword xsConstant OPpCOREARGS_SCALARMOD OPpDEREF OPpDEREF_AV OPpDEREF_HV\nsyn keyword xsConstant OPpDEREF_SV OPpDONT_INIT_GV OPpEARLY_CV\nsyn keyword xsConstant OPpENTERSUB_AMPER OPpENTERSUB_DB OPpENTERSUB_HASTARG\nsyn keyword xsConstant OPpENTERSUB_INARGS OPpENTERSUB_LVAL_MASK\nsyn keyword xsConstant OPpENTERSUB_NOPAREN OPpEVAL_BYTES OPpEVAL_COPHH\nsyn keyword xsConstant OPpEVAL_HAS_HH OPpEVAL_UNICODE OPpEXISTS_SUB\nsyn keyword xsConstant OPpEXIT_VMSISH OPpFLIP_LINENUM OPpFT_ACCESS\nsyn keyword xsConstant OPpFT_AFTER_t OPpFT_STACKED OPpFT_STACKING OPpGREP_LEX\nsyn keyword xsConstant OPpHUSH_VMSISH OPpITER_DEF OPpITER_REVERSED\nsyn keyword xsConstant OPpLIST_GUESSED OPpLVAL_DEFER OPpLVAL_INTRO\nsyn keyword xsConstant OPpMAYBE_LVSUB OPpMAY_RETURN_CONSTANT OPpOFFBYONE\nsyn keyword xsConstant OPpOPEN_IN_CRLF OPpOPEN_IN_RAW OPpOPEN_OUT_CRLF\nsyn keyword xsConstant OPpOPEN_OUT_RAW OPpOUR_INTRO OPpPAD_STATE\nsyn keyword xsConstant OPpPV_IS_UTF8 OPpREFCOUNTED OPpREPEAT_DOLIST\nsyn keyword xsConstant OPpREVERSE_INPLACE OPpRUNTIME OPpSLICE OPpSORT_DESCEND\nsyn keyword xsConstant OPpSORT_INPLACE OPpSORT_INTEGER OPpSORT_NUMERIC\nsyn keyword xsConstant OPpSORT_QSORT OPpSORT_REVERSE OPpSORT_STABLE\nsyn keyword xsConstant OPpSUBSTR_REPL_FIRST OPpTARGET_MY OPpTRANS_ALL\nsyn keyword xsConstant OPpTRANS_COMPLEMENT OPpTRANS_DELETE OPpTRANS_FROM_UTF\nsyn keyword xsConstant OPpTRANS_GROWS OPpTRANS_IDENTICAL OPpTRANS_SQUASH\nsyn keyword xsConstant OPpTRANS_TO_UTF PERL_MAGIC_READONLY_ACCEPTABLE\nsyn keyword xsConstant PERL_MAGIC_TYPE_IS_VALUE_MAGIC\nsyn keyword xsConstant PERL_MAGIC_TYPE_READONLY_ACCEPTABLE\nsyn keyword xsConstant PERL_MAGIC_UTF8_CACHESIZE PERL_MAGIC_VALUE_MAGIC\nsyn keyword xsConstant PERL_MAGIC_VTABLE_MASK PERL_MAGIC_arylen\nsyn keyword xsConstant PERL_MAGIC_arylen_p PERL_MAGIC_backref PERL_MAGIC_bm\nsyn keyword xsConstant PERL_MAGIC_checkcall PERL_MAGIC_collxfrm\nsyn keyword xsConstant PERL_MAGIC_dbfile PERL_MAGIC_dbline PERL_MAGIC_defelem\nsyn keyword xsConstant PERL_MAGIC_env PERL_MAGIC_envelem PERL_MAGIC_ext\nsyn keyword xsConstant PERL_MAGIC_fm PERL_MAGIC_hints PERL_MAGIC_hintselem\nsyn keyword xsConstant PERL_MAGIC_isa PERL_MAGIC_isaelem PERL_MAGIC_nkeys\nsyn keyword xsConstant PERL_MAGIC_overload PERL_MAGIC_overload_elem\nsyn keyword xsConstant PERL_MAGIC_overload_table PERL_MAGIC_pos PERL_MAGIC_qr\nsyn keyword xsConstant PERL_MAGIC_regdata PERL_MAGIC_regdatum\nsyn keyword xsConstant PERL_MAGIC_regex_global PERL_MAGIC_rhash\nsyn keyword xsConstant PERL_MAGIC_shared PERL_MAGIC_shared_scalar\nsyn keyword xsConstant PERL_MAGIC_sig PERL_MAGIC_sigelem PERL_MAGIC_study\nsyn keyword xsConstant PERL_MAGIC_substr PERL_MAGIC_sv PERL_MAGIC_symtab\nsyn keyword xsConstant PERL_MAGIC_taint PERL_MAGIC_tied PERL_MAGIC_tiedelem\nsyn keyword xsConstant PERL_MAGIC_tiedscalar PERL_MAGIC_utf8 PERL_MAGIC_uvar\nsyn keyword xsConstant PERL_MAGIC_uvar_elem PERL_MAGIC_vec PERL_MAGIC_vstring\nsyn keyword xsConstant REGEX_ASCII_MORE_RESTRICTED_CHARSET\nsyn keyword xsConstant REGEX_ASCII_RESTRICTED_CHARSET REGEX_DEPENDS_CHARSET\nsyn keyword xsConstant REGEX_LOCALE_CHARSET REGEX_UNICODE_CHARSET SVfARG\nsyn keyword xsConstant SVf_AMAGIC SVf_BREAK SVf_FAKE SVf_IOK SVf_IVisUV\nsyn keyword xsConstant SVf_NOK SVf_OK SVf_OOK SVf_POK SVf_READONLY SVf_ROK\nsyn keyword xsConstant SVf_THINKFIRST SVf_UTF8 SVp_IOK SVp_NOK SVp_POK\nsyn keyword xsConstant SVp_SCREAM SVpad_NAME SVpad_OUR SVpad_STATE\nsyn keyword xsConstant SVpad_TYPED SVpav_REAL SVpav_REIFY SVpbm_TAIL\nsyn keyword xsConstant SVpbm_VALID SVpgv_GP SVphv_CLONEABLE SVphv_HASKFLAGS\nsyn keyword xsConstant SVphv_LAZYDEL SVphv_REHASH SVphv_SHAREKEYS\nsyn keyword xsConstant SVprv_PCS_IMPORTED SVprv_WEAKREF SVs_GMG SVs_OBJECT\nsyn keyword xsConstant SVs_PADMY SVs_PADSTALE SVs_PADTMP SVs_RMG SVs_SMG\nsyn keyword xsConstant SVs_TEMP SVt_BIND SVt_IV SVt_LAST SVt_NULL SVt_NV\nsyn keyword xsConstant SVt_PV SVt_PVAV SVt_PVBM SVt_PVCV SVt_PVFM SVt_PVGV\nsyn keyword xsConstant SVt_PVHV SVt_PVIO SVt_PVIV SVt_PVLV SVt_PVMG SVt_PVNV\nsyn keyword xsConstant SVt_REGEXP SVt_RV TRUE XATTRBLOCK XATTRTERM XBLOCK\nsyn keyword xsConstant XOPERATOR XREF XSTATE XTERM XTERMBLOCK XTERMORDORDOR\nsyn keyword xsConstant padtidy_FORMAT padtidy_SUB padtidy_SUBCLONE\nsyn keyword xsException XCPT_CATCH XCPT_RETHROW XCPT_TRY_END XCPT_TRY_START\nsyn keyword xsException dXCPT\nsyn keyword xsKeyword ALIAS: BOOT: CASE: CLEANUP: CODE: C_ARGS: DISABLE\nsyn keyword xsKeyword ENABLE FALLBACK: IN INCLUDE: INIT: INPUT: INTERFACE:\nsyn keyword xsKeyword INTERFACE_MACRO: IN_OUT IN_OUTLIST MODULE NO_INIT:\nsyn keyword xsKeyword NO_OUTPUT: OUT OUTLIST OUTPUT: OVERLOAD: PACKAGE\nsyn keyword xsKeyword POSTCALL: PPCODE: PREFIX PREINIT: PROTOTYPE:\nsyn keyword xsKeyword PROTOTYPES: REQUIRE: SCOPE: VERSIONCHECK: length\nsyn keyword xsFunction GetVars Gv_AMupdate PerlIO_clearerr PerlIO_close\nsyn keyword xsFunction PerlIO_eof PerlIO_error PerlIO_fileno PerlIO_fill\nsyn keyword xsFunction PerlIO_flush PerlIO_get_base PerlIO_get_bufsiz\nsyn keyword xsFunction PerlIO_get_cnt PerlIO_get_ptr PerlIO_read PerlIO_seek\nsyn keyword xsFunction PerlIO_set_cnt PerlIO_set_ptrcnt PerlIO_setlinebuf\nsyn keyword xsFunction PerlIO_stderr PerlIO_stdin PerlIO_stdout PerlIO_tell\nsyn keyword xsFunction PerlIO_unread PerlIO_write Perl_GetVars\nsyn keyword xsFunction Perl_Gv_AMupdate Perl_PerlIO_clearerr\nsyn keyword xsFunction Perl_PerlIO_close Perl_PerlIO_context_layers\nsyn keyword xsFunction Perl_PerlIO_eof Perl_PerlIO_error Perl_PerlIO_fileno\nsyn keyword xsFunction Perl_PerlIO_fill Perl_PerlIO_flush\nsyn keyword xsFunction Perl_PerlIO_get_base Perl_PerlIO_get_bufsiz\nsyn keyword xsFunction Perl_PerlIO_get_cnt Perl_PerlIO_get_ptr\nsyn keyword xsFunction Perl_PerlIO_read Perl_PerlIO_seek Perl_PerlIO_set_cnt\nsyn keyword xsFunction Perl_PerlIO_set_ptrcnt Perl_PerlIO_setlinebuf\nsyn keyword xsFunction Perl_PerlIO_stderr Perl_PerlIO_stdin\nsyn keyword xsFunction Perl_PerlIO_stdout Perl_PerlIO_tell Perl_PerlIO_unread\nsyn keyword xsFunction Perl_PerlIO_write Perl_Slab_Alloc Perl_Slab_Free\nsyn keyword xsFunction Perl__is_utf8_quotemeta Perl__to_uni_fold_flags\nsyn keyword xsFunction Perl__to_utf8_fold_flags Perl__to_utf8_lower_flags\nsyn keyword xsFunction Perl__to_utf8_title_flags Perl__to_utf8_upper_flags\nsyn keyword xsFunction Perl_amagic_call Perl_amagic_deref_call Perl_any_dup\nsyn keyword xsFunction Perl_apply_attrs_string Perl_atfork_lock\nsyn keyword xsFunction Perl_atfork_unlock Perl_av_arylen_p Perl_av_clear\nsyn keyword xsFunction Perl_av_create_and_push Perl_av_create_and_unshift_one\nsyn keyword xsFunction Perl_av_delete Perl_av_exists Perl_av_extend\nsyn keyword xsFunction Perl_av_fetch Perl_av_fill Perl_av_iter_p Perl_av_len\nsyn keyword xsFunction Perl_av_make Perl_av_pop Perl_av_push Perl_av_shift\nsyn keyword xsFunction Perl_av_store Perl_av_undef Perl_av_unshift\nsyn keyword xsFunction Perl_block_gimme Perl_blockhook_register\nsyn keyword xsFunction Perl_bytes_cmp_utf8 Perl_bytes_from_utf8\nsyn keyword xsFunction Perl_bytes_to_utf8 Perl_call_argv Perl_call_atexit\nsyn keyword xsFunction Perl_call_list Perl_call_method Perl_call_pv\nsyn keyword xsFunction Perl_call_sv Perl_caller_cx Perl_calloc Perl_cast_i32\nsyn keyword xsFunction Perl_cast_iv Perl_cast_ulong Perl_cast_uv\nsyn keyword xsFunction Perl_ck_entersub_args_list Perl_ck_entersub_args_proto\nsyn keyword xsFunction Perl_ck_entersub_args_proto_or_list Perl_ck_warner\nsyn keyword xsFunction Perl_ck_warner_d Perl_ckwarn Perl_ckwarn_d\nsyn keyword xsFunction Perl_clone_params_del Perl_clone_params_new\nsyn keyword xsFunction Perl_cop_fetch_label Perl_cop_store_label Perl_croak\nsyn keyword xsFunction Perl_croak_no_modify Perl_croak_nocontext\nsyn keyword xsFunction Perl_croak_sv Perl_croak_xs_usage Perl_csighandler\nsyn keyword xsFunction Perl_custom_op_desc Perl_custom_op_name\nsyn keyword xsFunction Perl_custom_op_register Perl_custom_op_xop\nsyn keyword xsFunction Perl_cv_clone Perl_cv_const_sv\nsyn keyword xsFunction Perl_cv_get_call_checker Perl_cv_set_call_checker\nsyn keyword xsFunction Perl_cv_undef Perl_cx_dump Perl_cx_dup Perl_cxinc\nsyn keyword xsFunction Perl_deb Perl_deb_nocontext Perl_debop\nsyn keyword xsFunction Perl_debprofdump Perl_debstack Perl_debstackptrs\nsyn keyword xsFunction Perl_delimcpy Perl_despatch_signals Perl_die\nsyn keyword xsFunction Perl_die_nocontext Perl_die_sv Perl_dirp_dup\nsyn keyword xsFunction Perl_do_aspawn Perl_do_binmode Perl_do_close\nsyn keyword xsFunction Perl_do_gv_dump Perl_do_gvgv_dump Perl_do_hv_dump\nsyn keyword xsFunction Perl_do_join Perl_do_magic_dump Perl_do_op_dump\nsyn keyword xsFunction Perl_do_open9 Perl_do_openn Perl_do_pmop_dump\nsyn keyword xsFunction Perl_do_spawn Perl_do_spawn_nowait Perl_do_sprintf\nsyn keyword xsFunction Perl_do_sv_dump Perl_doing_taint Perl_doref\nsyn keyword xsFunction Perl_dounwind Perl_dowantarray Perl_dump_all\nsyn keyword xsFunction Perl_dump_eval Perl_dump_fds Perl_dump_form\nsyn keyword xsFunction Perl_dump_indent Perl_dump_mstats Perl_dump_packsubs\nsyn keyword xsFunction Perl_dump_sub Perl_dump_vindent Perl_eval_pv\nsyn keyword xsFunction Perl_eval_sv Perl_fbm_compile Perl_fbm_instr\nsyn keyword xsFunction Perl_filter_add Perl_filter_del Perl_filter_read\nsyn keyword xsFunction Perl_find_runcv Perl_find_rundefsv Perl_foldEQ\nsyn keyword xsFunction Perl_foldEQ_latin1 Perl_foldEQ_locale\nsyn keyword xsFunction Perl_foldEQ_utf8_flags Perl_form Perl_form_nocontext\nsyn keyword xsFunction Perl_fp_dup Perl_fprintf_nocontext\nsyn keyword xsFunction Perl_free_global_struct Perl_free_tmps Perl_get_av\nsyn keyword xsFunction Perl_get_context Perl_get_cv Perl_get_cvn_flags\nsyn keyword xsFunction Perl_get_hv Perl_get_mstats Perl_get_op_descs\nsyn keyword xsFunction Perl_get_op_names Perl_get_ppaddr Perl_get_sv\nsyn keyword xsFunction Perl_get_vtbl Perl_getcwd_sv Perl_gp_dup Perl_gp_free\nsyn keyword xsFunction Perl_gp_ref Perl_grok_bin Perl_grok_hex\nsyn keyword xsFunction Perl_grok_number Perl_grok_numeric_radix Perl_grok_oct\nsyn keyword xsFunction Perl_gv_add_by_type Perl_gv_autoload_pv\nsyn keyword xsFunction Perl_gv_autoload_pvn Perl_gv_autoload_sv Perl_gv_check\nsyn keyword xsFunction Perl_gv_const_sv Perl_gv_dump Perl_gv_efullname\nsyn keyword xsFunction Perl_gv_efullname4 Perl_gv_fetchfile\nsyn keyword xsFunction Perl_gv_fetchfile_flags Perl_gv_fetchmeth_pv\nsyn keyword xsFunction Perl_gv_fetchmeth_pv_autoload Perl_gv_fetchmeth_pvn\nsyn keyword xsFunction Perl_gv_fetchmeth_pvn_autoload Perl_gv_fetchmeth_sv\nsyn keyword xsFunction Perl_gv_fetchmeth_sv_autoload\nsyn keyword xsFunction Perl_gv_fetchmethod_autoload\nsyn keyword xsFunction Perl_gv_fetchmethod_pv_flags\nsyn keyword xsFunction Perl_gv_fetchmethod_pvn_flags\nsyn keyword xsFunction Perl_gv_fetchmethod_sv_flags Perl_gv_fetchpv\nsyn keyword xsFunction Perl_gv_fetchpvn_flags Perl_gv_fetchsv\nsyn keyword xsFunction Perl_gv_fullname Perl_gv_fullname4 Perl_gv_handler\nsyn keyword xsFunction Perl_gv_init_pv Perl_gv_init_pvn Perl_gv_init_sv\nsyn keyword xsFunction Perl_gv_name_set Perl_gv_stashpv Perl_gv_stashpvn\nsyn keyword xsFunction Perl_gv_stashsv Perl_he_dup Perl_hek_dup\nsyn keyword xsFunction Perl_hv_assert Perl_hv_clear\nsyn keyword xsFunction Perl_hv_clear_placeholders Perl_hv_common\nsyn keyword xsFunction Perl_hv_common_key_len Perl_hv_copy_hints_hv\nsyn keyword xsFunction Perl_hv_delayfree_ent Perl_hv_eiter_p\nsyn keyword xsFunction Perl_hv_eiter_set Perl_hv_fill Perl_hv_free_ent\nsyn keyword xsFunction Perl_hv_iterinit Perl_hv_iterkey Perl_hv_iterkeysv\nsyn keyword xsFunction Perl_hv_iternext_flags Perl_hv_iternextsv\nsyn keyword xsFunction Perl_hv_iterval Perl_hv_ksplit Perl_hv_name_set\nsyn keyword xsFunction Perl_hv_placeholders_get Perl_hv_placeholders_p\nsyn keyword xsFunction Perl_hv_placeholders_set Perl_hv_riter_p\nsyn keyword xsFunction Perl_hv_riter_set Perl_hv_scalar\nsyn keyword xsFunction Perl_init_global_struct Perl_init_i18nl10n\nsyn keyword xsFunction Perl_init_i18nl14n Perl_init_stacks Perl_init_tm\nsyn keyword xsFunction Perl_instr Perl_is_ascii_string Perl_is_lvalue_sub\nsyn keyword xsFunction Perl_is_uni_alnum Perl_is_uni_alnum_lc\nsyn keyword xsFunction Perl_is_uni_alpha Perl_is_uni_alpha_lc\nsyn keyword xsFunction Perl_is_uni_ascii Perl_is_uni_ascii_lc\nsyn keyword xsFunction Perl_is_uni_cntrl Perl_is_uni_cntrl_lc\nsyn keyword xsFunction Perl_is_uni_digit Perl_is_uni_digit_lc\nsyn keyword xsFunction Perl_is_uni_graph Perl_is_uni_graph_lc\nsyn keyword xsFunction Perl_is_uni_idfirst Perl_is_uni_idfirst_lc\nsyn keyword xsFunction Perl_is_uni_lower Perl_is_uni_lower_lc\nsyn keyword xsFunction Perl_is_uni_print Perl_is_uni_print_lc\nsyn keyword xsFunction Perl_is_uni_punct Perl_is_uni_punct_lc\nsyn keyword xsFunction Perl_is_uni_space Perl_is_uni_space_lc\nsyn keyword xsFunction Perl_is_uni_upper Perl_is_uni_upper_lc\nsyn keyword xsFunction Perl_is_uni_xdigit Perl_is_uni_xdigit_lc\nsyn keyword xsFunction Perl_is_utf8_alnum Perl_is_utf8_alpha\nsyn keyword xsFunction Perl_is_utf8_ascii Perl_is_utf8_char_buf\nsyn keyword xsFunction Perl_is_utf8_cntrl Perl_is_utf8_digit\nsyn keyword xsFunction Perl_is_utf8_graph Perl_is_utf8_idcont\nsyn keyword xsFunction Perl_is_utf8_idfirst Perl_is_utf8_lower\nsyn keyword xsFunction Perl_is_utf8_mark Perl_is_utf8_perl_space\nsyn keyword xsFunction Perl_is_utf8_perl_word Perl_is_utf8_posix_digit\nsyn keyword xsFunction Perl_is_utf8_print Perl_is_utf8_punct\nsyn keyword xsFunction Perl_is_utf8_space Perl_is_utf8_string\nsyn keyword xsFunction Perl_is_utf8_string_loclen Perl_is_utf8_upper\nsyn keyword xsFunction Perl_is_utf8_xdigit Perl_is_utf8_xidcont\nsyn keyword xsFunction Perl_is_utf8_xidfirst Perl_leave_scope\nsyn keyword xsFunction Perl_lex_bufutf8 Perl_lex_discard_to\nsyn keyword xsFunction Perl_lex_grow_linestr Perl_lex_next_chunk\nsyn keyword xsFunction Perl_lex_peek_unichar Perl_lex_read_space\nsyn keyword xsFunction Perl_lex_read_to Perl_lex_read_unichar Perl_lex_start\nsyn keyword xsFunction Perl_lex_stuff_pv Perl_lex_stuff_pvn Perl_lex_stuff_sv\nsyn keyword xsFunction Perl_lex_unstuff Perl_load_module\nsyn keyword xsFunction Perl_load_module_nocontext Perl_looks_like_number\nsyn keyword xsFunction Perl_magic_dump Perl_malloc Perl_markstack_grow\nsyn keyword xsFunction Perl_mess Perl_mess_nocontext Perl_mess_sv Perl_mfree\nsyn keyword xsFunction Perl_mg_clear Perl_mg_copy Perl_mg_dup Perl_mg_find\nsyn keyword xsFunction Perl_mg_findext Perl_mg_free Perl_mg_free_type\nsyn keyword xsFunction Perl_mg_get Perl_mg_length Perl_mg_magical Perl_mg_set\nsyn keyword xsFunction Perl_mg_size Perl_mini_mktime Perl_moreswitches\nsyn keyword xsFunction Perl_mro_get_from_name Perl_mro_get_linear_isa\nsyn keyword xsFunction Perl_mro_get_private_data Perl_mro_method_changed_in\nsyn keyword xsFunction Perl_mro_register Perl_mro_set_mro\nsyn keyword xsFunction Perl_mro_set_private_data Perl_my_atof Perl_my_atof2\nsyn keyword xsFunction Perl_my_bcopy Perl_my_bzero Perl_my_chsize\nsyn keyword xsFunction Perl_my_cxt_index Perl_my_cxt_init Perl_my_dirfd\nsyn keyword xsFunction Perl_my_exit Perl_my_failure_exit Perl_my_fflush_all\nsyn keyword xsFunction Perl_my_fork Perl_my_htonl Perl_my_memcmp\nsyn keyword xsFunction Perl_my_memset Perl_my_ntohl Perl_my_pclose\nsyn keyword xsFunction Perl_my_popen Perl_my_popen_list Perl_my_setenv\nsyn keyword xsFunction Perl_my_snprintf Perl_my_socketpair Perl_my_sprintf\nsyn keyword xsFunction Perl_my_strftime Perl_my_strlcat Perl_my_strlcpy\nsyn keyword xsFunction Perl_my_swap Perl_my_vsnprintf Perl_newANONATTRSUB\nsyn keyword xsFunction Perl_newANONHASH Perl_newANONLIST Perl_newANONSUB\nsyn keyword xsFunction Perl_newASSIGNOP Perl_newATTRSUB Perl_newAVREF\nsyn keyword xsFunction Perl_newBINOP Perl_newCONDOP Perl_newCONSTSUB\nsyn keyword xsFunction Perl_newCONSTSUB_flags Perl_newCVREF Perl_newFORM\nsyn keyword xsFunction Perl_newFOROP Perl_newGIVENOP Perl_newGVOP\nsyn keyword xsFunction Perl_newGVREF Perl_newGVgen_flags Perl_newHVREF\nsyn keyword xsFunction Perl_newHVhv Perl_newLISTOP Perl_newLOGOP\nsyn keyword xsFunction Perl_newLOOPEX Perl_newLOOPOP Perl_newMYSUB\nsyn keyword xsFunction Perl_newNULLLIST Perl_newOP Perl_newPADOP Perl_newPMOP\nsyn keyword xsFunction Perl_newPROG Perl_newPVOP Perl_newRANGE Perl_newRV\nsyn keyword xsFunction Perl_newRV_noinc Perl_newSLICEOP Perl_newSTATEOP\nsyn keyword xsFunction Perl_newSV Perl_newSVOP Perl_newSVREF Perl_newSV_type\nsyn keyword xsFunction Perl_newSVhek Perl_newSViv Perl_newSVnv Perl_newSVpv\nsyn keyword xsFunction Perl_newSVpv_share Perl_newSVpvf\nsyn keyword xsFunction Perl_newSVpvf_nocontext Perl_newSVpvn\nsyn keyword xsFunction Perl_newSVpvn_flags Perl_newSVpvn_share Perl_newSVrv\nsyn keyword xsFunction Perl_newSVsv Perl_newSVuv Perl_newUNOP Perl_newWHENOP\nsyn keyword xsFunction Perl_newWHILEOP Perl_newXS Perl_newXS_flags\nsyn keyword xsFunction Perl_new_collate Perl_new_ctype Perl_new_numeric\nsyn keyword xsFunction Perl_new_stackinfo Perl_new_version Perl_ninstr\nsyn keyword xsFunction Perl_nothreadhook Perl_op_append_elem\nsyn keyword xsFunction Perl_op_append_list Perl_op_contextualize Perl_op_dump\nsyn keyword xsFunction Perl_op_free Perl_op_linklist Perl_op_null\nsyn keyword xsFunction Perl_op_prepend_elem Perl_op_refcnt_lock\nsyn keyword xsFunction Perl_op_refcnt_unlock Perl_op_scope Perl_pack_cat\nsyn keyword xsFunction Perl_packlist Perl_pad_add_anon Perl_pad_add_name_pv\nsyn keyword xsFunction Perl_pad_add_name_pvn Perl_pad_add_name_sv\nsyn keyword xsFunction Perl_pad_alloc Perl_pad_compname_type\nsyn keyword xsFunction Perl_pad_findmy_pv Perl_pad_findmy_pvn\nsyn keyword xsFunction Perl_pad_findmy_sv Perl_pad_new Perl_pad_setsv\nsyn keyword xsFunction Perl_pad_sv Perl_pad_tidy Perl_parse_arithexpr\nsyn keyword xsFunction Perl_parse_barestmt Perl_parse_block\nsyn keyword xsFunction Perl_parse_fullexpr Perl_parse_fullstmt\nsyn keyword xsFunction Perl_parse_label Perl_parse_listexpr\nsyn keyword xsFunction Perl_parse_stmtseq Perl_parse_termexpr Perl_parser_dup\nsyn keyword xsFunction Perl_pmop_dump Perl_pop_scope Perl_pregcomp\nsyn keyword xsFunction Perl_pregexec Perl_pregfree Perl_pregfree2\nsyn keyword xsFunction Perl_prescan_version Perl_printf_nocontext\nsyn keyword xsFunction Perl_ptr_table_fetch Perl_ptr_table_free\nsyn keyword xsFunction Perl_ptr_table_new Perl_ptr_table_split\nsyn keyword xsFunction Perl_ptr_table_store Perl_push_scope Perl_pv_display\nsyn keyword xsFunction Perl_pv_escape Perl_pv_pretty Perl_pv_uni_display\nsyn keyword xsFunction Perl_re_compile Perl_re_dup_guts Perl_re_intuit_start\nsyn keyword xsFunction Perl_re_intuit_string Perl_realloc Perl_reentrant_free\nsyn keyword xsFunction Perl_reentrant_init Perl_reentrant_retry\nsyn keyword xsFunction Perl_reentrant_size Perl_reg_named_buff_all\nsyn keyword xsFunction Perl_reg_named_buff_exists Perl_reg_named_buff_fetch\nsyn keyword xsFunction Perl_reg_named_buff_firstkey\nsyn keyword xsFunction Perl_reg_named_buff_nextkey Perl_reg_named_buff_scalar\nsyn keyword xsFunction Perl_regclass_swash Perl_regdump Perl_regdupe_internal\nsyn keyword xsFunction Perl_regexec_flags Perl_regfree_internal\nsyn keyword xsFunction Perl_reginitcolors Perl_regnext Perl_repeatcpy\nsyn keyword xsFunction Perl_require_pv Perl_rninstr Perl_rsignal\nsyn keyword xsFunction Perl_rsignal_state Perl_runops_debug\nsyn keyword xsFunction Perl_runops_standard Perl_rv2cv_op_cv Perl_rvpv_dup\nsyn keyword xsFunction Perl_safesyscalloc Perl_safesysfree Perl_safesysmalloc\nsyn keyword xsFunction Perl_safesysrealloc Perl_save_I16 Perl_save_I32\nsyn keyword xsFunction Perl_save_I8 Perl_save_adelete Perl_save_aelem_flags\nsyn keyword xsFunction Perl_save_alloc Perl_save_aptr Perl_save_ary\nsyn keyword xsFunction Perl_save_bool Perl_save_clearsv Perl_save_delete\nsyn keyword xsFunction Perl_save_destructor Perl_save_destructor_x\nsyn keyword xsFunction Perl_save_generic_pvref Perl_save_generic_svref\nsyn keyword xsFunction Perl_save_gp Perl_save_hash Perl_save_hdelete\nsyn keyword xsFunction Perl_save_helem_flags Perl_save_hints Perl_save_hptr\nsyn keyword xsFunction Perl_save_int Perl_save_item Perl_save_iv\nsyn keyword xsFunction Perl_save_list Perl_save_long Perl_save_nogv\nsyn keyword xsFunction Perl_save_padsv_and_mortalize Perl_save_pptr\nsyn keyword xsFunction Perl_save_pushi32ptr Perl_save_pushptr\nsyn keyword xsFunction Perl_save_pushptrptr Perl_save_re_context\nsyn keyword xsFunction Perl_save_scalar Perl_save_set_svflags\nsyn keyword xsFunction Perl_save_shared_pvref Perl_save_sptr Perl_save_svref\nsyn keyword xsFunction Perl_save_vptr Perl_savepv Perl_savepvn\nsyn keyword xsFunction Perl_savesharedpv Perl_savesharedpvn\nsyn keyword xsFunction Perl_savesharedsvpv Perl_savestack_grow\nsyn keyword xsFunction Perl_savestack_grow_cnt Perl_savesvpv Perl_scan_bin\nsyn keyword xsFunction Perl_scan_hex Perl_scan_num Perl_scan_oct\nsyn keyword xsFunction Perl_scan_version Perl_scan_vstring Perl_screaminstr\nsyn keyword xsFunction Perl_seed Perl_set_context Perl_set_numeric_local\nsyn keyword xsFunction Perl_set_numeric_radix Perl_set_numeric_standard\nsyn keyword xsFunction Perl_setdefout Perl_share_hek Perl_si_dup Perl_sortsv\nsyn keyword xsFunction Perl_sortsv_flags Perl_ss_dup Perl_stack_grow\nsyn keyword xsFunction Perl_start_subparse Perl_stashpv_hvname_match\nsyn keyword xsFunction Perl_str_to_version Perl_sv_2bool_flags Perl_sv_2cv\nsyn keyword xsFunction Perl_sv_2io Perl_sv_2iv_flags Perl_sv_2mortal\nsyn keyword xsFunction Perl_sv_2nv_flags Perl_sv_2pv_flags Perl_sv_2pvbyte\nsyn keyword xsFunction Perl_sv_2pvutf8 Perl_sv_2uv_flags Perl_sv_backoff\nsyn keyword xsFunction Perl_sv_bless Perl_sv_cat_decode Perl_sv_catpv\nsyn keyword xsFunction Perl_sv_catpv_flags Perl_sv_catpv_mg Perl_sv_catpvf\nsyn keyword xsFunction Perl_sv_catpvf_mg Perl_sv_catpvf_mg_nocontext\nsyn keyword xsFunction Perl_sv_catpvf_nocontext Perl_sv_catpvn_flags\nsyn keyword xsFunction Perl_sv_catsv_flags Perl_sv_chop Perl_sv_clear\nsyn keyword xsFunction Perl_sv_cmp Perl_sv_cmp_flags Perl_sv_cmp_locale\nsyn keyword xsFunction Perl_sv_cmp_locale_flags Perl_sv_collxfrm_flags\nsyn keyword xsFunction Perl_sv_copypv Perl_sv_dec Perl_sv_dec_nomg\nsyn keyword xsFunction Perl_sv_derived_from Perl_sv_derived_from_pv\nsyn keyword xsFunction Perl_sv_derived_from_pvn Perl_sv_derived_from_sv\nsyn keyword xsFunction Perl_sv_destroyable Perl_sv_does Perl_sv_does_pv\nsyn keyword xsFunction Perl_sv_does_pvn Perl_sv_does_sv Perl_sv_dump\nsyn keyword xsFunction Perl_sv_dup Perl_sv_dup_inc Perl_sv_eq_flags\nsyn keyword xsFunction Perl_sv_force_normal_flags Perl_sv_free Perl_sv_gets\nsyn keyword xsFunction Perl_sv_grow Perl_sv_inc Perl_sv_inc_nomg\nsyn keyword xsFunction Perl_sv_insert_flags Perl_sv_isa Perl_sv_isobject\nsyn keyword xsFunction Perl_sv_iv Perl_sv_len Perl_sv_len_utf8 Perl_sv_magic\nsyn keyword xsFunction Perl_sv_magicext Perl_sv_mortalcopy Perl_sv_newmortal\nsyn keyword xsFunction Perl_sv_newref Perl_sv_nosharing Perl_sv_nounlocking\nsyn keyword xsFunction Perl_sv_nv Perl_sv_peek Perl_sv_pos_b2u\nsyn keyword xsFunction Perl_sv_pos_u2b Perl_sv_pos_u2b_flags Perl_sv_pvbyten\nsyn keyword xsFunction Perl_sv_pvbyten_force Perl_sv_pvn\nsyn keyword xsFunction Perl_sv_pvn_force_flags Perl_sv_pvn_nomg\nsyn keyword xsFunction Perl_sv_pvutf8n Perl_sv_pvutf8n_force\nsyn keyword xsFunction Perl_sv_recode_to_utf8 Perl_sv_reftype Perl_sv_replace\nsyn keyword xsFunction Perl_sv_report_used Perl_sv_reset Perl_sv_rvweaken\nsyn keyword xsFunction Perl_sv_setiv Perl_sv_setiv_mg Perl_sv_setnv\nsyn keyword xsFunction Perl_sv_setnv_mg Perl_sv_setpv Perl_sv_setpv_mg\nsyn keyword xsFunction Perl_sv_setpvf Perl_sv_setpvf_mg\nsyn keyword xsFunction Perl_sv_setpvf_mg_nocontext Perl_sv_setpvf_nocontext\nsyn keyword xsFunction Perl_sv_setpviv Perl_sv_setpviv_mg Perl_sv_setpvn\nsyn keyword xsFunction Perl_sv_setpvn_mg Perl_sv_setref_iv Perl_sv_setref_nv\nsyn keyword xsFunction Perl_sv_setref_pv Perl_sv_setref_pvn Perl_sv_setref_uv\nsyn keyword xsFunction Perl_sv_setsv_flags Perl_sv_setsv_mg Perl_sv_setuv\nsyn keyword xsFunction Perl_sv_setuv_mg Perl_sv_tainted Perl_sv_true\nsyn keyword xsFunction Perl_sv_uni_display Perl_sv_unmagic Perl_sv_unmagicext\nsyn keyword xsFunction Perl_sv_unref_flags Perl_sv_untaint Perl_sv_upgrade\nsyn keyword xsFunction Perl_sv_usepvn_flags Perl_sv_utf8_decode\nsyn keyword xsFunction Perl_sv_utf8_downgrade Perl_sv_utf8_encode\nsyn keyword xsFunction Perl_sv_utf8_upgrade_flags_grow Perl_sv_uv\nsyn keyword xsFunction Perl_sv_vcatpvf Perl_sv_vcatpvf_mg Perl_sv_vcatpvfn\nsyn keyword xsFunction Perl_sv_vsetpvf Perl_sv_vsetpvf_mg Perl_sv_vsetpvfn\nsyn keyword xsFunction Perl_swash_fetch Perl_swash_init Perl_sys_init\nsyn keyword xsFunction Perl_sys_init3 Perl_sys_intern_clear\nsyn keyword xsFunction Perl_sys_intern_dup Perl_sys_intern_init Perl_sys_term\nsyn keyword xsFunction Perl_taint_env Perl_taint_proper Perl_tmps_grow\nsyn keyword xsFunction Perl_to_uni_lower Perl_to_uni_lower_lc\nsyn keyword xsFunction Perl_to_uni_title Perl_to_uni_title_lc\nsyn keyword xsFunction Perl_to_uni_upper Perl_to_uni_upper_lc\nsyn keyword xsFunction Perl_to_utf8_case Perl_unlnk Perl_unpack_str\nsyn keyword xsFunction Perl_unpackstring Perl_unsharepvn Perl_upg_version\nsyn keyword xsFunction Perl_utf16_to_utf8 Perl_utf16_to_utf8_reversed\nsyn keyword xsFunction Perl_utf8_distance Perl_utf8_hop Perl_utf8_length\nsyn keyword xsFunction Perl_utf8_to_bytes Perl_utf8_to_uvchr_buf\nsyn keyword xsFunction Perl_utf8_to_uvuni_buf Perl_utf8n_to_uvchr\nsyn keyword xsFunction Perl_utf8n_to_uvuni Perl_uvchr_to_utf8\nsyn keyword xsFunction Perl_uvchr_to_utf8_flags Perl_uvuni_to_utf8_flags\nsyn keyword xsFunction Perl_valid_utf8_to_uvchr Perl_valid_utf8_to_uvuni\nsyn keyword xsFunction Perl_vcmp Perl_vcroak Perl_vdeb Perl_vform\nsyn keyword xsFunction Perl_vload_module Perl_vmess Perl_vnewSVpvf\nsyn keyword xsFunction Perl_vnormal Perl_vnumify Perl_vstringify Perl_vverify\nsyn keyword xsFunction Perl_vwarn Perl_vwarner Perl_warn Perl_warn_nocontext\nsyn keyword xsFunction Perl_warn_sv Perl_warner Perl_warner_nocontext\nsyn keyword xsFunction Perl_whichsig_pv Perl_whichsig_pvn Perl_whichsig_sv\nsyn keyword xsFunction Perl_wrap_op_checker Slab_Alloc Slab_Free\nsyn keyword xsFunction _is_utf8_quotemeta _to_uni_fold_flags\nsyn keyword xsFunction _to_utf8_fold_flags _to_utf8_lower_flags\nsyn keyword xsFunction _to_utf8_title_flags _to_utf8_upper_flags amagic_call\nsyn keyword xsFunction amagic_deref_call any_dup apply_attrs_string\nsyn keyword xsFunction atfork_lock atfork_unlock av_clear av_delete av_exists\nsyn keyword xsFunction av_extend av_fetch av_fill av_len av_make av_pop\nsyn keyword xsFunction av_push av_shift av_store av_undef av_unshift\nsyn keyword xsFunction block_gimme bytes_cmp_utf8 bytes_from_utf8\nsyn keyword xsFunction bytes_to_utf8 call_argv call_atexit call_list\nsyn keyword xsFunction call_method call_pv call_sv caller_cx cast_i32 cast_iv\nsyn keyword xsFunction cast_ulong cast_uv ck_entersub_args_list\nsyn keyword xsFunction ck_entersub_args_proto ck_entersub_args_proto_or_list\nsyn keyword xsFunction ck_warner ck_warner_d croak croak_no_modify\nsyn keyword xsFunction croak_nocontext croak_sv croak_xs_usage csighandler\nsyn keyword xsFunction custom_op_desc custom_op_name cv_clone cv_const_sv\nsyn keyword xsFunction cv_get_call_checker cv_set_call_checker cv_undef\nsyn keyword xsFunction cx_dump cx_dup cxinc deb deb_nocontext debop\nsyn keyword xsFunction debprofdump debstack debstackptrs delimcpy\nsyn keyword xsFunction despatch_signals die die_nocontext die_sv dirp_dup\nsyn keyword xsFunction do_aspawn do_binmode do_close do_gv_dump do_gvgv_dump\nsyn keyword xsFunction do_hv_dump do_join do_magic_dump do_op_dump do_open9\nsyn keyword xsFunction do_openn do_pmop_dump do_spawn do_spawn_nowait\nsyn keyword xsFunction do_sprintf do_sv_dump doing_taint doref dounwind\nsyn keyword xsFunction dowantarray dump_all dump_eval dump_fds dump_form\nsyn keyword xsFunction dump_indent dump_mstats dump_packsubs dump_sub\nsyn keyword xsFunction dump_vindent eval_pv eval_sv fbm_compile fbm_instr\nsyn keyword xsFunction filter_add filter_del filter_read find_runcv\nsyn keyword xsFunction find_rundefsv foldEQ foldEQ_latin1 foldEQ_locale\nsyn keyword xsFunction foldEQ_utf8_flags form form_nocontext fp_dup\nsyn keyword xsFunction fprintf_nocontext free_global_struct free_tmps get_av\nsyn keyword xsFunction get_context get_cv get_cvn_flags get_hv get_mstats\nsyn keyword xsFunction get_op_descs get_op_names get_ppaddr get_sv get_vtbl\nsyn keyword xsFunction getcwd_sv gp_dup gp_free gp_ref grok_bin grok_hex\nsyn keyword xsFunction grok_number grok_numeric_radix grok_oct gv_add_by_type\nsyn keyword xsFunction gv_autoload_pv gv_autoload_pvn gv_autoload_sv gv_check\nsyn keyword xsFunction gv_const_sv gv_dump gv_efullname gv_efullname4\nsyn keyword xsFunction gv_fetchfile gv_fetchfile_flags gv_fetchmeth_pv\nsyn keyword xsFunction gv_fetchmeth_pv_autoload gv_fetchmeth_pvn\nsyn keyword xsFunction gv_fetchmeth_pvn_autoload gv_fetchmeth_sv\nsyn keyword xsFunction gv_fetchmeth_sv_autoload gv_fetchmethod_autoload\nsyn keyword xsFunction gv_fetchmethod_pv_flags gv_fetchmethod_pvn_flags\nsyn keyword xsFunction gv_fetchmethod_sv_flags gv_fetchpv gv_fetchpvn_flags\nsyn keyword xsFunction gv_fetchsv gv_fullname gv_fullname4 gv_handler\nsyn keyword xsFunction gv_init_pv gv_init_pvn gv_init_sv gv_name_set\nsyn keyword xsFunction gv_stashpv gv_stashpvn gv_stashsv he_dup hek_dup\nsyn keyword xsFunction hv_clear hv_clear_placeholders hv_common\nsyn keyword xsFunction hv_common_key_len hv_copy_hints_hv hv_delayfree_ent\nsyn keyword xsFunction hv_free_ent hv_iterinit hv_iterkey hv_iterkeysv\nsyn keyword xsFunction hv_iternext_flags hv_iternextsv hv_iterval hv_ksplit\nsyn keyword xsFunction hv_name_set hv_scalar init_global_struct init_i18nl10n\nsyn keyword xsFunction init_i18nl14n init_stacks init_tm instr\nsyn keyword xsFunction is_ascii_string is_lvalue_sub is_uni_alnum\nsyn keyword xsFunction is_uni_alnum_lc is_uni_alpha is_uni_alpha_lc\nsyn keyword xsFunction is_uni_ascii is_uni_ascii_lc is_uni_cntrl\nsyn keyword xsFunction is_uni_cntrl_lc is_uni_digit is_uni_digit_lc\nsyn keyword xsFunction is_uni_graph is_uni_graph_lc is_uni_idfirst\nsyn keyword xsFunction is_uni_idfirst_lc is_uni_lower is_uni_lower_lc\nsyn keyword xsFunction is_uni_print is_uni_print_lc is_uni_punct\nsyn keyword xsFunction is_uni_punct_lc is_uni_space is_uni_space_lc\nsyn keyword xsFunction is_uni_upper is_uni_upper_lc is_uni_xdigit\nsyn keyword xsFunction is_uni_xdigit_lc is_utf8_alnum is_utf8_alpha\nsyn keyword xsFunction is_utf8_ascii is_utf8_char_buf is_utf8_cntrl\nsyn keyword xsFunction is_utf8_digit is_utf8_graph is_utf8_idcont\nsyn keyword xsFunction is_utf8_idfirst is_utf8_lower is_utf8_mark\nsyn keyword xsFunction is_utf8_perl_space is_utf8_perl_word\nsyn keyword xsFunction is_utf8_posix_digit is_utf8_print is_utf8_punct\nsyn keyword xsFunction is_utf8_space is_utf8_string is_utf8_string_loclen\nsyn keyword xsFunction is_utf8_upper is_utf8_xdigit is_utf8_xidcont\nsyn keyword xsFunction is_utf8_xidfirst leave_scope lex_bufutf8\nsyn keyword xsFunction lex_discard_to lex_grow_linestr lex_next_chunk\nsyn keyword xsFunction lex_peek_unichar lex_read_space lex_read_to\nsyn keyword xsFunction lex_read_unichar lex_start lex_stuff_pv lex_stuff_pvn\nsyn keyword xsFunction lex_stuff_sv lex_unstuff load_module\nsyn keyword xsFunction load_module_nocontext looks_like_number magic_dump\nsyn keyword xsFunction markstack_grow mess mess_nocontext mess_sv mg_clear\nsyn keyword xsFunction mg_copy mg_dup mg_find mg_findext mg_free mg_free_type\nsyn keyword xsFunction mg_get mg_length mg_magical mg_set mg_size mini_mktime\nsyn keyword xsFunction moreswitches mro_get_linear_isa mro_method_changed_in\nsyn keyword xsFunction my_atof my_atof2 my_bcopy my_bzero my_chsize my_dirfd\nsyn keyword xsFunction my_exit my_failure_exit my_fflush_all my_fork my_htonl\nsyn keyword xsFunction my_memcmp my_memset my_ntohl my_pclose my_popen\nsyn keyword xsFunction my_popen_list my_setenv my_socketpair my_strftime\nsyn keyword xsFunction my_swap newANONATTRSUB newANONHASH newANONLIST\nsyn keyword xsFunction newANONSUB newASSIGNOP newATTRSUB newAVREF newBINOP\nsyn keyword xsFunction newCONDOP newCONSTSUB newCONSTSUB_flags newCVREF\nsyn keyword xsFunction newFORM newFOROP newGIVENOP newGVOP newGVREF\nsyn keyword xsFunction newGVgen_flags newHVREF newHVhv newLISTOP newLOGOP\nsyn keyword xsFunction newLOOPEX newLOOPOP newMYSUB newNULLLIST newOP\nsyn keyword xsFunction newPADOP newPMOP newPROG newPVOP newRANGE newRV\nsyn keyword xsFunction newRV_noinc newSLICEOP newSTATEOP newSV newSVOP\nsyn keyword xsFunction newSVREF newSV_type newSVhek newSViv newSVnv newSVpv\nsyn keyword xsFunction newSVpv_share newSVpvf newSVpvf_nocontext newSVpvn\nsyn keyword xsFunction newSVpvn_flags newSVpvn_share newSVrv newSVsv newSVuv\nsyn keyword xsFunction newUNOP newWHENOP newWHILEOP newXS newXS_flags\nsyn keyword xsFunction new_collate new_ctype new_numeric new_stackinfo\nsyn keyword xsFunction new_version ninstr nothreadhook op_append_elem\nsyn keyword xsFunction op_append_list op_contextualize op_dump op_free\nsyn keyword xsFunction op_linklist op_null op_prepend_elem op_refcnt_lock\nsyn keyword xsFunction op_refcnt_unlock op_scope pack_cat packlist\nsyn keyword xsFunction pad_add_anon pad_add_name_pv pad_add_name_pvn\nsyn keyword xsFunction pad_add_name_sv pad_alloc pad_compname_type\nsyn keyword xsFunction pad_findmy_pv pad_findmy_pvn pad_findmy_sv pad_new\nsyn keyword xsFunction pad_setsv pad_sv pad_tidy parse_arithexpr\nsyn keyword xsFunction parse_barestmt parse_block parse_fullexpr\nsyn keyword xsFunction parse_fullstmt parse_label parse_listexpr\nsyn keyword xsFunction parse_stmtseq parse_termexpr parser_dup pmop_dump\nsyn keyword xsFunction pop_scope pregcomp pregexec pregfree pregfree2\nsyn keyword xsFunction prescan_version printf_nocontext ptr_table_fetch\nsyn keyword xsFunction ptr_table_free ptr_table_new ptr_table_split\nsyn keyword xsFunction ptr_table_store push_scope pv_display pv_escape\nsyn keyword xsFunction pv_pretty pv_uni_display re_compile re_dup_guts\nsyn keyword xsFunction re_intuit_start re_intuit_string reentrant_free\nsyn keyword xsFunction reentrant_init reentrant_retry reentrant_size\nsyn keyword xsFunction reg_named_buff_all reg_named_buff_exists\nsyn keyword xsFunction reg_named_buff_fetch reg_named_buff_firstkey\nsyn keyword xsFunction reg_named_buff_nextkey reg_named_buff_scalar\nsyn keyword xsFunction regclass_swash regdump regdupe_internal regexec_flags\nsyn keyword xsFunction regfree_internal reginitcolors regnext repeatcpy\nsyn keyword xsFunction require_pv rninstr rsignal rsignal_state runops_debug\nsyn keyword xsFunction runops_standard rv2cv_op_cv rvpv_dup safesyscalloc\nsyn keyword xsFunction safesysfree safesysmalloc safesysrealloc save_I16\nsyn keyword xsFunction save_I32 save_I8 save_adelete save_aelem_flags\nsyn keyword xsFunction save_alloc save_aptr save_ary save_bool save_clearsv\nsyn keyword xsFunction save_delete save_destructor save_destructor_x\nsyn keyword xsFunction save_generic_pvref save_generic_svref save_gp\nsyn keyword xsFunction save_hash save_hdelete save_helem_flags save_hints\nsyn keyword xsFunction save_hptr save_int save_item save_iv save_list\nsyn keyword xsFunction save_long save_nogv save_padsv_and_mortalize save_pptr\nsyn keyword xsFunction save_pushi32ptr save_pushptr save_pushptrptr\nsyn keyword xsFunction save_re_context save_scalar save_set_svflags\nsyn keyword xsFunction save_shared_pvref save_sptr save_svref save_vptr\nsyn keyword xsFunction savepv savepvn savesharedpv savesharedpvn\nsyn keyword xsFunction savesharedsvpv savestack_grow savestack_grow_cnt\nsyn keyword xsFunction savesvpv scan_bin scan_hex scan_num scan_oct\nsyn keyword xsFunction scan_version scan_vstring screaminstr seed set_context\nsyn keyword xsFunction set_numeric_local set_numeric_radix\nsyn keyword xsFunction set_numeric_standard setdefout share_hek si_dup sortsv\nsyn keyword xsFunction sortsv_flags ss_dup stack_grow start_subparse\nsyn keyword xsFunction stashpv_hvname_match str_to_version sv_2bool_flags\nsyn keyword xsFunction sv_2cv sv_2io sv_2iv_flags sv_2mortal sv_2nv_flags\nsyn keyword xsFunction sv_2pv_flags sv_2pvbyte sv_2pvutf8 sv_2uv_flags\nsyn keyword xsFunction sv_backoff sv_bless sv_cat_decode sv_catpv\nsyn keyword xsFunction sv_catpv_flags sv_catpv_mg sv_catpvf sv_catpvf_mg\nsyn keyword xsFunction sv_catpvf_mg_nocontext sv_catpvf_nocontext\nsyn keyword xsFunction sv_catpvn_flags sv_catsv_flags sv_chop sv_clear\nsyn keyword xsFunction sv_cmp_flags sv_cmp_locale_flags sv_collxfrm_flags\nsyn keyword xsFunction sv_copypv sv_dec sv_dec_nomg sv_derived_from\nsyn keyword xsFunction sv_derived_from_pv sv_derived_from_pvn\nsyn keyword xsFunction sv_derived_from_sv sv_destroyable sv_does sv_does_pv\nsyn keyword xsFunction sv_does_pvn sv_does_sv sv_dump sv_dup sv_dup_inc\nsyn keyword xsFunction sv_eq_flags sv_force_normal_flags sv_free sv_gets\nsyn keyword xsFunction sv_grow sv_inc sv_inc_nomg sv_insert_flags sv_isa\nsyn keyword xsFunction sv_isobject sv_iv sv_len sv_len_utf8 sv_magic\nsyn keyword xsFunction sv_magicext sv_mortalcopy sv_newmortal sv_newref\nsyn keyword xsFunction sv_nosharing sv_nounlocking sv_nv sv_peek sv_pos_b2u\nsyn keyword xsFunction sv_pos_u2b sv_pos_u2b_flags sv_pvbyten\nsyn keyword xsFunction sv_pvbyten_force sv_pvn sv_pvn_force_flags sv_pvn_nomg\nsyn keyword xsFunction sv_pvutf8n sv_pvutf8n_force sv_recode_to_utf8\nsyn keyword xsFunction sv_reftype sv_replace sv_report_used sv_reset\nsyn keyword xsFunction sv_rvweaken sv_setiv sv_setiv_mg sv_setnv sv_setnv_mg\nsyn keyword xsFunction sv_setpv sv_setpv_mg sv_setpvf sv_setpvf_mg\nsyn keyword xsFunction sv_setpvf_mg_nocontext sv_setpvf_nocontext sv_setpviv\nsyn keyword xsFunction sv_setpviv_mg sv_setpvn sv_setpvn_mg sv_setref_iv\nsyn keyword xsFunction sv_setref_nv sv_setref_pv sv_setref_pvn sv_setref_uv\nsyn keyword xsFunction sv_setsv_flags sv_setsv_mg sv_setuv sv_setuv_mg\nsyn keyword xsFunction sv_tainted sv_true sv_uni_display sv_unmagic\nsyn keyword xsFunction sv_unmagicext sv_unref_flags sv_untaint sv_upgrade\nsyn keyword xsFunction sv_usepvn_flags sv_utf8_decode sv_utf8_downgrade\nsyn keyword xsFunction sv_utf8_encode sv_utf8_upgrade_flags_grow sv_uv\nsyn keyword xsFunction sv_vcatpvf sv_vcatpvf_mg sv_vcatpvfn sv_vsetpvf\nsyn keyword xsFunction sv_vsetpvf_mg sv_vsetpvfn swash_fetch swash_init\nsyn keyword xsFunction sys_intern_clear sys_intern_dup sys_intern_init\nsyn keyword xsFunction taint_env taint_proper tmps_grow to_uni_lower\nsyn keyword xsFunction to_uni_lower_lc to_uni_title to_uni_title_lc\nsyn keyword xsFunction to_uni_upper to_uni_upper_lc to_utf8_case unlnk\nsyn keyword xsFunction unpack_str unpackstring unsharepvn upg_version\nsyn keyword xsFunction utf16_to_utf8 utf16_to_utf8_reversed utf8_distance\nsyn keyword xsFunction utf8_hop utf8_length utf8_to_bytes utf8_to_uvchr_buf\nsyn keyword xsFunction utf8_to_uvuni_buf utf8n_to_uvchr utf8n_to_uvuni\nsyn keyword xsFunction uvchr_to_utf8 uvchr_to_utf8_flags uvuni_to_utf8_flags\nsyn keyword xsFunction valid_utf8_to_uvchr valid_utf8_to_uvuni vcmp vcroak\nsyn keyword xsFunction vdeb vform vload_module vmess vnewSVpvf vnormal\nsyn keyword xsFunction vnumify vstringify vverify vwarn vwarner warn\nsyn keyword xsFunction warn_nocontext warn_sv warner warner_nocontext\nsyn keyword xsFunction whichsig_pv whichsig_pvn whichsig_sv wrap_op_checker\nsyn keyword xsVariable MARK MY_CXT ORIGMARK PL_I PL_No PL_Vars PL_VarsPtr\nsyn keyword xsVariable PL_Yes PL_a2e PL_bincompat_options PL_bitcount\nsyn keyword xsVariable PL_block_type PL_bufend PL_bufptr PL_charclass\nsyn keyword xsVariable PL_check PL_copline PL_core_reg_engine PL_cshname\nsyn keyword xsVariable PL_curforce PL_e2a PL_e2utf PL_endwhite PL_error_count\nsyn keyword xsVariable PL_expect PL_faketokens PL_fold PL_fold_latin1\nsyn keyword xsVariable PL_fold_locale PL_force_link_funcs PL_freq\nsyn keyword xsVariable PL_global_struct_size PL_hexdigit PL_in_my\nsyn keyword xsVariable PL_in_my_stash PL_interp_size PL_interp_size_5_16_0\nsyn keyword xsVariable PL_last_lop PL_last_lop_op PL_last_uni PL_lasttoke\nsyn keyword xsVariable PL_latin1_lc PL_lex_allbrackets PL_lex_brackets\nsyn keyword xsVariable PL_lex_brackstack PL_lex_casemods PL_lex_casestack\nsyn keyword xsVariable PL_lex_defer PL_lex_dojoin PL_lex_expect\nsyn keyword xsVariable PL_lex_fakeeof PL_lex_formbrack PL_lex_inpat\nsyn keyword xsVariable PL_lex_inwhat PL_lex_op PL_lex_repl PL_lex_starts\nsyn keyword xsVariable PL_lex_state PL_lex_stuff PL_linestart PL_linestr\nsyn keyword xsVariable PL_magic_data PL_magic_vtable_names PL_memory_wrap\nsyn keyword xsVariable PL_mod_latin1_uc PL_multi_close PL_multi_end\nsyn keyword xsVariable PL_multi_open PL_multi_start PL_nexttoke PL_nexttype\nsyn keyword xsVariable PL_nextval PL_nextwhite PL_no_aelem PL_no_dir_func\nsyn keyword xsVariable PL_no_func PL_no_helem_sv PL_no_localize_ref PL_no_mem\nsyn keyword xsVariable PL_no_modify PL_no_myglob PL_no_security\nsyn keyword xsVariable PL_no_sock_func PL_no_symref PL_no_symref_sv\nsyn keyword xsVariable PL_no_usym PL_no_wrongref PL_oldbufptr PL_oldoldbufptr\nsyn keyword xsVariable PL_op_desc PL_op_name PL_opargs PL_pending_ident\nsyn keyword xsVariable PL_phase_names PL_ppaddr PL_preambled\nsyn keyword xsVariable PL_realtokenstart PL_reg_extflags_name PL_reg_name\nsyn keyword xsVariable PL_regkind PL_revision PL_rsfp PL_rsfp_filters\nsyn keyword xsVariable PL_runops_dbg PL_runops_std PL_sh_path PL_sig_name\nsyn keyword xsVariable PL_sig_num PL_simple PL_simple_bitmask PL_skipwhite\nsyn keyword xsVariable PL_sublex_info PL_subversion PL_thisclose PL_thismad\nsyn keyword xsVariable PL_thisopen PL_thisstuff PL_thistoken PL_thiswhite\nsyn keyword xsVariable PL_tokenbuf PL_utf2e PL_utf8skip PL_uudmap PL_uuemap\nsyn keyword xsVariable PL_valid_types_IVX PL_valid_types_IV_set\nsyn keyword xsVariable PL_valid_types_NVX PL_valid_types_NV_set\nsyn keyword xsVariable PL_valid_types_PVX PL_valid_types_RV PL_varies\nsyn keyword xsVariable PL_varies_bitmask PL_version PL_warn_nl PL_warn_nosemi\nsyn keyword xsVariable PL_warn_reserved PL_warn_uninit PL_warn_uninit_sv\nsyn keyword xsVariable RETVAL SP TARG _aMY_CXT _aTHX aMY_CXT aMY_CXT_ aTHX\nsyn keyword xsVariable aTHX_ items\nsyn keyword xsMacro ABORT ACCEPT ADDOP AHOCORASICK AHOCORASICKC\nsyn keyword xsMacro ALLOC_THREAD_KEY ALNUM ALNUMA ALNUML ALNUMU AMG_CALLun\nsyn keyword xsMacro AMG_CALLunary AMGf_assign AMGf_noleft AMGf_noright\nsyn keyword xsMacro AMGf_numeric AMGf_set AMGf_unary AMGfallNEVER AMGfallNO\nsyn keyword xsMacro AMGfallYES AMT_AMAGIC AMT_AMAGIC_off AMT_AMAGIC_on\nsyn keyword xsMacro AMT_OVERLOADED AMT_OVERLOADED_off AMT_OVERLOADED_on\nsyn keyword xsMacro AMTf_AMAGIC AMTf_OVERLOADED ANDAND ANDOP ANONSUB ANYOF\nsyn keyword xsMacro ANYOFV ANYOF_ALNUM ANYOF_ALNUMC ANYOF_ALNUML ANYOF_ALPHA\nsyn keyword xsMacro ANYOF_ASCII ANYOF_BIT ANYOF_BITMAP ANYOF_BITMAP_BYTE\nsyn keyword xsMacro ANYOF_BITMAP_CLEAR ANYOF_BITMAP_CLEARALL ANYOF_BITMAP_SET\nsyn keyword xsMacro ANYOF_BITMAP_SETALL ANYOF_BITMAP_SIZE ANYOF_BITMAP_TEST\nsyn keyword xsMacro ANYOF_BITMAP_TESTALLSET ANYOF_BITMAP_ZERO ANYOF_BLANK\nsyn keyword xsMacro ANYOF_CLASS ANYOF_CLASSBITMAP_SIZE ANYOF_CLASS_BYTE\nsyn keyword xsMacro ANYOF_CLASS_CLEAR ANYOF_CLASS_SET ANYOF_CLASS_SETALL\nsyn keyword xsMacro ANYOF_CLASS_SIZE ANYOF_CLASS_SKIP ANYOF_CLASS_TEST\nsyn keyword xsMacro ANYOF_CLASS_TEST_ANY_SET ANYOF_CLASS_ZERO ANYOF_CNTRL\nsyn keyword xsMacro ANYOF_DIGIT ANYOF_EOS ANYOF_FLAGS ANYOF_FLAGS_ALL\nsyn keyword xsMacro ANYOF_FOLD_SHARP_S ANYOF_GRAPH ANYOF_HORIZWS ANYOF_INVERT\nsyn keyword xsMacro ANYOF_IS_SYNTHETIC ANYOF_LARGE ANYOF_LOCALE\nsyn keyword xsMacro ANYOF_LOC_NONBITMAP_FOLD ANYOF_LOWER ANYOF_MAX\nsyn keyword xsMacro ANYOF_NALNUM ANYOF_NALNUMC ANYOF_NALNUML ANYOF_NALPHA\nsyn keyword xsMacro ANYOF_NASCII ANYOF_NBLANK ANYOF_NCNTRL ANYOF_NDIGIT\nsyn keyword xsMacro ANYOF_NGRAPH ANYOF_NHORIZWS ANYOF_NLOWER ANYOF_NONBITMAP\nsyn keyword xsMacro ANYOF_NONBITMAP_EMPTY ANYOF_NONBITMAP_NON_UTF8\nsyn keyword xsMacro ANYOF_NON_UTF8_LATIN1_ALL ANYOF_NPRINT ANYOF_NPSXSPC\nsyn keyword xsMacro ANYOF_NPUNCT ANYOF_NSPACE ANYOF_NSPACEL ANYOF_NUPPER\nsyn keyword xsMacro ANYOF_NVERTWS ANYOF_NXDIGIT ANYOF_PRINT ANYOF_PSXSPC\nsyn keyword xsMacro ANYOF_PUNCT ANYOF_SIZE ANYOF_SKIP ANYOF_SPACE\nsyn keyword xsMacro ANYOF_SPACEL ANYOF_UNICODE_ALL ANYOF_UPPER ANYOF_VERTWS\nsyn keyword xsMacro ANYOF_XDIGIT ARCHLIB ARCHLIB_EXP ARCHNAME ARG ARG1\nsyn keyword xsMacro ARG1_LOC ARG1_SET ARG2 ARG2L ARG2L_LOC ARG2L_SET ARG2_LOC\nsyn keyword xsMacro ARG2_SET ARGTARG ARG_LOC ARG_SET ARG_VALUE ARG__SET ARROW\nsyn keyword xsMacro ASCII_MORE_RESTRICT_PAT_MODS ASCII_RESTRICT_PAT_MOD\nsyn keyword xsMacro ASCII_RESTRICT_PAT_MODS ASCII_TO_NATIVE ASCII_TO_NEED\nsyn keyword xsMacro ASCTIME_R_PROTO ASSERT_CURPAD_ACTIVE ASSERT_CURPAD_LEGAL\nsyn keyword xsMacro ASSIGNOP Atof Atol Atoul AvALLOC AvARRAY AvARYLEN AvFILL\nsyn keyword xsMacro AvFILLp AvMAX AvREAL AvREALISH AvREAL_off AvREAL_on\nsyn keyword xsMacro AvREAL_only AvREIFY AvREIFY_off AvREIFY_on AvREIFY_only\nsyn keyword xsMacro BACK BADVERSION BASEOP BHKf_bhk_eval BHKf_bhk_post_end\nsyn keyword xsMacro BHKf_bhk_pre_end BHKf_bhk_start BIN BIN_EXP BITANDOP\nsyn keyword xsMacro BITMAP_BYTE BITMAP_TEST BITOROP BIT_BUCKET BIT_DIGITS BOL\nsyn keyword xsMacro BOUND BOUNDA BOUNDL BOUNDU BRANCH BRANCHJ BRANCH_next\nsyn keyword xsMacro BRANCH_next_fail BSD_GETPGRP BSD_SETPGRP BSDish BUFSIZ\nsyn keyword xsMacro BYTEORDER BhkDISABLE BhkENABLE BhkENTRY BhkENTRY_set\nsyn keyword xsMacro BhkFLAGS Bit BmFLAGS BmPREVIOUS BmRARE BmUSEFUL\nsyn keyword xsMacro CALLREGCOMP CALLREGCOMP_ENG CALLREGDUPE CALLREGDUPE_PVT\nsyn keyword xsMacro CALLREGEXEC CALLREGFREE CALLREGFREE_PVT\nsyn keyword xsMacro CALLREG_INTUIT_START CALLREG_INTUIT_STRING\nsyn keyword xsMacro CALLREG_NAMED_BUFF_ALL CALLREG_NAMED_BUFF_CLEAR\nsyn keyword xsMacro CALLREG_NAMED_BUFF_COUNT CALLREG_NAMED_BUFF_DELETE\nsyn keyword xsMacro CALLREG_NAMED_BUFF_EXISTS CALLREG_NAMED_BUFF_FETCH\nsyn keyword xsMacro CALLREG_NAMED_BUFF_FIRSTKEY CALLREG_NAMED_BUFF_NEXTKEY\nsyn keyword xsMacro CALLREG_NAMED_BUFF_SCALAR CALLREG_NAMED_BUFF_STORE\nsyn keyword xsMacro CALLREG_NUMBUF_FETCH CALLREG_NUMBUF_LENGTH\nsyn keyword xsMacro CALLREG_NUMBUF_STORE CALLREG_PACKAGE CALLRUNOPS\nsyn keyword xsMacro CALL_BLOCK_HOOKS CALL_FPTR CANY CAN_COW_FLAGS\nsyn keyword xsMacro CAN_COW_MASK CAN_PROTOTYPE CAN_VAPROTO\nsyn keyword xsMacro CASE_STD_PMMOD_FLAGS_PARSE_SET CASTFLAGS CASTNEGFLOAT\nsyn keyword xsMacro CAT2 CATCH_GET CATCH_SET CHARBITS CHARSET_PAT_MODS\nsyn keyword xsMacro CHECK_MALLOC_TAINT CHECK_MALLOC_TOO_LATE_FOR\nsyn keyword xsMacro CHECK_MALLOC_TOO_LATE_FOR_ CLEAR_ARGARRAY CLEAR_ERRSV\nsyn keyword xsMacro CLONEf_CLONE_HOST CLONEf_COPY_STACKS CLONEf_JOIN_IN\nsyn keyword xsMacro CLONEf_KEEP_PTR_TABLE CLOSE CLUMP CLUMP_2IV CLUMP_2UV\nsyn keyword xsMacro COLONATTR COMMIT COMMIT_next COMMIT_next_fail\nsyn keyword xsMacro COND_BROADCAST COND_DESTROY COND_INIT COND_SIGNAL\nsyn keyword xsMacro COND_WAIT CONTINUE CONTINUE_PAT_MOD COPHH_KEY_UTF8\nsyn keyword xsMacro COP_SEQ_RANGE_HIGH COP_SEQ_RANGE_LOW CPERLarg CPERLarg_\nsyn keyword xsMacro CPERLscope CPPLAST CPPMINUS CPPRUN CPPSTDIN CRYPT_R_PROTO\nsyn keyword xsMacro CSH CTERMID_R_PROTO CTIME_R_PROTO CTYPE256 CURLY CURLYM\nsyn keyword xsMacro CURLYM_A CURLYM_A_fail CURLYM_B CURLYM_B_fail CURLYN\nsyn keyword xsMacro CURLYX CURLYX_end CURLYX_end_fail CURLY_B_max\nsyn keyword xsMacro CURLY_B_max_fail CURLY_B_min CURLY_B_min_fail\nsyn keyword xsMacro CURLY_B_min_known CURLY_B_min_known_fail\nsyn keyword xsMacro CURRENT_FEATURE_BUNDLE CURRENT_HINTS CUTGROUP\nsyn keyword xsMacro CUTGROUP_next CUTGROUP_next_fail CVf_ANON CVf_AUTOLOAD\nsyn keyword xsMacro CVf_BUILTIN_ATTRS CVf_CLONE CVf_CLONED CVf_CONST\nsyn keyword xsMacro CVf_CVGV_RC CVf_DYNFILE CVf_ISXSUB CVf_LVALUE CVf_METHOD\nsyn keyword xsMacro CVf_NODEBUG CVf_UNIQUE CVf_WEAKOUTSIDE CXINC CXTYPEMASK\nsyn keyword xsMacro CX_CURPAD_SAVE CX_CURPAD_SV CXp_FOR_DEF CXp_HASARGS\nsyn keyword xsMacro CXp_MULTICALL CXp_ONCE CXp_REAL CXp_TRYBLOCK C_ARRAY_END\nsyn keyword xsMacro C_ARRAY_LENGTH C_FAC_POSIX CopFILE CopFILEAV CopFILEAVx\nsyn keyword xsMacro CopFILEGV CopFILEGV_set CopFILESV CopFILE_free\nsyn keyword xsMacro CopFILE_set CopFILE_setn CopHINTHASH_get CopHINTHASH_set\nsyn keyword xsMacro CopHINTS_get CopHINTS_set CopLABEL CopLABEL_alloc\nsyn keyword xsMacro CopLABEL_len CopLABEL_len_flags CopLINE CopLINE_dec\nsyn keyword xsMacro CopLINE_inc CopLINE_set CopSTASH CopSTASHPV\nsyn keyword xsMacro CopSTASHPV_set CopSTASH_eq CopSTASH_free CopSTASH_len\nsyn keyword xsMacro CopSTASH_len_set CopSTASH_ne CopSTASH_set Copy CopyD Ctl\nsyn keyword xsMacro CvANON CvANON_off CvANON_on CvAUTOLOAD CvAUTOLOAD_off\nsyn keyword xsMacro CvAUTOLOAD_on CvCLONE CvCLONED CvCLONED_off CvCLONED_on\nsyn keyword xsMacro CvCLONE_off CvCLONE_on CvCONST CvCONST_off CvCONST_on\nsyn keyword xsMacro CvCVGV_RC CvCVGV_RC_off CvCVGV_RC_on CvDEPTH CvDYNFILE\nsyn keyword xsMacro CvDYNFILE_off CvDYNFILE_on CvEVAL CvEVAL_off CvEVAL_on\nsyn keyword xsMacro CvFILE CvFILEGV CvFILE_set_from_cop CvFLAGS CvGV CvGV_set\nsyn keyword xsMacro CvISXSUB CvISXSUB_off CvISXSUB_on CvLVALUE CvLVALUE_off\nsyn keyword xsMacro CvLVALUE_on CvMETHOD CvMETHOD_off CvMETHOD_on CvNODEBUG\nsyn keyword xsMacro CvNODEBUG_off CvNODEBUG_on CvOUTSIDE CvOUTSIDE_SEQ\nsyn keyword xsMacro CvPADLIST CvPROTO CvPROTOLEN CvROOT CvSPECIAL\nsyn keyword xsMacro CvSPECIAL_off CvSPECIAL_on CvSTART CvSTASH CvSTASH_set\nsyn keyword xsMacro CvUNIQUE CvUNIQUE_off CvUNIQUE_on CvWEAKOUTSIDE\nsyn keyword xsMacro CvWEAKOUTSIDE_off CvWEAKOUTSIDE_on CvXSUB CvXSUBANY\nsyn keyword xsMacro CxFOREACH CxFOREACHDEF CxHASARGS CxITERVAR\nsyn keyword xsMacro CxITERVAR_PADSV CxLABEL CxLABEL_len CxLABEL_len_flags\nsyn keyword xsMacro CxLVAL CxMULTICALL CxOLD_IN_EVAL CxOLD_OP_TYPE CxONCE\nsyn keyword xsMacro CxPADLOOP CxREALEVAL CxTRYBLOCK CxTYPE CxTYPE_is_LOOP\nsyn keyword xsMacro DBL_DIG DBL_MAX DBL_MIN DBM_ckFilter DBM_setFilter\nsyn keyword xsMacro DB_VERSION_MAJOR_CFG DB_VERSION_MINOR_CFG\nsyn keyword xsMacro DB_VERSION_PATCH_CFG DEBUG_A DEBUG_A_FLAG DEBUG_A_TEST\nsyn keyword xsMacro DEBUG_A_TEST_ DEBUG_B DEBUG_BUFFERS_r DEBUG_B_FLAG\nsyn keyword xsMacro DEBUG_B_TEST DEBUG_B_TEST_ DEBUG_C DEBUG_COMPILE_r\nsyn keyword xsMacro DEBUG_CX DEBUG_C_FLAG DEBUG_C_TEST DEBUG_C_TEST_ DEBUG_D\nsyn keyword xsMacro DEBUG_DB_RECURSE_FLAG DEBUG_DUMP_r DEBUG_D_FLAG\nsyn keyword xsMacro DEBUG_D_TEST DEBUG_D_TEST_ DEBUG_EXECUTE_r DEBUG_EXTRA_r\nsyn keyword xsMacro DEBUG_FLAGS_r DEBUG_GPOS_r DEBUG_H DEBUG_H_FLAG\nsyn keyword xsMacro DEBUG_H_TEST DEBUG_H_TEST_ DEBUG_INTUIT_r DEBUG_J_FLAG\nsyn keyword xsMacro DEBUG_J_TEST DEBUG_J_TEST_ DEBUG_M DEBUG_MASK\nsyn keyword xsMacro DEBUG_MATCH_r DEBUG_M_FLAG DEBUG_M_TEST DEBUG_M_TEST_\nsyn keyword xsMacro DEBUG_OFFSETS_r DEBUG_OPTIMISE_MORE_r DEBUG_OPTIMISE_r\nsyn keyword xsMacro DEBUG_P DEBUG_PARSE_r DEBUG_P_FLAG DEBUG_P_TEST\nsyn keyword xsMacro DEBUG_P_TEST_ DEBUG_Pv DEBUG_Pv_TEST DEBUG_Pv_TEST_\nsyn keyword xsMacro DEBUG_R DEBUG_R_FLAG DEBUG_R_TEST DEBUG_R_TEST_\nsyn keyword xsMacro DEBUG_SCOPE DEBUG_STACK_r DEBUG_STATE_r DEBUG_T\nsyn keyword xsMacro DEBUG_TOP_FLAG DEBUG_TRIE_COMPILE_MORE_r\nsyn keyword xsMacro DEBUG_TRIE_COMPILE_r DEBUG_TRIE_EXECUTE_MORE_r\nsyn keyword xsMacro DEBUG_TRIE_EXECUTE_r DEBUG_TRIE_r DEBUG_T_FLAG\nsyn keyword xsMacro DEBUG_T_TEST DEBUG_T_TEST_ DEBUG_U DEBUG_U_FLAG\nsyn keyword xsMacro DEBUG_U_TEST DEBUG_U_TEST_ DEBUG_Uv DEBUG_Uv_TEST\nsyn keyword xsMacro DEBUG_Uv_TEST_ DEBUG_X DEBUG_X_FLAG DEBUG_X_TEST\nsyn keyword xsMacro DEBUG_X_TEST_ DEBUG_Xv DEBUG_Xv_TEST DEBUG_Xv_TEST_\nsyn keyword xsMacro DEBUG__ DEBUG_c DEBUG_c_FLAG DEBUG_c_TEST DEBUG_c_TEST_\nsyn keyword xsMacro DEBUG_f DEBUG_f_FLAG DEBUG_f_TEST DEBUG_f_TEST_ DEBUG_l\nsyn keyword xsMacro DEBUG_l_FLAG DEBUG_l_TEST DEBUG_l_TEST_ DEBUG_m\nsyn keyword xsMacro DEBUG_m_FLAG DEBUG_m_TEST DEBUG_m_TEST_ DEBUG_o\nsyn keyword xsMacro DEBUG_o_FLAG DEBUG_o_TEST DEBUG_o_TEST_ DEBUG_p\nsyn keyword xsMacro DEBUG_p_FLAG DEBUG_p_TEST DEBUG_p_TEST_ DEBUG_q\nsyn keyword xsMacro DEBUG_q_FLAG DEBUG_q_TEST DEBUG_q_TEST_ DEBUG_r\nsyn keyword xsMacro DEBUG_r_FLAG DEBUG_r_TEST DEBUG_r_TEST_ DEBUG_s\nsyn keyword xsMacro DEBUG_s_FLAG DEBUG_s_TEST DEBUG_s_TEST_ DEBUG_t_FLAG\nsyn keyword xsMacro DEBUG_t_TEST DEBUG_t_TEST_ DEBUG_u DEBUG_u_FLAG\nsyn keyword xsMacro DEBUG_u_TEST DEBUG_u_TEST_ DEBUG_v DEBUG_v_FLAG\nsyn keyword xsMacro DEBUG_v_TEST DEBUG_v_TEST_ DEBUG_x DEBUG_x_FLAG\nsyn keyword xsMacro DEBUG_x_TEST DEBUG_x_TEST_ DEFAULT DEFAULT_PAT_MOD\nsyn keyword xsMacro DEFINEP DEFSV DEFSV_set DEPENDS_PAT_MOD DEPENDS_PAT_MODS\nsyn keyword xsMacro DETACH DIE DIGIT DIGITA DIGITL DIR DM_ARRAY_ISA DM_DELAY\nsyn keyword xsMacro DM_EGID DM_EUID DM_GID DM_RGID DM_RUID DM_UID DO DOINIT\nsyn keyword xsMacro DOLSHARP DONT_DECLARE_STD DORDOR DOROP DOSISH DOTDOT\nsyn keyword xsMacro DOUBLESIZE DO_UTF8 DPTR2FPTR DRAND48_R_PROTO DUP_WARNINGS\nsyn keyword xsMacro Drand01 ELSE ELSIF EMBEDMYMALLOC END ENDGRENT_R_PROTO\nsyn keyword xsMacro ENDHOSTENT_R_PROTO ENDLIKE ENDNETENT_R_PROTO\nsyn keyword xsMacro ENDPROTOENT_R_PROTO ENDPWENT_R_PROTO ENDSERVENT_R_PROTO\nsyn keyword xsMacro END_EXTERN_C ENTER ENTER_with_name ENTRY_PROBE ENUM_BOOL\nsyn keyword xsMacro EOF EOL EOS EQOP ERRHV ERRSV EVAL EVAL_AB EVAL_AB_fail\nsyn keyword xsMacro EVAL_INEVAL EVAL_INREQUIRE EVAL_KEEPERR EVAL_NULL\nsyn keyword xsMacro EVAL_WARNONLY EXACT EXACTF EXACTFA EXACTFL EXACTFU\nsyn keyword xsMacro EXACTFU_SS EXACTFU_TRICKYFOLD EXEC_ARGV_CAST EXEC_PAT_MOD\nsyn keyword xsMacro EXEC_PAT_MODS EXPECT EXT EXTCONST EXTEND EXTEND_MORTAL\nsyn keyword xsMacro EXTERN_C EXTPERLIO EXTRA_SIZE EXTRA_STEP_2ARGS EXT_MGVTBL\nsyn keyword xsMacro EXT_PAT_MODS FAKE_BIT_BUCKET FAKE_DEFAULT_SIGNAL_HANDLERS\nsyn keyword xsMacro FAKE_PERSISTENT_SIGNAL_HANDLERS FBMcf_TAIL\nsyn keyword xsMacro FBMcf_TAIL_DOLLAR FBMcf_TAIL_DOLLARM FBMcf_TAIL_Z\nsyn keyword xsMacro FBMcf_TAIL_z FBMrf_MULTILINE FCNTL_CAN_LOCK FD_CLR\nsyn keyword xsMacro FD_ISSET FD_SET FD_ZERO FEATURE_ARYBASE_IS_ENABLED\nsyn keyword xsMacro FEATURE_BUNDLE_510 FEATURE_BUNDLE_511 FEATURE_BUNDLE_515\nsyn keyword xsMacro FEATURE_BUNDLE_CUSTOM FEATURE_BUNDLE_DEFAULT\nsyn keyword xsMacro FEATURE_EVALBYTES_IS_ENABLED FEATURE_FC_IS_ENABLED\nsyn keyword xsMacro FEATURE_IS_ENABLED FEATURE_SAY_IS_ENABLED\nsyn keyword xsMacro FEATURE_STATE_IS_ENABLED FEATURE_SWITCH_IS_ENABLED\nsyn keyword xsMacro FEATURE_UNICODE_IS_ENABLED FEATURE_UNIEVAL_IS_ENABLED\nsyn keyword xsMacro FEATURE___SUB___IS_ENABLED FFLUSH_NULL FF_0DECIMAL\nsyn keyword xsMacro FF_BLANK FF_CHECKCHOP FF_CHECKNL FF_CHOP FF_DECIMAL\nsyn keyword xsMacro FF_END FF_FETCH FF_HALFSPACE FF_ITEM FF_LINEGLOB\nsyn keyword xsMacro FF_LINEMARK FF_LINESNGL FF_LITERAL FF_MORE FF_NEWLINE\nsyn keyword xsMacro FF_SKIP FF_SPACE FILE FILE_base FILE_bufsiz FILE_cnt\nsyn keyword xsMacro FILE_ptr FILL_ADVANCE_NODE FILL_ADVANCE_NODE_ARG\nsyn keyword xsMacro FILTER_DATA FILTER_ISREADER FILTER_READ FITS_IN_8_BITS\nsyn keyword xsMacro FLAGS FLEXFILENAMES FOLDEQ_S1_ALREADY_FOLDED\nsyn keyword xsMacro FOLDEQ_S2_ALREADY_FOLDED FOLDEQ_UTF8_LOCALE\nsyn keyword xsMacro FOLDEQ_UTF8_NOMIX_ASCII FOLD_FLAGS_FULL FOLD_FLAGS_LOCALE\nsyn keyword xsMacro FOR FORMAT FPTR2DPTR FREETMPS FREE_THREAD_KEY FSEEKSIZE\nsyn keyword xsMacro FUNC FUNC0 FUNC0OP FUNC0SUB FUNC1 FUNCMETH FUNCTION__\nsyn keyword xsMacro F_atan2_amg F_cos_amg F_exp_amg F_log_amg F_pow_amg\nsyn keyword xsMacro F_sin_amg F_sqrt_amg Fflush FmLINES FreeOp Fstat\nsyn keyword xsMacro GDBMNDBM_H_USES_PROTOTYPES GETATARGET GETGRENT_R_PROTO\nsyn keyword xsMacro GETGRGID_R_PROTO GETGRNAM_R_PROTO GETHOSTBYADDR_R_PROTO\nsyn keyword xsMacro GETHOSTBYNAME_R_PROTO GETHOSTENT_R_PROTO GETLOGIN_R_PROTO\nsyn keyword xsMacro GETNETBYADDR_R_PROTO GETNETBYNAME_R_PROTO\nsyn keyword xsMacro GETNETENT_R_PROTO GETPROTOBYNAME_R_PROTO\nsyn keyword xsMacro GETPROTOBYNUMBER_R_PROTO GETPROTOENT_R_PROTO\nsyn keyword xsMacro GETPWENT_R_PROTO GETPWNAM_R_PROTO GETPWUID_R_PROTO\nsyn keyword xsMacro GETSERVBYNAME_R_PROTO GETSERVBYPORT_R_PROTO\nsyn keyword xsMacro GETSERVENT_R_PROTO GETSPNAM_R_PROTO GETTARGET\nsyn keyword xsMacro GETTARGETSTACKED GET_RE_DEBUG_FLAGS\nsyn keyword xsMacro GET_RE_DEBUG_FLAGS_DECL GIMME GIMME_V GIVEN\nsyn keyword xsMacro GLOBAL_PAT_MOD GMTIME_MAX GMTIME_MIN GMTIME_R\nsyn keyword xsMacro GMTIME_R_PROTO GOSTART GOSUB GPOS GRAMBARESTMT GRAMBLOCK\nsyn keyword xsMacro GRAMEXPR GRAMFULLSTMT GRAMPROG GRAMSTMTSEQ\nsyn keyword xsMacro GREEK_CAPITAL_LETTER_MU GREEK_SMALL_LETTER_MU\nsyn keyword xsMacro GROK_NUMERIC_RADIX GROUPP GRPASSWD GV_ADD GV_ADDINEVAL\nsyn keyword xsMacro GV_ADDMG GV_ADDMULTI GV_ADDWARN GV_AUTOLOAD\nsyn keyword xsMacro GV_AUTOLOAD_ISMETHOD GV_CROAK GV_NOADD_MASK\nsyn keyword xsMacro GV_NOADD_NOINIT GV_NOEXPAND GV_NOINIT GV_NOTQUAL\nsyn keyword xsMacro GV_NO_SVGMAGIC GVf_ASSUMECV GVf_IMPORTED GVf_IMPORTED_AV\nsyn keyword xsMacro GVf_IMPORTED_CV GVf_IMPORTED_HV GVf_IMPORTED_SV GVf_INTRO\nsyn keyword xsMacro GVf_IN_PAD GVf_MULTI Gconvert Gid_t_f Gid_t_sign\nsyn keyword xsMacro Gid_t_size GvASSIGN_GENERATION GvASSIGN_GENERATION_set\nsyn keyword xsMacro GvASSUMECV GvASSUMECV_off GvASSUMECV_on GvAV GvAVn GvCV\nsyn keyword xsMacro GvCVGEN GvCV_set GvCVu GvEGV GvEGVx GvENAME GvENAMELEN\nsyn keyword xsMacro GvENAMEUTF8 GvENAME_HEK GvESTASH GvFILE GvFILEGV\nsyn keyword xsMacro GvFILE_HEK GvFLAGS GvFORM GvGP GvGP_set GvHV GvHVn\nsyn keyword xsMacro GvIMPORTED GvIMPORTED_AV GvIMPORTED_AV_off\nsyn keyword xsMacro GvIMPORTED_AV_on GvIMPORTED_CV GvIMPORTED_CV_off\nsyn keyword xsMacro GvIMPORTED_CV_on GvIMPORTED_HV GvIMPORTED_HV_off\nsyn keyword xsMacro GvIMPORTED_HV_on GvIMPORTED_SV GvIMPORTED_SV_off\nsyn keyword xsMacro GvIMPORTED_SV_on GvIMPORTED_off GvIMPORTED_on GvINTRO\nsyn keyword xsMacro GvINTRO_off GvINTRO_on GvIN_PAD GvIN_PAD_off GvIN_PAD_on\nsyn keyword xsMacro GvIO GvIOn GvIOp GvLINE GvMULTI GvMULTI_off GvMULTI_on\nsyn keyword xsMacro GvNAME GvNAMELEN GvNAMELEN_get GvNAMEUTF8 GvNAME_HEK\nsyn keyword xsMacro GvNAME_get GvREFCNT GvSTASH GvSV GvSVn GvXPVGV Gv_AMG\nsyn keyword xsMacro HASATTRIBUTE_DEPRECATED HASATTRIBUTE_FORMAT\nsyn keyword xsMacro HASATTRIBUTE_MALLOC HASATTRIBUTE_NONNULL\nsyn keyword xsMacro HASATTRIBUTE_NORETURN HASATTRIBUTE_PURE\nsyn keyword xsMacro HASATTRIBUTE_UNUSED HASATTRIBUTE_WARN_UNUSED_RESULT\nsyn keyword xsMacro HASCONST HASHBRACK HASVOLATILE HAS_64K_LIMIT HAS_ACCESS\nsyn keyword xsMacro HAS_ALARM HAS_ATOLL HAS_BCMP HAS_BCOPY HAS_BOOL\nsyn keyword xsMacro HAS_BUILTIN_CHOOSE_EXPR HAS_BUILTIN_EXPECT HAS_BZERO\nsyn keyword xsMacro HAS_C99_VARIADIC_MACROS HAS_CHOWN HAS_CHROOT HAS_CLEARENV\nsyn keyword xsMacro HAS_COPYSIGNL HAS_CRYPT HAS_CTERMID HAS_CUSERID\nsyn keyword xsMacro HAS_DBL_DIG HAS_DBMINIT_PROTO HAS_DIFFTIME HAS_DIRFD\nsyn keyword xsMacro HAS_DLERROR HAS_DRAND48_PROTO HAS_DUP2 HAS_EACCESS\nsyn keyword xsMacro HAS_ENDGRENT HAS_ENDHOSTENT HAS_ENDNETENT HAS_ENDPROTOENT\nsyn keyword xsMacro HAS_ENDPWENT HAS_ENDSERVENT HAS_FAST_STDIO HAS_FCHDIR\nsyn keyword xsMacro HAS_FCHMOD HAS_FCHOWN HAS_FCNTL HAS_FD_SET HAS_FGETPOS\nsyn keyword xsMacro HAS_FINITE HAS_FINITEL HAS_FLOCK HAS_FLOCK_PROTO HAS_FORK\nsyn keyword xsMacro HAS_FPATHCONF HAS_FREXPL HAS_FSEEKO HAS_FSETPOS\nsyn keyword xsMacro HAS_FSTATFS HAS_FSTATVFS HAS_FSYNC HAS_FTELLO HAS_FUTIMES\nsyn keyword xsMacro HAS_GETADDRINFO HAS_GETCWD HAS_GETGRENT HAS_GETGROUPS\nsyn keyword xsMacro HAS_GETHOSTBYADDR HAS_GETHOSTBYNAME HAS_GETHOSTENT\nsyn keyword xsMacro HAS_GETHOSTNAME HAS_GETHOST_PROTOS HAS_GETITIMER\nsyn keyword xsMacro HAS_GETLOGIN HAS_GETMNTENT HAS_GETNAMEINFO\nsyn keyword xsMacro HAS_GETNETBYADDR HAS_GETNETBYNAME HAS_GETNETENT\nsyn keyword xsMacro HAS_GETNET_PROTOS HAS_GETPAGESIZE HAS_GETPGID HAS_GETPGRP\nsyn keyword xsMacro HAS_GETPPID HAS_GETPRIORITY HAS_GETPROTOBYNAME\nsyn keyword xsMacro HAS_GETPROTOBYNUMBER HAS_GETPROTOENT HAS_GETPROTO_PROTOS\nsyn keyword xsMacro HAS_GETPWENT HAS_GETSERVBYNAME HAS_GETSERVBYPORT\nsyn keyword xsMacro HAS_GETSERVENT HAS_GETSERV_PROTOS HAS_GETSPNAM\nsyn keyword xsMacro HAS_GETTIMEOFDAY HAS_GNULIBC HAS_GROUP HAS_HASMNTOPT\nsyn keyword xsMacro HAS_HTOVL HAS_HTOVS HAS_ILOGBL HAS_INETNTOP HAS_INETPTON\nsyn keyword xsMacro HAS_INET_ATON HAS_INT64_T HAS_IOCTL HAS_IPV6_MREQ\nsyn keyword xsMacro HAS_ISASCII HAS_ISBLANK HAS_ISINF HAS_ISNAN HAS_ISNANL\nsyn keyword xsMacro HAS_KILL HAS_KILLPG HAS_LCHOWN HAS_LDBL_DIG HAS_LINK\nsyn keyword xsMacro HAS_LOCALECONV HAS_LOCKF HAS_LONG_DOUBLE HAS_LONG_LONG\nsyn keyword xsMacro HAS_LSEEK_PROTO HAS_LSTAT HAS_MADVISE HAS_MBLEN\nsyn keyword xsMacro HAS_MBSTOWCS HAS_MBTOWC HAS_MEMCHR HAS_MEMCMP HAS_MEMCPY\nsyn keyword xsMacro HAS_MEMMOVE HAS_MEMSET HAS_MKDIR HAS_MKDTEMP HAS_MKFIFO\nsyn keyword xsMacro HAS_MKSTEMP HAS_MKSTEMPS HAS_MKTIME HAS_MMAP HAS_MODFL\nsyn keyword xsMacro HAS_MODFL_PROTO HAS_MPROTECT HAS_MSG HAS_MSG_CTRUNC\nsyn keyword xsMacro HAS_MSG_DONTROUTE HAS_MSG_OOB HAS_MSG_PEEK HAS_MSG_PROXY\nsyn keyword xsMacro HAS_MSYNC HAS_MUNMAP HAS_NICE HAS_NL_LANGINFO HAS_OPEN3\nsyn keyword xsMacro HAS_PASSWD HAS_PATHCONF HAS_PAUSE HAS_PIPE HAS_POLL\nsyn keyword xsMacro HAS_PRCTL HAS_PRCTL_SET_NAME HAS_PROCSELFEXE\nsyn keyword xsMacro HAS_PTHREAD_ATTR_SETSCOPE\nsyn keyword xsMacro HAS_PTHREAD_UNCHECKED_GETSPECIFIC_NP HAS_READDIR\nsyn keyword xsMacro HAS_READLINK HAS_READV HAS_RECVMSG HAS_RENAME\nsyn keyword xsMacro HAS_REWINDDIR HAS_RMDIR HAS_SANE_MEMCMP HAS_SBRK_PROTO\nsyn keyword xsMacro HAS_SCALBNL HAS_SCHED_YIELD HAS_SCM_RIGHTS HAS_SEEKDIR\nsyn keyword xsMacro HAS_SELECT HAS_SEM HAS_SENDMSG HAS_SETEGID HAS_SETEUID\nsyn keyword xsMacro HAS_SETGRENT HAS_SETGROUPS HAS_SETHOSTENT HAS_SETITIMER\nsyn keyword xsMacro HAS_SETLINEBUF HAS_SETLOCALE HAS_SETNETENT HAS_SETPGID\nsyn keyword xsMacro HAS_SETPGRP HAS_SETPRIORITY HAS_SETPROTOENT HAS_SETPWENT\nsyn keyword xsMacro HAS_SETREGID HAS_SETRESGID HAS_SETRESUID HAS_SETREUID\nsyn keyword xsMacro HAS_SETSERVENT HAS_SETSID HAS_SETVBUF HAS_SHM\nsyn keyword xsMacro HAS_SHMAT_PROTOTYPE HAS_SIGACTION HAS_SIGNBIT\nsyn keyword xsMacro HAS_SIGPROCMASK HAS_SIGSETJMP HAS_SIN6_SCOPE_ID\nsyn keyword xsMacro HAS_SNPRINTF HAS_SOCKADDR_IN6 HAS_SOCKATMARK\nsyn keyword xsMacro HAS_SOCKATMARK_PROTO HAS_SOCKET HAS_SQRTL\nsyn keyword xsMacro HAS_STATIC_INLINE HAS_STRCHR HAS_STRCOLL HAS_STRFTIME\nsyn keyword xsMacro HAS_STRTOD HAS_STRTOL HAS_STRTOLD HAS_STRTOLL HAS_STRTOQ\nsyn keyword xsMacro HAS_STRTOUL HAS_STRTOULL HAS_STRTOUQ HAS_STRUCT_CMSGHDR\nsyn keyword xsMacro HAS_STRUCT_MSGHDR HAS_STRUCT_STATFS\nsyn keyword xsMacro HAS_STRUCT_STATFS_F_FLAGS HAS_STRXFRM HAS_SYMLINK\nsyn keyword xsMacro HAS_SYSCALL HAS_SYSCALL_PROTO HAS_SYSCONF HAS_SYSTEM\nsyn keyword xsMacro HAS_SYS_ERRLIST HAS_TCGETPGRP HAS_TCSETPGRP HAS_TELLDIR\nsyn keyword xsMacro HAS_TELLDIR_PROTO HAS_TIME HAS_TIMEGM HAS_TIMES\nsyn keyword xsMacro HAS_TM_TM_GMTOFF HAS_TM_TM_ZONE HAS_TRUNCATE HAS_TZNAME\nsyn keyword xsMacro HAS_UALARM HAS_UMASK HAS_UNAME HAS_UNSETENV HAS_USLEEP\nsyn keyword xsMacro HAS_USLEEP_PROTO HAS_USTAT HAS_UTIME HAS_VPRINTF\nsyn keyword xsMacro HAS_VSNPRINTF HAS_VTOHL HAS_VTOHS HAS_WAIT HAS_WAIT4\nsyn keyword xsMacro HAS_WAITPID HAS_WCSTOMBS HAS_WCTOMB HAS_WRITEV\nsyn keyword xsMacro HAVE_THREAD_INTERN HEK_BASESIZE HEK_FLAGS HEK_HASH\nsyn keyword xsMacro HEK_KEY HEK_LEN HEK_REHASH HEK_REHASH_on HEK_UTF8\nsyn keyword xsMacro HEK_UTF8_off HEK_UTF8_on HEK_WASUTF8 HEK_WASUTF8_off\nsyn keyword xsMacro HEK_WASUTF8_on HEKf HEKf256 HEKfARG HE_SVSLOT HEf_SVKEY\nsyn keyword xsMacro HINTS_REFCNT_INIT HINTS_REFCNT_LOCK HINTS_REFCNT_TERM\nsyn keyword xsMacro HINTS_REFCNT_UNLOCK HINT_BLOCK_SCOPE HINT_BYTES\nsyn keyword xsMacro HINT_EXPLICIT_STRICT_REFS HINT_EXPLICIT_STRICT_SUBS\nsyn keyword xsMacro HINT_EXPLICIT_STRICT_VARS HINT_FEATURE_MASK\nsyn keyword xsMacro HINT_FEATURE_SHIFT HINT_FILETEST_ACCESS HINT_INTEGER\nsyn keyword xsMacro HINT_LEXICAL_IO_IN HINT_LEXICAL_IO_OUT HINT_LOCALE\nsyn keyword xsMacro HINT_LOCALE_NOT_CHARS HINT_LOCALIZE_HH HINT_NEW_BINARY\nsyn keyword xsMacro HINT_NEW_FLOAT HINT_NEW_INTEGER HINT_NEW_RE\nsyn keyword xsMacro HINT_NEW_STRING HINT_NO_AMAGIC HINT_RE_EVAL HINT_RE_FLAGS\nsyn keyword xsMacro HINT_RE_TAINT HINT_SORT_MERGESORT HINT_SORT_QUICKSORT\nsyn keyword xsMacro HINT_SORT_SORT_BITS HINT_SORT_STABLE HINT_STRICT_REFS\nsyn keyword xsMacro HINT_STRICT_SUBS HINT_STRICT_VARS HINT_UNI_8_BIT\nsyn keyword xsMacro HINT_UTF8 HORIZWS HV_DELETE HV_DISABLE_UVAR_XKEY\nsyn keyword xsMacro HV_FETCH_EMPTY_HE HV_FETCH_ISEXISTS HV_FETCH_ISSTORE\nsyn keyword xsMacro HV_FETCH_JUST_SV HV_FETCH_LVALUE\nsyn keyword xsMacro HV_ITERNEXT_WANTPLACEHOLDERS HV_NAME_SETALL\nsyn keyword xsMacro HVhek_ENABLEHVKFLAGS HVhek_FREEKEY HVhek_KEYCANONICAL\nsyn keyword xsMacro HVhek_MASK HVhek_PLACEHOLD HVhek_REHASH HVhek_UNSHARED\nsyn keyword xsMacro HVhek_UTF8 HVhek_WASUTF8 HVrhek_IV HVrhek_PV\nsyn keyword xsMacro HVrhek_PV_UTF8 HVrhek_UV HVrhek_delete HVrhek_typemask\nsyn keyword xsMacro HVrhek_undef H_PERL HeHASH HeKEY HeKEY_hek HeKEY_sv\nsyn keyword xsMacro HeKFLAGS HeKLEN HeKLEN_UTF8 HeKREHASH HeKUTF8 HeKWASUTF8\nsyn keyword xsMacro HeNEXT HePV HeSVKEY HeSVKEY_force HeSVKEY_set HeUTF8\nsyn keyword xsMacro HeVAL HvARRAY HvAUX HvEITER HvEITER_get HvEITER_set\nsyn keyword xsMacro HvENAME HvENAMELEN HvENAMELEN_get HvENAMEUTF8 HvENAME_HEK\nsyn keyword xsMacro HvENAME_HEK_NN HvENAME_get HvFILL HvHASKFLAGS\nsyn keyword xsMacro HvHASKFLAGS_off HvHASKFLAGS_on HvKEYS HvLAZYDEL\nsyn keyword xsMacro HvLAZYDEL_off HvLAZYDEL_on HvMAX HvMROMETA HvNAME\nsyn keyword xsMacro HvNAMELEN HvNAMELEN_get HvNAMEUTF8 HvNAME_HEK\nsyn keyword xsMacro HvNAME_HEK_NN HvNAME_get HvPLACEHOLDERS\nsyn keyword xsMacro HvPLACEHOLDERS_get HvPLACEHOLDERS_set HvREHASH\nsyn keyword xsMacro HvREHASH_off HvREHASH_on HvRITER HvRITER_get HvRITER_set\nsyn keyword xsMacro HvSHAREKEYS HvSHAREKEYS_off HvSHAREKEYS_on HvTOTALKEYS\nsyn keyword xsMacro HvUSEDKEYS I16SIZE I16TYPE I16_MAX I16_MIN I286 I32SIZE\nsyn keyword xsMacro I32TYPE I32_MAX I32_MAX_P1 I32_MIN I64SIZE I64TYPE I8SIZE\nsyn keyword xsMacro I8TYPE I8_TO_NATIVE IF IFMATCH IFMATCH_A IFMATCH_A_fail\nsyn keyword xsMacro IFTHEN IGNORE_PAT_MOD INIT INIT_THREADS\nsyn keyword xsMacro INIT_TRACK_MEMPOOL INSUBP INT2PTR INT32_MIN INT64_C\nsyn keyword xsMacro INT64_MIN INTSIZE INT_64_T INT_PAT_MODS\nsyn keyword xsMacro INVERSION_UNAFFECTED_FLAGS IN_BYTES IN_LOCALE\nsyn keyword xsMacro IN_LOCALE_COMPILETIME IN_LOCALE_RUNTIME\nsyn keyword xsMacro IN_PERL_COMPILETIME IN_PERL_RUNTIME IN_SOME_LOCALE_FORM\nsyn keyword xsMacro IN_SOME_LOCALE_FORM_COMPILETIME\nsyn keyword xsMacro IN_SOME_LOCALE_FORM_RUNTIME IN_UNI_8_BIT IOCPARM_LEN\nsyn keyword xsMacro IOf_ARGV IOf_DIDTOP IOf_FAKE_DIRP IOf_FLUSH IOf_NOLINE\nsyn keyword xsMacro IOf_START IOf_UNTAINT ISHISH IS_ANYOF_TRIE\nsyn keyword xsMacro IS_NUMBER_GREATER_THAN_UV_MAX IS_NUMBER_INFINITY\nsyn keyword xsMacro IS_NUMBER_IN_UV IS_NUMBER_NAN IS_NUMBER_NEG\nsyn keyword xsMacro IS_NUMBER_NOT_INT IS_NUMERIC_RADIX IS_PADCONST IS_PADGV\nsyn keyword xsMacro IS_TRIE_AC IS_UTF8_CHAR IS_UTF8_CHAR_1 IS_UTF8_CHAR_2\nsyn keyword xsMacro IS_UTF8_CHAR_3 IS_UTF8_CHAR_3a IS_UTF8_CHAR_3b\nsyn keyword xsMacro IS_UTF8_CHAR_3c IS_UTF8_CHAR_3d IS_UTF8_CHAR_4\nsyn keyword xsMacro IS_UTF8_CHAR_4a IS_UTF8_CHAR_4b IS_UTF8_CHAR_4c\nsyn keyword xsMacro IS_UTF8_CHAR_5 IS_UTF8_CHAR_5a IS_UTF8_CHAR_5b\nsyn keyword xsMacro IS_UTF8_CHAR_FAST IVSIZE IVTYPE IV_DIG IV_MAX IV_MAX_P1\nsyn keyword xsMacro IV_MIN I_32 I_ARPA_INET I_ASSERT I_CRYPT I_DBM I_DIRENT\nsyn keyword xsMacro I_DLFCN I_FLOAT I_GDBM I_GDBMNDBM I_GRP I_INTTYPES\nsyn keyword xsMacro I_LANGINFO I_LIMITS I_LOCALE I_MATH I_MNTENT I_NETDB\nsyn keyword xsMacro I_NETINET_IN I_NETINET_TCP I_POLL I_PTHREAD I_PWD\nsyn keyword xsMacro I_SHADOW I_STDARG I_STDBOOL I_STDDEF I_STDLIB I_STRING\nsyn keyword xsMacro I_SYSLOG I_SYSUIO I_SYSUTSNAME I_SYS_DIR I_SYS_FILE\nsyn keyword xsMacro I_SYS_IOCTL I_SYS_MOUNT I_SYS_PARAM I_SYS_POLL\nsyn keyword xsMacro I_SYS_RESOURCE I_SYS_SELECT I_SYS_STAT I_SYS_STATFS\nsyn keyword xsMacro I_SYS_STATVFS I_SYS_TIME I_SYS_TIMES I_SYS_TYPES I_SYS_UN\nsyn keyword xsMacro I_SYS_VFS I_SYS_WAIT I_TERMIOS I_TIME I_UNISTD I_USTAT\nsyn keyword xsMacro I_UTIME I_V I_VALUES IoANY IoBOTTOM_GV IoBOTTOM_NAME\nsyn keyword xsMacro IoDIRP IoFLAGS IoFMT_GV IoFMT_NAME IoIFP IoLINES\nsyn keyword xsMacro IoLINES_LEFT IoOFP IoPAGE IoPAGE_LEN IoTOP_GV IoTOP_NAME\nsyn keyword xsMacro IoTYPE IoTYPE_APPEND IoTYPE_CLOSED IoTYPE_IMPLICIT\nsyn keyword xsMacro IoTYPE_NUMERIC IoTYPE_PIPE IoTYPE_RDONLY IoTYPE_RDWR\nsyn keyword xsMacro IoTYPE_SOCKET IoTYPE_STD IoTYPE_WRONLY IsSet\nsyn keyword xsMacro JMPENV_BOOTSTRAP JMPENV_JUMP JMPENV_POP JMPENV_PUSH JOIN\nsyn keyword xsMacro KEEPCOPY_PAT_MOD KEEPCOPY_PAT_MODS KEEPS KEEPS_next\nsyn keyword xsMacro KEEPS_next_fail KEYWORD_PLUGIN_DECLINE\nsyn keyword xsMacro KEYWORD_PLUGIN_EXPR KEYWORD_PLUGIN_STMT KEY_AUTOLOAD\nsyn keyword xsMacro KEY_BEGIN KEY_CHECK KEY_CORE KEY_DESTROY KEY_END KEY_INIT\nsyn keyword xsMacro KEY_NULL KEY_UNITCHECK KEY___DATA__ KEY___END__\nsyn keyword xsMacro KEY___FILE__ KEY___LINE__ KEY___PACKAGE__ KEY___SUB__\nsyn keyword xsMacro KEY_abs KEY_accept KEY_alarm KEY_and KEY_atan2 KEY_bind\nsyn keyword xsMacro KEY_binmode KEY_bless KEY_break KEY_caller KEY_chdir\nsyn keyword xsMacro KEY_chmod KEY_chomp KEY_chop KEY_chown KEY_chr KEY_chroot\nsyn keyword xsMacro KEY_close KEY_closedir KEY_cmp KEY_connect KEY_continue\nsyn keyword xsMacro KEY_cos KEY_crypt KEY_dbmclose KEY_dbmopen KEY_default\nsyn keyword xsMacro KEY_defined KEY_delete KEY_die KEY_do KEY_dump KEY_each\nsyn keyword xsMacro KEY_else KEY_elsif KEY_endgrent KEY_endhostent\nsyn keyword xsMacro KEY_endnetent KEY_endprotoent KEY_endpwent KEY_endservent\nsyn keyword xsMacro KEY_eof KEY_eq KEY_eval KEY_evalbytes KEY_exec KEY_exists\nsyn keyword xsMacro KEY_exit KEY_exp KEY_fc KEY_fcntl KEY_fileno KEY_flock\nsyn keyword xsMacro KEY_for KEY_foreach KEY_fork KEY_format KEY_formline\nsyn keyword xsMacro KEY_ge KEY_getc KEY_getgrent KEY_getgrgid KEY_getgrnam\nsyn keyword xsMacro KEY_gethostbyaddr KEY_gethostbyname KEY_gethostent\nsyn keyword xsMacro KEY_getlogin KEY_getnetbyaddr KEY_getnetbyname\nsyn keyword xsMacro KEY_getnetent KEY_getpeername KEY_getpgrp KEY_getppid\nsyn keyword xsMacro KEY_getpriority KEY_getprotobyname KEY_getprotobynumber\nsyn keyword xsMacro KEY_getprotoent KEY_getpwent KEY_getpwnam KEY_getpwuid\nsyn keyword xsMacro KEY_getservbyname KEY_getservbyport KEY_getservent\nsyn keyword xsMacro KEY_getsockname KEY_getsockopt KEY_given KEY_glob\nsyn keyword xsMacro KEY_gmtime KEY_goto KEY_grep KEY_gt KEY_hex KEY_if\nsyn keyword xsMacro KEY_index KEY_int KEY_ioctl KEY_join KEY_keys KEY_kill\nsyn keyword xsMacro KEY_last KEY_lc KEY_lcfirst KEY_le KEY_length KEY_link\nsyn keyword xsMacro KEY_listen KEY_local KEY_localtime KEY_lock KEY_log\nsyn keyword xsMacro KEY_lstat KEY_lt KEY_m KEY_map KEY_mkdir KEY_msgctl\nsyn keyword xsMacro KEY_msgget KEY_msgrcv KEY_msgsnd KEY_my KEY_ne KEY_next\nsyn keyword xsMacro KEY_no KEY_not KEY_oct KEY_open KEY_opendir KEY_or\nsyn keyword xsMacro KEY_ord KEY_our KEY_pack KEY_package KEY_pipe KEY_pop\nsyn keyword xsMacro KEY_pos KEY_print KEY_printf KEY_prototype KEY_push KEY_q\nsyn keyword xsMacro KEY_qq KEY_qr KEY_quotemeta KEY_qw KEY_qx KEY_rand\nsyn keyword xsMacro KEY_read KEY_readdir KEY_readline KEY_readlink\nsyn keyword xsMacro KEY_readpipe KEY_recv KEY_redo KEY_ref KEY_rename\nsyn keyword xsMacro KEY_require KEY_reset KEY_return KEY_reverse\nsyn keyword xsMacro KEY_rewinddir KEY_rindex KEY_rmdir KEY_s KEY_say\nsyn keyword xsMacro KEY_scalar KEY_seek KEY_seekdir KEY_select KEY_semctl\nsyn keyword xsMacro KEY_semget KEY_semop KEY_send KEY_setgrent KEY_sethostent\nsyn keyword xsMacro KEY_setnetent KEY_setpgrp KEY_setpriority KEY_setprotoent\nsyn keyword xsMacro KEY_setpwent KEY_setservent KEY_setsockopt KEY_shift\nsyn keyword xsMacro KEY_shmctl KEY_shmget KEY_shmread KEY_shmwrite\nsyn keyword xsMacro KEY_shutdown KEY_sin KEY_sleep KEY_socket KEY_socketpair\nsyn keyword xsMacro KEY_sort KEY_splice KEY_split KEY_sprintf KEY_sqrt\nsyn keyword xsMacro KEY_srand KEY_stat KEY_state KEY_study KEY_sub KEY_substr\nsyn keyword xsMacro KEY_symlink KEY_syscall KEY_sysopen KEY_sysread\nsyn keyword xsMacro KEY_sysseek KEY_system KEY_syswrite KEY_tell KEY_telldir\nsyn keyword xsMacro KEY_tie KEY_tied KEY_time KEY_times KEY_tr KEY_truncate\nsyn keyword xsMacro KEY_uc KEY_ucfirst KEY_umask KEY_undef KEY_unless\nsyn keyword xsMacro KEY_unlink KEY_unpack KEY_unshift KEY_untie KEY_until\nsyn keyword xsMacro KEY_use KEY_utime KEY_values KEY_vec KEY_wait KEY_waitpid\nsyn keyword xsMacro KEY_wantarray KEY_warn KEY_when KEY_while KEY_write KEY_x\nsyn keyword xsMacro KEY_xor KEY_y LABEL\nsyn keyword xsMacro LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE\nsyn keyword xsMacro LATIN_CAPITAL_LETTER_SHARP_S\nsyn keyword xsMacro LATIN_CAPITAL_LETTER_Y_WITH_DIAERESIS\nsyn keyword xsMacro LATIN_SMALL_LETTER_A_WITH_RING_ABOVE\nsyn keyword xsMacro LATIN_SMALL_LETTER_SHARP_S\nsyn keyword xsMacro LATIN_SMALL_LETTER_Y_WITH_DIAERESIS LDBL_DIG LEAVE\nsyn keyword xsMacro LEAVESUB LEAVE_SCOPE LEAVE_with_name LEX_DONT_CLOSE_RSFP\nsyn keyword xsMacro LEX_EVALBYTES LEX_IGNORE_UTF8_HINTS LEX_KEEP_PREVIOUS\nsyn keyword xsMacro LEX_NOTPARSING LEX_START_COPIED LEX_START_FLAGS\nsyn keyword xsMacro LEX_START_SAME_FILTER LEX_STUFF_UTF8 LIBERAL\nsyn keyword xsMacro LIBM_LIB_VERSION LIB_INVARG LIKELY LINKLIST LNBREAK LOCAL\nsyn keyword xsMacro LOCALE_PAT_MOD LOCALE_PAT_MODS LOCALTIME_MAX\nsyn keyword xsMacro LOCALTIME_MIN LOCALTIME_R LOCALTIME_R_PROTO\nsyn keyword xsMacro LOCAL_PATCH_COUNT LOCK_DOLLARZERO_MUTEX LOC_SED LOGICAL\nsyn keyword xsMacro LONGJMP LONGLONGSIZE LONGSIZE LONG_DOUBLESIZE\nsyn keyword xsMacro LONG_DOUBLE_EQUALS_DOUBLE LOOPEX LOOP_PAT_MODS LSEEKSIZE\nsyn keyword xsMacro LSTOP LSTOPSUB LVRET L_R_TZSET LvFLAGS LvTARG LvTARGLEN\nsyn keyword xsMacro LvTARGOFF LvTYPE MADPROP_IN_BASEOP MAD_NULL MAD_OP MAD_PV\nsyn keyword xsMacro MAD_SV MALLOC_CHECK_TAINT MALLOC_CHECK_TAINT2\nsyn keyword xsMacro MALLOC_CTL_H MALLOC_INIT MALLOC_OVERHEAD MALLOC_TERM\nsyn keyword xsMacro MALLOC_TOO_LATE_FOR MARKPOINT MARKPOINT_next\nsyn keyword xsMacro MARKPOINT_next_fail MASK MATCHOP MAXARG MAXO MAXPATHLEN\nsyn keyword xsMacro MAXSYSFD MAX_CHARSET_NAME_LENGTH MAX_FEATURE_LEN\nsyn keyword xsMacro MAX_PORTABLE_UTF8_TWO_BYTE\nsyn keyword xsMacro MAX_RECURSE_EVAL_NOCHANGE_DEPTH MAYBE_DEREF_GV\nsyn keyword xsMacro MAYBE_DEREF_GV_flags MAYBE_DEREF_GV_nomg MBOL\nsyn keyword xsMacro MEMBER_TO_FPTR MEM_ALIGNBYTES MEM_LOG_ALLOC MEM_LOG_FREE\nsyn keyword xsMacro MEM_LOG_REALLOC MEM_SIZE MEM_SIZE_MAX MEM_WRAP_CHECK\nsyn keyword xsMacro MEM_WRAP_CHECK_ MEM_WRAP_CHECK_1 MEM_WRAP_CHECK_2 MEOL\nsyn keyword xsMacro METHOD MEXTEND MGf_COPY MGf_DUP MGf_GSKIP MGf_LOCAL\nsyn keyword xsMacro MGf_MINMATCH MGf_REFCOUNTED MGf_TAINTEDDIR MICRO_SIGN\nsyn keyword xsMacro MINMOD MJD_OFFSET_DEBUG MRO_GET_PRIVATE_DATA MSPAGAIN\nsyn keyword xsMacro MULOP MULTICALL MULTILINE_PAT_MOD MULTIPLICITY MUTABLE_AV\nsyn keyword xsMacro MUTABLE_CV MUTABLE_GV MUTABLE_HV MUTABLE_IO MUTABLE_PTR\nsyn keyword xsMacro MUTABLE_SV MUTEX_DESTROY MUTEX_INIT\nsyn keyword xsMacro MUTEX_INIT_CALLS_MALLOC MUTEX_INIT_NEEDS_MUTEX_ZEROED\nsyn keyword xsMacro MUTEX_LOCK MUTEX_UNLOCK MY MYSUB MYSWAP MY_CXT_CLONE\nsyn keyword xsMacro MY_CXT_INDEX MY_CXT_INIT MY_CXT_INIT_ARG\nsyn keyword xsMacro MY_CXT_INIT_INTERP M_PAT_MODS M_VOID MgPV MgPV_const\nsyn keyword xsMacro MgPV_nolen_const MgTAINTEDDIR MgTAINTEDDIR_off\nsyn keyword xsMacro MgTAINTEDDIR_on Mkdir Move MoveD NALNUM NALNUMA NALNUML\nsyn keyword xsMacro NALNUMU NATIVE8_TO_UNI NATIVE_IS_INVARIANT\nsyn keyword xsMacro NATIVE_TO_ASCII NATIVE_TO_I8 NATIVE_TO_NEED NATIVE_TO_UNI\nsyn keyword xsMacro NATIVE_TO_UTF NBOUND NBOUNDA NBOUNDL NBOUNDU\nsyn keyword xsMacro NDBM_H_USES_PROTOTYPES NDIGIT NDIGITA NDIGITL\nsyn keyword xsMacro NEED_PTHREAD_INIT NEED_VA_COPY NEGATIVE_INDICES_VAR\nsyn keyword xsMacro NETDB_R_OBSOLETE NEWSV NEXTOPER NEXT_LINE_CHAR NEXT_OFF\nsyn keyword xsMacro NGROUPP NHORIZWS NOAMP NODE_ALIGN NODE_ALIGN_FILL\nsyn keyword xsMacro NODE_STEP_B NODE_STEP_REGNODE NODE_SZ_STR NOLINE\nsyn keyword xsMacro NONDESTRUCT_PAT_MOD NONDESTRUCT_PAT_MODS NOOP\nsyn keyword xsMacro NORETURN_FUNCTION_END NORMAL NOTHING NOTOP NOT_IN_PAD\nsyn keyword xsMacro NO_ENV_ARRAY_IN_MAIN NO_LOCALE\nsyn keyword xsMacro NO_LOCALECONV_MON_THOUSANDS_SEP NREF NREFF NREFFA NREFFL\nsyn keyword xsMacro NREFFU NSIG NSPACE NSPACEA NSPACEL NSPACEU NUM2PTR\nsyn keyword xsMacro NVERTWS NVSIZE NVTYPE NV_DIG NV_EPSILON NV_INF\nsyn keyword xsMacro NV_MANT_DIG NV_MAX NV_MAX_10_EXP NV_MIN NV_MIN_10_EXP\nsyn keyword xsMacro NV_NAN NV_OVERFLOWS_INTEGERS_AT NV_PRESERVES_UV_BITS\nsyn keyword xsMacro NV_WITHIN_IV NV_WITHIN_UV New NewOp NewOpSz Newc Newx\nsyn keyword xsMacro Newxc Newxz Newz NofAMmeth Null Nullav Nullch Nullcv\nsyn keyword xsMacro Nullfp Nullgv Nullhe Nullhek Nullhv Nullop Nullsv OASHIFT\nsyn keyword xsMacro OCSHIFT ONCE_PAT_MOD ONCE_PAT_MODS OPEN OPERAND OPFAIL\nsyn keyword xsMacro OPTIMIZED OP_BINARY OP_CHECK_MUTEX_INIT\nsyn keyword xsMacro OP_CHECK_MUTEX_LOCK OP_CHECK_MUTEX_TERM\nsyn keyword xsMacro OP_CHECK_MUTEX_UNLOCK OP_CLASS OP_DESC OP_GIMME\nsyn keyword xsMacro OP_GIMME_REVERSE OP_IS_DIRHOP OP_IS_FILETEST\nsyn keyword xsMacro OP_IS_FILETEST_ACCESS OP_IS_NUMCOMPARE OP_IS_SOCKET\nsyn keyword xsMacro OP_LVALUE_NO_CROAK OP_MEM_TO_REG OP_NAME OP_REFCNT_INIT\nsyn keyword xsMacro OP_REFCNT_LOCK OP_REFCNT_TERM OP_REFCNT_UNLOCK\nsyn keyword xsMacro OP_REG_TO_MEM OROP OROR OSNAME OSVERS O_CREAT O_RDONLY\nsyn keyword xsMacro O_RDWR O_TEXT O_WRONLY Off Off_t_size OpREFCNT_dec\nsyn keyword xsMacro OpREFCNT_inc OpREFCNT_set OutCopFILE PAD_BASE_SV\nsyn keyword xsMacro PAD_CLONE_VARS PAD_COMPNAME_FLAGS\nsyn keyword xsMacro PAD_COMPNAME_FLAGS_isOUR PAD_COMPNAME_GEN\nsyn keyword xsMacro PAD_COMPNAME_GEN_set PAD_COMPNAME_OURSTASH\nsyn keyword xsMacro PAD_COMPNAME_PV PAD_COMPNAME_SV PAD_COMPNAME_TYPE\nsyn keyword xsMacro PAD_FAKELEX_ANON PAD_FAKELEX_MULTI PAD_RESTORE_LOCAL\nsyn keyword xsMacro PAD_SAVE_LOCAL PAD_SAVE_SETNULLPAD PAD_SETSV PAD_SET_CUR\nsyn keyword xsMacro PAD_SET_CUR_NOSAVE PAD_SV PAD_SVl PARENT_FAKELEX_FLAGS\nsyn keyword xsMacro PARENT_PAD_INDEX PARSE_OPTIONAL PATCHLEVEL PEG PERLDB_ALL\nsyn keyword xsMacro PERLDB_GOTO PERLDB_INTER PERLDB_LINE PERLDB_NAMEANON\nsyn keyword xsMacro PERLDB_NAMEEVAL PERLDB_NOOPT PERLDB_SAVESRC\nsyn keyword xsMacro PERLDB_SAVESRC_INVALID PERLDB_SAVESRC_NOSUBS\nsyn keyword xsMacro PERLDB_SINGLE PERLDB_SUB PERLDB_SUBLINE PERLDB_SUB_NN\nsyn keyword xsMacro PERLDBf_GOTO PERLDBf_INTER PERLDBf_LINE PERLDBf_NAMEANON\nsyn keyword xsMacro PERLDBf_NAMEEVAL PERLDBf_NONAME PERLDBf_NOOPT\nsyn keyword xsMacro PERLDBf_SAVESRC PERLDBf_SAVESRC_INVALID\nsyn keyword xsMacro PERLDBf_SAVESRC_NOSUBS PERLDBf_SINGLE PERLDBf_SUB\nsyn keyword xsMacro PERLDBf_SUBLINE PERLIOBUF_DEFAULT_BUFSIZ PERLIO_DUP_CLONE\nsyn keyword xsMacro PERLIO_DUP_FD PERLIO_FUNCS_CAST PERLIO_FUNCS_CONST\nsyn keyword xsMacro PERLIO_FUNCS_DECL PERLIO_F_APPEND PERLIO_F_CANREAD\nsyn keyword xsMacro PERLIO_F_CANWRITE PERLIO_F_CLEARED PERLIO_F_CRLF\nsyn keyword xsMacro PERLIO_F_EOF PERLIO_F_ERROR PERLIO_F_FASTGETS\nsyn keyword xsMacro PERLIO_F_LINEBUF PERLIO_F_NOTREG PERLIO_F_OPEN\nsyn keyword xsMacro PERLIO_F_RDBUF PERLIO_F_TEMP PERLIO_F_TRUNCATE\nsyn keyword xsMacro PERLIO_F_TTY PERLIO_F_UNBUF PERLIO_F_UTF8 PERLIO_F_WRBUF\nsyn keyword xsMacro PERLIO_INIT PERLIO_IS_STDIO PERLIO_K_BUFFERED\nsyn keyword xsMacro PERLIO_K_CANCRLF PERLIO_K_DESTRUCT PERLIO_K_DUMMY\nsyn keyword xsMacro PERLIO_K_FASTGETS PERLIO_K_MULTIARG PERLIO_K_RAW\nsyn keyword xsMacro PERLIO_K_UTF8 PERLIO_LAYERS PERLIO_NOT_STDIO\nsyn keyword xsMacro PERLIO_STDTEXT PERLIO_TERM PERLIO_USING_CRLF\nsyn keyword xsMacro PERLSI_DESTROY PERLSI_DIEHOOK PERLSI_MAGIC PERLSI_MAIN\nsyn keyword xsMacro PERLSI_OVERLOAD PERLSI_REQUIRE PERLSI_SIGNAL PERLSI_SORT\nsyn keyword xsMacro PERLSI_UNDEF PERLSI_UNKNOWN PERLSI_WARNHOOK PERL_ABS\nsyn keyword xsMacro PERL_ALLOC_CHECK PERL_API_REVISION PERL_API_SUBVERSION\nsyn keyword xsMacro PERL_API_VERSION PERL_API_VERSION_STRING\nsyn keyword xsMacro PERL_ARENA_ROOTS_SIZE PERL_ARENA_SIZE\nsyn keyword xsMacro PERL_ARGS_ASSERT_ADD_ALTERNATE PERL_ARGS_ASSERT_ADD_DATA\nsyn keyword xsMacro PERL_ARGS_ASSERT_ADD_UTF16_TEXTFILTER\nsyn keyword xsMacro PERL_ARGS_ASSERT_ADJUST_STACK_ON_LEAVE\nsyn keyword xsMacro PERL_ARGS_ASSERT_ALLOCMY PERL_ARGS_ASSERT_AMAGIC_CALL\nsyn keyword xsMacro PERL_ARGS_ASSERT_AMAGIC_CMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_AMAGIC_CMP_LOCALE\nsyn keyword xsMacro PERL_ARGS_ASSERT_AMAGIC_DEREF_CALL\nsyn keyword xsMacro PERL_ARGS_ASSERT_AMAGIC_I_NCMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_AMAGIC_NCMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_ANONYMISE_CV_MAYBE\nsyn keyword xsMacro PERL_ARGS_ASSERT_ANY_DUP PERL_ARGS_ASSERT_APPLY\nsyn keyword xsMacro PERL_ARGS_ASSERT_APPLY_ATTRS\nsyn keyword xsMacro PERL_ARGS_ASSERT_APPLY_ATTRS_MY\nsyn keyword xsMacro PERL_ARGS_ASSERT_APPLY_ATTRS_STRING\nsyn keyword xsMacro PERL_ARGS_ASSERT_ASSERT_UFT8_CACHE_COHERENT\nsyn keyword xsMacro PERL_ARGS_ASSERT_AV_ARYLEN_P PERL_ARGS_ASSERT_AV_CLEAR\nsyn keyword xsMacro PERL_ARGS_ASSERT_AV_CREATE_AND_PUSH\nsyn keyword xsMacro PERL_ARGS_ASSERT_AV_CREATE_AND_UNSHIFT_ONE\nsyn keyword xsMacro PERL_ARGS_ASSERT_AV_DELETE PERL_ARGS_ASSERT_AV_EXISTS\nsyn keyword xsMacro PERL_ARGS_ASSERT_AV_EXTEND PERL_ARGS_ASSERT_AV_FETCH\nsyn keyword xsMacro PERL_ARGS_ASSERT_AV_FILL PERL_ARGS_ASSERT_AV_ITER_P\nsyn keyword xsMacro PERL_ARGS_ASSERT_AV_LEN PERL_ARGS_ASSERT_AV_MAKE\nsyn keyword xsMacro PERL_ARGS_ASSERT_AV_POP PERL_ARGS_ASSERT_AV_PUSH\nsyn keyword xsMacro PERL_ARGS_ASSERT_AV_REIFY PERL_ARGS_ASSERT_AV_SHIFT\nsyn keyword xsMacro PERL_ARGS_ASSERT_AV_STORE PERL_ARGS_ASSERT_AV_UNDEF\nsyn keyword xsMacro PERL_ARGS_ASSERT_AV_UNSHIFT PERL_ARGS_ASSERT_BAD_TYPE_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_BAD_TYPE_SV PERL_ARGS_ASSERT_BIND_MATCH\nsyn keyword xsMacro PERL_ARGS_ASSERT_BLOCKHOOK_REGISTER\nsyn keyword xsMacro PERL_ARGS_ASSERT_BYTES_CMP_UTF8\nsyn keyword xsMacro PERL_ARGS_ASSERT_BYTES_FROM_UTF8\nsyn keyword xsMacro PERL_ARGS_ASSERT_BYTES_TO_UNI\nsyn keyword xsMacro PERL_ARGS_ASSERT_BYTES_TO_UTF8 PERL_ARGS_ASSERT_CALL_ARGV\nsyn keyword xsMacro PERL_ARGS_ASSERT_CALL_LIST PERL_ARGS_ASSERT_CALL_METHOD\nsyn keyword xsMacro PERL_ARGS_ASSERT_CALL_PV PERL_ARGS_ASSERT_CALL_SV\nsyn keyword xsMacro PERL_ARGS_ASSERT_CANDO PERL_ARGS_ASSERT_CHECKCOMMA\nsyn keyword xsMacro PERL_ARGS_ASSERT_CHECKPOSIXCC\nsyn keyword xsMacro PERL_ARGS_ASSERT_CHECK_LOCALE_BOUNDARY_CROSSING\nsyn keyword xsMacro PERL_ARGS_ASSERT_CHECK_TYPE_AND_OPEN\nsyn keyword xsMacro PERL_ARGS_ASSERT_CHECK_UTF8_PRINT\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_ANONCODE PERL_ARGS_ASSERT_CK_BITOP\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_CHDIR PERL_ARGS_ASSERT_CK_CMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_CONCAT PERL_ARGS_ASSERT_CK_DEFINED\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_DELETE PERL_ARGS_ASSERT_CK_DIE\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_EACH\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_CORE\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_LIST\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO_OR_LIST\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_EOF PERL_ARGS_ASSERT_CK_EVAL\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_EXEC PERL_ARGS_ASSERT_CK_EXISTS\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_EXIT PERL_ARGS_ASSERT_CK_FTST\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_FUN PERL_ARGS_ASSERT_CK_GLOB\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_GREP PERL_ARGS_ASSERT_CK_INDEX\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_JOIN PERL_ARGS_ASSERT_CK_LENGTH\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_LFUN PERL_ARGS_ASSERT_CK_LISTIOB\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_MATCH PERL_ARGS_ASSERT_CK_METHOD\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_NULL PERL_ARGS_ASSERT_CK_OPEN\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_READLINE PERL_ARGS_ASSERT_CK_REPEAT\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_REQUIRE PERL_ARGS_ASSERT_CK_RETURN\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_RFUN PERL_ARGS_ASSERT_CK_RVCONST\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_SASSIGN PERL_ARGS_ASSERT_CK_SELECT\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_SHIFT PERL_ARGS_ASSERT_CK_SMARTMATCH\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_SORT PERL_ARGS_ASSERT_CK_SPAIR\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_SPLIT PERL_ARGS_ASSERT_CK_SUBR\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_SUBSTR PERL_ARGS_ASSERT_CK_SVCONST\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_TELL PERL_ARGS_ASSERT_CK_TRUNC\nsyn keyword xsMacro PERL_ARGS_ASSERT_CK_WARNER PERL_ARGS_ASSERT_CK_WARNER_D\nsyn keyword xsMacro PERL_ARGS_ASSERT_CLEAR_PLACEHOLDERS\nsyn keyword xsMacro PERL_ARGS_ASSERT_CLONE_PARAMS_DEL\nsyn keyword xsMacro PERL_ARGS_ASSERT_CLONE_PARAMS_NEW\nsyn keyword xsMacro PERL_ARGS_ASSERT_CLOSEST_COP PERL_ARGS_ASSERT_CL_AND\nsyn keyword xsMacro PERL_ARGS_ASSERT_CL_ANYTHING PERL_ARGS_ASSERT_CL_INIT\nsyn keyword xsMacro PERL_ARGS_ASSERT_CL_IS_ANYTHING PERL_ARGS_ASSERT_CL_OR\nsyn keyword xsMacro PERL_ARGS_ASSERT_COP_FETCH_LABEL\nsyn keyword xsMacro PERL_ARGS_ASSERT_COP_FREE\nsyn keyword xsMacro PERL_ARGS_ASSERT_COP_STORE_LABEL\nsyn keyword xsMacro PERL_ARGS_ASSERT_CORESUB_OP\nsyn keyword xsMacro PERL_ARGS_ASSERT_CORE_PROTOTYPE\nsyn keyword xsMacro PERL_ARGS_ASSERT_CORE_REGCLASS_SWASH\nsyn keyword xsMacro PERL_ARGS_ASSERT_CROAK_SV PERL_ARGS_ASSERT_CROAK_XS_USAGE\nsyn keyword xsMacro PERL_ARGS_ASSERT_CURSE PERL_ARGS_ASSERT_CUSTOM_OP_DESC\nsyn keyword xsMacro PERL_ARGS_ASSERT_CUSTOM_OP_NAME\nsyn keyword xsMacro PERL_ARGS_ASSERT_CUSTOM_OP_REGISTER\nsyn keyword xsMacro PERL_ARGS_ASSERT_CUSTOM_OP_XOP PERL_ARGS_ASSERT_CVGV_SET\nsyn keyword xsMacro PERL_ARGS_ASSERT_CVSTASH_SET\nsyn keyword xsMacro PERL_ARGS_ASSERT_CV_CKPROTO_LEN_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_CV_CLONE PERL_ARGS_ASSERT_CV_DUMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_CV_GET_CALL_CHECKER\nsyn keyword xsMacro PERL_ARGS_ASSERT_CV_SET_CALL_CHECKER\nsyn keyword xsMacro PERL_ARGS_ASSERT_CV_UNDEF PERL_ARGS_ASSERT_CX_DUMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_CX_DUP PERL_ARGS_ASSERT_DEB\nsyn keyword xsMacro PERL_ARGS_ASSERT_DEBOP PERL_ARGS_ASSERT_DEBPROF\nsyn keyword xsMacro PERL_ARGS_ASSERT_DEBUG_START_MATCH\nsyn keyword xsMacro PERL_ARGS_ASSERT_DEB_NOCONTEXT\nsyn keyword xsMacro PERL_ARGS_ASSERT_DEB_STACK_N PERL_ARGS_ASSERT_DELIMCPY\nsyn keyword xsMacro PERL_ARGS_ASSERT_DEL_SV PERL_ARGS_ASSERT_DESTROY_MATCHER\nsyn keyword xsMacro PERL_ARGS_ASSERT_DIE_SV PERL_ARGS_ASSERT_DIE_UNWIND\nsyn keyword xsMacro PERL_ARGS_ASSERT_DIRP_DUP PERL_ARGS_ASSERT_DIV128\nsyn keyword xsMacro PERL_ARGS_ASSERT_DOFILE PERL_ARGS_ASSERT_DOFINDLABEL\nsyn keyword xsMacro PERL_ARGS_ASSERT_DOFORM PERL_ARGS_ASSERT_DOONELINER\nsyn keyword xsMacro PERL_ARGS_ASSERT_DOOPEN_PM PERL_ARGS_ASSERT_DOPARSEFORM\nsyn keyword xsMacro PERL_ARGS_ASSERT_DOPOPTOLABEL\nsyn keyword xsMacro PERL_ARGS_ASSERT_DOPOPTOSUB_AT PERL_ARGS_ASSERT_DOREF\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_AEXEC PERL_ARGS_ASSERT_DO_AEXEC5\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_ASPAWN PERL_ARGS_ASSERT_DO_BINMODE\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_CHOMP PERL_ARGS_ASSERT_DO_DUMP_PAD\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_EOF PERL_ARGS_ASSERT_DO_EXEC\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_EXEC3 PERL_ARGS_ASSERT_DO_GVGV_DUMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_GV_DUMP PERL_ARGS_ASSERT_DO_HV_DUMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_IPCCTL PERL_ARGS_ASSERT_DO_IPCGET\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_JOIN PERL_ARGS_ASSERT_DO_MAGIC_DUMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_MSGRCV PERL_ARGS_ASSERT_DO_MSGSND\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_NCMP PERL_ARGS_ASSERT_DO_ODDBALL\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_OPEN PERL_ARGS_ASSERT_DO_OPEN9\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_OPENN PERL_ARGS_ASSERT_DO_OP_DUMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_OP_XMLDUMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_PMOP_DUMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_PMOP_XMLDUMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_PRINT PERL_ARGS_ASSERT_DO_SEMOP\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_SHMIO PERL_ARGS_ASSERT_DO_SPAWN\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_SPAWN_NOWAIT\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_SPRINTF PERL_ARGS_ASSERT_DO_SV_DUMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_SYSSEEK PERL_ARGS_ASSERT_DO_TELL\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_COMPLEX\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_COMPLEX_UTF8\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_COUNT\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_COUNT_UTF8\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_SIMPLE\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_TRANS_SIMPLE_UTF8\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_VECGET PERL_ARGS_ASSERT_DO_VECSET\nsyn keyword xsMacro PERL_ARGS_ASSERT_DO_VOP PERL_ARGS_ASSERT_DUMPUNTIL\nsyn keyword xsMacro PERL_ARGS_ASSERT_DUMP_EXEC_POS PERL_ARGS_ASSERT_DUMP_FDS\nsyn keyword xsMacro PERL_ARGS_ASSERT_DUMP_FORM PERL_ARGS_ASSERT_DUMP_INDENT\nsyn keyword xsMacro PERL_ARGS_ASSERT_DUMP_MSTATS\nsyn keyword xsMacro PERL_ARGS_ASSERT_DUMP_PACKSUBS\nsyn keyword xsMacro PERL_ARGS_ASSERT_DUMP_PACKSUBS_PERL\nsyn keyword xsMacro PERL_ARGS_ASSERT_DUMP_SUB PERL_ARGS_ASSERT_DUMP_SUB_PERL\nsyn keyword xsMacro PERL_ARGS_ASSERT_DUMP_SV_CHILD PERL_ARGS_ASSERT_DUMP_TRIE\nsyn keyword xsMacro PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_LIST\nsyn keyword xsMacro PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_TABLE\nsyn keyword xsMacro PERL_ARGS_ASSERT_DUMP_VINDENT\nsyn keyword xsMacro PERL_ARGS_ASSERT_DUP_ATTRLIST\nsyn keyword xsMacro PERL_ARGS_ASSERT_EMULATE_COP_IO PERL_ARGS_ASSERT_EVAL_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_EVAL_SV PERL_ARGS_ASSERT_EXEC_FAILED\nsyn keyword xsMacro PERL_ARGS_ASSERT_EXPECT_NUMBER PERL_ARGS_ASSERT_F0CONVERT\nsyn keyword xsMacro PERL_ARGS_ASSERT_FBM_COMPILE PERL_ARGS_ASSERT_FBM_INSTR\nsyn keyword xsMacro PERL_ARGS_ASSERT_FEATURE_IS_ENABLED\nsyn keyword xsMacro PERL_ARGS_ASSERT_FILTER_DEL PERL_ARGS_ASSERT_FILTER_GETS\nsyn keyword xsMacro PERL_ARGS_ASSERT_FILTER_READ PERL_ARGS_ASSERT_FINALIZE_OP\nsyn keyword xsMacro PERL_ARGS_ASSERT_FINALIZE_OPTREE\nsyn keyword xsMacro PERL_ARGS_ASSERT_FIND_AND_FORGET_PMOPS\nsyn keyword xsMacro PERL_ARGS_ASSERT_FIND_ARRAY_SUBSCRIPT\nsyn keyword xsMacro PERL_ARGS_ASSERT_FIND_BEGINNING\nsyn keyword xsMacro PERL_ARGS_ASSERT_FIND_BYCLASS\nsyn keyword xsMacro PERL_ARGS_ASSERT_FIND_HASH_SUBSCRIPT\nsyn keyword xsMacro PERL_ARGS_ASSERT_FIND_IN_MY_STASH\nsyn keyword xsMacro PERL_ARGS_ASSERT_FIND_RUNDEFSV2\nsyn keyword xsMacro PERL_ARGS_ASSERT_FIND_SCRIPT\nsyn keyword xsMacro PERL_ARGS_ASSERT_FIRST_SYMBOL PERL_ARGS_ASSERT_FOLDEQ\nsyn keyword xsMacro PERL_ARGS_ASSERT_FOLDEQ_LATIN1\nsyn keyword xsMacro PERL_ARGS_ASSERT_FOLDEQ_LOCALE\nsyn keyword xsMacro PERL_ARGS_ASSERT_FOLDEQ_UTF8_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_FOLD_CONSTANTS\nsyn keyword xsMacro PERL_ARGS_ASSERT_FORCE_IDENT\nsyn keyword xsMacro PERL_ARGS_ASSERT_FORCE_STRICT_VERSION\nsyn keyword xsMacro PERL_ARGS_ASSERT_FORCE_VERSION\nsyn keyword xsMacro PERL_ARGS_ASSERT_FORCE_WORD PERL_ARGS_ASSERT_FORGET_PMOP\nsyn keyword xsMacro PERL_ARGS_ASSERT_FORM PERL_ARGS_ASSERT_FORM_NOCONTEXT\nsyn keyword xsMacro PERL_ARGS_ASSERT_FPRINTF_NOCONTEXT\nsyn keyword xsMacro PERL_ARGS_ASSERT_FP_DUP\nsyn keyword xsMacro PERL_ARGS_ASSERT_FREE_GLOBAL_STRUCT\nsyn keyword xsMacro PERL_ARGS_ASSERT_GETCWD_SV PERL_ARGS_ASSERT_GETENV_LEN\nsyn keyword xsMacro PERL_ARGS_ASSERT_GET_AUX_MG PERL_ARGS_ASSERT_GET_AV\nsyn keyword xsMacro PERL_ARGS_ASSERT_GET_CV PERL_ARGS_ASSERT_GET_CVN_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_GET_DB_SUB\nsyn keyword xsMacro PERL_ARGS_ASSERT_GET_DEBUG_OPTS PERL_ARGS_ASSERT_GET_HV\nsyn keyword xsMacro PERL_ARGS_ASSERT_GET_INVLIST_ITER_ADDR\nsyn keyword xsMacro PERL_ARGS_ASSERT_GET_INVLIST_LEN_ADDR\nsyn keyword xsMacro PERL_ARGS_ASSERT_GET_INVLIST_VERSION_ID_ADDR\nsyn keyword xsMacro PERL_ARGS_ASSERT_GET_INVLIST_ZERO_ADDR\nsyn keyword xsMacro PERL_ARGS_ASSERT_GET_MSTATS PERL_ARGS_ASSERT_GET_NUM\nsyn keyword xsMacro PERL_ARGS_ASSERT_GET_SV PERL_ARGS_ASSERT_GLOB_2NUMBER\nsyn keyword xsMacro PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB\nsyn keyword xsMacro PERL_ARGS_ASSERT_GLOB_ASSIGN_REF PERL_ARGS_ASSERT_GP_DUP\nsyn keyword xsMacro PERL_ARGS_ASSERT_GROK_BIN PERL_ARGS_ASSERT_GROK_BSLASH_O\nsyn keyword xsMacro PERL_ARGS_ASSERT_GROK_HEX PERL_ARGS_ASSERT_GROK_NUMBER\nsyn keyword xsMacro PERL_ARGS_ASSERT_GROK_NUMERIC_RADIX\nsyn keyword xsMacro PERL_ARGS_ASSERT_GROK_OCT PERL_ARGS_ASSERT_GROUP_END\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_AMUPDATE\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_AUTOLOAD_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_AUTOLOAD_PVN\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_AUTOLOAD_SV PERL_ARGS_ASSERT_GV_CHECK\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_CONST_SV PERL_ARGS_ASSERT_GV_DUMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_EFULLNAME\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_EFULLNAME3\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_EFULLNAME4 PERL_ARGS_ASSERT_GV_ENAME\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHFILE\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHFILE_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETHOD\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETHOD_PVN_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETHOD_PV_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETHOD_SV_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_PVN\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_PVN_AUTOLOAD\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_PV_AUTOLOAD\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_SV\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHMETH_SV_AUTOLOAD\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHPV\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHPVN_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FETCHSV PERL_ARGS_ASSERT_GV_FULLNAME\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FULLNAME3\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_FULLNAME4\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_GET_SUPER_PKG\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_INIT_PV PERL_ARGS_ASSERT_GV_INIT_PVN\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_INIT_SV\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_INIT_SVTYPE\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_MAGICALIZE_ISA\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_MAGICALIZE_OVERLOAD\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_NAME_SET PERL_ARGS_ASSERT_GV_STASHPV\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_STASHPVN PERL_ARGS_ASSERT_GV_STASHSV\nsyn keyword xsMacro PERL_ARGS_ASSERT_GV_TRY_DOWNGRADE\nsyn keyword xsMacro PERL_ARGS_ASSERT_HEK_DUP PERL_ARGS_ASSERT_HE_DUP\nsyn keyword xsMacro PERL_ARGS_ASSERT_HFREEENTRIES\nsyn keyword xsMacro PERL_ARGS_ASSERT_HFREE_NEXT_ENTRY PERL_ARGS_ASSERT_HSPLIT\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_ASSERT PERL_ARGS_ASSERT_HV_AUXINIT\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_BACKREFERENCES_P\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_CLEAR_PLACEHOLDERS\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_COMMON_KEY_LEN\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_DELAYFREE_ENT\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_DELETE PERL_ARGS_ASSERT_HV_DELETE_ENT\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_EITER_P PERL_ARGS_ASSERT_HV_EITER_SET\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_ENAME_ADD\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_ENAME_DELETE\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_EXISTS PERL_ARGS_ASSERT_HV_EXISTS_ENT\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_FETCH PERL_ARGS_ASSERT_HV_FETCH_ENT\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_FILL PERL_ARGS_ASSERT_HV_FREE_ENT\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_FREE_ENT_RET\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERINIT PERL_ARGS_ASSERT_HV_ITERKEY\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERKEYSV\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERNEXT\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERNEXTSV\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERNEXT_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_ITERVAL\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_KILL_BACKREFS\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_KSPLIT PERL_ARGS_ASSERT_HV_MAGIC\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_MAGIC_CHECK\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_NAME_SET\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_NOTALLOWED\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_PLACEHOLDERS_GET\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_PLACEHOLDERS_P\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_PLACEHOLDERS_SET\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_RITER_P PERL_ARGS_ASSERT_HV_RITER_SET\nsyn keyword xsMacro PERL_ARGS_ASSERT_HV_SCALAR PERL_ARGS_ASSERT_INCLINE\nsyn keyword xsMacro PERL_ARGS_ASSERT_INCPUSH\nsyn keyword xsMacro PERL_ARGS_ASSERT_INCPUSH_IF_EXISTS\nsyn keyword xsMacro PERL_ARGS_ASSERT_INCPUSH_USE_SEP\nsyn keyword xsMacro PERL_ARGS_ASSERT_INIT_ARGV_SYMBOLS\nsyn keyword xsMacro PERL_ARGS_ASSERT_INIT_POSTDUMP_SYMBOLS\nsyn keyword xsMacro PERL_ARGS_ASSERT_INIT_TM PERL_ARGS_ASSERT_INPLACE_AASSIGN\nsyn keyword xsMacro PERL_ARGS_ASSERT_INSTR PERL_ARGS_ASSERT_INTUIT_METHOD\nsyn keyword xsMacro PERL_ARGS_ASSERT_INTUIT_MORE\nsyn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_ARRAY\nsyn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_CLONE\nsyn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_EXTEND\nsyn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_ITERINIT\nsyn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_ITERNEXT\nsyn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_LEN PERL_ARGS_ASSERT_INVLIST_MAX\nsyn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_SEARCH\nsyn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_SET_LEN\nsyn keyword xsMacro PERL_ARGS_ASSERT_INVLIST_TRIM PERL_ARGS_ASSERT_IO_CLOSE\nsyn keyword xsMacro PERL_ARGS_ASSERT_ISA_LOOKUP PERL_ARGS_ASSERT_IS_AN_INT\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_ASCII_STRING\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_HANDLE_CONSTRUCTOR\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_ALNUM\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_ALPHA\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_ASCII\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_CHAR\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_CHAR_BUF\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_CHAR_SLOW\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_CNTRL\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_COMMON\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_DIGIT\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_GRAPH\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_IDCONT\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_IDFIRST\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_LOWER\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_MARK\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_PERL_SPACE\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_PERL_WORD\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_POSIX_DIGIT\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_PRINT\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_PUNCT\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_SPACE\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_STRING\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_UPPER\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_XDIGIT\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_XIDCONT\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_XIDFIRST\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_X_BEGIN\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_X_EXTEND\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_X_L\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_X_LV\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_X_LVT\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_X_LV_LVT_V\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_X_NON_HANGUL\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_X_PREPEND\nsyn keyword xsMacro PERL_ARGS_ASSERT_IS_UTF8_X_T PERL_ARGS_ASSERT_IS_UTF8_X_V\nsyn keyword xsMacro PERL_ARGS_ASSERT_JMAYBE PERL_ARGS_ASSERT_JOIN_EXACT\nsyn keyword xsMacro PERL_ARGS_ASSERT_KEYWORD\nsyn keyword xsMacro PERL_ARGS_ASSERT_KEYWORD_PLUGIN_STANDARD\nsyn keyword xsMacro PERL_ARGS_ASSERT_LEX_DISCARD_TO\nsyn keyword xsMacro PERL_ARGS_ASSERT_LEX_READ_TO\nsyn keyword xsMacro PERL_ARGS_ASSERT_LEX_STUFF_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_LEX_STUFF_PVN\nsyn keyword xsMacro PERL_ARGS_ASSERT_LEX_STUFF_SV\nsyn keyword xsMacro PERL_ARGS_ASSERT_LEX_UNSTUFF PERL_ARGS_ASSERT_LOAD_MODULE\nsyn keyword xsMacro PERL_ARGS_ASSERT_LOAD_MODULE_NOCONTEXT\nsyn keyword xsMacro PERL_ARGS_ASSERT_LOCALIZE\nsyn keyword xsMacro PERL_ARGS_ASSERT_LOOKS_LIKE_BOOL\nsyn keyword xsMacro PERL_ARGS_ASSERT_LOOKS_LIKE_NUMBER PERL_ARGS_ASSERT_LOP\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARENV\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARHINT\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARHINTS\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARISA\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARPACK\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEARSIG\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_CLEAR_ALL_ENV\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_EXISTSPACK\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_FREEARYLEN_P\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_FREEOVRLD\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GET\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETARYLEN\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETDEFELEM\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETNKEYS\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETPACK\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETPOS\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETSIG\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETSUBSTR\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETTAINT\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETUVAR\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_GETVEC\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_KILLBACKREFS\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_LEN\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_METHCALL\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_METHCALL1\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_METHPACK\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_NEXTPACK\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_REGDATA_CNT\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_REGDATUM_GET\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_REGDATUM_SET\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SCALARPACK\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SET\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETAMAGIC\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETARYLEN\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETCOLLXFRM\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETDBLINE\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETDEFELEM\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETENV\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETHINT\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETISA\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETMGLOB\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETNKEYS\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETPACK\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETPOS\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETREGEXP\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETSIG\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETSUBSTR\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETTAINT\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETUTF8\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETUVAR\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETVEC\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SETVSTRING\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SET_ALL_ENV\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_SIZEPACK\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAGIC_WIPEPACK\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAKE_MATCHER PERL_ARGS_ASSERT_MAKE_TRIE\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAKE_TRIE_FAILTABLE\nsyn keyword xsMacro PERL_ARGS_ASSERT_MALLOCED_SIZE\nsyn keyword xsMacro PERL_ARGS_ASSERT_MATCHER_MATCHES_SV\nsyn keyword xsMacro PERL_ARGS_ASSERT_MAYBERELOCATE\nsyn keyword xsMacro PERL_ARGS_ASSERT_MEASURE_STRUCT\nsyn keyword xsMacro PERL_ARGS_ASSERT_MEM_COLLXFRM\nsyn keyword xsMacro PERL_ARGS_ASSERT_MEM_LOG_COMMON PERL_ARGS_ASSERT_MESS\nsyn keyword xsMacro PERL_ARGS_ASSERT_MESS_NOCONTEXT PERL_ARGS_ASSERT_MESS_SV\nsyn keyword xsMacro PERL_ARGS_ASSERT_METHOD_COMMON PERL_ARGS_ASSERT_MG_CLEAR\nsyn keyword xsMacro PERL_ARGS_ASSERT_MG_COPY PERL_ARGS_ASSERT_MG_DUP\nsyn keyword xsMacro PERL_ARGS_ASSERT_MG_FREE PERL_ARGS_ASSERT_MG_FREE_TYPE\nsyn keyword xsMacro PERL_ARGS_ASSERT_MG_GET PERL_ARGS_ASSERT_MG_LENGTH\nsyn keyword xsMacro PERL_ARGS_ASSERT_MG_LOCALIZE PERL_ARGS_ASSERT_MG_MAGICAL\nsyn keyword xsMacro PERL_ARGS_ASSERT_MG_SET PERL_ARGS_ASSERT_MG_SIZE\nsyn keyword xsMacro PERL_ARGS_ASSERT_MINI_MKTIME\nsyn keyword xsMacro PERL_ARGS_ASSERT_MORESWITCHES\nsyn keyword xsMacro PERL_ARGS_ASSERT_MRO_CLEAN_ISAREV\nsyn keyword xsMacro PERL_ARGS_ASSERT_MRO_GATHER_AND_RENAME\nsyn keyword xsMacro PERL_ARGS_ASSERT_MRO_GET_FROM_NAME\nsyn keyword xsMacro PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA\nsyn keyword xsMacro PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA_DFS\nsyn keyword xsMacro PERL_ARGS_ASSERT_MRO_GET_PRIVATE_DATA\nsyn keyword xsMacro PERL_ARGS_ASSERT_MRO_ISA_CHANGED_IN\nsyn keyword xsMacro PERL_ARGS_ASSERT_MRO_META_DUP\nsyn keyword xsMacro PERL_ARGS_ASSERT_MRO_META_INIT\nsyn keyword xsMacro PERL_ARGS_ASSERT_MRO_METHOD_CHANGED_IN\nsyn keyword xsMacro PERL_ARGS_ASSERT_MRO_PACKAGE_MOVED\nsyn keyword xsMacro PERL_ARGS_ASSERT_MRO_REGISTER\nsyn keyword xsMacro PERL_ARGS_ASSERT_MRO_SET_MRO\nsyn keyword xsMacro PERL_ARGS_ASSERT_MRO_SET_PRIVATE_DATA\nsyn keyword xsMacro PERL_ARGS_ASSERT_MUL128\nsyn keyword xsMacro PERL_ARGS_ASSERT_MUNGE_QWLIST_TO_PAREN_LIST\nsyn keyword xsMacro PERL_ARGS_ASSERT_MY_ATOF PERL_ARGS_ASSERT_MY_ATOF2\nsyn keyword xsMacro PERL_ARGS_ASSERT_MY_ATTRS PERL_ARGS_ASSERT_MY_BCOPY\nsyn keyword xsMacro PERL_ARGS_ASSERT_MY_BZERO PERL_ARGS_ASSERT_MY_CXT_INDEX\nsyn keyword xsMacro PERL_ARGS_ASSERT_MY_CXT_INIT PERL_ARGS_ASSERT_MY_KID\nsyn keyword xsMacro PERL_ARGS_ASSERT_MY_MEMCMP PERL_ARGS_ASSERT_MY_MEMSET\nsyn keyword xsMacro PERL_ARGS_ASSERT_MY_POPEN PERL_ARGS_ASSERT_MY_POPEN_LIST\nsyn keyword xsMacro PERL_ARGS_ASSERT_MY_SNPRINTF PERL_ARGS_ASSERT_MY_SPRINTF\nsyn keyword xsMacro PERL_ARGS_ASSERT_MY_STRFTIME PERL_ARGS_ASSERT_MY_SWABN\nsyn keyword xsMacro PERL_ARGS_ASSERT_MY_VSNPRINTF PERL_ARGS_ASSERT_NEED_UTF8\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEWAVREF PERL_ARGS_ASSERT_NEWCONDOP\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEWFOROP PERL_ARGS_ASSERT_NEWGIVENOP\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEWGIVWHENOP PERL_ARGS_ASSERT_NEWGP\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEWGVGEN_FLAGS PERL_ARGS_ASSERT_NEWGVOP\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEWHVREF PERL_ARGS_ASSERT_NEWLOGOP\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEWLOOPEX PERL_ARGS_ASSERT_NEWMADSV\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEWPADOP PERL_ARGS_ASSERT_NEWPROG\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEWRANGE PERL_ARGS_ASSERT_NEWRV\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEWRV_NOINC PERL_ARGS_ASSERT_NEWSVOP\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEWSVPVF\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEWSVPVF_NOCONTEXT\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEWSVREF PERL_ARGS_ASSERT_NEWSVRV\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEWWHENOP PERL_ARGS_ASSERT_NEWXS\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEWXS_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEWXS_LEN_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEW_CONSTANT PERL_ARGS_ASSERT_NEW_CTYPE\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEW_LOGOP PERL_ARGS_ASSERT_NEW_VERSION\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEW_WARNINGS_BITFIELD\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEXTARGV PERL_ARGS_ASSERT_NEXTCHAR\nsyn keyword xsMacro PERL_ARGS_ASSERT_NEXT_SYMBOL PERL_ARGS_ASSERT_NINSTR\nsyn keyword xsMacro PERL_ARGS_ASSERT_NOT_A_NUMBER\nsyn keyword xsMacro PERL_ARGS_ASSERT_NO_BAREWORD_ALLOWED\nsyn keyword xsMacro PERL_ARGS_ASSERT_NO_FH_ALLOWED PERL_ARGS_ASSERT_NO_OP\nsyn keyword xsMacro PERL_ARGS_ASSERT_OOPSAV PERL_ARGS_ASSERT_OOPSHV\nsyn keyword xsMacro PERL_ARGS_ASSERT_OPEN_SCRIPT\nsyn keyword xsMacro PERL_ARGS_ASSERT_OPT_SCALARHV PERL_ARGS_ASSERT_OP_CLEAR\nsyn keyword xsMacro PERL_ARGS_ASSERT_OP_CONTEXTUALIZE\nsyn keyword xsMacro PERL_ARGS_ASSERT_OP_DUMP PERL_ARGS_ASSERT_OP_INTEGERIZE\nsyn keyword xsMacro PERL_ARGS_ASSERT_OP_LINKLIST PERL_ARGS_ASSERT_OP_NULL\nsyn keyword xsMacro PERL_ARGS_ASSERT_OP_REFCNT_DEC\nsyn keyword xsMacro PERL_ARGS_ASSERT_OP_STD_INIT PERL_ARGS_ASSERT_OP_XMLDUMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_PACKAGE PERL_ARGS_ASSERT_PACKAGE_VERSION\nsyn keyword xsMacro PERL_ARGS_ASSERT_PACKLIST PERL_ARGS_ASSERT_PACK_CAT\nsyn keyword xsMacro PERL_ARGS_ASSERT_PACK_REC PERL_ARGS_ASSERT_PADLIST_DUP\nsyn keyword xsMacro PERL_ARGS_ASSERT_PAD_ADD_ANON\nsyn keyword xsMacro PERL_ARGS_ASSERT_PAD_ADD_NAME_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_PAD_ADD_NAME_PVN\nsyn keyword xsMacro PERL_ARGS_ASSERT_PAD_ADD_NAME_SV\nsyn keyword xsMacro PERL_ARGS_ASSERT_PAD_ALLOC_NAME\nsyn keyword xsMacro PERL_ARGS_ASSERT_PAD_CHECK_DUP\nsyn keyword xsMacro PERL_ARGS_ASSERT_PAD_FINDLEX\nsyn keyword xsMacro PERL_ARGS_ASSERT_PAD_FINDMY_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_PAD_FINDMY_PVN\nsyn keyword xsMacro PERL_ARGS_ASSERT_PAD_FINDMY_SV\nsyn keyword xsMacro PERL_ARGS_ASSERT_PAD_FIXUP_INNER_ANONS\nsyn keyword xsMacro PERL_ARGS_ASSERT_PAD_PEG PERL_ARGS_ASSERT_PAD_PUSH\nsyn keyword xsMacro PERL_ARGS_ASSERT_PAD_SETSV PERL_ARGS_ASSERT_PARSER_DUP\nsyn keyword xsMacro PERL_ARGS_ASSERT_PARSER_FREE\nsyn keyword xsMacro PERL_ARGS_ASSERT_PARSE_UNICODE_OPTS\nsyn keyword xsMacro PERL_ARGS_ASSERT_PATH_IS_ABSOLUTE\nsyn keyword xsMacro PERL_ARGS_ASSERT_PERLIO_READ\nsyn keyword xsMacro PERL_ARGS_ASSERT_PERLIO_UNREAD\nsyn keyword xsMacro PERL_ARGS_ASSERT_PERLIO_WRITE\nsyn keyword xsMacro PERL_ARGS_ASSERT_PERL_ALLOC_USING\nsyn keyword xsMacro PERL_ARGS_ASSERT_PERL_CLONE\nsyn keyword xsMacro PERL_ARGS_ASSERT_PERL_CLONE_USING\nsyn keyword xsMacro PERL_ARGS_ASSERT_PERL_CONSTRUCT\nsyn keyword xsMacro PERL_ARGS_ASSERT_PERL_DESTRUCT PERL_ARGS_ASSERT_PERL_FREE\nsyn keyword xsMacro PERL_ARGS_ASSERT_PERL_PARSE PERL_ARGS_ASSERT_PERL_RUN\nsyn keyword xsMacro PERL_ARGS_ASSERT_PMRUNTIME PERL_ARGS_ASSERT_PMTRANS\nsyn keyword xsMacro PERL_ARGS_ASSERT_PM_DESCRIPTION\nsyn keyword xsMacro PERL_ARGS_ASSERT_POPULATE_ISA PERL_ARGS_ASSERT_PREGCOMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_PREGEXEC PERL_ARGS_ASSERT_PREGFREE2\nsyn keyword xsMacro PERL_ARGS_ASSERT_PRESCAN_VERSION\nsyn keyword xsMacro PERL_ARGS_ASSERT_PRINTBUF\nsyn keyword xsMacro PERL_ARGS_ASSERT_PRINTF_NOCONTEXT\nsyn keyword xsMacro PERL_ARGS_ASSERT_PROCESS_SPECIAL_BLOCKS\nsyn keyword xsMacro PERL_ARGS_ASSERT_PTR_TABLE_FETCH\nsyn keyword xsMacro PERL_ARGS_ASSERT_PTR_TABLE_FIND\nsyn keyword xsMacro PERL_ARGS_ASSERT_PTR_TABLE_SPLIT\nsyn keyword xsMacro PERL_ARGS_ASSERT_PTR_TABLE_STORE\nsyn keyword xsMacro PERL_ARGS_ASSERT_PUT_BYTE PERL_ARGS_ASSERT_PV_DISPLAY\nsyn keyword xsMacro PERL_ARGS_ASSERT_PV_ESCAPE PERL_ARGS_ASSERT_PV_PRETTY\nsyn keyword xsMacro PERL_ARGS_ASSERT_PV_UNI_DISPLAY PERL_ARGS_ASSERT_QERROR\nsyn keyword xsMacro PERL_ARGS_ASSERT_QSORTSVU\nsyn keyword xsMacro PERL_ARGS_ASSERT_REENTRANT_RETRY\nsyn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PVN\nsyn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_SV\nsyn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PVN\nsyn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_SV\nsyn keyword xsMacro PERL_ARGS_ASSERT_REFCOUNTED_HE_VALUE\nsyn keyword xsMacro PERL_ARGS_ASSERT_REFTO PERL_ARGS_ASSERT_REG\nsyn keyword xsMacro PERL_ARGS_ASSERT_REGANODE PERL_ARGS_ASSERT_REGATOM\nsyn keyword xsMacro PERL_ARGS_ASSERT_REGBRANCH PERL_ARGS_ASSERT_REGCLASS\nsyn keyword xsMacro PERL_ARGS_ASSERT_REGCLASS_SWASH PERL_ARGS_ASSERT_REGCPPOP\nsyn keyword xsMacro PERL_ARGS_ASSERT_REGCURLY PERL_ARGS_ASSERT_REGDUMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_REGDUPE_INTERNAL\nsyn keyword xsMacro PERL_ARGS_ASSERT_REGEXEC_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_REGFREE_INTERNAL\nsyn keyword xsMacro PERL_ARGS_ASSERT_REGHOP3 PERL_ARGS_ASSERT_REGHOP4\nsyn keyword xsMacro PERL_ARGS_ASSERT_REGHOPMAYBE3 PERL_ARGS_ASSERT_REGINCLASS\nsyn keyword xsMacro PERL_ARGS_ASSERT_REGINSERT PERL_ARGS_ASSERT_REGMATCH\nsyn keyword xsMacro PERL_ARGS_ASSERT_REGPIECE PERL_ARGS_ASSERT_REGPPOSIXCC\nsyn keyword xsMacro PERL_ARGS_ASSERT_REGPROP PERL_ARGS_ASSERT_REGREPEAT\nsyn keyword xsMacro PERL_ARGS_ASSERT_REGTAIL PERL_ARGS_ASSERT_REGTAIL_STUDY\nsyn keyword xsMacro PERL_ARGS_ASSERT_REGTRY PERL_ARGS_ASSERT_REGUNI\nsyn keyword xsMacro PERL_ARGS_ASSERT_REGWHITE\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_CHECK_NAMED_BUFF_MATCHED\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMEDSEQ\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_ALL\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_EXISTS\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_FETCH\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_FIRSTKEY\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_ITER\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_NEXTKEY\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_NAMED_BUFF_SCALAR\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_NODE\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_FETCH\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_LENGTH\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_STORE\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_QR_PACKAGE\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_RECODE\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_SCAN_NAME\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_SKIPCOMMENT\nsyn keyword xsMacro PERL_ARGS_ASSERT_REG_TEMP_COPY PERL_ARGS_ASSERT_REPEATCPY\nsyn keyword xsMacro PERL_ARGS_ASSERT_REPORT_REDEFINED_CV\nsyn keyword xsMacro PERL_ARGS_ASSERT_REQUIRE_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_REQUIRE_TIE_MOD\nsyn keyword xsMacro PERL_ARGS_ASSERT_RE_COMPILE PERL_ARGS_ASSERT_RE_CROAK2\nsyn keyword xsMacro PERL_ARGS_ASSERT_RE_DUP_GUTS\nsyn keyword xsMacro PERL_ARGS_ASSERT_RE_INTUIT_START\nsyn keyword xsMacro PERL_ARGS_ASSERT_RE_INTUIT_STRING\nsyn keyword xsMacro PERL_ARGS_ASSERT_RNINSTR PERL_ARGS_ASSERT_RSIGNAL_SAVE\nsyn keyword xsMacro PERL_ARGS_ASSERT_RUN_USER_FILTER\nsyn keyword xsMacro PERL_ARGS_ASSERT_RV2CV_OP_CV PERL_ARGS_ASSERT_RVPV_DUP\nsyn keyword xsMacro PERL_ARGS_ASSERT_RXRES_FREE\nsyn keyword xsMacro PERL_ARGS_ASSERT_RXRES_RESTORE\nsyn keyword xsMacro PERL_ARGS_ASSERT_RXRES_SAVE PERL_ARGS_ASSERT_SAME_DIRENT\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVESHAREDSVPV PERL_ARGS_ASSERT_SAVESVPV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_ADELETE\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_AELEM_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_APTR PERL_ARGS_ASSERT_SAVE_ARY\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_BOOL PERL_ARGS_ASSERT_SAVE_CLEARSV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_DELETE\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_DESTRUCTOR\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_GENERIC_PVREF\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_GENERIC_SVREF\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_GP PERL_ARGS_ASSERT_SAVE_HASH\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_HDELETE\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_HEK_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_HELEM_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_HPTR PERL_ARGS_ASSERT_SAVE_I16\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_I32 PERL_ARGS_ASSERT_SAVE_I8\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_INT PERL_ARGS_ASSERT_SAVE_ITEM\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_IV PERL_ARGS_ASSERT_SAVE_LINES\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_LIST PERL_ARGS_ASSERT_SAVE_LONG\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_MAGIC\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_MORTALIZESV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_NOGV PERL_ARGS_ASSERT_SAVE_PPTR\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_SCALAR\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_SCALAR_AT\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_SET_SVFLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_SHARED_PVREF\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_SPTR PERL_ARGS_ASSERT_SAVE_SVREF\nsyn keyword xsMacro PERL_ARGS_ASSERT_SAVE_VPTR PERL_ARGS_ASSERT_SCALARBOOLEAN\nsyn keyword xsMacro PERL_ARGS_ASSERT_SCALARVOID PERL_ARGS_ASSERT_SCAN_BIN\nsyn keyword xsMacro PERL_ARGS_ASSERT_SCAN_COMMIT PERL_ARGS_ASSERT_SCAN_CONST\nsyn keyword xsMacro PERL_ARGS_ASSERT_SCAN_FORMLINE\nsyn keyword xsMacro PERL_ARGS_ASSERT_SCAN_HEREDOC PERL_ARGS_ASSERT_SCAN_HEX\nsyn keyword xsMacro PERL_ARGS_ASSERT_SCAN_IDENT\nsyn keyword xsMacro PERL_ARGS_ASSERT_SCAN_INPUTSYMBOL\nsyn keyword xsMacro PERL_ARGS_ASSERT_SCAN_NUM PERL_ARGS_ASSERT_SCAN_OCT\nsyn keyword xsMacro PERL_ARGS_ASSERT_SCAN_PAT PERL_ARGS_ASSERT_SCAN_STR\nsyn keyword xsMacro PERL_ARGS_ASSERT_SCAN_SUBST PERL_ARGS_ASSERT_SCAN_TRANS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SCAN_VERSION\nsyn keyword xsMacro PERL_ARGS_ASSERT_SCAN_VSTRING PERL_ARGS_ASSERT_SCAN_WORD\nsyn keyword xsMacro PERL_ARGS_ASSERT_SCREAMINSTR\nsyn keyword xsMacro PERL_ARGS_ASSERT_SEARCH_CONST\nsyn keyword xsMacro PERL_ARGS_ASSERT_SET_CONTEXT\nsyn keyword xsMacro PERL_ARGS_ASSERT_SET_REGCLASS_BIT\nsyn keyword xsMacro PERL_ARGS_ASSERT_SET_REGCLASS_BIT_FOLD\nsyn keyword xsMacro PERL_ARGS_ASSERT_SHARE_HEK\nsyn keyword xsMacro PERL_ARGS_ASSERT_SHARE_HEK_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SIMPLIFY_SORT PERL_ARGS_ASSERT_SI_DUP\nsyn keyword xsMacro PERL_ARGS_ASSERT_SKIPSPACE PERL_ARGS_ASSERT_SKIPSPACE0\nsyn keyword xsMacro PERL_ARGS_ASSERT_SKIPSPACE1 PERL_ARGS_ASSERT_SKIPSPACE2\nsyn keyword xsMacro PERL_ARGS_ASSERT_SLAB_FREE PERL_ARGS_ASSERT_SLAB_TO_RW\nsyn keyword xsMacro PERL_ARGS_ASSERT_SOFTREF2XV PERL_ARGS_ASSERT_SORTCV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SORTCV_STACKED\nsyn keyword xsMacro PERL_ARGS_ASSERT_SORTCV_XSUB PERL_ARGS_ASSERT_SORTSV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SORTSV_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SPACE_JOIN_NAMES_MORTAL\nsyn keyword xsMacro PERL_ARGS_ASSERT_SS_DUP PERL_ARGS_ASSERT_STACK_GROW\nsyn keyword xsMacro PERL_ARGS_ASSERT_START_GLOB\nsyn keyword xsMacro PERL_ARGS_ASSERT_STASHPV_HVNAME_MATCH\nsyn keyword xsMacro PERL_ARGS_ASSERT_STDIZE_LOCALE\nsyn keyword xsMacro PERL_ARGS_ASSERT_STRIP_RETURN\nsyn keyword xsMacro PERL_ARGS_ASSERT_STR_TO_VERSION\nsyn keyword xsMacro PERL_ARGS_ASSERT_STUDY_CHUNK\nsyn keyword xsMacro PERL_ARGS_ASSERT_SUB_CRUSH_DEPTH\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_2BOOL_FLAGS PERL_ARGS_ASSERT_SV_2CV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_2IO PERL_ARGS_ASSERT_SV_2IUV_COMMON\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_2NUM PERL_ARGS_ASSERT_SV_2PVBYTE\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_2PVBYTE_NOLEN\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_2PVUTF8\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_2PVUTF8_NOLEN\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_2PV_NOLEN\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_ADD_ARENA\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_ADD_BACKREF\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_BACKOFF PERL_ARGS_ASSERT_SV_BLESS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPV PERL_ARGS_ASSERT_SV_CATPVF\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVF_MG\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVF_MG_NOCONTEXT\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVF_NOCONTEXT\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVN\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVN_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPVN_MG\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPV_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_CATPV_MG PERL_ARGS_ASSERT_SV_CATSV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_CATSV_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_CATSV_MG PERL_ARGS_ASSERT_SV_CATXMLPV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_CATXMLPVN\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_CATXMLSV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_CAT_DECODE PERL_ARGS_ASSERT_SV_CHOP\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_CLEAR\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_COLLXFRM_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_COMPILE_2OP\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_COMPILE_2OP_IS_BROKEN\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_COPYPV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_DEL_BACKREF\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_DERIVED_FROM\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_DERIVED_FROM_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_DERIVED_FROM_PVN\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_DERIVED_FROM_SV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_DOES PERL_ARGS_ASSERT_SV_DOES_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_DOES_PVN PERL_ARGS_ASSERT_SV_DOES_SV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_DUMP PERL_ARGS_ASSERT_SV_DUP\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_DUP_COMMON\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_DUP_INC\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_DUP_INC_MULTIPLE\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_EXP_GROW\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_FORCE_NORMAL\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_FORCE_NORMAL_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_FREE2 PERL_ARGS_ASSERT_SV_GETS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_GROW PERL_ARGS_ASSERT_SV_INSERT\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_INSERT_FLAGS PERL_ARGS_ASSERT_SV_ISA\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_IV PERL_ARGS_ASSERT_SV_I_NCMP\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_KILL_BACKREFS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_MAGIC PERL_ARGS_ASSERT_SV_MAGICEXT\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_NCMP PERL_ARGS_ASSERT_SV_NV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_B2U\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_B2U_MIDWAY\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_U2B\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_U2B_CACHED\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_U2B_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_U2B_FORWARDS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_POS_U2B_MIDWAY PERL_ARGS_ASSERT_SV_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_PVBYTE PERL_ARGS_ASSERT_SV_PVBYTEN\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_PVBYTEN_FORCE PERL_ARGS_ASSERT_SV_PVN\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_PVN_FORCE\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_PVN_FORCE_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_PVN_NOMG PERL_ARGS_ASSERT_SV_PVUTF8\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_PVUTF8N\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_PVUTF8N_FORCE\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_RECODE_TO_UTF8\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_REF PERL_ARGS_ASSERT_SV_REFTYPE\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_RELEASE_COW\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_REPLACE PERL_ARGS_ASSERT_SV_RESET\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_RVWEAKEN PERL_ARGS_ASSERT_SV_SETHEK\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETIV PERL_ARGS_ASSERT_SV_SETIV_MG\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETNV PERL_ARGS_ASSERT_SV_SETNV_MG\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPV PERL_ARGS_ASSERT_SV_SETPVF\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVF_MG\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVF_MG_NOCONTEXT\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVF_NOCONTEXT\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVIV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVIV_MG PERL_ARGS_ASSERT_SV_SETPVN\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPVN_MG\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETPV_MG\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETREF_IV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETREF_NV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETREF_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETREF_PVN\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETREF_UV PERL_ARGS_ASSERT_SV_SETSV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETSV_COW\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETSV_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETSV_MG PERL_ARGS_ASSERT_SV_SETUV\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_SETUV_MG PERL_ARGS_ASSERT_SV_TAINT\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_TAINTED PERL_ARGS_ASSERT_SV_UNGLOB\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_UNI_DISPLAY\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_UNMAGIC\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_UNMAGICEXT PERL_ARGS_ASSERT_SV_UNREF\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_UNREF_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_UNTAINT PERL_ARGS_ASSERT_SV_UPGRADE\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_USEPVN\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_USEPVN_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_USEPVN_MG\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_UTF8_DECODE\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_UTF8_ENCODE\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_UTF8_UPGRADE\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_UV PERL_ARGS_ASSERT_SV_VCATPVF\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_VCATPVFN\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_VCATPVF_MG\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_VSETPVF PERL_ARGS_ASSERT_SV_VSETPVFN\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_VSETPVF_MG\nsyn keyword xsMacro PERL_ARGS_ASSERT_SV_XMLPEEK PERL_ARGS_ASSERT_SWALLOW_BOM\nsyn keyword xsMacro PERL_ARGS_ASSERT_SWASH_FETCH PERL_ARGS_ASSERT_SWASH_INIT\nsyn keyword xsMacro PERL_ARGS_ASSERT_SWATCH_GET PERL_ARGS_ASSERT_SYS_INIT\nsyn keyword xsMacro PERL_ARGS_ASSERT_SYS_INIT3\nsyn keyword xsMacro PERL_ARGS_ASSERT_SYS_INTERN_DUP\nsyn keyword xsMacro PERL_ARGS_ASSERT_TAINT_PROPER\nsyn keyword xsMacro PERL_ARGS_ASSERT_TIED_METHOD\nsyn keyword xsMacro PERL_ARGS_ASSERT_TOKENIZE_USE PERL_ARGS_ASSERT_TOKEN_FREE\nsyn keyword xsMacro PERL_ARGS_ASSERT_TOKEN_GETMAD PERL_ARGS_ASSERT_TOKEQ\nsyn keyword xsMacro PERL_ARGS_ASSERT_TOKEREPORT\nsyn keyword xsMacro PERL_ARGS_ASSERT_TOO_FEW_ARGUMENTS_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_TOO_FEW_ARGUMENTS_SV\nsyn keyword xsMacro PERL_ARGS_ASSERT_TOO_MANY_ARGUMENTS_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_TOO_MANY_ARGUMENTS_SV\nsyn keyword xsMacro PERL_ARGS_ASSERT_TO_BYTE_SUBSTR\nsyn keyword xsMacro PERL_ARGS_ASSERT_TO_UNI_LOWER\nsyn keyword xsMacro PERL_ARGS_ASSERT_TO_UNI_TITLE\nsyn keyword xsMacro PERL_ARGS_ASSERT_TO_UNI_UPPER\nsyn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_CASE\nsyn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_FOLD\nsyn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_LOWER\nsyn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_SUBSTR\nsyn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_TITLE\nsyn keyword xsMacro PERL_ARGS_ASSERT_TO_UTF8_UPPER\nsyn keyword xsMacro PERL_ARGS_ASSERT_TRANSLATE_SUBSTR_OFFSETS\nsyn keyword xsMacro PERL_ARGS_ASSERT_UIV_2BUF PERL_ARGS_ASSERT_UNLNK\nsyn keyword xsMacro PERL_ARGS_ASSERT_UNPACKSTRING PERL_ARGS_ASSERT_UNPACK_REC\nsyn keyword xsMacro PERL_ARGS_ASSERT_UNPACK_STR\nsyn keyword xsMacro PERL_ARGS_ASSERT_UNREFERENCED_TO_TMP_STACK\nsyn keyword xsMacro PERL_ARGS_ASSERT_UPG_VERSION\nsyn keyword xsMacro PERL_ARGS_ASSERT_UTF16_TEXTFILTER\nsyn keyword xsMacro PERL_ARGS_ASSERT_UTF16_TO_UTF8\nsyn keyword xsMacro PERL_ARGS_ASSERT_UTF16_TO_UTF8_REVERSED\nsyn keyword xsMacro PERL_ARGS_ASSERT_UTF8N_TO_UVCHR\nsyn keyword xsMacro PERL_ARGS_ASSERT_UTF8N_TO_UVUNI\nsyn keyword xsMacro PERL_ARGS_ASSERT_UTF8_DISTANCE PERL_ARGS_ASSERT_UTF8_HOP\nsyn keyword xsMacro PERL_ARGS_ASSERT_UTF8_LENGTH\nsyn keyword xsMacro PERL_ARGS_ASSERT_UTF8_MG_LEN_CACHE_UPDATE\nsyn keyword xsMacro PERL_ARGS_ASSERT_UTF8_MG_POS_CACHE_UPDATE\nsyn keyword xsMacro PERL_ARGS_ASSERT_UTF8_TO_BYTES\nsyn keyword xsMacro PERL_ARGS_ASSERT_UTF8_TO_UVCHR\nsyn keyword xsMacro PERL_ARGS_ASSERT_UTF8_TO_UVCHR_BUF\nsyn keyword xsMacro PERL_ARGS_ASSERT_UTF8_TO_UVUNI\nsyn keyword xsMacro PERL_ARGS_ASSERT_UTF8_TO_UVUNI_BUF\nsyn keyword xsMacro PERL_ARGS_ASSERT_UTILIZE PERL_ARGS_ASSERT_UVCHR_TO_UTF8\nsyn keyword xsMacro PERL_ARGS_ASSERT_UVCHR_TO_UTF8_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_UVUNI_TO_UTF8\nsyn keyword xsMacro PERL_ARGS_ASSERT_UVUNI_TO_UTF8_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT_VALIDATE_SUID\nsyn keyword xsMacro PERL_ARGS_ASSERT_VALID_UTF8_TO_UVCHR\nsyn keyword xsMacro PERL_ARGS_ASSERT_VALID_UTF8_TO_UVUNI\nsyn keyword xsMacro PERL_ARGS_ASSERT_VCMP PERL_ARGS_ASSERT_VDEB\nsyn keyword xsMacro PERL_ARGS_ASSERT_VFORM PERL_ARGS_ASSERT_VISIT\nsyn keyword xsMacro PERL_ARGS_ASSERT_VIVIFY_DEFELEM\nsyn keyword xsMacro PERL_ARGS_ASSERT_VIVIFY_REF PERL_ARGS_ASSERT_VLOAD_MODULE\nsyn keyword xsMacro PERL_ARGS_ASSERT_VMESS PERL_ARGS_ASSERT_VNEWSVPVF\nsyn keyword xsMacro PERL_ARGS_ASSERT_VNORMAL PERL_ARGS_ASSERT_VNUMIFY\nsyn keyword xsMacro PERL_ARGS_ASSERT_VSTRINGIFY PERL_ARGS_ASSERT_VVERIFY\nsyn keyword xsMacro PERL_ARGS_ASSERT_VWARN PERL_ARGS_ASSERT_VWARNER\nsyn keyword xsMacro PERL_ARGS_ASSERT_WAIT4PID PERL_ARGS_ASSERT_WARN\nsyn keyword xsMacro PERL_ARGS_ASSERT_WARNER PERL_ARGS_ASSERT_WARNER_NOCONTEXT\nsyn keyword xsMacro PERL_ARGS_ASSERT_WARN_NOCONTEXT PERL_ARGS_ASSERT_WARN_SV\nsyn keyword xsMacro PERL_ARGS_ASSERT_WATCH PERL_ARGS_ASSERT_WHICHSIG_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_WHICHSIG_PVN\nsyn keyword xsMacro PERL_ARGS_ASSERT_WHICHSIG_SV\nsyn keyword xsMacro PERL_ARGS_ASSERT_WITH_QUEUED_ERRORS\nsyn keyword xsMacro PERL_ARGS_ASSERT_WRAP_OP_CHECKER\nsyn keyword xsMacro PERL_ARGS_ASSERT_WRITE_TO_STDERR\nsyn keyword xsMacro PERL_ARGS_ASSERT_XMLDUMP_ATTR\nsyn keyword xsMacro PERL_ARGS_ASSERT_XMLDUMP_FORM\nsyn keyword xsMacro PERL_ARGS_ASSERT_XMLDUMP_INDENT\nsyn keyword xsMacro PERL_ARGS_ASSERT_XMLDUMP_PACKSUBS\nsyn keyword xsMacro PERL_ARGS_ASSERT_XMLDUMP_PACKSUBS_PERL\nsyn keyword xsMacro PERL_ARGS_ASSERT_XMLDUMP_SUB\nsyn keyword xsMacro PERL_ARGS_ASSERT_XMLDUMP_SUB_PERL\nsyn keyword xsMacro PERL_ARGS_ASSERT_XMLDUMP_VINDENT\nsyn keyword xsMacro PERL_ARGS_ASSERT_XS_APIVERSION_BOOTCHECK\nsyn keyword xsMacro PERL_ARGS_ASSERT_XS_VERSION_BOOTCHECK\nsyn keyword xsMacro PERL_ARGS_ASSERT_YYERROR PERL_ARGS_ASSERT_YYERROR_PV\nsyn keyword xsMacro PERL_ARGS_ASSERT_YYERROR_PVN PERL_ARGS_ASSERT_YYWARN\nsyn keyword xsMacro PERL_ARGS_ASSERT__APPEND_RANGE_TO_INVLIST\nsyn keyword xsMacro PERL_ARGS_ASSERT__CORE_SWASH_INIT\nsyn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_ARRAY_INIT\nsyn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_CONTENTS\nsyn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_INTERSECTION_MAYBE_COMPLEMENT_2ND\nsyn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_INVERT\nsyn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_INVERT_PROP\nsyn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_POPULATE_SWATCH\nsyn keyword xsMacro PERL_ARGS_ASSERT__INVLIST_UNION_MAYBE_COMPLEMENT_2ND\nsyn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8_QUOTEMETA\nsyn keyword xsMacro PERL_ARGS_ASSERT__IS_UTF8__PERL_IDSTART\nsyn keyword xsMacro PERL_ARGS_ASSERT__NEW_INVLIST_C_ARRAY\nsyn keyword xsMacro PERL_ARGS_ASSERT__SWASH_INVERSION_HASH\nsyn keyword xsMacro PERL_ARGS_ASSERT__SWASH_TO_INVLIST\nsyn keyword xsMacro PERL_ARGS_ASSERT__TO_FOLD_LATIN1\nsyn keyword xsMacro PERL_ARGS_ASSERT__TO_UNI_FOLD_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT__TO_UPPER_TITLE_LATIN1\nsyn keyword xsMacro PERL_ARGS_ASSERT__TO_UTF8_FOLD_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT__TO_UTF8_LOWER_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT__TO_UTF8_TITLE_FLAGS\nsyn keyword xsMacro PERL_ARGS_ASSERT__TO_UTF8_UPPER_FLAGS PERL_ASYNC_CHECK\nsyn keyword xsMacro PERL_BITFIELD16 PERL_BITFIELD32 PERL_BITFIELD8\nsyn keyword xsMacro PERL_CALLCONV PERL_CHECK_INITED PERL_CKDEF PERL_DEB\nsyn keyword xsMacro PERL_DEBUG PERL_DEBUG_PAD PERL_DEBUG_PAD_ZERO\nsyn keyword xsMacro PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION\nsyn keyword xsMacro PERL_DONT_CREATE_GVSV\nsyn keyword xsMacro PERL_ENABLE_EXPERIMENTAL_REGEX_OPTIMISATIONS\nsyn keyword xsMacro PERL_ENABLE_EXTENDED_TRIE_OPTIMISATION\nsyn keyword xsMacro PERL_ENABLE_POSITIVE_ASSERTION_STUDY\nsyn keyword xsMacro PERL_ENABLE_TRIE_OPTIMISATION PERL_EXIT_DESTRUCT_END\nsyn keyword xsMacro PERL_EXIT_EXPECTED PERL_EXPORT_C PERL_FILE_IS_ABSOLUTE\nsyn keyword xsMacro PERL_FILTER_EXISTS PERL_FLUSHALL_FOR_CHILD PERL_FPU_INIT\nsyn keyword xsMacro PERL_FPU_POST_EXEC PERL_FPU_PRE_EXEC PERL_FS_VERSION\nsyn keyword xsMacro PERL_FS_VER_FMT PERL_GCC_BRACE_GROUPS_FORBIDDEN\nsyn keyword xsMacro PERL_GET_CONTEXT PERL_GET_INTERP PERL_GET_THX\nsyn keyword xsMacro PERL_GET_VARS PERL_GIT_UNPUSHED_COMMITS\nsyn keyword xsMacro PERL_GLOBAL_STRUCT PERL_GPROF_MONCONTROL PERL_HASH\nsyn keyword xsMacro PERL_HASH_INTERNAL PERL_HASH_INTERNAL_ PERL_HASH_SEED\nsyn keyword xsMacro PERL_HV_ARRAY_ALLOC_BYTES PERL_IMPLICIT_CONTEXT\nsyn keyword xsMacro PERL_INTERPRETER_SIZE_UPTO_MEMBER PERL_INT_MAX\nsyn keyword xsMacro PERL_INT_MIN PERL_LOADMOD_DENY PERL_LOADMOD_IMPORT_OPS\nsyn keyword xsMacro PERL_LOADMOD_NOIMPORT PERL_LONG_MAX PERL_LONG_MIN\nsyn keyword xsMacro PERL_MALLOC_WRAP PERL_MG_UFUNC PERL_MY_SNPRINTF_GUARDED\nsyn keyword xsMacro PERL_MY_VSNPRINTF_GUARDED PERL_NEED_MY_BETOH16\nsyn keyword xsMacro PERL_NEED_MY_BETOH32 PERL_NEED_MY_BETOHI\nsyn keyword xsMacro PERL_NEED_MY_BETOHL PERL_NEED_MY_BETOHS\nsyn keyword xsMacro PERL_NEED_MY_HTOBE16 PERL_NEED_MY_HTOBE32\nsyn keyword xsMacro PERL_NEED_MY_HTOBEI PERL_NEED_MY_HTOBEL\nsyn keyword xsMacro PERL_NEED_MY_HTOBES PERL_NEED_MY_HTOLE16\nsyn keyword xsMacro PERL_NEED_MY_HTOLE32 PERL_NEED_MY_HTOLEI\nsyn keyword xsMacro PERL_NEED_MY_HTOLEL PERL_NEED_MY_HTOLES\nsyn keyword xsMacro PERL_NEED_MY_LETOH16 PERL_NEED_MY_LETOH32\nsyn keyword xsMacro PERL_NEED_MY_LETOHI PERL_NEED_MY_LETOHL\nsyn keyword xsMacro PERL_NEED_MY_LETOHS PERL_NO_DEV_RANDOM PERL_OBJECT_THIS\nsyn keyword xsMacro PERL_OBJECT_THIS_ PERL_PADSEQ_INTRO PERL_PATCHNUM\nsyn keyword xsMacro PERL_PPADDR_INITED PERL_PPDEF PERL_PRESERVE_IVUV\nsyn keyword xsMacro PERL_PRIeldbl PERL_PRIfldbl PERL_PRIgldbl\nsyn keyword xsMacro PERL_PV_ESCAPE_ALL PERL_PV_ESCAPE_FIRSTCHAR\nsyn keyword xsMacro PERL_PV_ESCAPE_NOBACKSLASH PERL_PV_ESCAPE_NOCLEAR\nsyn keyword xsMacro PERL_PV_ESCAPE_NONASCII PERL_PV_ESCAPE_QUOTE\nsyn keyword xsMacro PERL_PV_ESCAPE_RE PERL_PV_ESCAPE_UNI\nsyn keyword xsMacro PERL_PV_ESCAPE_UNI_DETECT PERL_PV_PRETTY_DUMP\nsyn keyword xsMacro PERL_PV_PRETTY_ELLIPSES PERL_PV_PRETTY_LTGT\nsyn keyword xsMacro PERL_PV_PRETTY_NOCLEAR PERL_PV_PRETTY_QUOTE\nsyn keyword xsMacro PERL_PV_PRETTY_REGPROP PERL_QUAD_MAX PERL_QUAD_MIN\nsyn keyword xsMacro PERL_REENTR_API PERL_REGMATCH_SLAB_SLOTS PERL_REVISION\nsyn keyword xsMacro PERL_SCAN_ALLOW_UNDERSCORES PERL_SCAN_DISALLOW_PREFIX\nsyn keyword xsMacro PERL_SCAN_GREATER_THAN_UV_MAX PERL_SCAN_SILENT_ILLDIGIT\nsyn keyword xsMacro PERL_SCAN_SILENT_NON_PORTABLE PERL_SCNfldbl\nsyn keyword xsMacro PERL_SCRIPT_MODE PERL_SET_CONTEXT PERL_SET_INTERP\nsyn keyword xsMacro PERL_SET_PHASE PERL_SET_THX PERL_SHORT_MAX PERL_SHORT_MIN\nsyn keyword xsMacro PERL_SIGNALS_UNSAFE_FLAG PERL_STACK_OVERFLOW_CHECK\nsyn keyword xsMacro PERL_STATIC_INLINE PERL_STRLEN_EXPAND_SHIFT\nsyn keyword xsMacro PERL_STRLEN_ROUNDUP PERL_STRLEN_ROUNDUP_QUANTUM\nsyn keyword xsMacro PERL_SUBVERSION PERL_SUB_DEPTH_WARN PERL_SYS_INIT\nsyn keyword xsMacro PERL_SYS_INIT3 PERL_SYS_INIT3_BODY PERL_SYS_INIT_BODY\nsyn keyword xsMacro PERL_SYS_TERM PERL_SYS_TERM_BODY PERL_TARGETARCH\nsyn keyword xsMacro PERL_UCHAR_MAX PERL_UCHAR_MIN PERL_UINT_MAX PERL_UINT_MIN\nsyn keyword xsMacro PERL_ULONG_MAX PERL_ULONG_MIN PERL_UNICODE_ALL_FLAGS\nsyn keyword xsMacro PERL_UNICODE_ARGV PERL_UNICODE_ARGV_FLAG\nsyn keyword xsMacro PERL_UNICODE_DEFAULT_FLAGS PERL_UNICODE_IN\nsyn keyword xsMacro PERL_UNICODE_INOUT PERL_UNICODE_INOUT_FLAG\nsyn keyword xsMacro PERL_UNICODE_IN_FLAG PERL_UNICODE_LOCALE\nsyn keyword xsMacro PERL_UNICODE_LOCALE_FLAG PERL_UNICODE_MAX\nsyn keyword xsMacro PERL_UNICODE_OUT PERL_UNICODE_OUT_FLAG PERL_UNICODE_STD\nsyn keyword xsMacro PERL_UNICODE_STDERR PERL_UNICODE_STDERR_FLAG\nsyn keyword xsMacro PERL_UNICODE_STDIN PERL_UNICODE_STDIN_FLAG\nsyn keyword xsMacro PERL_UNICODE_STDOUT PERL_UNICODE_STDOUT_FLAG\nsyn keyword xsMacro PERL_UNICODE_STD_FLAG PERL_UNICODE_UTF8CACHEASSERT\nsyn keyword xsMacro PERL_UNICODE_UTF8CACHEASSERT_FLAG\nsyn keyword xsMacro PERL_UNICODE_WIDESYSCALLS PERL_UNICODE_WIDESYSCALLS_FLAG\nsyn keyword xsMacro PERL_UNUSED_ARG PERL_UNUSED_CONTEXT PERL_UNUSED_DECL\nsyn keyword xsMacro PERL_UNUSED_VAR PERL_UQUAD_MAX PERL_UQUAD_MIN\nsyn keyword xsMacro PERL_USES_PL_PIDSTATUS PERL_USE_GCC_BRACE_GROUPS\nsyn keyword xsMacro PERL_USHORT_MAX PERL_USHORT_MIN PERL_VERSION\nsyn keyword xsMacro PERL_VERSION_STRING PERL_WAIT_FOR_CHILDREN\nsyn keyword xsMacro PERL_WARNHOOK_FATAL PERL_WRITE_MSG_TO_CONSOLE\nsyn keyword xsMacro PERL_XS_EXPORT_C PHASE_CHANGE_PROBE PHOSTNAME\nsyn keyword xsMacro PIPESOCK_MODE PIPE_OPEN_MODE PLUGEXPR PLUGSTMT PLUS\nsyn keyword xsMacro PL_ASCII PL_AboveLatin1 PL_Argv PL_Cmd PL_DBcv PL_DBgv\nsyn keyword xsMacro PL_DBline PL_DBsignal PL_DBsingle PL_DBsub PL_DBtrace\nsyn keyword xsMacro PL_Dir PL_Env PL_Gappctx PL_Gcheck PL_Gcheck_mutex\nsyn keyword xsMacro PL_Gcsighandlerp PL_Gcurinterp PL_Gdo_undump\nsyn keyword xsMacro PL_Gdollarzero_mutex PL_Gfold_locale PL_Ghints_mutex\nsyn keyword xsMacro PL_Gkeyword_plugin PL_Gmalloc_mutex PL_Gmmap_page_size\nsyn keyword xsMacro PL_Gmy_ctx_mutex PL_Gmy_cxt_index PL_Gop_mutex PL_Gop_seq\nsyn keyword xsMacro PL_Gop_sequence PL_Gperlio_debug_fd PL_Gperlio_fd_refcnt\nsyn keyword xsMacro PL_Gperlio_fd_refcnt_size PL_Gperlio_mutex PL_Gppaddr\nsyn keyword xsMacro PL_Gsh_path PL_Gsig_defaulting PL_Gsig_handlers_initted\nsyn keyword xsMacro PL_Gsig_ignoring PL_Gsig_trapped PL_Gsigfpe_saved\nsyn keyword xsMacro PL_Gsv_placeholder PL_Gthr_key PL_Gtimesbase\nsyn keyword xsMacro PL_Guse_safe_putenv PL_Gveto_cleanup PL_Gwatch_pvx\nsyn keyword xsMacro PL_L1Cased PL_L1PosixAlnum PL_L1PosixAlpha\nsyn keyword xsMacro PL_L1PosixGraph PL_L1PosixLower PL_L1PosixPrint\nsyn keyword xsMacro PL_L1PosixPunct PL_L1PosixUpper PL_L1PosixWord PL_LIO\nsyn keyword xsMacro PL_Latin1 PL_Mem PL_MemParse PL_MemShared\nsyn keyword xsMacro PL_OP_SLAB_ALLOC PL_OpPtr PL_OpSlab PL_OpSpace\nsyn keyword xsMacro PL_PerlSpace PL_PosixAlnum PL_PosixAlpha PL_PosixBlank\nsyn keyword xsMacro PL_PosixCntrl PL_PosixDigit PL_PosixGraph PL_PosixLower\nsyn keyword xsMacro PL_PosixPrint PL_PosixPunct PL_PosixSpace PL_PosixUpper\nsyn keyword xsMacro PL_PosixWord PL_PosixXDigit PL_Proc PL_Sock PL_StdIO\nsyn keyword xsMacro PL_Sv PL_VertSpace PL_XPerlSpace PL_XPosixBlank\nsyn keyword xsMacro PL_XPosixCntrl PL_XPosixSpace PL_XPosixXDigit PL_Xpv\nsyn keyword xsMacro PL_amagic_generation PL_an PL_apiversion PL_appctx\nsyn keyword xsMacro PL_argvgv PL_argvout_stack PL_argvoutgv PL_basetime\nsyn keyword xsMacro PL_beginav PL_beginav_save PL_blockhooks PL_body_arenas\nsyn keyword xsMacro PL_body_roots PL_bodytarget PL_bostr PL_breakable_sub_gen\nsyn keyword xsMacro PL_check_mutex PL_checkav PL_checkav_save PL_chopset\nsyn keyword xsMacro PL_clocktick PL_collation_ix PL_collation_name\nsyn keyword xsMacro PL_collation_standard PL_collxfrm_base PL_collxfrm_mult\nsyn keyword xsMacro PL_colors PL_colorset PL_compcv PL_compiling PL_comppad\nsyn keyword xsMacro PL_comppad_name PL_comppad_name_fill\nsyn keyword xsMacro PL_comppad_name_floor PL_cop_seqmax PL_cryptseen\nsyn keyword xsMacro PL_cshlen PL_csighandlerp PL_curcop PL_curcopdb\nsyn keyword xsMacro PL_curinterp PL_curpad PL_curpm PL_curstack\nsyn keyword xsMacro PL_curstackinfo PL_curstash PL_curstname\nsyn keyword xsMacro PL_custom_op_descs PL_custom_op_names PL_custom_ops\nsyn keyword xsMacro PL_cv_has_eval PL_dbargs PL_debstash PL_debug\nsyn keyword xsMacro PL_debug_pad PL_def_layerlist PL_defgv PL_defoutgv\nsyn keyword xsMacro PL_defstash PL_delaymagic PL_delaymagic_egid\nsyn keyword xsMacro PL_delaymagic_euid PL_delaymagic_gid PL_delaymagic_uid\nsyn keyword xsMacro PL_destroyhook PL_diehook PL_dirty PL_do_undump\nsyn keyword xsMacro PL_dollarzero_mutex PL_doswitches PL_dowarn PL_dumper_fd\nsyn keyword xsMacro PL_dumpindent PL_e_script PL_efloatbuf PL_efloatsize\nsyn keyword xsMacro PL_encoding PL_endav PL_envgv PL_errgv PL_errors\nsyn keyword xsMacro PL_eval_root PL_eval_start PL_evalseq PL_exit_flags\nsyn keyword xsMacro PL_exitlist PL_exitlistlen PL_fdpid PL_filemode\nsyn keyword xsMacro PL_firstgv PL_forkprocess PL_formfeed PL_formtarget\nsyn keyword xsMacro PL_generation PL_gensym PL_glob_index PL_globalstash\nsyn keyword xsMacro PL_globhook PL_hash_seed PL_hintgv PL_hints\nsyn keyword xsMacro PL_hints_mutex PL_hv_fetch_ent_mh PL_in_clean_all\nsyn keyword xsMacro PL_in_clean_objs PL_in_eval PL_in_load_module PL_incgv\nsyn keyword xsMacro PL_initav PL_inplace PL_isarev PL_keyword_plugin\nsyn keyword xsMacro PL_known_layers PL_last_in_gv PL_last_swash_hv\nsyn keyword xsMacro PL_last_swash_key PL_last_swash_klen PL_last_swash_slen\nsyn keyword xsMacro PL_last_swash_tmps PL_lastfd PL_lastgotoprobe\nsyn keyword xsMacro PL_laststatval PL_laststype PL_localizing PL_localpatches\nsyn keyword xsMacro PL_lockhook PL_madskills PL_main_cv PL_main_root\nsyn keyword xsMacro PL_main_start PL_mainstack PL_malloc_mutex PL_markstack\nsyn keyword xsMacro PL_markstack_max PL_markstack_ptr PL_max_intro_pending\nsyn keyword xsMacro PL_maxo PL_maxsysfd PL_memory_debug_header PL_mess_sv\nsyn keyword xsMacro PL_min_intro_pending PL_minus_E PL_minus_F PL_minus_a\nsyn keyword xsMacro PL_minus_c PL_minus_l PL_minus_n PL_minus_p\nsyn keyword xsMacro PL_mmap_page_size PL_modcount PL_modglobal\nsyn keyword xsMacro PL_my_ctx_mutex PL_my_cxt_index PL_my_cxt_keys\nsyn keyword xsMacro PL_my_cxt_list PL_my_cxt_size PL_nomemok PL_nrs\nsyn keyword xsMacro PL_numeric_local PL_numeric_name PL_numeric_radix_sv\nsyn keyword xsMacro PL_numeric_standard PL_ofsgv PL_oldname PL_op PL_op_mask\nsyn keyword xsMacro PL_op_mutex PL_op_seq PL_op_sequence PL_opfreehook\nsyn keyword xsMacro PL_opsave PL_origalen PL_origargc PL_origargv\nsyn keyword xsMacro PL_origenviron PL_origfilename PL_ors_sv PL_osname\nsyn keyword xsMacro PL_pad_reset_pending PL_padix PL_padix_floor PL_parser\nsyn keyword xsMacro PL_patchlevel PL_peepp PL_perl_destruct_level PL_perldb\nsyn keyword xsMacro PL_perlio PL_perlio_debug_fd PL_perlio_fd_refcnt\nsyn keyword xsMacro PL_perlio_fd_refcnt_size PL_perlio_mutex PL_phase\nsyn keyword xsMacro PL_pidstatus PL_preambleav PL_profiledata PL_psig_name\nsyn keyword xsMacro PL_psig_pend PL_psig_ptr PL_ptr_table PL_reentrant_buffer\nsyn keyword xsMacro PL_reentrant_retint PL_reg_curpm PL_reg_eval_set\nsyn keyword xsMacro PL_reg_flags PL_reg_leftiter PL_reg_magic\nsyn keyword xsMacro PL_reg_match_utf8 PL_reg_maxiter PL_reg_oldcurpm\nsyn keyword xsMacro PL_reg_oldpos PL_reg_oldsaved PL_reg_oldsavedlen\nsyn keyword xsMacro PL_reg_poscache PL_reg_poscache_size PL_reg_start_tmp\nsyn keyword xsMacro PL_reg_start_tmpl PL_reg_starttry PL_reg_state\nsyn keyword xsMacro PL_regdummy PL_regeol PL_regex_pad PL_regex_padav\nsyn keyword xsMacro PL_reginput PL_reginterp_cnt PL_registered_mros\nsyn keyword xsMacro PL_reglastcloseparen PL_reglastparen PL_regmatch_slab\nsyn keyword xsMacro PL_regmatch_state PL_regoffs PL_regsize PL_rehash_seed\nsyn keyword xsMacro PL_rehash_seed_set PL_replgv PL_restartjmpenv\nsyn keyword xsMacro PL_restartop PL_rpeepp PL_rs PL_runops PL_savebegin\nsyn keyword xsMacro PL_savestack PL_savestack_ix PL_savestack_max\nsyn keyword xsMacro PL_sawampersand PL_scopestack PL_scopestack_ix\nsyn keyword xsMacro PL_scopestack_max PL_scopestack_name PL_secondgv\nsyn keyword xsMacro PL_sharehook PL_sig_defaulting PL_sig_handlers_initted\nsyn keyword xsMacro PL_sig_ignoring PL_sig_pending PL_sig_trapped\nsyn keyword xsMacro PL_sigfpe_saved PL_sighandlerp PL_signalhook PL_signals\nsyn keyword xsMacro PL_slab_count PL_slabs PL_sort_RealCmp PL_sortcop\nsyn keyword xsMacro PL_sortstash PL_splitstr PL_srand_called PL_stack_base\nsyn keyword xsMacro PL_stack_max PL_stack_sp PL_start_env PL_stashcache\nsyn keyword xsMacro PL_statbuf PL_statcache PL_statgv PL_statname\nsyn keyword xsMacro PL_statusvalue PL_statusvalue_posix PL_statusvalue_vms\nsyn keyword xsMacro PL_stderrgv PL_stdingv PL_strtab PL_sub_generation\nsyn keyword xsMacro PL_subline PL_subname PL_sv_arenaroot PL_sv_count\nsyn keyword xsMacro PL_sv_no PL_sv_objcount PL_sv_placeholder PL_sv_root\nsyn keyword xsMacro PL_sv_serial PL_sv_undef PL_sv_yes PL_sys_intern\nsyn keyword xsMacro PL_taint_warn PL_tainted PL_tainting PL_thr_key\nsyn keyword xsMacro PL_threadhook PL_timesbase PL_timesbuf PL_tmps_floor\nsyn keyword xsMacro PL_tmps_ix PL_tmps_max PL_tmps_stack PL_top_env\nsyn keyword xsMacro PL_toptarget PL_unicode PL_unitcheckav\nsyn keyword xsMacro PL_unitcheckav_save PL_unlockhook PL_unsafe\nsyn keyword xsMacro PL_use_safe_putenv PL_utf8_X_L PL_utf8_X_LV PL_utf8_X_LVT\nsyn keyword xsMacro PL_utf8_X_LV_LVT_V PL_utf8_X_T PL_utf8_X_V\nsyn keyword xsMacro PL_utf8_X_begin PL_utf8_X_extend PL_utf8_X_non_hangul\nsyn keyword xsMacro PL_utf8_X_prepend PL_utf8_alnum PL_utf8_alpha\nsyn keyword xsMacro PL_utf8_digit PL_utf8_foldable PL_utf8_foldclosures\nsyn keyword xsMacro PL_utf8_graph PL_utf8_idcont PL_utf8_idstart\nsyn keyword xsMacro PL_utf8_lower PL_utf8_mark PL_utf8_perl_idstart\nsyn keyword xsMacro PL_utf8_print PL_utf8_punct PL_utf8_quotemeta\nsyn keyword xsMacro PL_utf8_space PL_utf8_tofold PL_utf8_tolower\nsyn keyword xsMacro PL_utf8_totitle PL_utf8_toupper PL_utf8_upper\nsyn keyword xsMacro PL_utf8_xdigit PL_utf8_xidcont PL_utf8_xidstart\nsyn keyword xsMacro PL_utf8cache PL_utf8locale PL_veto_cleanup PL_vtbl_amagic\nsyn keyword xsMacro PL_vtbl_amagicelem PL_vtbl_arylen PL_vtbl_arylen_p\nsyn keyword xsMacro PL_vtbl_backref PL_vtbl_bm PL_vtbl_collxfrm\nsyn keyword xsMacro PL_vtbl_dbline PL_vtbl_defelem PL_vtbl_env\nsyn keyword xsMacro PL_vtbl_envelem PL_vtbl_fm PL_vtbl_hints\nsyn keyword xsMacro PL_vtbl_hintselem PL_vtbl_isa PL_vtbl_isaelem\nsyn keyword xsMacro PL_vtbl_mglob PL_vtbl_nkeys PL_vtbl_ovrld PL_vtbl_pack\nsyn keyword xsMacro PL_vtbl_packelem PL_vtbl_pos PL_vtbl_regdata\nsyn keyword xsMacro PL_vtbl_regdatum PL_vtbl_regexp PL_vtbl_sigelem\nsyn keyword xsMacro PL_vtbl_substr PL_vtbl_sv PL_vtbl_taint PL_vtbl_utf8\nsyn keyword xsMacro PL_vtbl_uvar PL_vtbl_vec PL_vtbl_vstring PL_warnhook\nsyn keyword xsMacro PL_watch_pvx PL_watchaddr PL_watchok PL_xmlfp PMFUNC\nsyn keyword xsMacro PM_GETRE PM_SETRE PMf_BASE_SHIFT PMf_COMPILETIME\nsyn keyword xsMacro PMf_CONST PMf_CONTINUE PMf_EVAL PMf_EXTENDED PMf_FOLD\nsyn keyword xsMacro PMf_GLOBAL PMf_KEEP PMf_KEEPCOPY PMf_MAYBE_CONST\nsyn keyword xsMacro PMf_MULTILINE PMf_NONDESTRUCT PMf_ONCE PMf_RETAINT\nsyn keyword xsMacro PMf_SINGLELINE PMf_USED POPBLOCK POPEVAL POPFORMAT\nsyn keyword xsMacro POPLOOP POPMARK POPSTACK POPSTACK_TO POPSUB POPSUBST\nsyn keyword xsMacro POP_MULTICALL POP_SAVEARRAY POPi POPl POPn POPp POPpbytex\nsyn keyword xsMacro POPpconstx POPpx POPq POPs POPu POPul POPuq POSTDEC\nsyn keyword xsMacro POSTINC POWOP PP PREC_LOW PREDEC PREGf_CUTGROUP_SEEN\nsyn keyword xsMacro PREGf_IMPLICIT PREGf_NAUGHTY PREGf_SKIP\nsyn keyword xsMacro PREGf_VERBARG_SEEN PREINC PREVOPER PRINTF_FORMAT_NULL_OK\nsyn keyword xsMacro PRIVATEREF PRIVLIB PRIVLIB_EXP PRIVSHIFT PROCSELFEXE_PATH\nsyn keyword xsMacro PRUNE PSEUDO PTHREAD_ATFORK PTHREAD_ATTR_SETDETACHSTATE\nsyn keyword xsMacro PTHREAD_CREATE PTHREAD_CREATE_JOINABLE\nsyn keyword xsMacro PTHREAD_GETSPECIFIC PTHREAD_GETSPECIFIC_INT PTR2IV PTR2NV\nsyn keyword xsMacro PTR2UV PTR2nat PTR2ul PTRSIZE PTRV PUSHBLOCK PUSHEVAL\nsyn keyword xsMacro PUSHFORMAT PUSHGIVEN PUSHLOOP_FOR PUSHLOOP_PLAIN PUSHMARK\nsyn keyword xsMacro PUSHSTACK PUSHSTACKi PUSHSUB PUSHSUBST PUSHSUB_BASE\nsyn keyword xsMacro PUSHSUB_DB PUSHTARG PUSHWHEN PUSH_MULTICALL PUSHi\nsyn keyword xsMacro PUSHmortal PUSHn PUSHp PUSHs PUSHu PUTBACK PWGECOS\nsyn keyword xsMacro PWPASSWD Pause PeRl_CaTiFy PeRl_StGiFy PerlDir_chdir\nsyn keyword xsMacro PerlDir_close PerlDir_mapA PerlDir_mapW PerlDir_mkdir\nsyn keyword xsMacro PerlDir_open PerlDir_read PerlDir_rewind PerlDir_rmdir\nsyn keyword xsMacro PerlDir_seek PerlDir_tell PerlEnv_ENVgetenv\nsyn keyword xsMacro PerlEnv_ENVgetenv_len PerlEnv_clearenv\nsyn keyword xsMacro PerlEnv_free_childdir PerlEnv_free_childenv\nsyn keyword xsMacro PerlEnv_get_child_IO PerlEnv_get_childdir\nsyn keyword xsMacro PerlEnv_get_childenv PerlEnv_getenv PerlEnv_getenv_len\nsyn keyword xsMacro PerlEnv_lib_path PerlEnv_os_id PerlEnv_putenv\nsyn keyword xsMacro PerlEnv_sitelib_path PerlEnv_uname PerlEnv_vendorlib_path\nsyn keyword xsMacro PerlIOArg PerlIOBase PerlIONext PerlIOSelf PerlIOValid\nsyn keyword xsMacro PerlIO_canset_cnt PerlIO_exportFILE PerlIO_fast_gets\nsyn keyword xsMacro PerlIO_fdopen PerlIO_findFILE PerlIO_getc PerlIO_getname\nsyn keyword xsMacro PerlIO_has_base PerlIO_has_cntptr PerlIO_importFILE\nsyn keyword xsMacro PerlIO_isutf8 PerlIO_open PerlIO_printf PerlIO_putc\nsyn keyword xsMacro PerlIO_puts PerlIO_releaseFILE PerlIO_reopen\nsyn keyword xsMacro PerlIO_rewind PerlIO_sprintf PerlIO_stdoutf\nsyn keyword xsMacro PerlIO_tmpfile PerlIO_ungetc PerlIO_vprintf\nsyn keyword xsMacro PerlLIO_access PerlLIO_chmod PerlLIO_chown PerlLIO_chsize\nsyn keyword xsMacro PerlLIO_close PerlLIO_dup PerlLIO_dup2 PerlLIO_flock\nsyn keyword xsMacro PerlLIO_fstat PerlLIO_ioctl PerlLIO_isatty PerlLIO_link\nsyn keyword xsMacro PerlLIO_lseek PerlLIO_lstat PerlLIO_mkstemp\nsyn keyword xsMacro PerlLIO_mktemp PerlLIO_open PerlLIO_open3 PerlLIO_read\nsyn keyword xsMacro PerlLIO_rename PerlLIO_setmode PerlLIO_stat\nsyn keyword xsMacro PerlLIO_tmpnam PerlLIO_umask PerlLIO_unlink PerlLIO_utime\nsyn keyword xsMacro PerlLIO_write PerlMemParse_calloc PerlMemParse_free\nsyn keyword xsMacro PerlMemParse_free_lock PerlMemParse_get_lock\nsyn keyword xsMacro PerlMemParse_is_locked PerlMemParse_malloc\nsyn keyword xsMacro PerlMemParse_realloc PerlMemShared_calloc\nsyn keyword xsMacro PerlMemShared_free PerlMemShared_free_lock\nsyn keyword xsMacro PerlMemShared_get_lock PerlMemShared_is_locked\nsyn keyword xsMacro PerlMemShared_malloc PerlMemShared_realloc PerlMem_calloc\nsyn keyword xsMacro PerlMem_free PerlMem_free_lock PerlMem_get_lock\nsyn keyword xsMacro PerlMem_is_locked PerlMem_malloc PerlMem_realloc\nsyn keyword xsMacro PerlProc_DynaLoad PerlProc_GetOSError PerlProc__exit\nsyn keyword xsMacro PerlProc_abort PerlProc_crypt PerlProc_execl\nsyn keyword xsMacro PerlProc_execv PerlProc_execvp PerlProc_exit\nsyn keyword xsMacro PerlProc_fork PerlProc_getegid PerlProc_geteuid\nsyn keyword xsMacro PerlProc_getgid PerlProc_getlogin PerlProc_getpid\nsyn keyword xsMacro PerlProc_gettimeofday PerlProc_getuid PerlProc_kill\nsyn keyword xsMacro PerlProc_killpg PerlProc_lasthost PerlProc_longjmp\nsyn keyword xsMacro PerlProc_pause PerlProc_pclose PerlProc_pipe\nsyn keyword xsMacro PerlProc_popen PerlProc_popen_list PerlProc_setgid\nsyn keyword xsMacro PerlProc_setjmp PerlProc_setuid PerlProc_signal\nsyn keyword xsMacro PerlProc_sleep PerlProc_spawnvp PerlProc_times\nsyn keyword xsMacro PerlProc_wait PerlProc_waitpid PerlSIO_canset_cnt\nsyn keyword xsMacro PerlSIO_clearerr PerlSIO_fast_gets PerlSIO_fclose\nsyn keyword xsMacro PerlSIO_fdopen PerlSIO_fdupopen PerlSIO_feof\nsyn keyword xsMacro PerlSIO_ferror PerlSIO_fflush PerlSIO_fgetc\nsyn keyword xsMacro PerlSIO_fgetpos PerlSIO_fgets PerlSIO_fileno\nsyn keyword xsMacro PerlSIO_fopen PerlSIO_fputc PerlSIO_fputs PerlSIO_fread\nsyn keyword xsMacro PerlSIO_freopen PerlSIO_fseek PerlSIO_fsetpos\nsyn keyword xsMacro PerlSIO_ftell PerlSIO_fwrite PerlSIO_get_base\nsyn keyword xsMacro PerlSIO_get_bufsiz PerlSIO_get_cnt PerlSIO_get_ptr\nsyn keyword xsMacro PerlSIO_has_base PerlSIO_has_cntptr PerlSIO_init\nsyn keyword xsMacro PerlSIO_printf PerlSIO_rewind PerlSIO_set_cnt\nsyn keyword xsMacro PerlSIO_set_ptr PerlSIO_setbuf PerlSIO_setlinebuf\nsyn keyword xsMacro PerlSIO_setvbuf PerlSIO_stderr PerlSIO_stdin\nsyn keyword xsMacro PerlSIO_stdout PerlSIO_stdoutf PerlSIO_tmpfile\nsyn keyword xsMacro PerlSIO_ungetc PerlSIO_vprintf PerlSock_accept\nsyn keyword xsMacro PerlSock_bind PerlSock_closesocket PerlSock_connect\nsyn keyword xsMacro PerlSock_endhostent PerlSock_endnetent\nsyn keyword xsMacro PerlSock_endprotoent PerlSock_endservent\nsyn keyword xsMacro PerlSock_gethostbyaddr PerlSock_gethostbyname\nsyn keyword xsMacro PerlSock_gethostent PerlSock_gethostname\nsyn keyword xsMacro PerlSock_getnetbyaddr PerlSock_getnetbyname\nsyn keyword xsMacro PerlSock_getnetent PerlSock_getpeername\nsyn keyword xsMacro PerlSock_getprotobyname PerlSock_getprotobynumber\nsyn keyword xsMacro PerlSock_getprotoent PerlSock_getservbyname\nsyn keyword xsMacro PerlSock_getservbyport PerlSock_getservent\nsyn keyword xsMacro PerlSock_getsockname PerlSock_getsockopt PerlSock_htonl\nsyn keyword xsMacro PerlSock_htons PerlSock_inet_addr PerlSock_inet_ntoa\nsyn keyword xsMacro PerlSock_listen PerlSock_ntohl PerlSock_ntohs\nsyn keyword xsMacro PerlSock_recv PerlSock_recvfrom PerlSock_select\nsyn keyword xsMacro PerlSock_send PerlSock_sendto PerlSock_sethostent\nsyn keyword xsMacro PerlSock_setnetent PerlSock_setprotoent\nsyn keyword xsMacro PerlSock_setservent PerlSock_setsockopt PerlSock_shutdown\nsyn keyword xsMacro PerlSock_socket PerlSock_socketpair Perl_assert\nsyn keyword xsMacro Perl_atan2 Perl_atof Perl_atof2 Perl_ceil Perl_cos\nsyn keyword xsMacro Perl_debug_log Perl_error_log Perl_exp Perl_floor\nsyn keyword xsMacro Perl_fmod Perl_fp_class Perl_fp_class_denorm\nsyn keyword xsMacro Perl_fp_class_inf Perl_fp_class_nan Perl_fp_class_ndenorm\nsyn keyword xsMacro Perl_fp_class_ninf Perl_fp_class_nnorm Perl_fp_class_norm\nsyn keyword xsMacro Perl_fp_class_nzero Perl_fp_class_pdenorm\nsyn keyword xsMacro Perl_fp_class_pinf Perl_fp_class_pnorm\nsyn keyword xsMacro Perl_fp_class_pzero Perl_fp_class_qnan Perl_fp_class_snan\nsyn keyword xsMacro Perl_fp_class_zero Perl_frexp Perl_isfinite Perl_isinf\nsyn keyword xsMacro Perl_isnan Perl_log Perl_malloc_good_size Perl_modf\nsyn keyword xsMacro Perl_pow Perl_pp_accept Perl_pp_aelemfast_lex\nsyn keyword xsMacro Perl_pp_andassign Perl_pp_avalues Perl_pp_bind\nsyn keyword xsMacro Perl_pp_bit_xor Perl_pp_chmod Perl_pp_chomp\nsyn keyword xsMacro Perl_pp_connect Perl_pp_cos Perl_pp_custom\nsyn keyword xsMacro Perl_pp_dbmclose Perl_pp_dofile Perl_pp_dor\nsyn keyword xsMacro Perl_pp_dorassign Perl_pp_dump Perl_pp_egrent\nsyn keyword xsMacro Perl_pp_enetent Perl_pp_eprotoent Perl_pp_epwent\nsyn keyword xsMacro Perl_pp_eservent Perl_pp_exp Perl_pp_fcntl\nsyn keyword xsMacro Perl_pp_ftatime Perl_pp_ftbinary Perl_pp_ftblk\nsyn keyword xsMacro Perl_pp_ftchr Perl_pp_ftctime Perl_pp_ftdir\nsyn keyword xsMacro Perl_pp_fteexec Perl_pp_fteowned Perl_pp_fteread\nsyn keyword xsMacro Perl_pp_ftewrite Perl_pp_ftfile Perl_pp_ftmtime\nsyn keyword xsMacro Perl_pp_ftpipe Perl_pp_ftrexec Perl_pp_ftrwrite\nsyn keyword xsMacro Perl_pp_ftsgid Perl_pp_ftsize Perl_pp_ftsock\nsyn keyword xsMacro Perl_pp_ftsuid Perl_pp_ftsvtx Perl_pp_ftzero\nsyn keyword xsMacro Perl_pp_getpeername Perl_pp_getsockname Perl_pp_ggrgid\nsyn keyword xsMacro Perl_pp_ggrnam Perl_pp_ghbyaddr Perl_pp_ghbyname\nsyn keyword xsMacro Perl_pp_gnbyaddr Perl_pp_gnbyname Perl_pp_gpbyname\nsyn keyword xsMacro Perl_pp_gpbynumber Perl_pp_gpwnam Perl_pp_gpwuid\nsyn keyword xsMacro Perl_pp_gsbyname Perl_pp_gsbyport Perl_pp_gsockopt\nsyn keyword xsMacro Perl_pp_hex Perl_pp_i_postdec Perl_pp_i_postinc\nsyn keyword xsMacro Perl_pp_i_predec Perl_pp_i_preinc Perl_pp_keys\nsyn keyword xsMacro Perl_pp_kill Perl_pp_lcfirst Perl_pp_lineseq\nsyn keyword xsMacro Perl_pp_listen Perl_pp_localtime Perl_pp_log\nsyn keyword xsMacro Perl_pp_lstat Perl_pp_mapstart Perl_pp_msgctl\nsyn keyword xsMacro Perl_pp_msgget Perl_pp_msgrcv Perl_pp_msgsnd\nsyn keyword xsMacro Perl_pp_orassign Perl_pp_padany Perl_pp_pop\nsyn keyword xsMacro Perl_pp_postdec Perl_pp_predec Perl_pp_reach Perl_pp_read\nsyn keyword xsMacro Perl_pp_recv Perl_pp_regcmaybe Perl_pp_rindex\nsyn keyword xsMacro Perl_pp_rv2hv Perl_pp_rvalues Perl_pp_say Perl_pp_scalar\nsyn keyword xsMacro Perl_pp_schomp Perl_pp_scope Perl_pp_seek Perl_pp_semop\nsyn keyword xsMacro Perl_pp_send Perl_pp_sge Perl_pp_sgrent Perl_pp_sgt\nsyn keyword xsMacro Perl_pp_shmctl Perl_pp_shmget Perl_pp_shmread\nsyn keyword xsMacro Perl_pp_shutdown Perl_pp_slt Perl_pp_snetent\nsyn keyword xsMacro Perl_pp_socket Perl_pp_sprotoent Perl_pp_spwent\nsyn keyword xsMacro Perl_pp_sqrt Perl_pp_sservent Perl_pp_ssockopt\nsyn keyword xsMacro Perl_pp_symlink Perl_pp_transr Perl_pp_unlink\nsyn keyword xsMacro Perl_pp_utime Perl_pp_values Perl_safesysmalloc_size\nsyn keyword xsMacro Perl_sharepvn Perl_signbit Perl_sin Perl_sqrt\nsyn keyword xsMacro Perl_va_copy PmopSTASH PmopSTASHPV PmopSTASHPV_set\nsyn keyword xsMacro PmopSTASH_flags PmopSTASH_flags_set PmopSTASH_free\nsyn keyword xsMacro PmopSTASH_set Poison PoisonFree PoisonNew PoisonWith\nsyn keyword xsMacro QR_PAT_MODS QUADKIND QUAD_IS_INT QUAD_IS_INT64_T\nsyn keyword xsMacro QUAD_IS_LONG QUAD_IS_LONG_LONG QUAD_IS___INT64 QWLIST\nsyn keyword xsMacro RANDBITS RANDOM_R_PROTO RD_NODATA READDIR64_R_PROTO\nsyn keyword xsMacro READDIR_R_PROTO REENTRANT_PROTO_B_B REENTRANT_PROTO_B_BI\nsyn keyword xsMacro REENTRANT_PROTO_B_BW REENTRANT_PROTO_B_CCD\nsyn keyword xsMacro REENTRANT_PROTO_B_CCS REENTRANT_PROTO_B_IBI\nsyn keyword xsMacro REENTRANT_PROTO_B_IBW REENTRANT_PROTO_B_SB\nsyn keyword xsMacro REENTRANT_PROTO_B_SBI REENTRANT_PROTO_I_BI\nsyn keyword xsMacro REENTRANT_PROTO_I_BW REENTRANT_PROTO_I_CCSBWR\nsyn keyword xsMacro REENTRANT_PROTO_I_CCSD REENTRANT_PROTO_I_CII\nsyn keyword xsMacro REENTRANT_PROTO_I_CIISD REENTRANT_PROTO_I_CSBI\nsyn keyword xsMacro REENTRANT_PROTO_I_CSBIR REENTRANT_PROTO_I_CSBWR\nsyn keyword xsMacro REENTRANT_PROTO_I_CSBWRE REENTRANT_PROTO_I_CSD\nsyn keyword xsMacro REENTRANT_PROTO_I_CWISBWRE REENTRANT_PROTO_I_CWISD\nsyn keyword xsMacro REENTRANT_PROTO_I_D REENTRANT_PROTO_I_H\nsyn keyword xsMacro REENTRANT_PROTO_I_IBI REENTRANT_PROTO_I_IBW\nsyn keyword xsMacro REENTRANT_PROTO_I_ICBI REENTRANT_PROTO_I_ICSBWR\nsyn keyword xsMacro REENTRANT_PROTO_I_ICSD REENTRANT_PROTO_I_ID\nsyn keyword xsMacro REENTRANT_PROTO_I_IISD REENTRANT_PROTO_I_ISBWR\nsyn keyword xsMacro REENTRANT_PROTO_I_ISD REENTRANT_PROTO_I_LISBI\nsyn keyword xsMacro REENTRANT_PROTO_I_LISD REENTRANT_PROTO_I_LS\nsyn keyword xsMacro REENTRANT_PROTO_I_SB REENTRANT_PROTO_I_SBI\nsyn keyword xsMacro REENTRANT_PROTO_I_SBIE REENTRANT_PROTO_I_SBIH\nsyn keyword xsMacro REENTRANT_PROTO_I_SBIR REENTRANT_PROTO_I_SBWR\nsyn keyword xsMacro REENTRANT_PROTO_I_SBWRE REENTRANT_PROTO_I_SD\nsyn keyword xsMacro REENTRANT_PROTO_I_ST REENTRANT_PROTO_I_St\nsyn keyword xsMacro REENTRANT_PROTO_I_TISD REENTRANT_PROTO_I_TS\nsyn keyword xsMacro REENTRANT_PROTO_I_TSBI REENTRANT_PROTO_I_TSBIR\nsyn keyword xsMacro REENTRANT_PROTO_I_TSBWR REENTRANT_PROTO_I_TSR\nsyn keyword xsMacro REENTRANT_PROTO_I_TsISBWRE REENTRANT_PROTO_I_UISBWRE\nsyn keyword xsMacro REENTRANT_PROTO_I_iS REENTRANT_PROTO_I_lS\nsyn keyword xsMacro REENTRANT_PROTO_I_uISBWRE REENTRANT_PROTO_S_CBI\nsyn keyword xsMacro REENTRANT_PROTO_S_CCSBI REENTRANT_PROTO_S_CIISBIE\nsyn keyword xsMacro REENTRANT_PROTO_S_CSBI REENTRANT_PROTO_S_CSBIE\nsyn keyword xsMacro REENTRANT_PROTO_S_CWISBIE REENTRANT_PROTO_S_CWISBWIE\nsyn keyword xsMacro REENTRANT_PROTO_S_ICSBI REENTRANT_PROTO_S_ISBI\nsyn keyword xsMacro REENTRANT_PROTO_S_LISBI REENTRANT_PROTO_S_SBI\nsyn keyword xsMacro REENTRANT_PROTO_S_SBIE REENTRANT_PROTO_S_SBW\nsyn keyword xsMacro REENTRANT_PROTO_S_TISBI REENTRANT_PROTO_S_TSBI\nsyn keyword xsMacro REENTRANT_PROTO_S_TSBIE REENTRANT_PROTO_S_TWISBIE\nsyn keyword xsMacro REENTRANT_PROTO_V_D REENTRANT_PROTO_V_H\nsyn keyword xsMacro REENTRANT_PROTO_V_ID REENTR_H REENTR_MEMZERO REF\nsyn keyword xsMacro REFCOUNTED_HE_EXISTS REFCOUNTED_HE_KEY_UTF8 REFF REFFA\nsyn keyword xsMacro REFFL REFFU REFGEN REF_HE_KEY REGMATCH_STATE_MAX\nsyn keyword xsMacro REGNODE_MAX REGNODE_SIMPLE REGNODE_VARIES REG_ANY\nsyn keyword xsMacro REG_INFTY REG_MAGIC REG_SEEN_CANY REG_SEEN_CUTGROUP\nsyn keyword xsMacro REG_SEEN_EVAL REG_SEEN_EXACTF_SHARP_S REG_SEEN_GPOS\nsyn keyword xsMacro REG_SEEN_LOOKBEHIND REG_SEEN_RECURSE\nsyn keyword xsMacro REG_SEEN_RUN_ON_COMMENT REG_SEEN_SANY REG_SEEN_VERBARG\nsyn keyword xsMacro REG_SEEN_ZERO_LEN REG_TOP_LEVEL_BRANCHES RELOP RENUM\nsyn keyword xsMacro REQUIRE RESTORE_ERRNO RESTORE_NUMERIC_LOCAL\nsyn keyword xsMacro RESTORE_NUMERIC_STANDARD RETPUSHNO RETPUSHUNDEF\nsyn keyword xsMacro RETPUSHYES RETSETNO RETSETUNDEF RETSETYES RETURN RETURNOP\nsyn keyword xsMacro RETURNX RETURN_PROBE REXEC_CHECKED REXEC_COPY_STR\nsyn keyword xsMacro REXEC_IGNOREPOS REXEC_NOT_FIRST REXEC_SCREAM\nsyn keyword xsMacro RE_DEBUG_COMPILE_DUMP RE_DEBUG_COMPILE_FLAGS\nsyn keyword xsMacro RE_DEBUG_COMPILE_MASK RE_DEBUG_COMPILE_OPTIMISE\nsyn keyword xsMacro RE_DEBUG_COMPILE_PARSE RE_DEBUG_COMPILE_TRIE\nsyn keyword xsMacro RE_DEBUG_EXECUTE_INTUIT RE_DEBUG_EXECUTE_MASK\nsyn keyword xsMacro RE_DEBUG_EXECUTE_MATCH RE_DEBUG_EXECUTE_TRIE\nsyn keyword xsMacro RE_DEBUG_EXTRA_BUFFERS RE_DEBUG_EXTRA_GPOS\nsyn keyword xsMacro RE_DEBUG_EXTRA_MASK RE_DEBUG_EXTRA_OFFDEBUG\nsyn keyword xsMacro RE_DEBUG_EXTRA_OFFSETS RE_DEBUG_EXTRA_OPTIMISE\nsyn keyword xsMacro RE_DEBUG_EXTRA_STACK RE_DEBUG_EXTRA_STATE\nsyn keyword xsMacro RE_DEBUG_EXTRA_TRIE RE_DEBUG_FLAG RE_DEBUG_FLAGS\nsyn keyword xsMacro RE_PV_COLOR_DECL RE_PV_QUOTED_DECL RE_SV_DUMPLEN\nsyn keyword xsMacro RE_SV_ESCAPE RE_SV_TAIL RE_TRACK_PATTERN_OFFSETS\nsyn keyword xsMacro RE_TRIE_MAXBUF_INIT RE_TRIE_MAXBUF_NAME RMS_DIR RMS_FAC\nsyn keyword xsMacro RMS_FEX RMS_FNF RMS_IFI RMS_ISI RMS_PRV RUNOPS_DEFAULT\nsyn keyword xsMacro RV2CVOPCV_MARK_EARLY RV2CVOPCV_RETURN_NAME_GV\nsyn keyword xsMacro RX_ANCHORED_SUBSTR RX_ANCHORED_UTF8 RX_BUFF_IDX_FULLMATCH\nsyn keyword xsMacro RX_BUFF_IDX_POSTMATCH RX_BUFF_IDX_PREMATCH\nsyn keyword xsMacro RX_CHECK_SUBSTR RX_ENGINE RX_EXTFLAGS RX_FLOAT_SUBSTR\nsyn keyword xsMacro RX_FLOAT_UTF8 RX_GOFS RX_HAS_CUTGROUP RX_LASTCLOSEPAREN\nsyn keyword xsMacro RX_LASTPAREN RX_MATCH_COPIED RX_MATCH_COPIED_off\nsyn keyword xsMacro RX_MATCH_COPIED_on RX_MATCH_COPIED_set RX_MATCH_COPY_FREE\nsyn keyword xsMacro RX_MATCH_TAINTED RX_MATCH_TAINTED_off RX_MATCH_TAINTED_on\nsyn keyword xsMacro RX_MATCH_TAINTED_set RX_MATCH_UTF8 RX_MATCH_UTF8_off\nsyn keyword xsMacro RX_MATCH_UTF8_on RX_MATCH_UTF8_set RX_MINLEN RX_MINLENRET\nsyn keyword xsMacro RX_NPARENS RX_OFFS RX_PRECOMP RX_PRECOMP_const RX_PRELEN\nsyn keyword xsMacro RX_REFCNT RX_SAVED_COPY RX_SEEN_EVALS RX_SUBBEG RX_SUBLEN\nsyn keyword xsMacro RX_UTF8 RX_WRAPLEN RX_WRAPPED RX_WRAPPED_const RXapif_ALL\nsyn keyword xsMacro RXapif_CLEAR RXapif_DELETE RXapif_EXISTS RXapif_FETCH\nsyn keyword xsMacro RXapif_FIRSTKEY RXapif_NEXTKEY RXapif_ONE RXapif_REGNAME\nsyn keyword xsMacro RXapif_REGNAMES RXapif_REGNAMES_COUNT RXapif_SCALAR\nsyn keyword xsMacro RXapif_STORE RXf_ANCH RXf_ANCH_BOL RXf_ANCH_GPOS\nsyn keyword xsMacro RXf_ANCH_MBOL RXf_ANCH_SBOL RXf_ANCH_SINGLE\nsyn keyword xsMacro RXf_BASE_SHIFT RXf_CANY_SEEN RXf_CHECK_ALL RXf_COPY_DONE\nsyn keyword xsMacro RXf_EVAL_SEEN RXf_GPOS_CHECK RXf_GPOS_FLOAT RXf_GPOS_SEEN\nsyn keyword xsMacro RXf_INTUIT_TAIL RXf_LOOKBEHIND_SEEN RXf_MATCH_UTF8\nsyn keyword xsMacro RXf_NOSCAN RXf_NULL RXf_PMf_CHARSET RXf_PMf_COMPILETIME\nsyn keyword xsMacro RXf_PMf_EXTENDED RXf_PMf_FOLD RXf_PMf_KEEPCOPY\nsyn keyword xsMacro RXf_PMf_MULTILINE RXf_PMf_SINGLELINE RXf_PMf_STD_PMMOD\nsyn keyword xsMacro RXf_PMf_STD_PMMOD_SHIFT RXf_SKIPWHITE RXf_SPLIT\nsyn keyword xsMacro RXf_START_ONLY RXf_TAINTED RXf_TAINTED_SEEN\nsyn keyword xsMacro RXf_USE_INTUIT RXf_USE_INTUIT_ML RXf_USE_INTUIT_NOML\nsyn keyword xsMacro RXf_WHITE RXi_GET RXi_GET_DECL RXi_SET RXp_EXTFLAGS\nsyn keyword xsMacro RXp_MATCH_COPIED RXp_MATCH_COPIED_off RXp_MATCH_COPIED_on\nsyn keyword xsMacro RXp_MATCH_TAINTED RXp_MATCH_UTF8 RXp_PAREN_NAMES\nsyn keyword xsMacro ReREFCNT_dec ReREFCNT_inc Renew Renewc RsPARA RsRECORD\nsyn keyword xsMacro RsSIMPLE RsSNARF SAFE_TRIE_NODENUM SANY SAVEADELETE\nsyn keyword xsMacro SAVEBOOL SAVECLEARSV SAVECOMPILEWARNINGS SAVECOMPPAD\nsyn keyword xsMacro SAVECOPFILE SAVECOPFILE_FREE SAVECOPLINE SAVECOPSTASH\nsyn keyword xsMacro SAVECOPSTASH_FREE SAVEDELETE SAVEDESTRUCTOR\nsyn keyword xsMacro SAVEDESTRUCTOR_X SAVEFREECOPHH SAVEFREEOP SAVEFREEPV\nsyn keyword xsMacro SAVEFREESV SAVEGENERICPV SAVEGENERICSV SAVEHDELETE\nsyn keyword xsMacro SAVEHINTS SAVEI16 SAVEI32 SAVEI8 SAVEINT SAVEIV SAVELONG\nsyn keyword xsMacro SAVEMORTALIZESV SAVEOP SAVEPADSVANDMORTALIZE SAVEPARSER\nsyn keyword xsMacro SAVEPPTR SAVESETSVFLAGS SAVESHAREDPV SAVESPTR\nsyn keyword xsMacro SAVESTACK_ALLOC_FOR_RE_SAVE_STATE SAVESTACK_CXPOS\nsyn keyword xsMacro SAVESTACK_POS SAVESWITCHSTACK SAVETMPS SAVEVPTR\nsyn keyword xsMacro SAVE_DEFSV SAVE_ERRNO SAVE_MASK SAVE_TIGHT_SHIFT\nsyn keyword xsMacro SAVEf_KEEPOLDELEM SAVEf_SETMAGIC SAVEt_ADELETE\nsyn keyword xsMacro SAVEt_AELEM SAVEt_ALLOC SAVEt_APTR SAVEt_AV SAVEt_BOOL\nsyn keyword xsMacro SAVEt_CLEARSV SAVEt_COMPILE_WARNINGS SAVEt_COMPPAD\nsyn keyword xsMacro SAVEt_DELETE SAVEt_DESTRUCTOR SAVEt_DESTRUCTOR_X\nsyn keyword xsMacro SAVEt_FREECOPHH SAVEt_FREEOP SAVEt_FREEPV SAVEt_FREESV\nsyn keyword xsMacro SAVEt_GENERIC_PVREF SAVEt_GENERIC_SVREF SAVEt_GP\nsyn keyword xsMacro SAVEt_GVSV SAVEt_HELEM SAVEt_HINTS SAVEt_HPTR SAVEt_HV\nsyn keyword xsMacro SAVEt_I16 SAVEt_I32 SAVEt_I32_SMALL SAVEt_I8 SAVEt_INT\nsyn keyword xsMacro SAVEt_INT_SMALL SAVEt_ITEM SAVEt_IV SAVEt_LONG\nsyn keyword xsMacro SAVEt_MORTALIZESV SAVEt_NSTAB SAVEt_OP\nsyn keyword xsMacro SAVEt_PADSV_AND_MORTALIZE SAVEt_PARSER SAVEt_PPTR\nsyn keyword xsMacro SAVEt_REGCONTEXT SAVEt_RE_STATE SAVEt_SAVESWITCHSTACK\nsyn keyword xsMacro SAVEt_SET_SVFLAGS SAVEt_SHARED_PVREF SAVEt_SPTR\nsyn keyword xsMacro SAVEt_STACK_CXPOS SAVEt_STACK_POS SAVEt_SV SAVEt_SVREF\nsyn keyword xsMacro SAVEt_VPTR SBOL SCAN_DEF SCAN_REPL SCAN_TR SCHEDULE\nsyn keyword xsMacro SCHED_YIELD SCOPE_SAVES_SIGNAL_MASK SEEK_CUR SEEK_END\nsyn keyword xsMacro SEEK_SET SELECT_MIN_BITS SEOL SETERRNO SETGRENT_R_PROTO\nsyn keyword xsMacro SETHOSTENT_R_PROTO SETLOCALE_R_PROTO SETNETENT_R_PROTO\nsyn keyword xsMacro SETPROTOENT_R_PROTO SETPWENT_R_PROTO SETSERVENT_R_PROTO\nsyn keyword xsMacro SETTARG SET_MARK_OFFSET SET_NUMERIC_LOCAL\nsyn keyword xsMacro SET_NUMERIC_STANDARD SET_THR SET_THREAD_SELF SETi SETn\nsyn keyword xsMacro SETp SETs SETsv SETsvUN SETu SHARP_S_SKIP SHIFTOP\nsyn keyword xsMacro SHORTSIZE SH_PATH SIGABRT SIGILL SIG_NAME SIG_NUM\nsyn keyword xsMacro SIG_SIZE SINGLE_PAT_MOD SITEARCH SITEARCH_EXP SITELIB\nsyn keyword xsMacro SITELIB_EXP SITELIB_STEM SIZE_ALIGN SIZE_ONLY SKIP\nsyn keyword xsMacro SKIP_next SKIP_next_fail SLOPPYDIVIDE SOCKET_OPEN_MODE\nsyn keyword xsMacro SPACE SPACEA SPACEL SPACEU SPAGAIN SPRINTF_RETURNS_STRLEN\nsyn keyword xsMacro SRAND48_R_PROTO SRANDOM_R_PROTO SSCHECK SSGROW SSNEW\nsyn keyword xsMacro SSNEWa SSNEWat SSNEWt SSPOPBOOL SSPOPDPTR SSPOPDXPTR\nsyn keyword xsMacro SSPOPINT SSPOPIV SSPOPLONG SSPOPPTR SSPOPUV SSPTR SSPTRt\nsyn keyword xsMacro SSPUSHBOOL SSPUSHDPTR SSPUSHDXPTR SSPUSHINT SSPUSHIV\nsyn keyword xsMacro SSPUSHLONG SSPUSHPTR SSPUSHUV SS_ACCVIO SS_DEVOFFLINE\nsyn keyword xsMacro SS_IVCHAN SS_NORMAL ST STANDARD_C STAR STARTPERL\nsyn keyword xsMacro START_EXTERN_C START_MY_CXT STATIC STATUS_ALL_FAILURE\nsyn keyword xsMacro STATUS_ALL_SUCCESS STATUS_CURRENT STATUS_EXIT\nsyn keyword xsMacro STATUS_EXIT_SET STATUS_NATIVE STATUS_NATIVE_CHILD_SET\nsyn keyword xsMacro STATUS_UNIX STATUS_UNIX_EXIT_SET STATUS_UNIX_SET STDCHAR\nsyn keyword xsMacro STDIO_PTR_LVALUE STDIO_PTR_LVAL_SETS_CNT\nsyn keyword xsMacro STDIO_STREAM_ARRAY STD_PAT_MODS STD_PMMOD_FLAGS_CLEAR\nsyn keyword xsMacro STMT_END STMT_START STORE_NUMERIC_LOCAL_SET_STANDARD\nsyn keyword xsMacro STORE_NUMERIC_STANDARD_SET_LOCAL STRERROR_R_PROTO STRING\nsyn keyword xsMacro STRINGIFY STRUCT_OFFSET STRUCT_SV STR_LEN STR_SZ\nsyn keyword xsMacro STR_WITH_LEN ST_INO_SIGN ST_INO_SIZE SUB\nsyn keyword xsMacro SUBST_TAINT_BOOLRET SUBST_TAINT_PAT SUBST_TAINT_REPL\nsyn keyword xsMacro SUBST_TAINT_RETAINT SUBST_TAINT_STR SUBVERSION SUCCEED\nsyn keyword xsMacro SUSPEND SVTYPEMASK SV_CATBYTES SV_CATUTF8\nsyn keyword xsMacro SV_CHECK_THINKFIRST SV_CHECK_THINKFIRST_COW_DROP\nsyn keyword xsMacro SV_CONST_RETURN SV_COW_DROP_PV SV_COW_OTHER_PVS\nsyn keyword xsMacro SV_COW_SHARED_HASH_KEYS SV_DO_COW_SVSETSV\nsyn keyword xsMacro SV_FORCE_UTF8_UPGRADE SV_GMAGIC SV_HAS_TRAILING_NUL\nsyn keyword xsMacro SV_IMMEDIATE_UNREF SV_MUTABLE_RETURN SV_NOSTEAL\nsyn keyword xsMacro SV_SAVED_COPY SV_SKIP_OVERLOAD SV_SMAGIC\nsyn keyword xsMacro SV_UNDEF_RETURNS_NULL SV_UTF8_NO_ENCODING SVrepl_EVAL\nsyn keyword xsMacro SVt_MASK SWITCHSTACK SYMBIAN SYSTEM_GMTIME_MAX\nsyn keyword xsMacro SYSTEM_GMTIME_MIN SYSTEM_LOCALTIME_MAX\nsyn keyword xsMacro SYSTEM_LOCALTIME_MIN S_IEXEC S_IFIFO S_IFMT S_IREAD\nsyn keyword xsMacro S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU S_ISBLK\nsyn keyword xsMacro S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISLNK S_ISREG S_ISSOCK\nsyn keyword xsMacro S_ISUID S_IWGRP S_IWOTH S_IWRITE S_IWUSR S_IXGRP S_IXOTH\nsyn keyword xsMacro S_IXUSR S_PAT_MODS Safefree Semctl Sigjmp_buf Siglongjmp\nsyn keyword xsMacro Sigsetjmp Size_t_size StGiFy StashHANDLER Stat Strerror\nsyn keyword xsMacro Strtol Strtoul StructCopy SvAMAGIC SvAMAGIC_off\nsyn keyword xsMacro SvAMAGIC_on SvANY SvCANEXISTDELETE SvCOMPILED\nsyn keyword xsMacro SvCOMPILED_off SvCOMPILED_on SvCUR SvCUR_set\nsyn keyword xsMacro SvDESTROYABLE SvEND SvEND_set SvENDx SvEVALED\nsyn keyword xsMacro SvEVALED_off SvEVALED_on SvFAKE SvFAKE_off SvFAKE_on\nsyn keyword xsMacro SvFLAGS SvGAMAGIC SvGETMAGIC SvGMAGICAL SvGMAGICAL_off\nsyn keyword xsMacro SvGMAGICAL_on SvGROW SvGROW_mutable SvIMMORTAL SvIOK\nsyn keyword xsMacro SvIOK_UV SvIOK_notUV SvIOK_off SvIOK_on SvIOK_only\nsyn keyword xsMacro SvIOK_only_UV SvIOKp SvIOKp_on SvIS_FREED SvIV SvIVX\nsyn keyword xsMacro SvIVXx SvIV_nomg SvIV_please SvIV_please_nomg SvIV_set\nsyn keyword xsMacro SvIVx SvIsCOW SvIsCOW_normal SvIsCOW_shared_hash SvIsUV\nsyn keyword xsMacro SvIsUV_off SvIsUV_on SvLEN SvLEN_set SvLENx SvLOCK\nsyn keyword xsMacro SvMAGIC SvMAGICAL SvMAGICAL_off SvMAGICAL_on SvMAGIC_set\nsyn keyword xsMacro SvNIOK SvNIOK_off SvNIOKp SvNOK SvNOK_off SvNOK_on\nsyn keyword xsMacro SvNOK_only SvNOKp SvNOKp_on SvNV SvNVX SvNVXx SvNV_nomg\nsyn keyword xsMacro SvNV_set SvNVx SvOBJECT SvOBJECT_off SvOBJECT_on SvOK\nsyn keyword xsMacro SvOK_off SvOK_off_exc_UV SvOKp SvOOK SvOOK_off\nsyn keyword xsMacro SvOOK_offset SvOOK_on SvOURSTASH SvOURSTASH_set SvPADMY\nsyn keyword xsMacro SvPADMY_on SvPADSTALE SvPADSTALE_off SvPADSTALE_on\nsyn keyword xsMacro SvPADTMP SvPADTMP_off SvPADTMP_on SvPAD_OUR SvPAD_OUR_on\nsyn keyword xsMacro SvPAD_STATE SvPAD_STATE_on SvPAD_TYPED SvPAD_TYPED_on\nsyn keyword xsMacro SvPCS_IMPORTED SvPCS_IMPORTED_off SvPCS_IMPORTED_on\nsyn keyword xsMacro SvPEEK SvPOK SvPOK_off SvPOK_on SvPOK_only\nsyn keyword xsMacro SvPOK_only_UTF8 SvPOKp SvPOKp_on SvPV SvPVX SvPVX_const\nsyn keyword xsMacro SvPVX_mutable SvPVXx SvPV_const SvPV_flags\nsyn keyword xsMacro SvPV_flags_const SvPV_flags_const_nolen\nsyn keyword xsMacro SvPV_flags_mutable SvPV_force SvPV_force_flags\nsyn keyword xsMacro SvPV_force_flags_mutable SvPV_force_flags_nolen\nsyn keyword xsMacro SvPV_force_mutable SvPV_force_nolen SvPV_force_nomg\nsyn keyword xsMacro SvPV_force_nomg_nolen SvPV_free SvPV_mutable SvPV_nolen\nsyn keyword xsMacro SvPV_nolen_const SvPV_nomg SvPV_nomg_const\nsyn keyword xsMacro SvPV_nomg_const_nolen SvPV_nomg_nolen SvPV_renew SvPV_set\nsyn keyword xsMacro SvPV_shrink_to_cur SvPVbyte SvPVbyte_force SvPVbyte_nolen\nsyn keyword xsMacro SvPVbytex SvPVbytex_force SvPVbytex_nolen SvPVutf8\nsyn keyword xsMacro SvPVutf8_force SvPVutf8_nolen SvPVutf8x SvPVutf8x_force\nsyn keyword xsMacro SvPVx SvPVx_const SvPVx_force SvPVx_nolen\nsyn keyword xsMacro SvPVx_nolen_const SvREADONLY SvREADONLY_off SvREADONLY_on\nsyn keyword xsMacro SvREFCNT SvREFCNT_dec SvREFCNT_inc SvREFCNT_inc_NN\nsyn keyword xsMacro SvREFCNT_inc_simple SvREFCNT_inc_simple_NN\nsyn keyword xsMacro SvREFCNT_inc_simple_void SvREFCNT_inc_simple_void_NN\nsyn keyword xsMacro SvREFCNT_inc_void SvREFCNT_inc_void_NN SvRELEASE_IVX\nsyn keyword xsMacro SvRELEASE_IVX_ SvRMAGICAL SvRMAGICAL_off SvRMAGICAL_on\nsyn keyword xsMacro SvROK SvROK_off SvROK_on SvRV SvRV_const SvRV_set SvRVx\nsyn keyword xsMacro SvRX SvRXOK SvSCREAM SvSCREAM_off SvSCREAM_on SvSETMAGIC\nsyn keyword xsMacro SvSHARE SvSHARED_HASH SvSHARED_HEK_FROM_PV SvSMAGICAL\nsyn keyword xsMacro SvSMAGICAL_off SvSMAGICAL_on SvSTASH SvSTASH_set\nsyn keyword xsMacro SvSetMagicSV SvSetMagicSV_nosteal SvSetSV SvSetSV_and\nsyn keyword xsMacro SvSetSV_nosteal SvSetSV_nosteal_and SvTAIL SvTAIL_off\nsyn keyword xsMacro SvTAIL_on SvTAINT SvTAINTED SvTAINTED_off SvTAINTED_on\nsyn keyword xsMacro SvTEMP SvTEMP_off SvTEMP_on SvTHINKFIRST SvTIED_mg\nsyn keyword xsMacro SvTIED_obj SvTRUE SvTRUE_nomg SvTRUEx SvTYPE SvUNLOCK\nsyn keyword xsMacro SvUOK SvUPGRADE SvUTF8 SvUTF8_off SvUTF8_on SvUV SvUVX\nsyn keyword xsMacro SvUVXx SvUV_nomg SvUV_set SvUVx SvVALID SvVALID_off\nsyn keyword xsMacro SvVALID_on SvVOK SvVSTRING_mg SvWEAKREF SvWEAKREF_off\nsyn keyword xsMacro SvWEAKREF_on Sv_Grow TAIL TAINT TAINT_ENV TAINT_IF\nsyn keyword xsMacro TAINT_NOT TAINT_PROPER THING THR THREAD_CREATE\nsyn keyword xsMacro THREAD_CREATE_NEEDS_STACK THREAD_POST_CREATE\nsyn keyword xsMacro THREAD_RET_CAST THREAD_RET_TYPE\nsyn keyword xsMacro TIED_METHOD_ARGUMENTS_ON_STACK\nsyn keyword xsMacro TIED_METHOD_MORTALIZE_NOT_NEEDED TIED_METHOD_SAY\nsyn keyword xsMacro TIME64_CONFIG_H TIME64_H TM TMPNAM_R_PROTO TOO_LATE_FOR\nsyn keyword xsMacro TOO_LATE_FOR_ TOPBLOCK TOPMARK TOPi TOPl TOPm1s TOPn TOPp\nsyn keyword xsMacro TOPp1s TOPpx TOPq TOPs TOPu TOPul TOPuq TRIE TRIEC\nsyn keyword xsMacro TRIE_BITMAP TRIE_BITMAP_BYTE TRIE_BITMAP_CLEAR\nsyn keyword xsMacro TRIE_BITMAP_SET TRIE_BITMAP_TEST TRIE_CHARCOUNT\nsyn keyword xsMacro TRIE_NODEIDX TRIE_NODENUM TRIE_WORDS_OFFSET TRIE_next\nsyn keyword xsMacro TRIE_next_fail TTYNAME_R_PROTO TWO_BYTE_UTF8_TO_UNI\nsyn keyword xsMacro TYPE_CHARS TYPE_DIGITS Timeval U16SIZE U16TYPE U16_CONST\nsyn keyword xsMacro U16_MAX U16_MIN U32SIZE U32TYPE U32_ALIGNMENT_REQUIRED\nsyn keyword xsMacro U32_CONST U32_MAX U32_MAX_P1 U32_MAX_P1_HALF U32_MIN\nsyn keyword xsMacro U64SIZE U64TYPE U64_CONST U8SIZE U8TYPE U8_MAX U8_MIN\nsyn keyword xsMacro UCHARAT UINT32_MIN UINT64_C UINT64_MIN UMINUS UNDERBAR\nsyn keyword xsMacro UNICODE_ALLOW_ANY UNICODE_ALLOW_SUPER\nsyn keyword xsMacro UNICODE_ALLOW_SURROGATE UNICODE_BYTE_ORDER_MARK\nsyn keyword xsMacro UNICODE_DISALLOW_FE_FF\nsyn keyword xsMacro UNICODE_DISALLOW_ILLEGAL_INTERCHANGE\nsyn keyword xsMacro UNICODE_DISALLOW_NONCHAR UNICODE_DISALLOW_SUPER\nsyn keyword xsMacro UNICODE_DISALLOW_SURROGATE\nsyn keyword xsMacro UNICODE_GREEK_CAPITAL_LETTER_SIGMA\nsyn keyword xsMacro UNICODE_GREEK_SMALL_LETTER_FINAL_SIGMA\nsyn keyword xsMacro UNICODE_GREEK_SMALL_LETTER_SIGMA\nsyn keyword xsMacro UNICODE_IS_BYTE_ORDER_MARK UNICODE_IS_FE_FF\nsyn keyword xsMacro UNICODE_IS_NONCHAR UNICODE_IS_REPLACEMENT\nsyn keyword xsMacro UNICODE_IS_SUPER UNICODE_IS_SURROGATE UNICODE_LINE_SEPA_0\nsyn keyword xsMacro UNICODE_LINE_SEPA_1 UNICODE_LINE_SEPA_2\nsyn keyword xsMacro UNICODE_PARA_SEPA_0 UNICODE_PARA_SEPA_1\nsyn keyword xsMacro UNICODE_PARA_SEPA_2 UNICODE_PAT_MOD UNICODE_PAT_MODS\nsyn keyword xsMacro UNICODE_REPLACEMENT UNICODE_SURROGATE_FIRST\nsyn keyword xsMacro UNICODE_SURROGATE_LAST UNICODE_WARN_FE_FF\nsyn keyword xsMacro UNICODE_WARN_ILLEGAL_INTERCHANGE UNICODE_WARN_NONCHAR\nsyn keyword xsMacro UNICODE_WARN_SUPER UNICODE_WARN_SURROGATE UNIOP UNIOPSUB\nsyn keyword xsMacro UNISKIP UNI_DISPLAY_BACKSLASH UNI_DISPLAY_ISPRINT\nsyn keyword xsMacro UNI_DISPLAY_QQ UNI_DISPLAY_REGEX UNI_IS_INVARIANT\nsyn keyword xsMacro UNI_TO_NATIVE UNLESS UNLESSM UNLIKELY UNLINK\nsyn keyword xsMacro UNLOCK_DOLLARZERO_MUTEX UNTIL USE USE_64_BIT_ALL\nsyn keyword xsMacro USE_64_BIT_INT USE_64_BIT_RAWIO USE_64_BIT_STDIO\nsyn keyword xsMacro USE_BSDPGRP USE_DYNAMIC_LOADING USE_ENVIRON_ARRAY\nsyn keyword xsMacro USE_HASH_SEED USE_HEAP_INSTEAD_OF_STACK USE_LARGE_FILES\nsyn keyword xsMacro USE_LEFT USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE\nsyn keyword xsMacro USE_LOCALE_NUMERIC USE_PERLIO USE_REENTRANT_API\nsyn keyword xsMacro USE_SEMCTL_SEMID_DS USE_SEMCTL_SEMUN USE_STAT_BLOCKS\nsyn keyword xsMacro USE_STAT_RDEV USE_STDIO USE_STDIO_BASE USE_STDIO_PTR\nsyn keyword xsMacro USE_STRUCT_COPY USE_SYSTEM_GMTIME USE_SYSTEM_LOCALTIME\nsyn keyword xsMacro USE_THREADS USE_TM64 USE_UTF8_IN_NAMES UTF8SKIP\nsyn keyword xsMacro UTF8_ACCUMULATE UTF8_ALLOW_ANY UTF8_ALLOW_ANYUV\nsyn keyword xsMacro UTF8_ALLOW_CONTINUATION UTF8_ALLOW_DEFAULT\nsyn keyword xsMacro UTF8_ALLOW_EMPTY UTF8_ALLOW_FFFF UTF8_ALLOW_LONG\nsyn keyword xsMacro UTF8_ALLOW_NON_CONTINUATION UTF8_ALLOW_SHORT\nsyn keyword xsMacro UTF8_ALLOW_SURROGATE UTF8_CHECK_ONLY UTF8_DISALLOW_FE_FF\nsyn keyword xsMacro UTF8_DISALLOW_ILLEGAL_INTERCHANGE UTF8_DISALLOW_NONCHAR\nsyn keyword xsMacro UTF8_DISALLOW_SUPER UTF8_DISALLOW_SURROGATE\nsyn keyword xsMacro UTF8_EIGHT_BIT_HI UTF8_EIGHT_BIT_LO\nsyn keyword xsMacro UTF8_FIRST_PROBLEMATIC_CODE_POINT_FIRST_BYTE\nsyn keyword xsMacro UTF8_IS_CONTINUATION UTF8_IS_CONTINUED\nsyn keyword xsMacro UTF8_IS_DOWNGRADEABLE_START UTF8_IS_INVARIANT\nsyn keyword xsMacro UTF8_IS_NONCHAR_\nsyn keyword xsMacro UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC\nsyn keyword xsMacro UTF8_IS_START UTF8_IS_SUPER UTF8_IS_SURROGATE\nsyn keyword xsMacro UTF8_MAXBYTES UTF8_MAXBYTES_CASE UTF8_MAXLEN\nsyn keyword xsMacro UTF8_MAX_FOLD_CHAR_EXPAND UTF8_QUAD_MAX UTF8_TWO_BYTE_HI\nsyn keyword xsMacro UTF8_TWO_BYTE_HI_nocast UTF8_TWO_BYTE_LO\nsyn keyword xsMacro UTF8_TWO_BYTE_LO_nocast UTF8_WARN_FE_FF\nsyn keyword xsMacro UTF8_WARN_ILLEGAL_INTERCHANGE UTF8_WARN_NONCHAR\nsyn keyword xsMacro UTF8_WARN_SUPER UTF8_WARN_SURROGATE\nsyn keyword xsMacro UTF_ACCUMULATION_OVERFLOW_MASK UTF_ACCUMULATION_SHIFT\nsyn keyword xsMacro UTF_CONTINUATION_MARK UTF_CONTINUATION_MASK\nsyn keyword xsMacro UTF_START_MARK UTF_START_MASK UTF_TO_NATIVE UVSIZE UVTYPE\nsyn keyword xsMacro UVXf UV_DIG UV_MAX UV_MAX_P1 UV_MAX_P1_HALF UV_MIN UVf\nsyn keyword xsMacro U_32 U_I U_L U_S U_V Uid_t_f Uid_t_sign Uid_t_size\nsyn keyword xsMacro VAL_EAGAIN VAL_O_NONBLOCK VDf VERB VERTWS VOIDFLAGS\nsyn keyword xsMacro VOIDUSED VOL VTBL_amagic VTBL_amagicelem VTBL_arylen\nsyn keyword xsMacro VTBL_bm VTBL_collxfrm VTBL_dbline VTBL_defelem VTBL_env\nsyn keyword xsMacro VTBL_envelem VTBL_fm VTBL_glob VTBL_isa VTBL_isaelem\nsyn keyword xsMacro VTBL_mglob VTBL_nkeys VTBL_pack VTBL_packelem VTBL_pos\nsyn keyword xsMacro VTBL_regdata VTBL_regdatum VTBL_regexp VTBL_sigelem\nsyn keyword xsMacro VTBL_substr VTBL_sv VTBL_taint VTBL_uvar VTBL_vec\nsyn keyword xsMacro WARN_ALL WARN_ALLstring WARN_AMBIGUOUS WARN_BAREWORD\nsyn keyword xsMacro WARN_CLOSED WARN_CLOSURE WARN_DEBUGGING WARN_DEPRECATED\nsyn keyword xsMacro WARN_DIGIT WARN_EXEC WARN_EXITING WARN_GLOB\nsyn keyword xsMacro WARN_ILLEGALPROTO WARN_IMPRECISION WARN_INPLACE\nsyn keyword xsMacro WARN_INTERNAL WARN_IO WARN_LAYER WARN_MALLOC WARN_MISC\nsyn keyword xsMacro WARN_NEWLINE WARN_NONCHAR WARN_NONEstring\nsyn keyword xsMacro WARN_NON_UNICODE WARN_NUMERIC WARN_ONCE WARN_OVERFLOW\nsyn keyword xsMacro WARN_PACK WARN_PARENTHESIS WARN_PIPE WARN_PORTABLE\nsyn keyword xsMacro WARN_PRECEDENCE WARN_PRINTF WARN_PROTOTYPE WARN_QW\nsyn keyword xsMacro WARN_RECURSION WARN_REDEFINE WARN_REGEXP WARN_RESERVED\nsyn keyword xsMacro WARN_SEMICOLON WARN_SEVERE WARN_SIGNAL WARN_SUBSTR\nsyn keyword xsMacro WARN_SURROGATE WARN_SYNTAX WARN_TAINT WARN_THREADS\nsyn keyword xsMacro WARN_UNINITIALIZED WARN_UNOPENED WARN_UNPACK WARN_UNTIE\nsyn keyword xsMacro WARN_UTF8 WARN_VOID WARNshift WARNsize WEXITSTATUS WHEN\nsyn keyword xsMacro WHILE WHILEM WHILEM_A_max WHILEM_A_max_fail WHILEM_A_min\nsyn keyword xsMacro WHILEM_A_min_fail WHILEM_A_pre WHILEM_A_pre_fail\nsyn keyword xsMacro WHILEM_B_max WHILEM_B_max_fail WHILEM_B_min\nsyn keyword xsMacro WHILEM_B_min_fail WIDEST_UTYPE WIFEXITED WIFSIGNALED\nsyn keyword xsMacro WIFSTOPPED WIN32SCK_IS_STDSCK WNOHANG WORD WSTOPSIG\nsyn keyword xsMacro WTERMSIG WUNTRACED XHvTOTALKEYS XOPd_xop_class\nsyn keyword xsMacro XOPd_xop_desc XOPd_xop_name XOPd_xop_peep XOPf_xop_class\nsyn keyword xsMacro XOPf_xop_desc XOPf_xop_name XOPf_xop_peep XPUSHTARG\nsyn keyword xsMacro XPUSHi XPUSHmortal XPUSHn XPUSHp XPUSHs XPUSHu XPUSHundef\nsyn keyword xsMacro XS XSANY XSINTERFACE_CVT XSINTERFACE_CVT_ANON\nsyn keyword xsMacro XSINTERFACE_FUNC XSINTERFACE_FUNC_SET XSPROTO XSRETURN\nsyn keyword xsMacro XSRETURN_EMPTY XSRETURN_IV XSRETURN_NO XSRETURN_NV\nsyn keyword xsMacro XSRETURN_PV XSRETURN_PVN XSRETURN_UNDEF XSRETURN_UV\nsyn keyword xsMacro XSRETURN_YES XST_mIV XST_mNO XST_mNV XST_mPV XST_mPVN\nsyn keyword xsMacro XST_mUNDEF XST_mUV XST_mYES XS_APIVERSION_BOOTCHECK\nsyn keyword xsMacro XS_DYNAMIC_FILENAME XS_EXTERNAL XS_INTERNAL\nsyn keyword xsMacro XS_VERSION_BOOTCHECK XSprePUSH XTENDED_PAT_MOD XopDISABLE\nsyn keyword xsMacro XopENABLE XopENTRY XopENTRY_set XopFLAGS YADAYADA YIELD\nsyn keyword xsMacro YYEMPTY YYSTYPE_IS_DECLARED YYSTYPE_IS_TRIVIAL\nsyn keyword xsMacro YYTOKENTYPE Zero ZeroD _ _CANNOT _CC_ALNUMC_A\nsyn keyword xsMacro _CC_ALNUMC_L1 _CC_ALPHA_A _CC_ALPHA_L1 _CC_BLANK_A\nsyn keyword xsMacro _CC_BLANK_L1 _CC_CHARNAME_CONT _CC_CNTRL_A _CC_CNTRL_L1\nsyn keyword xsMacro _CC_DIGIT_A _CC_GRAPH_A _CC_GRAPH_L1 _CC_IDFIRST_A\nsyn keyword xsMacro _CC_IDFIRST_L1 _CC_LOWER_A _CC_LOWER_L1\nsyn keyword xsMacro _CC_NONLATIN1_FOLD _CC_OCTAL_A _CC_PRINT_A _CC_PRINT_L1\nsyn keyword xsMacro _CC_PSXSPC_A _CC_PSXSPC_L1 _CC_PUNCT_A _CC_PUNCT_L1\nsyn keyword xsMacro _CC_QUOTEMETA _CC_SPACE_A _CC_SPACE_L1 _CC_UPPER_A\nsyn keyword xsMacro _CC_UPPER_L1 _CC_WORDCHAR_A _CC_WORDCHAR_L1 _CC_XDIGIT_A\nsyn keyword xsMacro _CPERLarg _GNU_SOURCE\nsyn keyword xsMacro _HAS_NONLATIN1_FOLD_CLOSURE_ONLY_FOR_USE_BY_REGCOMP_DOT_C_AND_REGEXEC_DOT_C\nsyn keyword xsMacro _INC_PERL_XSUB_H _PERLIOL_H _PERLIO_H _PERL_OBJECT_THIS\nsyn keyword xsMacro _REGEXP_COMMON _RXf_PMf_CHARSET_SHIFT _RXf_PMf_SHIFT_NEXT\nsyn keyword xsMacro _SOCKADDR_LEN _STDIO_H _STDIO_INCLUDED _V _XPVCV_COMMON\nsyn keyword xsMacro _XPV_HEAD __Inc__IPerl___ __PATCHLEVEL_H_INCLUDED__\nsyn keyword xsMacro __STDIO_LOADED __attribute__deprecated__\nsyn keyword xsMacro __attribute__format__ __attribute__format__null_ok__\nsyn keyword xsMacro __attribute__malloc__ __attribute__nonnull__\nsyn keyword xsMacro __attribute__noreturn__ __attribute__pure__\nsyn keyword xsMacro __attribute__unused__ __attribute__warn_unused_result__\nsyn keyword xsMacro __filbuf __flsbuf __perlapi_h__ _config_h_ _exit _filbuf\nsyn keyword xsMacro _flsbuf _isQUOTEMETA _stdopen _swab_16_ _swab_32_\nsyn keyword xsMacro _swab_64_ aTHXo aTHXo_ aTHXx aTHXx_ abort accept access\nsyn keyword xsMacro anchored_end_shift anchored_offset anchored_substr\nsyn keyword xsMacro anchored_utf8 asctime assert assert_not_ROK\nsyn keyword xsMacro assert_not_glob atoll bcmp bind blk_eval blk_format\nsyn keyword xsMacro blk_gimme blk_givwhen blk_loop blk_oldcop blk_oldmarksp\nsyn keyword xsMacro blk_oldpm blk_oldscopesp blk_oldsp blk_sub blk_u16 boolSV\nsyn keyword xsMacro cBINOP cBINOPo cBINOPx cBOOL cCOP cCOPo cCOPx cGVOP_gv\nsyn keyword xsMacro cGVOPo_gv cGVOPx_gv cLISTOP cLISTOPo cLISTOPx cLOGOP\nsyn keyword xsMacro cLOGOPo cLOGOPx cLOOP cLOOPo cLOOPx cPADOP cPADOPo\nsyn keyword xsMacro cPADOPx cPMOP cPMOPo cPMOPx cPVOP cPVOPo cPVOPx cSVOP\nsyn keyword xsMacro cSVOP_sv cSVOPo cSVOPo_sv cSVOPx cSVOPx_sv cSVOPx_svp\nsyn keyword xsMacro cUNOP cUNOPo cUNOPx chdir check_end_shift\nsyn keyword xsMacro check_offset_max check_offset_min check_substr check_utf8\nsyn keyword xsMacro child_offset_bits chmod chsize ckDEAD ckWARN ckWARN2\nsyn keyword xsMacro ckWARN2_d ckWARN3 ckWARN3_d ckWARN4 ckWARN4_d ckWARN_d\nsyn keyword xsMacro close closedir connect cop_hints_2hv cop_hints_fetch_pv\nsyn keyword xsMacro cop_hints_fetch_pvn cop_hints_fetch_pvs\nsyn keyword xsMacro cop_hints_fetch_sv cophh_2hv cophh_copy cophh_delete_pv\nsyn keyword xsMacro cophh_delete_pvn cophh_delete_pvs cophh_delete_sv\nsyn keyword xsMacro cophh_fetch_pv cophh_fetch_pvn cophh_fetch_pvs\nsyn keyword xsMacro cophh_fetch_sv cophh_free cophh_new_empty cophh_store_pv\nsyn keyword xsMacro cophh_store_pvn cophh_store_pvs cophh_store_sv crypt\nsyn keyword xsMacro ctermid ctime cv_ckproto cx_type cxstack cxstack_ix\nsyn keyword xsMacro cxstack_max dATARGET dAX dAXMARK dEXT dEXTCONST dITEMS\nsyn keyword xsMacro dJMPENV dMARK dMULTICALL dMY_CXT dMY_CXT_INTERP\nsyn keyword xsMacro dMY_CXT_SV dNOOP dORIGMARK dPOPPOPiirl dPOPPOPnnrl\nsyn keyword xsMacro dPOPPOPssrl dPOPTOPiirl dPOPTOPiirl_nomg\nsyn keyword xsMacro dPOPTOPiirl_ul_nomg dPOPTOPnnrl dPOPTOPnnrl_nomg\nsyn keyword xsMacro dPOPTOPssrl dPOPXiirl dPOPXiirl_ul_nomg dPOPXnnrl\nsyn keyword xsMacro dPOPXssrl dPOPiv dPOPnv dPOPnv_nomg dPOPqv dPOPss dPOPuqv\nsyn keyword xsMacro dPOPuv dSAVEDERRNO dSAVE_ERRNO dSP dTARG dTARGET\nsyn keyword xsMacro dTARGETSTACKED dTHR dTHX dTHXa dTHXo dTHXoa dTHXs dTHXx\nsyn keyword xsMacro dTOPiv dTOPnv dTOPqv dTOPss dTOPuqv dTOPuv dUNDERBAR dVAR\nsyn keyword xsMacro dXSARGS dXSFUNCTION dXSI32 dXSTARG dXSUB_SYS deprecate\nsyn keyword xsMacro djSP do_open drand48 dup dup2 endgrent endhostent\nsyn keyword xsMacro endnetent endprotoent endpwent endservent environ execl\nsyn keyword xsMacro execv execvp fcntl fd_set fdopen fileno float_end_shift\nsyn keyword xsMacro float_max_offset float_min_offset float_substr float_utf8\nsyn keyword xsMacro flock flockfile foldEQ_utf8 frewind fscanf fstat ftell\nsyn keyword xsMacro ftruncate ftrylockfile funlockfile fwrite1 generic_uni\nsyn keyword xsMacro generic_utf8 get_cvs getc_unlocked getegid geteuid getgid\nsyn keyword xsMacro getgrent getgrgid getgrnam gethostbyaddr gethostbyname\nsyn keyword xsMacro gethostent gethostname getlogin getnetbyaddr getnetbyname\nsyn keyword xsMacro getnetent getpeername getpid getprotobyname\nsyn keyword xsMacro getprotobynumber getprotoent getpwent getpwnam getpwuid\nsyn keyword xsMacro getservbyname getservbyport getservent getsockname\nsyn keyword xsMacro getsockopt getspnam gettimeofday getuid getw gv_AVadd\nsyn keyword xsMacro gv_HVadd gv_IOadd gv_SVadd gv_autoload4 gv_efullname3\nsyn keyword xsMacro gv_fetchmeth gv_fetchmeth_autoload gv_fetchmethod\nsyn keyword xsMacro gv_fetchmethod_flags gv_fetchpvn gv_fetchpvs\nsyn keyword xsMacro gv_fetchsv_nomg gv_fullname3 gv_init gv_stashpvs htoni\nsyn keyword xsMacro htonl htons htovl htovs hv_delete hv_delete_ent hv_exists\nsyn keyword xsMacro hv_exists_ent hv_fetch hv_fetch_ent hv_fetchs hv_iternext\nsyn keyword xsMacro hv_magic hv_store hv_store_ent hv_store_flags hv_stores\nsyn keyword xsMacro hv_undef ibcmp ibcmp_locale ibcmp_utf8 inet_addr\nsyn keyword xsMacro inet_ntoa init_os_extras init_thread_intern ioctl isALNUM\nsyn keyword xsMacro isALNUMC isALNUMC_A isALNUMC_L1 isALNUMC_LC\nsyn keyword xsMacro isALNUMC_LC_utf8 isALNUMU isALNUM_LC isALNUM_LC_utf8\nsyn keyword xsMacro isALNUM_LC_uvchr isALNUM_lazy isALNUM_lazy_if isALNUM_uni\nsyn keyword xsMacro isALNUM_utf8 isALPHA isALPHAU isALPHA_A isALPHA_L1\nsyn keyword xsMacro isALPHA_LC isALPHA_LC_utf8 isALPHA_LC_uvchr isALPHA_uni\nsyn keyword xsMacro isALPHA_utf8 isASCII isASCII_A isASCII_L1 isASCII_LC\nsyn keyword xsMacro isASCII_uni isASCII_utf8 isBLANK isBLANK_A isBLANK_L1\nsyn keyword xsMacro isBLANK_LC isBLANK_LC_uni isBLANK_LC_utf8 isBLANK_uni\nsyn keyword xsMacro isBLANK_utf8 isCHARNAME_CONT isCNTRL isCNTRL_A isCNTRL_L1\nsyn keyword xsMacro isCNTRL_LC isCNTRL_LC_utf8 isCNTRL_LC_uvchr isCNTRL_uni\nsyn keyword xsMacro isCNTRL_utf8 isDIGIT isDIGIT_A isDIGIT_L1 isDIGIT_LC\nsyn keyword xsMacro isDIGIT_LC_utf8 isDIGIT_LC_uvchr isDIGIT_uni isDIGIT_utf8\nsyn keyword xsMacro isGRAPH isGRAPH_A isGRAPH_L1 isGRAPH_LC isGRAPH_LC_utf8\nsyn keyword xsMacro isGRAPH_LC_uvchr isGRAPH_uni isGRAPH_utf8 isGV\nsyn keyword xsMacro isGV_with_GP isGV_with_GP_off isGV_with_GP_on\nsyn keyword xsMacro isIDCONT_utf8 isIDFIRST isIDFIRST_A isIDFIRST_L1\nsyn keyword xsMacro isIDFIRST_LC isIDFIRST_LC_utf8 isIDFIRST_LC_uvchr\nsyn keyword xsMacro isIDFIRST_lazy isIDFIRST_lazy_if isIDFIRST_uni\nsyn keyword xsMacro isIDFIRST_utf8 isLEXWARN_off isLEXWARN_on isLOWER\nsyn keyword xsMacro isLOWER_A isLOWER_L1 isLOWER_LC isLOWER_LC_utf8\nsyn keyword xsMacro isLOWER_LC_uvchr isLOWER_uni isLOWER_utf8 isOCTAL\nsyn keyword xsMacro isOCTAL_A isOCTAL_L1 isPRINT isPRINT_A isPRINT_L1\nsyn keyword xsMacro isPRINT_LC isPRINT_LC_utf8 isPRINT_LC_uvchr isPRINT_uni\nsyn keyword xsMacro isPRINT_utf8 isPSXSPC isPSXSPC_A isPSXSPC_L1 isPSXSPC_LC\nsyn keyword xsMacro isPSXSPC_LC_uni isPSXSPC_LC_utf8 isPSXSPC_uni\nsyn keyword xsMacro isPSXSPC_utf8 isPUNCT isPUNCT_A isPUNCT_L1 isPUNCT_LC\nsyn keyword xsMacro isPUNCT_LC_utf8 isPUNCT_LC_uvchr isPUNCT_uni isPUNCT_utf8\nsyn keyword xsMacro isSPACE isSPACE_A isSPACE_L1 isSPACE_LC isSPACE_LC_utf8\nsyn keyword xsMacro isSPACE_LC_uvchr isSPACE_uni isSPACE_utf8 isUPPER\nsyn keyword xsMacro isUPPER_A isUPPER_L1 isUPPER_LC isUPPER_LC_utf8\nsyn keyword xsMacro isUPPER_LC_uvchr isUPPER_uni isUPPER_utf8 isWARN_ONCE\nsyn keyword xsMacro isWARN_on isWARNf_on isWORDCHAR isWORDCHAR_A\nsyn keyword xsMacro isWORDCHAR_L1 isXDIGIT isXDIGIT_A isXDIGIT_L1\nsyn keyword xsMacro isXDIGIT_uni isXDIGIT_utf8 is_HORIZWS is_HORIZWS_cp\nsyn keyword xsMacro is_HORIZWS_latin1 is_HORIZWS_latin1_safe is_HORIZWS_safe\nsyn keyword xsMacro is_HORIZWS_utf8 is_HORIZWS_utf8_safe is_LAX_VERSION\nsyn keyword xsMacro is_LNBREAK is_LNBREAK_latin1 is_LNBREAK_latin1_safe\nsyn keyword xsMacro is_LNBREAK_safe is_LNBREAK_utf8 is_LNBREAK_utf8_safe\nsyn keyword xsMacro is_STRICT_VERSION is_TRICKYFOLD is_TRICKYFOLD_cp\nsyn keyword xsMacro is_TRICKYFOLD_safe is_VERTWS is_VERTWS_cp\nsyn keyword xsMacro is_VERTWS_latin1 is_VERTWS_latin1_safe is_VERTWS_safe\nsyn keyword xsMacro is_VERTWS_utf8 is_VERTWS_utf8_safe is_utf8_string_loc\nsyn keyword xsMacro isatty kBINOP kCOP kGVOP_gv kLISTOP kLOGOP kLOOP kPADOP\nsyn keyword xsMacro kPMOP kPVOP kSVOP kSVOP_sv kUNOP kill killpg\nsyn keyword xsMacro lex_stuff_pvs link listen lockf longjmp lseek lstat\nsyn keyword xsMacro mPUSHi mPUSHn mPUSHp mPUSHs mPUSHu mXPUSHi mXPUSHn\nsyn keyword xsMacro mXPUSHp mXPUSHs mXPUSHu memEQ memEQs memNE memNEs memchr\nsyn keyword xsMacro memcmp memzero mkdir mktemp my my_betoh16 my_betoh32\nsyn keyword xsMacro my_betoh64 my_betohi my_betohl my_betohn my_betohs\nsyn keyword xsMacro my_binmode my_htobe16 my_htobe32 my_htobe64 my_htobei\nsyn keyword xsMacro my_htobel my_htoben my_htobes my_htole16 my_htole32\nsyn keyword xsMacro my_htole64 my_htolei my_htolel my_htolen my_htoles\nsyn keyword xsMacro my_letoh16 my_letoh32 my_letoh64 my_letohi my_letohl\nsyn keyword xsMacro my_letohn my_letohs my_lstat my_snprintf my_sprintf\nsyn keyword xsMacro my_stat my_strlcat my_strlcpy my_vsnprintf newAV newGVgen\nsyn keyword xsMacro newHV newIO newRV_inc newSUB newSVpvn_utf8 newSVpvs\nsyn keyword xsMacro newSVpvs_flags newSVpvs_share newXSproto ntohi ntohl\nsyn keyword xsMacro ntohs opASSIGN op_getmad op_lvalue open opendir pTHX_1\nsyn keyword xsMacro pTHX_2 pTHX_3 pTHX_4 pTHX_5 pTHX_6 pTHX_7 pTHX_8 pTHX_9\nsyn keyword xsMacro pTHX_FORMAT pTHX_VALUE pTHX_VALUE_ pTHX__FORMAT\nsyn keyword xsMacro pTHX__VALUE pTHX__VALUE_ pTHXo pTHXo_ pTHXx pTHXx_ pVAR\nsyn keyword xsMacro pWARN_ALL pWARN_NONE pWARN_STD packWARN packWARN2\nsyn keyword xsMacro packWARN3 packWARN4 pad_add_name_pvs pad_findmy_pvs\nsyn keyword xsMacro pad_peg padadd_NO_DUP_CHECK padadd_OUR padadd_STATE\nsyn keyword xsMacro padadd_UTF8_NAME padnew_CLONE padnew_SAVE padnew_SAVESUB\nsyn keyword xsMacro panic_write2 pause pclose pipe popen prepare_SV_for_RV\nsyn keyword xsMacro pthread_attr_init pthread_condattr_default pthread_create\nsyn keyword xsMacro pthread_key_create pthread_keycreate\nsyn keyword xsMacro pthread_mutexattr_default pthread_mutexattr_init\nsyn keyword xsMacro pthread_mutexattr_settype putc_unlocked putenv putw\nsyn keyword xsMacro random read readdir readdir64 recv recvfrom ref\nsyn keyword xsMacro refcounted_he_fetch_pvs refcounted_he_new_pvs rename\nsyn keyword xsMacro rewinddir rmdir sTHX safecalloc safefree safemalloc\nsyn keyword xsMacro saferealloc save_aelem save_freeop save_freepv\nsyn keyword xsMacro save_freesv save_helem save_mortalizesv save_op savepvs\nsyn keyword xsMacro savesharedpvs sb_dstr sb_iters sb_m sb_maxiters\nsyn keyword xsMacro sb_oldsave sb_orig sb_rflags sb_rx sb_rxres sb_rxtainted\nsyn keyword xsMacro sb_s sb_strend sb_targ seedDrand01 seekdir select send\nsyn keyword xsMacro sendto setbuf setgid setgrent sethostent setjmp\nsyn keyword xsMacro setlinebuf setlocale setmode setnetent setprotoent\nsyn keyword xsMacro setpwent setregid setreuid setservent setsockopt setuid\nsyn keyword xsMacro setvbuf share_hek_hek sharepvn shutdown signal sleep\nsyn keyword xsMacro socket socketpair specialWARN srand48 srandom stat\nsyn keyword xsMacro stdoutf strEQ strGE strGT strLE strLT strNE strchr\nsyn keyword xsMacro strerror stringify stringify_immed strnEQ strnNE strrchr\nsyn keyword xsMacro strtoll strtoull sv_2bool sv_2iv sv_2nv sv_2pv\nsyn keyword xsMacro sv_2pv_nolen sv_2pv_nomg sv_2pvbyte_nolen\nsyn keyword xsMacro sv_2pvutf8_nolen sv_2uv sv_catpv_nomg sv_catpvn\nsyn keyword xsMacro sv_catpvn_mg sv_catpvn_nomg sv_catpvn_utf8_upgrade\nsyn keyword xsMacro sv_catpvs sv_catpvs_flags sv_catpvs_mg sv_catpvs_nomg\nsyn keyword xsMacro sv_catsv sv_catsv_mg sv_catsv_nomg sv_catxmlpvs sv_cmp\nsyn keyword xsMacro sv_cmp_locale sv_collxfrm sv_eq sv_force_normal sv_insert\nsyn keyword xsMacro sv_nolocking sv_nounlocking sv_pv sv_pvbyte sv_pvn_force\nsyn keyword xsMacro sv_pvn_force_nomg sv_pvutf8 sv_setpvs sv_setpvs_mg\nsyn keyword xsMacro sv_setref_pvs sv_setsv sv_setsv_nomg sv_taint sv_unref\nsyn keyword xsMacro sv_usepvn sv_usepvn_mg sv_utf8_upgrade\nsyn keyword xsMacro sv_utf8_upgrade_flags sv_utf8_upgrade_nomg tTHX telldir\nsyn keyword xsMacro times tmpfile tmpnam toCTRL toFOLD_uni toLOWER\nsyn keyword xsMacro toLOWER_LATIN1 toLOWER_LC toLOWER_uni toLOWER_utf8\nsyn keyword xsMacro toTITLE_uni toTITLE_utf8 toUPPER toUPPER_LATIN1_MOD\nsyn keyword xsMacro toUPPER_LC toUPPER_uni toUPPER_utf8 to_uni_fold\nsyn keyword xsMacro to_utf8_fold to_utf8_lower to_utf8_title to_utf8_upper\nsyn keyword xsMacro truncate tryAMAGICbin_MG tryAMAGICunDEREF\nsyn keyword xsMacro tryAMAGICunTARGET tryAMAGICun_MG ttyname umask uname\nsyn keyword xsMacro unlink unpackWARN1 unpackWARN2 unpackWARN3 unpackWARN4\nsyn keyword xsMacro utf8n_to_uvchr utime uvchr_to_utf8 uvuni_to_utf8 vTHX\nsyn keyword xsMacro vfprintf vtohl vtohs wait want_vtbl_bm want_vtbl_fm\nsyn keyword xsMacro what_TRICKYFOLD what_TRICKYFOLD_safe what_len_TRICKYFOLD\nsyn keyword xsMacro what_len_TRICKYFOLD_safe whichsig write xio_any xio_dirp\nsyn keyword xsMacro xiv_iv xuv_uv yystype\n\n\" Define the default highlighting.\n\" For version 5.7 and earlier: only when not done already\n\" For version 5.8 and later: only when an item doesn't have highlighting yet\nif version >= 508 || !exists(\"did_xs_syntax_inits\")\n  if version < 508\n    let did_xs_syntax_inits = 1\n    command -nargs=+ HiLink hi link <args>\n  else\n    command -nargs=+ HiLink hi def link <args>\n  endif\n\n  HiLink xsPrivate    Error\n  HiLink xsSuperseded Error\n  HiLink xsType       Type\n  HiLink xsString     String\n  HiLink xsConstant   Constant\n  HiLink xsException  Exception\n  HiLink xsKeyword    Keyword\n  HiLink xsFunction   Function\n  HiLink xsVariable   Identifier\n  HiLink xsMacro      Macro\n\n  delcommand HiLink\nendif\n\nlet b:current_syntax = \"xs\"\n\n\" vim: ts=8\n"
  },
  {
    "path": ".vim/bundle/vim-polyglot/syntax/xsl.vim",
    "content": "\" Vim syntax file\n\" Language:\tXSLT 1.0\n\" with HTML, CSS, JavaScript, PerlScript, VBScript and MSXSL extention\n\"\n\" Last Change:\t24 May 2002\n\" Filenames:\t*.xslt, *.xsl\n\" Maintainar:\tAtsushi Moriki <four@olive.freemail.ne.jp>\n\"\n\" Version: \t\t0.3.11\n\"\n\" Summary:\t\tSyntax Highlight for XSLT (with HTML and Others)\n\" Description:  Syntax Highlight for XSLT with HTML keywords. \n\"\n\"\t\t\t\tcontaining keywords\n\"\t\t\t\t\tHTML\n\"\t\t\t\t\tCSS (use css.vim)\n\"\t\t\t\t\tJavaScript (use js.vim)\n\"\t\t\t\t\tVBScript (use vb.vim)\n\"\t\t\t\t\tPerlScript (use perl.vim)\n\"\n\" Instration:\n\" \t\t\t\tother keyword highlighting\n\"\t\t\t\t\t:let b:xsl_include_html = 1\t\t\t> HTML\n\"\t\t\t\t\t:let b:xsl_include_css = 1\t\t\t> CSS\n\"\t\t\t\t\t:let b:xsl_include_javascript = 1\t> JavaScript\n\"\t\t\t\t\t:let b:xsl_include_perl = 1\t\t\t> PerlScript\n\"\t\t\t\t\t:let b:xsl_include_vbs = 1\t\t\t> VBScript\n\"\n\"\n\"include keyword setting :\n\"\tlet b:xsl_include_html = 1\t\t\t\" HTML\n\"\tlet b:xsl_include_css = 1\t\t\t\" CSS\n\"\tlet b:xsl_include_javascript = 1\t\" JavaScript\n\"\tlet b:xsl_include_perl = 1\t\t\t\" PerlScript\n\"\tlet b:xsl_include_vbs = 1\t\t\t\" VBScript\n\n\nif exists(\"b:current_syntax\")\n  finish\nendif\n\nif exists('b:Xsl_SyntaxFold_by') == ''\n\tlet b:Xsl_SyntaxFold_by=''\nendif\n\n\"let s:xml_cpo_save = &cpo\n\"let main_syntax = 'xsl'\n\"set cpo&vim\n\nsyn case match\n\n\" ERROR\nsyn match xmlErr\t +[^ \t]+ contained\n\n\" XML\nsyn cluster\txmlSyntax contains=xmlTagStart\nsyn match\txmlTagStart +<\\([!?]\\)\\@!/\\=\\(xsl\\>\\)\\@!+\n\t\t\\ nextgroup=xml_schemaElementNameSpace,xmlElementName\n\t\t\\ containedin=@xmlCss\nsyn match\txmlTagStart +</\\=\\(xsl\\>\\)\\@=+\n\t\t\\ nextgroup=xml_xslElementNameSpace\n\t\t\\ containedin=@xmlCss\n\" Element Name\nsyn match xmlElementName +[^!?/[:blank:]>=0-9,][^!?/[:blank:]>=,]*\\>+\n\t\t\\ contained\n\t\t\\ nextgroup=xmlTagEnd,xmlAttNameStyle,xmlAttName\n\t\t\\ skipwhite skipempty\n\t\t\\ contains=xml_htmlTagName\n\n\n\" Attribute Name\nsyn match\txmlAttName +[^!?><=[:blank:]0-9][^!?><=[:blank:]]*+ contained nextgroup=xmlAttEqual skipwhite skipempty contains=xml_htmlAttName,xmlAttNameNs\n\nsyn match\txmlAttName +[^!?><=[:blank:]0-9][^!?><=[:blank:]]*+ contained nextgroup=xmlAttEqual skipwhite skipempty contains=xml_htmlAttName,xmlAttNameNs\n\nsyn match\txmlAttNameNs +[^!?><=[:blank:]0-9][^!?><=:[:blank:]]*:+ contained nextgroup=xmlAttName\n\nsyn match\txmlAttNameNs +\\<\\(xml\\):+ contained nextgroup=xml_reserveAttName_inXmlElement contains=xmlAttNameNsHl_xmlReserve\nsyn match\txml_reserveAttName_inXmlElement +[^><=[:blank:]]\\++ contained nextgroup=xmlAttEqual contains=xmlAttNameHl skipwhite skipempty\n\nsyn match\txmlAttNameNsHl_xmlReserve +\\<xml\\>+ contained\n\nhi link xmlAttNameNsHl_xmlReserve Type\n\nsyn match\txmlAttNameNs +\\<\\(xsl\\|msxsl\\|saxon\\|xt\\):+ contained nextgroup=xml_xslAttName_inXmlElement contains=xmlAttNameNsHl_xsl\nsyn match\txmlAttNameNsHl_xsl +\\<\\(xsl\\|msxsl\\|saxon\\|xt\\)\\>+ contained\nhi link xmlAttNameNsHl_xsl Exception\n\nsyn match\txml_xslAttName_inXmlElement +[^><=[:blank:]]\\++ contained nextgroup=xmlAttEqual contains=xml_xslAttNameHl skipwhite skipempty\n\nsyn match\txmlAttName +xmlns:[^!?><=[:blank:]0-9][^!?><=:[:blank:]]*+ contained nextgroup=xmlAttEqual skipwhite skipempty contains=xmlns_xsl\nsyn match\txmlns_xsl +xmlns:xsl+ contained\n\nsyn keyword\txmlAttNameHl attribute lang link space\n\n\nsyn match\txmlAttNameStyle +style+ contained nextgroup=xmlAttEqualStyle skipwhite skipempty contains=xml_htmlAttName\n\n\" '='\nsyn match\txmlAttEqual +=+ contained nextgroup=xmlAttValue skipwhite skipempty\n\" Attribute Value\nsyn region\txmlAttValue\n\t\t\\ matchgroup=xmlAttValueQuotS start=+\\z([\"']\\)+rs=e\n\t\t\\ matchgroup=xmlAttValueQuotE end=+\\z1+re=s\n\t\t\\ nextgroup=xmlTagEnd,xmlAttNameStyle,xmlAttName\n\t\t\\ contained skipwhite skipempty keepend\n\t\t\\ contains=xmlAttValueErr,stringContXpath,xmlAttValueKeyword,xmlAttValueKeyword_id,xmlAttValueKeyword_class\n\n\n\n\" XSL\nsyn match\txml_xslElementNameSpace +\\(xsl\\|msxsl\\|saxon\\|xt\\):+he=e-1\n\t\t\\ contained nextgroup=xml_xslElementName\nsyn match\txml_xslElementName +[a-z0-9-]\\++\n\t\t\\ contained\n\t\t\\ nextgroup=xmlTagEnd,xml_xslAttName,xml_xslAttNameXPath\n\t\t\\ contains=xml_xslElementLocalName\n\t\t\\ skipwhite skipempty\n\nsyn match\txml_xslAttName +[^><=[:blank:]]\\++ contained nextgroup=xml_xslAttEqual contains=xml_xslAttNameHl skipwhite skipempty\nsyn match\txml_xslAttEqual +=+ contained nextgroup=xml_xslAttValue skipwhite skipempty\n\nsyn match\txml_xslAttNameXPath +\\(count\\|select\\|test\\|match\\)+ contained nextgroup=xml_xslAttEqualXPath contains=xml_xslAttNameHl skipwhite skipempty\nsyn match\txml_xslAttEqualXPath +=+ contained nextgroup=xml_xslAttValueXPath skipwhite skipempty\n\nsyn region\txml_xslAttValue\n\t    \\ matchgroup=xmlAttValueQuotS start=+\\z([\"']\\)+rs=e\n\t    \\ matchgroup=xmlAttValueQuotE end=+\\z1+re=s\n\t    \\ contained\n\t    \\ nextgroup=xmlTagEnd,xml_xslAttName,xml_xslAttNameXPath skipwhite skipempty keepend\n\t    \\ contains=xmlAttValueErr,stringContXpath,xml_xslAttValueKeyword\n\nsyn region\txml_xslAttValueXPath\n\t    \\ matchgroup=xmlAttValueQuotS start=+\\z([\"']\\)+rs=e\n\t    \\ matchgroup=xmlAttValueQuotE end=+\\z1+re=s\n\t    \\ contained\n\t    \\ nextgroup=xmlTagEnd,xml_xslAttName,xml_xslAttNameXPath\n\t    \\ skipwhite skipempty keepend\n\t    \\ contains=@xpaths\n\n\n\" TAG END\nsyn match\txmlTagEnd +/\\=>+ contained\n\n\n\"XSL TAG \"{{{\nsyn match\txml_xslElementLocalName contained +\\(:\\)\\@<=\\(apply-imports\\|apply-templates\\|attribute-set\\|attribute\\)+\nsyn match\txml_xslElementLocalName contained +\\(:\\)\\@<=\\(call-template\\|choose\\|comment\\|copy-of\\|copy\\|decimal-format\\|element\\)\\>+\nsyn match\txml_xslElementLocalName contained +\\(:\\)\\@<=\\(fall-back\\|for-each\\|if\\|-\\@<!import\\|include\\|key\\)\\>+\nsyn match\txml_xslElementLocalName contained +\\(:\\)\\@<=\\(message\\|namespace\\(-alias\\)\\=\\|number\\|otherwise\\|output\\)\\>+\nsyn match\txml_xslElementLocalName contained +\\(:\\)\\@<=\\(-\\@<!param\\|preserve-space\\|processing\\(-instruction\\)\\=\\|sort\\|strip-space\\)\\>+\nsyn match\txml_xslElementLocalName contained \"\\(:\\)\\@<=\\(stylesheet\\|-\\@<!template\\|text\\|transform\\|value-of\\|variable\\)\\>\"\nsyn match\txml_xslElementLocalName contained \"\\(:\\)\\@<=\\(when\\|with-param\\)\\>\"\n\n\" MSXSL Extention\nsyn match\txml_xslElementLocalName contained \"\\(:\\)\\@<=\\(script\\)\\>\"\n\n\"}}}\n\n\" XSL Attribute \"{{{\nsyn match\txml_xslAttNameHl contained +\\<\\(case-\\(order\\>\\)\\=\\|count\\>\\|data-\\(type\\>\\)\\=\\|disable-\\(output-\\(escaping\\>\\)\\=\\)\\=\\|decimal-\\(separator\\>\\)\\=\\|digit\\>\\)+\nsyn match\txml_xslAttNameHl contained +\\<\\(elements\\|encoding\\|from\\|format\\|grouping-\\(separator\\|size\\)\\|href\\)\\>+\nsyn match\txml_xslAttNameHl contained +\\<\\(id\\|indent\\|infinity\\|lang\\|letter-value\\|level\\|match\\|method\\|mode\\|minus-sign\\)\\>+\nsyn match\txml_xslAttNameHl contained +\\<\\(namespace\\|name\\|NaN\\|order\\)\\>+\nsyn match\txml_xslAttNameHl contained +\\<\\(omit\\(-xml\\(-declaration\\)\\=\\)\\=\\|pattern-separator\\|percent\\|per-mille\\|priority\\)\\>+\nsyn match\txml_xslAttNameHl contained +\\<\\(select\\|stylesheet-prefix\\|test\\|terminate\\|use-attribute-set\\|use\\|version\\|zero-digit\\)\\>+\nsyn match\txml_xslAttNameHl contained +\\<\\(extension-element-prefixes\\|exclude-result-prefixes\\)\\>+\nsyn match\txml_xslAttNameHl contained +\\<cdata-\\(section-\\(elements\\>\\)\\=\\)\\=+\nsyn match\txml_xslAttNameHl contained +\\(standalone\\>\\|doctype-\\(public\\>\\|system\\>\\)\\=\\|media-\\(type\\>\\)\\=\\)+\n\n\" MSXSL Extension\nsyn match\txml_xslAttNameHl contained +\\<language\\>+\nsyn match\txml_xslAttNameHl contained +implements-prefix+\n\" XML Name Space\nsyn match\txml_xslAttNameHl contained +\\<\\(xmlns:\\)+\nsyn match\txml_xslAttNameHl contained +\\<\\(xmlns:\\(xsl\\|msxsl\\|saxon\\|xt\\)\\)\\>+\n\n \"}}}\n\n\" XPath \"{{{\nsyn cluster\txpaths contains=xmlAttValueErr,xpathFilter,xpathBracket,xpathString,xpathFunction,xpathOperand,xpathAxis,xpathVariable,xpathNumber\n\"\nsyn region\tstringContXpath matchgroup=stringContXpathBracket start=+{+ end=+}+ contained contains=@xpaths\n\nsyn region\txpathFilter transparent matchgroup=xpathFilterBracket start=+\\[+ end=+\\]+ contained contains=@xpaths\n\nsyn region\txpathBracket transparent matchgroup=xpathBracketBracket start=+(+ end=+)+ contained contains=@xpaths\n\nsyn region\txpathString start=+\\z([\"']\\)+ end=+\\z1+ keepend contained contains=xmlAttValueErr,@xmlRef\n\nsyn match\txpathVariable +\\$[^!\"#$%&'()=~^|\\\\{}\\[\\]`@\\:;+*?/<>,.[:blank:]]\\++ contained\nsyn match\txpathNumber +\\([^!\"#$%&'()=~^|\\\\{}\\[\\]`@\\:;+*?/<>,.[:blank:]]-\\)\\@<!\\<[0-9]\\+\\>+ contained\nhi def link xpathNumber Number\n \"}}}\n\" XPath Function \"{{{\nsyn region\txpathFunction matchgroup=xpathFunctionName transparent contains=@xpaths contained end=+)+\n\t    \\ start=+\\(contains\\|format-number\\|substring-before\\|substring-after\\|substring\\|local-name\\|namespace-uri\\|normalize-space\\|starts-with\\|string-length\\|string\\)(+\nsyn region\txpathFunction matchgroup=xpathFunctionName transparent contains=@xpaths contained end=+)+\n\t    \\ start=+\\(element-available\\|function-available\\|generate-id\\|system-property\\|unparsed-entity-uri\\|processing-instruction\\|comment\\|node\\|text\\)(+\nsyn region\txpathFunction matchgroup=xpathFunctionName transparent contains=@xpaths contained end=+)+\n\t    \\ start=+\\(count\\|document\\|key\\|id\\|last\\|name\\|position\\|concat\\|translate\\|boolean\\|false\\|lang\\|not\\|true\\|ceiling\\|floor\\|number\\|round\\|sum\\|current\\)(+\n\n\" \"}}}\n\" XPath Axis \"{{{\nsyn match\txpathAxis transparent +[a-z-]\\+::+ contains=xpathAxisName contained\nsyn match\txpathAxisName +\\<\\(ancestor\\(-or-self\\)\\=\\|attribute\\|child\\|descendant\\(-or-self\\)\\=\\)+ contained\nsyn match\txpathAxisName +\\<\\(following\\(-sibling\\)\\=\\|namespace\\|parent\\|preceding\\(-sibling\\)\\=\\|self\\)+ contained\n\n \"}}}\n\" XPath Operand \"{{{\nsyn match\txpathOperand contained +\\([/]\\)\\@<!\\<\\(div\\|or\\|and\\|mod\\)\\>\\([/]\\)\\@!+\nsyn match\txpathOperand contained +\\([^ !='\"<>\\[($&]\\@<!-[^ !='\"<>\\[($&]\\@!\\|[+=>]\\|&lt;\\|>=\\|&lt;=\\|!=\\||\\)+\nsyn match\txpathOperand contained +\\(\\s*[^/|\\]\\[\"@]\\)\\@<=\\(\\([^\"':/\\[\\]]\\)\\@=\\s*\\*\\)\\([/\\[]\\)\\@!+\n\"}}}\n\n\" Attribute Value Highlight \"{{{\nsyn match\txmlAttValueKeyword +\\(\\<xmlns:xsl=\"\\)\\@<=http://www\\.w3\\.org\\(/1999\\(/XSL\\(/Transform\\)\\=\\)\\=\\)\\=\\>+ contained\nsyn match\txml_xslAttValueKeyword +\\(\\<xmlns:xsl=\"\\)\\@<=http://www\\.w3\\.org\\(/1999\\(/XSL\\(/Transform\\)\\=\\)\\=\\)\\=\\>+ contained\nsyn match\txml_xslAttValueKeyword +[\"']\\@<=\\(yes\\|no\\|true\\|false\\)\\>+ contained\nsyn match\txml_xslAttValueKeyword +\\(\\<order\\s*=\\s*[\"']\\)\\@<=\\(ascending\\|descending\\)\\>+ contained\nsyn match\txml_xslAttValueKeyword +\\(\\<method\\s*=\\s*[\"']\\)\\@<=\\(xml\\|html\\|text\\)\\>+ contained\nsyn match\txml_xslAttValueKeyword +\\(\\<encoding\\s*=\\s*[\"']\\)\\@<=\\(UTF-\\(8\\|16\\|32\\)\\|Shift_JIS\\|iso-2022-jp\\|EUC-JP\\)\\>+ contained\nsyn match\txml_xslAttValueKeyword +\\(\\<language\\s*=\\s*[\"']\\)\\@<=\\(\\(Java\\|Perl\\|VB\\)Script\\)\\>+ contained\n\nhi xmlAttValueKeyword gui=bold\nhi xml_xslAttValueKeyword gui=bold\n\nsyn match\txmlAttValueKeyword_class +\\(\\<class=\"\\)\\@<=[^\"]*\\>+ contained contains=stringContXpath\nsyn match\txmlAttValueKeyword_id +\\(\\<id=\"\\)\\@<=[^\"]*\\>+ contained contains=stringContXpath\n\nhi def link xmlAttValueKeyword_class Define\nhi def link xmlAttValueKeyword_id Define\n \"}}}\n\n\" XML ProcessingInstructon \"{{{\nsyn region\txmlProcessing\n\t\t\t\\ matchgroup=xmlProcessingMark start=+<?+\n\t\t\t\\ end=+\\(?>\\|<\\@=\\)+\n\t\t\t\\ contains=xmlProcessingElement keepend\nsyn match\txmlProcessingElementOver\t+[^ ]\\++ nextgroup=xmlProcessingAttName contained\nsyn match\txmlProcessingElement\t\t+\\(xml-stylesheet\\|xml\\)+ nextgroup=xmlProcessingAtt contained\nsyn match\txmlProcessingAtt\t\t\t+\\(\\s\\|\\n\\)\\+[a-zA-Z]\\w*\\s*=+ contained contains=xmlProcessingAttName nextgroup=xmlProcessingAttValue\nsyn match\txmlProcessingAttName\t\t+\\(encoding\\|href\\|version\\|type\\)\\s*=+he=e-1 contained nextgroup=xmlProcessingAttValue\nsyn match\txmlProcessingAttriValue\t\t+\\(\"[^\"]*\"\\|'[^']*'\\)+ contained nextgroup=xmlProcessingAtt\n \"}}}\n\n\" XML \"{{{\nsyn region\txmlRef start=+&+ end=+;+ keepend containedin=ALL oneline contains=xmlRefDef,xmlRefString,xmlRefNumber\nsyn match\txmlRefNumber +\\(#x[0-9a-fA-F]\\{,4}\\|#\\d\\+\\)+ contained\nsyn match\txmlRefString +[a-zA-Z]\\++ contained\nsyn match\txmlRefDef +\\<\\(amp\\|quot\\|apos\\|lt\\|gt\\)\\>+ contained\n \"}}}\n\n\n\n\" xml comment \"{{{\nsyn region\txmlComment matchgroup=xmlComment start=+<!--+ end=+-->+\n\t    \\ contains=xmlTodo,xmlCommentNotice,xmlCommentErr\n\t    \\ fold extend keepend\nsyn match\txmlCommentErr +\\(--\\(>\\)\\@!\\)+ contained\nsyn match\txmlTodo +\\<TODO\\>+ contained\nsyn match\txmlCommentNotice +\\(\\s\\)\\@<=:[^:-]*:+ contained\nsyn region\txmlCdata matchgroup=xmlCdataMark start=+<!\\[CDATA\\[+ end=+]]>+ keepend fold containedin=@xmlCss\nsyn region\txmlStyle_cdata matchgroup=xmlCdataMark start=+<!\\[CDATA\\[+ end=+]]>+ keepend fold contained contains=@xmlCss\nsyn region\txmlStyle_cdata matchgroup=xmlCdataMark start=+<!\\[CDATA\\[+ end=+]]>+ keepend fold contained contains=@xmlCss\n \"}}}\n\n\nif exists('b:xsl_include_html')\n\t\" HTML Tag Name {{{\n\t\" -- tag name\n\tsyn match xml_htmlTagName contained +\\<\\(xmp\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(var\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(ul\\|u\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(tt\\|tr\\|title\\|thead\\|th\\|tfoot\\|textarea\\|td\\|tbody\\|table\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(sup\\|sub\\|style\\|strong\\|strike\\|span\\|spacer\\|small\\|select\\|script\\|samp\\|s\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(q\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(pre\\|param\\|p\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(option\\|optgroup\\|ol\\|object\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(noscript\\|nolayer\\|noframes\\|nobr\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(meta\\|menu\\|marquee\\|map\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(link\\|li\\|legend\\|layer\\|label\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(kbd\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(isindex\\|ins\\|input\\|img\\|ilayer\\|iframe\\|i\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(html\\|hr\\|head\\|h[1-6]\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(frameset\\|frame\\|form\\|font\\|fieldset\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(em\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(dt\\|dl\\|div\\|dir\\|dfn\\|del\\|dd\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(colgroup\\|col\\|code\\|cite\\|center\\|caption\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(button\\|br\\|body\\|blockquote\\|blink\\|big\\|bdo\\|basefont\\|base\\|b\\)\\>+\n\tsyn match xml_htmlTagName contained +\\<\\(area\\|applet\\|address\\|acronym\\|abbr\\|a\\)\\>+\n\n\t\" -- att name\n\tsyn match\txml_htmlAttName contained +\\<\\(wrap\\|width\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(vspace\\|vlink\\|visibility\\|version\\|valuetype\\|value\\|valign\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(usemap\\|url\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(type\\|topmargin\\|top\\|text\\|target\\|tabindex\\|title\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(summary\\|style\\|start\\|standby\\|src\\|span\\|size\\|shape\\|selected\\|scrolling\\|scope\\|scheme\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(rules\\|rowspan\\|rows\\|rightmargin\\|rev\\|rel\\|readonly\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(prompt\\|profile\\|pagey\\|pagex\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(object\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(nowrap\\|noshade\\|noresize\\|nohref\\|name\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(multiple\\|method\\|maxlength\\|marginwidth\\|marginheight\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(lowsrc\\|longdesc\\|link\\|leftmargin\\|left\\|language\\|lang\\|label\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(ismap\\|id\\|id\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(hspace\\|hreflang\\|height\\|headers\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(gutter\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(frameborder\\|frame\\|for\\|face\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(enctype\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(disabled\\|dir\\|defer\\|declare\\|datetime\\|data\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(coords\\|content\\|compact\\|colspan\\|cols\\|color\\|codetype\\|codebase\\|code\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(clip\\|clear\\|classid\\|class\\|cite\\|checked\\|charset\\|charoff\\|char\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(cellspacing\\|cellpadding\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(bottommargin\\|bordercolor\\|border\\|bgcolor\\|below\\|background\\)\\>+\n\tsyn match\txml_htmlAttName contained +\\<\\(axis\\|archive\\|alt\\|alink\\|align\\|action\\|accesskey\\|accept\\|above\\|abbr\\)\\>+\n\n\tsyn match\txml_htmlAttName contained \"\\<accept-charset\\>\"\n\tsyn match\txml_htmlAttName contained \"\\<z-index\\>\"\n\tsyn match\txml_htmlAttName contained \"\\<http-equiv\\>\"\n\t\" }}}\nendif\n\n\" CSS \"{{{\n\" include css.vim\nif exists('b:xsl_include_css')\n\tsyn include\t@xmlCss syntax/css.vim\n\tunlet b:current_syntax\n\t\"syn cluster\tinnerCss contains=cssDefinition\n\tsyn cluster\tinnerCss contains=cssComment,cssLength,cssColor,cssURL,cssImportant,cssError,cssString\n\t\"syn cluster\tinnerCss contains=css.*Attr,css.*Properties,cssComment,cssLength,cssColor,cssURL,cssImportant,cssError,cssString\n\n\t\" inner html <style> - </style>\n\tsyn region\tcssStyle start=+<style+ keepend end=+</style>+ contains=@xmlSyntax,xmlComment,xmlStyle_cdata,@xmlCss\n\n\t\" CSS in \"style\" Attribute Value\n\t\" '='\n\tsyn match\txmlAttEqualStyle +=\\_\\s*+ contained nextgroup=xmlAttValueStyle skipwhite\n\n\t\" style value REGION\n\tsyn region\txmlAttValueStyle start=+\\z(\"\\)+ keepend end=+\\z1\\_\\s*+\n\t\t\t\\ contains=xmlAttInnerCss\n\t\t\t\\ nextgroup=xmlTagEnd,xmlAttNameStyle,xmlAttName\n\t\t\t\\ skipwhite contained\n\n\t\" value\n\tsyn match\txmlAttInnerCss +[^\"]*+ms=s,me=e-1 contained contains=xmlAttValueErr,stringContXpath,@innerCss\nendif\n\"}}}\n\n\" Script {{{\n\" JavaScript\nif exists('b:xsl_include_javascript')\n\tsyn include\t@xmlJavaScript syntax/javascript.vim\n\tunlet b:current_syntax\n\tsyn region\tjavaScript start=+<\\z(\\(msxsl:\\)\\=script\\)+\n\t\t\t\\ keepend\n\t\t\t\\ end=+</\\z1\\s*>+\n\t\t\t\\ contains=@xmlSyntax,xmlComment,javaScript_cdata,@xmlJavaScript\nendif\n\n\" PerlScript\nif exists('b:xsl_include_perl')\n\tsyn include\t@xmlPerlScript syntax/perl.vim\n\tif exists('b:current_syntax')\n\t\tunlet b:current_syntax\n\tendif\n\tsyn region\tjavaScript\n\t\t    \\ start=+<\\z(\\(msxsl:\\)\\=script\\)\\_[^>]*language=\"PerlScript\"+\n\t\t    \\ keepend\n\t\t    \\ end=+</\\z1\\s*>+\n\t\t    \\ contains=@xmlSyntax,xmlComment,perlScript_cdata,@xmlPerlScript\nendif\n\n\n\" VBScript\nif exists('b:xsl_include_vbs')\n\tsyn include\t@xmlVBScript $VIMRUNTIME/syntax/vb.vim\n\tunlet b:current_syntax\n\tsyn region\tjavaScript start=+<\\z(\\(msxsl:\\)\\=script\\)\\_[^>]*language=\"VBScript\"+\n\t\t    \\ keepend\n\t\t    \\ end=+</\\z1\\s*>+\n\t\t    \\ contains=@xmlSyntax,xmlComment,VBScript_cdata,@xmlVBScript\nendif\n\n\" }}}\n\nsyn match\txmlAttValueErr +\\(<\\|&\\([^&'\"><]\\+;\\)\\@!\\)+ contained\n\n\" FOLD \"{{{\n\"\nif &foldmethod == \"syntax\" && &foldenable == 1\n\n    \" let b:Xsl_SyntaxFold_by = { \"xsl\" | \"full\" | \"off\" }\n\n\t\" only <xsl:xxxx .. >\n    if exists('b:Xsl_SyntaxFold_by') && b:Xsl_SyntaxFold_by == 'xsl'\n\n\t\tsyn region\txmlFold\n\t\t\t\t\\ start=+<\\z(\\(msxsl\\|xsl\\):\\(stylesheet\\>\\)\\@![^ /!?><\"']\\+\\)\\(\\_[^><=]\\+=\\(\\_[\"]\\_[^\"]*\"\\|\\_[']\\_[^']*'\\)\\)*\\_\\s*>+\n\t\t\t\t\\ skip=+<!--\\_.\\{-}-->+\n\t\t\t\t\\ end=+</\\z1\\s*>+\n\t\t\t\t\\ fold keepend transparent extend\n\t\t\t\t\\ contains=xmlFold,xmlTagStart,cssStyle,javaScript,xmlComment,xmlCdata\n\n\t\" all Tag\n    elseif exists('b:Xsl_SyntaxFold_by') && b:Xsl_SyntaxFold_by == 'full'\n\n\t\tsyn region\txmlFold\n\t\t\t\t\\ start=+\\(^\\)\\@!<\\z([^ /!?<>\"']\\+\\)+\n\t\t\t\t\\ end=+</\\z1\\_\\s\\{-}>+\n\t\t\t\t\\ skip=+<!--\\_.\\{-}-->+\n\t\t\t\t\\ matchgroup=xmlEndTag end=+/>+\n\t\t\t\t\\ contains=xmlComment,xmlFold,xmlTagStart,cssStyle,javaScript,xmlCdata\n\t\t\t\t\\ fold keepend transparent extend\n\n\t\"\n\telseif exists('b:Xsl_SyntaxFold_by') && b:Xsl_SyntaxFold_by == 'off'\n\n\t\tsyn clear xmlFold\n\n\telse\n\n\t\tsyn region   xmlFold\n\t\t\t\t\\ start=+\\(^\\)\\@!<\\z([^ /!?<>\"']\\+\\)+\n\t\t\t\t\\ end=+</\\z1\\_\\s\\{-}>+\n\t\t\t\t\\ skip=+<!--\\_.\\{-}-->+\n\t\t\t\t\\ end=+/>+\n\t\t\t\t\\ contains=xmlComment,xmlFold,xmlTagStart,cssStyle,javaScript,xmlCdata\n\t\t\t\t\\ fold keepend transparent extend\n\n    endif\n\nendif\n\"}}}\n\n\" DTD \"{{{\n\" include dtd.vim\nsyn region\txmlDocType matchgroup=xmlDocTypeDecl\n\t\\ start=\"<!DOCTYPE\"he=s+2,rs=s+2 end=\">\"\n\t\\ fold\n\t\\ contains=xmlDocTypeKeyword,xmlInlineDTD,xmlString\nsyn keyword\txmlDocTypeKeyword contained DOCTYPE PUBLIC SYSTEM\nsyn region\txmlInlineDTD contained matchgroup=xmlDocTypeDecl start=\"\\[\" end=\"]\" contains=@xmlDTD\nsyn include\t@xmlDTD syntax/dtd.vim\nunlet b:current_syntax\n \"}}}\n\n\" SYNC\nsyn sync match xmlSyncDT grouphere  xmlDocType +\\_.\\(<!DOCTYPE\\)\\@=+\n\nif &foldmethod == \"syntax\" && &foldenable == 1 && b:Xsl_SyntaxFold_by != 'off'\n    syn sync match xmlSync grouphere   xmlFold  +\\_.\\(<[^ /!?<>\"']\\+\\)\\@=+\n    syn sync match xmlSync groupthere  xmlFold  +</[^ /!?<>\"']\\+>+\nendif\n\nsyn sync minlines=100\n\n\nhi def link xmlTagStart\t\t\t\t\tSpecial\nhi def link xmlElementName\t\t\t\ttype\n\nhi def link xml_xslElementNameSpace\t\tSpecial\n\nhi def link xmlTagEnd\t\t\t\t\tSpecial\n\nhi def link xmlElementName\t\t\t\tStructure\nhi def link xml_xslElementLocalName\t\tStatement\n\nhi def link xmlAttName\t\t\t\t\tSpecial\nhi def link xmlAttNameHl\t\t\t\tType\n\nhi def link xml_xslAttNameXPath\t\t\tType\n\nhi def link xmlRef\t\t\t\t\t\tType\nhi def link xmlRefString\t\t\t\tPreProc\nhi def link xmlRefNumber\t\t\t\tPreProc\nhi def link xmlRefDef\t\t\t\t\tStatement\n\nhi def link xmlProcessing\t\t\t\tMoreMsg\nhi def link xmlProcessingMark\t\t\tIdentifier\nhi def link xmlProcessingElement\t\tType\nhi def link xmlProcessingElementOver\tMoreMsg\nhi def link xmlProcessingAttName\t\tIdentifier\nhi def link xmlProcessingAttValue\t\ttype\n\nhi def link xmlTodo\t\t\t\t\t\tTodo\nhi def link xmlCommentNotice\t\t\tPreProc\n\nhi def link xmlString\t\t\t\t\tNormal\nhi def link xmlComment\t\t\t\t\tComment\nhi def link xmlCommentErr\t\t\t\tError\nhi def link xmlErr\t\t\t\t\t\tError\nhi def link xmlAttValueErr\t\t\t\tError\n\nhi def link xmlCdataMark\t\t\t\tString\nhi def link xmlCdata\t\t\t\t\tNormal\n\nhi def link xmlDocTypeDecl\t\t\t\tFunction\nhi def link xmlDocTypeKeyword\t\t\tStatement\nhi def link xmlInlineDTD\t\t\t\tFunction\n\n\"HTML\nhi def link xml_htmlTagName\t\t\t\tFunction\nhi def link xml_htmlAttName\t\t\t\tIdentifier\nhi def link xmlAttNameStyle\t\t\t\tDefine\n\n\"XSL\nhi def link xml_xslAttNameHl\t\t\tException\nhi def link xmlns_xsl\t\t\t\t\txml_xslAttNameHl\nhi def link xpathVariable\t\t\t\tIdentifier\nhi def link xpathFunctionName\t\t\tFunction\nhi def link xpathFilterBracket\t\t\tIdentifier\nhi def link xpathBracketBracket\t\t\tStatement\nhi def link xpathString\t\t\t\t\tNormal\nhi def link xpathOperand\t\t\t\tpreproc\nhi def link xpathAxisName\t\t\t\tSpecial\n\nhi def link xml_xslAttValue\t\t\t\tNormal\nhi def link xml_xslAttValuexpath\t\tString\n\nhi def link stringContXpathBracket\t\tStatement\nhi def link stringContXpath\t\t\t\tstring\n\n\"=\nhi def link xmlAttEqual\t\t\t\t\tType\nhi def link xml_xslAttEqual\t\t\t\tType\nhi def link xml_xslAttEqualXPath\t\tType\nhi def link xml_schemaAttEqual\t\t\tType\nhi def link xmlAttEqualStyle\t\t\tType\n\n\nlet b:current_syntax = \"xsl\"\n\n\"let &cpo = s:xml_cpo_save\n\"unlet s:xml_cpo_save\n\n\" vim: ts=4:sw=4\n"
  },
  {
    "path": ".vim/bundle/vim-repeat/README.markdown",
    "content": "repeat.vim\n==========\n\nIf you've ever tried using the `.` command after a plugin map, you were\nlikely disappointed to discover it only repeated the last native command\ninside that map, rather than the map as a whole.  That disappointment\nends today.  Repeat.vim remaps `.` in a way that plugins can tap into\nit.\n\nThe following plugins support repeat.vim:\n\n* [surround.vim](https://github.com/tpope/vim-surround)\n* [speeddating.vim](https://github.com/tpope/vim-speeddating)\n* [abolish.vim](https://github.com/tpope/vim-abolish)\n* [unimpaired.vim](https://github.com/tpope/vim-unimpaired)\n* [commentary.vim](https://github.com/tpope/vim-commentary)\n\nAdding support to a plugin is generally as simple as the following\ncommand at the end of your map functions.\n\n    silent! call repeat#set(\"\\<Plug>MyWonderfulMap\", v:count)\n\nInstallation\n------------\n\nIf you don't have a preferred installation method, I recommend\ninstalling [pathogen.vim](https://github.com/tpope/vim-pathogen), and\nthen simply copy and paste:\n\n    cd ~/.vim/bundle\n    git clone git://github.com/tpope/vim-repeat.git\n\nContributing\n------------\n\nSee the contribution guidelines for\n[pathogen.vim](https://github.com/tpope/vim-pathogen#readme).\n\nSelf-Promotion\n--------------\n\nLike repeat.vim? Follow the repository on\n[GitHub](https://github.com/tpope/vim-repeat) and vote for it on\n[vim.org](http://www.vim.org/scripts/script.php?script_id=2136).  And if\nyou're feeling especially charitable, follow [tpope](http://tpo.pe/) on\n[Twitter](http://twitter.com/tpope) and\n[GitHub](https://github.com/tpope).\n\nLicense\n-------\n\nCopyright (c) Tim Pope.  Distributed under the same terms as Vim itself.\nSee `:help license`.\n"
  },
  {
    "path": ".vim/bundle/vim-repeat/autoload/repeat.vim",
    "content": "\" repeat.vim - Let the repeat command repeat plugin maps\n\" Maintainer:   Tim Pope\n\" Version:      1.1\n\" GetLatestVimScripts: 2136 1 :AutoInstall: repeat.vim\n\n\" Installation:\n\" Place in either ~/.vim/plugin/repeat.vim (to load at start up) or\n\" ~/.vim/autoload/repeat.vim (to load automatically as needed).\n\"\n\" License:\n\" Copyright (c) Tim Pope.  Distributed under the same terms as Vim itself.\n\" See :help license\n\"\n\" Developers:\n\" Basic usage is as follows:\n\"\n\"   silent! call repeat#set(\"\\<Plug>MappingToRepeatCommand\",3)\n\"\n\" The first argument is the mapping that will be invoked when the |.| key is\n\" pressed.  Typically, it will be the same as the mapping the user invoked.\n\" This sequence will be stuffed into the input queue literally.  Thus you must\n\" encode special keys by prefixing them with a backslash inside double quotes.\n\"\n\" The second argument is the default count.  This is the number that will be\n\" prefixed to the mapping if no explicit numeric argument was given.  The\n\" value of the v:count variable is usually correct and it will be used if the\n\" second parameter is omitted.  If your mapping doesn't accept a numeric\n\" argument and you never want to receive one, pass a value of -1.\n\"\n\" Make sure to call the repeat#set function _after_ making changes to the\n\" file.\n\"\n\" For mappings that use a register and want the same register used on\n\" repetition, use:\n\"\n\"   silent! call repeat#setreg(\"\\<Plug>MappingToRepeatCommand\", v:register)\n\"\n\" This function can (and probably needs to be) called before making changes to\n\" the file (as those typically clear v:register).  Therefore, the call sequence\n\" in your mapping will look like this:\n\"\n\"   nnoremap <silent> <Plug>MyMap\n\"   \\   :<C-U>execute 'silent! call repeat#setreg(\"\\<lt>Plug>MyMap\", v:register)'<Bar>\n\"   \\   call <SID>MyFunction(v:register, ...)<Bar>\n\"   \\   silent! call repeat#set(\"\\<lt>Plug>MyMap\")<CR>\n\nif exists(\"g:loaded_repeat\") || &cp || v:version < 700\n    finish\nendif\nlet g:loaded_repeat = 1\n\nlet g:repeat_tick = -1\nlet g:repeat_reg = ['', '']\n\n\" Special function to avoid spurious repeats in a related, naturally repeating\n\" mapping when your repeatable mapping doesn't increase b:changedtick.\nfunction! repeat#invalidate()\n    let g:repeat_tick = -1\nendfunction\n\nfunction! repeat#set(sequence,...)\n    let g:repeat_sequence = a:sequence\n    let g:repeat_count = a:0 ? a:1 : v:count\n    let g:repeat_tick = b:changedtick\n    augroup repeat_custom_motion\n        autocmd!\n        autocmd CursorMoved <buffer> let g:repeat_tick = b:changedtick | autocmd! repeat_custom_motion\n    augroup END\nendfunction\n\nfunction! repeat#setreg(sequence,register)\n    let g:repeat_reg = [a:sequence, a:register]\nendfunction\n\nfunction! repeat#run(count)\n    if g:repeat_tick == b:changedtick\n        let r = ''\n        if g:repeat_reg[0] ==# g:repeat_sequence && !empty(g:repeat_reg[1])\n            if g:repeat_reg[1] ==# '='\n                \" This causes a re-evaluation of the expression on repeat, which\n                \" is what we want.\n                let r = '\"=' . getreg('=', 1) . \"\\<CR>\"\n            else\n                let r = '\"' . g:repeat_reg[1]\n            endif\n        endif\n\n        let c = g:repeat_count\n        let s = g:repeat_sequence\n        let cnt = c == -1 ? \"\" : (a:count ? a:count : (c ? c : ''))\n        call feedkeys(r . cnt, 'n')\n        call feedkeys(s)\n    else\n        call feedkeys((a:count ? a:count : '') . '.', 'n')\n    endif\nendfunction\n\nfunction! repeat#wrap(command,count)\n    let preserve = (g:repeat_tick == b:changedtick)\n    exe 'norm! '.(a:count ? a:count : '').a:command . (&foldopen =~# 'undo' ? 'zv' : '')\n    if preserve\n        let g:repeat_tick = b:changedtick\n    endif\nendfunction\n\nnnoremap <silent> .     :<C-U>call repeat#run(v:count)<CR>\nnnoremap <silent> u     :<C-U>call repeat#wrap('u',v:count)<CR>\nif maparg('U','n') ==# ''\n    nnoremap <silent> U     :<C-U>call repeat#wrap('U',v:count)<CR>\nendif\nnnoremap <silent> <C-R> :<C-U>call repeat#wrap(\"\\<Lt>C-R>\",v:count)<CR>\n\naugroup repeatPlugin\n    autocmd!\n    autocmd BufLeave,BufWritePre,BufReadPre * let g:repeat_tick = (g:repeat_tick == b:changedtick || g:repeat_tick == 0) ? 0 : -1\n    autocmd BufEnter,BufWritePost * if g:repeat_tick == 0|let g:repeat_tick = b:changedtick|endif\naugroup END\n\n\" vim:set ft=vim et sw=4 sts=4:\n"
  },
  {
    "path": ".vim/bundle/vim-surround/README.markdown",
    "content": "surround.vim\n============\n\nSurround.vim is all about \"surroundings\": parentheses, brackets, quotes,\nXML tags, and more.  The plugin provides mappings to easily delete,\nchange and add such surroundings in pairs.\n\nIt's easiest to explain with examples.  Press `cs\"'` inside\n\n    \"Hello world!\"\n\nto change it to\n\n    'Hello world!'\n\nNow press `cs'<q>` to change it to\n\n    <q>Hello world!</q>\n\nTo go full circle, press `cst\"` to get\n\n    \"Hello world!\"\n\nTo remove the delimiters entirely, press `ds\"`.\n\n    Hello world!\n\nNow with the cursor on \"Hello\", press `ysiw]` (`iw` is a text object).\n\n    [Hello] world!\n\nLet's make that braces and add some space (use `}` instead of `{` for no\nspace): `cs]{`\n\n    { Hello } world!\n\nNow wrap the entire line in parentheses with `yssb` or `yss)`.\n\n    ({ Hello } world!)\n\nRevert to the original text: `ds{ds)`\n\n    Hello world!\n\nEmphasize hello: `ysiw<em>`\n\n    <em>Hello</em> world!\n\nFinally, let's try out visual mode. Press a capital V (for linewise\nvisual mode) followed by `S<p class=\"important\">`.\n\n    <p class=\"important\">\n      <em>Hello</em> world!\n    </p>\n\nThis plugin is very powerful for HTML and XML editing, a niche which\ncurrently seems underfilled in Vim land.  (As opposed to HTML/XML\n*inserting*, for which many plugins are available).  Adding, changing,\nand removing pairs of tags simultaneously is a breeze.\n\nThe `.` command will work with `ds`, `cs`, and `yss` if you install\n[repeat.vim](https://github.com/tpope/vim-repeat).\n\nInstallation\n------------\n\nIf you don't have a preferred installation method, I recommend\ninstalling [pathogen.vim](https://github.com/tpope/vim-pathogen), and\nthen simply copy and paste:\n\n    cd ~/.vim/bundle\n    git clone git://github.com/tpope/vim-surround.git\n\nOnce help tags have been generated, you can view the manual with\n`:help surround`.\n\nContributing\n------------\n\nSee the contribution guidelines for\n[pathogen.vim](https://github.com/tpope/vim-pathogen#readme).\n\nSelf-Promotion\n--------------\n\nLike surround.vim? Follow the repository on\n[GitHub](https://github.com/tpope/vim-surround) and vote for it on\n[vim.org](http://www.vim.org/scripts/script.php?script_id=1697).  And if\nyou're feeling especially charitable, follow [tpope](http://tpo.pe/) on\n[Twitter](http://twitter.com/tpope) and\n[GitHub](https://github.com/tpope).\n\nLicense\n-------\n\nCopyright (c) Tim Pope.  Distributed under the same terms as Vim itself.\nSee `:help license`.\n"
  },
  {
    "path": ".vim/bundle/vim-surround/doc/surround.txt",
    "content": "*surround.txt*  Plugin for deleting, changing, and adding \"surroundings\"\n\nAuthor:  Tim Pope <http://tpo.pe/>\nLicense: Same terms as Vim itself (see |license|)\n\nThis plugin is only available if 'compatible' is not set.\n\nINTRODUCTION                                    *surround*\n\nThis plugin is a tool for dealing with pairs of \"surroundings.\"  Examples\nof surroundings include parentheses, quotes, and HTML tags.  They are\nclosely related to what Vim refers to as |text-objects|.  Provided\nare mappings to allow for removing, changing, and adding surroundings.\n\nDetails follow on the exact semantics, but first, consider the following\nexamples.  An asterisk (*) is used to denote the cursor position.\n\n  Old text                  Command     New text ~\n  \"Hello *world!\"           ds\"         Hello world!\n  [123+4*56]/2              cs])        (123+456)/2\n  \"Look ma, I'm *HTML!\"     cs\"<q>      <q>Look ma, I'm HTML!</q>\n  if *x>3 {                 ysW(        if ( x>3 ) {\n  my $str = *whee!;         vllllS'     my $str = 'whee!';\n\nWhile a few features of this plugin will work in older versions of Vim,\nVim 7 is recommended for full functionality.\n\nMAPPINGS                                        *surround-mappings*\n\nDelete surroundings is *ds* .  The next character given determines the target\nto delete.  The exact nature of the target is explained in |surround-targets|\nbut essentially it is the last character of a |text-object|.  This mapping\ndeletes the difference between the \"i\"nner object and \"a\"n object.  This is\neasiest to understand with some examples:\n\n  Old text                  Command     New text ~\n  \"Hello *world!\"           ds\"         Hello world!\n  (123+4*56)/2              ds)         123+456/2\n  <div>Yo!*</div>           dst         Yo!\n\nChange surroundings is *cs* .  It takes two arguments, a target like with\n|ds|, and a replacement.  Details about the second argument can be found\nbelow in |surround-replacements|.  Once again, examples are in order.\n\n  Old text                  Command     New text ~\n  \"Hello *world!\"           cs\"'        'Hello world!'\n  \"Hello *world!\"           cs\"<q>      <q>Hello world!</q>\n  (123+4*56)/2              cs)]        [123+456]/2\n  (123+4*56)/2              cs)[        [ 123+456 ]/2\n  <div>Yo!*</div>           cst<p>      <p>Yo!</p>\n\n*ys* takes a valid Vim motion or text object as the first object, and wraps\nit using the second argument as with |cs|.  (It's a stretch, but a good\nmnemonic for \"ys\" is \"you surround\".)\n\n  Old text                  Command     New text ~\n  Hello w*orld!             ysiw)       Hello (world)!\n\nAs a special case, *yss* operates on the current line, ignoring leading\nwhitespace.\n\n  Old text                  Command     New text ~\n      Hello w*orld!         yssB            {Hello world!}\n\nThere is also *yS* and *ySS* which indent the surrounded text and place it\non a line of its own.\n\nIn visual mode, a simple \"S\" with an argument wraps the selection.  This is\nreferred to as the *vS* mapping, although ordinarily there will be\nadditional keystrokes between the v and S.  In linewise visual mode, the\nsurroundings are placed on separate lines and indented.  In blockwise visual\nmode, each line is surrounded.\n\nA \"gS\" in visual mode, known as *vgS* , behaves similarly.  In linewise visual\nmode, the automatic indenting is suppressed.  In blockwise visual mode, this\nenables surrounding past the end of the line with 'virtualedit' set (there\nseems to be no way in Vim Script to differentiate between a jagged end of line\nselection and a virtual block selected past the end of the line, so two maps\nwere needed).\n\n                                                *i_CTRL-G_s* *i_CTRL-G_S*\nFinally, there is an experimental insert mode mapping on <C-G>s and <C-S>.\nBeware that the latter won't work on terminals with flow control (if you\naccidentally freeze your terminal, use <C-Q> to unfreeze it).  The mapping\ninserts the specified surroundings and puts the cursor between them.  If,\nimmediately after the mapping and before the replacement, a second <C-S> or\ncarriage return is pressed, the prefix, cursor, and suffix will be placed on\nthree separate lines.  <C-G>S (not <C-G>s) also exhibits this behavior.\n\nTARGETS                                         *surround-targets*\n\nThe |ds| and |cs| commands both take a target as their first argument.  The\npossible targets are based closely on the |text-objects| provided by Vim.\nAll targets are currently just one character.\n\nEight punctuation marks, (, ), {, }, [, ], <, and >, represent themselves\nand their counterparts.  If the opening mark is used, contained whitespace is\nalso trimmed.  The targets b, B, r, and a are aliases for ), }, ], and > \n(the first two mirror Vim; the second two are completely arbitrary and\nsubject to change).\n\nThree quote marks, ', \", `, represent themselves, in pairs.  They are only\nsearched for on the current line.\n\nA t is a pair of HTML or XML tags.  See |tag-blocks| for details.  Remember\nthat you can specify a numerical argument if you want to get to a tag other\nthan the innermost one.\n\nThe letters w, W, and s correspond to a |word|, a |WORD|, and a |sentence|,\nrespectively.  These are special in that they have nothing to delete, and\nused with |ds| they are a no-op.  With |cs|, one could consider them a\nslight shortcut for ysi (cswb == ysiwb, more or less).\n\nA p represents a |paragraph|.  This behaves similarly to w, W, and s above;\nhowever, newlines are sometimes added and/or removed.\n\nREPLACEMENTS                                    *surround-replacements*\n\nA replacement argument is a single character, and is required by |cs|, |ys|,\nand |vS|.  Undefined replacement characters (with the exception of alphabetic\ncharacters) default to placing themselves at the beginning and end of the\ndestination, which can be useful for characters like / and |.\n\nIf either ), }, ], or > is used, the text is wrapped in the appropriate pair\nof characters.  Similar behavior can be found with (, {, and [ (but not <),\nwhich append an additional space to the inside.  Like with the targets above,\nb, B, r, and a are aliases for ), }, ], and >.  To fulfill the common need for\ncode blocks in C-style languages, <C-}> (which is really <C-]>) adds braces on\nlines separate from the content.\n\nIf t or < is used, Vim prompts for an HTML/XML tag to insert.  You may specify\nattributes here and they will be stripped from the closing tag.  End your\ninput by pressing <CR> or >.  If <C-T> is used, the tags will appear on lines\nby themselves.\n\nIf s is used, a leading but not trailing space is added.  This is useful for\nremoving parentheses from a function call with csbs.\n\nCUSTOMIZING                                     *surround-customizing*\n\nThe following adds a potential replacement on \"-\" (ASCII 45) in PHP files.\n(To determine the ASCII code to use, :echo char2nr(\"-\")).  The carriage\nreturn will be replaced by the original text.\n>\n  autocmd FileType php let b:surround_45 = \"<?php \\r ?>\"\n<\nThis can be used in a PHP file as in the following example.\n\n  Old text                  Command     New text ~\n  print \"Hello *world!\"     yss-        <?php print \"Hello world!\" ?>\n\nAdditionally, one can use a global variable for globally available\nreplacements.\n>\n  let g:surround_45 = \"<% \\r %>\"\n  let g:surround_61 = \"<%= \\r %>\"\n<\nAdvanced, experimental, and subject to change:  One can also prompt for\nreplacement text.  The syntax for this is to surround the replacement in pairs\nof low numbered control characters.  If this sounds confusing, that's because\nit is (but it makes the parsing easy).  Consider the following example for a\nLaTeX environment on the \"l\" replacement.\n>\n  let g:surround_108 = \"\\\\begin{\\1environment: \\1}\\r\\\\end{\\1\\1}\"\n<\nWhen this replacement is used,  the user is prompted with an \"environment: \"\nprompt for input.  This input is inserted between each set of \\1's.\nAdditional inputs up to \\7 can be used.\n\nFurthermore, one can specify a regular expression substitution to apply.\n>\n  let g:surround_108 = \"\\\\begin{\\1environment: \\1}\\r\\\\end{\\1\\r}.*\\r\\1}\"\n<\nThis will remove anything after the first } in the input when the text is\nplaced within the \\end{} slot.  The first \\r marks where the pattern begins,\nand the second where the replacement text begins.\n\nHere's a second example for creating an HTML <div>.  The substitution cleverly\nprompts for an id, but only adds id=\"\" if it is non-blank.  You may have to\nread this one a few times slowly before you understand it.\n>\n  let g:surround_{char2nr(\"d\")} = \"<div\\1id: \\r..*\\r id=\\\"&\\\"\\1>\\r</div>\"\n<\nInputting text replacements is a proof of concept at this point. The ugly,\nunintuitive interface and the brevity of the documentation reflect this.\n\nFinally, It is possible to always append a string to surroundings in insert\nmode (and only insert mode).  This is useful with certain plugins and mappings\nthat allow you to jump to such markings.\n>\n  let g:surround_insert_tail = \"<++>\"\n<\nISSUES                                          *surround-issues*\n\nVim could potentially get confused when deleting/changing occurs at the very\nend of the line.  Please report any repeatable instances of this.\n\nDo we need to use |inputsave()|/|inputrestore()| with the tag replacement?\n\nIndenting is handled haphazardly.  Need to decide the most appropriate\nbehavior and implement it.  Right now one can do :let b:surround_indent = 1\n(or the global equivalent) to enable automatic re-indenting by Vim via |=|;\nshould this be the default?\n\n vim:tw=78:ts=8:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/vim-surround/plugin/surround.vim",
    "content": "\" surround.vim - Surroundings\n\" Author:       Tim Pope <http://tpo.pe/>\n\" Version:      2.0\n\" GetLatestVimScripts: 1697 1 :AutoInstall: surround.vim\n\nif exists(\"g:loaded_surround\") || &cp || v:version < 700\n  finish\nendif\nlet g:loaded_surround = 1\n\n\" Input functions {{{1\n\nfunction! s:getchar()\n  let c = getchar()\n  if c =~ '^\\d\\+$'\n    let c = nr2char(c)\n  endif\n  return c\nendfunction\n\nfunction! s:inputtarget()\n  let c = s:getchar()\n  while c =~ '^\\d\\+$'\n    let c .= s:getchar()\n  endwhile\n  if c == \" \"\n    let c .= s:getchar()\n  endif\n  if c =~ \"\\<Esc>\\|\\<C-C>\\|\\0\"\n    return \"\"\n  else\n    return c\n  endif\nendfunction\n\nfunction! s:inputreplacement()\n  let c = s:getchar()\n  if c == \" \"\n    let c .= s:getchar()\n  endif\n  if c =~ \"\\<Esc>\" || c =~ \"\\<C-C>\"\n    return \"\"\n  else\n    return c\n  endif\nendfunction\n\nfunction! s:beep()\n  exe \"norm! \\<Esc>\"\n  return \"\"\nendfunction\n\nfunction! s:redraw()\n  redraw\n  return \"\"\nendfunction\n\n\" }}}1\n\n\" Wrapping functions {{{1\n\nfunction! s:extractbefore(str)\n  if a:str =~ '\\r'\n    return matchstr(a:str,'.*\\ze\\r')\n  else\n    return matchstr(a:str,'.*\\ze\\n')\n  endif\nendfunction\n\nfunction! s:extractafter(str)\n  if a:str =~ '\\r'\n    return matchstr(a:str,'\\r\\zs.*')\n  else\n    return matchstr(a:str,'\\n\\zs.*')\n  endif\nendfunction\n\nfunction! s:fixindent(str,spc)\n  let str = substitute(a:str,'\\t',repeat(' ',&sw),'g')\n  let spc = substitute(a:spc,'\\t',repeat(' ',&sw),'g')\n  let str = substitute(str,'\\(\\n\\|\\%^\\).\\@=','\\1'.spc,'g')\n  if ! &et\n    let str = substitute(str,'\\s\\{'.&ts.'\\}',\"\\t\",'g')\n  endif\n  return str\nendfunction\n\nfunction! s:process(string)\n  let i = 0\n  for i in range(7)\n    let repl_{i} = ''\n    let m = matchstr(a:string,nr2char(i).'.\\{-\\}\\ze'.nr2char(i))\n    if m != ''\n      let m = substitute(strpart(m,1),'\\r.*','','')\n      let repl_{i} = input(substitute(m,':\\s*$','','').': ')\n    endif\n  endfor\n  let s = \"\"\n  let i = 0\n  while i < strlen(a:string)\n    let char = strpart(a:string,i,1)\n    if char2nr(char) < 8\n      let next = stridx(a:string,char,i+1)\n      if next == -1\n        let s .= char\n      else\n        let insertion = repl_{char2nr(char)}\n        let subs = strpart(a:string,i+1,next-i-1)\n        let subs = matchstr(subs,'\\r.*')\n        while subs =~ '^\\r.*\\r'\n          let sub = matchstr(subs,\"^\\r\\\\zs[^\\r]*\\r[^\\r]*\")\n          let subs = strpart(subs,strlen(sub)+1)\n          let r = stridx(sub,\"\\r\")\n          let insertion = substitute(insertion,strpart(sub,0,r),strpart(sub,r+1),'')\n        endwhile\n        let s .= insertion\n        let i = next\n      endif\n    else\n      let s .= char\n    endif\n    let i += 1\n  endwhile\n  return s\nendfunction\n\nfunction! s:wrap(string,char,type,...)\n  let keeper = a:string\n  let newchar = a:char\n  let s:tag = \"\"\n  let type = a:type\n  let linemode = type ==# 'V' ? 1 : 0\n  let special = a:0 ? a:1 : 0\n  let before = \"\"\n  let after  = \"\"\n  if type ==# \"V\"\n    let initspaces = matchstr(keeper,'\\%^\\s*')\n  else\n    let initspaces = matchstr(getline('.'),'\\%^\\s*')\n  endif\n  let pairs = \"b()B{}r[]a<>\"\n  let extraspace = \"\"\n  if newchar =~ '^ '\n    let newchar = strpart(newchar,1)\n    let extraspace = ' '\n  endif\n  let idx = stridx(pairs,newchar)\n  if newchar == ' '\n    let before = ''\n    let after  = ''\n  elseif exists(\"b:surround_\".char2nr(newchar))\n    let all    = s:process(b:surround_{char2nr(newchar)})\n    let before = s:extractbefore(all)\n    let after  =  s:extractafter(all)\n  elseif exists(\"g:surround_\".char2nr(newchar))\n    let all    = s:process(g:surround_{char2nr(newchar)})\n    let before = s:extractbefore(all)\n    let after  =  s:extractafter(all)\n  elseif newchar ==# \"p\"\n    let before = \"\\n\"\n    let after  = \"\\n\\n\"\n  elseif newchar ==# 's'\n    let before = ' '\n    let after  = ''\n  elseif newchar ==# ':'\n    let before = ':'\n    let after = ''\n  elseif newchar =~# \"[tT\\<C-T><,]\"\n    let dounmapp = 0\n    let dounmapb = 0\n    if !maparg(\">\",\"c\")\n      let dounmapb = 1\n      \" Hide from AsNeeded\n      exe \"cn\".\"oremap > <CR>\"\n    endif\n    let default = \"\"\n    if newchar ==# \"T\"\n      if !exists(\"s:lastdel\")\n        let s:lastdel = \"\"\n      endif\n      let default = matchstr(s:lastdel,'<\\zs.\\{-\\}\\ze>')\n    endif\n    let tag = input(\"<\",default)\n    echo \"<\".substitute(tag,'>*$','>','')\n    if dounmapb\n      silent! cunmap >\n    endif\n    let s:tag = tag\n    if tag != \"\"\n      let tag = substitute(tag,'>*$','','')\n      let s:tag = tag . '>'\n      let before = '<'.tag.'>'\n      if tag =~ '/$'\n        let after = ''\n      else\n        let after  = '</'.substitute(tag,' .*','','').'>'\n      endif\n      if newchar == \"\\<C-T>\" || newchar == \",\"\n        if type ==# \"v\" || type ==# \"V\"\n          let before .= \"\\n\\t\"\n        endif\n        if type ==# \"v\"\n          let after  = \"\\n\". after\n        endif\n      endif\n    endif\n  elseif newchar ==# 'l' || newchar == '\\'\n    \" LaTeX\n    let env = input('\\begin{')\n    let env = '{' . env\n    let env .= s:closematch(env)\n    echo '\\begin'.env\n    if env != \"\"\n      let before = '\\begin'.env\n      let after  = '\\end'.matchstr(env,'[^}]*').'}'\n    endif\n  elseif newchar ==# 'f' || newchar ==# 'F'\n    let fnc = input('function: ')\n    if fnc != \"\"\n      let before = substitute(fnc,'($','','').'('\n      let after  = ')'\n      if newchar ==# 'F'\n        let before .= ' '\n        let after = ' ' . after\n      endif\n    endif\n  elseif newchar ==# \"\\<C-F>\"\n    let fnc = input('function: ')\n    let before = '('.fnc.' '\n    let after = ')'\n  elseif idx >= 0\n    let spc = (idx % 3) == 1 ? \" \" : \"\"\n    let idx = idx / 3 * 3\n    let before = strpart(pairs,idx+1,1) . spc\n    let after  = spc . strpart(pairs,idx+2,1)\n  elseif newchar == \"\\<C-[>\" || newchar == \"\\<C-]>\"\n    let before = \"{\\n\\t\"\n    let after  = \"\\n}\"\n  elseif newchar !~ '\\a'\n    let before = newchar\n    let after  = newchar\n  else\n    let before = ''\n    let after  = ''\n  endif\n  let after  = substitute(after ,'\\n','\\n'.initspaces,'g')\n  if type ==# 'V' || (special && type ==# \"v\")\n    let before = substitute(before,' \\+$','','')\n    let after  = substitute(after ,'^ \\+','','')\n    if after !~ '^\\n'\n      let after  = initspaces.after\n    endif\n    if keeper !~ '\\n$' && after !~ '^\\n'\n      let keeper .= \"\\n\"\n    elseif keeper =~ '\\n$' && after =~ '^\\n'\n      let after = strpart(after,1)\n    endif\n    if before !~ '\\n\\s*$'\n      let before .= \"\\n\"\n      if special\n        let before .= \"\\t\"\n      endif\n    endif\n  endif\n  if type ==# 'V'\n    let before = initspaces.before\n  endif\n  if before =~ '\\n\\s*\\%$'\n    if type ==# 'v'\n      let keeper = initspaces.keeper\n    endif\n    let padding = matchstr(before,'\\n\\zs\\s\\+\\%$')\n    let before  = substitute(before,'\\n\\s\\+\\%$','\\n','')\n    let keeper = s:fixindent(keeper,padding)\n  endif\n  if type ==# 'V'\n    let keeper = before.keeper.after\n  elseif type =~ \"^\\<C-V>\"\n    \" Really we should be iterating over the buffer\n    let repl = substitute(before,'[\\\\~]','\\\\&','g').'\\1'.substitute(after,'[\\\\~]','\\\\&','g')\n    let repl = substitute(repl,'\\n',' ','g')\n    let keeper = substitute(keeper.\"\\n\",'\\(.\\{-\\}\\)\\(\\n\\)',repl.'\\n','g')\n    let keeper = substitute(keeper,'\\n\\%$','','')\n  else\n    let keeper = before.extraspace.keeper.extraspace.after\n  endif\n  return keeper\nendfunction\n\nfunction! s:wrapreg(reg,char,...)\n  let orig = getreg(a:reg)\n  let type = substitute(getregtype(a:reg),'\\d\\+$','','')\n  let special = a:0 ? a:1 : 0\n  let new = s:wrap(orig,a:char,type,special)\n  call setreg(a:reg,new,type)\nendfunction\n\" }}}1\n\nfunction! s:insert(...) \" {{{1\n  \" Optional argument causes the result to appear on 3 lines, not 1\n  let linemode = a:0 ? a:1 : 0\n  let char = s:inputreplacement()\n  while char == \"\\<CR>\" || char == \"\\<C-S>\"\n    \" TODO: use total count for additional blank lines\n    let linemode += 1\n    let char = s:inputreplacement()\n  endwhile\n  if char == \"\"\n    return \"\"\n  endif\n  let cb_save = &clipboard\n  set clipboard-=unnamed clipboard-=unnamedplus\n  let reg_save = @@\n  call setreg('\"',\"\\r\",'v')\n  call s:wrapreg('\"',char,linemode)\n  \" If line mode is used and the surrounding consists solely of a suffix,\n  \" remove the initial newline.  This fits a use case of mine but is a\n  \" little inconsistent.  Is there anyone that would prefer the simpler\n  \" behavior of just inserting the newline?\n  if linemode && match(getreg('\"'),'^\\n\\s*\\zs.*') == 0\n    call setreg('\"',matchstr(getreg('\"'),'^\\n\\s*\\zs.*'),getregtype('\"'))\n  endif\n  \" This can be used to append a placeholder to the end\n  if exists(\"g:surround_insert_tail\")\n    call setreg('\"',g:surround_insert_tail,\"a\".getregtype('\"'))\n  endif\n  if col('.') >= col('$')\n    norm! \"\"p\n  else\n    norm! \"\"P\n  endif\n  if linemode\n    call s:reindent()\n  endif\n  norm! `]\n  call search('\\r','bW')\n  let @@ = reg_save\n  let &clipboard = cb_save\n  return \"\\<Del>\"\nendfunction \" }}}1\n\nfunction! s:reindent() \" {{{1\n  if exists(\"b:surround_indent\") ? b:surround_indent : (!exists(\"g:surround_indent\") || g:surround_indent)\n    silent norm! '[=']\n  endif\nendfunction \" }}}1\n\nfunction! s:dosurround(...) \" {{{1\n  let scount = v:count1\n  let char = (a:0 ? a:1 : s:inputtarget())\n  let spc = \"\"\n  if char =~ '^\\d\\+'\n    let scount = scount * matchstr(char,'^\\d\\+')\n    let char = substitute(char,'^\\d\\+','','')\n  endif\n  if char =~ '^ '\n    let char = strpart(char,1)\n    let spc = 1\n  endif\n  if char == 'a'\n    let char = '>'\n  endif\n  if char == 'r'\n    let char = ']'\n  endif\n  let newchar = \"\"\n  if a:0 > 1\n    let newchar = a:2\n    if newchar == \"\\<Esc>\" || newchar == \"\\<C-C>\" || newchar == \"\"\n      return s:beep()\n    endif\n  endif\n  let cb_save = &clipboard\n  set clipboard-=unnamed clipboard-=unnamedplus\n  let append = \"\"\n  let original = getreg('\"')\n  let otype = getregtype('\"')\n  call setreg('\"',\"\")\n  let strcount = (scount == 1 ? \"\" : scount)\n  if char == '/'\n    exe 'norm! '.strcount.'[/d'.strcount.']/'\n  elseif char =~# '[[:punct:]]' && char !~# '[][(){}<>\"''`]'\n    exe 'norm! T'.char\n    if getline('.')[col('.')-1] == char\n      exe 'norm! l'\n    endif\n    exe 'norm! dt'.char\n  else\n    exe 'norm! d'.strcount.'i'.char\n  endif\n  let keeper = getreg('\"')\n  let okeeper = keeper \" for reindent below\n  if keeper == \"\"\n    call setreg('\"',original,otype)\n    let &clipboard = cb_save\n    return \"\"\n  endif\n  let oldline = getline('.')\n  let oldlnum = line('.')\n  if char ==# \"p\"\n    call setreg('\"','','V')\n  elseif char ==# \"s\" || char ==# \"w\" || char ==# \"W\"\n    \" Do nothing\n    call setreg('\"','')\n  elseif char =~ \"[\\\"'`]\"\n    exe \"norm! i \\<Esc>d2i\".char\n    call setreg('\"',substitute(getreg('\"'),' ','',''))\n  elseif char == '/'\n    norm! \"_x\n    call setreg('\"','/**/',\"c\")\n    let keeper = substitute(substitute(keeper,'^/\\*\\s\\=','',''),'\\s\\=\\*$','','')\n  elseif char =~# '[[:punct:]]' && char !~# '[][(){}<>]'\n    exe 'norm! F'.char\n    exe 'norm! df'.char\n  else\n    \" One character backwards\n    call search('.','bW')\n    exe \"norm! da\".char\n  endif\n  let removed = getreg('\"')\n  let rem2 = substitute(removed,'\\n.*','','')\n  let oldhead = strpart(oldline,0,strlen(oldline)-strlen(rem2))\n  let oldtail = strpart(oldline,  strlen(oldline)-strlen(rem2))\n  let regtype = getregtype('\"')\n  if char =~# '[\\[({<T]' || spc\n    let keeper = substitute(keeper,'^\\s\\+','','')\n    let keeper = substitute(keeper,'\\s\\+$','','')\n  endif\n  if col(\"']\") == col(\"$\") && col('.') + 1 == col('$')\n    if oldhead =~# '^\\s*$' && a:0 < 2\n      let keeper = substitute(keeper,'\\%^\\n'.oldhead.'\\(\\s*.\\{-\\}\\)\\n\\s*\\%$','\\1','')\n    endif\n    let pcmd = \"p\"\n  else\n    let pcmd = \"P\"\n  endif\n  if line('.') + 1 < oldlnum && regtype ==# \"V\"\n    let pcmd = \"p\"\n  endif\n  call setreg('\"',keeper,regtype)\n  if newchar != \"\"\n    call s:wrapreg('\"',newchar)\n  endif\n  silent exe 'norm! \"\"'.pcmd.'`['\n  if removed =~ '\\n' || okeeper =~ '\\n' || getreg('\"') =~ '\\n'\n    call s:reindent()\n  endif\n  if getline('.') =~ '^\\s\\+$' && keeper =~ '^\\s*\\n'\n    silent norm! cc\n  endif\n  call setreg('\"',original,otype)\n  let s:lastdel = removed\n  let &clipboard = cb_save\n  if newchar == \"\"\n    silent! call repeat#set(\"\\<Plug>Dsurround\".char,scount)\n  else\n    silent! call repeat#set(\"\\<Plug>Csurround\".char.newchar.s:tag,scount)\n  endif\nendfunction \" }}}1\n\nfunction! s:changesurround() \" {{{1\n  let a = s:inputtarget()\n  if a == \"\"\n    return s:beep()\n  endif\n  let b = s:inputreplacement()\n  if b == \"\"\n    return s:beep()\n  endif\n  call s:dosurround(a,b)\nendfunction \" }}}1\n\nfunction! s:opfunc(type,...) \" {{{1\n  let char = s:inputreplacement()\n  if char == \"\"\n    return s:beep()\n  endif\n  let reg = '\"'\n  let sel_save = &selection\n  let &selection = \"inclusive\"\n  let cb_save  = &clipboard\n  set clipboard-=unnamed clipboard-=unnamedplus\n  let reg_save = getreg(reg)\n  let reg_type = getregtype(reg)\n  let type = a:type\n  if a:type == \"char\"\n    silent exe 'norm! v`[o`]\"'.reg.'y'\n    let type = 'v'\n  elseif a:type == \"line\"\n    silent exe 'norm! `[V`]\"'.reg.'y'\n    let type = 'V'\n  elseif a:type ==# \"v\" || a:type ==# \"V\" || a:type ==# \"\\<C-V>\"\n    let &selection = sel_save\n    let ve = &virtualedit\n    if !(a:0 && a:1)\n      set virtualedit=\n    endif\n    silent exe 'norm! gv\"'.reg.'y'\n    let &virtualedit = ve\n  elseif a:type =~ '^\\d\\+$'\n    let type = 'v'\n    silent exe 'norm! ^v'.a:type.'$h\"'.reg.'y'\n    if mode() ==# 'v'\n      norm! v\n      return s:beep()\n    endif\n  else\n    let &selection = sel_save\n    let &clipboard = cb_save\n    return s:beep()\n  endif\n  let keeper = getreg(reg)\n  if type ==# \"v\" && a:type !=# \"v\"\n    let append = matchstr(keeper,'\\_s\\@<!\\s*$')\n    let keeper = substitute(keeper,'\\_s\\@<!\\s*$','','')\n  endif\n  call setreg(reg,keeper,type)\n  call s:wrapreg(reg,char,a:0 && a:1)\n  if type ==# \"v\" && a:type !=# \"v\" && append != \"\"\n    call setreg(reg,append,\"ac\")\n  endif\n  silent exe 'norm! gv'.(reg == '\"' ? '' : '\"' . reg).'p`['\n  if type ==# 'V' || (getreg(reg) =~ '\\n' && type ==# 'v')\n    call s:reindent()\n  endif\n  call setreg(reg,reg_save,reg_type)\n  let &selection = sel_save\n  let &clipboard = cb_save\n  if a:type =~ '^\\d\\+$'\n    silent! call repeat#set(\"\\<Plug>Y\".(a:0 && a:1 ? \"S\" : \"s\").\"surround\".char.s:tag,a:type)\n  else\n    silent! call repeat#set(\"\\<Plug>SurroundRepeat\".char.s:tag)\n  endif\nendfunction\n\nfunction! s:opfunc2(arg)\n  call s:opfunc(a:arg,1)\nendfunction \" }}}1\n\nfunction! s:closematch(str) \" {{{1\n  \" Close an open (, {, [, or < on the command line.\n  let tail = matchstr(a:str,'.[^\\[\\](){}<>]*$')\n  if tail =~ '^\\[.\\+'\n    return \"]\"\n  elseif tail =~ '^(.\\+'\n    return \")\"\n  elseif tail =~ '^{.\\+'\n    return \"}\"\n  elseif tail =~ '^<.+'\n    return \">\"\n  else\n    return \"\"\n  endif\nendfunction \" }}}1\n\nnnoremap <silent> <Plug>SurroundRepeat .\nnnoremap <silent> <Plug>Dsurround  :<C-U>call <SID>dosurround(<SID>inputtarget())<CR>\nnnoremap <silent> <Plug>Csurround  :<C-U>call <SID>changesurround()<CR>\nnnoremap <silent> <Plug>Yssurround :<C-U>call <SID>opfunc(v:count1)<CR>\nnnoremap <silent> <Plug>YSsurround :<C-U>call <SID>opfunc2(v:count1)<CR>\n\" <C-U> discards the numerical argument but there's not much we can do with it\nnnoremap <silent> <Plug>Ysurround  :<C-U>set opfunc=<SID>opfunc<CR>g@\nnnoremap <silent> <Plug>YSurround  :<C-U>set opfunc=<SID>opfunc2<CR>g@\nvnoremap <silent> <Plug>VSurround  :<C-U>call <SID>opfunc(visualmode(),visualmode() ==# 'V' ? 1 : 0)<CR>\nvnoremap <silent> <Plug>VgSurround :<C-U>call <SID>opfunc(visualmode(),visualmode() ==# 'V' ? 0 : 1)<CR>\ninoremap <silent> <Plug>Isurround  <C-R>=<SID>insert()<CR>\ninoremap <silent> <Plug>ISurround  <C-R>=<SID>insert(1)<CR>\n\nif !exists(\"g:surround_no_mappings\") || ! g:surround_no_mappings\n  nmap ds  <Plug>Dsurround\n  nmap cs  <Plug>Csurround\n  nmap ys  <Plug>Ysurround\n  nmap yS  <Plug>YSurround\n  nmap yss <Plug>Yssurround\n  nmap ySs <Plug>YSsurround\n  nmap ySS <Plug>YSsurround\n  xmap S   <Plug>VSurround\n  xmap gS  <Plug>VgSurround\n  if !exists(\"g:surround_no_insert_mappings\") || ! g:surround_no_insert_mappings\n    if !hasmapto(\"<Plug>Isurround\",\"i\") && \"\" == mapcheck(\"<C-S>\",\"i\")\n      imap    <C-S> <Plug>Isurround\n    endif\n    imap      <C-G>s <Plug>Isurround\n    imap      <C-G>S <Plug>ISurround\n  endif\nendif\n\n\" vim:set ft=vim sw=2 sts=2 et:\n"
  },
  {
    "path": ".vim/bundle/vim-tbone/CONTRIBUTING.markdown",
    "content": "See the [contribution guidelines for pathogen.vim](https://github.com/tpope/vim-pathogen/blob/master/CONTRIBUTING.markdown).\n"
  },
  {
    "path": ".vim/bundle/vim-tbone/README.markdown",
    "content": "# tbone.vim\n\nBasic tmux support for Vim.\n\n* `:Tmux` lets you call any old `tmux` command (with really good tab\n  complete).\n* `:Tyank` and `:Tput` give you direct access to tmux buffers.\n* `:Twrite` sends a chunk of text to another pane.  Give an argument like\n  `windowtitle.2`, `top-right`, or `last`, or let it default to the previously\n  given argument.\n* `:Tattach` lets you use a specific tmux session from outside of it.\n\nWould you like to paste a shell command into another pane over and over again?\nI am sorry but you will have to install one of the 300 other Vim plugins for\ntmux.\n\n## Installation\n\nIf you don't have a preferred installation method, I recommend\ninstalling [pathogen.vim](https://github.com/tpope/vim-pathogen), and\nthen simply copy and paste:\n\n    cd ~/.vim/bundle\n    git clone git://github.com/tpope/vim-tbone.git\n\nOnce help tags have been generated, you can view the manual with\n`:help tbone`.\n\n## Self-Promotion\n\nLike tbone.vim?  Follow the repository on\n[GitHub](https://github.com/tpope/vim-tbone) and vote for it on\n[vim.org](http://www.vim.org/scripts/script.php?script_id=4488).  And if\nyou're feeling especially charitable, follow [tpope](http://tpo.pe/) on\n[Twitter](http://twitter.com/tpope) and\n[GitHub](https://github.com/tpope).\n\n## License\n\nCopyright © Tim Pope.  Distributed under the same terms as Vim itself.\nSee `:help license`.\n"
  },
  {
    "path": ".vim/bundle/vim-tbone/autoload/tbone.vim",
    "content": "\" autoload/tbone.vim\n\" Maintainer:   Tim Pope <http://tpo.pe/>\n\nif exists(\"g:autoloaded_tbone\") || v:version < 700 || &cp\n  finish\nendif\nlet g:autoloaded_tbone = 1\n\n\" Sessions {{{1\n\nfunction! tbone#session(...) abort\n  if a:0 && a:1 =~# '^.\\+:'\n    return matchstr(a:1, '[^:]*')\n  elseif exists('g:tmux_session')\n    return g:tmux_session\n  else\n    return ''\n  endif\nendfunction\n\nfunction! tbone#qualify(target)\n  let target = substitute(a:target, \"\\n$\", '', '')\n  let session = get(g:, 'tmux_session', '')\n  if target =~# '^:'\n    return session . target\n  elseif target =~# '^\\%(last\\|\\%(top\\|bottom\\)\\%(-left\\|-right\\)\\=\\|left\\|right\\)$'\n    return get(g:, 'tmux_session', '') . ':.' . target\n  elseif target =~# ':' || target =~# '^%' || !exists('g:tmux_session')\n    return target\n  else\n    return g:tmux_session . ':' . target\n  endif\nendfunction\n\n\" }}}1\n\" Completion {{{1\n\nfunction! tbone#complete_sessions(...) abort\n  return system('tmux list-sessions -F \"#S\"')\nendfunction\n\nfunction! tbone#complete_windows(...) abort\n  return system('tmux list-windows -F \"#W\" -t '.shellescape(tbone#session())) .\n        \\system('tmux list-windows -F \"#S:#W\" -a')\nendfunction\n\nfunction! tbone#complete_panes(...) abort\n  return system('tmux list-panes -F \"#W.#P\" -s -t '.shellescape(tbone#session())) .\n        \\system('tmux list-panes -F \"#S:#W.#P\" -a') .\n        \\ \"last\\ntop\\nbottom\\nleft\\nright\\ntop-left\\ntop-right\\nbottom\\left\\nbottom-right\"\nendfunction\n\nfunction! tbone#complete_clients(...) abort\n  return system('tmux list-clients -F \"#{client_tty}\"')\nendfunction\n\nfunction! tbone#complete_buffers(...) abort\n  return join(range(len(split(system('tmux list-buffers'), \"\\n\"))), \"\\n\")\nendfunction\n\nfunction! tbone#complete_executable(lead, ...) abort\n  let executables = []\n  for dir in split($PATH, ':')\n    let executables += map(split(glob(dir.'/'.a:lead.'*'), \"\\n\"), 'v:val[strlen(dir)+1 : -1]')\n  endfor\n  call sort(executables)\n  let seen = {}\n  let completions = ''\n  for entry in executables\n    if !has_key(seen, entry)\n      let seen[entry] = 1\n      let completions .= entry . \"\\n\"\n    endif\n  endfor\n  return completions\nendfunction\n\n\" Aliases {{{2\n\n\" Stolen from the zsh tab completion\nlet s:aliases = {\n      \\ 'attach':      'attach-session',\n      \\ 'detach':      'detach-client',\n      \\ 'has':         'has-session',\n      \\ 'lsc':         'list-clients',\n      \\ 'lscm':        'list-commands',\n      \\ 'ls':          'list-sessions',\n      \\ 'new':         'new-session',\n      \\ 'refresh':     'refresh-client',\n      \\ 'rename':      'rename-session',\n      \\ 'showmsgs':    'show-messages',\n      \\ 'source':      'source-file',\n      \\ 'start':       'start-server',\n      \\ 'suspendc':    'suspend-client',\n      \\ 'switchc':     'switch-client',\n      \\\n      \\ 'breakp':      'break-pane',\n      \\ 'capturep':    'capture-pane',\n      \\ 'displayp':    'display-panes',\n      \\ 'downp':       'down-pane',\n      \\ 'findw':       'find-window',\n      \\ 'joinp':       'join-pane',\n      \\ 'killp':       'kill-pane',\n      \\ 'killw':       'kill-window',\n      \\ 'last':        'last-window',\n      \\ 'linkw':       'link-window',\n      \\ 'lsp':         'list-panes',\n      \\ 'lsw':         'list-windows',\n      \\ 'movew':       'move-window',\n      \\ 'neww':        'new-window',\n      \\ 'nextl':       'next-layout',\n      \\ 'next':        'next-window',\n      \\ 'pipep':       'pipe-pane',\n      \\ 'prev':        'previous-window',\n      \\ 'renamew':     'rename-window',\n      \\ 'resizep':     'resize-pane',\n      \\ 'respawnw':    'respawn-window',\n      \\ 'rotatew':     'rotate-window',\n      \\ 'selectl':     'select-layout',\n      \\ 'selectp':     'select-pane',\n      \\ 'selectw':     'select-window',\n      \\ 'splitw':      'split-window',\n      \\ 'swapp':       'swap-pane',\n      \\ 'swapw':       'swap-window',\n      \\ 'unlinkw':     'unlink-window',\n      \\ 'upp':         'up-pane',\n      \\\n      \\ 'bind':        'bind-key',\n      \\ 'lsk':         'list-keys',\n      \\ 'send':        'send-keys',\n      \\ 'unbind':      'unbind-key',\n      \\\n      \\ 'set':         'set-option',\n      \\ 'setw':        'set-window-option',\n      \\ 'show':        'show-options',\n      \\ 'showw':       'show-window-options',\n      \\\n      \\ 'setenv':      'set-environment',\n      \\ 'showenv':     'show-environment',\n      \\\n      \\ 'confirm':     'confirm-before',\n      \\ 'display':     'display-message',\n      \\\n      \\ 'clearhist':   'clear-history',\n      \\ 'copyb':       'copy-buffer',\n      \\ 'deleteb':     'delete-buffer',\n      \\ 'lsb':         'list-buffers',\n      \\ 'loadb':       'load-buffer',\n      \\ 'pasteb':      'paste-buffer',\n      \\ 'saveb':       'save-buffer',\n      \\ 'setb':        'set-buffer',\n      \\ 'showb':       'show-buffer',\n      \\\n      \\ 'if':          'if-shell',\n      \\ 'lock':        'lock-server',\n      \\ 'run':         'run-shell',\n      \\ 'info':        'server-info',\n      \\ }\n\" }}}2\n\nfunction! s:commands() abort\n  if !exists('g:tmux_commands')\n    let lines = split(system('tmux list-commands'), \"\\n\")\n    if v:shell_error\n      return {}\n    endif\n    let s:commands = {}\n    for line in lines\n      let s:commands[matchstr(line, '^\\S\\+')] = matchstr(line, '\\s\\zs\\S.*')\n    endfor\n  endif\n  return s:commands\nendfunction\n\nfunction! tbone#complete_command(A, L, P) abort\n  let pre = a:L[0 : a:P-1]\n  let cmd = matchstr(pre, '\\S*\\s\\+\\zs\\(\\S\\+\\)\\ze\\s')\n  if cmd ==# ''\n    return join(sort(keys(s:commands()) + keys(s:aliases)), \"\\n\")\n  endif\n  let signature = get(s:commands(), get(s:aliases, cmd, cmd), '')\n  if a:L =~# '\\s-$'\n    let options = join(map(split(signature, ' '), 'matchstr(v:val, \"^\\\\[-\\\\zs\\\\w\\\\+\")'), '')\n    return join(map(split(options, '\\zs'), '\"-\".v:val'), \"\\n\")\n  endif\n  let flag = matchstr(pre, '.*\\zs-\\w\\ze\\s\\+\\S*$')\n  let type = matchstr(signature, '\\['.flag.' \\zs.\\{-\\}\\ze\\]')\n  if !empty(type)\n    let complete = ''\n    if type =~# '-session'\n      let complete .= tbone#complete_sessions()\n    endif\n    if type =~# '-window'\n      let complete .= tbone#complete_windows()\n    endif\n    if type =~# '-pane'\n      let complete .= tbone#complete_panes()\n    endif\n    if type =~# '-client'\n      let complete .= tbone#complete_clients()\n    endif\n    if type =~# 'buffer-index'\n      let complete .= tbone#complete_buffers()\n    endif\n    if type =~# 'key-table'\n      let complete .= \"vi-edit\\nemacs-edit\\nvi-choice\\nemacs-choice\\nvi-copy\\nemacs-copy\\n\"\n    endif\n    return complete\n  endif\n  let bare = substitute(signature, '\\[-.\\{-\\}\\] \\=', '', 'g')\n  if bare =~# 'command'\n    return tbone#complete_executable(a:A)\n  elseif bare =~# 'template'\n    return join(sort(keys(s:commands()) + keys(s:aliases)), \"\\n\")\n  endif\n  return ''\nendfunction\n\n\" }}}1\n\" :Tattach {{{1\n\nfunction! tbone#attach_command(session) abort\n  unlet! s:our_session\n  let has_session = empty(system('tmux has-session -t '.shellescape(a:session)))\n  if empty(a:session)\n    unlet! g:tmux_session\n    if has_session\n      echo 'Using default tmux session'\n    else\n      echo 'Warning: no tmux sessions exist'\n    endif\n    return ''\n  elseif empty(system('tmux has-session -t '.shellescape(a:session)))\n    echo 'Using tmux session \"'.a:session.'\"'\n  else\n    echohl WarningMsg\n    echo 'Warning: tmux session \"'.a:session.'\" does not exist'\n    echohl NONE\n  endif\n  let g:tmux_session = a:session\n  return ''\nendfunction\n\n\" }}}1\n\" :Tmux {{{1\n\nfunction! tbone#mux_command(args) abort\n  let cmd = matchstr(a:args, '^\\S\\+')\n  let rest = matchstr(a:args, '\\s.*')\n  if exists('g:tmux_session')\n    let signature = get(s:commands(), get(s:aliases, cmd, cmd), '')\n    if signature =~# '\\[-t target-session\\]' && rest !~# '\\s-[at]'\n      let cmd .= ' -t '.g:tmux_session\n    elseif signature =~# '\\[-\\w*s\\w*]' && signature =~# '\\[-t target' && rest !~ '\\s-[at]'\n      let cmd .= ' -s -t '.g:tmux_session\n    endif\n  endif\n  let output = system('tmux ' . cmd . rest)\n  echo output\n  return ''\nendfunction\n\n\" }}}1\n\" :Tput, :Tyank {{{1\n\nfunction! tbone#buffer_command(label, buffer, before, command, after) abort\n  let tempfile = tempname()\n  try\n    if !empty(a:before)\n      exe a:before tempfile\n    endif\n    let error = system('tmux ' . a:command . (empty(a:buffer) ? '' : ' -b ' . shellescape(a:buffer)) . ' ' . tempfile)\n    if v:shell_error\n      return 'echoerr '.string(error[0:-2])\n    endif\n    if !empty(a:after)\n      exe a:after tempfile\n    endif\n  finally\n    call delete(tempfile)\n  endtry\n  return ''\nendfunction\n\n\" }}}1\n\" :Twrite {{{1\n\n\" Convert a target pane to an unchanging pane id.  Returns an empty string if\n\" the pane does not exist.\nfunction! tbone#pane_id(target) abort\n  if a:target =~# '^%'\n    return index(split(system('tmux list-panes -a -F \"#{pane_id}\"'), \"\\n\"), a:target) < 0 ?  '' : a:target\n  endif\n  let target = tbone#qualify(a:target)\n  if target =~# '\\.last'\n    let window = matchstr(target, '.*\\ze[.]')\n    let output = system(\n          \\ 'tmux select-pane -t '.shellescape(window).' -l' .\n          \\  ' \\; list-panes -t '.shellescape(window).' -F \"#{pane_id} #{pane_active}\"' .\n          \\  ' \\; select-pane -t '.shellescape(window).' -l')\n    return matchstr(output, '%\\d\\+\\ze 1\\>')\n  endif\n  let target = system('tmux display-message -p -t '.shellescape(target).' \"#S:#I.#P\"')[0:-2]\n  if v:shell_error || target !~# ':.*\\.'\n    return ''\n  endif\n  let window = matchstr(target, '.*\\ze[.]')\n  let offset = matchstr(target, '[0-9+-]\\d*$')\n  let output = system('tmux list-panes -t '.shellescape(window).' -F \"#{pane_id} #P\"')\n  return matchstr(output, '%\\d\\+\\ze '.offset.'\\>')\nendfunction\n\nfunction! tbone#write_command(bang, line1, line2, count, target) abort\n  let target = empty(a:target) ? get(g:, 'tbone_write_pane', '') : a:target\n  if empty(target)\n    return 'echoerr '.string('Target pane required')\n  endif\n\n  let keys = join(filter(map(\n        \\ getline(a:line1, a:line2),\n        \\ 'substitute(v:val,\"^\\\\s*\",\"\",\"\")'),\n        \\ \"!empty(v:val)\"),\n        \\ \"\\r\")\n  if a:count > 0\n    let keys = get(g:, 'tbone_write_initialization', '').keys.\"\\r\"\n  endif\n\n  try\n    let pane_id = tbone#send_keys(target, keys)\n    let g:tbone_write_pane = pane_id\n    echo len(keys).' keys sent to '.pane_id\n    return ''\n  catch /.*/\n    return 'echoerr '.string(v:exception)\n  endtry\nendfunction\n\nfunction! tbone#send_keys(target, keys) abort\n  if empty(a:target)\n    throw 'Target pane required'\n  endif\n\n  let pane_id = tbone#pane_id(a:target)\n  if empty(pane_id)\n    throw \"Can't find pane \".a:target\n  elseif pane_id ==# $TMUX_PANE && !has('gui_running')\n    throw 'Refusing to write to own tmux pane'\n  endif\n\n  if len(a:keys) > 1000\n    let temp = tempname()\n    call writefile(split(a:keys, \"\\r\", 1), temp, 'b')\n    let out = system('tmux load-buffer '.temp.' \\; paste-buffer -d -t '.pane_id)\n  else\n    let out = system('tmux send-keys -t '.pane_id.' \"\" '.shellescape(a:keys))\n  endif\n\n  if v:shell_error\n    throw 'tmux: '.out[0:-2]\n  endif\n\n  return pane_id\nendfunction\n\n\" }}}1\n"
  },
  {
    "path": ".vim/bundle/vim-tbone/doc/tbone.txt",
    "content": "*tbone.txt*  tmux basics\n\nAuthor:  Tim Pope <http://tpo.pe/>\nLicense: Same terms as Vim itself (see |license|)\nRepo:    http://github.com/tpope/vim-tbone\n\nCOMMANDS                                        *tbone*\n\nThese commands will be available if and only if tmux is in your PATH.\n\n                                                *tbone-:Tmux*\n:Tmux [args]            Invoke an arbitrary tmux command.\n\n                                                *tbone-:Tput*\n:[line]Tput [buffer]    Put the text from the given tmux buffer (default 0)\n                        after [line] (default current line).\n\n                                                *tbone-:Tyank*\n:[range]Tyank [buffer]  Yank [range] lines into the given tmux buffer (default\n                        new).\n\n                                                *tbone-:Twrite*\n:[range]Twrite [pane]   Take the text indicated by [range], strip leading\n                        whitespace, change newlines to carriage returns, and\n                        stuff it into [pane] using `tmux send-keys` (default\n                        previously specified).\n\n:Twrite [pane]          With no range, sends the current line without a\n                        trailing carriage return.\n\n                                                *tbone-:Tattach*\n:Tattach {session}      Force use of a particular tmux session.  You only need\n                        this if you started Vim outside of tmux.\n\n:Tattach                Revert back to the default tmux session.  You might\n                        think of this as \"detaching\".\n\n vim:tw=78:et:ft=help:norl:\n"
  },
  {
    "path": ".vim/bundle/vim-tbone/plugin/tbone.vim",
    "content": "\" tbone.vim - tmux basics\n\" Maintainer:   Tim Pope <http://tpo.pe/>\n\" Version:      1.1\n\nif !has('gui_running') && $TERM =~# '^\\%(screen\\|tmux\\)' && empty(&t_ts)\n  \" enable window title\n  let &t_ts = \"\\e]2;\"\n  let &t_fs = \"\\007\"\nendif\n\nif exists(\"g:loaded_tbone\") || v:version < 700 || &cp || !executable('tmux')\n  finish\nendif\nlet g:loaded_tbone = 1\n\ncommand! -bar -bang -nargs=? -complete=custom,tbone#complete_sessions Tattach\n      \\ execute tbone#attach_command(<q-args>)\ncommand! -bar -bang -nargs=? -complete=custom,tbone#complete_command Tmux\n      \\ execute tbone#mux_command(<q-args>)\ncommand! -bar -bang -nargs=? -complete=custom,tbone#complete_buffers -range=0 Tput\n      \\ execute tbone#buffer_command('Tput', <q-args>, '', 'save-buffer', (<line1>-<bang>0).'read')\ncommand! -bar -bang -nargs=? -complete=custom,tbone#complete_buffers -range Tyank\n      \\ execute tbone#buffer_command('Tyank', <q-args>, 'silent <line1>,<line2>write', 'load-buffer', '')\ncommand! -bar -bang -nargs=? -range -complete=custom,tbone#complete_panes Twrite\n      \\ execute tbone#write_command(<bang>0, <line1>, <line2>, <count>, <q-args>)\n\naugroup tbone_reign_supreme_over_tmux_command\n  autocmd!\n  autocmd VimEnter *\n        \\ command! -bar -bang -nargs=? -complete=custom,tbone#complete_command Tmux\n        \\       execute tbone#mux_command(<q-args>)\naugroup END\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/Makefile",
    "content": "all : webapi-vim.zip\n\nremove-zip:\n\t-rm -f doc/tags\n\t-rm -f webapi-vim.zip\n\nwebapi-vim.zip: remove-zip\n\tzip -r webapi-vim.zip autoload doc README\n\nrelease: webapi-vim.zip\n\tvimup update-script webapi.vim\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/README",
    "content": "webapi-vim: Vim Interface to Web API\n\nDescription:\n    An Interface to WEB APIs.\n    Currently this library supports the following protocols:\n\n    * Basic HTTP\n    * OAuth\n    * Atompub\n    * SOAP (in progress)\n    * XMLRPC\n    * MetaWeblog API\n\n    This library contains:\n        XML Parser\n        HTML Parser(Hack Way)\n        JSON Parser\n        BASE64 Hash Algorithm\n        SHA1 Hash Algorithm\n        HMAC HASH Algorithm\n        Bit Operation Library\n        Converter for \"UTF-8 to Unicode\"\n\nRequirements:\n\n    curl command : http://curl.haxx.se/\n\nThanks To:\n\n    Yukihiro Nakadaira : http://sites.google.com/site/yukihironakadaira/\n        autoload/base64.vim (I added small changes)\n        autoload/hmac.vim\n        autoload/sha1.vim\n\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/autoload/webapi/atom.vim",
    "content": "\" atom\n\" Last Change: 2010-09-10\n\" Maintainer:   Yasuhiro Matsumoto <mattn.jp@gmail.com>\n\" License:      This file is placed in the public domain.\n\" Reference:\n\"   http://tools.ietf.org/rfc/rfc5023.txt\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nlet s:system = function(get(g:, 'webapi#system_function', 'system'))\n\nlet s:author_template = {\n\\ \"name\": \"\",\n\\}\n\nlet s:link_template = {\n\\ \"rel\": \"\",\n\\ \"href\": \"\",\n\\}\n\nlet s:category_template = {\n\\ \"term\": \"\",\n\\ \"scheme\": \"\",\n\\ \"label\": \"\",\n\\}\n\nlet s:feed_template = {\n\\ \"id\": \"\",\n\\ \"icon\": \"\",\n\\ \"logo\": \"\",\n\\ \"title\": \"\",\n\\ \"link\": [],\n\\ \"category\": [],\n\\ \"author\": [],\n\\ \"contirubutor\": [],\n\\ \"entry\": [],\n\\}\n\nlet s:entry_template = {\n\\ \"id\": \"\",\n\\ \"icon\": \"\",\n\\ \"logo\": \"\",\n\\ \"title\": \"\",\n\\ \"link\": [],\n\\ \"category\": [],\n\\ \"app:control\": {},\n\\ \"author\": [],\n\\ \"contirubutor\": [],\n\\ \"copyright\": \"\",\n\\ \"content\": \"\",\n\\ \"content.type\": \"text/plain\",\n\\ \"content.mode\": \"escaped\",\n\\ \"summary\": \"\",\n\\ \"created\": \"\",\n\\ \"updated\": \"\",\n\\}\n\nfor s:name in ['author', 'link', 'category', 'feed', 'entry']\n  for s:key in keys(eval('s:'.s:name.'_template'))\n    let key = substitute(s:key, '\\.\\(.\\)', '\\=toupper(submatch(1))', '')\n    let key = substitute(key, ':\\(.\\)', '\\=toupper(submatch(1))', '')\n    exe \"function s:\".s:name.\"_template.set\".toupper(key[0]).key[1:].\"(v) dict\\n\"\n    \\. \"  let self['\".s:key.\"'] = a:v\\n\"\n    \\. \"endfunction\\n\"\n    exe \"function s:\".s:name.\"_template.get\".toupper(key[0]).key[1:].\"() dict\\n\"\n    \\. \"  return self['\".s:key.\"']\\n\"\n    \\. \"endfunction\\n\"\n  endfor\nendfor\nfunction s:entry_template.setContentFromFile(file) dict\n  let quote = &shellxquote == '\"' ?  \"'\" : '\"'\n  let bits = substitute(s:system(\"xxd -ps \".quote.a:file.quote), \"[ \\n\\r]\", '', 'g')\n  let self['mode'] = \"base64\"\n  let self['content'] = webapi#base64#b64encodebin(bits)\nendfunction\n\nunlet s:name\nunlet s:key\n\nfunction! webapi#atom#newEntry()\n  return deepcopy(s:entry_template)\nendfunction\n\nfunction! s:createXml(entry)\n  let entry = webapi#xml#createElement(\"entry\")\n  let entry.attr[\"xmlns\"]     = \"http://purl.org/atom/ns#\"\n  let entry.attr[\"xmlns:app\"] = \"http://www.w3.org/2007/app\"\n\n  for key in keys(a:entry)\n    let l:keytype = type(a:entry[key])\n    if l:keytype == 1 && key !~ '\\.'\n      let node = webapi#xml#createElement(key)\n      call node.value(a:entry[key])\n      if key == \"content\"\n        let node.attr[\"type\"] = a:entry['content.type']\n        let node.attr[\"mode\"] = a:entry['content.mode']\n      endif\n      call add(entry.child, node)\n    elseif l:keytype == 3\n      if key == \"category\"\n        for l:category in a:entry['category']\n          let node = webapi#xml#createElement(key)\n          let node.attr[\"term\"] = l:category\n          call add(entry.child, node)\n        endfor\n      endif\n    elseif l:keytype == 4\n      let node = webapi#xml#createElement(key)\n      if key == \"app:control\"\n        let l:draft_node = webapi#xml#createElement(\"app:draft\")\n        if exists(\"a:entry['app:control']['app:draft']\")\n          call l:draft_node.value(a:entry['app:control']['app:draft'])\n        else\n          call l:draft_node.value('no')\n        endif\n        call add(node.child, l:draft_node)\n      endif\n      call add(entry.child, node)\n    endif\n  endfor\n  let xml = '<?xml version=\"1.0\" encoding=\"utf-8\"?>' . entry.toString()\n  return iconv(xml, &encoding, \"utf-8\")\nendfunction\n\nfunction! s:createWsse(user, pass)\n  let now = localtime()\n  let nonce = webapi#sha1#sha1(now . \" \" . now)[0:28]\n  let created = strftime(\"%Y-%m-%dT%H:%M:%SZ\", now)\n  let passworddigest = webapi#base64#b64encodebin(webapi#sha1#sha1(nonce.created.a:pass))\n  let nonce = webapi#base64#b64encode(nonce)\n  return 'UsernameToken Username=\"'.a:user.'\", PasswordDigest=\"'.passworddigest.'\", Nonce=\"'.nonce.'\", Created=\"'.created.'\"'\nendfunction\n\nfunction! webapi#atom#deleteEntry(uri, user, pass)\n  let res = webapi#http#post(a:uri, \"\",\n    \\ {\n    \\   \"Content-Type\": \"application/x.atom+xml\",\n    \\   \"X-WSSE\": s:createWsse(a:user, a:pass)\n    \\ }, \"DELETE\")\n  return res\nendfunction\n\nfunction! webapi#atom#updateEntry(uri, user, pass, entry, ...)\n  let headdata = a:0 > 0 ? a:000[0] : {}\n  let headdata[\"Content-Type\"] = \"application/x.atom+xml\"\n  let headdata[\"X-WSSE\"] = s:createWsse(a:user, a:pass)\n  let res = webapi#http#post(a:uri, s:createXml(a:entry), headdata, \"PUT\")\n  let location = filter(res.header, 'v:val =~ \"^Location:\"')\n  if len(location)\n    return split(location[0], '\\s*:\\s\\+')[1]\n  endif\n  return ''\nendfunction\n\nfunction! webapi#atom#createEntry(uri, user, pass, entry, ...)\n  let headdata = a:0 > 0 ? a:000[0] : {}\n  let headdata[\"Content-Type\"] = \"application/x.atom+xml\"\n  let headdata[\"X-WSSE\"] = s:createWsse(a:user, a:pass)\n  let headdata[\"WWW-Authenticate\"] = \"WSSE profile=\\\"UsernameToken\\\"\"\n  let res = webapi#http#post(a:uri, s:createXml(a:entry), headdata, \"POST\")\n  let location = filter(res.header, 'v:val =~ \"^Location:\"')\n  if len(location)\n    return split(location[0], '\\s*:\\s\\+')[1]\n  endif\n  return ''\nendfunction\n\nfunction! s:parse_node(target, parent)\n  for node in a:parent.child\n    if type(node) != 4 || !has_key(a:target, node.name)\n      unlet node\n      continue\n    endif\n    if node.name == 'content'\n      let a:target[node.name] = node.value()\n      if has_key(node.attr, 'type')\n        let a:target['content.type'] = node.attr['type']\n      endif\n      if has_key(node.attr, 'type')\n        let a:target['content.type'] = node.attr['type']\n      endif\n    elseif node.name == 'link'\n      let link = deepcopy(s:link_template)\n      for attr in keys(node.attr)\n        if !has_key(link, attr)\n          continue\n        endif\n        let link[attr] = node.attr[attr]\n      endfor\n      call add(a:target.link, link)\n    elseif node.name == 'author'\n      let author = deepcopy(s:author_template)\n      for item in node.child\n        if type(item) == 4 && has_key(author, item.name)\n          let author[item.name] = item.value()\n        endif\n        unlet item\n      endfor\n      call add(a:target.author, author)\n    elseif node.name == 'entry'\n      let entry = deepcopy(s:entry_template)\n      call s:parse_node(entry, node)\n      call add(a:target.entry, entry)\n    elseif node.name == 'category'\n      let l:category           = deepcopy(s:category_template)\n      let l:category['term']   = has_key(node.attr, 'term')   ? node.attr['term']   : ''\n      let l:category['scheme'] = has_key(node.attr, 'scheme') ? node.attr['scheme'] : ''\n      let l:category['label']  = has_key(node.attr, 'label')  ? node.attr['label']  : ''\n      call add(a:target.category, l:category)\n    elseif node.name == 'app:control'\n      for l:item in node.child\n        if type(l:item) == 4 && l:item.name == 'app:draft'\n          let a:target['app:control'] = {'app:draft': l:item.child[0]}\n        endif\n        unlet l:item\n      endfor\n    elseif type(a:target[node.name]) == 3\n      call add(a:target[node.name], a:parent.value())\n    else\n      let a:target[node.name] = node.value()\n    endif\n    unlet node\n  endfor\nendfunction\n\nfunction! webapi#atom#getFeed(uri, user, pass)\n  let headdata = {}\n  if len(a:user) > 0 && len(a:pass) > 0\n    let headdata[\"X-WSSE\"] = s:createWsse(a:user, a:pass)\n  endif\n  let res = webapi#http#get(a:uri, {}, headdata)\n  let dom = webapi#xml#parse(res.content)\n  let feed = deepcopy(s:feed_template)\n  call s:parse_node(feed, dom)\n  return feed\nendfunction\n\nfunction! webapi#atom#getService(uri, user, pass)\n  let headdata = {}\n  if len(a:user) > 0 && len(a:pass) > 0\n    let headdata[\"X-WSSE\"] = s:createWsse(a:user, a:pass)\n  endif\n  let res = webapi#http#get(a:uri, {}, headdata)\n  return webapi#xml#parse(res.content)\nendfunction\n\nfunction! webapi#atom#getEntry(uri, user, pass)\n  let headdata = {}\n  if len(a:user) > 0 && len(a:pass) > 0\n    let headdata[\"X-WSSE\"] = s:createWsse(a:user, a:pass)\n  endif\n  let res = webapi#http#get(a:uri, {}, headdata)\n  let dom = webapi#xml#parse(res.content)\n  let entry = deepcopy(s:entry_template)\n  call s:parse_node(entry, dom)\n  return entry\nendfunction\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim:set et:\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/autoload/webapi/base64.vim",
    "content": "\" base64 codec\n\" Last Change: 2010-07-25\n\" Maintainer:   Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com>\n\" License:      This file is placed in the public domain.\n\" Reference:\n\"   [The Base16, Base32, and Base64 Data Encodings]\n\"   http://tools.ietf.org/rfc/rfc3548.txt\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! webapi#base64#b64encode(data)\n  let b64 = s:b64encode(s:str2bytes(a:data), s:standard_table, '=')\n  return join(b64, '')\nendfunction\n\nfunction! webapi#base64#b64encodebin(data)\n  let b64 = s:b64encode(s:binstr2bytes(a:data), s:standard_table, '=')\n  return join(b64, '')\nendfunction\n\nfunction! webapi#base64#b64decode(data)\n  let bytes = s:b64decode(split(a:data, '\\zs'), s:standard_table, '=')\n  return s:bytes2str(bytes)\nendfunction\n\nfunction! webapi#base64#test()\n  if webapi#base64#b64encode(\"hello, world\") ==# \"aGVsbG8sIHdvcmxk\"\n    echo \"test1: ok\"\n  else\n    echoerr \"test1: failed\"\n  endif\n  if webapi#base64#b64encode(\"hello, worldx\") ==# \"aGVsbG8sIHdvcmxkeA==\"\n    echo \"test2: ok\"\n  else\n    echoerr \"test2: failed\"\n  endif\n  if webapi#base64#b64encode(\"hello, worldxx\") ==# \"aGVsbG8sIHdvcmxkeHg=\"\n    echo \"test3: ok\"\n  else\n    echoerr \"test3: falied\"\n  endif\n  if webapi#base64#b64encode(\"hello, worldxxx\") ==# \"aGVsbG8sIHdvcmxkeHh4\"\n    echo \"test4: ok\"\n  else\n    echoerr \"test4: falied\"\n  endif\n  if webapi#base64#b64decode(webapi#base64#b64encode(\"hello, world\")) ==# \"hello, world\"\n    echo \"test5: ok\"\n  else\n    echoerr \"test5: failed\"\n  endif\n  if webapi#base64#b64decode(webapi#base64#b64encode(\"hello, worldx\")) ==# \"hello, worldx\"\n    echo \"test6: ok\"\n  else\n    echoerr \"test6: failed\"\n  endif\n  if webapi#base64#b64decode(webapi#base64#b64encode(\"hello, worldxx\")) ==# \"hello, worldxx\"\n    echo \"test7: ok\"\n  else\n    echoerr \"test7: failed\"\n  endif\n  if webapi#base64#b64decode(webapi#base64#b64encode(\"hello, worldxxx\")) ==# \"hello, worldxxx\"\n    echo \"test8: ok\"\n  else\n    echoerr \"test8: failed\"\n  endif\nendfunction\n\nlet s:standard_table = [\n      \\ \"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\",\"K\",\"L\",\"M\",\"N\",\"O\",\"P\",\n      \\ \"Q\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\n      \\ \"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\n      \\ \"w\",\"x\",\"y\",\"z\",\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"+\",\"/\"]\n\nlet s:urlsafe_table = [\n      \\ \"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\",\"K\",\"L\",\"M\",\"N\",\"O\",\"P\",\n      \\ \"Q\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\n      \\ \"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\n      \\ \"w\",\"x\",\"y\",\"z\",\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"-\",\"_\"]\n\nfunction! s:b64encode(bytes, table, pad)\n  let b64 = []\n  for i in range(0, len(a:bytes) - 1, 3)\n    let n = a:bytes[i] * 0x10000\n          \\ + get(a:bytes, i + 1, 0) * 0x100\n          \\ + get(a:bytes, i + 2, 0)\n    call add(b64, a:table[n / 0x40000])\n    call add(b64, a:table[n / 0x1000 % 0x40])\n    call add(b64, a:table[n / 0x40 % 0x40])\n    call add(b64, a:table[n % 0x40])\n  endfor\n  if len(a:bytes) % 3 == 1\n    let b64[-1] = a:pad\n    let b64[-2] = a:pad\n  endif\n  if len(a:bytes) % 3 == 2\n    let b64[-1] = a:pad\n  endif\n  return b64\nendfunction\n\nfunction! s:b64decode(b64, table, pad)\n  let a2i = {}\n  for i in range(len(a:table))\n    let a2i[a:table[i]] = i\n  endfor\n  let bytes = []\n  for i in range(0, len(a:b64) - 1, 4)\n    let n = a2i[a:b64[i]] * 0x40000\n          \\ + a2i[a:b64[i + 1]] * 0x1000\n          \\ + (a:b64[i + 2] == a:pad ? 0 : a2i[a:b64[i + 2]]) * 0x40\n          \\ + (a:b64[i + 3] == a:pad ? 0 : a2i[a:b64[i + 3]])\n    call add(bytes, n / 0x10000)\n    call add(bytes, n / 0x100 % 0x100)\n    call add(bytes, n % 0x100)\n  endfor\n  if a:b64[-1] == a:pad\n    unlet a:b64[-1]\n  endif\n  if a:b64[-2] == a:pad\n    unlet a:b64[-1]\n  endif\n  return bytes\nendfunction\n\nfunction! s:binstr2bytes(str)\n  return map(range(len(a:str)/2), 'eval(\"0x\".a:str[v:val*2 : v:val*2+1])')\nendfunction\n\nfunction! s:str2bytes(str)\n  return map(range(len(a:str)), 'char2nr(a:str[v:val])')\nendfunction\n\nfunction! s:bytes2str(bytes)\n  return eval('\"' . join(map(copy(a:bytes), 'printf(''\\x%02x'', v:val)'), '') . '\"')\nendfunction\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/autoload/webapi/bit.vim",
    "content": "let s:save_cpo = &cpo\nset cpo&vim\n\nfunction! webapi#bit#dec2bin(v)\n  let v = a:v\n  if v == 0 | return 0 | endif\n  let ret = \"\"\n  while v > 0\n    let i = v % 2\n    let ret = i . ret\n    let v = v / 2\n  endwhile\n  return ret\nendfunction\n\nfunction! webapi#bit#bin2dec(v)\n  let v = a:v\n  if len(v) == 0 | return 0 | endif\n  let i = 1\n  let ret = \"\"\n  for n in reverse(split(v, '\\zs'))\n    if n == 1\n      let ret = ret + i\n    endif\n    let i = i * 2\n  endfor\n  return ret\nendfunction\n\nfunction! webapi#bit#or(a,b)\n  let a = webapi#bit#dec2bin(a:a)\n  let b = webapi#bit#dec2bin(a:b)\n  return webapi#bit#bin2dec(tr((a + b), '2', '1'))\nendfunction\n\nfunction! webapi#bit#and(a,b)\n  let a = webapi#bit#dec2bin(a:a)\n  let b = webapi#bit#dec2bin(a:b)\n  return webapi#bit#bin2dec(tr((a + b), '21', '10'))\nendfunction\n\nfunction! webapi#bit#shift(a,b)\n  let a = webapi#bit#dec2bin(a:a)\n  let a = repeat('0', 32-len(a)) . a\n  if a:b < 0\n    let a = (repeat('0', -a:b) . a[: a:b-1])[-32:]\n  elseif a:b > 0\n    let a = (a . repeat('0', a:b))[-32:]\n  endif\n  return webapi#bit#bin2dec(a)\nendfunction\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim:set et:\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/autoload/webapi/feed.vim",
    "content": "let s:save_cpo = &cpo\nset cpo&vim\n\nfunction! s:attr(node, name)\n  let n = a:node.childNode(a:name)\n  if empty(n)\n    return \"\"\n  endif\n  return n.value()\nendfunction\n\nfunction! webapi#feed#parseURL(url)\n  let dom = webapi#xml#parseURL(a:url)\n  let items = []\n  if dom.name == 'rss'\n    let channel = dom.childNode('channel')\n    for item in channel.childNodes('item')\n      call add(items, {\n      \\  \"title\": s:attr(item, 'title'),\n      \\  \"link\": s:attr(item, 'link'),\n      \\  \"content\": s:attr(item, 'description'),\n      \\  \"id\": s:attr(item, 'guid'),\n      \\  \"date\": s:attr(item, 'pubDate'),\n      \\})\n    endfor\n  elseif dom.name == 'rdf:RDF'\n    for item in dom.childNodes('item')\n      call add(items, {\n      \\  \"title\": s:attr(item, 'title'),\n      \\  \"link\": s:attr(item, 'link'),\n      \\  \"content\": s:attr(item, 'description'),\n      \\  \"id\": s:attr(item, 'guid'),\n      \\  \"date\": s:attr(item, 'dc:date'),\n      \\})\n    endfor\n  elseif dom.name == 'feed'\n    for item in dom.childNodes('entry')\n      call add(items, {\n      \\  \"title\": s:attr(item, 'title'),\n      \\  \"link\": item.childNode('link').attr['href'],\n      \\  \"content\": s:attr(item, 'content'),\n      \\  \"id\": s:attr(item, 'id'),\n      \\  \"date\": s:attr(item, 'updated'),\n      \\})\n    endfor\n  endif\n  return items\nendfunction\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim:set et:\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/autoload/webapi/hmac.vim",
    "content": "\" This is a port of rfc2104 hmac function.\n\" http://www.ietf.org/rfc/rfc2104.txt\n\" Last Change:  2010-02-13\n\" Maintainer:   Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com>\n\" License: This file is placed in the public domain.\n\n\" @param mixed key List or String\n\" @param mixed text List or String\n\" @param Funcref hash   function digest_hex(key:List, text:List):String\n\" @param Number blocksize\nfunction webapi#hmac#hmac(key, text, hash, blocksize)\n  let key = (type(a:key) == type(\"\")) ? s:str2bytes(a:key) : a:key\n  let text = (type(a:text) == type(\"\")) ? s:str2bytes(a:text) : a:text\n  return s:Hmac(key, text, a:hash, a:blocksize)\nendfunction\n\nfunction webapi#hmac#md5(key, text)\n  return webapi#hmac#hmac(a:key, a:text, 'webapi#md5#md5bin', 64)\nendfunction\n\nfunction webapi#hmac#sha1(key, text)\n  return webapi#hmac#hmac(a:key, a:text, 'webapi#sha1#sha1bin', 64)\nendfunction\n\n\" http://www.ietf.org/rfc/rfc2202.txt\n\" Test Cases for HMAC-MD5 and HMAC-SHA-1\nfunction webapi#hmac#test()\n  \" Test Cases for HMAC-MD5\n  call s:test(\"md5: 1\", \"webapi#hmac#md5\",\n        \\ repeat(\"\\x0b\", 16),\n        \\ \"Hi There\",\n        \\ \"9294727a3638bb1c13f48ef8158bfc9d\")\n  call s:test(\"md5: 2\", \"webapi#hmac#md5\",\n        \\ \"Jefe\",\n        \\ \"what do ya want for nothing?\",\n        \\ \"750c783e6ab0b503eaa86e310a5db738\")\n  call s:test(\"md5: 3\", \"webapi#hmac#md5\",\n        \\ repeat(\"\\xaa\", 16),\n        \\ repeat(\"\\xdd\", 50),\n        \\ \"56be34521d144c88dbb8c733f0e8b3f6\")\n  call s:test(\"md5: 4\", \"webapi#hmac#md5\",\n        \\ s:hex2bytes(\"0102030405060708090a0b0c0d0e0f10111213141516171819\"),\n        \\ repeat([0xcd], 50),\n        \\ \"697eaf0aca3a3aea3a75164746ffaa79\")\n  call s:test(\"md5: 5\", \"webapi#hmac#md5\",\n        \\ repeat(\"\\x0c\", 16),\n        \\ \"Test With Truncation\",\n        \\ \"56461ef2342edc00f9bab995690efd4c\")\n  call s:test(\"md5: 6\", \"webapi#hmac#md5\",\n        \\ repeat(\"\\xaa\", 80),\n        \\ \"Test Using Larger Than Block-Size Key - Hash Key First\",\n        \\ \"6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd\")\n  call s:test(\"md5: 7\", \"webapi#hmac#md5\",\n        \\ repeat(\"\\xaa\", 80),\n        \\ \"Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data\",\n        \\ \"6f630fad67cda0ee1fb1f562db3aa53e\")\n\n  \" Test Cases for HMAC-SHA1\n  call s:test(\"sha1: 1\", \"webapi#hmac#sha1\",\n        \\ repeat(\"\\x0b\", 20),\n        \\ \"Hi There\",\n        \\ \"b617318655057264e28bc0b6fb378c8ef146be00\")\n  call s:test(\"sha1: 2\", \"webapi#hmac#sha1\",\n        \\ \"Jefe\",\n        \\ \"what do ya want for nothing?\",\n        \\ \"effcdf6ae5eb2fa2d27416d5f184df9c259a7c79\")\n  call s:test(\"sha1: 3\", \"webapi#hmac#sha1\",\n        \\ repeat(\"\\xaa\", 20),\n        \\ repeat(\"\\xdd\", 50),\n        \\ \"125d7342b9ac11cd91a39af48aa17b4f63f175d3\")\n  call s:test(\"sha1: 4\", \"webapi#hmac#sha1\",\n        \\ s:hex2bytes(\"0102030405060708090a0b0c0d0e0f10111213141516171819\"),\n        \\ repeat([0xcd], 50),\n        \\ \"4c9007f4026250c6bc8414f9bf50c86c2d7235da\")\n  call s:test(\"sha1: 5\", \"webapi#hmac#sha1\",\n        \\ repeat(\"\\x0c\", 20),\n        \\ \"Test With Truncation\",\n        \\ \"4c1a03424b55e07fe7f27be1d58bb9324a9a5a04\")\n  call s:test(\"sha1: 6\", \"webapi#hmac#sha1\",\n        \\ repeat(\"\\xaa\", 80),\n        \\ \"Test Using Larger Than Block-Size Key - Hash Key First\",\n        \\ \"aa4ae5e15272d00e95705637ce8a3b55ed402112\")\n  call s:test(\"sha1: 7\", \"webapi#hmac#sha1\",\n        \\ repeat(\"\\xaa\", 80),\n        \\ \"Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data\",\n        \\ \"e8e99d0f45237d786d6bbaa7965c7808bbff1a91\")\nendfunction\n\nfunction s:test(name, func, key, data, digest)\n  let result = call(a:func, [a:key, a:data])\n  echo \"test_case:\" a:name\n  echo \"expect:\" a:digest\n  echo \"result:\" result\n  if a:digest ==? result\n    echo \"test: OK\"\n  else\n    echohl Error\n    echo \"test: NG\"\n    echohl None\n  endif\nendfunction\n\n\" @param List key\n\" @param List text\n\" @param Funcref hash\n\" @param Number blocksize\nfunction! s:Hmac(key, text, hash, blocksize)\n  let key = a:key\n  if len(key) > a:blocksize\n    let key = s:hex2bytes(call(a:hash, [key]))\n  endif\n  let k_ipad = repeat([0], a:blocksize)\n  let k_opad = repeat([0], a:blocksize)\n  for i in range(a:blocksize)\n    let k_ipad[i] = s:bitwise_xor(get(key, i, 0), 0x36)\n    let k_opad[i] = s:bitwise_xor(get(key, i, 0), 0x5c)\n  endfor\n  let hash1 = s:hex2bytes(call(a:hash, [k_ipad + a:text]))\n  let hmac = call(a:hash, [k_opad + hash1])\n  return hmac\nendfunction\n\nfunction! s:str2bytes(str)\n  return map(range(len(a:str)), 'char2nr(a:str[v:val])')\nendfunction\n\nfunction! s:hex2bytes(str)\n  return map(split(a:str, '..\\zs'), 'str2nr(v:val, 16)')\nendfunction\n\nlet s:xor = [\n      \\ [0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF],\n      \\ [0x1, 0x0, 0x3, 0x2, 0x5, 0x4, 0x7, 0x6, 0x9, 0x8, 0xB, 0xA, 0xD, 0xC, 0xF, 0xE],\n      \\ [0x2, 0x3, 0x0, 0x1, 0x6, 0x7, 0x4, 0x5, 0xA, 0xB, 0x8, 0x9, 0xE, 0xF, 0xC, 0xD],\n      \\ [0x3, 0x2, 0x1, 0x0, 0x7, 0x6, 0x5, 0x4, 0xB, 0xA, 0x9, 0x8, 0xF, 0xE, 0xD, 0xC],\n      \\ [0x4, 0x5, 0x6, 0x7, 0x0, 0x1, 0x2, 0x3, 0xC, 0xD, 0xE, 0xF, 0x8, 0x9, 0xA, 0xB],\n      \\ [0x5, 0x4, 0x7, 0x6, 0x1, 0x0, 0x3, 0x2, 0xD, 0xC, 0xF, 0xE, 0x9, 0x8, 0xB, 0xA],\n      \\ [0x6, 0x7, 0x4, 0x5, 0x2, 0x3, 0x0, 0x1, 0xE, 0xF, 0xC, 0xD, 0xA, 0xB, 0x8, 0x9],\n      \\ [0x7, 0x6, 0x5, 0x4, 0x3, 0x2, 0x1, 0x0, 0xF, 0xE, 0xD, 0xC, 0xB, 0xA, 0x9, 0x8],\n      \\ [0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7],\n      \\ [0x9, 0x8, 0xB, 0xA, 0xD, 0xC, 0xF, 0xE, 0x1, 0x0, 0x3, 0x2, 0x5, 0x4, 0x7, 0x6],\n      \\ [0xA, 0xB, 0x8, 0x9, 0xE, 0xF, 0xC, 0xD, 0x2, 0x3, 0x0, 0x1, 0x6, 0x7, 0x4, 0x5],\n      \\ [0xB, 0xA, 0x9, 0x8, 0xF, 0xE, 0xD, 0xC, 0x3, 0x2, 0x1, 0x0, 0x7, 0x6, 0x5, 0x4],\n      \\ [0xC, 0xD, 0xE, 0xF, 0x8, 0x9, 0xA, 0xB, 0x4, 0x5, 0x6, 0x7, 0x0, 0x1, 0x2, 0x3],\n      \\ [0xD, 0xC, 0xF, 0xE, 0x9, 0x8, 0xB, 0xA, 0x5, 0x4, 0x7, 0x6, 0x1, 0x0, 0x3, 0x2],\n      \\ [0xE, 0xF, 0xC, 0xD, 0xA, 0xB, 0x8, 0x9, 0x6, 0x7, 0x4, 0x5, 0x2, 0x3, 0x0, 0x1],\n      \\ [0xF, 0xE, 0xD, 0xC, 0xB, 0xA, 0x9, 0x8, 0x7, 0x6, 0x5, 0x4, 0x3, 0x2, 0x1, 0x0]\n      \\ ]\n\nfunction! s:bitwise_xor(a, b)\n  let a = a:a < 0 ? a:a - 0x80000000 : a:a\n  let b = a:b < 0 ? a:b - 0x80000000 : a:b\n  let r = 0\n  let n = 1\n  while a || b\n    let r += s:xor[a % 0x10][b % 0x10] * n\n    let a = a / 0x10\n    let b = b / 0x10\n    let n = n * 0x10\n  endwhile\n  if (a:a < 0) != (a:b < 0)\n    let r += 0x80000000\n  endif\n  return r\nendfunction\n\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/autoload/webapi/html.vim",
    "content": "\" html\n\" Last Change: 2010-09-10\n\" Maintainer:   Yasuhiro Matsumoto <mattn.jp@gmail.com>\n\" License:      This file is placed in the public domain.\n\" Reference:\n\"\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! s:nr2byte(nr)\n  if a:nr < 0x80\n    return nr2char(a:nr)\n  elseif a:nr < 0x800\n    return nr2char(a:nr/64+192).nr2char(a:nr%64+128)\n  else\n    return nr2char(a:nr/4096%16+224).nr2char(a:nr/64%64+128).nr2char(a:nr%64+128)\n  endif\nendfunction\n\nfunction! s:nr2enc_char(charcode)\n  if &encoding == 'utf-8'\n    return nr2char(a:charcode)\n  endif\n  let char = s:nr2byte(a:charcode)\n  if strlen(char) > 1\n    let char = strtrans(iconv(char, 'utf-8', &encoding))\n  endif\n  return char\nendfunction\n\nfunction! webapi#html#decodeEntityReference(str)\n  let str = a:str\n  let str = substitute(str, '&gt;', '>', 'g')\n  let str = substitute(str, '&lt;', '<', 'g')\n  let str = substitute(str, '&quot;', '\"', 'g')\n  let str = substitute(str, '&apos;', \"'\", 'g')\n  let str = substitute(str, '&nbsp;', ' ', 'g')\n  let str = substitute(str, '&yen;', '\\&#65509;', 'g')\n  let str = substitute(str, '&#\\(\\d\\+\\);', '\\=s:nr2enc_char(submatch(1))', 'g')\n  let str = substitute(str, '&amp;', '\\&', 'g')\n  let str = substitute(str, '&raquo;', '>', 'g')\n  let str = substitute(str, '&laquo;', '<', 'g')\n  return str\nendfunction\n\nfunction! webapi#html#encodeEntityReference(str)\n  let str = a:str\n  let str = substitute(str, '&', '\\&amp;', 'g')\n  let str = substitute(str, '>', '\\&gt;', 'g')\n  let str = substitute(str, '<', '\\&lt;', 'g')\n  let str = substitute(str, \"\\n\", '\\&#x0d;', 'g')\n  let str = substitute(str, '\"', '\\&quot;', 'g')\n  let str = substitute(str, \"'\", '\\&apos;', 'g')\n  let str = substitute(str, ' ', '\\&nbsp;', 'g')\n  return str\nendfunction\n\nfunction! webapi#html#parse(html)\n  let html = substitute(a:html, '<\\(area\\|base\\|basefont\\|br\\|nobr\\|col\\|frame\\|hr\\|img\\|input\\|isindex\\|link\\|meta\\|param\\|embed\\|keygen\\|command\\)\\([^>]*[^/]\\|\\)>', '<\\1\\2/>', 'g')\n  return webapi#xml#parse(html)\nendfunction\n\nfunction! webapi#html#parseFile(fname)\n  return webapi#html#parse(join(readfile(a:fname), \"\\n\"))\nendfunction\n\nfunction! webapi#html#parseURL(url)\n  return webapi#html#parse(webapi#http#get(a:url).content)\nendfunction\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim:set et:\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/autoload/webapi/http.vim",
    "content": "\" http\n\" Last Change: 2010-09-10\n\" Maintainer:   Yasuhiro Matsumoto <mattn.jp@gmail.com>\n\" License:      This file is placed in the public domain.\n\" Reference:\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nlet s:system = function(get(g:, 'webapi#system_function', 'system'))\n\nfunction! s:nr2byte(nr)\n  if a:nr < 0x80\n    return nr2char(a:nr)\n  elseif a:nr < 0x800\n    return nr2char(a:nr/64+192).nr2char(a:nr%64+128)\n  elseif a:nr < 0x10000\n    return nr2char(a:nr/4096%16+224).nr2char(a:nr/64%64+128).nr2char(a:nr%64+128)\n  elseif a:nr < 0x200000\n    return nr2char(a:nr/262144%16+240).nr2char(a:nr/4096/16+128).nr2char(a:nr/64%64+128).nr2char(a:nr%64+128)\n  elseif a:nr < 0x4000000\n    return nr2char(a:nr/16777216%16+248).nr2char(a:nr/262144%16+128).nr2char(a:nr/4096/16+128).nr2char(a:nr/64%64+128).nr2char(a:nr%64+128)\n  else\n    return nr2char(a:nr/1073741824%16+252).nr2char(a:nr/16777216%16+128).nr2char(a:nr/262144%16+128).nr2char(a:nr/4096/16+128).nr2char(a:nr/64%64+128).nr2char(a:nr%64+128)\n  endif\nendfunction\n\nfunction! s:nr2enc_char(charcode)\n  if &encoding == 'utf-8'\n    return nr2char(a:charcode)\n  endif\n  let char = s:nr2byte(a:charcode)\n  if strlen(char) > 1\n    let char = strtrans(iconv(char, 'utf-8', &encoding))\n  endif\n  return char\nendfunction\n\nfunction! s:nr2hex(nr)\n  let n = a:nr\n  let r = \"\"\n  while n\n    let r = '0123456789ABCDEF'[n % 16] . r\n    let n = n / 16\n  endwhile\n  return r\nendfunction\n\nfunction! s:urlencode_char(c, ...)\n  let is_binary = get(a:000, 1)\n  if !is_binary\n    let c = iconv(a:c, &encoding, \"utf-8\")\n    if c == \"\"\n      let c = a:c\n    endif\n  endif\n  let s = \"\"\n  for i in range(strlen(c))\n    let s .= printf(\"%%%02X\", char2nr(c[i]))\n  endfor\n  return s\nendfunction\n\nfunction! webapi#http#decodeURI(str)\n  let ret = a:str\n  let ret = substitute(ret, '+', ' ', 'g')\n  let ret = substitute(ret, '%\\(\\x\\x\\)', '\\=printf(\"%c\", str2nr(submatch(1), 16))', 'g')\n  return ret\nendfunction\n\nfunction! webapi#http#escape(str)\n  return substitute(a:str, '[^a-zA-Z0-9_.~/-]', '\\=s:urlencode_char(submatch(0))', 'g')\nendfunction\n\nfunction! webapi#http#encodeURI(items, ...)\n  let is_binary = get(a:000, 1)\n  let ret = ''\n  if type(a:items) == 4\n    for key in sort(keys(a:items))\n      if strlen(ret) | let ret .= \"&\" | endif\n      let ret .= key . \"=\" . webapi#http#encodeURI(a:items[key])\n    endfor\n  elseif type(a:items) == 3\n    for item in sort(a:items)\n      if strlen(ret) | let ret .= \"&\" | endif\n      let ret .= item\n    endfor\n  else\n    let ret = substitute(a:items, '[^a-zA-Z0-9_.~-]', '\\=s:urlencode_char(submatch(0), is_binary)', 'g')\n  endif\n  return ret\nendfunction\n\nfunction! webapi#http#encodeURIComponent(items)\n  let ret = ''\n  if type(a:items) == 4\n    for key in sort(keys(a:items))\n      if strlen(ret) | let ret .= \"&\" | endif\n      let ret .= key . \"=\" . webapi#http#encodeURIComponent(a:items[key])\n    endfor\n  elseif type(a:items) == 3\n    for item in sort(a:items)\n      if strlen(ret) | let ret .= \"&\" | endif\n      let ret .= item\n    endfor\n  else\n    let items = iconv(a:items, &enc, \"utf-8\")\n    let len = strlen(items)\n    let i = 0\n    while i < len\n      let ch = items[i]\n      if ch =~# '[0-9A-Za-z-._~!''()*]'\n        let ret .= ch\n      elseif ch == ' '\n        let ret .= '+'\n      else\n        let ret .= '%' . substitute('0' . s:nr2hex(char2nr(ch)), '^.*\\(..\\)$', '\\1', '')\n      endif\n      let i = i + 1\n    endwhile\n  endif\n  return ret\nendfunction\n\nfunction! webapi#http#get(url, ...)\n  let getdata = a:0 > 0 ? a:000[0] : {}\n  let headdata = a:0 > 1 ? a:000[1] : {}\n  let follow = a:0 > 2 ? a:000[2] : 1\n  let url = a:url\n  let getdatastr = webapi#http#encodeURI(getdata)\n  if strlen(getdatastr)\n    let url .= \"?\" . getdatastr\n  endif\n  if executable('curl')\n    let command = printf('curl %s -s -k -i', follow ? '-L' : '')\n    let quote = &shellxquote == '\"' ?  \"'\" : '\"'\n    for key in keys(headdata)\n      if has('win32')\n        let command .= \" -H \" . quote . key . \": \" . substitute(headdata[key], '\"', '\"\"\"', 'g') . quote\n      else\n        let command .= \" -H \" . quote . key . \": \" . headdata[key] . quote\n      endif\n    endfor\n    let command .= \" \".quote.url.quote\n    let res = s:system(command)\n  elseif executable('wget')\n    let command = printf('wget -O- --save-headers --server-response -q %s', follow ? '-L' : '')\n    let quote = &shellxquote == '\"' ?  \"'\" : '\"'\n    for key in keys(headdata)\n      if has('win32')\n        let command .= \" --header=\" . quote . key . \": \" . substitute(headdata[key], '\"', '\"\"\"', 'g') . quote\n      else\n        let command .= \" --header=\" . quote . key . \": \" . headdata[key] . quote\n      endif\n    endfor\n    let command .= \" \".quote.url.quote\n    let res = s:system(command)\n  else\n    throw \"require `curl` or `wget` command\"\n  endif\n  if follow != 0\n    while res =~ '^HTTP/1.\\d 3' || res =~ '^HTTP/1\\.\\d 200 Connection established' || res =~ '^HTTP/1\\.\\d 100 Continue'\n      let pos = stridx(res, \"\\r\\n\\r\\n\")\n      if pos != -1\n        let res = strpart(res, pos+4)\n      else\n        let pos = stridx(res, \"\\n\\n\")\n        let res = strpart(res, pos+2)\n      endif\n    endwhile\n  endif\n  let pos = stridx(res, \"\\r\\n\\r\\n\")\n  if pos != -1\n    let content = strpart(res, pos+4)\n  else\n    let pos = stridx(res, \"\\n\\n\")\n    let content = strpart(res, pos+2)\n  endif\n  let header = split(res[:pos-1], '\\r\\?\\n')\n  let matched = matchlist(get(header, 0), '^HTTP/1\\.\\d\\s\\+\\(\\d\\+\\)\\s\\+\\(.*\\)')\n  if !empty(matched)\n    let [status, message] = matched[1 : 2]\n    call remove(header, 0)\n  else\n    if v:shell_error || len(matched)\n      let [status, message] = ['500', \"Couldn't connect to host\"]\n    else\n      let [status, message] = ['200', 'OK']\n    endif\n  endif\n  return {\n  \\ \"status\" : status,\n  \\ \"message\" : message,\n  \\ \"header\" : header,\n  \\ \"content\" : content\n  \\}\nendfunction\n\nfunction! webapi#http#post(url, ...)\n  let postdata = a:0 > 0 ? a:000[0] : {}\n  let headdata = a:0 > 1 ? a:000[1] : {}\n  let method = a:0 > 2 ? a:000[2] : \"POST\"\n  let follow = a:0 > 3 ? a:000[3] : 1\n  let url = a:url\n  if type(postdata) == 4\n    let postdatastr = webapi#http#encodeURI(postdata)\n  else\n    let postdatastr = postdata\n  endif\n  let file = tempname()\n  if executable('curl')\n    let command = printf('curl %s -s -k -i -X %s', (follow ? '-L' : ''), len(method) ? method : 'POST')\n    let quote = &shellxquote == '\"' ?  \"'\" : '\"'\n    for key in keys(headdata)\n      if has('win32')\n        let command .= \" -H \" . quote . key . \": \" . substitute(headdata[key], '\"', '\"\"\"', 'g') . quote\n      else\n        let command .= \" -H \" . quote . key . \": \" . headdata[key] . quote\n      endif\n    endfor\n    let command .= \" \".quote.url.quote\n    call writefile(split(postdatastr, \"\\n\"), file, \"b\")\n    let res = s:system(command . \" --data-binary @\" . quote.file.quote)\n  elseif executable('wget')\n    let command = printf('wget -O- --save-headers --server-response -q %s', follow ? '-L' : '')\n    let headdata['X-HTTP-Method-Override'] = method\n    let quote = &shellxquote == '\"' ?  \"'\" : '\"'\n    for key in keys(headdata)\n      if has('win32')\n        let command .= \" --header=\" . quote . key . \": \" . substitute(headdata[key], '\"', '\"\"\"', 'g') . quote\n      else\n        let command .= \" --header=\" . quote . key . \": \" . headdata[key] . quote\n      endif\n    endfor\n    let command .= \" \".quote.url.quote\n    call writefile(split(postdatastr, \"\\n\"), file, \"b\")\n    let res = s:system(command . \" --post-data @\" . quote.file.quote)\n  else\n    throw \"require `curl` or `wget` command\"\n  endif\n  call delete(file)\n  if follow != 0\n    while res =~ '^HTTP/1.\\d 3' || res =~ '^HTTP/1\\.\\d 200 Connection established' || res =~ '^HTTP/1\\.\\d 100 Continue'\n      let pos = stridx(res, \"\\r\\n\\r\\n\")\n      if pos != -1\n        let res = strpart(res, pos+4)\n      else\n        let pos = stridx(res, \"\\n\\n\")\n        let res = strpart(res, pos+2)\n      endif\n    endwhile\n  endif\n  let pos = stridx(res, \"\\r\\n\\r\\n\")\n  if pos != -1\n    let content = strpart(res, pos+4)\n  else\n    let pos = stridx(res, \"\\n\\n\")\n    let content = strpart(res, pos+2)\n  endif\n  let header = split(res[:pos-1], '\\r\\?\\n')\n  let matched = matchlist(get(header, 0), '^HTTP/1\\.\\d\\s\\+\\(\\d\\+\\)\\s\\+\\(.*\\)')\n  if !empty(matched)\n    let [status, message] = matched[1 : 2]\n    call remove(header, 0)\n  else\n    if v:shell_error || len(matched)\n      let [status, message] = ['500', \"Couldn't connect to host\"]\n    else\n      let [status, message] = ['200', 'OK']\n    endif\n  endif\n  return {\n  \\ \"status\" : status,\n  \\ \"message\" : message,\n  \\ \"header\" : header,\n  \\ \"content\" : content\n  \\}\nendfunction\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim:set et:\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/autoload/webapi/json.vim",
    "content": "\" json\n\" Last Change: 2012-03-08\n\" Maintainer:   Yasuhiro Matsumoto <mattn.jp@gmail.com>\n\" License:      This file is placed in the public domain.\n\" Reference:\n\"\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! webapi#json#null()\n  return 0\nendfunction\n\nfunction! webapi#json#true()\n  return 1\nendfunction\n\nfunction! webapi#json#false()\n  return 0\nendfunction\n\nfunction! s:nr2byte(nr)\n  if a:nr < 0x80\n    return nr2char(a:nr)\n  elseif a:nr < 0x800\n    return nr2char(a:nr/64+192).nr2char(a:nr%64+128)\n  else\n    return nr2char(a:nr/4096%16+224).nr2char(a:nr/64%64+128).nr2char(a:nr%64+128)\n  endif\nendfunction\n\nfunction! s:nr2enc_char(charcode)\n  if &encoding == 'utf-8'\n    return nr2char(a:charcode)\n  endif\n  let char = s:nr2byte(a:charcode)\n  if strlen(char) > 1\n    let char = strtrans(iconv(char, 'utf-8', &encoding))\n  endif\n  return char\nendfunction\n\nfunction! s:fixup(val, tmp)\n  if type(a:val) == 0\n    return a:val\n  elseif type(a:val) == 1\n    if a:val == a:tmp.'null'\n      return function('webapi#json#null')\n    elseif a:val == a:tmp.'true'\n      return function('webapi#json#true')\n    elseif a:val == a:tmp.'false'\n      return function('webapi#json#false')\n    endif\n    return a:val\n  elseif type(a:val) == 2\n    return a:val\n  elseif type(a:val) == 3\n    return map(a:val, 's:fixup(v:val, a:tmp)')\n  elseif type(a:val) == 4\n    return map(a:val, 's:fixup(v:val, a:tmp)')\n  else\n    return string(a:val)\n  endif\nendfunction\n\nfunction! webapi#json#decode(json)\n  let json = iconv(a:json, \"utf-8\", &encoding)\n  if get(g:, 'webapi#json#parse_strict', 1) == 1 && substitute(substitute(substitute(\n    \\ json,\n    \\ '\\\\\\%([\"\\\\/bfnrt]\\|u[0-9a-fA-F]\\{4}\\)', '\\@', 'g'),\n    \\ '\"[^\\\"\\\\\\n\\r]*\\\"\\|true\\|false\\|null\\|-\\?\\d\\+'\n    \\ . '\\%(\\.\\d*\\)\\?\\%([eE][+\\-]\\{-}\\d\\+\\)\\?', ']', 'g'),\n    \\ '\\%(^\\|:\\|,\\)\\%(\\s*\\[\\)\\+', '', 'g') !~ '^[\\],:{} \\t\\n]*$'\n    throw json\n  endif\n  let json = substitute(json, '\\n', '', 'g')\n  let json = substitute(json, '\\\\u34;', '\\\\\"', 'g')\n  if v:version >= 703 && has('patch780')\n    let json = substitute(json, '\\\\u\\(\\x\\x\\x\\x\\)', '\\=iconv(nr2char(str2nr(submatch(1), 16), 1), \"utf-8\", &encoding)', 'g')\n  else\n    let json = substitute(json, '\\\\u\\(\\x\\x\\x\\x\\)', '\\=s:nr2enc_char(\"0x\".submatch(1))', 'g')\n  endif\n  if get(g:, 'webapi#json#allow_nil', 0) != 0\n    let tmp = '__WEBAPI_JSON__'\n    while 1\n      if stridx(json, tmp) == -1\n        break\n      endif\n      let tmp .= '_'\n    endwhile\n    let [null,true,false] = [\n    \\ tmp.'null',\n    \\ tmp.'true',\n    \\ tmp.'false']\n    sandbox let ret = eval(json)\n    call s:fixup(ret, tmp)\n  else\n    let [null,true,false] = [0,1,0]\n    sandbox let ret = eval(json)\n  endif\n  return ret\nendfunction\n\nfunction! webapi#json#encode(val)\n  if type(a:val) == 0\n    return a:val\n  elseif type(a:val) == 1\n    let json = '\"' . escape(a:val, '\\\"') . '\"'\n    let json = substitute(json, \"\\r\", '\\\\r', 'g')\n    let json = substitute(json, \"\\n\", '\\\\n', 'g')\n    let json = substitute(json, \"\\t\", '\\\\t', 'g')\n    let json = substitute(json, '\\([[:cntrl:]]\\)', '\\=printf(\"\\x%02d\", char2nr(submatch(1)))', 'g')\n    return iconv(json, &encoding, \"utf-8\")\n  elseif type(a:val) == 2\n    let s = string(a:val)\n    if s == \"function('webapi#json#null')\"\n      return 'null'\n    elseif s == \"function('webapi#json#true')\"\n      return 'true'\n    elseif s == \"function('webapi#json#false')\"\n      return 'false'\n    endif\n  elseif type(a:val) == 3\n    return '[' . join(map(copy(a:val), 'webapi#json#encode(v:val)'), ',') . ']'\n  elseif type(a:val) == 4\n    return '{' . join(map(keys(a:val), 'webapi#json#encode(v:val).\":\".webapi#json#encode(a:val[v:val])'), ',') . '}'\n  else\n    return string(a:val)\n  endif\nendfunction\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim:set et:\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/autoload/webapi/jsonrpc.vim",
    "content": "\" jsonrpc\n\" Last Change: 2012-03-08\n\" Maintainer:   Yasuhiro Matsumoto <mattn.jp@gmail.com>\n\" License:      This file is placed in the public domain.\n\" Reference:\n\"   http://tools.ietf.org/rfc/rfc4627.txt\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! webapi#jsonrpc#call(uri, func, args)\n  let data = webapi#json#encode({\n  \\ 'jsonrpc': '2.0',\n  \\ 'method':  a:func,\n  \\ 'params':  a:args,\n  \\})\n  let res = webapi#http#post(a:uri, data, {\"Content-Type\": \"application/json\"})\n  let obj = webapi#json#decode(res.content)\n  if has_key(obj, 'error')\n    if type(obj.error) == 0 && obj.error != 0\n      throw obj.error\n    elseif type(obj.error) == 1 && obj.error != ''\n      throw obj.error\n    elseif type(obj.error) == 2 && string(obj.error) != \"function('webapi#json#null')\"\n      throw obj.error\n    endif\n  endif\n  if has_key(obj, 'result')\n    return obj.result\n  endif\n  throw \"Parse Error\"\nendfunction\n\nfunction! webapi#jsonrpc#wrap(contexts)\n  let api = {}\n  for context in a:contexts\n    let target = api\n    let namespaces = split(context.name, '\\.')[:-2]\n    if len(namespaces) > 0\n      for ns in namespaces\n        if !has_key(target, ns)\n          let target[ns] = {\".uri\": context.uri}\n        endif\n        let target = target[ns]\n      endfor\n    endif\n    if !has_key(context, 'argnames')\n      let context['argnames'] = ['args']\n      let arglist = 'a:args'\n    else\n      if len(context.argnames) && context.argnames[-1] == '...'\n        let arglist = '[' . join(map(copy(context.argnames[:-2]),'\"a:\".v:val'),',') . ']+a:000'\n      else\n        let arglist = '[' . join(map(copy(context.argnames),'\"a:\".v:val'),',') . ']'\n      endif\n    endif\n    if has_key(context, 'alias')\n      exe \"function api.\".context.alias.\"(\".join(context.argnames,\",\").\") dict\\n\"\n      \\.  \"  return webapi#jsonrpc#call(self['.uri'], '\".context.name.\"', \".arglist.\")\\n\"\n      \\.  \"endfunction\\n\"\n    else\n      exe \"function api.\".context.name.\"(\".join(context.argnames,\",\").\") dict\\n\"\n      \\.  \"  return webapi#jsonrpc#call('\".context.uri.\"', '\".context.name.\"', \".arglist.\")\\n\"\n      \\.  \"endfunction\\n\"\n    endif\n  endfor\n  return api\nendfunction\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim:set et:\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/autoload/webapi/metaWeblog.vim",
    "content": "\" metaweblog\n\" Last Change: 2010-09-10\n\" Maintainer:   Yasuhiro Matsumoto <mattn.jp@gmail.com>\n\" License:      This file is placed in the public domain.\n\" Reference:\n\"   http://tools.ietf.org/rfc/rfc3529.txt\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nlet s:template = {\"uri\" : \"\"}\n\nfunction! s:template.newPost(blogid, username, password, content, publish) dict\n  return webapi#xmlrpc#call(self.uri, 'metaWeblog.newPost', [a:blogid, a:username, a:password, a:content, a:publish])\nendfunction\n\nfunction! s:template.editPost(postid, username, password, content, publish) dict\n  return webapi#xmlrpc#call(self.uri, 'metaWeblog.editPost', [a:postid, a:username, a:password, a:content, a:publish])\nendfunction\n\nfunction! s:template.getPost(postid, username, password) dict\n  return webapi#xmlrpc#call(self.uri, 'metaWeblog.getPost', [a:postid, a:username, a:password])\nendfunction\n\nfunction! s:template.getRecentPosts(blogid, username, password, numberOfPosts) dict\n  return webapi#xmlrpc#call(self.uri, 'metaWeblog.getRecentPosts', [a:blogid, a:username, a:password, a:numberOfPosts])\nendfunction\n\nfunction! s:template.deletePost(appkey, postid, username, password, ...) dict\n  return webapi#xmlrpc#call(self.uri, 'blogger.deletePost', [a:apikey, a:postid, a:username, a:password])\nendfunction\n\nfunction! s:template.newMediaObject(blogid, username, password, file) dict\n  return webapi#xmlrpc#call(self.uri, 'metaWeblog.newMediaObject', [a:blogid, a:username, a:password, a:file])\nendfunction\n\nfunction! webapi#metaWeblog#proxy(uri)\n  let ctx = deepcopy(s:template)\n  let ctx.uri = a:uri\n  return ctx\nendfunction\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim:set et:\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/autoload/webapi/oauth.vim",
    "content": "\" oauth\n\" Last Change: 2010-09-10\n\" Maintainer:   Yasuhiro Matsumoto <mattn.jp@gmail.com>\n\" License:      This file is placed in the public domain.\n\" Reference:\n\"   http://tools.ietf.org/rfc/rfc5849.txt\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! webapi#oauth#request_token(url, ctx, ...)\n  let params = a:0 > 0 ? a:000[0] : {}\n  let query = {}\n  let time_stamp = localtime()\n  let nonce = time_stamp . \" \" . time_stamp\n  let nonce = webapi#sha1#sha1(nonce)[0:28]\n  let query[\"oauth_consumer_key\"] = a:ctx.consumer_key\n  let query[\"oauth_nonce\"] = nonce\n  let query[\"oauth_request_method\"] = \"POST\"\n  let query[\"oauth_signature_method\"] = \"HMAC-SHA1\"\n  let query[\"oauth_timestamp\"] = time_stamp\n  let query[\"oauth_version\"] = \"1.0\"\n  for key in keys(params)\n    let query[key] = params[key]\n  endfor\n  let query_string = \"POST&\"\n  let query_string .= webapi#http#encodeURI(a:url)\n  let query_string .= \"&\"\n  let query_string .= webapi#http#encodeURI(webapi#http#encodeURI(query))\n  let hmacsha1 = webapi#hmac#sha1(webapi#http#encodeURI(a:ctx.consumer_secret) . \"&\", query_string)\n  let query[\"oauth_signature\"] = webapi#base64#b64encodebin(hmacsha1)\n  let res = webapi#http#post(a:url, query, {})\n  let a:ctx.request_token = webapi#http#decodeURI(substitute(filter(split(res.content, \"&\"), \"v:val =~ '^oauth_token='\")[0], '^[^=]*=', '', ''))\n  let a:ctx.request_token_secret = webapi#http#decodeURI(substitute(filter(split(res.content, \"&\"), \"v:val =~ '^oauth_token_secret='\")[0], '^[^=]*=', '', ''))\n  return a:ctx\nendfunction\n\nfunction! webapi#oauth#access_token(url, ctx, ...)\n  let params = a:0 > 0 ? a:000[0] : {}\n  let query = {}\n  let time_stamp = localtime()\n  let nonce = time_stamp . \" \" . time_stamp\n  let nonce = webapi#sha1#sha1(nonce)[0:28]\n  let query[\"oauth_consumer_key\"] = a:ctx.consumer_key\n  let query[\"oauth_nonce\"] = nonce\n  let query[\"oauth_request_method\"] = \"POST\"\n  let query[\"oauth_signature_method\"] = \"HMAC-SHA1\"\n  let query[\"oauth_timestamp\"] = time_stamp\n  let query[\"oauth_token\"] = a:ctx.request_token\n  let query[\"oauth_token_secret\"] = a:ctx.request_token_secret\n  let query[\"oauth_version\"] = \"1.0\"\n  for key in keys(params)\n    let query[key] = params[key]\n  endfor\n  let query_string = \"POST&\"\n  let query_string .= webapi#http#encodeURI(a:url)\n  let query_string .= \"&\"\n  let query_string .= webapi#http#encodeURI(webapi#http#encodeURI(query))\n  let hmacsha1 = webapi#hmac#sha1(webapi#http#encodeURI(a:ctx.consumer_secret) . \"&\" . webapi#http#encodeURI(a:ctx.request_token_secret), query_string)\n  let query[\"oauth_signature\"] = webapi#base64#b64encodebin(hmacsha1)\n  let res = webapi#http#post(a:url, query, {})\n  let a:ctx.access_token = webapi#http#decodeURI(substitute(filter(split(res.content, \"&\"), \"v:val =~ '^oauth_token='\")[0], '^[^=]*=', '', ''))\n  let a:ctx.access_token_secret = webapi#http#decodeURI(substitute(filter(split(res.content, \"&\"), \"v:val =~ '^oauth_token_secret='\")[0], '^[^=]*=', '', ''))\n  return a:ctx\nendfunction\n\nfunction! webapi#oauth#get(url, ctx, ...)\n  let params = a:0 > 0 ? a:000[0] : {}\n  let getdata = a:0 > 1 ? a:000[1] : {}\n  let headdata = a:0 > 2 ? a:000[2] : {}\n  let query = {}\n  let time_stamp = localtime()\n  let nonce = time_stamp . \" \" . time_stamp\n  let nonce = webapi#sha1#sha1(nonce)[0:28]\n  let query[\"oauth_consumer_key\"] = a:ctx.consumer_key\n  let query[\"oauth_nonce\"] = nonce\n  let query[\"oauth_request_method\"] = \"GET\"\n  let query[\"oauth_signature_method\"] = \"HMAC-SHA1\"\n  let query[\"oauth_timestamp\"] = time_stamp\n  let query[\"oauth_token\"] = a:ctx.access_token\n  let query[\"oauth_version\"] = \"1.0\"\n  if type(params) == 4\n    for key in keys(params)\n      let query[key] = params[key]\n    endfor\n  endif\n  if type(getdata) == 4\n    for key in keys(getdata)\n      let query[key] = getdata[key]\n    endfor\n  endif\n  let query_string = query[\"oauth_request_method\"] . \"&\"\n  let query_string .= webapi#http#encodeURI(a:url)\n  let query_string .= \"&\"\n  let query_string .= webapi#http#encodeURI(webapi#http#encodeURI(query))\n  let hmacsha1 = webapi#hmac#sha1(webapi#http#encodeURI(a:ctx.consumer_secret) . \"&\" . webapi#http#encodeURI(a:ctx.access_token_secret), query_string)\n  let query[\"oauth_signature\"] = webapi#base64#b64encodebin(hmacsha1)\n  if type(getdata) == 4\n    for key in keys(getdata)\n      call remove(query, key)\n    endfor\n  endif\n  let auth = 'OAuth '\n  for key in sort(keys(query))\n    let auth .= key . '=\"' . webapi#http#encodeURI(query[key]) . '\", '\n  endfor\n  let auth = auth[:-3]\n  let headdata[\"Authorization\"] = auth\n  let res = webapi#http#get(a:url, getdata, headdata)\n  return res\nendfunction\n\nfunction! webapi#oauth#post(url, ctx, ...)\n  let params = a:0 > 0 ? a:000[0] : {}\n  let postdata = a:0 > 1 ? a:000[1] : {}\n  let headdata = a:0 > 2 ? a:000[2] : {}\n  let query = {}\n  let time_stamp = localtime()\n  let nonce = time_stamp . \" \" . time_stamp\n  let nonce = webapi#sha1#sha1(nonce)[0:28]\n  let query[\"oauth_consumer_key\"] = a:ctx.consumer_key\n  let query[\"oauth_nonce\"] = nonce\n  let query[\"oauth_request_method\"] = \"POST\"\n  let query[\"oauth_signature_method\"] = \"HMAC-SHA1\"\n  let query[\"oauth_timestamp\"] = time_stamp\n  let query[\"oauth_token\"] = a:ctx.access_token\n  let query[\"oauth_version\"] = \"1.0\"\n  if type(params) == 4\n    for key in keys(params)\n      let query[key] = params[key]\n    endfor\n  endif\n  if type(postdata) == 4\n    for key in keys(postdata)\n      let query[key] = postdata[key]\n    endfor\n  endif\n  let query_string = query[\"oauth_request_method\"] . \"&\"\n  let query_string .= webapi#http#encodeURI(a:url)\n  let query_string .= \"&\"\n  let query_string .= webapi#http#encodeURI(webapi#http#encodeURI(query))\n  let hmacsha1 = webapi#hmac#sha1(webapi#http#encodeURI(a:ctx.consumer_secret) . \"&\" . webapi#http#encodeURI(a:ctx.access_token_secret), query_string)\n  let query[\"oauth_signature\"] = webapi#base64#b64encodebin(hmacsha1)\n  if type(postdata) == 4\n    for key in keys(postdata)\n      call remove(query, key)\n    endfor\n  endif\n  let auth = 'OAuth '\n  for key in sort(keys(query))\n    let auth .= webapi#http#escape(key) . '=\"' . webapi#http#escape(query[key]) . '\",'\n  endfor\n  let auth = auth[:-2]\n  let headdata[\"Authorization\"] = auth\n  let res = webapi#http#post(a:url, postdata, headdata)\n  return res\nendfunction\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim:set et:\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/autoload/webapi/sha1.vim",
    "content": "\" sha1 digest calculator\n\" This is a port of rfc3174 sha1 function.\n\" http://www.ietf.org/rfc/rfc3174.txt\n\" Last Change:  2010-02-13\n\" Maintainer:   Yukihiro Nakadaira <yukihiro.nakadaira@gmail.com>\n\" Original Copyright:\n\" Copyright (C) The Internet Society (2001).  All Rights Reserved.\n\"\n\" This document and translations of it may be copied and furnished to\n\" others, and derivative works that comment on or otherwise explain it\n\" or assist in its implementation may be prepared, copied, published\n\" and distributed, in whole or in part, without restriction of any\n\" kind, provided that the above copyright notice and this paragraph are\n\" included on all such copies and derivative works.  However, this\n\" document itself may not be modified in any way, such as by removing\n\" the copyright notice or references to the Internet Society or other\n\" Internet organizations, except as needed for the purpose of\n\" developing Internet standards in which case the procedures for\n\" copyrights defined in the Internet Standards process must be\n\" followed, or as required to translate it into languages other than\n\" English.\n\"\n\" The limited permissions granted above are perpetual and will not be\n\" revoked by the Internet Society or its successors or assigns.\n\"\n\" This document and the information contained herein is provided on an\n\" \"AS IS\" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING\n\" TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING\n\" BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION\n\" HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF\n\" MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! webapi#sha1#sha1(str)\n  return s:SHA1Digest(s:str2bytes(a:str))\nendfunction\n\nfunction! webapi#sha1#sha1bin(bin)\n  return s:SHA1Digest(a:bin)\nendfunction\n\nfunction! webapi#sha1#test()\n  call s:main()\nendfunction\n\nfunction! s:SHA1Digest(bytes)\n  let sha = deepcopy(s:SHA1Context, 1)\n  let Message_Digest = repeat([0], 20)\n\n  let err = s:SHA1Reset(sha)\n  if err\n    throw printf(\"SHA1Reset Error %d\", err)\n  endif\n\n  let err = s:SHA1Input(sha, a:bytes)\n  if err\n    throw printf(\"SHA1Input Error %d\", err)\n  endif\n\n  let err = s:SHA1Result(sha, Message_Digest)\n  if err\n    throw printf(\"SHA1Result Error %d\", err)\n  endif\n\n  return join(map(Message_Digest, 'printf(\"%02x\", v:val)'), '')\nendfunction\n\n\"\n\" sha1.h\n\"\n\" Description:\n\"     This is the header file for code which implements the Secure\n\"     Hashing Algorithm 1 as defined in FIPS PUB 180-1 published\n\"     April 17, 1995.\n\"\n\"     Many of the variable names in this code, especially the\n\"     single character names, were used because those were the names\n\"     used in the publication.\n\"\n\"     Please read the file sha1.c for more information.\n\n\"\n\" If you do not have the ISO standard stdint.h header file, then you\n\" must typdef the following:\n\"    name              meaning\n\"  uint32_t         unsigned 32 bit integer\n\"  uint8_t          unsigned 8 bit integer (i.e., unsigned char)\n\"  int_least16_t    integer of >= 16 bits\n\"\n\"\n\n\" enum\nlet s:shaSuccess = 0\nlet s:shaNull = 1         \" Null pointer parameter\nlet s:shaInputTooLong = 2 \" input data too long\nlet s:shaStateError = 3   \" called Input after Result\n\n\" define\nlet s:SHA1HashSize = 20\n\n\"\n\"  This structure will hold context information for the SHA-1\n\"  hashing operation\n\"\n\" struct\nlet s:SHA1Context = {}\n\" uint32_t Intermediate_Hash[SHA1HashSize/4]; /* Message Digest  */\nlet s:SHA1Context.Intermediate_Hash = repeat([0], s:SHA1HashSize / 4)\n\" uint32_t Length_Low;            /* Message length in bits      */\nlet s:SHA1Context.Length_Low = 0\n\" uint32_t Length_High;           /* Message length in bits      */\nlet s:SHA1Context.Length_High = 0\n\"                                 /* Index into message block array   */\n\" int_least16_t Message_Block_Index;\nlet s:SHA1Context.Message_Block_Index = 0\n\" uint8_t Message_Block[64];      /* 512-bit message blocks      */\nlet s:SHA1Context.Message_Block = repeat([0], 64)\n\" int Computed;                   /* Is the digest computed?         */\nlet s:SHA1Context.Computed = 0\n\" int Corrupted;                  /* Is the message digest corrupted? */\nlet s:SHA1Context.Corrupted = 0\n\n\"\n\"  sha1.c\n\"\n\"  Description:\n\"      This file implements the Secure Hashing Algorithm 1 as\n\"      defined in FIPS PUB 180-1 published April 17, 1995.\n\"\n\"      The SHA-1, produces a 160-bit message digest for a given\n\"      data stream.  It should take about 2**n steps to find a\n\"      message with the same digest as a given message and\n\"      2**(n/2) to find any two messages with the same digest,\n\"      when n is the digest size in bits.  Therefore, this\n\"      algorithm can serve as a means of providing a\n\"      \"fingerprint\" for a message.\n\"\n\"  Portability Issues:\n\"      SHA-1 is defined in terms of 32-bit \"words\".  This code\n\"      uses <stdint.h> (included via \"sha1.h\" to define 32 and 8\n\"      bit unsigned integer types.  If your C compiler does not\n\"      support 32 bit unsigned integers, this code is not\n\"      appropriate.\n\"\n\"  Caveats:\n\"      SHA-1 is designed to work with messages less than 2^64 bits\n\"      long.  Although SHA-1 allows a message digest to be generated\n\"      for messages of any number of bits less than 2^64, this\n\"      implementation only works with messages with a length that is\n\"      a multiple of the size of an 8-bit character.\n\"\n\"\n\n\"\n\"  Define the SHA1 circular left shift macro\n\"\n\"#define SHA1CircularShift(bits,word) \\\n\"                (((word) << (bits)) | ((word) >> (32-(bits))))\nfunction s:SHA1CircularShift(bits, word)\n  return s:bitwise_or(s:bitwise_lshift(a:word, a:bits), s:bitwise_rshift(a:word, 32 - a:bits))\nendfunction\n\n\"\n\"  SHA1Reset\n\"\n\"  Description:\n\"      This function will initialize the SHA1Context in preparation\n\"      for computing a new SHA1 message digest.\n\"\n\"  Parameters:\n\"      context: [in/out]\n\"          The context to reset.\n\"\n\"  Returns:\n\"      sha Error Code.\n\"\n\"\n\" int SHA1Reset(SHA1Context *context)\nfunction s:SHA1Reset(context)\n  if empty(a:context)\n    return s:shaNull\n  endif\n\n  let a:context.Length_Low            = 0\n  let a:context.Length_High           = 0\n  let a:context.Message_Block_Index   = 0\n\n  let a:context.Intermediate_Hash[0]  = 0x67452301\n  let a:context.Intermediate_Hash[1]  = 0xEFCDAB89\n  let a:context.Intermediate_Hash[2]  = 0x98BADCFE\n  let a:context.Intermediate_Hash[3]  = 0x10325476\n  let a:context.Intermediate_Hash[4]  = 0xC3D2E1F0\n\n  let a:context.Computed  = 0\n  let a:context.Corrupted = 0\n\n  return s:shaSuccess\nendfunction\n\n\"\n\"  SHA1Result\n\"\n\"  Description:\n\"      This function will return the 160-bit message digest into the\n\"      Message_Digest array  provided by the caller.\n\"      NOTE: The first octet of hash is stored in the 0th element,\n\"            the last octet of hash in the 19th element.\n\"\n\"  Parameters:\n\"      context: [in/out]\n\"          The context to use to calculate the SHA-1 hash.\n\"      Message_Digest: [out]\n\"          Where the digest is returned.\n\"\n\"  Returns:\n\"      sha Error Code.\n\"\n\"\n\"int SHA1Result( SHA1Context *context,\n\"                uint8_t Message_Digest[SHA1HashSize])\nfunction s:SHA1Result(context, Message_Digest)\n  if empty(a:context) || empty(a:Message_Digest)\n    return s:shaNull\n  endif\n\n  if a:context.Corrupted\n    return a:context.Corrupted\n  endif\n\n  if !a:context.Computed\n    call s:SHA1PadMessage(a:context)\n    for i in range(64)\n      \" message may be sensitive, clear it out \n      let a:context.Message_Block[i] = 0\n    endfor\n    let a:context.Length_Low = 0      \" and clear length\n    let a:context.Length_High = 0\n    let a:context.Computed = 1\n  endif\n\n  for i in range(s:SHA1HashSize)\n    let a:Message_Digest[i] = s:uint8(\n          \\   s:bitwise_rshift(\n          \\     a:context.Intermediate_Hash[s:bitwise_rshift(i, 2)],\n          \\     8 * (3 - s:bitwise_and(i, 0x03))\n          \\   )\n          \\ )\n  endfor\n\n  return s:shaSuccess\nendfunction\n\n\"\n\"  SHA1Input\n\"\n\"  Description:\n\"      This function accepts an array of octets as the next portion\n\"      of the message.\n\"\n\"  Parameters:\n\"      context: [in/out]\n\"          The SHA context to update\n\"      message_array: [in]\n\"          An array of characters representing the next portion of\n\"          the message.\n\"      length: [in]\n\"          The length of the message in message_array\n\"\n\"  Returns:\n\"      sha Error Code.\n\"\n\"\n\"int SHA1Input(    SHA1Context    *context,\n\"                  const uint8_t  *message_array,\n\"                  unsigned       length)\nfunction s:SHA1Input(context, message_array)\n  if !len(a:message_array)\n    return s:shaSuccess\n  endif\n\n  if empty(a:context) || empty(a:message_array)\n    return s:shaNull\n  endif\n\n  if a:context.Computed\n    let a:context.Corrupted = s:shaStateError\n    return s:shaStateError\n  endif\n\n  if a:context.Corrupted\n    return a:context.Corrupted\n  endif\n\n  for x in a:message_array\n    if a:context.Corrupted\n      break\n    endif\n    let a:context.Message_Block[a:context.Message_Block_Index] = s:bitwise_and(x, 0xFF)\n    let a:context.Message_Block_Index += 1\n\n    let a:context.Length_Low += 8\n    if a:context.Length_Low == 0\n      let a:context.Length_High += 1\n      if a:context.Length_High == 0\n        \" Message is too long\n        let a:context.Corrupted = 1\n      endif\n    endif\n\n    if a:context.Message_Block_Index == 64\n      call s:SHA1ProcessMessageBlock(a:context)\n    endif\n  endfor\n\n  return s:shaSuccess\nendfunction\n\n\"\n\"  SHA1ProcessMessageBlock\n\"\n\"  Description:\n\"      This function will process the next 512 bits of the message\n\"      stored in the Message_Block array.\n\"\n\"  Parameters:\n\"      None.\n\"\n\"  Returns:\n\"      Nothing.\n\"\n\"  Comments:\n\"      Many of the variable names in this code, especially the\n\"      single character names, were used because those were the\n\"      names used in the publication.\n\"\n\"\n\"\n\" void SHA1ProcessMessageBlock(SHA1Context *context)\nfunction s:SHA1ProcessMessageBlock(context)\n  \" Constants defined in SHA-1\n  let K = [\n        \\ 0x5A827999,\n        \\ 0x6ED9EBA1,\n        \\ 0x8F1BBCDC,\n        \\ 0xCA62C1D6\n        \\ ]\n  let t = 0                         \" Loop counter\n  let temp = 0                      \" Temporary word value\n  let W = repeat([0], 80)           \" Word sequence\n  let [A, B, C, D, E] = [0, 0, 0, 0, 0] \" Word buffers\n\n  \"\n  \"  Initialize the first 16 words in the array W\n  \"\n  for t in range(16)\n    let W[t] = s:bitwise_lshift(a:context.Message_Block[t * 4], 24)\n    let W[t] = s:bitwise_or(W[t], s:bitwise_lshift(a:context.Message_Block[t * 4 + 1], 16))\n    let W[t] = s:bitwise_or(W[t], s:bitwise_lshift(a:context.Message_Block[t * 4 + 2], 8))\n    let W[t] = s:bitwise_or(W[t], a:context.Message_Block[t * 4 + 3])\n  endfor\n\n  for t in range(16, 79)\n    let W[t] = s:SHA1CircularShift(1, s:bitwise_xor(s:bitwise_xor(s:bitwise_xor(W[t-3], W[t-8]), W[t-14]), W[t-16]))\n  endfor\n\n  let A = a:context.Intermediate_Hash[0]\n  let B = a:context.Intermediate_Hash[1]\n  let C = a:context.Intermediate_Hash[2]\n  let D = a:context.Intermediate_Hash[3]\n  let E = a:context.Intermediate_Hash[4]\n\n  for t in range(20)\n    let temp = s:SHA1CircularShift(5,A) +\n          \\ s:bitwise_or(s:bitwise_and(B, C), s:bitwise_and(s:bitwise_not(B), D)) +\n          \\ E + W[t] + K[0]\n    let E = D\n    let D = C\n    let C = s:SHA1CircularShift(30,B)\n    let B = A\n    let A = temp\n  endfor\n\n  for t in range(20, 39)\n    let temp = s:SHA1CircularShift(5,A) + s:bitwise_xor(s:bitwise_xor(B, C), D) + E + W[t] + K[1]\n    let E = D\n    let D = C\n    let C = s:SHA1CircularShift(30,B)\n    let B = A\n    let A = temp\n  endfor\n\n  for t in range(40, 59)\n    let temp = s:SHA1CircularShift(5,A) +\n          \\ s:bitwise_or(s:bitwise_or(s:bitwise_and(B, C), s:bitwise_and(B, D)), s:bitwise_and(C, D)) +\n          \\ E + W[t] + K[2]\n    let E = D\n    let D = C\n    let C = s:SHA1CircularShift(30,B)\n    let B = A\n    let A = temp\n  endfor\n\n  for t in range(60, 79)\n    let temp = s:SHA1CircularShift(5,A) +\n          \\ s:bitwise_xor(s:bitwise_xor(B, C), D) + E + W[t] + K[3]\n    let E = D\n    let D = C\n    let C = s:SHA1CircularShift(30,B)\n    let B = A\n    let A = temp\n  endfor\n\n  let a:context.Intermediate_Hash[0] += A\n  let a:context.Intermediate_Hash[1] += B\n  let a:context.Intermediate_Hash[2] += C\n  let a:context.Intermediate_Hash[3] += D\n  let a:context.Intermediate_Hash[4] += E\n\n  let a:context.Message_Block_Index = 0\nendfunction\n\n\n\"\n\"  SHA1PadMessage\n\"\n\"  Description:\n\"      According to the standard, the message must be padded to an even\n\"      512 bits.  The first padding bit must be a '1'.  The last 64\n\"      bits represent the length of the original message.  All bits in\n\"      between should be 0.  This function will pad the message\n\"      according to those rules by filling the Message_Block array\n\"      accordingly.  It will also call the ProcessMessageBlock function\n\"      provided appropriately.  When it returns, it can be assumed that\n\"      the message digest has been computed.\n\"\n\"  Parameters:\n\"      context: [in/out]\n\"          The context to pad\n\"      ProcessMessageBlock: [in]\n\"          The appropriate SHA*ProcessMessageBlock function\n\"  Returns:\n\"      Nothing.\n\"\n\"\n\" void SHA1PadMessage(SHA1Context *context)\nfunction s:SHA1PadMessage(context)\n  \"\n  \"  Check to see if the current message block is too small to hold\n  \"  the initial padding bits and length.  If so, we will pad the\n  \"  block, process it, and then continue padding into a second\n  \"  block.\n  \"\n  if a:context.Message_Block_Index > 55\n    let a:context.Message_Block[a:context.Message_Block_Index] = 0x80\n    let a:context.Message_Block_Index += 1\n    while a:context.Message_Block_Index < 64\n      let a:context.Message_Block[a:context.Message_Block_Index] = 0\n      let a:context.Message_Block_Index += 1\n    endwhile\n\n    call s:SHA1ProcessMessageBlock(a:context)\n\n    while a:context.Message_Block_Index < 56\n      let a:context.Message_Block[a:context.Message_Block_Index] = 0\n      let a:context.Message_Block_Index += 1\n    endwhile\n  else\n    let a:context.Message_Block[a:context.Message_Block_Index] = 0x80\n    let a:context.Message_Block_Index += 1\n    while a:context.Message_Block_Index < 56\n      let a:context.Message_Block[a:context.Message_Block_Index] = 0\n      let a:context.Message_Block_Index += 1\n    endwhile\n  endif\n\n  \"\n  \"  Store the message length as the last 8 octets\n  \"\n  let a:context.Message_Block[56] = s:uint8(s:bitwise_rshift(a:context.Length_High, 24))\n  let a:context.Message_Block[57] = s:uint8(s:bitwise_rshift(a:context.Length_High, 16))\n  let a:context.Message_Block[58] = s:uint8(s:bitwise_rshift(a:context.Length_High, 8))\n  let a:context.Message_Block[59] = s:uint8(a:context.Length_High)\n  let a:context.Message_Block[60] = s:uint8(s:bitwise_rshift(a:context.Length_Low, 24))\n  let a:context.Message_Block[61] = s:uint8(s:bitwise_rshift(a:context.Length_Low, 16))\n  let a:context.Message_Block[62] = s:uint8(s:bitwise_rshift(a:context.Length_Low, 8))\n  let a:context.Message_Block[63] = s:uint8(a:context.Length_Low)\n\n  call s:SHA1ProcessMessageBlock(a:context)\nendfunction\n\n\"\n\"  sha1test.c\n\"\n\"  Description:\n\"      This file will exercise the SHA-1 code performing the three\n\"      tests documented in FIPS PUB 180-1 plus one which calls\n\"      SHA1Input with an exact multiple of 512 bits, plus a few\n\"      error test checks.\n\"\n\"  Portability Issues:\n\"      None.\n\"\n\"\n\n\"\n\"  Define patterns for testing\n\"\nlet s:TEST1   = \"abc\"\nlet s:TEST2a  = \"abcdbcdecdefdefgefghfghighijhi\"\nlet s:TEST2b  = \"jkijkljklmklmnlmnomnopnopq\"\nlet s:TEST2   = s:TEST2a . s:TEST2b\nlet s:TEST3   = \"a\"\nlet s:TEST4a  = \"01234567012345670123456701234567\"\nlet s:TEST4b  = \"01234567012345670123456701234567\"\n    \" an exact multiple of 512 bits\nlet s:TEST4   = s:TEST4a . s:TEST4b\nlet s:testarray = [\n      \\ s:TEST1,\n      \\ s:TEST2,\n      \\ s:TEST3,\n      \\ s:TEST4\n      \\ ]\nlet s:repeatcount = [1, 1, 1000000, 10]\nlet s:resultarray = [\n      \\ \"A9 99 3E 36 47 06 81 6A BA 3E 25 71 78 50 C2 6C 9C D0 D8 9D\",\n      \\ \"84 98 3E 44 1C 3B D2 6E BA AE 4A A1 F9 51 29 E5 E5 46 70 F1\",\n      \\ \"34 AA 97 3C D4 C4 DA A4 F6 1E EB 2B DB AD 27 31 65 34 01 6F\",\n      \\ \"DE A3 56 A2 CD DD 90 C7 A7 EC ED C5 EB B5 63 93 4F 46 04 52\"\n      \\ ]\n\nfunction s:main()\n  let sha = deepcopy(s:SHA1Context, 1)\n  let Message_Digest = repeat([0], 20)\n\n  \"\n  \"  Perform SHA-1 tests\n  \"\n  for j in range(len(s:testarray))\n    if j == 2\n      echo \"Test 3 will take about 1 hour.  Press CTRL-C to skip.\"\n    endif\n    echo \"\"\n    echo printf(\"Test %d: %d, '%s'\",\n          \\ j+1,\n          \\ s:repeatcount[j],\n          \\ s:testarray[j])\n\n    let err = s:SHA1Reset(sha)\n    if err\n      echo printf(\"SHA1Reset Error %d.\", err )\n      break       \" out of for j loop\n    endif\n\n    try\n      for i in range(s:repeatcount[j])\n        let err = s:SHA1Input(sha, s:str2bytes(s:testarray[j]))\n        if err\n          echo printf(\"SHA1Input Error %d.\", err )\n          break     \" out of for i loop */\n        endif\n      endfor\n    catch /^Vim:Interrupt$/\n      echo \"Skip ...\"\n      while getchar(0) | endwhile\n      continue\n    endtry\n\n    let err = s:SHA1Result(sha, Message_Digest)\n    if err\n      echo printf(\"SHA1Result Error %d, could not compute message digest.\", err)\n    else\n      echo \"\\t\"\n      for i in range(20)\n        echon printf(\"%02X \", Message_Digest[i])\n      endfor\n      echo \"\"\n    endif\n    echo \"Should match:\"\n    echo printf(\"\\t%s\", s:resultarray[j])\n  endfor\n\n  \" Test some error returns\n  let err = s:SHA1Input(sha, s:str2bytes(s:testarray[1][0:0]))\n  echo printf(\"\\nError %d. Should be %d.\", err, s:shaStateError)\n  let err = s:SHA1Reset(0)\n  echo printf(\"\\nError %d. Should be %d.\", err, s:shaNull)\nendfunction\n\n\n\n\"---------------------------------------------------------------------\n\" misc\nfunction! s:str2bytes(str)\n  return map(range(len(a:str)), 'char2nr(a:str[v:val])')\nendfunction\n\nfunction! s:cmp(a, b)\n  let a = printf(\"%08x\", a:a)\n  let b = printf(\"%08x\", a:b)\n  return a < b ? -1 : a > b ? 1 : 0\nendfunction\n\nfunction! s:uint8(n)\n  return s:bitwise_and(a:n, 0xFF)\nendfunction\n\nlet s:k = [\n      \\ 0x1,        0x2,        0x4,        0x8,\n      \\ 0x10,       0x20,       0x40,       0x80,\n      \\ 0x100,      0x200,      0x400,      0x800,\n      \\ 0x1000,     0x2000,     0x4000,     0x8000,\n      \\ 0x10000,    0x20000,    0x40000,    0x80000,\n      \\ 0x100000,   0x200000,   0x400000,   0x800000,\n      \\ 0x1000000,  0x2000000,  0x4000000,  0x8000000,\n      \\ 0x10000000, 0x20000000, 0x40000000, 0x80000000,\n      \\ ]\n\nlet s:and = [\n      \\ [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0],\n      \\ [0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1],\n      \\ [0x0, 0x0, 0x2, 0x2, 0x0, 0x0, 0x2, 0x2, 0x0, 0x0, 0x2, 0x2, 0x0, 0x0, 0x2, 0x2],\n      \\ [0x0, 0x1, 0x2, 0x3, 0x0, 0x1, 0x2, 0x3, 0x0, 0x1, 0x2, 0x3, 0x0, 0x1, 0x2, 0x3],\n      \\ [0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x4, 0x4],\n      \\ [0x0, 0x1, 0x0, 0x1, 0x4, 0x5, 0x4, 0x5, 0x0, 0x1, 0x0, 0x1, 0x4, 0x5, 0x4, 0x5],\n      \\ [0x0, 0x0, 0x2, 0x2, 0x4, 0x4, 0x6, 0x6, 0x0, 0x0, 0x2, 0x2, 0x4, 0x4, 0x6, 0x6],\n      \\ [0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7],\n      \\ [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8],\n      \\ [0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x8, 0x9, 0x8, 0x9, 0x8, 0x9, 0x8, 0x9],\n      \\ [0x0, 0x0, 0x2, 0x2, 0x0, 0x0, 0x2, 0x2, 0x8, 0x8, 0xA, 0xA, 0x8, 0x8, 0xA, 0xA],\n      \\ [0x0, 0x1, 0x2, 0x3, 0x0, 0x1, 0x2, 0x3, 0x8, 0x9, 0xA, 0xB, 0x8, 0x9, 0xA, 0xB],\n      \\ [0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x4, 0x4, 0x8, 0x8, 0x8, 0x8, 0xC, 0xC, 0xC, 0xC],\n      \\ [0x0, 0x1, 0x0, 0x1, 0x4, 0x5, 0x4, 0x5, 0x8, 0x9, 0x8, 0x9, 0xC, 0xD, 0xC, 0xD],\n      \\ [0x0, 0x0, 0x2, 0x2, 0x4, 0x4, 0x6, 0x6, 0x8, 0x8, 0xA, 0xA, 0xC, 0xC, 0xE, 0xE],\n      \\ [0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF]\n      \\ ]\n\nlet s:or = [\n      \\ [0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF],\n      \\ [0x1, 0x1, 0x3, 0x3, 0x5, 0x5, 0x7, 0x7, 0x9, 0x9, 0xB, 0xB, 0xD, 0xD, 0xF, 0xF],\n      \\ [0x2, 0x3, 0x2, 0x3, 0x6, 0x7, 0x6, 0x7, 0xA, 0xB, 0xA, 0xB, 0xE, 0xF, 0xE, 0xF],\n      \\ [0x3, 0x3, 0x3, 0x3, 0x7, 0x7, 0x7, 0x7, 0xB, 0xB, 0xB, 0xB, 0xF, 0xF, 0xF, 0xF],\n      \\ [0x4, 0x5, 0x6, 0x7, 0x4, 0x5, 0x6, 0x7, 0xC, 0xD, 0xE, 0xF, 0xC, 0xD, 0xE, 0xF],\n      \\ [0x5, 0x5, 0x7, 0x7, 0x5, 0x5, 0x7, 0x7, 0xD, 0xD, 0xF, 0xF, 0xD, 0xD, 0xF, 0xF],\n      \\ [0x6, 0x7, 0x6, 0x7, 0x6, 0x7, 0x6, 0x7, 0xE, 0xF, 0xE, 0xF, 0xE, 0xF, 0xE, 0xF],\n      \\ [0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF],\n      \\ [0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF],\n      \\ [0x9, 0x9, 0xB, 0xB, 0xD, 0xD, 0xF, 0xF, 0x9, 0x9, 0xB, 0xB, 0xD, 0xD, 0xF, 0xF],\n      \\ [0xA, 0xB, 0xA, 0xB, 0xE, 0xF, 0xE, 0xF, 0xA, 0xB, 0xA, 0xB, 0xE, 0xF, 0xE, 0xF],\n      \\ [0xB, 0xB, 0xB, 0xB, 0xF, 0xF, 0xF, 0xF, 0xB, 0xB, 0xB, 0xB, 0xF, 0xF, 0xF, 0xF],\n      \\ [0xC, 0xD, 0xE, 0xF, 0xC, 0xD, 0xE, 0xF, 0xC, 0xD, 0xE, 0xF, 0xC, 0xD, 0xE, 0xF],\n      \\ [0xD, 0xD, 0xF, 0xF, 0xD, 0xD, 0xF, 0xF, 0xD, 0xD, 0xF, 0xF, 0xD, 0xD, 0xF, 0xF],\n      \\ [0xE, 0xF, 0xE, 0xF, 0xE, 0xF, 0xE, 0xF, 0xE, 0xF, 0xE, 0xF, 0xE, 0xF, 0xE, 0xF],\n      \\ [0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF]\n      \\ ]\n\nlet s:xor = [\n      \\ [0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF],\n      \\ [0x1, 0x0, 0x3, 0x2, 0x5, 0x4, 0x7, 0x6, 0x9, 0x8, 0xB, 0xA, 0xD, 0xC, 0xF, 0xE],\n      \\ [0x2, 0x3, 0x0, 0x1, 0x6, 0x7, 0x4, 0x5, 0xA, 0xB, 0x8, 0x9, 0xE, 0xF, 0xC, 0xD],\n      \\ [0x3, 0x2, 0x1, 0x0, 0x7, 0x6, 0x5, 0x4, 0xB, 0xA, 0x9, 0x8, 0xF, 0xE, 0xD, 0xC],\n      \\ [0x4, 0x5, 0x6, 0x7, 0x0, 0x1, 0x2, 0x3, 0xC, 0xD, 0xE, 0xF, 0x8, 0x9, 0xA, 0xB],\n      \\ [0x5, 0x4, 0x7, 0x6, 0x1, 0x0, 0x3, 0x2, 0xD, 0xC, 0xF, 0xE, 0x9, 0x8, 0xB, 0xA],\n      \\ [0x6, 0x7, 0x4, 0x5, 0x2, 0x3, 0x0, 0x1, 0xE, 0xF, 0xC, 0xD, 0xA, 0xB, 0x8, 0x9],\n      \\ [0x7, 0x6, 0x5, 0x4, 0x3, 0x2, 0x1, 0x0, 0xF, 0xE, 0xD, 0xC, 0xB, 0xA, 0x9, 0x8],\n      \\ [0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7],\n      \\ [0x9, 0x8, 0xB, 0xA, 0xD, 0xC, 0xF, 0xE, 0x1, 0x0, 0x3, 0x2, 0x5, 0x4, 0x7, 0x6],\n      \\ [0xA, 0xB, 0x8, 0x9, 0xE, 0xF, 0xC, 0xD, 0x2, 0x3, 0x0, 0x1, 0x6, 0x7, 0x4, 0x5],\n      \\ [0xB, 0xA, 0x9, 0x8, 0xF, 0xE, 0xD, 0xC, 0x3, 0x2, 0x1, 0x0, 0x7, 0x6, 0x5, 0x4],\n      \\ [0xC, 0xD, 0xE, 0xF, 0x8, 0x9, 0xA, 0xB, 0x4, 0x5, 0x6, 0x7, 0x0, 0x1, 0x2, 0x3],\n      \\ [0xD, 0xC, 0xF, 0xE, 0x9, 0x8, 0xB, 0xA, 0x5, 0x4, 0x7, 0x6, 0x1, 0x0, 0x3, 0x2],\n      \\ [0xE, 0xF, 0xC, 0xD, 0xA, 0xB, 0x8, 0x9, 0x6, 0x7, 0x4, 0x5, 0x2, 0x3, 0x0, 0x1],\n      \\ [0xF, 0xE, 0xD, 0xC, 0xB, 0xA, 0x9, 0x8, 0x7, 0x6, 0x5, 0x4, 0x3, 0x2, 0x1, 0x0]\n      \\ ]\n\nfunction! s:bitwise_lshift(a, n)\n  return a:a * s:k[a:n]\nendfunction\n\nfunction! s:bitwise_rshift(a, n)\n  let a = a:a < 0 ? a:a - 0x80000000 : a:a\n  let a = a / s:k[a:n]\n  if a:a < 0\n    let a += 0x40000000 / s:k[a:n - 1]\n  endif\n  return a\nendfunction\n\nfunction! s:bitwise_not(a)\n  return -a:a - 1\nendfunction\n\nfunction! s:bitwise_and(a, b)\n  let a = a:a < 0 ? a:a - 0x80000000 : a:a\n  let b = a:b < 0 ? a:b - 0x80000000 : a:b\n  let r = 0\n  let n = 1\n  while a && b\n    let r += s:and[a % 0x10][b % 0x10] * n\n    let a = a / 0x10\n    let b = b / 0x10\n    let n = n * 0x10\n  endwhile\n  if (a:a < 0) && (a:b < 0)\n    let r += 0x80000000\n  endif\n  return r\nendfunction\n\nfunction! s:bitwise_or(a, b)\n  let a = a:a < 0 ? a:a - 0x80000000 : a:a\n  let b = a:b < 0 ? a:b - 0x80000000 : a:b\n  let r = 0\n  let n = 1\n  while a || b\n    let r += s:or[a % 0x10][b % 0x10] * n\n    let a = a / 0x10\n    let b = b / 0x10\n    let n = n * 0x10\n  endwhile\n  if (a:a < 0) || (a:b < 0)\n    let r += 0x80000000\n  endif\n  return r\nendfunction\n\nfunction! s:bitwise_xor(a, b)\n  let a = a:a < 0 ? a:a - 0x80000000 : a:a\n  let b = a:b < 0 ? a:b - 0x80000000 : a:b\n  let r = 0\n  let n = 1\n  while a || b\n    let r += s:xor[a % 0x10][b % 0x10] * n\n    let a = a / 0x10\n    let b = b / 0x10\n    let n = n * 0x10\n  endwhile\n  if (a:a < 0) != (a:b < 0)\n    let r += 0x80000000\n  endif\n  return r\nendfunction\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/autoload/webapi/soap.vim",
    "content": "\" soap\n\" Last Change: 2010-09-10\n\" Maintainer:   Yasuhiro Matsumoto <mattn.jp@gmail.com>\n\" License:      This file is placed in the public domain.\n\" Reference:\n\"   http://tools.ietf.org/rfc/rfc4743.txt\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nfunction! s:soap_call(url, func, ...)\n  let envelope = webapi#xml#createElement(\"soap:Envelope\")\n  let envelope.attr[\"xmlns:soap\"] = \"http://schemas.xmlsoap.org/soap/envelope/\"\n  let envelope.attr[\"xmlns:xsi\"] = \"http://www.w3.org/2001/XMLSchema-instance\"\n\n  let body = webapi#xml#createElement(\"soap:Body\")\n  call add(envelope.child, body)\n  let func = webapi#xml#createElement(a:func)\n  call add(body.child, func)\n\n  let n = 1\n  for a in a:000\n    let arg = webapi#xml#createElement(\"param\".n)\n    let arg.attr[\"xsi:type\"] = \"xsd:string\"\n    call arg.value(a)\n    call add(func.child, arg)\n    let n += 1\n  endfor\n\n  let str = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>' . envelope.toString()\n  let res = webapi#http#post(a:url, str)\n  let dom = webapi#xml#parse(res.content)\n  return s:parse_return(dom.find(\"return\"))\nendfunction\n\nfunction! s:parse_return(node)\n  if a:node.attr[\"xsi:type\"] =~ \":Array$\"\n    let arr = []\n    for item in a:node.child\n      call add(ret, s:parse_return(item.child)\n    endfor\n    let ret = arr\n  elseif a:node.attr[\"xsi:type\"] =~ \":Map$\"\n    let ret = {}\n    for item in a:node.childNodes(\"item\")\n      let val = item.childNode(\"value\")\n      if val.attr[\"xsi:type\"] =~ \":Map$\"\n        let ret[item.childNode(\"key\").value()] = s:parse_return(val)\n      else\n        let ret[item.childNode(\"key\").value()] = item.childNode(\"value\").value()\n      endif\n    endfor\n  else\n    if len(a:node.child)\n      let arr = []\n      for item in a:node.child\n        call add(arr, s:parse_return(item)\n      endfor\n      let ret = arr\n    else\n      let ret = s:parse_return(a:node)\n    endif\n  endif\n  return ret\nendfunction\n\nfunction! s:get_convert_code(arg)\n  let code = ''\n  let arg = a:arg\n  if arg.type == \"xsd:string\"\n    let code .= \"let \".arg.name.\" = a:\".arg.name\n  elseif arg.type == \"xsd:int\"\n    let code .= \"let \".arg.name.\" = 0+a:\".arg.name\n  elseif arg.type == \"xsd:boolean\"\n    let code .= \"let \".arg.name.\" = (0+a:\".arg.name.\") ? 'true' : 'false'\"\n  elseif arg.type == \"xsd:float\"\n    let code .= \"let \".arg.name.\" = nr2float(0+a:\".arg.name.\")\"\n  elseif arg.type =~ \":Array$\"\n    let code .= \"let \".arg.name.\" = a:\".arg.name\n  else\n    throw \"unknown type:\". arg.type\n  endif\n  return code\nendfunction\n\nfunction! webapi#soap#proxy(url)\n  let dom = webapi#xml#parseURL(a:url)\n  let l:api = {}\n  let ns = substitute(dom.name, ':\\zs.*', '', '')\n  let service = dom.childNode(ns.\"service\")\n  if empty(service)\n    let action = ''\n  else\n    let address = dom.childNode(ns.\"service\").find(\"soap:address\")\n    if empty(address)\n      let action = ''\n    else\n      let action = dom.childNode(ns.\"service\").find(\"soap:address\").attr[\"location\"]\n    endif\n  endif\n  if action == \"\"\n    return {}\n  endif\n  let operations = dom.childNode(ns.\"portType\").childNodes(ns.\"operation\")\n  for operation in operations\n    let name = operation.attr[\"name\"]\n    let inp = substitute(operation.childNode(ns.\"input\").attr[\"message\"], \"^tns:\", \"\", \"\")\n    let out = substitute(operation.childNode(ns.\"output\").attr[\"message\"], \"^tns:\", \"\", \"\")\n    let message = dom.childNode(ns.\"message\", {\"name\": inp})\n    let args = []\n    for part in message.childNodes(ns.\"part\")\n      call add(args, {\"name\": part.attr[\"name\"], \"type\": has_key(part.attr, \"type\") ? part.attr[\"type\"] : \"xsd:string\"})\n    endfor\n    let argnames = []\n    let code = \"\"\n    for arg in args\n      call add(argnames, arg.name)\n      let code .= \"  \".s:get_convert_code(arg).\"\\n\"\n    endfor\n    let code .= \"  return s:soap_call(\".string(action).\", \".string(name).\", \".join(argnames, \",\").\")\\n\"\n    let source = \"function! l:api.\".name.\"(\".join(argnames, \",\").\") dict\\n\"\n    let source .= code\n    let source .= \"endfunction\\n\"\n    exe source\n  endfor\n  return api\nendfunction\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim:set et:\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/autoload/webapi/ucs.vim",
    "content": "let s:save_cpo = &cpo\nset cpo&vim\n\nlet s:utf8len = [\n\\ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\n\\ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\n\\ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\n\\ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\n\\ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n\\ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n\\ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,\n\\ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,0,0,\n\\]\n\nfunction! webapi#ucs#byte2nr(byte)\n  let p = a:byte\n  let n0 = char2nr(p[0])\n  if n0 < 0x80\n    return n0\n  endif\n  let l = s:utf8len[n0]\n  let n1 = char2nr(p[1])\n  if l > 1 && webapi#bit#and(n1, 0xc0) == 0x80\n    if l == 2\n      return webapi#bit#shift(webapi#bit#and(n0, 0x1f), 6) + webapi#bit#and(n1, 0x3f)\n    endif\n    let n2 = char2nr(p[2])\n    if webapi#bit#and(n2, 0xc0) == 0x80\n      if l == 3\n        return webapi#bit#shift(webapi#bit#and(n0, 0x0f), 12) + webapi#bit#shift(webapi#bit#and(n1, 0x3f), 6) + webapi#bit#and(n2, 0x3f)\n      endif\n      let n3 = char2nr(p[3])\n      if webapi#bit#and(n3, 0xc0) == 0x80\n        if l == 4\n          return webapi#bit#shift(webapi#bit#and(n0, 0x07), 18) + webapi#bit#shift(webapi#bit#and(n1, 0x3f), 12) + webapi#bit#shift(webapi#bit#and(n2, 0x3f), 6) + webapi#bit#and(n3, 0x3f)\n        endif\n        let n4 = char2nr(p[4])\n        if webapi#bit#and(n4, 0xc0) == 0x80\n          if (l == 5)\n            return webapi#bit#shift(webapi#bit#and(n0, 0x03), 24) + webapi#bit#shift(webapi#bit#and(n1, 0x3f), 18) + webapi#bit#shift(webapi#bit#and(n2, 0x3f), 12) + webapi#bit#shift(webapi#bit#and(n3 & 0x3f), 6) + webapi#bit#and(n4, 0x3f)\n          endif\n          let n5 = char2nr(p[5])\n          if webapi#bit#and(n5, 0xc0) == 0x80 && l == 6\n            return webapi#bit#shift(webapi#bit#and(n0, 0x01), 30) + webapi#bit#shift(webapi#bit#and(n1, 0x3f), 24) + webapi#bit#shift(webapi#bit#and(n2, 0x3f), 18) + webapi#bit#shift(webapi#bit#and(n3, 0x3f), 12) + webapi#bit#shift(webapi#bit#and(n4, 0x3f), 6) + webapi#bit#and(n5, 0x3f)\n          endif\n        endif\n      endif\n    endif\n  endif\n  return n0\nendfunction\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim:set et:\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/autoload/webapi/xml.vim",
    "content": "let s:save_cpo = &cpo\nset cpo&vim\n\nlet s:template = { 'name': '', 'attr': {}, 'child': [] }\n\nfunction! s:nr2byte(nr)\n  if a:nr < 0x80\n    return nr2char(a:nr)\n  elseif a:nr < 0x800\n    return nr2char(a:nr/64+192).nr2char(a:nr%64+128)\n  else\n    return nr2char(a:nr/4096%16+224).nr2char(a:nr/64%64+128).nr2char(a:nr%64+128)\n  endif\nendfunction\n\nfunction! s:nr2enc_char(charcode)\n  if &encoding == 'utf-8'\n    return nr2char(a:charcode)\n  endif\n  let char = s:nr2byte(a:charcode)\n  if strlen(char) > 1\n    let char = strtrans(iconv(char, 'utf-8', &encoding))\n  endif\n  return char\nendfunction\n\nfunction! s:nr2hex(nr)\n  let n = a:nr\n  let r = \"\"\n  while n\n    let r = '0123456789ABCDEF'[n % 16] . r\n    let n = n / 16\n  endwhile\n  return r\nendfunction\n\nfunction! s:decodeEntityReference(str, ...)\n  let str = a:str\n  let str = substitute(str, '&gt;', '>', 'g')\n  let str = substitute(str, '&lt;', '<', 'g')\n  if get(g:, 'webapi#xml#decodeAsHTML', 0)\n    let str = substitute(str, '&quot;', '\"', 'g')\n    let str = substitute(str, '&apos;', \"'\", 'g')\n    let str = substitute(str, '&nbsp;', ' ', 'g')\n    let str = substitute(str, '&yen;', '\\&#65509;', 'g')\n  endif\n  let str = substitute(str, '&#x\\([0-9a-fA-F]\\+\\);', '\\=s:nr2enc_char(\"0x\".submatch(1))', 'g')\n  let str = substitute(str, '&#\\(\\d\\+\\);', '\\=s:nr2enc_char(submatch(1))', 'g')\n  let str = substitute(str, '&amp;', '\\&', 'g')\n  return str\nendfunction\n\nfunction! s:encodeEntityReference(str)\n  let str = a:str\n  let str = substitute(str, '&', '\\&amp;', 'g')\n  let str = substitute(str, '>', '\\&gt;', 'g')\n  let str = substitute(str, '<', '\\&lt;', 'g')\n  let str = substitute(str, '\"', '\\&#34;', 'g')\n  \"let str = substitute(str, \"\\n\", '\\&#x0d;', 'g')\n  \"let str = substitute(str, '\"', '&quot;', 'g')\n  \"let str = substitute(str, \"'\", '&apos;', 'g')\n  \"let str = substitute(str, ' ', '&nbsp;', 'g')\n  return str\nendfunction\n\nfunction! s:matchNode(node, cond)\n  if type(a:cond) == 1 && a:node.name == a:cond\n    return 1\n  endif\n  if type(a:cond) == 2\n    return a:cond(a:node)\n  endif\n  if type(a:cond) == 3\n    let ret = 1\n    for l:R in a:cond\n      if !s:matchNode(a:node, l:R) | let ret = 0 | endif\n      unlet l:R\n    endfor\n    return ret\n  endif\n  if type(a:cond) == 4\n    for k in keys(a:cond)\n      if has_key(a:node.attr, k) && a:node.attr[k] == a:cond[k] | return 1 | endif\n    endfor\n  endif\n  return 0\nendfunction\n\nfunction! s:template.childNode(...) dict\n  for c in self.child\n    if type(c) == 4 && s:matchNode(c, a:000)\n      return c\n    endif\n    unlet c\n  endfor\n  return {}\nendfunction\n\nfunction! s:template.childNodes(...) dict\n  let ret = []\n  for c in self.child\n    if type(c) == 4 && s:matchNode(c, a:000)\n      let ret += [c]\n    endif\n    unlet c\n  endfor\n  return ret\nendfunction\n\nfunction! s:template.value(...) dict\n  if a:0\n    let self.child = a:000\n    return\n  endif\n  let ret = ''\n  for c in self.child\n    if type(c) <= 1 || type(c) == 5\n      let ret .= c\n    elseif type(c) == 4\n      let ret .= c.value()\n    endif\n    unlet c\n  endfor\n  return ret\nendfunction\n\nfunction! s:template.find(...) dict\n  for c in self.child\n    if type(c) == 4\n      if s:matchNode(c, a:000)\n        return c\n      endif\n      unlet! ret\n      let ret = c.find(a:000)\n      if !empty(ret)\n        return ret\n      endif\n    endif\n    unlet c\n  endfor\n  return {}\nendfunction\n\nfunction! s:template.findAll(...) dict\n  let ret = []\n  for c in self.child\n    if type(c) == 4\n      if s:matchNode(c, a:000)\n        call add(ret, c)\n      endif\n      let ret += c.findAll(a:000)\n    endif\n    unlet c\n  endfor\n  return ret\nendfunction\n\nfunction! s:template.toString() dict\n  let xml = '<' . self.name\n  for attr in keys(self.attr)\n    let xml .= ' ' . attr . '=\"' . s:encodeEntityReference(self.attr[attr]) . '\"'\n  endfor\n  if len(self.child)\n    let xml .= '>'\n    for c in self.child\n      if type(c) == 4\n        let xml .= c.toString()\n      elseif type(c) > 1\n        let xml .= s:encodeEntityReference(string(c))\n      else\n        let xml .= s:encodeEntityReference(c)\n      endif\n      unlet c\n    endfor\n    let xml .= '</' . self.name . '>'\n  else\n    let xml .= ' />'\n  endif\n  return xml\nendfunction\n\nfunction! webapi#xml#createElement(name)\n  let node = deepcopy(s:template)\n  let node.name = a:name\n  return node\nendfunction\n\nfunction! s:parse_tree(ctx, top)\n  let node = a:top\n  let stack = [a:top]\n  let pos = 0\n  \" content accumulates the text only tags\n  let content = \"\"\n  let append_content_to_parent = 'if len(stack) && content != \"\" | call add(stack[-1].child, content) | let content =\"\" | endif'\n\n  let mx = '^\\s*\\(<?xml[^>]\\+>\\)'\n  if a:ctx['xml'] =~ mx\n    let match = matchstr(a:ctx['xml'], mx)\n    let a:ctx['xml'] = a:ctx['xml'][stridx(a:ctx['xml'], match) + len(match):]\n    let mx = 'encoding\\s*=\\s*[\"'']\\{0,1}\\([^\"'' \\t]\\+\\|[^\"'']\\+\\)[\"'']\\{0,1}'\n    let matches = matchlist(match, mx)\n    if len(matches)\n      let encoding = matches[1]\n      if len(encoding) && len(a:ctx['encoding']) == 0\n        let a:ctx['encoding'] = encoding\n        let a:ctx['xml'] = iconv(a:ctx['xml'], encoding, &encoding)\n      endif\n    endif\n  endif\n\n  \" this regex matches\n  \" 1) the remaining until the next tag begins\n  \"    2) maybe closing \"/\" of tag name\n  \"    3)  tagname\n  \"    4) the attributes of the text (optional)\n  \"    5) maybe closing \"/\" (end of tag name)\n  \" or\n  \"    6) CDATA or ''\n  \"    7) text content of CDATA\n  \" 8) the remaining text after the tag (rest)\n  \" (These numbers correspond to the indexes in matched list m)\n  let tag_mx = '^\\(\\_.\\{-}\\)\\%(\\%(<\\(/\\?\\)\\([^!/>[:space:]]\\+\\)\\(\\%([[:space:]]*[^/>=[:space:]]\\+[[:space:]]*=[[:space:]]*\\%([^\"'' >\\t]\\+\\|\"[^\"]*\"\\|''[^'']*''\\)\\|[[:space:]]\\+[^/>=[:space:]]\\+[[:space:]]*\\)*\\)[[:space:]]*\\(/\\?\\)>\\)\\|\\%(<!\\[\\(CDATA\\)\\[\\(.\\{-}\\)\\]\\]>\\)\\|\\(<!--.\\{-}-->\\)\\)\\(.*\\)'\n\n  while len(a:ctx['xml']) > 0\n    let m = matchlist(a:ctx.xml, tag_mx)\n    if empty(m) | break | endif\n    let is_end_tag = m[2] == '/' && m[5] == ''\n    let is_start_and_end_tag = m[2] == '' && m[5] == '/'\n    let tag_name = m[3]\n    let attrs = m[4]\n\n    if len(m[1])\n      let content .= s:decodeEntityReference(m[1])\n    endif\n\n    if is_end_tag\n      \" closing tag: pop from stack and continue at upper level\n      exec append_content_to_parent\n\n      if len(stack) \" TODO: checking whether opened tag is exist. \n        call remove(stack, -1)\n      endif\n      let a:ctx['xml'] = m[9]\n      continue\n    endif\n\n    \" comment tag\n    if m[8] != ''\n        let a:ctx.xml = m[9]\n        continue\n    endif\n\n    \" if element is a CDATA\n    if m[6] != ''\n        let content .= m[7]\n        let a:ctx.xml = m[9]\n        continue\n    endif\n\n    let node = deepcopy(s:template)\n    let node.name = tag_name\n    let attr_mx = '\\([^=[:space:]]\\+\\)\\s*\\%(=\\s*''\\([^'']*\\)''\\|=\\s*\"\\([^\"]*\\)\"\\|=\\s*\\(\\w\\+\\)\\|\\)'\n    while len(attrs) > 0\n      let attr_match = matchlist(attrs, attr_mx)\n      if len(attr_match) == 0\n        break\n      endif\n      let name = attr_match[1]\n      let value = len(attr_match[2]) ? attr_match[2] : len(attr_match[3]) ? attr_match[3] : len(attr_match[4]) ? attr_match[4] : \"\"\n      if value == \"\"\n        let value = name\n      endif\n      let node.attr[name] = s:decodeEntityReference(value)\n      let attrs = attrs[stridx(attrs, attr_match[0]) + len(attr_match[0]):]\n    endwhile\n\n    exec append_content_to_parent\n\n    if len(stack)\n      call add(stack[-1].child, node)\n    endif\n    if !is_start_and_end_tag\n      \" opening tag, continue parsing its contents\n      call add(stack, node)\n    endif\n    let a:ctx['xml'] = m[9]\n  endwhile\nendfunction\n\nfunction! webapi#xml#parse(xml)\n  let top = deepcopy(s:template)\n  let oldmaxmempattern=&maxmempattern\n  let oldmaxfuncdepth=&maxfuncdepth\n  let &maxmempattern=2000000\n  let &maxfuncdepth=2000\n  \"try\n    call s:parse_tree({'xml': a:xml, 'encoding': ''}, top)\n    for node in top.child\n      if type(node) == 4\n        return node\n      endif\n      unlet node\n    endfor\n  \"catch /.*/\n  \"endtry\n  let &maxmempattern=oldmaxmempattern\n  let &maxfuncdepth=oldmaxfuncdepth\n  throw \"Parse Error\"\nendfunction\n\nfunction! webapi#xml#parseFile(fname)\n  return webapi#xml#parse(join(readfile(a:fname), \"\\n\"))\nendfunction\n\nfunction! webapi#xml#parseURL(url)\n  return webapi#xml#parse(webapi#http#get(a:url).content)\nendfunction\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim:set et:\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/autoload/webapi/xmlrpc.vim",
    "content": "\" xmlrpc\n\" Last Change: 2010-11-05\n\" Maintainer:   Yasuhiro Matsumoto <mattn.jp@gmail.com>\n\" License:      This file is placed in the public domain.\n\" Reference:\n\"   http://tools.ietf.org/rfc/rfc3529.txt\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\nlet s:system = function(get(g:, 'webapi#system_function', 'system'))\n\nfunction! webapi#xmlrpc#nil()\n  return 0\nendfunction\n\nfunction! webapi#xmlrpc#true()\n  return 1\nendfunction\n\nfunction! webapi#xmlrpc#false()\n  return 0\nendfunction\n\nfunction! s:get_childNode(node)\n  let child = a:node.childNode('value').childNode()\n  if empty(child)\n    let child = a:node.childNode('value')\n  endif\n  return child\nendfunction\n\nfunction! s:from_value(value)\n  let value = a:value\n  if value.name == 'methodResponse'\n    let param = value.childNode('params').childNodes('param')\n    if len(param) == 1\n      return s:from_value(s:get_childNode(param[0]))\n    else\n      let ret = []\n      for v in param\n        call add(ret, s:from_value(s:get_childNode(v)))\n      endfor\n      return ret\n    endif\n  elseif value.name == 'string'\n    return value.value()\n  elseif value.name == 'base64'\n    return value.value()\n  elseif value.name == 'dateTime.iso8601'\n    return value.value()\n  elseif value.name == 'boolean'\n    return 0+substitute(value.value(), \"[ \\n\\r]\", '', 'g')\n  elseif value.name == 'int'\n    return 0+substitute(value.value(), \"[ \\n\\r]\", '', 'g')\n  elseif value.name == 'i4'\n    return 0+substitute(value.value(), \"[ \\n\\r]\", '', 'g')\n  elseif value.name == 'double'\n    return str2float(substitute(value.value(), \"[ \\n\\r]\", '', 'g'))\n  elseif value.name == 'struct'\n    let ret = {}\n    for member in value.childNodes('member')\n      let ret[member.childNode('name').value()] = s:from_value(s:get_childNode(member))\n    endfor\n    return ret\n  elseif value.name == 'array'\n    let ret = []\n    for v in value.childNode('data').childNodes('value')\n      let child = v.childNode()\n      if !empty(child)\n        call add(ret, s:from_value(child))\n      else\n        call add(ret, v.value())\n      endif\n    endfor\n    return ret\n  elseif value.name == 'nil'\n    if get(g:, 'webapi#xmlrpc#allow_nil', 0) != 0\n      return function('webapi#xmlrpc#nil')\n    endif\n    return 0\n  elseif value.name == 'value'\n    return value.value()\n  else\n    throw \"unknown type: \".value.name\n  endif\nendfunction\n\nfunction! s:to_value(content)\n  if type(a:content) == 4\n    if has_key(a:content, 'bits')\n      let struct = webapi#xml#createElement(\"struct\")\n\n      let member = webapi#xml#createElement(\"member\")\n      call add(struct.child, member)\n      let name = webapi#xml#createElement(\"name\")\n      call add(member.child, name)\n      call name.value(\"name\")\n      let value = webapi#xml#createElement(\"value\")\n      call add(member.child, value)\n      call add(value.child, s:to_value(a:content[\"name\"]))\n\n      let member = webapi#xml#createElement(\"member\")\n      call add(struct.child, member)\n      let name = webapi#xml#createElement(\"name\")\n      call name.value(\"bits\")\n      call add(member.child, name)\n      let value = webapi#xml#createElement(\"value\")\n      call add(member.child, value)\n      let base64 = webapi#xml#createElement(\"base64\")\n      call add(value.child, base64)\n      if has_key(a:content, \"bits\") && len(a:content[\"bits\"])\n        call base64.value(a:content[\"bits\"])\n      elseif has_key(a:content, \"path\")\n        let quote = &shellxquote == '\"' ?  \"'\" : '\"'\n        let bits = substitute(s:system(\"xxd -ps \".quote.a:content[\"path\"].quote), \"[ \\n\\r]\", '', 'g')\n        call base64.value(webapi#base64#b64encodebin(bits))\n      endif\n      return struct\n    else\n      let struct = webapi#xml#createElement(\"struct\")\n      for key in keys(a:content)\n        let member = webapi#xml#createElement(\"member\")\n        let name = webapi#xml#createElement(\"name\")\n        call name.value(key)\n        call add(member.child, name)\n        let value = webapi#xml#createElement(\"value\")\n        call add(value.child, s:to_value(a:content[key]))\n        call add(member.child, value)\n        call add(struct.child, member)\n      endfor\n      return struct\n    endif\n  elseif type(a:content) == 3\n    let array = webapi#xml#createElement(\"array\")\n    let data = webapi#xml#createElement(\"data\")\n    for item in a:content\n      let value = webapi#xml#createElement(\"value\")\n      call add(value.child, s:to_value(item))\n      call add(data.child, value)\n    endfor\n    call add(array.child, data)\n    return array\n  elseif type(a:content) == 2\n    if a:content == function('webapi#xmlrpc#true')\n      let true = webapi#xml#createElement(\"boolean\")\n      call true.value('true')\n      return true\n    elseif a:content == function('webapi#xmlrpc#false')\n      let false = webapi#xml#createElement(\"boolean\")\n      call false.value('false')\n      return false\n    else\n      return webapi#xml#createElement(\"nil\")\n    endif\n  elseif type(a:content) <= 1 || type(a:content) == 5\n    if type(a:content) == 0\n      let int = webapi#xml#createElement(\"int\")\n      call int.value(a:content)\n      return int\n    elseif type(a:content) == 1\n      let str = webapi#xml#createElement(\"string\")\n      call str.value(a:content)\n      return str\n    elseif type(a:content) == 5\n      let double = webapi#xml#createElement(\"double\")\n      call double.value(a:content)\n      return double\n    endif\n  endif\n  return {}\nendfunction\n\nfunction! s:to_fault(dom)\n  let struct = a:dom.find('struct')\n  let faultCode = \"\"\n  let faultString = \"\"\n  for member in struct.childNodes('member')\n    if member.childNode('name').value() == \"faultCode\"\n      let faultCode = member.childNode('value').value()\n    elseif member.childNode('name').value() == \"faultString\"\n      let faultString = member.childNode('value').value()\n    endif\n  endfor\n  return faultCode.\":\".faultString\nendfunction\n\n\"add_node_params\n\"Add list of args on the xml tree.\n\"input: list of args\n\"output: none\nfunction! s:add_node_params(args)\n  let params = webapi#xml#createElement(\"params\")\n  for Arg in a:args\n    let param = webapi#xml#createElement(\"param\")\n    let value = webapi#xml#createElement(\"value\")\n    call value.value(s:to_value(Arg))\n    call add(param.child, value)\n    call add(params.child, param)\n    unlet Arg\n  endfor\n  return params\nendfunction\n\nfunction! webapi#xmlrpc#call(uri, func, args)\n  let methodCall = webapi#xml#createElement(\"methodCall\")\n  let methodName = webapi#xml#createElement(\"methodName\")\n  call methodName.value(a:func)\n  call add(methodCall.child, methodName)\n  if !empty(a:args)\n    call add(methodCall.child, s:add_node_params(a:args))\n  endif\n  let xml = '<?xml version=\"1.0\" encoding=\"utf-8\"?>'\n  let xml .= iconv(methodCall.toString(), &encoding, \"utf-8\")\n  let res = webapi#http#post(a:uri, xml, {\"Content-Type\": \"text/xml\"})\n  let dom = webapi#xml#parse(res.content)\n  if len(dom.find('fault'))\n    throw s:to_fault(dom)\n  else\n    return s:from_value(dom)\n  endif\nendfunction\n\nfunction! webapi#xmlrpc#wrap(contexts)\n  let api = {}\n  for context in a:contexts\n    let target = api\n    let namespaces = split(context.name, '\\.')[:-2]\n    if len(namespaces) > 0\n      for ns in namespaces\n        if !has_key(target, ns)\n          let target[ns] = {\".uri\": context.uri}\n        endif\n        let target = target[ns]\n        let api['.uri'] = target['.uri']\n      endfor\n    endif\n    if len(context.argnames) && context.argnames[-1] == '...'\n      let arglist = '[' . join(map(copy(context.argnames[:-2]),'\"a:\".v:val'),',') . ']+a:000'\n    else\n      let arglist = '[' . join(map(copy(context.argnames),'\"a:\".v:val'),',') . ']'\n    endif\n    if has_key(context, 'alias')\n      exe \"function api.\".context.alias.\"(\".join(context.argnames,\",\").\") dict\\n\"\n      \\.  \"  return webapi#xmlrpc#call(self['.uri'], '\".context.name.\"', \".arglist.\")\\n\"\n      \\.  \"endfunction\\n\"\n    else\n      exe \"function api.\".context.name.\"(\".join(context.argnames,\",\").\") dict\\n\"\n      \\.  \"  return webapi#xmlrpc#call('\".context.uri.\"', '\".context.name.\"', \".arglist.\")\\n\"\n      \\.  \"endfunction\\n\"\n    endif\n  endfor\n  return api\nendfunction\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n\n\" vim:set et:\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/doc/webapi-html.txt",
    "content": "*webapi-html.txt*\t\t\tHTML parser written in pure vimscript.\n\nMaintainer: mattn <mattn.jp@gmail.com>\n\n==============================================================================\nCONTENTS\t\t\t\t*webapi-html-contents*\n\nINTRODUCTION\t\t\t\t|webapi-html-introduction|\nINTERFACE\t\t\t\t|webapi-html-interface|\n  Functions\t\t\t\t|webapi-html-functions|\n  Structures\t\t\t\t|webapi-html-structures|\n\n==============================================================================\nINTRODUCTION\t\t\t\t*webapi-html-introduction*\n\n*webapi-html* is HTML parser Library.\n\n==============================================================================\nINTERFACE\t\t\t\t*webapi-html-interface*\n------------------------------------------------------------------------------\nFUNCTIONS\t\t\t\t*webapi-html-functions*\n\nparse(content)\t\t\t\t*webapi-html.parse()*\n\tParse content into DOM object.\n\nparseFile(file)\t\t\t\t*webapi-html.parseFile()*\n\tParse html file into DOM object.\n\nparseURI(url)\t\t\t\t*webapi-html.parseURI()*\n\tGet and parse html into DOM object.\n\n------------------------------------------------------------------------------\nSTRUCTURES\t\t\t\t*webapi-html-structures*\n\nDOM object is structured as |Directory| like following.\n>\n\t{\n\t  \"name\": \"a\",\n\t  \"attr\": {\n\t    \"href\": \"http://example.com\",\n\t    \"title\": \"example\",\n\t  },\n\t  \"child\": [...]\n\t}\n<\n==============================================================================\nvim:tw=78:fo=tcq2mM:ts=8:ft=help:norl\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/doc/webapi-http.txt",
    "content": "*webapi-http.txt*\t\t\t\tsimple HTTP client library.\n\nMaintainer: mattn <mattn.jp@gmail.com>\n\n==============================================================================\nCONTENTS\t\t\t\t*webapi-http-contents*\n\nINTRODUCTION\t\t\t\t|webapi-http-introduction|\nINTERFACE\t\t\t\t|webapi-http-interface|\n  Functions\t\t\t\t|webapi-http-functions|\n  Response\t\t\t\t|webapi-http-response|\n\n==============================================================================\nINTRODUCTION\t\t\t\t*webapi-http-introduction*\n\n*webapi-http* is HTTP Utilities Library. It provides simple HTTP client.\n\n==============================================================================\nINTERFACE\t\t\t\t*webapi-http-interface*\n------------------------------------------------------------------------------\nFUNCTIONS\t\t\t\t*webapi-http-functions*\n\nget(url, param, header)\t\t\t*webapi-http.get()*\n\tSend GET request to url.\n\npost(url, param, header)\t\t*webapi-http.post()*\n\tSend POST request to url.\n\nencodeURI(param)\t\t\t*webapi-http.encodeURI()*\n\tEncode params as URI query.\n\ndecodeURI(str)\t\t\t\t*webapi-http.decodeURI()*\n\tDecode string as URI params.\n\nencodeURIComponent(str)\t\t\t*webapi-http.encodeURIComponent()*\n\tEncode param as URI components.\n\n------------------------------------------------------------------------------\nRESPONSE\t\t\t\t*webapi-http-response*\n\n|webapi-http.get| and |webapi-http.post| return data structure as\n|Directory| like following.\n>\n\t{\n\t  \"header\": [\n\t    \"Content-Type: text/html\",\n\t    \"Content-Length: 310\"\n\t  ],\n\t  \"content\": \"<html> .....\"\n\t}\n<\n==============================================================================\nvim:tw=78:fo=tcq2mM:ts=8:ft=help:norl\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/doc/webapi-json.txt",
    "content": "*webapi-json.txt*\t\t\tJSON parser written in pure vimscript.\n\nMaintainer: mattn <mattn.jp@gmail.com>\n\n==============================================================================\nCONTENTS\t\t\t\t*webapi-json-contents*\n\nINTRODUCTION\t\t\t\t|webapi-json-introduction|\nINTERFACE\t\t\t\t|webapi-json-interface|\n  Functions\t\t\t\t|webapi-json-functions|\n\n==============================================================================\nINTRODUCTION\t\t\t\t*webapi-json-introduction*\n\n*webapi-json* is JSON parser Library.\n\n==============================================================================\nINTERFACE\t\t\t\t*webapi-json-interface*\n------------------------------------------------------------------------------\nFUNCTIONS\t\t\t\t*webapi-json-functions*\n\nencode(object)\t\t\t\t*webapi-json.encode()*\n\tEncode object into JSON string.\n\ndecode(json)\t\t\t\t*webapi-json.decode()*\n\tDecode JSON string into variable that vim can treat.\n\n==============================================================================\nvim:tw=78:fo=tcq2mM:ts=8:ft=help:norl\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/doc/webapi-xml.txt",
    "content": "*webapi-xml.txt*\t\t\tXML parser written in pure vimscript.\n\nMaintainer: mattn <mattn.jp@gmail.com>\n\n==============================================================================\nCONTENTS\t\t\t\t*webapi-xml-contents*\n\nINTRODUCTION\t\t\t\t|webapi-xml-introduction|\nINTERFACE\t\t\t\t|webapi-xml-interface|\n  Functions\t\t\t\t|webapi-xml-functions|\n  Structures\t\t\t\t|webapi-xml-structures|\n\n==============================================================================\nINTRODUCTION\t\t\t\t*webapi-xml-introduction*\n\n*webapi-xml* is XML parser Library.\n\n==============================================================================\nINTERFACE\t\t\t\t*webapi-xml-interface*\n------------------------------------------------------------------------------\nFUNCTIONS\t\t\t\t*webapi-xml-functions*\n\nparse(content)\t\t\t\t*webapi-xml.parse()*\n\tParse content into DOM object.\n\nparseFile(file)\t\t\t\t*webapi-xml.parseFile()*\n\tParse html file into DOM object.\n\nparseURI(url)\t\t\t\t*webapi-xml.parseURI()*\n\tGet and parse html into DOM object.\n\n------------------------------------------------------------------------------\nSTRUCTURES\t\t\t\t*webapi-xml-structures*\n\nDOM object is structured as |Directory| like following.\n>\n\t{\n\t  \"name\": \"a\",\n\t  \"attr\": {\n\t    \"href\": \"http://example.com\",\n\t    \"title\": \"example\",\n\t  },\n\t  \"child\": [...]\n\t}\n<\n==============================================================================\nvim:tw=78:fo=tcq2mM:ts=8:ft=help:norl\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/example/gistview.vim",
    "content": "function! s:dump(node, syntax)\n  let syntax = a:syntax\n  if type(a:node) == 1\n    if len(syntax) | exe \"echohl \".syntax | endif\n    echon webapi#html#decodeEntityReference(a:node)\n    echohl None\n  elseif type(a:node) == 3\n    for n in a:node\n      call s:dump(n, syntax)\n    endfor\n    return\n  elseif type(a:node) == 4\n      \"echo a:node.name\n      \"echo a:node.attr\n    let syndef = {'kt' : 'Type', 'mi' : 'Number', 'nb' : 'Statement', 'kp' : 'Statement', 'nn' : 'Define', 'nc' : 'Constant', 'no' : 'Constant', 'k'  : 'Include', 's'  : 'String', 's1' : 'String', 'err': 'Error', 'kd' : 'StorageClass', 'c1' : 'Comment', 'ss' : 'Delimiter', 'vi' : 'Identifier'}\n    for a in keys(syndef)\n      if has_key(a:node.attr, 'class') && a:node.attr['class'] == a | let syntax = syndef[a] | endif\n    endfor\n    if has_key(a:node.attr, 'class') && a:node.attr['class'] == 'line' | echon \"\\n\" | endif\n    for c in a:node.child\n      call s:dump(c, syntax)\n      unlet c\n    endfor\n  endif\nendfunction\n\nlet no = 357275\nlet res = webapi#http#get(printf('http://gist.github.com/%d.json', no))\nlet obj = webapi#json#decode(res.content)\nlet dom = webapi#html#parse(obj.div)\necho \"-------------------------------------------------\"\nfor file in dom.childNodes('div')\n  unlet! meta\n  let meta = file.childNodes('div')\n  if len(meta) > 1\n    echo \"URL:\".meta[1].find('a').attr['href']\n  endif\n  echo \"\\n\"\n  call s:dump(file.find('pre'), '')\n  echo \"-------------------------------------------------\"\nendfor\n\n\" vim: set et:\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/example/google-buzz.vim",
    "content": "set rtp+=.\n\nlet ctx = {}\nlet configfile = expand('~/.google-buzz-vim')\nif filereadable(configfile)\n  let ctx = eval(join(readfile(configfile), \"\"))\nelse\n  let ctx.consumer_key = input(\"consumer_key:\")\n  let ctx.consumer_secret = input(\"consumer_secret:\")\n  let ctx.domain = input(\"domain:\")\n  let ctx.callback = input(\"callback:\")\n\n  let request_token_url = \"https://www.google.com/accounts/OAuthGetRequestToken\"\n  let auth_url = \"https://www.google.com/accounts/OAuthAuthorizeToken\"\n  let access_token_url = \"https://www.google.com/accounts/OAuthGetAccessToken\"\n\n  let ctx = webapi#oauth#request_token(request_token_url, ctx, {\"scope\": \"https://www.googleapis.com/auth/buzz\", \"oauth_callback\": ctx.callback})\n  if has(\"win32\") || has(\"win64\")\n    exe \"!start rundll32 url.dll,FileProtocolHandler \".auth_url.\"?oauth_token=\".ctx.request_token.\"&domain=\".ctx.domain.\"&scope=https://www.googleapis.com/auth/buzz\"\n  else\n    call system(\"xdg-open '\".auth_url.\"?oauth_token=\".ctx.request_token. \"&domain=\".ctx.domain.\"&scope=https://www.googleapis.com/auth/buzz'\")\n  endif\n  let verifier = input(\"VERIFIER:\")\n  let ctx = webapi#oauth#access_token(access_token_url, ctx, {\"oauth_verifier\": verifier})\n  call writefile([string(ctx)], configfile)\nendif\n\nlet post_url = \"https://www.googleapis.com/buzz/v1/activities/@me/@self\"\nlet data = ''\n\\.'<entry xmlns:activity=\"http://activitystrea.ms/spec/1.0/\"'\n\\.' xmlns:poco=\"http://portablecontacts.net/ns/1.0\"'\n\\.' xmlns:georss=\"http://www.georss.org/georss\"'\n\\.' xmlns:buzz=\"http://schemas.google.com/buzz/2010\">'\n\\.'  <activity:object>'\n\\.'    <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>'\n\\.'    <content>ばず! ばず!</content>'\n\\.'  </activity:object>'\n\\.'</entry>'\nlet ret = webapi#oauth#post(post_url, ctx, {}, data, {\"Content-Type\": \"application/atom+xml\", \"GData-Version\": \"2.0\"})\necho ret\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/example/hatenadiary.vim",
    "content": "scriptencoding utf-8\n\nlet hatena_id = 'your-hatena-id'\nlet password = 'your-hatena-password'\n\n\" write entry\nlet entry = atom#newEntry()\ncall entry.setTitle(\"title of entry\")\ncall entry.setContentType(\"text/html\")\ncall entry.setContent(\"<script>alert(2)</script>\")\n\n\" post draft\nlet id = atom#createEntry(\"http://d.hatena.ne.jp/\".hatena_id.\"/atom/draft\", hatena_id, password, entry)\n\n\" modify it. publish it.\ncall entry.setContent(\"<script>alert(1)</script>\")\nlet id = atom#updateEntry(id, hatena_id, password, entry, {\"X-HATENA-PUBLISH\": 1})\n\n\" get the entry.\nlet entry = atom#getEntry(id, hatena_id, password)\necho entry.getTitle()\necho entry.getContent()\n\n\" delete the entry.\ncall atom#deleteEntry(id, hatena_id, password)\n\n\" vim:set ft=vim:\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/example/jugem.vim",
    "content": "scriptencoding utf-8\n\nlet jugem_id = 'your-jugem-id'\nlet password = 'your-jugem-password'\nlet imageName = \"my-image.gif\" \nlet imagePath = \"/path/to/images/my-image.gif\" \n\nlet api = metaWeblog#proxy(\"http://\".jugem_id.\".jugem.jp/admin/xmlrpc.php\")\n\nlet imgurl = api.newMediaObject(jugem_id, jugem_id, password, {\n\\ \"name\": imageName,\n\\ \"path\": imagePath,\n\\})\n\nlet text = \"How about this?<br /><img src=\\\"\".imgurl[\"url\"].\"\\\">\"\n\necho api.newPost(jugem_id, jugem_id, password, {\n\\ \"title\": \"post from webpi-vim\",\n\\ \"description\": text,\n\\ \"dateCreated\": \"\",\n\\ \"categories\": [\"test\"],\n\\}, 1)\n\n\" vim:set ft=vim:\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/example/livedoor.vim",
    "content": "scriptencoding utf-8\n\nlet livedoor_id = 'your-livedoor-id'\nlet password = 'your-livedoor-password'\n\n\" write entry\nlet entry = atom#newEntry()\ncall entry.setTitle(\"title of entry\")\ncall entry.setContentType(\"text/html\")\ncall entry.setContent(\"<script>alert(3)</script>\")\n\nlet postUrl = \"http://cms.blog.livedoor.com/atom\"\necho atom#createEntry(postUrl, livedoor_id, password, entry)\n\n\" vim:set ft=vim:\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/example/rss.vim",
    "content": "for item in webapi#feed#parseURL('http://rss.slashdot.org/Slashdot/slashdot')\n  echo item.link\n  echo \"  \" item.title\nendfor\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/example/twitter.vim",
    "content": "set rtp+=webapi-vim\n\nlet ctx = {}\nlet configfile = expand('~/.twitter-vim')\nif filereadable(configfile)\n  let ctx = eval(join(readfile(configfile), \"\"))\nelse\n  let ctx.consumer_key = input(\"consumer_key:\")\n  let ctx.consumer_secret = input(\"consumer_secret:\")\n\n  let request_token_url = \"https://twitter.com/oauth/request_token\"\n  let auth_url =  \"https://twitter.com/oauth/authorize\"\n  let access_token_url = \"https://api.twitter.com/oauth/access_token\"\n\n  let ctx = webapi#oauth#request_token(request_token_url, ctx)\n  if has(\"win32\") || has(\"win64\")\n    exe \"!start rundll32 url.dll,FileProtocolHandler \".auth_url.\"?oauth_token=\".ctx.request_token\n  else\n    call system(\"xdg-open '\".auth_url.\"?oauth_token=\".ctx.request_token.\"'\")\n  endif\n  let pin = input(\"PIN:\")\n  let ctx = webapi#oauth#access_token(access_token_url, ctx, {\"oauth_verifier\": pin})\n  call writefile([string(ctx)], configfile)\nendif\n\nlet post_url = \"https://api.twitter.com/1/statuses/update.xml\"\nlet status = \"tweeeeeeeeeeeeeet\"\nlet ret = webapi#oauth#post(post_url, ctx, {}, {\"status\": status})\necho ret\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/example/weather.vim",
    "content": "let loc = 'Osaka'\nlet dom = webapi#xml#parseURL(printf('http://www.google.com/ig/api?weather=%s', webapi#http#encodeURIComponent(loc)))\necho loc.'''s current weather is '.dom.find('current_conditions').childNode('condition').attr['data']\n"
  },
  {
    "path": ".vim/bundle/webapi-vim/webapi.vim.vimup",
    "content": "script_name: WebAPI.vim\nscript_id: '4019'\nscript_type: utility\nscript_package: webapi-vim.zip\nscript_version: '0.2'\nrequired_vim_version: '7.0'\nsummary: vimscript for gist\n\ndetailed_description: |\n  Interface to Web APIs\n\n  webapi-vim include:\n\n  * XML parser Library.\n  * HTML parser Library.\n  * JSON parser Library.\n  * HTTP client.\n\n  and some utility functions.\n\ninstall_details: |\n  copy it to your plugin directory.\n\nversions:\n- '0.2': |\n   Bug fixes.\n- '0.1': |\n   First post.\n\n# __END__\n# vim: filetype=yaml\n"
  },
  {
    "path": ".vim/bundle/wildfire.vim/LICENSE.txt",
    "content": "Copyright (C) 2013 Giacomo Comitti\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n"
  },
  {
    "path": ".vim/bundle/wildfire.vim/README.md",
    "content": "## wildfire.vim\n\nWith *Wildfire* you can quickly select the closest text object among a group of\ncandidates. By default candidates are `i'`, `i\"`, `i)`, `i]`, `i}`, `ip` and `it`.\n\nLearn more about text objects with `:help text-objects`.\n\n![Preview](_assets/preview.gif \"Preview.\")\n\n### Installation\n\nInstall either with [Pathogen](https://github.com/tpope/vim-pathogen),\n[Vundle](https://github.com/gmarik/Vundle.vim), [NeoBundle](https://github.com/Shougo/neobundle.vim),\nor your favorite plugin manager.\n\n### Usage\n\nPress `<ENTER>` in normal mode to select the closest text object. Keep pressing\n`<ENTER>` for selecting the **next** closest text object. To go the other way\nround, that is, to select the **previously** selected text object, press `<BS>`.\n\nTo speed things up, if you want to select the `n`th closest text object you can\npress a number followed by `<ENTER>` (e.g. pressing `2<ENTER>` will select the\nsecond closest text\nobject).\n\nTo change default mappings use the following options:\n\n```vim\n\" This selects the next closest text object.\nlet g:wildfire_fuel_map = \"<ENTER>\"\n\n\" This selects the previous closest text object.\nlet g:wildfire_water_map = \"<BS>\"\n```\n\nBy default, *Wildfire* selects any of the text objects `i'`, `i\"`, `i)`, `i]`,\n`i}`, `ip` and `it`. You can decide the ones to consider with the following\noption:\n\n```vim\nlet g:wildfire_objects = [\"i'\", 'i\"', \"i)\", \"i]\", \"i}\", \"ip\", \"it\"]\n```\n\n### Advanced setup\n\nSometimes considering certain kinds of text objects can be quite annoying. This\nis the case of Html, where, for example, you may want to select just tag objects.\n\nWildfire allows you to be selective about which text objects are considered with\ndifferent filetypes:\n\n```vim\n\" use '*' to mean 'all other filetypes'\n\" in this example, html and xml share the same text objects\nlet g:wildfire_objects = {\n    \\ \"*\" : [\"i'\", 'i\"', \"i)\", \"i]\", \"i}\", \"ip\"],\n    \\ \"html,xml\" : [\"at\"],\n\\ }\n```\n"
  },
  {
    "path": ".vim/bundle/wildfire.vim/autoload/wildfire.vim",
    "content": "\" =============================================================================\n\" File: wildfire.vim\n\" Description: Smart selection of the closest text object\n\" Mantainer: Giacomo Comitti (https://github.com/gcmt)\n\" Url: https://github.com/gcmt/wildfire.vim\n\" License: MIT\n\" =============================================================================\n\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\n\n\" Settings\n\" =============================================================================\n\nlet g:wildfire_objects =\n    \\ get(g:, \"wildfire_objects\", [\"ip\", \"i)\", \"i]\", \"i}\", \"i'\", 'i\"', \"it\"])\n\n\" force `g:wildfire_objects` to be a dictionary\nlet s:wildfire_objects = type(g:wildfire_objects) == type([]) ?\n      \\ {\"*\": g:wildfire_objects} : g:wildfire_objects\n\n\" split filetypes that share the same text objects\nfor [ftypes, objects] in items(s:wildfire_objects)\n    for ft in split(ftypes, \",\")\n        let s:wildfire_objects[ft] = objects\n    endfor\nendfor\n\n\n\" Internal variables\n\" =============================================================================\n\nlet s:objects = [\n    \\ \"(\", \")\", \"{\", \"}\",\"[\", \"]\", \"<\", \">\", \"b\", \"B\",\n    \\ \"'\", '\"', \"`\", \"t\", \"w\", \"W\", \"p\", \"s\"]\n\nlet s:vim_objects = {}\nfor kind in s:objects\n    let s:vim_objects = extend(s:vim_objects, {\"a\".kind : 1, \"i\".kind : 1})\nendfor\nunlet s:objects\n\nlet s:counts = {}\nlet s:selections_history = []\nlet s:origin = []\n\n\n\" Functions\n\" =============================================================================\n\nfu! s:Init()\n    let s:origin = getpos(\".\")\n    let s:selections_history = []\n    let s:counts = {}\n    for object in get(s:wildfire_objects, &ft, get(s:wildfire_objects, \"*\", []))\n        let s:counts[object] = 1\n    endfor\nendfu\n\nfu! wildfire#start(repeat)\n    cal s:Init()\n    cal wildfire#fuel(a:repeat)\nendfu\n\nfu! wildfire#water(repeat)\n  for i in range(a:repeat)\n    cal wildfire#_water()\n  endfor\nendfu\n\nfu! wildfire#_water()\n    cal setpos(\".\", s:origin)\n    if len(s:selections_history) > 1\n        let s:counts[remove(s:selections_history, -1).object] -= 1\n        cal s:Select(get(s:selections_history, -1))\n    endif\nendfu\n\nfu! wildfire#fuel(repeat)\n  for i in range(a:repeat)\n    cal wildfire#_fuel()\n  endfor\nendfu\n\nfu! wildfire#_fuel()\n\n    cal setpos(\".\", s:origin)\n\n    let winview = winsaveview()\n\n    let candidates = {}\n    for object in keys(s:counts)\n\n        let to = {\"object\": object, \"count\": s:counts[object]}\n\n        let [startline, startcol, endline, endcol] = s:Edges(to)\n        let to = extend(to, {\"startline\": startline, \"startcol\": startcol,\n            \\ \"endline\": endline, \"endcol\": endcol })\n\n        cal winrestview(winview)\n\n        \" The selection failed with the candidate text object\n        if to.startline == to.endline && to.startcol == to.endcol\n            continue\n        endif\n\n        \" Sometimes Vim selects text objects even if the cursor is outside the\n        \" them (e.g. `it`, `i\"`, etc). We don't want this.\n        let cursor_col = s:origin[2]\n        if to.startline == to.endline && (cursor_col < to.startcol || cursor_col > to.endcol)\n            let s:counts[object] += 1\n            continue\n        endif\n\n        let size = s:Size(to)\n\n        \" This happens when the _count is incremented but the selection remains still\n        let _to = extend(copy(to), {\"count\": to.count-1})\n        if s:AlreadySelected(_to)\n            continue\n        endif\n\n        \" Special case\n        if object =~ \"a\\\"\\\\|i\\\"\\\\|a'\\\\|i'\" && startline == endline\n            let _to = extend(copy(to), {\"count\": to.count-1, \"startcol\": to.startcol+1, \"endcol\": to.endcol-1})\n            if s:AlreadySelected(_to)\n                \" When there is no more string to select on the same line, vim\n                \" selects the outer string text object. This is far from the\n                \" desired behavior\n                continue\n            endif\n            let _to = extend(copy(to), {\"count\": to.count-1, \"startcol\": to.startcol+1})\n            if s:AlreadySelected(_to)\n                \" This follows the previous check. When the string ends the\n                \" line, the size of the text object is just one character less\n                continue\n            endif\n            let quote = strpart(object, 1)\n            let [before, after] = [getline(\"'<\")[:to.startcol-3], getline(\"'<\")[to.endcol+1:]]\n            if s:OddQuotes(quote, before) || s:OddQuotes(quote, after)\n                continue\n            endif\n        endif\n\n        let candidates[size] = to\n\n    endfor\n\n    cal s:SelectBestCandidate(candidates)\n\nendfu\n\n\" To select the closest text object among the candidates\nfu! s:SelectBestCandidate(candidates)\n    if len(a:candidates)\n        let to = a:candidates[min(keys(a:candidates))]\n        let s:selections_history = add(s:selections_history, to)\n        let s:counts[to.object] += 1\n        cal s:Select(to)\n    elseif len(s:selections_history)\n        \" get stuck on the last selection\n        cal s:Select(get(s:selections_history, -1))\n    else\n        \" do nothing\n        exec \"sil! norm! \\<ESC>\"\n    endif\nendfu\n\n\" To retrun the edges of a text object\nfu! s:Edges(to)\n    cal s:Select(a:to)\n    exe \"sil! norm! \\<ESC>\"\n    return [line(\"'<\"), col(\"'<\"), line(\"'>\"), col(\"'>\")]\nendfu\n\n\" To select a text object\nfu! s:Select(to)\n    exe \"sil! norm! \\<ESC>v\\<ESC>v\"\n    if get(s:vim_objects, a:to.object)\n        \" use counts when selecting vim text objects\n        exe \"sil! norm! \" . a:to.count . a:to.object\n    else\n        \" counts might not be suported by non-defautl text objects\n        for n in range(a:to.count)\n            exe \"sil! norm \" . a:to.object\n        endfor\n    endif\nendfu\n\n\" To check if a text object has been already selected\nfu! s:AlreadySelected(to)\n    return index(s:selections_history, a:to) >= 0\nendfu\n\n\" To return the size of a text object\nfu! s:Size(to)\n    if a:to.startline == a:to.endline\n        let line = getline(a:to.startline)\n        return strlen(strpart(line, a:to.startcol, a:to.endcol-a:to.startcol+1))\n    endif\n    let size = strlen(strpart(getline(a:to.startline), a:to.startcol))\n    let size += strlen(strpart(getline(a:to.endline), 0, a:to.endcol))\n    let size += winwidth(0) * abs(a:to.startline - a:to.endline)  \" good enough\n    return size\nendfu\n\n\" To check if in a strings there is an odd number of quotes\nfu! s:OddQuotes(quote, s)\n    let n = 0\n    for i in range(0, strlen(a:s))\n        if a:s[i] == a:quote && !(i > 0 && a:s[i-1] == \"\\\\\")\n            let n += 1\n        endif\n    endfor\n    return n % 2 != 0\nendfu\n\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n"
  },
  {
    "path": ".vim/bundle/wildfire.vim/doc/wildfire.txt",
    "content": "*wildfire.txt* *wildfire.vim*\n\n\n                                  Wildfire\n\n                                     ~\n\n                              Reference Manual\n\n\n==============================================================================\nCONTENTS                                                   *wildfire-contents*\n\n        1. Intro ................................. |wildfire-intro|\n        2. Usage ................................. |wildfire-usage|\n        3. Advanced setup ........................ |wildfire-advanced-setup|\n        4. About ................................. |wildfire-about|\n        5. License ............................... |wildfire-license|\n\n\n==============================================================================\n1. Intro                                                      *wildfire-intro*\n\nWith Wildfire you can quickly select the closest text object among a group of\ncandidates. By default candidates are `i'`, `i\"`, `i)`, `i]`, `i}`, `ip` and `it`.\n\nLearn more about text objects with `:help text-objects`.\n\n\n==============================================================================\n2. Usage                                                      *wildfire-usage*\n\nPress `<ENTER>` in normal mode to select the closest text object. Keep pressing\n`<ENTER>` for selecting the **next** closest text object. To go the other way\nround, that is, to select the **previously** selected text object, press `<BS>`.\n\nTo speed things up, if you want to select the `n`th closest text object you can\npress a number followed by `<ENTER>` (e.g. pressing `2<ENTER>` will select the\nsecond closest text\nobject).\n\nTo change default mappings use the following options:\n\n>\n    \" This selects the next closest text object.\n    let g:wildfire_fuel_map = \"<ENTER>\"\n<\n>\n    \" This selects the previous closest text object.\n    let g:wildfire_water_map = \"<BS>\"\n<\n\nYou can map keys to '<Plug>' mappings:\n>\n   map <ENTER> <Plug>(wildfire-fuel)\n   map <BS> <Plug>(wildfire-water)\n<\n\nThis is useful when you want to hack key mappings. For example, call fuel/water\nvia another plugins. You can point the interface of fuel/water like below:\n>\n   map <ENTER> <Plug>(wildfire-fuel)U\n<\nThis key mapping make upper-case string on the cursor.\n\nBy default, Wildfire selects any of the text objects `i'`, `i\"`, `i)`, `i]`,\n`i}`, `ip` and `it`. You can decide the ones to consider with the following\noption:\n>\n    let g:wildfire_objects = [\"i'\", 'i\"', \"i)\", \"i]\", \"i}\", \"ip\", \"it\"]\n<\n\n==============================================================================\n3. Advanced setup                                    *wildfire-advanced-setup*\n\nSometimes considering certain kinds of text objects can be quite annoying. This\nis the case of Html, where, for example, you may want to select just tag objects.\n\nWildfire allows you to be selective about which text objects are considered with\ndifferent filetypes:\n>\n    let g:wildfire_objects = {\n        \\ \"*\" : [\"i'\", 'i\"', \"i)\", \"i]\", \"i}\", \"ip\"],  \" use '*' to mean 'all other filetypes'\n        \\ \"html,xml\" : [\"at\"],  \" html and xml share the same text objects\n        \\}\n<\n\n==============================================================================\n4. About                                                      *wildfire-about*\n\nAuthor: Giacomo Comitti\nContributors: https://github.com/gcmt/wildfire.vim/contributors\nGit repository: https://github.com/gcmt/wildfire.vim\n\n\n==============================================================================\n5. License                                                  *wildfire-license*\n\nCopyright (c) 2014 Giacomo Comitti\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\nvim:tw=78:sw=4:ts=8:ft=help:norl:noet:\n"
  },
  {
    "path": ".vim/bundle/wildfire.vim/plugin/wildfire.vim",
    "content": "\" =============================================================================\n\" File: wildfire.vim\n\" Description: Smart selection of the closest text object\n\" Mantainer: Giacomo Comitti (https://github.com/gcmt)\n\" Url: https://github.com/gcmt/wildfire.vim\n\" License: MIT\n\" =============================================================================\n\n\" Init\n\" =============================================================================\n\nif exists(\"g:loaded_wildfire\")\n    finish\nendif\nlet g:loaded_wildfire = 1\n\nlet s:save_cpo = &cpo\nset cpo&vim\n\n\n\" Settings\n\" =============================================================================\n\nlet g:wildfire_fuel_map =\n    \\ get(g:, \"wildfire_fuel_map\", \"<ENTER>\")\n\nlet g:wildfire_water_map =\n    \\ get(g:, \"wildfire_water_map\", \"<BS>\")\n\n\n\" Commands and Mappings\n\" =============================================================================\n\nnnoremap <silent> <Plug>(wildfire-fuel) :<C-U>call wildfire#start(v:count1)<CR>\nvnoremap <silent> <Plug>(wildfire-fuel) :<C-U>call wildfire#fuel(v:count1)<CR>\nvnoremap <silent> <Plug>(wildfire-water) :<C-U>call wildfire#water(v:count1)<CR>\n\nif !hasmapto('<Plug>(wildfire-fuel)') && !hasmapto('<Plug>(wildfire-water)')\n  exe \"nnoremap \" . g:wildfire_fuel_map . \" <Plug>(wildfire-fuel)\"\n  exe \"map\" g:wildfire_fuel_map \"<Plug>(wildfire-fuel)\"\n  exe \"map\" g:wildfire_water_map \"<Plug>(wildfire-water)\"\nendif\n\n\" Autocommands\n\" =============================================================================\n\naugroup wildfire\n    au!\n\n    \" Disable Wildfire inside help or quickfix buffers\n    au BufReadPost,CmdWinEnter * if !empty(&bt) |\n        \\ sil! exec \"nnoremap <buffer> \" . g:wildfire_fuel_map . \" \" . g:wildfire_fuel_map |\n        \\ endif\n\naugroup END\n\nlet &cpo = s:save_cpo\nunlet s:save_cpo\n"
  },
  {
    "path": ".vim/plugin/BufOnly.vim",
    "content": "\" BufOnly.vim  -  Delete all the buffers except the current/named buffer.\n\"\n\" Copyright November 2003 by Christian J. Robinson <infynity@onewest.net>\n\"\n\" Distributed under the terms of the Vim license.  See \":help license\".\n\"\n\" Usage:\n\"\n\" :Bonly / :BOnly / :Bufonly / :BufOnly [buffer] \n\"\n\" Without any arguments the current buffer is kept.  With an argument the\n\" buffer name/number supplied is kept.\n\ncommand! -nargs=? -complete=buffer -bang Bonly\n    \\ :call BufOnly('<args>', '<bang>')\ncommand! -nargs=? -complete=buffer -bang BOnly\n    \\ :call BufOnly('<args>', '<bang>')\ncommand! -nargs=? -complete=buffer -bang Bufonly\n    \\ :call BufOnly('<args>', '<bang>')\ncommand! -nargs=? -complete=buffer -bang BufOnly\n    \\ :call BufOnly('<args>', '<bang>')\n\nfunction! BufOnly(buffer, bang)\n\tif a:buffer == ''\n\t\t\" No buffer provided, use the current buffer.\n\t\tlet buffer = bufnr('%')\n\telseif (a:buffer + 0) > 0\n\t\t\" A buffer number was provided.\n\t\tlet buffer = bufnr(a:buffer + 0)\n\telse\n\t\t\" A buffer name was provided.\n\t\tlet buffer = bufnr(a:buffer)\n\tendif\n\n\tif buffer == -1\n\t\techohl ErrorMsg\n\t\techomsg \"No matching buffer for\" a:buffer\n\t\techohl None\n\t\treturn\n\tendif\n\n\tlet last_buffer = bufnr('$')\n\n\tlet delete_count = 0\n\tlet n = 1\n\twhile n <= last_buffer\n\t\tif n != buffer && buflisted(n)\n\t\t\tif a:bang == '' && getbufvar(n, '&modified')\n\t\t\t\techohl ErrorMsg\n\t\t\t\techomsg 'No write since last change for buffer'\n\t\t\t\t\t\t\t\\ n '(add ! to override)'\n\t\t\t\techohl None\n\t\t\telse\n\t\t\t\tsilent exe 'bdel' . a:bang . ' ' . n\n\t\t\t\tif ! buflisted(n)\n\t\t\t\t\tlet delete_count = delete_count+1\n\t\t\t\tendif\n\t\t\tendif\n\t\tendif\n\t\tlet n = n+1\n\tendwhile\n\n\tif delete_count == 1\n\t\techomsg delete_count \"buffer deleted\"\n\telseif delete_count > 1\n\t\techomsg delete_count \"buffers deleted\"\n\tendif\n\nendfunction\n"
  },
  {
    "path": ".vim/plugin/scratch.vim",
    "content": "\" File: scratch.vim\n\" Author: Yegappan Lakshmanan (yegappan AT yahoo DOT com)\n\" Version: 1.0\n\" Last Modified: June 3, 2003\n\"\n\" Overview\n\" --------\n\" You can use the scratch plugin to create a temporary scratch buffer to store\n\" and edit text that will be discarded when you quit/exit vim. The contents\n\" of the scratch buffer are not saved/stored in a file.\n\"\n\" Installation\n\" ------------\n\" 1. Copy the scratch.vim plugin to the $HOME/.vim/plugin directory. Refer to\n\"    the following Vim help topics for more information about Vim plugins:\n\"\n\"       :help add-plugin\n\"       :help add-global-plugin\n\"       :help runtimepath\n\"\n\" 2. Restart Vim.\n\"\n\" Usage\n\" -----\n\" You can use the following command to open/edit the scratch buffer:\n\"\n\"       :Scratch\n\"\n\" To open the scratch buffer in a new split window, use the following command:\n\"\n\"       :Sscratch\n\"\n\" When you close the scratch buffer window, the buffer will retain the\n\" contents. You can again edit the scratch buffer by openeing it using one of\n\" the above commands. There is no need to save the scatch buffer.\n\"\n\" When you quit/exit Vim, the contents of the scratch buffer will be lost.\n\" You will not be prompted to save the contents of the modified scratch\n\" buffer.\n\"\n\" You can have only one scratch buffer open in a single Vim instance. If the\n\" current buffer has unsaved modifications, then the scratch buffer will be\n\" opened in a new window\n\"\n\" ****************** Do not modify after this line ************************\nif exists('loaded_scratch') || &cp\n    finish\nendif\nlet loaded_scratch=1\n\n\" Scratch buffer name\nlet ScratchBufferName = \"__Scratch__\"\n\n\" ScratchBufferOpen\n\" Open the scratch buffer\nfunction! s:ScratchBufferOpen(new_win)\n    let split_win = a:new_win\n\n    \" If the current buffer is modified then open the scratch buffer in a new\n    \" window\n    if !split_win && &modified\n        let split_win = 1\n    endif\n\n    \" Check whether the scratch buffer is already created\n    let scr_bufnum = bufnr(g:ScratchBufferName)\n    if scr_bufnum == -1\n        \" open a new scratch buffer\n        if split_win\n            exe \"new \" . g:ScratchBufferName\n        else\n            exe \"edit \" . g:ScratchBufferName\n        endif\n    else\n        \" Scratch buffer is already created. Check whether it is open\n        \" in one of the windows\n        let scr_winnum = bufwinnr(scr_bufnum)\n        if scr_winnum != -1\n            \" Jump to the window which has the scratch buffer if we are not\n            \" already in that window\n            if winnr() != scr_winnum\n                exe scr_winnum . \"wincmd w\"\n            endif\n        else\n            \" Create a new scratch buffer\n            if split_win\n                exe \"split +buffer\" . scr_bufnum\n            else\n                exe \"buffer \" . scr_bufnum\n            endif\n        endif\n    endif\nendfunction\n\n\" ScratchMarkBuffer\n\" Mark a buffer as scratch\nfunction! s:ScratchMarkBuffer()\n    setlocal buftype=nofile\n    setlocal bufhidden=hide\n    setlocal noswapfile\n    setlocal buflisted\nendfunction\n\nautocmd BufNewFile __Scratch__ call s:ScratchMarkBuffer()\n\n\" Command to edit the scratch buffer in the current window\ncommand! -nargs=0 Scratch call s:ScratchBufferOpen(0)\n\" Command to open the scratch buffer in a new split window\ncommand! -nargs=0 Sscratch call s:ScratchBufferOpen(1)\n\n"
  },
  {
    "path": ".vimrc",
    "content": "\" Settings {{{\n\" Switch syntax highlighting on, when the terminal has colors\nsyntax on\n\n\" Use vim, not vi api\nset nocompatible\n\n\" No backup files\nset nobackup\n\n\" No write backup\nset nowritebackup\n\n\" No swap file\nset noswapfile\n\n\" Command history\nset history=100\n\n\" Always show cursor\nset ruler\n\n\" Show incomplete commands\nset showcmd\n\n\" Incremental searching (search as you type)\nset incsearch\n\n\" Highlight search matches\nset hlsearch\n\n\" Ignore case in search\nset smartcase\n\n\" Make sure any searches /searchPhrase doesn't need the \\c escape character\nset ignorecase\n\n\" A buffer is marked as ‘hidden’ if it has unsaved changes, and it is not currently loaded in a window\n\" if you try and quit Vim while there are hidden buffers, you will raise an error:\n\" E162: No write since last change for buffer “a.txt”\nset hidden\n\n\" Turn word wrap off\nset nowrap\n\n\" Allow backspace to delete end of line, indent and start of line characters\nset backspace=indent,eol,start\n\n\" Convert tabs to spaces\nset expandtab\n\n\" Set tab size in spaces (this is for manual indenting)\nset tabstop=4\n\n\" The number of spaces inserted for a tab (used for auto indenting)\nset shiftwidth=4\n\n\" Turn on line numbers\nset number\n\n\" Highlight tailing whitespace\n\" See issue: https://github.com/Integralist/ProVim/issues/4\nset list listchars=tab:\\ \\ ,trail:·\n\n\" Get rid of the delay when pressing O (for example)\n\" http://stackoverflow.com/questions/2158516/vim-delay-before-o-opens-a-new-line\nset timeout timeoutlen=1000 ttimeoutlen=100\n\n\" Always show status bar\nset laststatus=2\n\n\" Set the status line to something useful\nset statusline=%f\\ %=L:%l/%L\\ %c\\ (%p%%)\n\n\" Hide the toolbar\nset guioptions-=T\n\n\" UTF encoding\nset encoding=utf-8\n\n\" Autoload files that have changed outside of vim\nset autoread\n\n\" Use system clipboard\n\" http://stackoverflow.com/questions/8134647/copy-and-paste-in-vim-via-keyboard-between-different-mac-terminals\nset clipboard+=unnamed\n\n\" Don't show intro\nset shortmess+=I\n\n\" Better splits (new windows appear below and to the right)\nset splitbelow\nset splitright\n\n\" Highlight the current line\nset cursorline\n\n\" Ensure Vim doesn't beep at you every time you make a mistype\nset visualbell\n\n\" Visual autocomplete for command menu (e.g. :e ~/path/to/file)\nset wildmenu\n\n\" redraw only when we need to (i.e. don't redraw when executing a macro)\nset lazyredraw\n\n\" highlight a matching [{()}] when cursor is placed on start/end character\nset showmatch\n\n\" Set built-in file system explorer to use layout similar to the NERDTree plugin\nlet g:netrw_liststyle=3\n\n\" Always highlight column 80 so it's easier to see where\n\" cutoff appears on longer screens\nautocmd BufWinEnter * highlight ColorColumn ctermbg=darkred\nset colorcolumn=80\n\" }}}\n\n\" Plugins {{{\nexecute pathogen#infect()\nfiletype plugin indent on \" required by Pathogen Plugin Manager\n\n\" Theme\nset background=light\ncolorscheme Tomorrow-Night\n\n\" CtrlP\nmap <leader>t <C-p>\nmap <leader>y :CtrlPBuffer<cr>\nlet g:ctrlp_show_hidden=1\nlet g:ctrlp_working_path_mode=0\nlet g:ctrlp_max_height=30\n\n\" CtrlP -> override <C-o> to provide options for how to open files\nlet g:ctrlp_arg_map = 1\n\n\" CtrlP -> files matched are ignored when expanding wildcards\nset wildignore+=*/.git/*,*/.hg/*,*/.svn/*.,*/.DS_Store\n\n\" CtrlP -> use Ag for searching instead of VimScript\n\" (might not work with ctrlp_show_hidden and ctrlp_custom_ignore)\nlet g:ctrlp_user_command = 'ag %s -l --nocolor -g \"\"'\n\n\" CtrlP -> directories to ignore when fuzzy finding\nlet g:ctrlp_custom_ignore = '\\v[\\/]((node_modules)|\\.(git|svn|grunt|sass-cache))$'\n\n\" Ack (uses Ag behind the scenes)\nlet g:ackprg = 'ag --nogroup --nocolor --column'\n\n\" Airline (status line)\nlet g:airline_powerline_fonts = 1\n\n\" Gist authorisation settings\nlet g:github_user = $GITHUB_USER\nlet g:github_token = $GITHUB_TOKEN\nlet g:gist_detect_filetype = 1\nlet g:gist_open_browser_after_post = 1\n\" Related plugins:\n\" https://github.com/mattn/webapi-vim\n\" https://github.com/vim-scripts/Gist.vim\n\" https://github.com/tpope/vim-fugitive\n\n\" HTML generation using 'emmet-vim'\n\" NORMAL mode Ctrl+y then , <C-y,>\n\n\" Git gutter\nlet g:gitgutter_enabled = 1\nlet g:gitgutter_eager = 0\nlet g:gitgutter_sign_column_always = 1\nhighlight clear SignColumn\n\n\" Searching the file system\nmap <leader>' :NERDTreeToggle<cr>\n\n\" Tabularize\nmap <Leader>e :Tabularize /=<cr>\nmap <Leader>c :Tabularize /:<cr>\nmap <Leader>es :Tabularize /=\\zs<cr>\nmap <Leader>cs :Tabularize /:\\zs<cr>\n\n\" Camel Case Motion (for dealing with programming code)\nmap <silent> w <Plug>CamelCaseMotion_w\nmap <silent> b <Plug>CamelCaseMotion_b\nmap <silent> e <Plug>CamelCaseMotion_e\nsunmap w\nsunmap b\nsunmap e\n\" }}}\n\n\" Mappings {{{\n\" Notes...\n\"\n\" :map     j gg (j will be mapped to gg)\n\" :map     Q j  (Q will also be mapped to gg, because j will be expanded -> recursive mapping)\n\" :noremap W j  (W will be mapped to j not to gg, because j will not be expanded -> non recursive)\n\"\n\" These mappings work in all modes. To have mappings work in only specific\n\" modes then denote the mapping with the mode character.\n\"\n\" e.g.\n\" to map something in just NORMAL mode use :nmap or :nnoremap\n\" to map something in just VISUAL mode use :vmap or :vnoremap\n\n\" Clear search buffer\n:nnoremap § :nohlsearch<cr>\n\n\" Command to use sudo when needed\ncmap w!! %!sudo tee > /dev/null %\n\n\" File System Explorer (in horizontal split)\nmap <leader>. :Sexplore<cr>\n\n\" Buffers\nmap <leader>yt :ls<cr>\n\n\" Buffers (runs the delete buffer command on all open buffers)\nmap <leader>yd :bufdo bd<cr>\n\n\" Make handling vertical/linear Vim windows easier\nmap <leader>w- <C-W>- \" decrement height\nmap <leader>w+ <C-W>+ \" increment height\nmap <leader>w] <C-W>_ \" maximize height\nmap <leader>w[ <C-W>= \" equalize all windows\n\n\" Handling horizontal Vim windows doesn't appear to be possible.\n\" Attempting to map <C-W> < and > didn't work\n\" Same with mapping <C-W>|\n\n\" Make splitting Vim windows easier\nmap <leader>; <C-W>s\nmap <leader>` <C-W>v\n\n\" Running Tests...\n\" See also <https://gist.github.com/8114940>\n\n\" Run currently open RSpec test file\nmap <Leader>rf :w<cr>:!rspec % --format nested<cr>\n\n\" Run current RSpec test\n\" RSpec is clever enough to work out the test to run if the cursor is on any line within the test\nmap <Leader>rl :w<cr>:exe \"!rspec %\" . \":\" . line(\".\")<cr>\n\n\" Run all RSpec tests\nmap <Leader>rt :w<cr>:!rspec --format nested<cr>\n\n\" Run currently open cucumber feature file\nmap <Leader>cf :w<cr>:!cucumber %<cr>\n\n\" Run current cucumber scenario\nmap <Leader>cl :w<cr>:exe \"!cucumber %\" . \":\" . line(\".\")<cr>\n\n\" Run all cucumber feature files\nmap <Leader>ct :w<cr>:!cucumber<cr>\n\n\" Tmux style window selection\nmap <Leader>ws :ChooseWin<cr>\n\" }}}\n\n\" Commands {{{\n\" jump to last cursor\nautocmd BufReadPost *\n  \\ if line(\"'\\\"\") > 0 && line(\"'\\\"\") <= line(\"$\") |\n  \\   exe \"normal g`\\\"\" |\n  \\ endif\n\nfun! StripTrailingWhitespace()\n  \" don't strip on these filetypes\n  if &ft =~ 'markdown'\n    return\n  endif\n  %s/\\s\\+$//e\nendfun\nautocmd BufWritePre * call StripTrailingWhitespace()\n\n\" file formats\nautocmd Filetype gitcommit setlocal spell textwidth=72\nautocmd Filetype markdown setlocal wrap linebreak nolist textwidth=0 wrapmargin=0 \" http://vim.wikia.com/wiki/Word_wrap_without_line_breaks\nautocmd FileType sh,cucumber,ruby,yaml,zsh,vim setlocal shiftwidth=2 tabstop=2 expandtab\n\n\" specify syntax highlighting for specific files\nautocmd Bufread,BufNewFile *.spv set filetype=php\nautocmd Bufread,BufNewFile *.md set filetype=markdown \" Vim interprets .md as 'modula2' otherwise, see :set filetype?\n\n\" Highlight words to avoid in tech writing\n\" http://css-tricks.com/words-avoid-educational-writing/\nhighlight TechWordsToAvoid ctermbg=red ctermfg=white\nmatch TechWordsToAvoid /\\cobviously\\|basically\\|simply\\|of\\scourse\\|clearly\\|just\\|everyone\\sknows\\|however\\|so,\\|easy/\nautocmd BufWinEnter * match TechWordsToAvoid /\\cobviously\\|basically\\|simply\\|of\\scourse\\|clearly\\|just\\|everyone\\sknows\\|however,\\|so,\\|easy/\nautocmd InsertEnter * match TechWordsToAvoid /\\cobviously\\|basically\\|simply\\|of\\scourse\\|clearly\\|just\\|everyone\\sknows\\|however,\\|so,\\|easy/\nautocmd InsertLeave * match TechWordsToAvoid /\\cobviously\\|basically\\|simply\\|of\\scourse\\|clearly\\|just\\|everyone\\sknows\\|however,\\|so,\\|easy/\nautocmd BufWinLeave * call clearmatches()\n\n\" Create a 'scratch buffer' which is a temporary buffer Vim wont ask to save\n\" http://vim.wikia.com/wiki/Display_output_of_shell_commands_in_new_window\ncommand! -complete=shellcmd -nargs=+ Shell call s:RunShellCommand(<q-args>)\nfunction! s:RunShellCommand(cmdline)\n  echo a:cmdline\n  let expanded_cmdline = a:cmdline\n  for part in split(a:cmdline, ' ')\n    if part[0] =~ '\\v[%#<]'\n      let expanded_part = fnameescape(expand(part))\n      let expanded_cmdline = substitute(expanded_cmdline, part, expanded_part, '')\n    endif\n  endfor\n  botright new\n  setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap\n  call setline(1, 'You entered:    ' . a:cmdline)\n  call setline(2, 'Expanded Form:  ' .expanded_cmdline)\n  call setline(3,substitute(getline(2),'.','=','g'))\n  execute '$read !'. expanded_cmdline\n  setlocal nomodifiable\n  1\nendfunction\n\n\" Close all folds when opening a new buffer\nautocmd BufRead * setlocal foldmethod=marker\nautocmd BufRead * normal zM\n\n\" Rainbow parenthesis always on!\nif exists(':RainbowParenthesesToggle')\n  autocmd VimEnter * RainbowParenthesesToggle\n  autocmd Syntax * RainbowParenthesesLoadRound\n  autocmd Syntax * RainbowParenthesesLoadSquare\n  autocmd Syntax * RainbowParenthesesLoadBraces\nendif\n\n\" Reset spelling colours when reading a new buffer\n\" This works around an issue where the colorscheme is changed by .local.vimrc\nfun! SetSpellingColors()\n  highlight SpellBad cterm=bold ctermfg=white ctermbg=red\n  highlight SpellCap cterm=bold ctermfg=red ctermbg=white\nendfun\nautocmd BufWinEnter * call SetSpellingColors()\nautocmd BufNewFile * call SetSpellingColors()\nautocmd BufRead * call SetSpellingColors()\nautocmd InsertEnter * call SetSpellingColors()\nautocmd InsertLeave * call SetSpellingColors()\n\n\" Change colourscheme when diffing\nfun! SetDiffColors()\n  highlight DiffAdd    cterm=bold ctermfg=white ctermbg=DarkGreen\n  highlight DiffDelete cterm=bold ctermfg=white ctermbg=DarkGrey\n  highlight DiffChange cterm=bold ctermfg=white ctermbg=DarkBlue\n  highlight DiffText   cterm=bold ctermfg=white ctermbg=DarkRed\nendfun\nautocmd FilterWritePre * call SetDiffColors()\n\" }}}\n"
  },
  {
    "path": ".zshrc",
    "content": "# Exports {{{\nexport GITHUB_USER=\"your-username\"\nexport PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin # Reorder PATH so local bin is first\nexport GREP_OPTIONS='--color=auto'\nexport GREP_COLOR='1;32'\nexport MANPAGER=\"less -X\" # Don’t clear the screen after quitting a manual page\nexport EDITOR=\"vim\"\nexport TERM=\"screen-256color\"\nexport CLICOLOR=1\nexport LSCOLORS=Gxfxcxdxbxegedabagacad\nexport LS_COLORS=Gxfxcxdxbxegedabagacad\n# }}}\n\n# Ruby {{{\nfunction get_ruby_version() {\n  ruby -v | awk '{print $1 \" \" $2}'\n}\n# }}}\n\n# Tmux {{{\n# Makes creating a new tmux session (with a specific name) easier\nfunction tmuxopen() {\n  tmux attach -t $1\n}\n\n# Makes creating a new tmux session (with a specific name) easier\nfunction tmuxnew() {\n  tmux new -s $1\n}\n\n# Makes deleting a tmux session easier\nfunction tmuxkill() {\n  tmux kill-session -t $1\n}\n# }}}\n\n# Alias' {{{\nalias vi=\"vim\"\nalias r=\"source ~/.zshrc\"\nalias tat='tmux new-session -As $(basename \"$PWD\" | tr . -)' # will attach if session exists, or create a new session\nalias tmuxsrc=\"tmux source-file ~/.tmux.conf\"\nalias tmuxkillall=\"tmux ls | cut -d : -f 1 | xargs -I {} tmux kill-session -t {}\" # tmux kill all sessions\nalias ct=\"ctags -R --exclude=.git --exclude=node_modules\"\nalias dotfiles=\"ls -a | grep '^\\.' | grep --invert-match '\\.DS_Store\\|\\.$'\"\n# }}}\n\n# Auto Completion {{{\nautoload -U compinit && compinit\nzmodload -i zsh/complist\n\n# man zshcontrib\nzstyle ':vcs_info:*' actionformats '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f '\nzstyle ':vcs_info:*' formats '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{5}]%f '\nzstyle ':vcs_info:*' enable git #svn cvs\n\n# Enable completion caching, use rehash to clear\nzstyle ':completion::complete:*' use-cache on\nzstyle ':completion::complete:*' cache-path ~/.zsh/cache/$HOST\n\n# Fallback to built in ls colors\nzstyle ':completion:*' list-colors ''\n\n# Make the list prompt friendly\nzstyle ':completion:*' list-prompt '%SAt %p: Hit TAB for more, or the character to insert%s'\n\n# Make the selection prompt friendly when there are a lot of choices\nzstyle ':completion:*' select-prompt '%SScrolling active: current selection at %p%s'\n\n# Add simple colors to kill\nzstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01'\n\n# list of completers to use\nzstyle ':completion:*::::' completer _expand _complete _ignored _approximate\nzstyle ':completion:*' menu select=1 _complete _ignored _approximate\n\n# match uppercase from lowercase\nzstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'\n\n# offer indexes before parameters in subscripts\nzstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters\n\n# formatting and messages\nzstyle ':completion:*' verbose yes\nzstyle ':completion:*:descriptions' format '%B%d%b'\nzstyle ':completion:*:messages' format '%d'\nzstyle ':completion:*:warnings' format 'No matches for: %d'\nzstyle ':completion:*:corrections' format '%B%d (errors: %e)%b'\nzstyle ':completion:*' group-name ''\n\n# ignore completion functions (until the _ignored completer)\nzstyle ':completion:*:functions' ignored-patterns '_*'\nzstyle ':completion:*:scp:*' tag-order files users 'hosts:-host hosts:-domain:domain hosts:-ipaddr\"IP\\ Address *'\nzstyle ':completion:*:scp:*' group-order files all-files users hosts-domain hosts-host hosts-ipaddr\nzstyle ':completion:*:ssh:*' tag-order users 'hosts:-host hosts:-domain:domain hosts:-ipaddr\"IP\\ Address *'\nzstyle ':completion:*:ssh:*' group-order hosts-domain hosts-host users hosts-ipaddr\nzstyle '*' single-ignored show\n# }}}\n\n# Key Bindings {{{\n# Make the delete key (or Fn + Delete on the Mac) work instead of outputting a ~\nbindkey '^?' backward-delete-char\nbindkey \"^[[3~\" delete-char\nbindkey \"^[3;5~\" delete-char\nbindkey \"\\e[3~\" delete-char\n\n# Make the `beginning/end` of line and `bck-i-search` commands work within tmux\nbindkey '^R' history-incremental-search-backward\nbindkey '^A' beginning-of-line\nbindkey '^E' end-of-line\n# }}}\n\n# Colours {{{\nautoload colors; colors\n\n# The variables are wrapped in \\%\\{\\%\\}. This should be the case for every\n# variable that does not contain space.\nfor COLOR in RED GREEN YELLOW BLUE MAGENTA CYAN BLACK WHITE; do\n  eval PR_$COLOR='%{$fg_no_bold[${(L)COLOR}]%}'\n  eval PR_BOLD_$COLOR='%{$fg_bold[${(L)COLOR}]%}'\ndone\n\neval RESET='$reset_color'\nexport PR_RED PR_GREEN PR_YELLOW PR_BLUE PR_WHITE PR_BLACK\nexport PR_BOLD_RED PR_BOLD_GREEN PR_BOLD_YELLOW PR_BOLD_BLUE\nexport PR_BOLD_WHITE PR_BOLD_BLACK\n\n# Clear LSCOLORS\nunset LSCOLORS\n# }}}\n\n# Set Options {{{\n# ===== Basics\nsetopt no_beep # don't beep on error\nsetopt interactive_comments # Allow comments even in interactive shells (especially for Muness)\n\n# ===== Changing Directories\nsetopt auto_cd # If you type foo, and it isn't a command, and it is a directory in your cdpath, go there\nsetopt cdablevarS # if argument to cd is the name of a parameter whose value is a valid directory, it will become the current directory\nsetopt pushd_ignore_dups # don't push multiple copies of the same directory onto the directory stack\n\n# ===== Expansion and Globbing\nsetopt extended_glob # treat #, ~, and ^ as part of patterns for filename generation\n\n# ===== History\nsetopt append_history # Allow multiple terminal sessions to all append to one zsh command history\nsetopt extended_history # save timestamp of command and duration\nsetopt inc_append_history # Add comamnds as they are typed, don't wait until shell exit\nsetopt hist_expire_dups_first # when trimming history, lose oldest duplicates first\nsetopt hist_ignore_dups # Do not write events to history that are duplicates of previous events\nsetopt hist_ignore_space # remove command line from history list when first character on the line is a space\nsetopt hist_find_no_dups # When searching history don't display results already cycled through twice\nsetopt hist_reduce_blanks # Remove extra blanks from each command line being added to history\nsetopt hist_verify # don't execute, just expand history\nsetopt share_history # imports new commands and appends typed commands to history\n\n# ===== Completion\nsetopt always_to_end # When completing from the middle of a word, move the cursor to the end of the word\nsetopt auto_menu # show completion menu on successive tab press. needs unsetop menu_complete to work\nsetopt auto_name_dirs # any parameter that is set to the absolute name of a directory immediately becomes a name for that directory\nsetopt complete_in_word # Allow completion from within a word/phrase\n\nunsetopt menu_complete # do not autoselect the first completion entry\n\n# ===== Correction\nsetopt correct # spelling correction for commands\nsetopt correctall # spelling correction for arguments\n\n# ===== Prompt\nsetopt prompt_subst # Enable parameter expansion, command substitution, and arithmetic expansion in the prompt\nsetopt transient_rprompt # only show the rprompt on the current prompt\n\n# ===== Scripts and Functions\nsetopt multios # perform implicit tees or cats when multiple redirections are attempted\n# }}}\n\n# Prompt {{{\nfunction virtualenv_info {\n  [ $VIRTUAL_ENV ] && echo '('`basename $VIRTUAL_ENV`') '\n}\n\nfunction prompt_char {\n  git branch >/dev/null 2>/dev/null && echo '±' && return\n  hg root >/dev/null 2>/dev/null && echo '☿' && return\n  echo '○'\n}\n\nfunction box_name {\n  [ -f ~/.box-name ] && cat ~/.box-name || hostname -s\n}\n\n# http://blog.joshdick.net/2012/12/30/my_git_prompt_for_zsh.html\n# copied from https://gist.github.com/4415470\n# Adapted from code found at <https://gist.github.com/1712320>.\n\n#setopt promptsubst\nautoload -U colors && colors # Enable colors in prompt\n\n# Modify the colors and symbols in these variables as desired.\nGIT_PROMPT_SYMBOL=\"%{$fg[blue]%}±\"\nGIT_PROMPT_PREFIX=\"%{$fg[green]%} [%{$reset_color%}\"\nGIT_PROMPT_SUFFIX=\"%{$fg[green]%}]%{$reset_color%}\"\nGIT_PROMPT_AHEAD=\"%{$fg[red]%}ANUM%{$reset_color%}\"\nGIT_PROMPT_BEHIND=\"%{$fg[cyan]%}BNUM%{$reset_color%}\"\nGIT_PROMPT_MERGING=\"%{$fg_bold[magenta]%}⚡︎%{$reset_color%}\"\nGIT_PROMPT_UNTRACKED=\"%{$fg_bold[red]%}u%{$reset_color%}\"\nGIT_PROMPT_MODIFIED=\"%{$fg_bold[yellow]%}m%{$reset_color%}\"\nGIT_PROMPT_STAGED=\"%{$fg_bold[green]%}s%{$reset_color%}\"\n\n# Show Git branch/tag, or name-rev if on detached head\nfunction parse_git_branch() {\n  (git symbolic-ref -q HEAD || git name-rev --name-only --no-undefined --always HEAD) 2> /dev/null\n}\n\n# Show different symbols as appropriate for various Git repository states\nfunction parse_git_state() {\n  # Compose this value via multiple conditional appends.\n  local GIT_STATE=\"\"\n\n  local NUM_AHEAD=\"$(git log --oneline @{u}.. 2> /dev/null | wc -l | tr -d ' ')\"\n  if [ \"$NUM_AHEAD\" -gt 0 ]; then\n    GIT_STATE=$GIT_STATE${GIT_PROMPT_AHEAD//NUM/$NUM_AHEAD}\n  fi\n\n  local NUM_BEHIND=\"$(git log --oneline ..@{u} 2> /dev/null | wc -l | tr -d ' ')\"\n  if [ \"$NUM_BEHIND\" -gt 0 ]; then\n    GIT_STATE=$GIT_STATE${GIT_PROMPT_BEHIND//NUM/$NUM_BEHIND}\n  fi\n\n  local GIT_DIR=\"$(git rev-parse --git-dir 2> /dev/null)\"\n  if [ -n $GIT_DIR ] && test -r $GIT_DIR/MERGE_HEAD; then\n    GIT_STATE=$GIT_STATE$GIT_PROMPT_MERGING\n  fi\n\n  if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then\n    GIT_STATE=$GIT_STATE$GIT_PROMPT_UNTRACKED\n  fi\n\n  if ! git diff --quiet 2> /dev/null; then\n    GIT_STATE=$GIT_STATE$GIT_PROMPT_MODIFIED\n  fi\n\n  if ! git diff --cached --quiet 2> /dev/null; then\n    GIT_STATE=$GIT_STATE$GIT_PROMPT_STAGED\n  fi\n\n  if [[ -n $GIT_STATE ]]; then\n    echo \"$GIT_PROMPT_PREFIX$GIT_STATE$GIT_PROMPT_SUFFIX\"\n  fi\n}\n\n# If inside a Git repository, print its branch and state\nfunction git_prompt_string() {\n  local git_where=\"$(parse_git_branch)\"\n  [ -n \"$git_where\" ] && echo \"on %{$fg[blue]%}${git_where#(refs/heads/|tags/)}$(parse_git_state)\"\n}\n\nfunction current_pwd {\n  echo $(pwd | sed -e \"s,^$HOME,~,\")\n}\n\n# Original prompt with User name and Computer name included...\n# PROMPT='\n# ${PR_GREEN}%n%{$reset_color%} %{$FG[239]%}at%{$reset_color%} ${PR_BOLD_BLUE}$(box_name)%{$reset_color%} %{$FG[239]%}in%{$reset_color%} ${PR_BOLD_YELLOW}$(current_pwd)%{$reset_color%} $(git_prompt_string)\n# $(prompt_char) '\n\nPROMPT='\n${PR_GREEN}M.%{$reset_color%} ${PR_BOLD_YELLOW}$(current_pwd)%{$reset_color%} $(git_prompt_string)\n$(prompt_char) '\n\nexport SPROMPT=\"Correct $fg[red]%R$reset_color to $fg[green]%r$reset_color [(y)es (n)o (a)bort (e)dit]? \"\n\nRPROMPT='${PR_GREEN}$(virtualenv_info)%{$reset_color%} ${PR_RED}$(get_ruby_version)%{$reset_color%}'\n# }}}\n\n# History {{{\nHISTSIZE=10000\nSAVEHIST=9000\nHISTFILE=~/.zsh_history\n# }}}\n\n# Zsh Hooks {{{\nfunction precmd {\n  # vcs_info\n  # Put the string \"hostname::/full/directory/path\" in the title bar:\n  echo -ne \"\\e]2;$PWD\\a\"\n\n  # Put the parentdir/currentdir in the tab\n  echo -ne \"\\e]1;$PWD:h:t/$PWD:t\\a\"\n}\n\nfunction set_running_app {\n  printf \"\\e]1; $PWD:t:$(history $HISTCMD | cut -b7- ) \\a\"\n}\n\nfunction preexec {\n  set_running_app\n}\n\nfunction postexec {\n  set_running_app\n}\n# }}}\n"
  },
  {
    "path": "README.md",
    "content": "ProVim\n======\n\nRepository to hold dotfiles and scripts specific to ProVim\n"
  },
  {
    "path": "themes/Smyck.terminal",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>ANSIBlackColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tRjAgMCAwANIQERITWiRjbGFzc25hbWVYJGNsYXNzZXNXTlNDb2xvcqISFFhOU09iamVj\n\tdF8QD05TS2V5ZWRBcmNoaXZlctEXGFRyb290gAEIERojLTI3O0FIT1xiZGZtcn2GjpGa\n\trK+0AAAAAAAAAQEAAAAAAAAAGQAAAAAAAAAAAAAAAAAAALY=\n\t</data>\n\t<key>ANSIBlueColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAmMC4zODQzMTM3MjU1IDAuNjM5MjE1Njg2MyAwLjc2ODYyNzQ1MQDSEBESE1okY2xh\n\tc3NuYW1lWCRjbGFzc2VzV05TQ29sb3KiEhRYTlNPYmplY3RfEA9OU0tleWVkQXJjaGl2\n\tZXLRFxhUcm9vdIABCBEaIy0yNztBSE9cYmRmj5SfqLCzvM7R1gAAAAAAAAEBAAAAAAAA\n\tABkAAAAAAAAAAAAAAAAAAADY\n\t</data>\n\t<key>ANSIBrightBlackColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAnMC4yOTQxMTc2NDcxIDAuMjk0MTE3NjQ3MSAwLjI5NDExNzY0NzEA0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhPXGJkZpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>ANSIBrightBlueColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAnMC41NTI5NDExNzY1IDAuODExNzY0NzA1OSAwLjk0MTE3NjQ3MDYA0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhPXGJkZpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>ANSIBrightCyanColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAnMC40MTU2ODYyNzQ1IDAuODUwOTgwMzkyMiAwLjgxMTc2NDcwNTkA0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhPXGJkZpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>ANSIBrightGreenColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAmMC43Njg2Mjc0NTEgMC45NDUwOTgwMzkyIDAuMjE1Njg2Mjc0NQDSEBESE1okY2xh\n\tc3NuYW1lWCRjbGFzc2VzV05TQ29sb3KiEhRYTlNPYmplY3RfEA9OU0tleWVkQXJjaGl2\n\tZXLRFxhUcm9vdIABCBEaIy0yNztBSE9cYmRmj5SfqLCzvM7R1gAAAAAAAAEBAAAAAAAA\n\tABkAAAAAAAAAAAAAAAAAAADY\n\t</data>\n\t<key>ANSIBrightMagentaColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAbMC45Njg2Mjc0NTEgMC42MDM5MjE1Njg2IDEA0hAREhNaJGNsYXNzbmFtZVgkY2xh\n\tc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hpdmVy0RcYVHJvb3SA\n\tAQgRGiMtMjc7QUhPXGJkZoSJlJ2lqLHDxssAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAA\n\tAAAAAAAAzQ==\n\t</data>\n\t<key>ANSIBrightRedColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAnMC44MzkyMTU2ODYzIDAuNTEzNzI1NDkwMiAwLjQ4NjI3NDUwOTgA0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhPXGJkZpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>ANSIBrightWhiteColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAkMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEA0hAREhNaJGNsYXNz\n\tbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hpdmVy\n\t0RcYVHJvb3SAAQgRGiMtMjc7QUhPXGJkZo2SnaausbrMz9QAAAAAAAABAQAAAAAAAAAZ\n\tAAAAAAAAAAAAAAAAAAAA1g==\n\t</data>\n\t<key>ANSIBrightYellowColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAnMC45OTYwNzg0MzE0IDAuODgyMzUyOTQxMiAwLjMwMTk2MDc4NDMA0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhPXGJkZpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>ANSICyanColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAnMC4xMjU0OTAxOTYxIDAuNDUwOTgwMzkyMiAwLjUxMzcyNTQ5MDIA0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhPXGJkZpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>ANSIGreenColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAbMC40OTE1NjgyMzc1IDAuNjYzNzY0NTk2IDAA0hAREhNaJGNsYXNzbmFtZVgkY2xh\n\tc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hpdmVy0RcYVHJvb3SA\n\tAQgRGiMtMjc7QUhPXGJkZoSJlJ2lqLHDxssAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAA\n\tAAAAAAAAzQ==\n\t</data>\n\t<key>ANSIMagentaColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAeMC43Mjk0MTE3NjQ3IDAuNTQxMTc2NDcwNiAwLjgA0hAREhNaJGNsYXNzbmFtZVgk\n\tY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hpdmVy0RcYVHJv\n\tb3SAAQgRGiMtMjc7QUhPXGJkZoeMl6Coq7TGyc4AAAAAAAABAQAAAAAAAAAZAAAAAAAA\n\tAAAAAAAAAAAA0A==\n\t</data>\n\t<key>ANSIRedColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAnMC43MjAxNTc2ODI5IDAuMjU2MTc2OTc4MyAwLjE5MzM1MDEzNjMA0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhPXGJkZpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>ANSIWhiteColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAnMC42Mjk3MzMzMjQxIDAuNjI5ODUxODE4MSAwLjYyOTcwMzEwNDUA0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhPXGJkZpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>ANSIYellowColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAbMC43Njg2Mjc0NTEgMC42NDcwNTg4MjM1IDAA0hAREhNaJGNsYXNzbmFtZVgkY2xh\n\tc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hpdmVy0RcYVHJvb3SA\n\tAQgRGiMtMjc7QUhPXGJkZoSJlJ2lqLHDxssAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAA\n\tAAAAAAAAzQ==\n\t</data>\n\t<key>BackgroundColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAnMC4xMTM3MjU0OTAyIDAuMTEzNzI1NDkwMiAwLjExMzcyNTQ5MDIA0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhPXGJkZpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>Bell</key>\n\t<true/>\n\t<key>CursorBlink</key>\n\t<false/>\n\t<key>CursorColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAnMC4xMjU0OTAxOTYxIDAuNDUwOTgwMzkyMiAwLjUwOTgwMzkyMTYA0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhPXGJkZpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>CursorType</key>\n\t<integer>0</integer>\n\t<key>DisableANSIColor</key>\n\t<false/>\n\t<key>Font</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGGBlYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKQHCBESVSRudWxs1AkKCwwNDg8QViRjbGFzc1ZOU05hbWVWTlNTaXplWE5TZkZs\n\tYWdzgAOAAiNALAAAAAAAABAQXU1lbmxvLVJlZ3VsYXLSExQVFlokY2xhc3NuYW1lWCRj\n\tbGFzc2VzVk5TRm9udKIVF1hOU09iamVjdF8QD05TS2V5ZWRBcmNoaXZlctEaG1Ryb290\n\tgAEIERojLTI3PEJLUllgaWttdniGi5afpqmyxMfMAAAAAAAAAQEAAAAAAAAAHAAAAAAA\n\tAAAAAAAAAAAAAM4=\n\t</data>\n\t<key>FontAntialias</key>\n\t<true/>\n\t<key>FontHeightSpacing</key>\n\t<real>1.0623109879032258</real>\n\t<key>Linewrap</key>\n\t<true/>\n\t<key>ProfileCurrentVersion</key>\n\t<real>2.02</real>\n\t<key>SelectionColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAnMC4xMjU0OTAxOTYxIDAuNDUwOTgwMzkyMiAwLjUxMzcyNTQ5MDIA0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhPXGJkZpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>ShouldLimitScrollback</key>\n\t<integer>0</integer>\n\t<key>ShowActiveProcessInTitle</key>\n\t<false/>\n\t<key>ShowCommandKeyInTitle</key>\n\t<false/>\n\t<key>ShowDimensionsInTitle</key>\n\t<false/>\n\t<key>ShowShellCommandInTitle</key>\n\t<false/>\n\t<key>ShowTTYNameInTitle</key>\n\t<false/>\n\t<key>ShowWindowSettingsNameInTitle</key>\n\t<false/>\n\t<key>TextBoldColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAkMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEA0hAREhNaJGNsYXNz\n\tbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hpdmVy\n\t0RcYVHJvb3SAAQgRGiMtMjc7QUhPXGJkZo2SnaausbrMz9QAAAAAAAABAQAAAAAAAAAZ\n\tAAAAAAAAAAAAAAAAAAAA1g==\n\t</data>\n\t<key>TextColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OViRjbGFzc1xOU0NvbG9yU3BhY2VVTlNSR0KAAhAB\n\tTxAkMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEA0hAREhNaJGNsYXNz\n\tbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hpdmVy\n\t0RcYVHJvb3SAAQgRGiMtMjc7QUhPXGJkZo2SnaausbrMz9QAAAAAAAABAQAAAAAAAAAZ\n\tAAAAAAAAAAAAAAAAAAAA1g==\n\t</data>\n\t<key>UseBoldFonts</key>\n\t<true/>\n\t<key>UseBrightBold</key>\n\t<true/>\n\t<key>VisualBell</key>\n\t<false/>\n\t<key>blackColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg5+cnj6Dn5yePoOfnJ4+AYY=\n\t</data>\n\t<key>blueColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg5eWFj+DzMtLP4P//n4/AYY=\n\t</data>\n\t<key>brightBlackColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg/n4+D6D+fj4PoP5+Pg+AYY=\n\t</data>\n\t<key>brightBlueColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg7YuNj+D3d5cP4MAjn8/AYY=\n\t</data>\n\t<key>brightCyanColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg+A7YD+D4FVgP4P/PX8/AYY=\n\t</data>\n\t<key>brightGreenColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg881Tz8Bg6w6LD8Bhg==\n\t</data>\n\t<key>brightMagentaColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmAYOdAR0/g/8bfz8Bhg==\n\t</data>\n\t<key>brightRedColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmAYO3tjY/g7GwMD8Bhg==\n\t</data>\n\t<key>brightWhiteColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmAQEBAYY=\n\t</data>\n\t<key>brightYellowColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmAQGDzbVMPwGG\n\t</data>\n\t<key>columnCount</key>\n\t<integer>80</integer>\n\t<key>cyanColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg8fGRj+DxsVFP4P//n4/AYY=\n\t</data>\n\t<key>fontAllowsDisableAntialias</key>\n\t<integer>0</integer>\n\t<key>greenColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg6moKD8Bg8HAwD4Bhg==\n\t</data>\n\t<key>keyMapBoundKeys</key>\n\t<dict>\n\t\t<key>$F708</key>\n\t\t<string>\u001b[25~</string>\n\t\t<key>$F709</key>\n\t\t<string>\u001b[26~</string>\n\t\t<key>$F70A</key>\n\t\t<string>\u001b[28~</string>\n\t\t<key>$F70B</key>\n\t\t<string>\u001b[29~</string>\n\t\t<key>$F70C</key>\n\t\t<string>\u001b[31~</string>\n\t\t<key>$F70D</key>\n\t\t<string>\u001b[22~</string>\n\t\t<key>$F70E</key>\n\t\t<string>\u001b[33~</string>\n\t\t<key>$F70F</key>\n\t\t<string>\u001b[34~</string>\n\t\t<key>$F729</key>\n\t\t<string>\u001b[H</string>\n\t\t<key>$F72B</key>\n\t\t<string>\u001b[F</string>\n\t\t<key>$F72C</key>\n\t\t<string>\u001b[5~</string>\n\t\t<key>$F72D</key>\n\t\t<string>\u001b[6~</string>\n\t\t<key>F704</key>\n\t\t<string>\u001bOP</string>\n\t\t<key>F705</key>\n\t\t<string>\u001bOQ</string>\n\t\t<key>F706</key>\n\t\t<string>\u001bOR</string>\n\t\t<key>F707</key>\n\t\t<string>\u001bOS</string>\n\t\t<key>F708</key>\n\t\t<string>\u001b[15~</string>\n\t\t<key>F709</key>\n\t\t<string>\u001b[17~</string>\n\t\t<key>F70A</key>\n\t\t<string>\u001b[18~</string>\n\t\t<key>F70B</key>\n\t\t<string>\u001b[19~</string>\n\t\t<key>F70C</key>\n\t\t<string>\u001b[20~</string>\n\t\t<key>F70D</key>\n\t\t<string>\u001b[21~</string>\n\t\t<key>F70E</key>\n\t\t<string>\u001b[23~</string>\n\t\t<key>F70F</key>\n\t\t<string>\u001b[24~</string>\n\t\t<key>F710</key>\n\t\t<string>\u001b[25~</string>\n\t\t<key>F711</key>\n\t\t<string>\u001b[26~</string>\n\t\t<key>F712</key>\n\t\t<string>\u001b[28~</string>\n\t\t<key>F713</key>\n\t\t<string>\u001b[29~</string>\n\t\t<key>F714</key>\n\t\t<string>\u001b[31~</string>\n\t\t<key>F715</key>\n\t\t<string>\u001b[32~</string>\n\t\t<key>F716</key>\n\t\t<string>\u001b[33~</string>\n\t\t<key>F717</key>\n\t\t<string>\u001b[34~</string>\n\t\t<key>F728</key>\n\t\t<string>\u001b[3~</string>\n\t\t<key>F729</key>\n\t\t<string>\u001b[H</string>\n\t\t<key>F72B</key>\n\t\t<string>\u001b[F</string>\n\t\t<key>F72C</key>\n\t\t<string>scrollPageUp:</string>\n\t\t<key>F72D</key>\n\t\t<string>scrollPageDown:</string>\n\t\t<key>^F702</key>\n\t\t<string>\u001b[5D</string>\n\t\t<key>^F703</key>\n\t\t<string>\u001b[5C</string>\n\t\t<key>~F702</key>\n\t\t<string>\u001bb</string>\n\t\t<key>~F703</key>\n\t\t<string>\u001bf</string>\n\t\t<key>~F704</key>\n\t\t<string>\u001b[17~</string>\n\t\t<key>~F705</key>\n\t\t<string>\u001b[18~</string>\n\t\t<key>~F706</key>\n\t\t<string>\u001b[19~</string>\n\t\t<key>~F707</key>\n\t\t<string>\u001b[20~</string>\n\t\t<key>~F708</key>\n\t\t<string>\u001b[21~</string>\n\t\t<key>~F709</key>\n\t\t<string>\u001b[23~</string>\n\t\t<key>~F70A</key>\n\t\t<string>\u001b[24~</string>\n\t\t<key>~F70B</key>\n\t\t<string>\u001b[25~</string>\n\t\t<key>~F70C</key>\n\t\t<string>\u001b[26~</string>\n\t\t<key>~F70D</key>\n\t\t<string>\u001b[28~</string>\n\t\t<key>~F70E</key>\n\t\t<string>\u001b[29~</string>\n\t\t<key>~F70F</key>\n\t\t<string>\u001b[31~</string>\n\t\t<key>~F710</key>\n\t\t<string>\u001b[32~</string>\n\t\t<key>~F711</key>\n\t\t<string>\u001b[33~</string>\n\t\t<key>~F712</key>\n\t\t<string>\u001b[34~</string>\n\t</dict>\n\t<key>magentaColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmAYPn5uY+g/79fT8Bhg==\n\t</data>\n\t<key>name</key>\n\t<string>Coding</string>\n\t<key>redColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmAYPZ2Ng+g8HAwD4Bhg==\n\t</data>\n\t<key>rowCount</key>\n\t<integer>23</integer>\n\t<key>shellExitAction</key>\n\t<integer>1</integer>\n\t<key>type</key>\n\t<string>Window Settings</string>\n\t<key>whiteColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg+/7bj+D7/tuP4Pv+24/AYY=\n\t</data>\n\t<key>yellowColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmAQGDt7Y2PwGG\n\t</data>\n</dict>\n</plist>\n"
  },
  {
    "path": "themes/Solarized Dark.terminal",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>ANSIBlackColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjAyNzQ1MTAw\n\tNjcgMC4yMTE3NjQ3MjMxIDAuMjU4ODIzNDg0MiAxTxAoMC4wMzkzODA3NDc4MiAwLjE2\n\tMDExNjQ2MzkgMC4xOTgzMzI3MTIxABABgAKABtIUDRUWVU5TSUNDgAOABdIYDRkaV05T\n\tLmRhdGFPEQxIAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1T\n\tRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAz\n\tZGVzYwAAAYQAAABsd3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZ\n\tWgAAAiwAAAAUYlhZWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAA\n\tA0wAAACGdmlldwAAA9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAABAwAAAAkdGVjaAAABDAA\n\tAAAMclRSQwAABDwAAAgMZ1RSQwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAAAABDb3B5\n\tcmlnaHQgKGMpIDE5OTggSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAA\n\tEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAA\n\tAAAAAADzUQABAAAAARbMWFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1\n\tAAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAA\n\tAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3\n\tdy5pZWMuY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAAAAZGVzYwAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3Bh\n\tY2UgLSBzUkdCAAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xv\n\tdXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJl\n\tZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAA\n\tACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD7cwABBMLAANc\n\tngAAAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAA\n\tAAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMA\n\tKAAtADIANwA7AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCk\n\tAKkArgCyALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsB\n\tMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHp\n\tAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC\n\t4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQG\n\tBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcF\n\tdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZ\n\tBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJ\n\tEAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5\n\tC1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakN\n\tww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+\n\tEJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MT\n\tpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6\n\tFx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4a\n\txRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+\n\tHukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwoj\n\tOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfc\n\tKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNct\n\tDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJj\n\tMpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4\n\tUDiMOMg5BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5g\n\tPqA+4D8hP2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5F\n\tEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkvi\n\tTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNT\n\tX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1\n\tW0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBj\n\tQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2un\n\ta/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0\n\tzHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4B\n\tfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+I\n\tBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIR\n\tknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc\n\t951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfg\n\tqFKoxKk3qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCsziz\n\trrQltJy1E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796\n\tv/XAcMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bM\n\tNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo\n\t2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3m\n\tlucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q0\n\t9ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf//gATSHB0eH1ok\n\tY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHiAhVk5TRGF0YVhOU09iamVj\n\tdNIcHSMkXE5TQ29sb3JTcGFjZaIlIVxOU0NvbG9yU3BhY2XSHB0nKFdOU0NvbG9yoich\n\tXxAPTlNLZXllZEFyY2hpdmVy0SssVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8ARQBQAF0A\n\tYwBwAIUAjAC3AOIA5ADmAOgA7QDzAPUA9wD8AQQNUA1SDVcNYg1rDXkNfQ2EDY0Nkg2f\n\tDaINrw20DbwNvw3RDdQN2QAAAAAAAAIBAAAAAAAAAC0AAAAAAAAAAAAAAAAAAA3b\n\t</data>\n\t<key>ANSIBlueColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjE0OTAxOTYw\n\tNzggMC41NDUwOTgwMzkyIDAuODIzNTI5NDExOCAxTxAnMC4xMjc1NDg4NDM2IDAuNDYy\n\tNjU5NDc4MiAwLjc4MjMxNDEyMTcAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu\n\tZGF0YU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNG\n\tVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNk\n\tZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFla\n\tAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAAD\n\tTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAA\n\tAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHly\n\taWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAAS\n\tc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAA\n\tAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUA\n\tAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAA\n\tAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3\n\tLmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFj\n\tZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91\n\tciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVm\n\tZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAA\n\tLFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1ye\n\tAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAA\n\tAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAo\n\tAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQA\n\tqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy\n\tATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB\n\t8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLg\n\tAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYE\n\tEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3\n\tBYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkH\n\tKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQ\n\tCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkL\n\tUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3D\n\tDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4Q\n\tmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOk\n\tE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoX\n\tHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrF\n\tGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e\n\t6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4\n\tI2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9wo\n\tDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0M\n\tLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMy\n\tmzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQ\n\tOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+\n\toD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUS\n\tRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JM\n\tKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1Nf\n\tU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVb\n\tRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GND\n\tY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr\n\t/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTM\n\tdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+\n\tYn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gE\n\tiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGS\n\tepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3\n\tnWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+Co\n\tUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOu\n\ttCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/\n\t9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1\n\tzLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZ\n\tbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW\n\t5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0\n\twvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//+ABNIcHR4fWiRj\n\tbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN0\n\t0hwdIyRcTlNDb2xvclNwYWNloiUhXE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFf\n\tEA9OU0tleWVkQXJjaGl2ZXLRKyxUcm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBj\n\tAHAAhQCMALcA4QDjAOUA5wDsAPIA9AD2APsBAw1PDVENVg1hDWoNeA18DYMNjA2RDZ4N\n\toQ2uDbMNuw2+DdAN0w3YAAAAAAAAAgEAAAAAAAAALQAAAAAAAAAAAAAAAAAADdo=\n\t</data>\n\t<key>ANSIBrightBlackColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECoxLjU0NjM4ODQ0\n\tZS0wOCAwLjE2ODYyNzQxMTEgMC4yMTE3NjQ2OTMzIDFPECgwLjAxNTkyNDQyMDIxIDAu\n\tMTI2NTIwOTAxOSAwLjE1OTY5NTk4MjkAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpX\n\tTlMuZGF0YU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3Nw\n\tTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAA\n\tADNkZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRn\n\tWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVk\n\tAAADTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAE\n\tMAAAAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENv\n\tcHlyaWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAA\n\tAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFla\n\tIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAA\n\tOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MA\n\tAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8v\n\td3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBz\n\tcGFjZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNv\n\tbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAs\n\tUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\n\tAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsA\n\tA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAA\n\tAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4A\n\tIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCf\n\tAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUB\n\tKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHh\n\tAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC\n\t1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5\n\tBAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgF\n\tZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcH\n\tBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI\n\t+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsi\n\tCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4N\n\tqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBh\n\tEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MT\n\tgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbW\n\tFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGnca\n\tnhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6U\n\tHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0j\n\tCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneier\n\tJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs\n\t1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIq\n\tMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4\n\tFDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4g\n\tPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpE\n\tzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0ua\n\tS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdT\n\tE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqm\n\tWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi\n\t8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tP\n\ta6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0\n\tcHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2h\n\tfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuH\n\tn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5Go\n\tkhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByc\n\tiZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adu\n\tp+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKz\n\tOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/\n\tv3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbL\n\ttsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk\n\t2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTm\n\tDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn\n\t9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//+ABNIcHR4f\n\tWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2Jq\n\tZWN00hwdIyRcTlNDb2xvclNwYWNloiUhXE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3Ki\n\tJyFfEA9OU0tleWVkQXJjaGl2ZXLRKyxUcm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAA\n\tXQBjAHAAhQCMALkA5ADmAOgA6gDvAPUA9wD5AP4BBg1SDVQNWQ1kDW0New1/DYYNjw2U\n\tDaENpA2xDbYNvg3BDdMN1g3bAAAAAAAAAgEAAAAAAAAALQAAAAAAAAAAAAAAAAAADd0=\n\t</data>\n\t<key>ANSIBrightBlueColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjUxMzcyNTQ5\n\tMDIgMC41ODAzOTIxNTY5IDAuNTg4MjM1Mjk0MSAxTxAnMC40NDA1ODAyNDg4IDAuNTA5\n\tNjI5MzA5MiAwLjUxNjg1Nzk4MTcAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu\n\tZGF0YU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNG\n\tVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNk\n\tZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFla\n\tAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAAD\n\tTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAA\n\tAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHly\n\taWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAAS\n\tc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAA\n\tAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUA\n\tAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAA\n\tAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3\n\tLmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFj\n\tZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91\n\tciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVm\n\tZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAA\n\tLFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1ye\n\tAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAA\n\tAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAo\n\tAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQA\n\tqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy\n\tATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB\n\t8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLg\n\tAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYE\n\tEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3\n\tBYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkH\n\tKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQ\n\tCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkL\n\tUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3D\n\tDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4Q\n\tmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOk\n\tE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoX\n\tHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrF\n\tGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e\n\t6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4\n\tI2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9wo\n\tDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0M\n\tLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMy\n\tmzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQ\n\tOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+\n\toD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUS\n\tRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JM\n\tKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1Nf\n\tU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVb\n\tRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GND\n\tY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr\n\t/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTM\n\tdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+\n\tYn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gE\n\tiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGS\n\tepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3\n\tnWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+Co\n\tUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOu\n\ttCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/\n\t9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1\n\tzLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZ\n\tbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW\n\t5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0\n\twvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//+ABNIcHR4fWiRj\n\tbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN0\n\t0hwdIyRcTlNDb2xvclNwYWNloiUhXE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFf\n\tEA9OU0tleWVkQXJjaGl2ZXLRKyxUcm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBj\n\tAHAAhQCMALcA4QDjAOUA5wDsAPIA9AD2APsBAw1PDVENVg1hDWoNeA18DYMNjA2RDZ4N\n\toQ2uDbMNuw2+DdAN0w3YAAAAAAAAAgEAAAAAAAAALQAAAAAAAAAAAAAAAAAADdo=\n\t</data>\n\t<key>ANSIBrightCyanColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECYwLjU3NjQ3MDU4\n\tODIgMC42MzEzNzI1NDkgMC42MzEzNzI1NDkgMU8QJjAuNTA1OTkxOTM1NyAwLjU2NDg1\n\tODM3NyAwLjU2MzYzNjU0MTQAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMuZGF0\n\tYU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAA\n\tAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNkZXNj\n\tAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFlaAAAC\n\tLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAADTAAA\n\tAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxy\n\tVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdo\n\tdCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAASc1JH\n\tQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAA\n\tAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQ\n\tWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAAAAAA\n\tFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3Lmll\n\tYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABk\n\tZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAt\n\tIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBz\n\tcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJl\n\tbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAALFJl\n\tZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1yeAAAA\n\tAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAA\n\tAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0A\n\tMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQAqQCu\n\tALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEyATgB\n\tPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6\n\tAgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC\n\t9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQg\n\tBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYF\n\tlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9\n\tB08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJ\n\tOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtp\n\tC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N\n\t+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4QmxC5\n\tENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT\n\t5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdB\n\tF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwb\n\tFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8T\n\tHz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2Yj\n\tlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/\n\tKHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0MLUEt\n\tdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMymzLU\n\tMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQOIw4\n\tyDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+oD7g\n\tPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVF\n\tmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxy\n\tTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT\n\t9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuV\n\tW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj\n\t62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr/2xX\n\tbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1\n\thXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7C\n\tfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmI\n\tzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLj\n\tk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd\n\t0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjE\n\tqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0\n\tnLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBw\n\twOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXN\n\tNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx\n\t2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/n\n\tqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ\n\t9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//+ABNIcHR4fWiRjbGFz\n\tc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN00hwd\n\tIyRcTlNDb2xvclNwYWNloiUhXE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFfEA9O\n\tU0tleWVkQXJjaGl2ZXLRKyxUcm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBjAHAA\n\thQCMALUA3gDgAOIA5ADpAO8A8QDzAPgBAA1MDU4NUw1eDWcNdQ15DYANiQ2ODZsNng2r\n\tDbANuA27Dc0N0A3VAAAAAAAAAgEAAAAAAAAALQAAAAAAAAAAAAAAAAAADdc=\n\t</data>\n\t<key>ANSIBrightGreenColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjM0NTA5ODA3\n\tODMgMC40MzEzNzI1NTMxIDAuNDU4ODIzNTAyMSAxTxAmMC4yNzY3MTk5Mjc4IDAuMzU2\n\tNjU5NTMxNiAwLjM4Mjk4NDgxNwAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k\n\tYXRhTxEMSAAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZU\n\tAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl\n\tc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoA\n\tAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANM\n\tAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAA\n\tDHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJp\n\tZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJz\n\tUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAA\n\tAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA\n\tA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAA\n\tAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cu\n\taWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl\n\tIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3Vy\n\tIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl\n\tcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAs\n\tUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A\n\tAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA\n\tAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgA\n\tLQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACp\n\tAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB\n\tOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHy\n\tAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC\n\t6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQT\n\tBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcF\n\thgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr\n\tBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJ\n\tJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtR\n\tC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN\n\t3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb\n\tELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT\n\txRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcd\n\tF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa\n\t7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p\n\tHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj\n\tZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgN\n\tKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwt\n\tQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKb\n\tMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4\n\tjDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6g\n\tPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJF\n\tVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq\n\tTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19T\n\tqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF\n\tW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Nj\n\tl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/\n\tbFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1\n\tKHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5i\n\tfsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI\n\taYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6\n\tkuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPed\n\tZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS\n\tqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660\n\tJbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1\n\twHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXM\n\ttc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls\n\t2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbn\n\tH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC\n\t9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE0hwdHh9aJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TS\n\tHB0jJFxOU0NvbG9yU3BhY2WiJSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8Q\n\tD05TS2V5ZWRBcmNoaXZlctErLFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMA\n\tcACFAIwAtwDgAOIA5ADmAOsA8QDzAPUA+gECDU4NUA1VDWANaQ13DXsNgg2LDZANnQ2g\n\tDa0Nsg26Db0Nzw3SDdcAAAAAAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAN2Q==\n\t</data>\n\t<key>ANSIBrightMagentaColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjQyMzUyOTQx\n\tMTggMC40NDMxMzcyNTQ5IDAuNzY4NjI3NDUxIDFPECcwLjM0NzkyMzc4NTQgMC4zNTEz\n\tNzE1NTY1IDAuNzE3OTE2NjY3NQAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k\n\tYXRhTxEMSAAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZU\n\tAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl\n\tc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoA\n\tAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANM\n\tAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAA\n\tDHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJp\n\tZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJz\n\tUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAA\n\tAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA\n\tA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAA\n\tAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cu\n\taWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl\n\tIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3Vy\n\tIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl\n\tcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAs\n\tUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A\n\tAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA\n\tAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgA\n\tLQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACp\n\tAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB\n\tOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHy\n\tAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC\n\t6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQT\n\tBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcF\n\thgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr\n\tBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJ\n\tJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtR\n\tC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN\n\t3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb\n\tELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT\n\txRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcd\n\tF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa\n\t7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p\n\tHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj\n\tZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgN\n\tKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwt\n\tQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKb\n\tMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4\n\tjDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6g\n\tPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJF\n\tVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq\n\tTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19T\n\tqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF\n\tW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Nj\n\tl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/\n\tbFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1\n\tKHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5i\n\tfsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI\n\taYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6\n\tkuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPed\n\tZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS\n\tqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660\n\tJbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1\n\twHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXM\n\ttc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls\n\t2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbn\n\tH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC\n\t9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE0hwdHh9aJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TS\n\tHB0jJFxOU0NvbG9yU3BhY2WiJSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8Q\n\tD05TS2V5ZWRBcmNoaXZlctErLFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMA\n\tcACFAIwAtgDgAOIA5ADmAOsA8QDzAPUA+gECDU4NUA1VDWANaQ13DXsNgg2LDZANnQ2g\n\tDa0Nsg26Db0Nzw3SDdcAAAAAAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAN2Q==\n\t</data>\n\t<key>ANSIBrightRedColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjc5NjA3ODQz\n\tMTQgMC4yOTQxMTc2NDcxIDAuMDg2Mjc0NTA5OCAxTxAoMC43NDE3NjI0NTkzIDAuMjEz\n\tMjUzMDA2MyAwLjA3MzUzMDQyODExABABgAKABtIUDRUWVU5TSUNDgAOABdIYDRkaV05T\n\tLmRhdGFPEQxIAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1T\n\tRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAz\n\tZGVzYwAAAYQAAABsd3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZ\n\tWgAAAiwAAAAUYlhZWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAA\n\tA0wAAACGdmlldwAAA9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAABAwAAAAkdGVjaAAABDAA\n\tAAAMclRSQwAABDwAAAgMZ1RSQwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAAAABDb3B5\n\tcmlnaHQgKGMpIDE5OTggSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAA\n\tEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAA\n\tAAAAAADzUQABAAAAARbMWFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1\n\tAAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAA\n\tAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3\n\tdy5pZWMuY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAAAAZGVzYwAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3Bh\n\tY2UgLSBzUkdCAAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xv\n\tdXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJl\n\tZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAA\n\tACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD7cwABBMLAANc\n\tngAAAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAA\n\tAAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMA\n\tKAAtADIANwA7AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCk\n\tAKkArgCyALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsB\n\tMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHp\n\tAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC\n\t4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQG\n\tBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcF\n\tdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZ\n\tBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJ\n\tEAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5\n\tC1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakN\n\tww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+\n\tEJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MT\n\tpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6\n\tFx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4a\n\txRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+\n\tHukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwoj\n\tOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfc\n\tKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNct\n\tDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJj\n\tMpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4\n\tUDiMOMg5BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5g\n\tPqA+4D8hP2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5F\n\tEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkvi\n\tTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNT\n\tX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1\n\tW0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBj\n\tQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2un\n\ta/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0\n\tzHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4B\n\tfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+I\n\tBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIR\n\tknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc\n\t951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfg\n\tqFKoxKk3qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCsziz\n\trrQltJy1E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796\n\tv/XAcMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bM\n\tNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo\n\t2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3m\n\tlucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q0\n\t9ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf//gATSHB0eH1ok\n\tY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHiAhVk5TRGF0YVhOU09iamVj\n\tdNIcHSMkXE5TQ29sb3JTcGFjZaIlIVxOU0NvbG9yU3BhY2XSHB0nKFdOU0NvbG9yoich\n\tXxAPTlNLZXllZEFyY2hpdmVy0SssVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8ARQBQAF0A\n\tYwBwAIUAjAC3AOIA5ADmAOgA7QDzAPUA9wD8AQQNUA1SDVcNYg1rDXkNfQ2EDY0Nkg2f\n\tDaINrw20DbwNvw3RDdQN2QAAAAAAAAIBAAAAAAAAAC0AAAAAAAAAAAAAAAAAAA3b\n\t</data>\n\t<key>ANSIBrightWhiteColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjk5MjE1Njg2\n\tMjcgMC45NjQ3MDU4ODI0IDAuODkwMTk2MDc4NCAxTxAmMC45ODk0MzQxMjMgMC45NTc5\n\tNDM4NTY3IDAuODY0MDU5NzQ2MwAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k\n\tYXRhTxEMSAAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZU\n\tAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl\n\tc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoA\n\tAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANM\n\tAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAA\n\tDHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJp\n\tZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJz\n\tUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAA\n\tAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA\n\tA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAA\n\tAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cu\n\taWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl\n\tIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3Vy\n\tIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl\n\tcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAs\n\tUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A\n\tAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA\n\tAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgA\n\tLQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACp\n\tAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB\n\tOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHy\n\tAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC\n\t6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQT\n\tBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcF\n\thgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr\n\tBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJ\n\tJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtR\n\tC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN\n\t3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb\n\tELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT\n\txRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcd\n\tF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa\n\t7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p\n\tHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj\n\tZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgN\n\tKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwt\n\tQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKb\n\tMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4\n\tjDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6g\n\tPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJF\n\tVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq\n\tTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19T\n\tqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF\n\tW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Nj\n\tl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/\n\tbFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1\n\tKHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5i\n\tfsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI\n\taYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6\n\tkuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPed\n\tZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS\n\tqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660\n\tJbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1\n\twHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXM\n\ttc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls\n\t2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbn\n\tH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC\n\t9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE0hwdHh9aJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TS\n\tHB0jJFxOU0NvbG9yU3BhY2WiJSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8Q\n\tD05TS2V5ZWRBcmNoaXZlctErLFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMA\n\tcACFAIwAtwDgAOIA5ADmAOsA8QDzAPUA+gECDU4NUA1VDWANaQ13DXsNgg2LDZANnQ2g\n\tDa0Nsg26Db0Nzw3SDdcAAAAAAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAN2Q==\n\t</data>\n\t<key>ANSIBrightYellowColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjM5NjA3ODQz\n\tMTQgMC40ODIzNTI5NDEyIDAuNTEzNzI1NDkwMiAxTxAnMC4zMjQzNjYxNTIzIDAuNDA3\n\tMTc2NjczNCAwLjQzODUwNTY0OTYAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu\n\tZGF0YU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNG\n\tVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNk\n\tZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFla\n\tAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAAD\n\tTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAA\n\tAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHly\n\taWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAAS\n\tc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAA\n\tAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUA\n\tAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAA\n\tAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3\n\tLmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFj\n\tZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91\n\tciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVm\n\tZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAA\n\tLFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1ye\n\tAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAA\n\tAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAo\n\tAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQA\n\tqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy\n\tATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB\n\t8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLg\n\tAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYE\n\tEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3\n\tBYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkH\n\tKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQ\n\tCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkL\n\tUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3D\n\tDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4Q\n\tmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOk\n\tE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoX\n\tHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrF\n\tGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e\n\t6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4\n\tI2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9wo\n\tDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0M\n\tLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMy\n\tmzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQ\n\tOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+\n\toD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUS\n\tRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JM\n\tKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1Nf\n\tU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVb\n\tRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GND\n\tY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr\n\t/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTM\n\tdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+\n\tYn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gE\n\tiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGS\n\tepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3\n\tnWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+Co\n\tUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOu\n\ttCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/\n\t9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1\n\tzLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZ\n\tbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW\n\t5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0\n\twvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//+ABNIcHR4fWiRj\n\tbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN0\n\t0hwdIyRcTlNDb2xvclNwYWNloiUhXE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFf\n\tEA9OU0tleWVkQXJjaGl2ZXLRKyxUcm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBj\n\tAHAAhQCMALcA4QDjAOUA5wDsAPIA9AD2APsBAw1PDVENVg1hDWoNeA18DYMNjA2RDZ4N\n\toQ2uDbMNuw2+DdAN0w3YAAAAAAAAAgEAAAAAAAAALQAAAAAAAAAAAAAAAAAADdo=\n\t</data>\n\t<key>ANSICyanColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjE2NDcwNTg4\n\tMjQgMC42MzEzNzI1NDkgMC41OTYwNzg0MzE0IDFPECcwLjE0Njc5NTM0NzMgMC41NzA4\n\tMjM2MDk4IDAuNTI1MDIyNzQ1MQAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k\n\tYXRhTxEMSAAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZU\n\tAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl\n\tc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoA\n\tAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANM\n\tAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAA\n\tDHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJp\n\tZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJz\n\tUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAA\n\tAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA\n\tA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAA\n\tAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cu\n\taWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl\n\tIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3Vy\n\tIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl\n\tcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAs\n\tUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A\n\tAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA\n\tAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgA\n\tLQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACp\n\tAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB\n\tOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHy\n\tAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC\n\t6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQT\n\tBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcF\n\thgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr\n\tBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJ\n\tJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtR\n\tC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN\n\t3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb\n\tELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT\n\txRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcd\n\tF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa\n\t7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p\n\tHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj\n\tZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgN\n\tKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwt\n\tQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKb\n\tMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4\n\tjDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6g\n\tPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJF\n\tVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq\n\tTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19T\n\tqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF\n\tW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Nj\n\tl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/\n\tbFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1\n\tKHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5i\n\tfsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI\n\taYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6\n\tkuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPed\n\tZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS\n\tqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660\n\tJbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1\n\twHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXM\n\ttc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls\n\t2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbn\n\tH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC\n\t9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE0hwdHh9aJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TS\n\tHB0jJFxOU0NvbG9yU3BhY2WiJSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8Q\n\tD05TS2V5ZWRBcmNoaXZlctErLFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMA\n\tcACFAIwAtgDgAOIA5ADmAOsA8QDzAPUA+gECDU4NUA1VDWANaQ13DXsNgg2LDZANnQ2g\n\tDa0Nsg26Db0Nzw3SDdcAAAAAAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAN2Q==\n\t</data>\n\t<key>ANSIGreenColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPEBwwLjUyMTU2ODY1\n\tNiAwLjYwMDAwMDAyMzggMCAxTxAoMC40NDk3NzQ1MzM1IDAuNTQxMTU0OTIxMSAwLjAy\n\tMDIwODc1NTUxABABgAKABtIUDRUWVU5TSUNDgAOABdIYDRkaV05TLmRhdGFPEQxIAAAM\n\tSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1TRlQAAAAASUVDIHNS\n\tR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAzZGVzYwAAAYQAAABs\n\td3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZWgAAAiwAAAAUYlhZ\n\tWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAA\n\tA9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAABAwAAAAkdGVjaAAABDAAAAAMclRSQwAABDwA\n\tAAgMZ1RSQwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAAAABDb3B5cmlnaHQgKGMpIDE5\n\tOTggSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAAEnNSR0IgSUVDNjE5\n\tNjYtMi4xAAAAAAAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAA\n\tARbMWFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAA\n\tAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAAAAAAABZJRUMgaHR0\n\tcDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAA\n\tAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAA\n\tAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBz\n\tUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJlZmVyZW5jZSBWaWV3\n\taW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAACxSZWZlcmVuY2Ug\n\tVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD7cwABBMLAANcngAAAAFYWVogAAAA\n\tAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAKPAAAAAnNp\n\tZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7AEAA\n\tRQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADB\n\tAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIB\n\tWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAId\n\tAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYD\n\tIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARV\n\tBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF\n\t1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeG\n\tB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJTwlkCXkJ\n\tjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1ELaQuAC5gLsAvI\n\tC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkO\n\tZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPURExEx\n\tEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkU\n\tahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfS\n\tF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4ob\n\tshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/\n\tH+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8k\n\tTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkG\n\tKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYtqy3hLhYu\n\tTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0YzfzO4\n\tM/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85\n\tvDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/i\n\tQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdG\n\tq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2T\n\tTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtV\n\tKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0VblVvlXDVchlzW\n\tXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OXY+tkQGSUZOll\n\tPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2una/9sV2yvbQhtYG25\n\tbhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUodYV14XY+dpt2\n\t+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+wn8jf4R/5YBH\n\tgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZif6K\n\tZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS45NNk7aUIJSK\n\tlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2f\n\ti5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqP\n\tqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2\n\tebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48Jf\n\twtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbP\n\tN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF\n\t3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf56noMui86Ubp\n\t0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe9m32+/eK\n\t+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf//gATSHB0eH1okY2xhc3NuYW1lWCRj\n\tbGFzc2VzXU5TTXV0YWJsZURhdGGjHiAhVk5TRGF0YVhOU09iamVjdNIcHSMkXE5TQ29s\n\tb3JTcGFjZaIlIVxOU0NvbG9yU3BhY2XSHB0nKFdOU0NvbG9yoichXxAPTlNLZXllZEFy\n\tY2hpdmVy0SssVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8ARQBQAF0AYwBwAIUAjACrANYA\n\t2ADaANwA4QDnAOkA6wDwAPgNRA1GDUsNVg1fDW0NcQ14DYENhg2TDZYNow2oDbANsw3F\n\tDcgNzQAAAAAAAAIBAAAAAAAAAC0AAAAAAAAAAAAAAAAAAA3P\n\t</data>\n\t<key>ANSIMagentaColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjgyNzQ1MDk4\n\tMDQgMC4yMTE3NjQ3MDU5IDAuNTA5ODAzOTIxNiAxTxAnMC43NzczODkzNDc2IDAuMTA4\n\tMDI0NjEyMSAwLjQzNTE2NjM1ODkAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu\n\tZGF0YU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNG\n\tVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNk\n\tZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFla\n\tAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAAD\n\tTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAA\n\tAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHly\n\taWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAAS\n\tc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAA\n\tAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUA\n\tAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAA\n\tAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3\n\tLmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFj\n\tZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91\n\tciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVm\n\tZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAA\n\tLFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1ye\n\tAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAA\n\tAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAo\n\tAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQA\n\tqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy\n\tATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB\n\t8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLg\n\tAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYE\n\tEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3\n\tBYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkH\n\tKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQ\n\tCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkL\n\tUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3D\n\tDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4Q\n\tmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOk\n\tE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoX\n\tHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrF\n\tGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e\n\t6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4\n\tI2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9wo\n\tDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0M\n\tLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMy\n\tmzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQ\n\tOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+\n\toD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUS\n\tRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JM\n\tKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1Nf\n\tU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVb\n\tRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GND\n\tY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr\n\t/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTM\n\tdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+\n\tYn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gE\n\tiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGS\n\tepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3\n\tnWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+Co\n\tUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOu\n\ttCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/\n\t9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1\n\tzLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZ\n\tbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW\n\t5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0\n\twvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//+ABNIcHR4fWiRj\n\tbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN0\n\t0hwdIyRcTlNDb2xvclNwYWNloiUhXE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFf\n\tEA9OU0tleWVkQXJjaGl2ZXLRKyxUcm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBj\n\tAHAAhQCMALcA4QDjAOUA5wDsAPIA9AD2APsBAw1PDVENVg1hDWoNeA18DYMNjA2RDZ4N\n\toQ2uDbMNuw2+DdAN0w3YAAAAAAAAAgEAAAAAAAAALQAAAAAAAAAAAAAAAAAADdo=\n\t</data>\n\t<key>ANSIRedColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjg2Mjc0NTA5\n\tOCAwLjE5NjA3ODQzMTQgMC4xODQzMTM3MjU1IDFPECcwLjgxOTI2OTY1NzEgMC4xMDg0\n\tMDY2NjI5IDAuMTQxNDU3MTU1MwAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k\n\tYXRhTxEMSAAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZU\n\tAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl\n\tc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoA\n\tAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANM\n\tAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAA\n\tDHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJp\n\tZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJz\n\tUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAA\n\tAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA\n\tA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAA\n\tAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cu\n\taWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl\n\tIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3Vy\n\tIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl\n\tcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAs\n\tUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A\n\tAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA\n\tAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgA\n\tLQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACp\n\tAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB\n\tOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHy\n\tAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC\n\t6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQT\n\tBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcF\n\thgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr\n\tBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJ\n\tJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtR\n\tC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN\n\t3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb\n\tELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT\n\txRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcd\n\tF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa\n\t7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p\n\tHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj\n\tZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgN\n\tKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwt\n\tQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKb\n\tMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4\n\tjDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6g\n\tPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJF\n\tVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq\n\tTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19T\n\tqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF\n\tW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Nj\n\tl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/\n\tbFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1\n\tKHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5i\n\tfsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI\n\taYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6\n\tkuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPed\n\tZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS\n\tqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660\n\tJbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1\n\twHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXM\n\ttc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls\n\t2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbn\n\tH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC\n\t9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE0hwdHh9aJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TS\n\tHB0jJFxOU0NvbG9yU3BhY2WiJSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8Q\n\tD05TS2V5ZWRBcmNoaXZlctErLFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMA\n\tcACFAIwAtgDgAOIA5ADmAOsA8QDzAPUA+gECDU4NUA1VDWANaQ13DXsNgg2LDZANnQ2g\n\tDa0Nsg26Db0Nzw3SDdcAAAAAAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAN2Q==\n\t</data>\n\t<key>ANSIWhiteColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjkzMzMzMzMz\n\tMzMgMC45MDk4MDM5MjE2IDAuODM1Mjk0MTE3NiAxTxAnMC45MTYxMTA1NzUyIDAuODkw\n\tMDEyMzIzOSAwLjc5NzgxMDkxMjEAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu\n\tZGF0YU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNG\n\tVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNk\n\tZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFla\n\tAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAAD\n\tTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAA\n\tAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHly\n\taWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAAS\n\tc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAA\n\tAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUA\n\tAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAA\n\tAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3\n\tLmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFj\n\tZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91\n\tciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVm\n\tZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAA\n\tLFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1ye\n\tAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAA\n\tAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAo\n\tAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQA\n\tqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy\n\tATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB\n\t8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLg\n\tAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYE\n\tEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3\n\tBYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkH\n\tKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQ\n\tCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkL\n\tUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3D\n\tDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4Q\n\tmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOk\n\tE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoX\n\tHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrF\n\tGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e\n\t6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4\n\tI2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9wo\n\tDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0M\n\tLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMy\n\tmzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQ\n\tOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+\n\toD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUS\n\tRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JM\n\tKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1Nf\n\tU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVb\n\tRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GND\n\tY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr\n\t/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTM\n\tdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+\n\tYn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gE\n\tiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGS\n\tepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3\n\tnWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+Co\n\tUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOu\n\ttCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/\n\t9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1\n\tzLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZ\n\tbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW\n\t5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0\n\twvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//+ABNIcHR4fWiRj\n\tbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN0\n\t0hwdIyRcTlNDb2xvclNwYWNloiUhXE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFf\n\tEA9OU0tleWVkQXJjaGl2ZXLRKyxUcm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBj\n\tAHAAhQCMALcA4QDjAOUA5wDsAPIA9AD2APsBAw1PDVENVg1hDWoNeA18DYMNjA2RDZ4N\n\toQ2uDbMNuw2+DdAN0w3YAAAAAAAAAgEAAAAAAAAALQAAAAAAAAAAAAAAAAAADdo=\n\t</data>\n\t<key>ANSIYellowColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPEBwwLjcwOTgwMzky\n\tMTYgMC41MzcyNTQ5MDIgMCAxTxAoMC42NDc0NjQ3NTIyIDAuNDY3NTE0MjQ2NyAwLjAy\n\tMzQ4NDgxMTE5ABABgAKABtIUDRUWVU5TSUNDgAOABdIYDRkaV05TLmRhdGFPEQxIAAAM\n\tSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1TRlQAAAAASUVDIHNS\n\tR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAzZGVzYwAAAYQAAABs\n\td3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZWgAAAiwAAAAUYlhZ\n\tWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAA\n\tA9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAABAwAAAAkdGVjaAAABDAAAAAMclRSQwAABDwA\n\tAAgMZ1RSQwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAAAABDb3B5cmlnaHQgKGMpIDE5\n\tOTggSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAAEnNSR0IgSUVDNjE5\n\tNjYtMi4xAAAAAAAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAA\n\tARbMWFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAA\n\tAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAAAAAAABZJRUMgaHR0\n\tcDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAA\n\tAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAA\n\tAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBz\n\tUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJlZmVyZW5jZSBWaWV3\n\taW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAACxSZWZlcmVuY2Ug\n\tVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD7cwABBMLAANcngAAAAFYWVogAAAA\n\tAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAKPAAAAAnNp\n\tZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7AEAA\n\tRQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADB\n\tAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIB\n\tWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAId\n\tAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYD\n\tIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARV\n\tBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF\n\t1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeG\n\tB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJTwlkCXkJ\n\tjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1ELaQuAC5gLsAvI\n\tC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkO\n\tZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPURExEx\n\tEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkU\n\tahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfS\n\tF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4ob\n\tshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/\n\tH+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8k\n\tTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkG\n\tKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYtqy3hLhYu\n\tTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0YzfzO4\n\tM/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85\n\tvDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/i\n\tQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdG\n\tq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2T\n\tTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtV\n\tKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0VblVvlXDVchlzW\n\tXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OXY+tkQGSUZOll\n\tPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2una/9sV2yvbQhtYG25\n\tbhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUodYV14XY+dpt2\n\t+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+wn8jf4R/5YBH\n\tgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZif6K\n\tZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS45NNk7aUIJSK\n\tlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2f\n\ti5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqP\n\tqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2\n\tebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48Jf\n\twtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbP\n\tN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF\n\t3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf56noMui86Ubp\n\t0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe9m32+/eK\n\t+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf//gATSHB0eH1okY2xhc3NuYW1lWCRj\n\tbGFzc2VzXU5TTXV0YWJsZURhdGGjHiAhVk5TRGF0YVhOU09iamVjdNIcHSMkXE5TQ29s\n\tb3JTcGFjZaIlIVxOU0NvbG9yU3BhY2XSHB0nKFdOU0NvbG9yoichXxAPTlNLZXllZEFy\n\tY2hpdmVy0SssVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8ARQBQAF0AYwBwAIUAjACrANYA\n\t2ADaANwA4QDnAOkA6wDwAPgNRA1GDUsNVg1fDW0NcQ14DYENhg2TDZYNow2oDbANsw3F\n\tDcgNzQAAAAAAAAIBAAAAAAAAAC0AAAAAAAAAAAAAAAAAAA3P\n\t</data>\n\t<key>BackgroundBlur</key>\n\t<real>0.0</real>\n\t<key>BackgroundColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjAyNzQ1MTAw\n\tNjcgMC4yMTE3NjQ3MjMxIDAuMjU4ODIzNDg0MiAxTxAoMC4wMzkzODA3NDc4MiAwLjE2\n\tMDExNjQ2MzkgMC4xOTgzMzI3MTIxABABgAKABtIUDRUWVU5TSUNDgAOABdIYDRkaV05T\n\tLmRhdGFPEQxIAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1T\n\tRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAz\n\tZGVzYwAAAYQAAABsd3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZ\n\tWgAAAiwAAAAUYlhZWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAA\n\tA0wAAACGdmlldwAAA9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAABAwAAAAkdGVjaAAABDAA\n\tAAAMclRSQwAABDwAAAgMZ1RSQwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAAAABDb3B5\n\tcmlnaHQgKGMpIDE5OTggSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAA\n\tEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAA\n\tAAAAAADzUQABAAAAARbMWFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1\n\tAAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAA\n\tAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3\n\tdy5pZWMuY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAAAAZGVzYwAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3Bh\n\tY2UgLSBzUkdCAAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xv\n\tdXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJl\n\tZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAA\n\tACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD7cwABBMLAANc\n\tngAAAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAA\n\tAAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMA\n\tKAAtADIANwA7AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCk\n\tAKkArgCyALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsB\n\tMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHp\n\tAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC\n\t4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQG\n\tBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcF\n\tdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZ\n\tBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJ\n\tEAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5\n\tC1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakN\n\tww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+\n\tEJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MT\n\tpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6\n\tFx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4a\n\txRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+\n\tHukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwoj\n\tOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfc\n\tKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNct\n\tDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJj\n\tMpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4\n\tUDiMOMg5BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5g\n\tPqA+4D8hP2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5F\n\tEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkvi\n\tTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNT\n\tX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1\n\tW0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBj\n\tQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2un\n\ta/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0\n\tzHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4B\n\tfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+I\n\tBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIR\n\tknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc\n\t951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfg\n\tqFKoxKk3qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCsziz\n\trrQltJy1E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796\n\tv/XAcMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bM\n\tNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo\n\t2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3m\n\tlucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q0\n\t9ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf//gATSHB0eH1ok\n\tY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHiAhVk5TRGF0YVhOU09iamVj\n\tdNIcHSMkXE5TQ29sb3JTcGFjZaIlIVxOU0NvbG9yU3BhY2XSHB0nKFdOU0NvbG9yoich\n\tXxAPTlNLZXllZEFyY2hpdmVy0SssVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8ARQBQAF0A\n\tYwBwAIUAjAC3AOIA5ADmAOgA7QDzAPUA9wD8AQQNUA1SDVcNYg1rDXkNfQ2EDY0Nkg2f\n\tDaINrw20DbwNvw3RDdQN2QAAAAAAAAIBAAAAAAAAAC0AAAAAAAAAAAAAAAAAAA3b\n\t</data>\n\t<key>BlinkText</key>\n\t<false/>\n\t<key>CommandString</key>\n\t<string></string>\n\t<key>CursorColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjM5NjA3ODQ2\n\tNzQgMC40ODIzNTI5NzIgMC41MTM3MjU0NTk2IDFPECQwLjMyNDM2NjE4MjEgMC40MDcx\n\tNzY3MzMgMC40Mzg1MDU1OQAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5kYXRh\n\tTxEMSAAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAA\n\tAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MA\n\tAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIs\n\tAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAA\n\thnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJU\n\tUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0\n\tIChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdC\n\tIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA\n\t81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BY\n\tWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAW\n\tSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVj\n\tLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRl\n\tc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0g\n\tc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNw\n\tYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVu\n\tY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVm\n\tZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAAB\n\tWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAC\n\tjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAy\n\tADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4A\n\tsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+\n\tAUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoC\n\tAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1\n\tAwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAE\n\tLQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWW\n\tBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0H\n\tTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6\n\tCU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kL\n\tgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34\n\tDhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ\n\t1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPl\n\tFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EX\n\tZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsU\n\tGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMf\n\tPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOU\n\tI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8o\n\tcSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12\n\tLast4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQz\n\tDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjI\n\tOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/\n\tIT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWa\n\tRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJM\n\tuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2\n\tVEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb\n\t5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2Pr\n\tZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFds\n\tr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWF\n\tdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/\n\tI3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjO\n\tiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOT\n\tTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3S\n\tnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSp\n\tN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSc\n\ttRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA\n\t7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01\n\tzbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHa\n\tdtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep\n\t6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD1\n\t3vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE0hwdHh9aJGNsYXNz\n\tbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TSHB0j\n\tJFxOU0NvbG9yU3BhY2WiJSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8QD05T\n\tS2V5ZWRBcmNoaXZlctErLFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMAcACF\n\tAIwAtgDdAN8A4QDjAOgA7gDwAPIA9wD/DUsNTQ1SDV0NZg10DXgNfw2IDY0Nmg2dDaoN\n\trw23DboNzA3PDdQAAAAAAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAN1g==\n\t</data>\n\t<key>Font</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGGBlYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKQHCBESVSRudWxs1AkKCwwNDg8QViRjbGFzc1ZOU05hbWVWTlNTaXplWE5TZkZs\n\tYWdzgAOAAiNAJgAAAAAAABAQVk1vbmFjb9ITFBUWWiRjbGFzc25hbWVYJGNsYXNzZXNW\n\tTlNGb250ohUXWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hpdmVy0RobVHJvb3SAAQgRGiMt\n\tMjc8QktSWWBpa212eH+Ej5ifoqu9wMUAAAAAAAABAQAAAAAAAAAcAAAAAAAAAAAAAAAA\n\tAAAAxw==\n\t</data>\n\t<key>FontAntialias</key>\n\t<true/>\n\t<key>FontWidthSpacing</key>\n\t<real>1.004032258064516</real>\n\t<key>ProfileCurrentVersion</key>\n\t<real>2.02</real>\n\t<key>RunCommandAsShell</key>\n\t<true/>\n\t<key>SelectionColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjkzMzMzMzM5\n\tNjkgMC45MDk4MDM5MjY5IDAuODM1Mjk0MjQ2NyAxTxAnMC45MTYxMTA2MzQ4IDAuODkw\n\tMDEyMzIzOSAwLjc5NzgxMTA5MDkAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu\n\tZGF0YU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNG\n\tVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNk\n\tZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFla\n\tAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAAD\n\tTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAA\n\tAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHly\n\taWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAAS\n\tc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAA\n\tAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUA\n\tAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAA\n\tAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3\n\tLmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFj\n\tZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91\n\tciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVm\n\tZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAA\n\tLFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1ye\n\tAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAA\n\tAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAo\n\tAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQA\n\tqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy\n\tATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB\n\t8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLg\n\tAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYE\n\tEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3\n\tBYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkH\n\tKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQ\n\tCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkL\n\tUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3D\n\tDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4Q\n\tmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOk\n\tE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoX\n\tHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrF\n\tGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e\n\t6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4\n\tI2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9wo\n\tDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0M\n\tLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMy\n\tmzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQ\n\tOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+\n\toD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUS\n\tRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JM\n\tKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1Nf\n\tU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVb\n\tRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GND\n\tY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr\n\t/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTM\n\tdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+\n\tYn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gE\n\tiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGS\n\tepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3\n\tnWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+Co\n\tUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOu\n\ttCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/\n\t9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1\n\tzLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZ\n\tbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW\n\t5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0\n\twvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//+ABNIcHR4fWiRj\n\tbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN0\n\t0hwdIyRcTlNDb2xvclNwYWNloiUhXE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFf\n\tEA9OU0tleWVkQXJjaGl2ZXLRKyxUcm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBj\n\tAHAAhQCMALcA4QDjAOUA5wDsAPIA9AD2APsBAw1PDVENVg1hDWoNeA18DYMNjA2RDZ4N\n\toQ2uDbMNuw2+DdAN0w3YAAAAAAAAAgEAAAAAAAAALQAAAAAAAAAAAAAAAAAADdo=\n\t</data>\n\t<key>ShowCommandKeyInTitle</key>\n\t<false/>\n\t<key>ShowDimensionsInTitle</key>\n\t<false/>\n\t<key>ShowShellCommandInTitle</key>\n\t<false/>\n\t<key>TerminalType</key>\n\t<string>xterm-256color</string>\n\t<key>TextBoldColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjU3NjQ3MDY3\n\tMzEgMC42MzEzNzI1MTE0IDAuNjMxMzcyNTcxIDFPECcwLjUwNTk5MjA1NDkgMC41NjQ4\n\tNTgzMTc0IDAuNTYzNjM2NTQxNAAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k\n\tYXRhTxEMSAAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZU\n\tAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl\n\tc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoA\n\tAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANM\n\tAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAA\n\tDHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJp\n\tZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJz\n\tUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAA\n\tAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA\n\tA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAA\n\tAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cu\n\taWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl\n\tIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3Vy\n\tIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl\n\tcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAs\n\tUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A\n\tAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA\n\tAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgA\n\tLQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACp\n\tAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB\n\tOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHy\n\tAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC\n\t6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQT\n\tBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcF\n\thgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr\n\tBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJ\n\tJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtR\n\tC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN\n\t3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb\n\tELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT\n\txRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcd\n\tF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa\n\t7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p\n\tHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj\n\tZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgN\n\tKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwt\n\tQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKb\n\tMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4\n\tjDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6g\n\tPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJF\n\tVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq\n\tTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19T\n\tqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF\n\tW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Nj\n\tl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/\n\tbFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1\n\tKHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5i\n\tfsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI\n\taYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6\n\tkuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPed\n\tZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS\n\tqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660\n\tJbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1\n\twHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXM\n\ttc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls\n\t2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbn\n\tH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC\n\t9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE0hwdHh9aJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TS\n\tHB0jJFxOU0NvbG9yU3BhY2WiJSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8Q\n\tD05TS2V5ZWRBcmNoaXZlctErLFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMA\n\tcACFAIwAtgDgAOIA5ADmAOsA8QDzAPUA+gECDU4NUA1VDWANaQ13DXsNgg2LDZANnQ2g\n\tDa0Nsg26Db0Nzw3SDdcAAAAAAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAN2Q==\n\t</data>\n\t<key>TextColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjUxMzcyNTUx\n\tOTIgMC41ODAzOTIxODE5IDAuNTg4MjM1MzE4NyAxTxAnMC40NDA1ODAyNDg4IDAuNTA5\n\tNjI5MzA5MiAwLjUxNjg1Nzk4MTcAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu\n\tZGF0YU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNG\n\tVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNk\n\tZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFla\n\tAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAAD\n\tTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAA\n\tAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHly\n\taWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAAS\n\tc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAA\n\tAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUA\n\tAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAA\n\tAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3\n\tLmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFj\n\tZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91\n\tciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVm\n\tZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAA\n\tLFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1ye\n\tAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAA\n\tAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAo\n\tAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQA\n\tqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy\n\tATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB\n\t8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLg\n\tAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYE\n\tEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3\n\tBYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkH\n\tKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQ\n\tCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkL\n\tUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3D\n\tDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4Q\n\tmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOk\n\tE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoX\n\tHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrF\n\tGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e\n\t6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4\n\tI2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9wo\n\tDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0M\n\tLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMy\n\tmzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQ\n\tOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+\n\toD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUS\n\tRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JM\n\tKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1Nf\n\tU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVb\n\tRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GND\n\tY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr\n\t/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTM\n\tdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+\n\tYn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gE\n\tiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGS\n\tepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3\n\tnWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+Co\n\tUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOu\n\ttCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/\n\t9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1\n\tzLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZ\n\tbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW\n\t5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0\n\twvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//+ABNIcHR4fWiRj\n\tbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN0\n\t0hwdIyRcTlNDb2xvclNwYWNloiUhXE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFf\n\tEA9OU0tleWVkQXJjaGl2ZXLRKyxUcm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBj\n\tAHAAhQCMALcA4QDjAOUA5wDsAPIA9AD2APsBAw1PDVENVg1hDWoNeA18DYMNjA2RDZ4N\n\toQ2uDbMNuw2+DdAN0w3YAAAAAAAAAgEAAAAAAAAALQAAAAAAAAAAAAAAAAAADdo=\n\t</data>\n\t<key>UseBoldFonts</key>\n\t<false/>\n\t<key>UseBrightBold</key>\n\t<true/>\n\t<key>blackColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg7JNIT2DkvUjPoO+F0s+AYY=\n\t</data>\n\t<key>blueColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmgyqcAj6DtOHsPoO+RUg/AYY=\n\t</data>\n\t<key>brightBlackColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg+ZzgjyDs44BPoNahyM+AYY=\n\t</data>\n\t<key>brightBlueColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg7yT4T6DEXcCP4POUAQ/AYY=\n\t</data>\n\t<key>brightCyanColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg7CIAT+Dj5oQP4N8ShA/AYY=\n\t</data>\n\t<key>brightGreenColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmgzyujT6DFZy2PoOYFsQ+AYY=\n\t</data>\n\t<key>brightMagentaColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmgxMjsj6D+uazPoNkyTc/AYY=\n\t</data>\n\t<key>brightRedColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmgyfkPT+D/15aPoMgl5Y9AYY=\n\t</data>\n\t<key>brightWhiteColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg49LfT+D0Dt1P4MGM10/AYY=\n\t</data>\n\t<key>brightYellowColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg1MTpj6DeHnQPoPQg+A+AYY=\n\t</data>\n\t<key>cyanColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg4VRFj6DfyESP4PkZwY/AYY=\n\t</data>\n\t<key>greenColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg9lI5j6DIYkKP4PVjKU8AYY=\n\t</data>\n\t<key>magentaColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg/4CRz+DBTzdPYMgzt4+AYY=\n\t</data>\n\t<key>name</key>\n\t<string>Solarized Dark</string>\n\t<key>redColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg6i7UT+DUATePYMl2hA+AYY=\n\t</data>\n\t<key>shellExitAction</key>\n\t<integer>1</integer>\n\t<key>type</key>\n\t<string>Window Settings</string>\n\t<key>whiteColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmgzqGaj+D2tdjP4NYPUw/AYY=\n\t</data>\n\t<key>yellowColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg0DAJT+DB17vPoM4Y8A8AYY=\n\t</data>\n</dict>\n</plist>\n"
  },
  {
    "path": "themes/Solarized Light.terminal",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>ANSIBlackColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjAyNzQ1MTAw\n\tNjcgMC4yMTE3NjQ3MjMxIDAuMjU4ODIzNDg0MiAxTxAoMC4wMzkzODA3NDc4MiAwLjE2\n\tMDExNjQ2MzkgMC4xOTgzMzI3MTIxABABgAKABtIUDRUWVU5TSUNDgAOABdIYDRkaV05T\n\tLmRhdGFPEQxIAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1T\n\tRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAz\n\tZGVzYwAAAYQAAABsd3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZ\n\tWgAAAiwAAAAUYlhZWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAA\n\tA0wAAACGdmlldwAAA9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAABAwAAAAkdGVjaAAABDAA\n\tAAAMclRSQwAABDwAAAgMZ1RSQwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAAAABDb3B5\n\tcmlnaHQgKGMpIDE5OTggSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAA\n\tEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAA\n\tAAAAAADzUQABAAAAARbMWFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1\n\tAAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAA\n\tAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3\n\tdy5pZWMuY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAAAAZGVzYwAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3Bh\n\tY2UgLSBzUkdCAAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xv\n\tdXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJl\n\tZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAA\n\tACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD7cwABBMLAANc\n\tngAAAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAA\n\tAAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMA\n\tKAAtADIANwA7AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCk\n\tAKkArgCyALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsB\n\tMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHp\n\tAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC\n\t4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQG\n\tBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcF\n\tdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZ\n\tBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJ\n\tEAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5\n\tC1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakN\n\tww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+\n\tEJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MT\n\tpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6\n\tFx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4a\n\txRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+\n\tHukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwoj\n\tOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfc\n\tKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNct\n\tDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJj\n\tMpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4\n\tUDiMOMg5BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5g\n\tPqA+4D8hP2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5F\n\tEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkvi\n\tTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNT\n\tX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1\n\tW0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBj\n\tQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2un\n\ta/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0\n\tzHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4B\n\tfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+I\n\tBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIR\n\tknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc\n\t951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfg\n\tqFKoxKk3qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCsziz\n\trrQltJy1E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796\n\tv/XAcMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bM\n\tNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo\n\t2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3m\n\tlucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q0\n\t9ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf//gATSHB0eH1ok\n\tY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHiAhVk5TRGF0YVhOU09iamVj\n\tdNIcHSMkXE5TQ29sb3JTcGFjZaIlIVxOU0NvbG9yU3BhY2XSHB0nKFdOU0NvbG9yoich\n\tXxAPTlNLZXllZEFyY2hpdmVy0SssVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8ARQBQAF0A\n\tYwBwAIUAjAC3AOIA5ADmAOgA7QDzAPUA9wD8AQQNUA1SDVcNYg1rDXkNfQ2EDY0Nkg2f\n\tDaINrw20DbwNvw3RDdQN2QAAAAAAAAIBAAAAAAAAAC0AAAAAAAAAAAAAAAAAAA3b\n\t</data>\n\t<key>ANSIBlueColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjE0OTAxOTYw\n\tNzggMC41NDUwOTgwMzkyIDAuODIzNTI5NDExOCAxTxAnMC4xMjc1NDg4NDM2IDAuNDYy\n\tNjU5NDc4MiAwLjc4MjMxNDEyMTcAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu\n\tZGF0YU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNG\n\tVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNk\n\tZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFla\n\tAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAAD\n\tTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAA\n\tAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHly\n\taWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAAS\n\tc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAA\n\tAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUA\n\tAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAA\n\tAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3\n\tLmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFj\n\tZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91\n\tciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVm\n\tZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAA\n\tLFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1ye\n\tAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAA\n\tAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAo\n\tAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQA\n\tqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy\n\tATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB\n\t8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLg\n\tAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYE\n\tEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3\n\tBYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkH\n\tKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQ\n\tCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkL\n\tUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3D\n\tDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4Q\n\tmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOk\n\tE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoX\n\tHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrF\n\tGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e\n\t6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4\n\tI2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9wo\n\tDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0M\n\tLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMy\n\tmzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQ\n\tOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+\n\toD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUS\n\tRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JM\n\tKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1Nf\n\tU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVb\n\tRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GND\n\tY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr\n\t/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTM\n\tdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+\n\tYn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gE\n\tiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGS\n\tepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3\n\tnWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+Co\n\tUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOu\n\ttCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/\n\t9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1\n\tzLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZ\n\tbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW\n\t5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0\n\twvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//+ABNIcHR4fWiRj\n\tbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN0\n\t0hwdIyRcTlNDb2xvclNwYWNloiUhXE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFf\n\tEA9OU0tleWVkQXJjaGl2ZXLRKyxUcm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBj\n\tAHAAhQCMALcA4QDjAOUA5wDsAPIA9AD2APsBAw1PDVENVg1hDWoNeA18DYMNjA2RDZ4N\n\toQ2uDbMNuw2+DdAN0w3YAAAAAAAAAgEAAAAAAAAALQAAAAAAAAAAAAAAAAAADdo=\n\t</data>\n\t<key>ANSIBrightBlackColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPEBwwIDAuMTY4NjI3\n\tNDUxIDAuMjExNzY0NzA1OSAxTxAoMC4wMTU5MjQ0MDcxNyAwLjEyNjUyMDkxNjggMC4x\n\tNTk2OTU5ODI5ABABgAKABtIUDRUWVU5TSUNDgAOABdIYDRkaV05TLmRhdGFPEQxIAAAM\n\tSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1TRlQAAAAASUVDIHNS\n\tR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAzZGVzYwAAAYQAAABs\n\td3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZWgAAAiwAAAAUYlhZ\n\tWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAA\n\tA9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAABAwAAAAkdGVjaAAABDAAAAAMclRSQwAABDwA\n\tAAgMZ1RSQwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAAAABDb3B5cmlnaHQgKGMpIDE5\n\tOTggSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAAEnNSR0IgSUVDNjE5\n\tNjYtMi4xAAAAAAAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAA\n\tARbMWFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAA\n\tAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAAAAAAABZJRUMgaHR0\n\tcDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAA\n\tAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAA\n\tAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBz\n\tUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJlZmVyZW5jZSBWaWV3\n\taW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAACxSZWZlcmVuY2Ug\n\tVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD7cwABBMLAANcngAAAAFYWVogAAAA\n\tAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAKPAAAAAnNp\n\tZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7AEAA\n\tRQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADB\n\tAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIB\n\tWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAId\n\tAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYD\n\tIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARV\n\tBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF\n\t1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeG\n\tB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJTwlkCXkJ\n\tjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1ELaQuAC5gLsAvI\n\tC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkO\n\tZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPURExEx\n\tEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkU\n\tahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfS\n\tF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4ob\n\tshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/\n\tH+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8k\n\tTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkG\n\tKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYtqy3hLhYu\n\tTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0YzfzO4\n\tM/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85\n\tvDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/i\n\tQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdG\n\tq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2T\n\tTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtV\n\tKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0VblVvlXDVchlzW\n\tXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OXY+tkQGSUZOll\n\tPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2una/9sV2yvbQhtYG25\n\tbhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUodYV14XY+dpt2\n\t+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+wn8jf4R/5YBH\n\tgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZif6K\n\tZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS45NNk7aUIJSK\n\tlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2f\n\ti5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqP\n\tqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2\n\tebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48Jf\n\twtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbP\n\tN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF\n\t3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf56noMui86Ubp\n\t0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe9m32+/eK\n\t+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf//gATSHB0eH1okY2xhc3NuYW1lWCRj\n\tbGFzc2VzXU5TTXV0YWJsZURhdGGjHiAhVk5TRGF0YVhOU09iamVjdNIcHSMkXE5TQ29s\n\tb3JTcGFjZaIlIVxOU0NvbG9yU3BhY2XSHB0nKFdOU0NvbG9yoichXxAPTlNLZXllZEFy\n\tY2hpdmVy0SssVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8ARQBQAF0AYwBwAIUAjACrANYA\n\t2ADaANwA4QDnAOkA6wDwAPgNRA1GDUsNVg1fDW0NcQ14DYENhg2TDZYNow2oDbANsw3F\n\tDcgNzQAAAAAAAAIBAAAAAAAAAC0AAAAAAAAAAAAAAAAAAA3P\n\t</data>\n\t<key>ANSIBrightBlueColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjUxMzcyNTQ5\n\tMDIgMC41ODAzOTIxNTY5IDAuNTg4MjM1Mjk0MSAxTxAnMC40NDA1ODAyNDg4IDAuNTA5\n\tNjI5MzA5MiAwLjUxNjg1Nzk4MTcAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu\n\tZGF0YU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNG\n\tVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNk\n\tZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFla\n\tAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAAD\n\tTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAA\n\tAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHly\n\taWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAAS\n\tc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAA\n\tAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUA\n\tAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAA\n\tAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3\n\tLmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFj\n\tZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91\n\tciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVm\n\tZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAA\n\tLFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1ye\n\tAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAA\n\tAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAo\n\tAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQA\n\tqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy\n\tATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB\n\t8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLg\n\tAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYE\n\tEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3\n\tBYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkH\n\tKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQ\n\tCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkL\n\tUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3D\n\tDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4Q\n\tmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOk\n\tE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoX\n\tHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrF\n\tGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e\n\t6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4\n\tI2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9wo\n\tDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0M\n\tLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMy\n\tmzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQ\n\tOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+\n\toD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUS\n\tRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JM\n\tKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1Nf\n\tU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVb\n\tRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GND\n\tY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr\n\t/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTM\n\tdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+\n\tYn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gE\n\tiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGS\n\tepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3\n\tnWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+Co\n\tUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOu\n\ttCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/\n\t9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1\n\tzLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZ\n\tbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW\n\t5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0\n\twvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//+ABNIcHR4fWiRj\n\tbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN0\n\t0hwdIyRcTlNDb2xvclNwYWNloiUhXE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFf\n\tEA9OU0tleWVkQXJjaGl2ZXLRKyxUcm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBj\n\tAHAAhQCMALcA4QDjAOUA5wDsAPIA9AD2APsBAw1PDVENVg1hDWoNeA18DYMNjA2RDZ4N\n\toQ2uDbMNuw2+DdAN0w3YAAAAAAAAAgEAAAAAAAAALQAAAAAAAAAAAAAAAAAADdo=\n\t</data>\n\t<key>ANSIBrightCyanColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECYwLjU3NjQ3MDU4\n\tODIgMC42MzEzNzI1NDkgMC42MzEzNzI1NDkgMU8QJjAuNTA1OTkxOTM1NyAwLjU2NDg1\n\tODM3NyAwLjU2MzYzNjU0MTQAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMuZGF0\n\tYU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAA\n\tAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNkZXNj\n\tAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFlaAAAC\n\tLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAADTAAA\n\tAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxy\n\tVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdo\n\tdCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAASc1JH\n\tQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAA\n\tAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQ\n\tWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAAAAAA\n\tFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3Lmll\n\tYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABk\n\tZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAt\n\tIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBz\n\tcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJl\n\tbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAALFJl\n\tZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1yeAAAA\n\tAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAA\n\tAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0A\n\tMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQAqQCu\n\tALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEyATgB\n\tPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6\n\tAgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC\n\t9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQg\n\tBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYF\n\tlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9\n\tB08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJ\n\tOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtp\n\tC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N\n\t+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4QmxC5\n\tENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT\n\t5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdB\n\tF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwb\n\tFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8T\n\tHz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2Yj\n\tlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/\n\tKHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0MLUEt\n\tdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMymzLU\n\tMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQOIw4\n\tyDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+oD7g\n\tPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVF\n\tmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxy\n\tTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT\n\t9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuV\n\tW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj\n\t62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr/2xX\n\tbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1\n\thXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7C\n\tfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmI\n\tzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLj\n\tk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd\n\t0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjE\n\tqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0\n\tnLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBw\n\twOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXN\n\tNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx\n\t2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/n\n\tqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ\n\t9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//+ABNIcHR4fWiRjbGFz\n\tc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN00hwd\n\tIyRcTlNDb2xvclNwYWNloiUhXE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFfEA9O\n\tU0tleWVkQXJjaGl2ZXLRKyxUcm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBjAHAA\n\thQCMALUA3gDgAOIA5ADpAO8A8QDzAPgBAA1MDU4NUw1eDWcNdQ15DYANiQ2ODZsNng2r\n\tDbANuA27Dc0N0A3VAAAAAAAAAgEAAAAAAAAALQAAAAAAAAAAAAAAAAAADdc=\n\t</data>\n\t<key>ANSIBrightGreenColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjM0NTA5ODAz\n\tOTIgMC40MzEzNzI1NDkgMC40NTg4MjM1Mjk0IDFPECYwLjI3NjcxOTkyNzggMC4zNTY2\n\tNTk1MzE2IDAuMzgyOTg0ODE3ABABgAKABtIUDRUWVU5TSUNDgAOABdIYDRkaV05TLmRh\n\tdGFPEQxIAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1TRlQA\n\tAAAASUVDIHNSR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAzZGVz\n\tYwAAAYQAAABsd3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZWgAA\n\tAiwAAAAUYlhZWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAAA0wA\n\tAACGdmlldwAAA9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAABAwAAAAkdGVjaAAABDAAAAAM\n\tclRSQwAABDwAAAgMZ1RSQwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAAAABDb3B5cmln\n\taHQgKGMpIDE5OTggSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAAEnNS\n\tR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAA\n\tAADzUQABAAAAARbMWFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1AAAD\n\tkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAAAAAA\n\tABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3dy5p\n\tZWMuY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tZGVzYwAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2Ug\n\tLSBzUkdCAAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIg\n\tc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJlZmVy\n\tZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAACxS\n\tZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD7cwABBMLAANcngAA\n\tAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAA\n\tAAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAt\n\tADIANwA7AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCkAKkA\n\trgCyALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4\n\tAT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB\n\t+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALr\n\tAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBME\n\tIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWG\n\tBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysH\n\tPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAkl\n\tCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1EL\n\taQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3e\n\tDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQ\n\tuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MTpBPF\n\tE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0X\n\tQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrs\n\tGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+Hukf\n\tEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNm\n\tI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfcKA0o\n\tPyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1B\n\tLXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy\n\t1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiM\n\tOMg5BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+\n\t4D8hP2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVV\n\tRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpM\n\tcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1Oq\n\tU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0Vb\n\tlVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OX\n\tY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2una/9s\n\tV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUo\n\tdYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+\n\twn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhp\n\tiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS\n\t45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc951k\n\tndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfgqFKo\n\txKk3qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQl\n\ttJy1E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XA\n\tcMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1\n\tzTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ\n\t8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf\n\t56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1\n\tUPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf//gATSHB0eH1okY2xh\n\tc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHiAhVk5TRGF0YVhOU09iamVjdNIc\n\tHSMkXE5TQ29sb3JTcGFjZaIlIVxOU0NvbG9yU3BhY2XSHB0nKFdOU0NvbG9yoichXxAP\n\tTlNLZXllZEFyY2hpdmVy0SssVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8ARQBQAF0AYwBw\n\tAIUAjAC2AN8A4QDjAOUA6gDwAPIA9AD5AQENTQ1PDVQNXw1oDXYNeg2BDYoNjw2cDZ8N\n\trA2xDbkNvA3ODdEN1gAAAAAAAAIBAAAAAAAAAC0AAAAAAAAAAAAAAAAAAA3Y\n\t</data>\n\t<key>ANSIBrightMagentaColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjQyMzUyOTQx\n\tMTggMC40NDMxMzcyNTQ5IDAuNzY4NjI3NDUxIDFPECcwLjM0NzkyMzc4NTQgMC4zNTEz\n\tNzE1NTY1IDAuNzE3OTE2NjY3NQAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k\n\tYXRhTxEMSAAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZU\n\tAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl\n\tc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoA\n\tAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANM\n\tAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAA\n\tDHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJp\n\tZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJz\n\tUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAA\n\tAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA\n\tA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAA\n\tAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cu\n\taWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl\n\tIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3Vy\n\tIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl\n\tcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAs\n\tUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A\n\tAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA\n\tAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgA\n\tLQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACp\n\tAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB\n\tOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHy\n\tAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC\n\t6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQT\n\tBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcF\n\thgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr\n\tBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJ\n\tJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtR\n\tC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN\n\t3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb\n\tELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT\n\txRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcd\n\tF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa\n\t7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p\n\tHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj\n\tZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgN\n\tKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwt\n\tQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKb\n\tMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4\n\tjDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6g\n\tPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJF\n\tVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq\n\tTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19T\n\tqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF\n\tW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Nj\n\tl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/\n\tbFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1\n\tKHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5i\n\tfsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI\n\taYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6\n\tkuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPed\n\tZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS\n\tqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660\n\tJbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1\n\twHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXM\n\ttc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls\n\t2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbn\n\tH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC\n\t9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE0hwdHh9aJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TS\n\tHB0jJFxOU0NvbG9yU3BhY2WiJSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8Q\n\tD05TS2V5ZWRBcmNoaXZlctErLFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMA\n\tcACFAIwAtgDgAOIA5ADmAOsA8QDzAPUA+gECDU4NUA1VDWANaQ13DXsNgg2LDZANnQ2g\n\tDa0Nsg26Db0Nzw3SDdcAAAAAAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAN2Q==\n\t</data>\n\t<key>ANSIBrightRedColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjc5NjA3ODQz\n\tMTQgMC4yOTQxMTc2NDcxIDAuMDg2Mjc0NTA5OCAxTxAoMC43NDE3NjI0NTkzIDAuMjEz\n\tMjUzMDA2MyAwLjA3MzUzMDQyODExABABgAKABtIUDRUWVU5TSUNDgAOABdIYDRkaV05T\n\tLmRhdGFPEQxIAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1T\n\tRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAz\n\tZGVzYwAAAYQAAABsd3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZ\n\tWgAAAiwAAAAUYlhZWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAA\n\tA0wAAACGdmlldwAAA9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAABAwAAAAkdGVjaAAABDAA\n\tAAAMclRSQwAABDwAAAgMZ1RSQwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAAAABDb3B5\n\tcmlnaHQgKGMpIDE5OTggSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAA\n\tEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAA\n\tAAAAAADzUQABAAAAARbMWFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1\n\tAAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAA\n\tAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3\n\tdy5pZWMuY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAAAAZGVzYwAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3Bh\n\tY2UgLSBzUkdCAAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xv\n\tdXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJl\n\tZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAA\n\tACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD7cwABBMLAANc\n\tngAAAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAA\n\tAAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMA\n\tKAAtADIANwA7AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCk\n\tAKkArgCyALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsB\n\tMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHp\n\tAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC\n\t4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQG\n\tBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcF\n\tdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZ\n\tBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJ\n\tEAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5\n\tC1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakN\n\tww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+\n\tEJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MT\n\tpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6\n\tFx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4a\n\txRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+\n\tHukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwoj\n\tOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfc\n\tKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNct\n\tDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJj\n\tMpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4\n\tUDiMOMg5BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5g\n\tPqA+4D8hP2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5F\n\tEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkvi\n\tTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNT\n\tX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1\n\tW0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBj\n\tQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2un\n\ta/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0\n\tzHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4B\n\tfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+I\n\tBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIR\n\tknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc\n\t951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfg\n\tqFKoxKk3qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCsziz\n\trrQltJy1E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796\n\tv/XAcMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bM\n\tNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo\n\t2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3m\n\tlucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q0\n\t9ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf//gATSHB0eH1ok\n\tY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHiAhVk5TRGF0YVhOU09iamVj\n\tdNIcHSMkXE5TQ29sb3JTcGFjZaIlIVxOU0NvbG9yU3BhY2XSHB0nKFdOU0NvbG9yoich\n\tXxAPTlNLZXllZEFyY2hpdmVy0SssVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8ARQBQAF0A\n\tYwBwAIUAjAC3AOIA5ADmAOgA7QDzAPUA9wD8AQQNUA1SDVcNYg1rDXkNfQ2EDY0Nkg2f\n\tDaINrw20DbwNvw3RDdQN2QAAAAAAAAIBAAAAAAAAAC0AAAAAAAAAAAAAAAAAAA3b\n\t</data>\n\t<key>ANSIBrightWhiteColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjk5MjE1Njg2\n\tMjcgMC45NjQ3MDU4ODI0IDAuODkwMTk2MDc4NCAxTxAmMC45ODk0MzQxMjMgMC45NTc5\n\tNDM4NTY3IDAuODY0MDU5NzQ2MwAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k\n\tYXRhTxEMSAAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZU\n\tAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl\n\tc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoA\n\tAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANM\n\tAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAA\n\tDHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJp\n\tZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJz\n\tUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAA\n\tAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA\n\tA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAA\n\tAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cu\n\taWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl\n\tIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3Vy\n\tIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl\n\tcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAs\n\tUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A\n\tAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA\n\tAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgA\n\tLQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACp\n\tAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB\n\tOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHy\n\tAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC\n\t6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQT\n\tBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcF\n\thgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr\n\tBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJ\n\tJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtR\n\tC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN\n\t3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb\n\tELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT\n\txRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcd\n\tF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa\n\t7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p\n\tHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj\n\tZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgN\n\tKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwt\n\tQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKb\n\tMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4\n\tjDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6g\n\tPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJF\n\tVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq\n\tTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19T\n\tqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF\n\tW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Nj\n\tl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/\n\tbFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1\n\tKHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5i\n\tfsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI\n\taYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6\n\tkuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPed\n\tZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS\n\tqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660\n\tJbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1\n\twHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXM\n\ttc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls\n\t2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbn\n\tH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC\n\t9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE0hwdHh9aJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TS\n\tHB0jJFxOU0NvbG9yU3BhY2WiJSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8Q\n\tD05TS2V5ZWRBcmNoaXZlctErLFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMA\n\tcACFAIwAtwDgAOIA5ADmAOsA8QDzAPUA+gECDU4NUA1VDWANaQ13DXsNgg2LDZANnQ2g\n\tDa0Nsg26Db0Nzw3SDdcAAAAAAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAN2Q==\n\t</data>\n\t<key>ANSIBrightYellowColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjM5NjA3ODQz\n\tMTQgMC40ODIzNTI5NDEyIDAuNTEzNzI1NDkwMiAxTxAnMC4zMjQzNjYxNTIzIDAuNDA3\n\tMTc2NjczNCAwLjQzODUwNTY0OTYAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu\n\tZGF0YU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNG\n\tVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNk\n\tZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFla\n\tAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAAD\n\tTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAA\n\tAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHly\n\taWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAAS\n\tc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAA\n\tAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUA\n\tAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAA\n\tAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3\n\tLmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFj\n\tZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91\n\tciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVm\n\tZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAA\n\tLFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1ye\n\tAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAA\n\tAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAo\n\tAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQA\n\tqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy\n\tATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB\n\t8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLg\n\tAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYE\n\tEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3\n\tBYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkH\n\tKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQ\n\tCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkL\n\tUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3D\n\tDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4Q\n\tmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOk\n\tE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoX\n\tHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrF\n\tGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e\n\t6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4\n\tI2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9wo\n\tDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0M\n\tLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMy\n\tmzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQ\n\tOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+\n\toD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUS\n\tRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JM\n\tKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1Nf\n\tU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVb\n\tRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GND\n\tY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr\n\t/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTM\n\tdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+\n\tYn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gE\n\tiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGS\n\tepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3\n\tnWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+Co\n\tUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOu\n\ttCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/\n\t9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1\n\tzLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZ\n\tbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW\n\t5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0\n\twvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//+ABNIcHR4fWiRj\n\tbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN0\n\t0hwdIyRcTlNDb2xvclNwYWNloiUhXE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFf\n\tEA9OU0tleWVkQXJjaGl2ZXLRKyxUcm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBj\n\tAHAAhQCMALcA4QDjAOUA5wDsAPIA9AD2APsBAw1PDVENVg1hDWoNeA18DYMNjA2RDZ4N\n\toQ2uDbMNuw2+DdAN0w3YAAAAAAAAAgEAAAAAAAAALQAAAAAAAAAAAAAAAAAADdo=\n\t</data>\n\t<key>ANSICyanColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjE2NDcwNTg4\n\tMjQgMC42MzEzNzI1NDkgMC41OTYwNzg0MzE0IDFPECcwLjE0Njc5NTM0NzMgMC41NzA4\n\tMjM2MDk4IDAuNTI1MDIyNzQ1MQAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k\n\tYXRhTxEMSAAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZU\n\tAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl\n\tc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoA\n\tAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANM\n\tAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAA\n\tDHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJp\n\tZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJz\n\tUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAA\n\tAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA\n\tA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAA\n\tAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cu\n\taWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl\n\tIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3Vy\n\tIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl\n\tcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAs\n\tUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A\n\tAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA\n\tAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgA\n\tLQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACp\n\tAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB\n\tOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHy\n\tAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC\n\t6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQT\n\tBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcF\n\thgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr\n\tBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJ\n\tJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtR\n\tC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN\n\t3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb\n\tELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT\n\txRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcd\n\tF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa\n\t7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p\n\tHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj\n\tZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgN\n\tKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwt\n\tQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKb\n\tMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4\n\tjDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6g\n\tPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJF\n\tVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq\n\tTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19T\n\tqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF\n\tW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Nj\n\tl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/\n\tbFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1\n\tKHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5i\n\tfsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI\n\taYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6\n\tkuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPed\n\tZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS\n\tqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660\n\tJbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1\n\twHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXM\n\ttc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls\n\t2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbn\n\tH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC\n\t9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE0hwdHh9aJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TS\n\tHB0jJFxOU0NvbG9yU3BhY2WiJSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8Q\n\tD05TS2V5ZWRBcmNoaXZlctErLFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMA\n\tcACFAIwAtgDgAOIA5ADmAOsA8QDzAPUA+gECDU4NUA1VDWANaQ13DXsNgg2LDZANnQ2g\n\tDa0Nsg26Db0Nzw3SDdcAAAAAAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAN2Q==\n\t</data>\n\t<key>ANSIGreenColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPEBQwLjUyMTU2ODYy\n\tNzUgMC42IDAgMU8QKDAuNDQ5Nzc0NTMzNSAwLjU0MTE1NDkyMTEgMC4wMjAyMDg3NTU1\n\tMQAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5kYXRhTxEMSAAADEhMaW5vAhAA\n\tAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAA\n\tAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHw\n\tAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAA\n\tFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1\n\tbWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMA\n\tAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xl\n\tdHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAA\n\tAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAA\n\tAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeF\n\tAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cu\n\taWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2\n\tMTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAA\n\tLklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25k\n\taXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcg\n\tQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAA\n\tAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENS\n\tVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQA\n\tWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADV\n\tANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4B\n\tdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJB\n\tAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MD\n\tTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSM\n\tBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYG\n\tFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfS\n\tB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J\n\t5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwq\n\tDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO\n\t0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGq\n\tEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U\n\t8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhl\n\tGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCoc\n\tUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBs\n\tIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNol\n\tCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQ\n\tKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4v\n\tJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSe\n\tNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6\n\tsjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDn\n\tQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH\n\twEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63\n\tTwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9W\n\tXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4a\n\tXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1m\n\tkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8e\n\tb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4\n\tbnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HN\n\tgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL\n\t/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0\n\tlp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNih\n\tR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axc\n\trNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4\n\tWbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRR\n\txM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrR\n\tPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c\n\t3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr\n\t++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH\n\t+lf65/t3/Af8mP0p/br+S/7c/23//4AE0hwdHh9aJGNsYXNzbmFtZVgkY2xhc3Nlc11O\n\tU011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TSHB0jJFxOU0NvbG9yU3BhY2Wi\n\tJSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8QD05TS2V5ZWRBcmNoaXZlctEr\n\tLFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMAcACFAIwAowDOANAA0gDUANkA\n\t3wDhAOMA6ADwDTwNPg1DDU4NVw1lDWkNcA15DX4Niw2ODZsNoA2oDasNvQ3ADcUAAAAA\n\tAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAANxw==\n\t</data>\n\t<key>ANSIMagentaColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjgyNzQ1MDk4\n\tMDQgMC4yMTE3NjQ3MDU5IDAuNTA5ODAzOTIxNiAxTxAnMC43NzczODkzNDc2IDAuMTA4\n\tMDI0NjEyMSAwLjQzNTE2NjM1ODkAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu\n\tZGF0YU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNG\n\tVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNk\n\tZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFla\n\tAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAAD\n\tTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAA\n\tAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHly\n\taWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAAS\n\tc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAA\n\tAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUA\n\tAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAA\n\tAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3\n\tLmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFj\n\tZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91\n\tciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVm\n\tZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAA\n\tLFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1ye\n\tAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAA\n\tAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAo\n\tAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQA\n\tqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy\n\tATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB\n\t8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLg\n\tAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYE\n\tEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3\n\tBYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkH\n\tKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQ\n\tCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkL\n\tUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3D\n\tDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4Q\n\tmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOk\n\tE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoX\n\tHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrF\n\tGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e\n\t6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4\n\tI2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9wo\n\tDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0M\n\tLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMy\n\tmzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQ\n\tOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+\n\toD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUS\n\tRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JM\n\tKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1Nf\n\tU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVb\n\tRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GND\n\tY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr\n\t/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTM\n\tdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+\n\tYn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gE\n\tiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGS\n\tepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3\n\tnWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+Co\n\tUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOu\n\ttCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/\n\t9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1\n\tzLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZ\n\tbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW\n\t5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0\n\twvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//+ABNIcHR4fWiRj\n\tbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN0\n\t0hwdIyRcTlNDb2xvclNwYWNloiUhXE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFf\n\tEA9OU0tleWVkQXJjaGl2ZXLRKyxUcm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBj\n\tAHAAhQCMALcA4QDjAOUA5wDsAPIA9AD2APsBAw1PDVENVg1hDWoNeA18DYMNjA2RDZ4N\n\toQ2uDbMNuw2+DdAN0w3YAAAAAAAAAgEAAAAAAAAALQAAAAAAAAAAAAAAAAAADdo=\n\t</data>\n\t<key>ANSIRedColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjg2Mjc0NTA5\n\tOCAwLjE5NjA3ODQzMTQgMC4xODQzMTM3MjU1IDFPECcwLjgxOTI2OTY1NzEgMC4xMDg0\n\tMDY2NjI5IDAuMTQxNDU3MTU1MwAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k\n\tYXRhTxEMSAAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZU\n\tAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl\n\tc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoA\n\tAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANM\n\tAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAA\n\tDHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJp\n\tZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJz\n\tUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAA\n\tAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA\n\tA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAA\n\tAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cu\n\taWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl\n\tIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3Vy\n\tIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl\n\tcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAs\n\tUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A\n\tAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA\n\tAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgA\n\tLQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACp\n\tAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB\n\tOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHy\n\tAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC\n\t6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQT\n\tBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcF\n\thgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr\n\tBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJ\n\tJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtR\n\tC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN\n\t3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb\n\tELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT\n\txRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcd\n\tF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa\n\t7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p\n\tHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj\n\tZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgN\n\tKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwt\n\tQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKb\n\tMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4\n\tjDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6g\n\tPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJF\n\tVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq\n\tTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19T\n\tqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF\n\tW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Nj\n\tl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/\n\tbFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1\n\tKHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5i\n\tfsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI\n\taYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6\n\tkuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPed\n\tZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS\n\tqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660\n\tJbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1\n\twHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXM\n\ttc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls\n\t2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbn\n\tH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC\n\t9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE0hwdHh9aJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TS\n\tHB0jJFxOU0NvbG9yU3BhY2WiJSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8Q\n\tD05TS2V5ZWRBcmNoaXZlctErLFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMA\n\tcACFAIwAtgDgAOIA5ADmAOsA8QDzAPUA+gECDU4NUA1VDWANaQ13DXsNgg2LDZANnQ2g\n\tDa0Nsg26Db0Nzw3SDdcAAAAAAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAN2Q==\n\t</data>\n\t<key>ANSIWhiteColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjkzMzMzMzMz\n\tMzMgMC45MDk4MDM5MjE2IDAuODM1Mjk0MTE3NiAxTxAnMC45MTYxMTA1NzUyIDAuODkw\n\tMDEyMzIzOSAwLjc5NzgxMDkxMjEAEAGAAoAG0hQNFRZVTlNJQ0OAA4AF0hgNGRpXTlMu\n\tZGF0YU8RDEgAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNG\n\tVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNk\n\tZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFla\n\tAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAAD\n\tTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAA\n\tAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHly\n\taWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAAS\n\tc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAA\n\tAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUA\n\tAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAA\n\tAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3\n\tLmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFj\n\tZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91\n\tciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVm\n\tZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAA\n\tLFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1ye\n\tAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAA\n\tAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAo\n\tAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQA\n\tqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy\n\tATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB\n\t8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLg\n\tAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYE\n\tEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3\n\tBYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkH\n\tKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQ\n\tCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkL\n\tUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3D\n\tDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4Q\n\tmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOk\n\tE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoX\n\tHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrF\n\tGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e\n\t6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4\n\tI2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9wo\n\tDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0M\n\tLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMy\n\tmzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQ\n\tOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+\n\toD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUS\n\tRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JM\n\tKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1Nf\n\tU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVb\n\tRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GND\n\tY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr\n\t/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTM\n\tdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+\n\tYn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gE\n\tiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGS\n\tepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3\n\tnWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+Co\n\tUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOu\n\ttCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/\n\t9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1\n\tzLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZ\n\tbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW\n\t5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0\n\twvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//+ABNIcHR4fWiRj\n\tbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMeICFWTlNEYXRhWE5TT2JqZWN0\n\t0hwdIyRcTlNDb2xvclNwYWNloiUhXE5TQ29sb3JTcGFjZdIcHScoV05TQ29sb3KiJyFf\n\tEA9OU0tleWVkQXJjaGl2ZXLRKyxUcm9vdIABAAgAEQAaACMALQAyADcAPwBFAFAAXQBj\n\tAHAAhQCMALcA4QDjAOUA5wDsAPIA9AD2APsBAw1PDVENVg1hDWoNeA18DYMNjA2RDZ4N\n\toQ2uDbMNuw2+DdAN0w3YAAAAAAAAAgEAAAAAAAAALQAAAAAAAAAAAAAAAAAADdo=\n\t</data>\n\t<key>ANSIYellowColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPEBwwLjcwOTgwMzky\n\tMTYgMC41MzcyNTQ5MDIgMCAxTxAoMC42NDc0NjQ3NTIyIDAuNDY3NTE0MjQ2NyAwLjAy\n\tMzQ4NDgxMTE5ABABgAKABtIUDRUWVU5TSUNDgAOABdIYDRkaV05TLmRhdGFPEQxIAAAM\n\tSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1TRlQAAAAASUVDIHNS\n\tR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAzZGVzYwAAAYQAAABs\n\td3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZWgAAAiwAAAAUYlhZ\n\tWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAA\n\tA9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAABAwAAAAkdGVjaAAABDAAAAAMclRSQwAABDwA\n\tAAgMZ1RSQwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAAAABDb3B5cmlnaHQgKGMpIDE5\n\tOTggSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAAEnNSR0IgSUVDNjE5\n\tNjYtMi4xAAAAAAAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAA\n\tARbMWFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAA\n\tAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAAAAAAABZJRUMgaHR0\n\tcDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAA\n\tAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAA\n\tAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBz\n\tUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJlZmVyZW5jZSBWaWV3\n\taW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAACxSZWZlcmVuY2Ug\n\tVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAA\n\tAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD7cwABBMLAANcngAAAAFYWVogAAAA\n\tAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAKPAAAAAnNp\n\tZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7AEAA\n\tRQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADB\n\tAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIB\n\tWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAId\n\tAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYD\n\tIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARV\n\tBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF\n\t1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeG\n\tB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJTwlkCXkJ\n\tjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1ELaQuAC5gLsAvI\n\tC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkO\n\tZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPURExEx\n\tEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkU\n\tahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfS\n\tF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4ob\n\tshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/\n\tH+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8k\n\tTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkG\n\tKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYtqy3hLhYu\n\tTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0YzfzO4\n\tM/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85\n\tvDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/i\n\tQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdG\n\tq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2T\n\tTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtV\n\tKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0VblVvlXDVchlzW\n\tXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OXY+tkQGSUZOll\n\tPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2una/9sV2yvbQhtYG25\n\tbhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUodYV14XY+dpt2\n\t+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+wn8jf4R/5YBH\n\tgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZif6K\n\tZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS45NNk7aUIJSK\n\tlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2f\n\ti5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqP\n\tqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2\n\tebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48Jf\n\twtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbP\n\tN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF\n\t3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf56noMui86Ubp\n\t0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe9m32+/eK\n\t+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf//gATSHB0eH1okY2xhc3NuYW1lWCRj\n\tbGFzc2VzXU5TTXV0YWJsZURhdGGjHiAhVk5TRGF0YVhOU09iamVjdNIcHSMkXE5TQ29s\n\tb3JTcGFjZaIlIVxOU0NvbG9yU3BhY2XSHB0nKFdOU0NvbG9yoichXxAPTlNLZXllZEFy\n\tY2hpdmVy0SssVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8ARQBQAF0AYwBwAIUAjACrANYA\n\t2ADaANwA4QDnAOkA6wDwAPgNRA1GDUsNVg1fDW0NcQ14DYENhg2TDZYNow2oDbANsw3F\n\tDcgNzQAAAAAAAAIBAAAAAAAAAC0AAAAAAAAAAAAAAAAAAA3P\n\t</data>\n\t<key>BackgroundBlur</key>\n\t<real>0.0</real>\n\t<key>BackgroundColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjk5MjE1Njky\n\tMjggMC45NjQ3MDU4ODQ1IDAuODkwMTk2MDg1IDFPECcwLjk4OTQzNDE4MjYgMC45NTc5\n\tNDM4NTY3IDAuODY0MDU5NzQ2MwAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k\n\tYXRhTxEMSAAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZU\n\tAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl\n\tc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoA\n\tAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANM\n\tAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAA\n\tDHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJp\n\tZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJz\n\tUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAA\n\tAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA\n\tA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAA\n\tAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cu\n\taWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl\n\tIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3Vy\n\tIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl\n\tcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAs\n\tUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A\n\tAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA\n\tAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgA\n\tLQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACp\n\tAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB\n\tOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHy\n\tAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC\n\t6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQT\n\tBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcF\n\thgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr\n\tBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJ\n\tJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtR\n\tC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN\n\t3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb\n\tELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT\n\txRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcd\n\tF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa\n\t7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p\n\tHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj\n\tZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgN\n\tKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwt\n\tQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKb\n\tMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4\n\tjDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6g\n\tPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJF\n\tVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq\n\tTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19T\n\tqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF\n\tW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Nj\n\tl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/\n\tbFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1\n\tKHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5i\n\tfsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI\n\taYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6\n\tkuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPed\n\tZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS\n\tqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660\n\tJbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1\n\twHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXM\n\ttc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls\n\t2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbn\n\tH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC\n\t9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE0hwdHh9aJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TS\n\tHB0jJFxOU0NvbG9yU3BhY2WiJSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8Q\n\tD05TS2V5ZWRBcmNoaXZlctErLFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMA\n\tcACFAIwAtgDgAOIA5ADmAOsA8QDzAPUA+gECDU4NUA1VDWANaQ13DXsNgg2LDZANnQ2g\n\tDa0Nsg26Db0Nzw3SDdcAAAAAAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAN2Q==\n\t</data>\n\t<key>BlinkText</key>\n\t<false/>\n\t<key>CommandString</key>\n\t<string></string>\n\t<key>CursorColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjU3NjQ3MDY3\n\tMzEgMC42MzEzNzI1MTE0IDAuNjMxMzcyNTcxIDFPECcwLjUwNTk5MjA1NDkgMC41NjQ4\n\tNTgzMTc0IDAuNTYzNjM2NTQxNAAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k\n\tYXRhTxEMSAAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZU\n\tAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl\n\tc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoA\n\tAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANM\n\tAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAA\n\tDHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJp\n\tZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJz\n\tUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAA\n\tAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA\n\tA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAA\n\tAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cu\n\taWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl\n\tIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3Vy\n\tIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl\n\tcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAs\n\tUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A\n\tAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA\n\tAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgA\n\tLQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACp\n\tAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB\n\tOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHy\n\tAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC\n\t6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQT\n\tBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcF\n\thgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr\n\tBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJ\n\tJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtR\n\tC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN\n\t3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb\n\tELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT\n\txRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcd\n\tF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa\n\t7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p\n\tHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj\n\tZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgN\n\tKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwt\n\tQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKb\n\tMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4\n\tjDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6g\n\tPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJF\n\tVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq\n\tTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19T\n\tqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF\n\tW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Nj\n\tl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/\n\tbFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1\n\tKHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5i\n\tfsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI\n\taYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6\n\tkuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPed\n\tZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS\n\tqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660\n\tJbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1\n\twHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXM\n\ttc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls\n\t2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbn\n\tH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC\n\t9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE0hwdHh9aJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TS\n\tHB0jJFxOU0NvbG9yU3BhY2WiJSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8Q\n\tD05TS2V5ZWRBcmNoaXZlctErLFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMA\n\tcACFAIwAtgDgAOIA5ADmAOsA8QDzAPUA+gECDU4NUA1VDWANaQ13DXsNgg2LDZANnQ2g\n\tDa0Nsg26Db0Nzw3SDdcAAAAAAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAN2Q==\n\t</data>\n\t<key>Font</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGGBlYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKQHCBESVSRudWxs1AkKCwwNDg8QViRjbGFzc1ZOU05hbWVWTlNTaXplWE5TZkZs\n\tYWdzgAOAAiNAJgAAAAAAABAQVk1vbmFjb9ITFBUWWiRjbGFzc25hbWVYJGNsYXNzZXNW\n\tTlNGb250ohUXWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hpdmVy0RobVHJvb3SAAQgRGiMt\n\tMjc8QktSWWBpa212eH+Ej5ifoqu9wMUAAAAAAAABAQAAAAAAAAAcAAAAAAAAAAAAAAAA\n\tAAAAxw==\n\t</data>\n\t<key>FontAntialias</key>\n\t<true/>\n\t<key>FontWidthSpacing</key>\n\t<real>1.004032258064516</real>\n\t<key>ProfileCurrentVersion</key>\n\t<real>2.02</real>\n\t<key>RunCommandAsShell</key>\n\t<true/>\n\t<key>SelectionColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjAyNzQ1MTAw\n\tNjcgMC4yMTE3NjQ3MjMxIDAuMjU4ODIzNDg0MiAxTxAoMC4wMzkzODA3NDc4MiAwLjE2\n\tMDExNjQ2MzkgMC4xOTgzMzI3MTIxABABgAKABtIUDRUWVU5TSUNDgAOABdIYDRkaV05T\n\tLmRhdGFPEQxIAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1T\n\tRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAz\n\tZGVzYwAAAYQAAABsd3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZ\n\tWgAAAiwAAAAUYlhZWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAA\n\tA0wAAACGdmlldwAAA9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAABAwAAAAkdGVjaAAABDAA\n\tAAAMclRSQwAABDwAAAgMZ1RSQwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAAAABDb3B5\n\tcmlnaHQgKGMpIDE5OTggSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAA\n\tEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAA\n\tAAAAAADzUQABAAAAARbMWFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1\n\tAAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAA\n\tAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3\n\tdy5pZWMuY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAAAAZGVzYwAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3Bh\n\tY2UgLSBzUkdCAAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xv\n\tdXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJl\n\tZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAA\n\tACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD7cwABBMLAANc\n\tngAAAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAA\n\tAAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMA\n\tKAAtADIANwA7AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCk\n\tAKkArgCyALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsB\n\tMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHp\n\tAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC\n\t4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQG\n\tBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcF\n\tdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZ\n\tBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJ\n\tEAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5\n\tC1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakN\n\tww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+\n\tEJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MT\n\tpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6\n\tFx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4a\n\txRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+\n\tHukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwoj\n\tOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfc\n\tKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNct\n\tDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJj\n\tMpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4\n\tUDiMOMg5BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5g\n\tPqA+4D8hP2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5F\n\tEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkvi\n\tTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNT\n\tX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1\n\tW0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBj\n\tQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2un\n\ta/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0\n\tzHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4B\n\tfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+I\n\tBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIR\n\tknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc\n\t951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfg\n\tqFKoxKk3qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCsziz\n\trrQltJy1E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796\n\tv/XAcMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bM\n\tNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo\n\t2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3m\n\tlucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q0\n\t9ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf//gATSHB0eH1ok\n\tY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHiAhVk5TRGF0YVhOU09iamVj\n\tdNIcHSMkXE5TQ29sb3JTcGFjZaIlIVxOU0NvbG9yU3BhY2XSHB0nKFdOU0NvbG9yoich\n\tXxAPTlNLZXllZEFyY2hpdmVy0SssVHJvb3SAAQAIABEAGgAjAC0AMgA3AD8ARQBQAF0A\n\tYwBwAIUAjAC3AOIA5ADmAOgA7QDzAPUA9wD8AQQNUA1SDVcNYg1rDXkNfQ2EDY0Nkg2f\n\tDaINrw20DbwNvw3RDdQN2QAAAAAAAAIBAAAAAAAAAC0AAAAAAAAAAAAAAAAAAA3b\n\t</data>\n\t<key>ShowCommandKeyInTitle</key>\n\t<false/>\n\t<key>ShowDimensionsInTitle</key>\n\t<false/>\n\t<key>ShowShellCommandInTitle</key>\n\t<false/>\n\t<key>TerminalType</key>\n\t<string>xterm-256color</string>\n\t<key>TextBoldColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECgwLjM0NTA5ODA3\n\tODMgMC40MzEzNzI1NTMxIDAuNDU4ODIzNTAyMSAxTxAmMC4yNzY3MTk5Mjc4IDAuMzU2\n\tNjU5NTMxNiAwLjM4Mjk4NDgxNwAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k\n\tYXRhTxEMSAAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZU\n\tAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl\n\tc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoA\n\tAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANM\n\tAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAA\n\tDHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJp\n\tZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJz\n\tUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAA\n\tAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA\n\tA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAA\n\tAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cu\n\taWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl\n\tIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3Vy\n\tIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl\n\tcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAs\n\tUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A\n\tAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA\n\tAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgA\n\tLQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACp\n\tAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB\n\tOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHy\n\tAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC\n\t6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQT\n\tBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcF\n\thgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr\n\tBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJ\n\tJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtR\n\tC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN\n\t3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb\n\tELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT\n\txRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcd\n\tF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa\n\t7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p\n\tHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj\n\tZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgN\n\tKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwt\n\tQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKb\n\tMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4\n\tjDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6g\n\tPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJF\n\tVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq\n\tTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19T\n\tqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF\n\tW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Nj\n\tl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/\n\tbFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1\n\tKHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5i\n\tfsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI\n\taYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6\n\tkuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPed\n\tZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS\n\tqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660\n\tJbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1\n\twHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXM\n\ttc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls\n\t2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbn\n\tH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC\n\t9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE0hwdHh9aJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TS\n\tHB0jJFxOU0NvbG9yU3BhY2WiJSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8Q\n\tD05TS2V5ZWRBcmNoaXZlctErLFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMA\n\tcACFAIwAtwDgAOIA5ADmAOsA8QDzAPUA+gECDU4NUA1VDWANaQ13DXsNgg2LDZANnQ2g\n\tDa0Nsg26Db0Nzw3SDdcAAAAAAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAN2Q==\n\t</data>\n\t<key>TextColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGKSpYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKcHCBMXGyImVSRudWxs1QkKCwwNDg8QERJcTlNDb21wb25lbnRzVU5TUkdCXE5T\n\tQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29sb3JTcGFjZVYkY2xhc3NPECcwLjU3NjQ3MDY3\n\tMzEgMC42MzEzNzI1MTE0IDAuNjMxMzcyNTcxIDFPECcwLjUwNTk5MjA1NDkgMC41NjQ4\n\tNTgzMTc0IDAuNTYzNjM2NTQxNAAQAYACgAbSFA0VFlVOU0lDQ4ADgAXSGA0ZGldOUy5k\n\tYXRhTxEMSAAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZU\n\tAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl\n\tc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoA\n\tAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANM\n\tAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAA\n\tDHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJp\n\tZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJz\n\tUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAA\n\tAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAA\n\tA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAA\n\tAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cu\n\taWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\tAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl\n\tIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3Vy\n\tIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZl\n\tcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAs\n\tUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA\n\tAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4A\n\tAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA\n\tAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgA\n\tLQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACp\n\tAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB\n\tOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHy\n\tAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC\n\t6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQT\n\tBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcF\n\thgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcr\n\tBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJ\n\tJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtR\n\tC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN\n\t3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCb\n\tELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT\n\txRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcd\n\tF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa\n\t7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p\n\tHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj\n\tZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgN\n\tKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwt\n\tQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKb\n\tMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4\n\tjDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6g\n\tPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJF\n\tVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq\n\tTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19T\n\tqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtF\n\tW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Nj\n\tl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/\n\tbFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1\n\tKHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5i\n\tfsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI\n\taYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6\n\tkuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPed\n\tZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhS\n\tqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660\n\tJbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1\n\twHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXM\n\ttc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls\n\t2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbn\n\tH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC\n\t9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AE0hwdHh9aJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox4gIVZOU0RhdGFYTlNPYmplY3TS\n\tHB0jJFxOU0NvbG9yU3BhY2WiJSFcTlNDb2xvclNwYWNl0hwdJyhXTlNDb2xvcqInIV8Q\n\tD05TS2V5ZWRBcmNoaXZlctErLFRyb290gAEACAARABoAIwAtADIANwA/AEUAUABdAGMA\n\tcACFAIwAtgDgAOIA5ADmAOsA8QDzAPUA+gECDU4NUA1VDWANaQ13DXsNgg2LDZANnQ2g\n\tDa0Nsg26Db0Nzw3SDdcAAAAAAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAAAAAN2Q==\n\t</data>\n\t<key>UseBoldFonts</key>\n\t<false/>\n\t<key>UseBrightBold</key>\n\t<true/>\n\t<key>blackColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg7JNIT2DkvUjPoO+F0s+AYY=\n\t</data>\n\t<key>blueColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmgyqcAj6DtOHsPoO+RUg/AYY=\n\t</data>\n\t<key>brightBlackColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg+ZzgjyDs44BPoNahyM+AYY=\n\t</data>\n\t<key>brightBlueColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg7yT4T6DEXcCP4POUAQ/AYY=\n\t</data>\n\t<key>brightCyanColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg7CIAT+Dj5oQP4N8ShA/AYY=\n\t</data>\n\t<key>brightGreenColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmgzyujT6DFZy2PoOYFsQ+AYY=\n\t</data>\n\t<key>brightMagentaColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmgxMjsj6D+uazPoNkyTc/AYY=\n\t</data>\n\t<key>brightRedColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmgyfkPT+D/15aPoMgl5Y9AYY=\n\t</data>\n\t<key>brightWhiteColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg49LfT+D0Dt1P4MGM10/AYY=\n\t</data>\n\t<key>brightYellowColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg1MTpj6DeHnQPoPQg+A+AYY=\n\t</data>\n\t<key>columnCount</key>\n\t<integer>80</integer>\n\t<key>cyanColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg4VRFj6DfyESP4PkZwY/AYY=\n\t</data>\n\t<key>greenColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg9lI5j6DIYkKP4PVjKU8AYY=\n\t</data>\n\t<key>magentaColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg/4CRz+DBTzdPYMgzt4+AYY=\n\t</data>\n\t<key>name</key>\n\t<string>Solarized Light</string>\n\t<key>redColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg6i7UT+DUATePYMl2hA+AYY=\n\t</data>\n\t<key>rowCount</key>\n\t<integer>24</integer>\n\t<key>shellExitAction</key>\n\t<integer>1</integer>\n\t<key>type</key>\n\t<string>Window Settings</string>\n\t<key>whiteColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmgzqGaj+D2tdjP4NYPUw/AYY=\n\t</data>\n\t<key>yellowColour</key>\n\t<data>\n\tBAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU0NvbG9yAISECE5TT2JqZWN0AIWEAWMBhARm\n\tZmZmg0DAJT+DB17vPoM4Y8A8AYY=\n\t</data>\n</dict>\n</plist>\n"
  },
  {
    "path": "themes/Tomorrow Night Bright.terminal",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>ANSIBlueColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECYw\n\tLjU1Njg2Mjc3MTUgMC43MTc2NDcwNzU3IDAuODc0NTA5ODcxABACgALSEBESE1okY2xh\n\tc3NuYW1lWCRjbGFzc2VzV05TQ29sb3KiEhRYTlNPYmplY3RfEA9OU0tleWVkQXJjaGl2\n\tZXLRFxhUcm9vdIABCBEaIy0yNztBSE5bYouNj5SfqLCzvM7R1gAAAAAAAAEBAAAAAAAA\n\tABkAAAAAAAAAAAAAAAAAAADY\n\t</data>\n\t<key>ANSIBrightBlackColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NGMCAw\n\tIDAAEAKAAtIQERITWiRjbGFzc25hbWVYJGNsYXNzZXNXTlNDb2xvcqISFFhOU09iamVj\n\tdF8QD05TS2V5ZWRBcmNoaXZlctEXGFRyb290gAEIERojLTI3O0FITltiaWttcn2GjpGa\n\trK+0AAAAAAAAAQEAAAAAAAAAGQAAAAAAAAAAAAAAAAAAALY=\n\t</data>\n\t<key>ANSIBrightBlueColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECYw\n\tLjU2MDc4NDMzOTkgMC43MjE1Njg2NDQgMC44NjY2NjY3MzQyABACgALSEBESE1okY2xh\n\tc3NuYW1lWCRjbGFzc2VzV05TQ29sb3KiEhRYTlNPYmplY3RfEA9OU0tleWVkQXJjaGl2\n\tZXLRFxhUcm9vdIABCBEaIy0yNztBSE5bYouNj5SfqLCzvM7R1gAAAAAAAAEBAAAAAAAA\n\tABkAAAAAAAAAAAAAAAAAAADY\n\t</data>\n\t<key>ANSIBrightCyanColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECYw\n\tLjUyMTU2ODY1NiAwLjc5MjE1NjkzNDcgMC43NDkwMTk2MjI4ABACgALSEBESE1okY2xh\n\tc3NuYW1lWCRjbGFzc2VzV05TQ29sb3KiEhRYTlNPYmplY3RfEA9OU0tleWVkQXJjaGl2\n\tZXLRFxhUcm9vdIABCBEaIy0yNztBSE5bYouNj5SfqLCzvM7R1gAAAAAAAAEBAAAAAAAA\n\tABkAAAAAAAAAAAAAAAAAAADY\n\t</data>\n\t<key>ANSIBrightGreenColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECYw\n\tLjcyOTQxMTc4MDggMC43Njg2Mjc1MjQ0IDAuMzkyMTU2ODk5ABACgALSEBESE1okY2xh\n\tc3NuYW1lWCRjbGFzc2VzV05TQ29sb3KiEhRYTlNPYmplY3RfEA9OU0tleWVkQXJjaGl2\n\tZXLRFxhUcm9vdIABCBEaIy0yNztBSE5bYouNj5SfqLCzvM7R1gAAAAAAAAEBAAAAAAAA\n\tABkAAAAAAAAAAAAAAAAAAADY\n\t</data>\n\t<key>ANSIBrightMagentaColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECcw\n\tLjgwMzkyMTYzOTkgMC42Nzg0MzEzOTE3IDAuODY2NjY2NzM0MgAQAoAC0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>ANSIBrightRedColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECcw\n\tLjg1ODgyMzU5NzQgMC40MDM5MjE2MDQyIDAuNDA3ODQzMTcyNgAQAoAC0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>ANSIBrightWhiteColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NGMSAx\n\tIDEAEAKAAtIQERITWiRjbGFzc25hbWVYJGNsYXNzZXNXTlNDb2xvcqISFFhOU09iamVj\n\tdF8QD05TS2V5ZWRBcmNoaXZlctEXGFRyb290gAEIERojLTI3O0FITltiaWttcn2GjpGa\n\trK+0AAAAAAAAAQEAAAAAAAAAGQAAAAAAAAAAAAAAAAAAALY=\n\t</data>\n\t<key>ANSIBrightYellowColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECcw\n\tLjkxNzY0NzEyMzMgMC44MDAwMDAwNzE1IDAuNDExNzY0NzQwOQAQAoAC0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>ANSICyanColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECcw\n\tLjUxMzcyNTUxOTIgMC43OTIxNTY5MzQ3IDAuNzQ5MDE5NjIyOAAQAoAC0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>ANSIGreenColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECcw\n\tLjcyOTQxMTc4MDggMC43NzI1NDkwOTI4IDAuMzY0NzA1ODkwNAAQAoAC0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>ANSIMagentaColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECcw\n\tLjgwNzg0MzIwODMgMC42NzQ1MDk4MjMzIDAuODcwNTg4MzAyNgAQAoAC0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>ANSIRedColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECcw\n\tLjg2NjY2NjczNDIgMC40MDAwMDAwMzU4IDAuNDAwMDAwMDM1OAAQAoAC0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>ANSIWhiteColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NGMSAx\n\tIDEAEAKAAtIQERITWiRjbGFzc25hbWVYJGNsYXNzZXNXTlNDb2xvcqISFFhOU09iamVj\n\tdF8QD05TS2V5ZWRBcmNoaXZlctEXGFRyb290gAEIERojLTI3O0FITltiaWttcn2GjpGa\n\trK+0AAAAAAAAAQEAAAAAAAAAGQAAAAAAAAAAAAAAAAAAALY=\n\t</data>\n\t<key>ANSIYellowColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECcw\n\tLjkyMTU2ODY5MTcgMC44MDM5MjE2Mzk5IDAuMzgwMzkyMTkzOAAQAoAC0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>BackgroundAlphaInactive</key>\n\t<real>0.80000000000000004</real>\n\t<key>BackgroundBlurInactive</key>\n\t<real>0.14999999999999999</real>\n\t<key>BackgroundColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NLMCAw\n\tIDAgMC44NQAQAoAC0hAREhNaJGNsYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5T\n\tT2JqZWN0XxAPTlNLZXllZEFyY2hpdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2JucHJ3\n\tgouTlp+xtLkAAAAAAAABAQAAAAAAAAAZAAAAAAAAAAAAAAAAAAAAuw==\n\t</data>\n\t<key>BackgroundSettingsForInactiveWindows</key>\n\t<false/>\n\t<key>Bell</key>\n\t<false/>\n\t<key>CursorBlink</key>\n\t<true/>\n\t<key>CursorColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECcw\n\tLjkzMzMzMzM5NjkgMC45MzMzMzMzOTY5IDAuOTMzMzMzMzk2OQAQAoAC0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>CursorType</key>\n\t<integer>2</integer>\n\t<key>Font</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGGBlYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKQHCBESVSRudWxs1AkKCwwNDg8QVk5TU2l6ZVhOU2ZGbGFnc1ZOU05hbWVWJGNs\n\tYXNzI0AsAAAAAAAAEBCAAoADXU1lbmxvLVJlZ3VsYXLSExQVFlokY2xhc3NuYW1lWCRj\n\tbGFzc2VzVk5TRm9udKIVF1hOU09iamVjdF8QD05TS2V5ZWRBcmNoaXZlctEaG1Ryb290\n\tgAEIERojLTI3PEJLUltiaXJ0dniGi5afpqmyxMfMAAAAAAAAAQEAAAAAAAAAHAAAAAAA\n\tAAAAAAAAAAAAAM4=\n\t</data>\n\t<key>FontAntialias</key>\n\t<true/>\n\t<key>ProfileCurrentVersion</key>\n\t<real>2.02</real>\n\t<key>SelectionColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECcw\n\tLjMyOTQxMTc3NDkgMC4zMjk0MTE3NzQ5IDAuMzI5NDExNzc0OQAQAoAC0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>TextBoldColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECcw\n\tLjkzMzMzMzM5NjkgMC45MzMzMzMzOTY5IDAuOTMzMzMzMzk2OQAQAoAC0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>TextColor</key>\n\t<data>\n\tYnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3AS\n\tAAGGoKMHCA9VJG51bGzTCQoLDA0OVU5TUkdCXE5TQ29sb3JTcGFjZVYkY2xhc3NPECcw\n\tLjkzMzMzMzM5NjkgMC45MzMzMzMzOTY5IDAuOTMzMzMzMzk2OQAQAoAC0hAREhNaJGNs\n\tYXNzbmFtZVgkY2xhc3Nlc1dOU0NvbG9yohIUWE5TT2JqZWN0XxAPTlNLZXllZEFyY2hp\n\tdmVy0RcYVHJvb3SAAQgRGiMtMjc7QUhOW2KMjpCVoKmxtL3P0tcAAAAAAAABAQAAAAAA\n\tAAAZAAAAAAAAAAAAAAAAAAAA2Q==\n\t</data>\n\t<key>UseBoldFonts</key>\n\t<false/>\n\t<key>UseBrightBold</key>\n\t<true/>\n\t<key>name</key>\n\t<string>Tomorrow Night Bright</string>\n\t<key>type</key>\n\t<string>Window Settings</string>\n</dict>\n</plist>\n"
  }
]