updated for version 7.0e04
diff --git a/runtime/autoload/htmlcomplete.vim b/runtime/autoload/htmlcomplete.vim
index e307698..2484268 100644
--- a/runtime/autoload/htmlcomplete.vim
+++ b/runtime/autoload/htmlcomplete.vim
@@ -1,7 +1,7 @@
 " Vim completion script
-" Language:	HTML (XHTML 1.0 Strict by default)
+" Language:	HTML and XHTML
 " Maintainer:	Mikolaj Machowski ( mikmach AT wp DOT pl )
-" Last Change:	2006 Apr 17
+" Last Change:	2006 Apr 20
 
 function! htmlcomplete#CompleteTags(findstart, base)
   if a:findstart
@@ -159,12 +159,12 @@
 	if exists("b:entitiescompl")
 		unlet! b:entitiescompl
 
-		if !exists("g:html_omni")
+		if !exists("b:html_omni")
 			"runtime! autoload/xml/xhtml10s.vim
 			call htmlcomplete#LoadData()
 		endif
 
-	    let entities =  g:html_omni['vimxmlentities']
+	    let entities =  b:html_omni['vimxmlentities']
 
 		if len(a:base) == 1
 			for m in entities
@@ -462,8 +462,8 @@
 					endfor
 				endif
 			else
-				if has_key(g:html_omni, tag) && has_key(g:html_omni[tag][1], attrname)
-					let values = g:html_omni[tag][1][attrname]
+				if has_key(b:html_omni, tag) && has_key(b:html_omni[tag][1], attrname)
+					let values = b:html_omni[tag][1][attrname]
 				else
 					return []
 				endif
@@ -503,13 +503,13 @@
 		let sbase = matchstr(context, '.*\ze\s.*')
 
 		" Load data {{{
-		if !exists("g:html_omni_gen")
+		if !exists("b:html_omni_gen")
 			call htmlcomplete#LoadData()
 		endif
 		" }}}
 		
-		if has_key(g:html_omni, tag)
-			let attrs = keys(g:html_omni[tag][1])
+		if has_key(b:html_omni, tag)
+			let attrs = keys(b:html_omni[tag][1])
 		else
 			return []
 		endif
@@ -522,13 +522,13 @@
 			endif
 		endfor
 		let menu = res + res2
-		if has_key(g:html_omni, 'vimxmlattrinfo')
+		if has_key(b:html_omni, 'vimxmlattrinfo')
 			let final_menu = []
 			for i in range(len(menu))
 				let item = menu[i]
-				if has_key(g:html_omni['vimxmlattrinfo'], item)
-					let m_menu = g:html_omni['vimxmlattrinfo'][item][0]
-					let m_info = g:html_omni['vimxmlattrinfo'][item][1]
+				if has_key(b:html_omni['vimxmlattrinfo'], item)
+					let m_menu = b:html_omni['vimxmlattrinfo'][item][0]
+					let m_info = b:html_omni['vimxmlattrinfo'][item][1]
 					if m_menu !~ 'Bool'
 						let item .= '="'
 					endif
@@ -558,7 +558,7 @@
 	endif
 	" }}}
 	" Load data {{{
-	if !exists("g:html_omni")
+	if !exists("b:html_omni")
 		"runtime! autoload/xml/xhtml10s.vim
 		call htmlcomplete#LoadData()
 	endif
@@ -568,16 +568,16 @@
 	let opentag = tolower(xmlcomplete#GetLastOpenTag("b:unaryTagsStack"))
 	" MM: TODO: GLOT works always the same but with some weird situation it
 	" behaves as intended in HTML but screws in PHP
-	if opentag == '' || &ft == 'php' && !has_key(g:html_omni, opentag)
+	if opentag == '' || &ft == 'php' && !has_key(b:html_omni, opentag)
 		" Hack for sometimes failing GetLastOpenTag.
 		" As far as I tested fail isn't GLOT fault but problem
 		" of invalid document - not properly closed tags and other mish-mash.
 		" Also when document is empty. Return list of *all* tags.
-	    let tags = keys(g:html_omni)
+	    let tags = keys(b:html_omni)
 		call filter(tags, 'v:val !~ "^vimxml"')
 	else
-		if has_key(g:html_omni, opentag)
-			let tags = g:html_omni[opentag][0]
+		if has_key(b:html_omni, opentag)
+			let tags = b:html_omni[opentag][0]
 		else
 			return []
 		endif
@@ -596,17 +596,20 @@
 		endif
 	endfor
 	let menu = res + res2
-	if has_key(g:html_omni, 'vimxmltaginfo')
+	if has_key(b:html_omni, 'vimxmltaginfo')
 		let final_menu = []
 		for i in range(len(menu))
 			let item = menu[i]
-			if has_key(g:html_omni['vimxmltaginfo'], item)
-				let m_menu = g:html_omni['vimxmltaginfo'][item][0]
-				let m_info = g:html_omni['vimxmltaginfo'][item][1]
+			if has_key(b:html_omni['vimxmltaginfo'], item)
+				let m_menu = b:html_omni['vimxmltaginfo'][item][0]
+				let m_info = b:html_omni['vimxmltaginfo'][item][1]
 			else
 				let m_menu = ''
 				let m_info = ''
 			endif
+			if &ft == 'html' && exists("uppercase_tag") && uppercase_tag == 1
+				let item = toupper(item)
+			endif
 			let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
 		endfor
 	else
@@ -619,25 +622,39 @@
 endfunction
 
 function! htmlcomplete#LoadData() " {{{
-	if !exists("g:html_omni_flavor")
-		let g:html_omni_flavor = 'xhtml10s'
+	if !exists("b:html_omni_flavor")
+		if &ft == 'html'
+			let b:html_omni_flavor = 'html401t'
+		else
+			let b:html_omni_flavor = 'xhtml10s'
+		endif
 	endif
-	exe 'runtime! autoload/xml/'.g:html_omni_flavor.'.vim'
-	" This one is necessary because we don't know if
-	" g:html_omni_flavor file exists and was sourced
+	" With that if we still have bloated memory but create new buffer
+	" variables only by linking to existing g:variable, not sourcing whole
+	" file.
+	if exists('g:xmldata_'.b:html_omni_flavor)
+		exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor
+	else
+		exe 'runtime! autoload/xml/'.b:html_omni_flavor.'.vim'
+		exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor
+	endif
+	" This repetition is necessary because we don't know if
+	" b:html_omni_flavor file exists and was sourced
 	" Proper checking for files would require iterating through 'rtp'
 	" and could introduce OS dependent mess.
-	if !exists("g:xmldata_".g:html_omni_flavor)
-		let g:html_omni_flavor = 'xhtml10s'
-		runtime! autoload/xml/xhtml10s.vim
+	if !exists("g:xmldata_".b:html_omni_flavor)
+		if &ft == 'html'
+			let b:html_omni_flavor = 'html401t'
+		else
+			let b:html_omni_flavor = 'xhtml10s'
+		endif
 	endif
-
-	exe 'let g:html_omni = g:xmldata_'.g:html_omni_flavor
-
-	" Free some memory
-	exe 'unlet! g:xmldata_'.g:html_omni_flavor
-
-	"call htmlcomplete#LoadData()
+	if exists('g:xmldata_'.b:html_omni_flavor)
+		exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor
+	else
+		exe 'runtime! autoload/xml/'.b:html_omni_flavor.'.vim'
+		exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor
+	endif
 endfunction
 " }}}
 " vim:set foldmethod=marker:
diff --git a/runtime/autoload/pythoncomplete.vim b/runtime/autoload/pythoncomplete.vim
index 8365d78..ee217ed 100644
--- a/runtime/autoload/pythoncomplete.vim
+++ b/runtime/autoload/pythoncomplete.vim
Binary files differ
diff --git a/runtime/autoload/rubycomplete.vim b/runtime/autoload/rubycomplete.vim
index 8def228..0a745b9 100644
--- a/runtime/autoload/rubycomplete.vim
+++ b/runtime/autoload/rubycomplete.vim
@@ -1,6 +1,6 @@
 " Vim completion script
 " Language:				Ruby
-" Maintainer:			Mark Guzman ( segfault AT hasno DOT info )
+" Maintainer:			Mark Guzman <segfault@hasno.info>
 " Info:					$Id$
 " URL:					http://vim-ruby.rubyforge.org
 " Anon CVS:				See above site
@@ -11,16 +11,64 @@
 " ----------------------------------------------------------------------------
 
 if !has('ruby')
+    echohl ErrorMsg
     echo "Error: Required vim compiled with +ruby"
+    echohl None
     finish
 endif
 
 if version < 700
+    echohl ErrorMsg
     echo "Error: Required vim >= 7.0"
+    echohl None
     finish
 endif
 
-func! GetRubyVarType(v)
+
+function! GetBufferRubyModule(name)
+    let [snum,enum] = GetBufferRubyEntity(a:name, "module")
+    return snum . '..' . enum
+endfunction
+
+function! GetBufferRubyClass(name)
+    let [snum,enum] = GetBufferRubyEntity(a:name, "class")
+    return snum . '..' . enum
+endfunction
+
+function! GetBufferRubySingletonMethods(name)
+endfunction
+
+function! GetBufferRubyEntity( name, type )
+    let stopline = 1
+    let crex = '^\s*' . a:type . '\s*' . a:name . '\s*\(<\s*.*\s*\)\?\n*\(\(\s\|#\).*\n*\)*\n*\s*end$'
+    let [lnum,lcol] = searchpos( crex, 'nbw')
+    if lnum == 0 && lcol == 0
+        return [0,0]
+    endif
+
+    let [enum,ecol] = searchpos( crex, 'nebw')
+    if lnum > enum
+        let realdef = getline( lnum )
+        let crexb = '^' . realdef . '\n*\(\(\s\|#\).*\n*\)*\n*\s*end$'
+        let [enum,ecol] = searchpos( crexb, 'necw' )
+    endif
+    " we found a the class def
+    return [lnum,enum]
+endfunction
+
+function! IsInClassDef()
+    let [snum,enum] = GetBufferRubyEntity( '.*', "class" )
+    let ret = 'nil'
+    let pos = line('.')
+
+    if snum < pos && pos < enum 
+        let ret = snum . '..' . enum
+    endif
+
+    return ret
+endfunction
+
+function! GetRubyVarType(v)
 	let stopline = 1
 	let vtp = ''
 	let pos = getpos('.')
@@ -32,9 +80,9 @@
 		return vtp
 	endif
 	call setpos('.',pos)
-	let [lnum,lcol] = searchpos(''.a:v.'\>\s*[+\-*/]*=\s*\([^ \t]\+.\(now\|new\|open\|get_instance\)\>\|[\[{"'']\)','nb',stopline)
+    let [lnum,lcol] = searchpos(''.a:v.'\>\s*[+\-*/]*=\s*\([^ \t]\+.\(now\|new\|open\|get_instance\)\>\|[\[{"''/]\|%r{\)','nb',stopline)
 	if lnum != 0 && lcol != 0
-		let str = matchstr(getline(lnum),'=\s*\([^ \t]\+.\(now\|new\|open\|get_instance\)\>\|[\[{"'']\)',lcol)
+        let str = matchstr(getline(lnum),'=\s*\([^ \t]\+.\(now\|new\|open\|get_instance\)\>\|[\[{"''/]\|%r{\)',lcol)
 		let str = substitute(str,'^=\s*','','')
 		call setpos('.',pos)
 		if str == '"' || str == ''''
@@ -43,6 +91,8 @@
 			return 'Array'
 		elseif str == '{'
 			return 'Hash'
+        elseif str == '/' || str == '%r{'
+            return 'Regexp'
 		elseif strlen(str) > 4
             let l = stridx(str,'.')
 			return str[0:l-1]
@@ -51,7 +101,7 @@
 	endif
 	call setpos('.',pos)
     return ''
-endf
+endfunction
 
 function! rubycomplete#Complete(findstart, base)
      "findstart = 1 when we need to get the text length
@@ -74,14 +124,20 @@
         return idx
     "findstart = 0 when we need to return the list of completions
     else
+        let g:rubycomplete_completions = [] 
         execute "ruby get_completions('" . a:base . "')"
-        return g:rbcomplete_completions
+        return g:rubycomplete_completions
     endif
 endfunction
 
 
 function! s:DefRuby()
 ruby << RUBYEOF
+RailsWords = [
+      "has_many", "has_one",
+      "belongs_to",
+    ]
+
 ReservedWords = [
       "BEGIN", "END",
       "alias", "and",
@@ -106,188 +162,290 @@
       "<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", ">>",
       "[]", "[]=", "^", ]
 
-def identify_type(var)
-    @buf = VIM::Buffer.current
-    enum = @buf.line_number
-    snum = (enum-10).abs
-    nums = Range.new( snum, enum )
-    regxs = '/.*(%s)\s*=(.*)/' % var
-    regx = Regexp.new( regxs )
-    nums.each do |x|
-        ln = @buf[x]
-        #print $~ if regx.match( ln )
-    end
-end
 
 def load_requires
-    @buf = VIM::Buffer.current
-    enum = @buf.line_number
-    nums = Range.new( 1, enum )
-    nums.each do |x|
-        ln = @buf[x]
-        begin
-            eval( "require %s" % $1 ) if /.*require\s*(.*)$/.match( ln )
-        rescue Exception
-            #ignore?
-        end
+  @buf = VIM::Buffer.current
+  enum = @buf.line_number
+  nums = Range.new( 1, enum )
+  nums.each do |x|
+    ln = @buf[x]
+    begin
+      eval( "require %s" % $1 ) if /.*require\s*(.*)$/.match( ln )
+    rescue Exception
+      #ignore?
     end
+  end
+end
+
+def load_buffer_class(name)
+  classdef = get_buffer_entity(name, 'GetBufferRubyClass("%s")')
+  return if classdef == nil
+
+  pare = /^\s*class\s*(.*)\s*<\s*(.*)\s*\n/.match( classdef )
+  load_buffer_class( $2 ) if pare != nil
+
+  mixre = /.*\n\s*include\s*(.*)\s*\n/.match( classdef )
+  load_buffer_module( $2 ) if mixre != nil
+
+  eval classdef 
+end
+
+def load_buffer_module(name)
+  classdef = get_buffer_entity(name, 'GetBufferRubyModule("%s")')
+  return if classdef == nil
+
+  eval classdef 
+end
+
+def get_buffer_entity(name, vimfun)
+  @buf = VIM::Buffer.current
+  nums = eval( VIM::evaluate( vimfun % name ) )
+  return nil if nums == nil 
+  return nil if nums.min == nums.max && nums.min == 0
+  
+  cur_line = VIM::Buffer.current.line_number
+  classdef = ""
+  nums.each do |x|
+    if x != cur_line
+      ln = @buf[x] 
+      classdef += "%s\n" % ln
+    end
+  end
+ 
+  return classdef
+end
+
+def load_rails()
+  allow_rails = VIM::evaluate('g:rubycomplete_rails')
+  return if allow_rails != '1'
+  
+  buf_path = VIM::evaluate('expand("%:p")')
+  file_name = VIM::evaluate('expand("%:t")')
+  path = buf_path.gsub( file_name, '' ) 
+  path.gsub!( /\\/, "/" )
+  pup = [ "../", "../../", "../../../", "../../../../" ]
+  pok = nil
+
+  pup.each do |sup|
+    tpok = "%s%sconfig" % [ path, sup ]
+    if File.exists?( tpok )
+        pok = tpok
+        break
+    end
+  end
+  bootfile = pok + "/boot.rb"
+  require bootfile if pok != nil && File.exists?( bootfile )
+end
+
+def get_rails_helpers
+  allow_rails = VIM::evaluate('g:rubycomplete_rails')
+  return [] if allow_rails != '1'
+  return RailsWords 
 end
 
 def get_completions(base)
-    load_requires
-    input = VIM::evaluate('expand("<cWORD>")')
-    input += base
-    message = nil
+  load_requires
+  load_rails
+
+  input = VIM::evaluate('expand("<cWORD>")')
+  input += base
+  input.lstrip!
+  if input.length == 0
+    input = VIM::Buffer.current.line
+    input.strip!
+  end
+  message = nil
 
 
-    case input
-      when /^(\/[^\/]*\/)\.([^.]*)$/
-        # Regexp
-        receiver = $1
-        message = Regexp.quote($2)
+  case input
+    when /^(\/[^\/]*\/)\.([^.]*)$/
+      # Regexp
+      receiver = $1
+      message = Regexp.quote($2)
 
-        candidates = Regexp.instance_methods(true)
-        select_message(receiver, message, candidates)
+      candidates = Regexp.instance_methods(true)
+      select_message(receiver, message, candidates)
 
-      when /^([^\]]*\])\.([^.]*)$/
-        # Array
-        receiver = $1
-        message = Regexp.quote($2)
+    when /^([^\]]*\])\.([^.]*)$/
+      # Array
+      receiver = $1
+      message = Regexp.quote($2)
 
-        candidates = Array.instance_methods(true)
-        select_message(receiver, message, candidates)
+      candidates = Array.instance_methods(true)
+      select_message(receiver, message, candidates)
 
-      when /^([^\}]*\})\.([^.]*)$/
-        # Proc or Hash
-        receiver = $1
-        message = Regexp.quote($2)
+    when /^([^\}]*\})\.([^.]*)$/
+      # Proc or Hash
+      receiver = $1
+      message = Regexp.quote($2)
 
-        candidates = Proc.instance_methods(true) | Hash.instance_methods(true)
-        select_message(receiver, message, candidates)
+      candidates = Proc.instance_methods(true) | Hash.instance_methods(true)
+      select_message(receiver, message, candidates)
 
-      when /^(:[^:.]*)$/
-        # Symbol
-        if Symbol.respond_to?(:all_symbols)
-          sym = $1
-          candidates = Symbol.all_symbols.collect{|s| ":" + s.id2name}
-          candidates.grep(/^#{sym}/)
-        else
-          []
+    when /^(:[^:.]*)$/
+      # Symbol
+      if Symbol.respond_to?(:all_symbols)
+        sym = $1
+        candidates = Symbol.all_symbols.collect{|s| ":" + s.id2name}
+        candidates.grep(/^#{sym}/)
+        candidates.delete_if do |c|
+            c.match( /'/ )
         end
+        candidates.uniq!
+        candidates.sort!
+      else
+        []
+      end
 
-      when /^::([A-Z][^:\.\(]*)$/
-        # Absolute Constant or class methods
-        receiver = $1
-        candidates = Object.constants
-        candidates.grep(/^#{receiver}/).collect{|e| "::" + e}
+    when /^::([A-Z][^:\.\(]*)$/
+      # Absolute Constant or class methods
+      receiver = $1
+      candidates = Object.constants
+      candidates.grep(/^#{receiver}/).collect{|e| "::" + e}
 
-      when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/
-        # Constant or class methods
-        receiver = $1
-        message = Regexp.quote($4)
-        begin
-          candidates = eval("#{receiver}.constants | #{receiver}.methods")
-        rescue Exception
-          candidates = []
-        end
-        candidates.grep(/^#{message}/).collect{|e| receiver + "::" + e}
+    when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/
+      # Constant or class methods
+      receiver = $1
+      message = Regexp.quote($4)
+      begin
+        candidates = eval("#{receiver}.constants | #{receiver}.methods")
+      rescue Exception
+        candidates = []
+      end
+      candidates.grep(/^#{message}/).collect{|e| receiver + "::" + e}
 
-      when /^(:[^:.]+)\.([^.]*)$/
-        # Symbol
-        receiver = $1
-        message = Regexp.quote($2)
+    when /^(:[^:.]+)\.([^.]*)$/
+      # Symbol
+      receiver = $1
+      message = Regexp.quote($2)
 
-        candidates = Symbol.instance_methods(true)
-        select_message(receiver, message, candidates)
+      candidates = Symbol.instance_methods(true)
+      select_message(receiver, message, candidates)
 
-      when /^([0-9_]+(\.[0-9_]+)?(e[0-9]+)?)\.([^.]*)$/
-        # Numeric
-        receiver = $1
-        message = Regexp.quote($4)
+    when /^([0-9_]+(\.[0-9_]+)?(e[0-9]+)?)\.([^.]*)$/
+      # Numeric
+      receiver = $1
+      message = Regexp.quote($4)
+
+      begin
+        candidates = eval(receiver).methods
+      rescue Exception
+        candidates
+      end
+      select_message(receiver, message, candidates)
+
+    when /^(\$[^.]*)$/
+	  candidates = global_variables.grep(Regexp.new(Regexp.quote($1)))
+
+#   when /^(\$?(\.?[^.]+)+)\.([^.]*)$/
+    when /^((\.?[^.]+)+)\.([^.]*)$/
+      # variable
+      receiver = $1
+      message = Regexp.quote($3)
+      load_buffer_class( receiver )
+
+      cv = eval("self.class.constants")
+
+      vartype = VIM::evaluate("GetRubyVarType('%s')" % receiver)
+      if vartype != ''
+        load_buffer_class( vartype )
 
         begin
-          candidates = eval(receiver).methods
-        rescue Exception
-          candidates
-        end
-        select_message(receiver, message, candidates)
-
-      when /^(\$[^.]*)$/
-	      candidates = global_variables.grep(Regexp.new(Regexp.quote($1)))
-
-#      when /^(\$?(\.?[^.]+)+)\.([^.]*)$/
-      when /^((\.?[^.]+)+)\.([^.]*)$/
-        # variable
-        receiver = $1
-        message = Regexp.quote($3)
-
-        cv = eval("self.class.constants")
-
-        vartype = VIM::evaluate("GetRubyVarType('%s')" % receiver)
-        if vartype != ''
           candidates = eval("#{vartype}.instance_methods")
-        elsif (cv).include?(receiver)
-          # foo.func and foo is local var.
-          candidates = eval("#{receiver}.methods")
-        elsif /^[A-Z]/ =~ receiver and /\./ !~ receiver
-          # Foo::Bar.func
-          begin
-            candidates = eval("#{receiver}.methods")
-          rescue Exception
-            candidates = []
-          end
-        else
-          # func1.func2
+        rescue Exception
           candidates = []
-          ObjectSpace.each_object(Module){|m|
-            next if m.name != "IRB::Context" and
-              /^(IRB|SLex|RubyLex|RubyToken)/ =~ m.name
-            candidates.concat m.instance_methods(false)
-          }
-          candidates.sort!
-          candidates.uniq!
         end
-        #identify_type( receiver )
-        select_message(receiver, message, candidates)
+      elsif (cv).include?(receiver)
+        # foo.func and foo is local var.
+        candidates = eval("#{receiver}.methods")
+      elsif /^[A-Z]/ =~ receiver and /\./ !~ receiver
+        # Foo::Bar.func
+        begin
+          candidates = eval("#{receiver}.methods")
+        rescue Exception
+          candidates = []
+        end
+      else
+        # func1.func2
+        candidates = []
+        ObjectSpace.each_object(Module){|m|
+          next if m.name != "IRB::Context" and
+            /^(IRB|SLex|RubyLex|RubyToken)/ =~ m.name
+          candidates.concat m.instance_methods(false)
+        }
+        candidates.sort!
+        candidates.uniq!
+      end
+      #identify_type( receiver )
+      select_message(receiver, message, candidates)
 
     #when /^((\.?[^.]+)+)\.([^.]*)\(\s*\)*$/
         #function call
         #obj = $1
         #func = $3
 
-      when /^\.([^.]*)$/
+    when /^\.([^.]*)$/
 	# unknown(maybe String)
 
-        receiver = ""
-        message = Regexp.quote($1)
+      receiver = ""
+      message = Regexp.quote($1)
 
-        candidates = String.instance_methods(true)
+      candidates = String.instance_methods(true)
+      select_message(receiver, message, candidates)
+
+  else
+    inclass = eval( VIM::evaluate("IsInClassDef()") )
+
+    if inclass != nil
+      classdef = "%s\n" % VIM::Buffer.current[ inclass.min ] 
+      found = /^\s*class\s*([A-Za-z0-9_-]*)(\s*<\s*([A-Za-z0-9_:-]*))?\s*\n$/.match( classdef )
+
+      if found != nil
+        receiver = $1
+        message = input
+        load_buffer_class( receiver )
+        candidates = eval( "#{receiver}.instance_methods" )
+        candidates += get_rails_helpers
         select_message(receiver, message, candidates)
-
-    else
+      end
+    end
+    
+    if inclass == nil || found == nil
       candidates = eval("self.class.constants")
-
       (candidates|ReservedWords).grep(/^#{Regexp.quote(input)}/)
     end
+  end
 
     #print candidates
-    if message != nil && message.length > 0
-        rexp = '^%s' % message.downcase
-        candidates.delete_if do |c|
-            c.downcase.match( rexp )
-            $~ == nil
-        end
+  if message != nil && message.length > 0
+    rexp = '^%s' % message.downcase
+    candidates.delete_if do |c|
+        c.downcase.match( rexp )
+        $~ == nil
     end
+  end
 
-    outp = ""
-    #    tags = VIM::evaluate("taglist('^%s$')" %
-    (candidates-Object.instance_methods).each { |c| outp += "{'word':'%s','item':'%s'}," % [ c, c ] }
+  outp = ""
+
+  #    tags = VIM::evaluate("taglist('^%s$')" %
+  valid = (candidates-Object.instance_methods)
+  
+  rg = 0..valid.length
+  rg.step(150) do |x|
+    stpos = 0+x
+    enpos = 150+x
+    valid[stpos..enpos].each { |c| outp += "{'word':'%s','item':'%s'}," % [ c, c ] }
     outp.sub!(/,$/, '')
-    VIM::command("let g:rbcomplete_completions = [%s]" % outp)
+
+    VIM::command("call extend(g:rubycomplete_completions, [%s])" % outp)
+    outp = ""
+  end
 end
 
 
 def select_message(receiver, message, candidates)
+  #tags = VIM::evaluate("taglist('%s')" % receiver)
+  #print tags
   candidates.grep(/^#{message}/).collect do |e|
     case e
       when /^[a-zA-Z_]/
@@ -304,5 +462,7 @@
 RUBYEOF
 endfunction
 
+
+let g:rubycomplete_rails = 0
 call s:DefRuby()
 " vim: set et ts=4:
diff --git a/runtime/autoload/xml/xhtml10s.vim b/runtime/autoload/xml/xhtml10s.vim
index 2fe68cd..1322146 100644
--- a/runtime/autoload/xml/xhtml10s.vim
+++ b/runtime/autoload/xml/xhtml10s.vim
@@ -1,7 +1,314 @@
-" HTML context data
-"function! htmlcomplete#LoadData() " {{{
 let g:xmldata_xhtml10s = {
 \ '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", "TITY", "Tau", "Theta", "Uacute", "Ucirc", "Ugrave", "Upsilon", "Uuml", "Xi", "Yacute", "Yuml", "Zeta", "amp", "aacute", "acirc", "acute", "aelig", "agrave", "alefsym", "alpha", "and", "ang", "apos", "aring", "asymp", "atilde", "auml", "bdquo", "beta", "brvbar", "bull", "cap", "ccedil", "cedil", "cent", "chi", "circ", "clubs", "copy", "cong", "crarr", "cup", "curren", "dArr", "dagger", "darr", "deg", "delta", "diams", "divide", "eacute", "ecirc", "egrave", "empty", "ensp", "emsp", "epsilon", "equiv", "eta", "eth", "euro", "euml", "exist", "fnof", "forall", "frac12", "frac14", "frac34", "frasl", "gt", "gamma", "ge", "hArr", "harr", "hearts", "hellip", "iacute", "icirc", "iexcl", "igrave", "image", "infin", "int", "iota", "iquest", "isin", "iuml", "kappa", "lt", "laquo", "lArr", "lambda", "lang", "larr", "lceil", "ldquo", "le", "lfloor", "lowast", "loz", "lrm", "lsaquo", "lsquo", "macr", "mdash", "micro", "middot", "minus", "mu", "nbsp", "nabla", "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", "raquo", "radic", "rang", "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"],
+\ 'vimxmlroot': ['html'],
+\ 'a': [
+\ ['br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'accesskey': [], 'rel': [], 'coords': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onkeydown': [], 'onkeyup': [], 'href': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'tabindex': [], 'onmouseout': [], 'onmousemove': [], 'name': [], 'style': [], 'charset': [], 'xml:lang': [], 'hreflang': [], 'onkeypress': [], 'onmousedown': [], 'rev': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'shape': ['rect', 'rect', 'circle', 'poly', 'default']}
+\ ],
+\ 'abbr': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'acronym': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'address': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'area': [
+\ [],
+\ { 'accesskey': [], 'coords': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'nohref': ['BOOL'], 'onkeyup': [], 'href': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'tabindex': [], 'lang': [], 'alt': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'shape': ['rect', 'rect', 'circle', 'poly', 'default']}
+\ ],
+\ 'b': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'base': [
+\ [],
+\ { 'href': [], 'id': []}
+\ ],
+\ 'bdo': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'big': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'blockquote': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'cite': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'body': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onunload': [], 'onkeypress': [], 'onmousedown': [], 'onload': [], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'br': [
+\ [],
+\ { 'id': [], 'style': [], 'class': [], 'title': []}
+\ ],
+\ 'button': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'table', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'noscript', 'ins', 'del', 'script'],
+\ { 'accesskey': [], 'disabled': ['BOOL'], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'tabindex': [], 'lang': [], 'value': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'name': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': ['submit', 'button', 'submit', 'reset']}
+\ ],
+\ 'caption': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'cite': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'code': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'col': [
+\ [],
+\ { 'width': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'charoff': [], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'char': [], 'span': ['1'], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'colgroup': [
+\ ['col'],
+\ { 'width': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'charoff': [], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'char': [], 'span': ['1'], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'dd': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'del': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'datetime': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'cite': [], 'onmouseover': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'dfn': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'div': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'dl': [
+\ ['dt', 'dd'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'dt': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'em': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'fieldset': [
+\ ['legend', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'form': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'noscript', 'ins', 'del', 'script'],
+\ { 'enctype': ['application/x-www-form-urlencoded'], 'onsubmit': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'onreset': [], 'id': [], 'method': ['get', 'get', 'post'], 'onmouseover': [], 'lang': [], 'accept': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'accept-charset': [], 'onkeypress': [], 'onmousedown': [], 'action': [], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'h1': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'h2': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'h3': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'h4': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'h5': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'h6': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'head': [
+\ ['script', 'style', 'meta', 'link', 'object', 'title', 'script', 'style', 'meta', 'link', 'object', 'base', 'script', 'style', 'meta', 'link', 'object', 'base', 'script', 'style', 'meta', 'link', 'object', 'title', 'script', 'style', 'meta', 'link', 'object'],
+\ { 'profile': [], 'dir': ['ltr', 'rtl'], 'id': [], 'lang': [], 'xml:lang': []}
+\ ],
+\ 'hr': [
+\ [],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'html': [
+\ ['head', 'body'],
+\ { 'xmlns': ['http://www.w3.org/1999/xhtml'], 'dir': ['ltr', 'rtl'], 'id': [], 'lang': [], 'xml:lang': []}
+\ ],
+\ 'i': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'img': [
+\ [],
+\ { 'width': [], 'usemap': [], 'ismap': ['BOOL'], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'alt': [], 'lang': [], 'src': [], 'longdesc': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'height': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'input': [
+\ [],
+\ { 'ondblclick': [], 'onkeydown': [], 'readonly': ['BOOL'], 'onchange': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'value': [], 'src': [], 'name': [], 'checked': ['BOOL'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': ['text', 'text', 'password', 'checkbox', 'radio', 'submit', 'reset', 'file', 'hidden', 'image', 'button'], 'accesskey': [], 'disabled': ['BOOL'], 'usemap': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'size': [], 'onfocus': [], 'maxlength': [], 'onselect': [], 'accept': [], 'tabindex': [], 'alt': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'ins': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'datetime': [], 'cite': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []}
+\ ],
+\ 'kbd': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'label': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'for': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'accesskey': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []}
+\ ],
+\ 'legend': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'accesskey': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'li': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'link': [
+\ [],
+\ { 'rel': [], 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'href': [], 'media': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'charset': [], 'hreflang': [], 'onkeypress': [], 'onmousedown': [], 'rev': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []}
+\ ],
+\ 'map': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'noscript', 'ins', 'del', 'script', 'area'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'name': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'onclick': [], 'title': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmouseout': [], 'onmousemove': [], 'xml:lang': []}
+\ ],
+\ 'meta': [
+\ [],
+\ { 'http-equiv': [], 'content': [], 'id': [], 'lang': [], 'name': [], 'scheme': [], 'dir': ['ltr', 'rtl'], 'xml:lang': []}
+\ ],
+\ 'noscript': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'object': [
+\ ['param', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'name': [], 'data': [], 'declare': ['BOOL'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'width': [], 'usemap': [], 'dir': ['ltr', 'rtl'], 'archive': [], 'standby': [], 'tabindex': [], 'classid': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'height': [], 'codetype': [], 'codebase': []}
+\ ],
+\ 'ol': [
+\ ['li'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'optgroup': [
+\ ['option'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'label': [], 'disabled': ['BOOL'], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []}
+\ ],
+\ 'option': [
+\ [''],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'value': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'label': [], 'disabled': ['BOOL'], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'selected': ['BOOL']}
+\ ],
+\ 'p': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'param': [
+\ [],
+\ { 'id': [], 'value': [], 'name': [], 'type': [], 'valuetype': ['data', 'data', 'ref', 'object']}
+\ ],
+\ 'pre': [
+\ ['a', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'br', 'span', 'bdo', 'map', 'ins', 'del', 'script', 'input', 'select', 'textarea', 'label', 'button'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'xml:space': ['preserve', 'preserve'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []}
+\ ],
+\ 'q': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'cite': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'samp': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'script': [
+\ [''],
+\ { 'id': [], 'src': [], 'charset': [], 'xml:space': ['preserve', 'preserve'], 'type': ['text/javascript'], 'defer': ['BOOL']}
+\ ],
+\ 'select': [
+\ ['optgroup', 'option'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onchange': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'name': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'disabled': ['BOOL'], 'dir': ['ltr', 'rtl'], 'size': [], 'onblur': [], 'onfocus': [], 'tabindex': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'multiple': ['BOOL']}
+\ ],
+\ 'small': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'span': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'strong': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'style': [
+\ [''],
+\ { 'media': [], 'id': [], 'lang': [], 'xml:space': ['preserve', 'preserve'], 'title': [], 'type': ['text/css'], 'dir': ['ltr', 'rtl'], 'xml:lang': []}
+\ ],
+\ 'sub': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'sup': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'table': [
+\ ['caption', 'col', 'colgroup', 'thead', 'tfoot', 'tbody', 'tr'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'width': [], 'frame': ['void', 'above', 'below', 'hsides', 'lhs', 'rhs', 'vsides', 'box', 'border'], 'rules': ['none', 'groups', 'rows', 'cols', 'all'], 'dir': ['ltr', 'rtl'], 'summary': [], 'cellspacing': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'border': [], 'cellpadding': []}
+\ ],
+\ 'tbody': [
+\ ['tr'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'lang': [], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []}
+\ ],
+\ 'td': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'axis': [], 'onkeydown': [], 'abbr': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'scope': ['row', 'col', 'rowgroup', 'colgroup'], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'headers': [], 'dir': ['ltr', 'rtl'], 'rowspan': ['1'], 'colspan': ['1'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []}
+\ ],
+\ 'textarea': [
+\ [''],
+\ { 'ondblclick': [], 'cols': [], 'onkeydown': [], 'readonly': ['BOOL'], 'onchange': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'name': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'accesskey': [], 'disabled': ['BOOL'], 'rows': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onselect': [], 'tabindex': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []}
+\ ],
+\ 'tfoot': [
+\ ['tr'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'lang': [], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []}
+\ ],
+\ 'th': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'axis': [], 'onkeydown': [], 'abbr': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'scope': ['row', 'col', 'rowgroup', 'colgroup'], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'headers': [], 'dir': ['ltr', 'rtl'], 'rowspan': ['1'], 'colspan': ['1'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []}
+\ ],
+\ 'thead': [
+\ ['tr'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'lang': [], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []}
+\ ],
+\ 'title': [
+\ [''],
+\ { 'id': [], 'lang': [], 'dir': ['ltr', 'rtl'], 'xml:lang': []}
+\ ],
+\ 'tr': [
+\ ['th', 'td'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'lang': [], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []}
+\ ],
+\ 'tt': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'ul': [
+\ ['li'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'var': [
+\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
 \ 'vimxmlattrinfo' : {
 \ 'accept' : ['ContentType', ''],
 \ 'accesskey' : ['Character', ''],
@@ -88,3988 +395,17 @@
 \ 'width' : ['Number', ''],
 \ 'xmlns' : ['URI', '']
 \ },
-\ 'vimxmltaginfo' : {
-\ 'base' : ['/>', ''],
-\ 'meta' : ['/>', ''],
-\ 'link' : ['/>', ''],
-\ 'img' : ['/>', ''],
-\ 'hr' : ['/>', ''],
-\ 'br' : ['/>', ''],
-\ 'param' : ['/>', ''],
-\ 'area' : ['/>', ''],
-\ 'input' : ['/>', ''],
-\ 'col' : ['/>', '']
-\ },
-\ 'tr' : [
-\ [
-\ 'th',
-\ 'td'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'charoff' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'align' : [
-\ 'left',
-\ 'center',
-\ 'right',
-\ 'justify',
-\ 'char'
-\ ],
-\ 'valign' : [
-\ 'top',
-\ 'middle',
-\ 'bottom',
-\ 'baseline'
-\ ],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'char' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
+\ 'vimxmltaginfo': {
+\ 'area': ['/>', ''],
+\ 'base': ['/>', ''],
+\ 'br': ['/>', ''],
+\ 'col': ['/>', ''],
+\ 'hr': ['/>', ''],
+\ 'img': ['/>', ''],
+\ 'input': ['/>', ''],
+\ 'link': ['/>', ''],
+\ 'meta': ['/>', ''],
+\ 'param': ['/>', ''],
 \ }
-\ ],
-\ 'input' : [[],
-\ {
-\ 'ondblclick' : [],
-\ 'onchange' : [],
-\ 'readonly' : [
-\  'BOOL'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'src' : [],
-\ 'value' : [],
-\ 'name' : [],
-\ 'checked' : [
-\ 'BOOL'
-\ ],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : [],
-\ 'type' : [
-\ 'text',
-\ 'password',
-\ 'checkbox',
-\ 'radio',
-\ 'submit',
-\ 'reset',
-\ 'file',
-\ 'hidden',
-\ 'image',
-\ 'button'
-\ ],
-\ 'accesskey' : [],
-\ 'disabled' : [
-\  'BOOL'
-\ ],
-\ 'usemap' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'size' : [],
-\ 'onblur' : [],
-\ 'onfocus' : [],
-\ 'maxlength' : [],
-\ 'onselect' : [],
-\ 'accept' : [],
-\ 'alt' : [],
-\ 'tabindex' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'xml:lang' : []
 \ }
-\ ],
-\ 'table' : [
-\ [
-\ 'caption',
-\ 'col',
-\ 'colgroup',
-\ 'thead',
-\ 'tfoot',
-\ 'tbody',
-\ 'tr'
-\ ],
-\ {
-\ 'width' : [],
-\ 'frame' : [
-\ 'void',
-\ 'above',
-\ 'below',
-\ 'hsides',
-\ 'lhs',
-\ 'rhs',
-\ 'vsides',
-\ 'box',
-\ 'border'
-\ ],
-\ 'ondblclick' : [],
-\ 'rules' : [
-\ 'none',
-\ 'groups',
-\ 'rows',
-\ 'cols',
-\ 'all'
-\ ],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'summary' : [],
-\ 'onkeyup' : [],
-\ 'cellspacing' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'border' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'cellpadding' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'form' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onsubmit' : [],
-\ 'enctype' : [
-\ '',
-\ 'application/x-www-form-urlencoded',
-\ ],
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onreset' : [],
-\ 'onmouseup' : [],
-\ 'method' : [
-\ 'get',
-\ 'post'
-\ ],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'accept' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'accept-charset' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'action' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'h5' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'meta' : [[],
-\ {
-\ 'http-equiv' : [],
-\ 'lang' : [],
-\ 'name' : [],
-\ 'scheme' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ]
-\ }
-\ ],
-\ 'map' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript',
-\ 'area'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'name' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'style' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'title' : [],
-\ 'onclick' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'tfoot' : [
-\ [
-\ 'tr'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'charoff' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'align' : [
-\ 'left',
-\ 'center',
-\ 'right',
-\ 'justify',
-\ 'char'
-\ ],
-\ 'valign' : [
-\ 'top',
-\ 'middle',
-\ 'bottom',
-\ 'baseline'
-\ ],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'char' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'caption' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'code' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'base' : [[],
-\ {
-\ 'href' : []
-\ }
-\ ],
-\ 'br' : [[],
-\ {
-\ 'style' : [],
-\ 'title' : [],
-\ 'class' : [],
-\ 'id' : []
-\ }
-\ ],
-\ 'acronym' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'strong' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'h4' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'em' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'b' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'q' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : [],
-\ 'cite' : []
-\ }
-\ ],
-\ 'span' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'title' : [
-\ {
-\ 'lang' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ]
-\ }
-\ ],
-\ 'small' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'area' : [[],
-\ {
-\ 'accesskey' : [],
-\ 'coords' : [],
-\ 'ondblclick' : [],
-\ 'onblur' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onfocus' : [],
-\ 'nohref' : [
-\ 'BOOL'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'href' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'tabindex' : [],
-\ 'alt' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : [],
-\ 'shape' : [
-\ 'rect',
-\ 'circle',
-\ 'poly',
-\ 'default'
-\ ]
-\ }
-\ ],
-\ 'body' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'onunload' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onload' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'ol' : [
-\ [
-\ 'li'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'html' : [
-\ [
-\ 'head',
-\ 'body'
-\ ],
-\ {
-\ 'xmlns' : [
-\ 'http://www.w3.org/1999/xhtml',
-\ ],
-\ 'lang' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ]
-\ }
-\ ],
-\ 'var' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'ul' : [
-\ [
-\ 'li'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'del' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'datetime' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'cite' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'blockquote' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\  'ltr',
-\  'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : [],
-\ 'cite' : []
-\ }
-\ ],
-\ 'style' : [[],
-\ {
-\ 'lang' : [],
-\ 'media' : [
-\ 'screen',
-\ 'tty',
-\ 'tv',
-\ 'projection',
-\ 'handheld',
-\ 'print',
-\ 'braille',
-\ 'aural',
-\ 'all'
-\ ],
-\ 'title' : [],
-\ 'type' : [
-\ 'text/css'
-\ ],
-\ 'xml:space' : [
-\ 'preserve'
-\ ],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ]
-\ }
-\ ],
-\ 'dfn' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'h3' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'textarea' : [[], 
-\ {
-\ 'accesskey' : [],
-\ 'disabled' : [
-\ 'disabled'
-\ ],
-\ 'ondblclick' : [],
-\ 'rows' : [],
-\ 'onblur' : [],
-\ 'cols' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onchange' : [],
-\ 'onfocus' : [],
-\ 'readonly' : [
-\ 'BOOL'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onselect' : [],
-\ 'onmouseover' : [],
-\ 'tabindex' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'name' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'a' : [
-\ [
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'accesskey' : [],
-\ 'rel' : [],
-\ 'coords' : [],
-\ 'ondblclick' : [],
-\ 'onblur' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onfocus' : [],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'href' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'tabindex' : [],
-\ 'lang' : [],
-\ 'name' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'charset' : [],
-\ 'hreflang' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'rev' : [],
-\ 'shape' : [
-\ 'rect',
-\ 'circle',
-\ 'poly',
-\ 'default'
-\ ],
-\ 'type' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'img' : [[],
-\ {
-\ 'width' : [],
-\ 'ismap' : [
-\ 'BOOL'
-\ ],
-\ 'usemap' : [],
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'alt' : [],
-\ 'longdesc' : [],
-\ 'src' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'height' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'tt' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'thead' : [
-\ [
-\ 'tr'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'charoff' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'align' : [
-\ 'left',
-\ 'center',
-\ 'right',
-\ 'justify',
-\ 'char'
-\ ],
-\ 'valign' : [
-\ 'top',
-\ 'middle',
-\ 'bottom',
-\ 'baseline'
-\ ],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'char' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'abbr' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'h6' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'sup' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'address' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'param' : [[],
-\ {
-\ 'value' : [],
-\ 'name' : [],
-\ 'type' : [],
-\ 'valuetype' : [
-\ 'data',
-\ 'ref',
-\ 'object'
-\ ],
-\ 'id' : []
-\ }
-\ ],
-\ 'th' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'headers' : [],
-\ 'ondblclick' : [],
-\ 'axis' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'abbr' : [],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'h1' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'head' : [
-\ [
-\ 'script',
-\ 'style',
-\ 'meta',
-\ 'link',
-\ 'object',
-\ 'title',
-\ 'script',
-\ 'style',
-\ 'meta',
-\ 'link',
-\ 'object',
-\ 'base',
-\ 'script',
-\ 'style',
-\ 'meta',
-\ 'link',
-\ 'object',
-\ 'base',
-\ 'script',
-\ 'style',
-\ 'meta',
-\ 'link',
-\ 'object',
-\ 'title',
-\ 'script',
-\ 'style',
-\ 'meta',
-\ 'link',
-\ 'object'
-\ ],
-\ {
-\ 'profile' : [],
-\ 'lang' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ]
-\ }
-\ ],
-\ 'tbody' : [
-\ [
-\ 'tr'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'charoff' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'align' : [
-\ 'left',
-\ 'center',
-\ 'right',
-\ 'justify',
-\ 'char'
-\ ],
-\ 'valign' : [
-\ 'top',
-\ 'middle',
-\ 'bottom',
-\ 'baseline'
-\ ],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'char' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'legend' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'accesskey' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'dd' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'hr' : [[],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'li' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'td' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'headers' : [],
-\ 'ondblclick' : [],
-\ 'axis' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'abbr' : [],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'label' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'for' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'dl' : [
-\ [
-\ 'dt',
-\ 'dd'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'kbd' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'div' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'object' : [
-\ [
-\ 'param',
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'width' : [],
-\ 'usemap' : [],
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'tabindex' : [],
-\ 'standby' : [],
-\ 'archive' : [],
-\ 'lang' : [],
-\ 'classid' : [],
-\ 'name' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'data' : [],
-\ 'height' : [],
-\ 'xml:lang' : [],
-\ 'codetype' : [],
-\ 'declare' : [
-\  'BOOL'
-\ ],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'type' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : [],
-\ 'codebase' : []
-\ }
-\ ],
-\ 'dt' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'pre' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'xml:space' : [
-\ 'preserve'
-\ ],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'samp' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'col' : [[],
-\ {
-\ 'disabled' : [
-\ 'disabled'
-\ ],
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'value' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'label' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : [],
-\ 'selected' : [
-\ 'BOOL'
-\ ]
-\ }
-\ ],
-\ 'cite' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'i' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'select' : [
-\ [
-\ 'optgroup',
-\ 'option'
-\ ],
-\ {
-\ 'disabled' : [
-\ 'BOOL'
-\ ],
-\ 'ondblclick' : [],
-\ 'onblur' : [],
-\ 'size' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onchange' : [],
-\ 'onfocus' : [],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'tabindex' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'name' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'multiple' : [
-\ 'multiple'
-\ ],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'link' : [[],
-\ {
-\ 'rel' : [],
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'media' : [
-\ 'screen',
-\ 'tty',
-\ 'tv',
-\ 'projection',
-\ 'handheld',
-\ 'print',
-\ 'braille',
-\ 'aural',
-\ 'all'
-\ ],
-\ 'href' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'charset' : [],
-\ 'hreflang' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'rev' : [],
-\ 'type' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'script' : [[],
-\ {
-\ 'defer' : [
-\ 'BOOL'
-\ ],
-\ 'src' : [],
-\ 'type' : [
-\ 'text/javascript'
-\ ],
-\ 'charset' : [],
-\ 'xml:space' : [
-\  'preserve'
-\  ]
-\ }
-\ ],
-\ 'bdo' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'colgroup' : [
-\ [
-\ 'col'
-\ ],
-\ {
-\ 'width' : [],
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'charoff' : [],
-\ 'onmouseover' : [],
-\ 'align' : [
-\  'left',
-\  'center',
-\  'right',
-\  'justify',
-\  'char'
-\ ],
-\ 'lang' : [],
-\ 'valign' : [
-\ 'top',
-\ 'middle',
-\ 'bottom',
-\ 'baseline'
-\ ],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'char' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : [],
-\ 'span' : [
-\ '',
-\ '1',
-\ ]
-\ }
-\ ],
-\ 'h2' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'ins' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'datetime' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'cite' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'p' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'sub' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'big' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'fieldset' : [
-\ [
-\ 'legend',
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'noscript' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'button' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'table',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'accesskey' : [],
-\ 'disabled' : [
-\ 'disabled'
-\ ],
-\ 'ondblclick' : [],
-\ 'onblur' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onfocus' : [],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'tabindex' : [],
-\ 'lang' : [],
-\ 'value' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'name' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'type' : [
-\ 'button',
-\ 'submit',
-\ 'reset'
-\ ],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'optgroup' : [
-\ [
-\ 'option'
-\ ],
-\ {
-\ 'disabled' : [
-\ 'disabled'
-\ ],
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'label' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ]
-\ }
-"endfunction
-" }}}
-" vim:set foldmethod=marker:
+" vim:ft=vim:ff=unix
diff --git a/runtime/autoload/xml/xhtml10t.vim b/runtime/autoload/xml/xhtml10t.vim
new file mode 100644
index 0000000..f4ce8a1
--- /dev/null
+++ b/runtime/autoload/xml/xhtml10t.vim
@@ -0,0 +1,461 @@
+let g:xmldata_xhtml10t = {
+\ '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", "TITY", "Tau", "Theta", "Uacute", "Ucirc", "Ugrave", "Upsilon", "Uuml", "Xi", "Yacute", "Yuml", "Zeta", "amp", "aacute", "acirc", "acute", "aelig", "agrave", "alefsym", "alpha", "and", "ang", "apos", "aring", "asymp", "atilde", "auml", "bdquo", "beta", "brvbar", "bull", "cap", "ccedil", "cedil", "cent", "chi", "circ", "clubs", "copy", "cong", "crarr", "cup", "curren", "dArr", "dagger", "darr", "deg", "delta", "diams", "divide", "eacute", "ecirc", "egrave", "empty", "ensp", "emsp", "epsilon", "equiv", "eta", "eth", "euro", "euml", "exist", "fnof", "forall", "frac12", "frac14", "frac34", "frasl", "gt", "gamma", "ge", "hArr", "harr", "hearts", "hellip", "iacute", "icirc", "iexcl", "igrave", "image", "infin", "int", "iota", "iquest", "isin", "iuml", "kappa", "lt", "laquo", "lArr", "lambda", "lang", "larr", "lceil", "ldquo", "le", "lfloor", "lowast", "loz", "lrm", "lsaquo", "lsquo", "macr", "mdash", "micro", "middot", "minus", "mu", "nbsp", "nabla", "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", "raquo", "radic", "rang", "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"],
+\ 'vimxmlroot': ['html'],
+\ 'a': [
+\ ['br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'accesskey': [], 'rel': [], 'coords': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'target': [], 'onfocus': [], 'onkeyup': [], 'href': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'tabindex': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'name': [], 'charset': [], 'xml:lang': [], 'hreflang': [], 'onkeypress': [], 'onmousedown': [], 'rev': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'shape': ['rect', 'rect', 'circle', 'poly', 'default']}
+\ ],
+\ 'abbr': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'acronym': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'address': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script', 'p'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'applet': [
+\ ['param', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'width': [], 'object': [], 'id': [], 'code': [], 'vspace': [], 'archive': [], 'alt': [], 'align': ['top', 'middle', 'bottom', 'left', 'right'], 'style': [], 'name': [], 'height': [], 'hspace': [], 'title': [], 'class': [], 'codebase': []}
+\ ],
+\ 'area': [
+\ [],
+\ { 'accesskey': [], 'coords': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'nohref': ['BOOL'], 'target': [], 'onkeyup': [], 'href': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'tabindex': [], 'lang': [], 'alt': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'shape': ['rect', 'rect', 'circle', 'poly', 'default']}
+\ ],
+\ 'b': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'base': [
+\ [],
+\ { 'target': [], 'href': [], 'id': []}
+\ ],
+\ 'basefont': [
+\ [],
+\ { 'size': [], 'face': [], 'color': [], 'id': []}
+\ ],
+\ 'bdo': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'big': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'blockquote': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'cite': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'body': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'vlink': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'alink': [], 'onkeyup': [], 'bgcolor': [], 'text': [], 'onmouseup': [], 'id': [], 'link': [], 'onmouseover': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'background': [], 'xml:lang': [], 'onunload': [], 'onkeypress': [], 'onmousedown': [], 'onload': [], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'br': [
+\ [],
+\ { 'clear': ['none', 'left', 'all', 'right', 'none'], 'id': [], 'style': [], 'class': [], 'title': []}
+\ ],
+\ 'button': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'table', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'noscript', 'ins', 'del', 'script'],
+\ { 'accesskey': [], 'disabled': ['BOOL'], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'tabindex': [], 'lang': [], 'value': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'name': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': ['submit', 'button', 'submit', 'reset']}
+\ ],
+\ 'caption': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['top', 'bottom', 'left', 'right'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'center': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'cite': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'code': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'col': [
+\ [],
+\ { 'width': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'charoff': [], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'char': [], 'span': ['1'], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'colgroup': [
+\ ['col'],
+\ { 'width': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'charoff': [], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'char': [], 'span': ['1'], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'dd': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'del': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'datetime': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'cite': [], 'onmouseover': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'dfn': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'dir': [
+\ ['li'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'compact': ['BOOL'], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'div': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'dl': [
+\ ['dt', 'dd'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'compact': ['BOOL'], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'dt': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'em': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'fieldset': [
+\ ['legend', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'font': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'dir': ['ltr', 'rtl'], 'size': [], 'face': [], 'color': [], 'id': [], 'lang': [], 'style': [], 'xml:lang': [], 'title': [], 'class': []}
+\ ],
+\ 'form': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'enctype': ['application/x-www-form-urlencoded'], 'onsubmit': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'target': [], 'onkeyup': [], 'onmouseup': [], 'onreset': [], 'id': [], 'method': ['get', 'get', 'post'], 'onmouseover': [], 'lang': [], 'accept': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'name': [], 'xml:lang': [], 'accept-charset': [], 'onkeypress': [], 'onmousedown': [], 'action': [], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'h1': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'h2': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'h3': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'h4': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'h5': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'h6': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'head': [
+\ ['script', 'style', 'meta', 'link', 'object', 'isindex', 'title', 'script', 'style', 'meta', 'link', 'object', 'isindex', 'base', 'script', 'style', 'meta', 'link', 'object', 'isindex', 'base', 'script', 'style', 'meta', 'link', 'object', 'isindex', 'title', 'script', 'style', 'meta', 'link', 'object', 'isindex'],
+\ { 'profile': [], 'dir': ['ltr', 'rtl'], 'id': [], 'lang': [], 'xml:lang': []}
+\ ],
+\ 'hr': [
+\ [],
+\ { 'width': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'size': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'noshade': ['BOOL'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'html': [
+\ ['head', 'body'],
+\ { 'xmlns': ['http://www.w3.org/1999/xhtml'], 'dir': ['ltr', 'rtl'], 'id': [], 'lang': [], 'xml:lang': []}
+\ ],
+\ 'i': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
+\ 'iframe': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'width': [], 'scrolling': ['auto', 'yes', 'no', 'auto'], 'marginwidth': [], 'id': [], 'marginheight': [], 'align': ['top', 'middle', 'bottom', 'left', 'right'], 'longdesc': [], 'src': [], 'style': [], 'name': [], 'height': [], 'frameborder': ['1', '1', '0'], 'title': [], 'class': []}
+\ ],
+\ 'img': [
+\ [],
+\ { 'width': [], 'usemap': [], 'ismap': ['BOOL'], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'vspace': [], 'onmouseover': [], 'alt': [], 'lang': [], 'align': ['top', 'middle', 'bottom', 'left', 'right'], 'src': [], 'longdesc': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'name': [], 'xml:lang': [], 'height': [], 'border': [], 'hspace': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []}
+\ ],
+\ 'input': [
+\ [],
+\ { 'ondblclick': [], 'onkeydown': [], 'readonly': ['BOOL'], 'onchange': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'align': ['top', 'middle', 'bottom', 'left', 'right'], 'value': [], 'src': [], 'name': [], 'checked': ['BOOL'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': ['text', 'text', 'password', 'checkbox', 'radio', 'submit', 'reset', 'file', 'hidden', 'image', 'button'], 'accesskey': [], 'disabled': ['BOOL'], 'usemap': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'size': [], 'onfocus': [], 'maxlength': [], 'onselect': [], 'accept': [], 'tabindex': [], 'alt': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'ins': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'datetime': [], 'cite': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []}
+\ ],
+\ 'isindex': [
+\ [],
+\ { 'id': [], 'lang': [], 'prompt': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'xml:lang': []}
+\ ],
+\ 'kbd': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'label': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'for': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'accesskey': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []}
+\ ],
+\ 'legend': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['top', 'bottom', 'left', 'right'], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'accesskey': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []}
+\ ],
+\ 'li': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'value': [], 'onkeypress': [], 'onmousedown': [], 'type': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []}
+\ ],
+\ 'link': [
+\ [],
+\ { 'rel': [], 'ondblclick': [], 'onkeydown': [], 'target': [], 'onkeyup': [], 'href': [], 'media': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'charset': [], 'hreflang': [], 'onkeypress': [], 'onmousedown': [], 'rev': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []}
+\ ],
+\ 'map': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'noscript', 'ins', 'del', 'script', 'area'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'name': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'onclick': [], 'title': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmouseout': [], 'onmousemove': [], 'xml:lang': []}
+\ ],
+\ 'menu': [
+\ ['li'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'compact': ['BOOL'], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'meta': [
+\ [],
+\ { 'http-equiv': [], 'content': [], 'id': [], 'lang': [], 'name': [], 'scheme': [], 'dir': ['ltr', 'rtl'], 'xml:lang': []}
+\ ],
+\ 'noframes': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'noscript': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'object': [
+\ ['param', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'align': ['top', 'middle', 'bottom', 'left', 'right'], 'name': [], 'data': [], 'declare': ['BOOL'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'width': [], 'usemap': [], 'dir': ['ltr', 'rtl'], 'vspace': [], 'tabindex': [], 'standby': [], 'archive': [], 'classid': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'height': [], 'xml:lang': [], 'border': [], 'codetype': [], 'hspace': [], 'codebase': []}
+\ ],
+\ 'ol': [
+\ ['li'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'compact': ['BOOL'], 'onmouseover': [], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'type': [], 'class': [], 'title': [], 'onclick': [], 'start': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []}
+\ ],
+\ 'optgroup': [
+\ ['option'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'label': [], 'disabled': ['BOOL'], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []}
+\ ],
+\ 'option': [
+\ [''],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'value': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'label': [], 'disabled': ['BOOL'], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'selected': ['BOOL']}
+\ ],
+\ 'p': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []}
+\ ],
+\ 'param': [
+\ [],
+\ { 'id': [], 'value': [], 'name': [], 'type': [], 'valuetype': ['data', 'data', 'ref', 'object']}
+\ ],
+\ 'pre': [
+\ ['a', 'br', 'span', 'bdo', 'tt', 'i', 'b', 'u', 's', 'strike', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'xml:space': ['preserve', 'preserve'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'width': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []}
+\ ],
+\ 'q': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'cite': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 's': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'samp': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'script': [
+\ [''],
+\ { 'id': [], 'src': [], 'charset': [], 'xml:space': ['preserve', 'preserve'], 'type': ['text/javascript'], 'defer': ['BOOL'], 'language': []}
+\ ],
+\ 'select': [
+\ ['optgroup', 'option'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onchange': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'name': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'disabled': ['BOOL'], 'dir': ['ltr', 'rtl'], 'size': [], 'onblur': [], 'onfocus': [], 'tabindex': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'multiple': ['BOOL']}
+\ ],
+\ 'small': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'span': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'strike': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'strong': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'style': [
+\ [''],
+\ { 'media': [], 'id': [], 'lang': [], 'xml:space': ['preserve', 'preserve'], 'title': [], 'type': ['text/css'], 'dir': ['ltr', 'rtl'], 'xml:lang': []}
+\ ],
+\ 'sub': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'sup': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'table': [
+\ ['caption', 'col', 'colgroup', 'thead', 'tfoot', 'tbody', 'tr'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'width': [], 'frame': ['void', 'above', 'below', 'hsides', 'lhs', 'rhs', 'vsides', 'box', 'border'], 'rules': ['none', 'groups', 'rows', 'cols', 'all'], 'dir': ['ltr', 'rtl'], 'summary': [], 'bgcolor': [], 'cellspacing': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'border': [], 'cellpadding': []}
+\ ],
+\ 'tbody': [
+\ ['tr'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'lang': [], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []}
+\ ],
+\ 'td': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'axis': [], 'onkeydown': [], 'abbr': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'scope': ['row', 'col', 'rowgroup', 'colgroup'], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'width': [], 'headers': [], 'nowrap': ['BOOL'], 'dir': ['ltr', 'rtl'], 'rowspan': ['1'], 'colspan': ['1'], 'bgcolor': [], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'height': [], 'char': []}
+\ ],
+\ 'textarea': [
+\ [''],
+\ { 'ondblclick': [], 'cols': [], 'onkeydown': [], 'readonly': ['BOOL'], 'onchange': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'name': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'accesskey': [], 'disabled': ['BOOL'], 'rows': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onselect': [], 'tabindex': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []}
+\ ],
+\ 'tfoot': [
+\ ['tr'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'lang': [], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []}
+\ ],
+\ 'th': [
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'axis': [], 'onkeydown': [], 'abbr': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'scope': ['row', 'col', 'rowgroup', 'colgroup'], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'width': [], 'headers': [], 'nowrap': ['BOOL'], 'dir': ['ltr', 'rtl'], 'rowspan': ['1'], 'colspan': ['1'], 'bgcolor': [], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'height': [], 'char': []}
+\ ],
+\ 'thead': [
+\ ['tr'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'lang': [], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []}
+\ ],
+\ 'title': [
+\ [''],
+\ { 'id': [], 'lang': [], 'dir': ['ltr', 'rtl'], 'xml:lang': []}
+\ ],
+\ 'tr': [
+\ ['th', 'td'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'lang': [], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'bgcolor': [], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []}
+\ ],
+\ 'tt': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'u': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'ul': [
+\ ['li'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'compact': ['BOOL'], 'onmouseover': [], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'type': ['disc', 'square', 'circle'], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []}
+\ ],
+\ 'var': [
+\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'],
+\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []}
+\ ],
+\ 'vimxmlattrinfo' : {
+\ 'accept' : ['ContentType', ''],
+\ 'accesskey' : ['Character', ''],
+\ 'action' : ['*URI', ''],
+\ 'align' : ['String', ''],
+\ 'alt' : ['*Text', ''],
+\ 'archive' : ['UriList', ''],
+\ 'axis' : ['CDATA', ''],
+\ 'border' : ['Pixels', ''],
+\ 'cellpadding' : ['Length', ''],
+\ 'cellspacing' : ['Length', ''],
+\ 'char' : ['Character', ''],
+\ 'charoff' : ['Length', ''],
+\ 'charset' : ['LangCode', ''],
+\ 'checked' : ['Bool', ''],
+\ 'class' : ['CDATA', ''],
+\ 'codetype' : ['ContentType', ''],
+\ 'cols' : ['*Number', ''],
+\ 'colspan' : ['Number', ''],
+\ 'content' : ['*CDATA', ''],
+\ 'coords' : ['Coords', ''],
+\ 'data' : ['URI', ''],
+\ 'datetime' : ['DateTime', ''],
+\ 'declare' : ['Bool', ''],
+\ 'defer' : ['Bool', ''],
+\ 'dir' : ['String', ''],
+\ 'disabled' : ['Bool', ''],
+\ 'enctype' : ['ContentType', ''],
+\ 'for' : ['ID', ''],
+\ 'headers' : ['IDREFS', ''],
+\ 'height' : ['Number', ''],
+\ 'href' : ['*URI', ''],
+\ 'hreflang' : ['LangCode', ''],
+\ 'id' : ['ID', 'Unique string'],
+\ 'ismap' : ['Bool', ''],
+\ 'label' : ['*Text', ''],
+\ 'lang' : ['LangCode', ''],
+\ 'longdesc' : ['URI', ''],
+\ 'maxlength' : ['Number', ''],
+\ 'media' : ['MediaDesc', ''],
+\ 'method' : ['String', ''],
+\ 'multiple' : ['Bool', ''],
+\ 'name' : ['CDATA', ''],
+\ 'nohref' : ['Bool', ''],
+\ 'onblur' : ['Script', ''],
+\ 'onchange' : ['Script', ''],
+\ 'onclick' : ['Script', ''],
+\ 'ondblclick' : ['Script', ''],
+\ 'onfocus' : ['Script', ''],
+\ 'onkeydown' : ['Script', ''],
+\ 'onkeypress' : ['Script', ''],
+\ 'onkeyup' : ['Script', ''],
+\ 'onload' : ['Script', ''],
+\ 'onmousedown' : ['Script', ''],
+\ 'onmousemove' : ['Script', ''],
+\ 'onmouseout' : ['Script', ''],
+\ 'onmouseover' : ['Script', ''],
+\ 'onmouseup' : ['Script', ''],
+\ 'onreset' : ['Script', ''],
+\ 'onselect' : ['Script', ''],
+\ 'onsubmit' : ['Script', ''],
+\ 'onunload' : ['Script', ''],
+\ 'profile' : ['URI', ''],
+\ 'readonly' : ['Bool', ''],
+\ 'rel' : ['LinkTypes', ''],
+\ 'rev' : ['LinkTypes', ''],
+\ 'rows' : ['*Number', ''],
+\ 'rules' : ['String', ''],
+\ 'scheme' : ['CDATA', ''],
+\ 'selected' : ['Bool', ''],
+\ 'shape' : ['Shape', ''],
+\ 'size' : ['CDATA', ''],
+\ 'span' : ['Number', ''],
+\ 'src' : ['*URI', ''],
+\ 'standby' : ['Text', ''],
+\ 'style' : ['StyleSheet', ''],
+\ 'summary' : ['*Text', ''],
+\ 'tabindex' : ['Number', ''],
+\ 'title' : ['Text', ''],
+\ 'type' : ['*ContentType', ''],
+\ 'usemap' : ['URI', ''],
+\ 'valign' : ['String', ''],
+\ 'valuetype' : ['String', ''],
+\ 'width' : ['Number', ''],
+\ 'xmlns' : ['URI', '']
+\ },
+\ 'vimxmltaginfo': {
+\ 'area': ['/>', ''],
+\ 'base': ['/>', ''],
+\ 'basefont': ['/>', ''],
+\ 'br': ['/>', ''],
+\ 'col': ['/>', ''],
+\ 'hr': ['/>', ''],
+\ 'img': ['/>', ''],
+\ 'input': ['/>', ''],
+\ 'isindex': ['/>', ''],
+\ 'link': ['/>', ''],
+\ 'meta': ['/>', ''],
+\ 'param': ['/>', ''],
+\ }
+\ }
+" vim:ft=vim:ff=unix
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index 1b6d597..b3ccddf 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 7.0e.  Last change: 2006 Apr 18
+*insert.txt*    For Vim version 7.0e.  Last change: 2006 Apr 20
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1026,7 +1026,8 @@
 be relatively short.  The "info" item can be longer, it will  be displayed in
 the preview window when "preview" appears in 'completeopt'.  The "info" item
 will also remain displayed after the popup menu has been removed.  This is
-useful for function arguments.
+useful for function arguments.  Use a single space for "info" to remove
+existing text in the preview window.
 
 The "kind" item uses a single letter to indicate the kind of completion.  This
 may be used to show the completion differently (different color or icon).
@@ -1266,22 +1267,32 @@
 
 HTML flavor						*html-flavor*
 
-By default HTML completion provides completion for XHTML 1.0 Strict. This is
-not the only HTML version. To use another data file and still have benefits of
-custom completion for class, style, etc. attributes set g:html_omni_flavor
-variable. Example (in .vimrc or filetype plugin file): >
+Default HTML completion depends on filetype. For HTML files it is HTML
+4.01 Transitional (&ft=='html'), for XHTML it is XHTML 1.0 Strict
+(&ft=='xhtml').
 
-	let g:html_omni_flavor = 'xhtml10t'
+These are not the only HTML versions. To use another data file and still
+have benefits of custom completion for class, style, etc. attributes set
+b:html_omni_flavor variable. Example (in .vimrc or filetype plugin
+file): >
 
-Data for HTML completion will be read from 'autoload/xml/xhtml10t.vim' file
-located somewhere in 'runtimepath' (not in default distribution).
+	let g:html_omni_flavor = 'xhtml10s'
 
-More about format of data file in |xml-omni-datafile|. Some of data files may
-in future be found on vim-online site (|www|).
+(Completion data file for HTML 4.01 Strict is also provided by Vim
+distribution.)
 
-Note that g:html_omni_flavor may point to file with any XML data.  This makes
-possible to mix PHP (|ft-php-omni|) completion with whatever XML dialect
-(assuming you have data file for it).
+Data for HTML completion will be read from 'autoload/xml/html10s.vim' file
+located somewhere in 'runtimepath'.
+
+Note: HTML completion files are also located in 'autoload/xml'
+directory.
+
+More about format of data file in |xml-omni-datafile|. Some of data
+files may in future be found on vim-online site (|www|).
+
+Note that b:html_omni_flavor may point to file with any XML data.  This
+makes possible to mix PHP (|ft-php-omni|) completion with whatever XML
+dialect (assuming you have data file for it).
 
 
 JAVASCRIPT					       *ft-javascript-omni*
@@ -1359,6 +1370,39 @@
 original HTML files completion of tags (and only tags) isn't context aware.
 
 
+RUBY                                                    *ft-ruby-omni*
+
+Completion of Ruby code requires that vim be built with |+ruby|.
+
+Ruby completion will parse your buffer on demand in order to provide a list of
+completions.  These completions will be drawn from modules loaded by 'require'
+and modules defined in the current buffer.
+
+The completions provided by CTRL-X CTRL-O are sensitive to the context:
+
+          CONTEXT                          COMPLETIONS PROVIDED ~
+
+ 1. Not inside a class definition    Classes, constants and globals
+
+ 2. Inside a class definition        Methods or constants defined in the class
+
+ 3. After '.', '::' or ':'           Methods applicable to the object being
+                                       dereferenced
+
+ 4. After ':' or ':foo'              Symbol name (beginning with 'foo')
+
+Notes:
+ - Vim will load/evaluate code in order to provide completions.  This may
+   cause some code execution, which may be a concern.
+ - In context 2 above, anonymous classes are not supported.
+ - In context 3 above, Vim will attempt to determine the methods supported by
+   the object.
+ - Vim can detect and load the Rails environment for files within a rails
+   project. The feature is disabled by default, to enable it add >
+	   let g:rubycomplete_rails = 1
+<  to your vimrc.
+
+
 SYNTAX							*ft-syntax-omni*
 
 This uses the current syntax highlighting for completion.  It can be used for
diff --git a/runtime/doc/intro.txt b/runtime/doc/intro.txt
index 09dd5da..91a70c3 100644
--- a/runtime/doc/intro.txt
+++ b/runtime/doc/intro.txt
@@ -1,4 +1,4 @@
-*intro.txt*     For Vim version 7.0e.  Last change: 2006 Apr 09
+*intro.txt*     For Vim version 7.0e.  Last change: 2006 Apr 20
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -75,7 +75,7 @@
 ==============================================================================
 2. Vim on the internet					*internet*
 
-			*www* *faq* *FAQ* *distribution* *download*
+			*www* *WWW*  *faq* *FAQ* *distribution* *download*
 The Vim pages contain the most recent information about Vim.  They also
 contain links to the most recent version of Vim.  The FAQ is a list of
 Frequently Asked Questions.  Read this if you have problems.
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 506ca24..114f8cd 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 7.0e.  Last change: 2006 Apr 19
+*map.txt*       For Vim version 7.0e.  Last change: 2006 Apr 20
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -882,10 +882,11 @@
 			avoid that a typed {lhs} is expanded, since
 			command-line abbreviations apply here.
 
-:ab[breviate] {lhs} {rhs}
+:ab[breviate] [<expr>] {lhs} {rhs}
 			add abbreviation for {lhs} to {rhs}.  If {lhs} already
 			existed it is replaced with the new {rhs}.  {rhs} may
 			contain spaces.
+			See |:map-<expr>| for the optional <expr> argument.
 
 						*:una* *:unabbreviate*
 :una[bbreviate] {lhs}	Remove abbreviation for {lhs} from the list.  If none
@@ -895,12 +896,13 @@
 			expansion insert a CTRL-V (type it twice).
 
 						*:norea* *:noreabbrev*
-:norea[bbrev] [lhs] [rhs]
+:norea[bbrev] [<expr>] [lhs] [rhs]
 			same as ":ab", but no remapping for this {rhs} {not
 			in Vi}
 
 						*:ca* *:cabbrev*
-:ca[bbrev] [lhs] [rhs]	same as ":ab", but for Command-line mode only.  {not
+:ca[bbrev] [<expr>] [lhs] [rhs]
+			same as ":ab", but for Command-line mode only.  {not
 			in Vi}
 
 						*:cuna* *:cunabbrev*
@@ -908,19 +910,20 @@
 			in Vi}
 
 						*:cnorea* *:cnoreabbrev*
-:cnorea[bbrev] [lhs] [rhs]
+:cnorea[bbrev] [<expr>] [lhs] [rhs]
 			same as ":ab", but for Command-line mode only and no
 			remapping for this {rhs} {not in Vi}
 
 						*:ia* *:iabbrev*
-:ia[bbrev] [lhs] [rhs]	same as ":ab", but for Insert mode only.  {not in Vi}
+:ia[bbrev] [<expr>] [lhs] [rhs]
+			same as ":ab", but for Insert mode only.  {not in Vi}
 
 						*:iuna* *:iunabbrev*
 :iuna[bbrev] {lhs}	same as ":una", but for insert mode only.  {not in
 			Vi}
 
 						*:inorea* *:inoreabbrev*
-:inorea[bbrev] [lhs] [rhs]
+:inorea[bbrev] [<expr>] [lhs] [rhs]
 			same as ":ab", but for Insert mode only and no
 			remapping for this {rhs} {not in Vi}
 
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 1b18f80..beee11d 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0e.  Last change: 2006 Apr 18
+*options.txt*	For Vim version 7.0e.  Last change: 2006 Apr 20
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -6684,6 +6684,7 @@
 	this.  'textwidth' is set to 0 when the 'paste' option is set.  When
 	'textwidth' is zero, 'wrapmargin' may be used.  See also
 	'formatoptions' and |ins-textwidth|.
+	When 'formatexpr' is set it will be used to break the line.
 	NOTE: This option is set to 0 when 'compatible' is set.
 
 						*'thesaurus'* *'tsr'*
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index 70c95da..7aeeabf 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt*	For Vim version 7.0e.  Last change: 2006 Apr 12
+*spell.txt*	For Vim version 7.0e.  Last change: 2006 Apr 20
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -161,6 +161,10 @@
 			mode and when there are no line wraps).  Click on the
 			first line (the header) to cancel.
 
+			The suggestions listed normally replace a highlighted
+			bad word.  Sometimes they include other text, in that
+			case the replaced text is also listed after a "<".
+
 			If a count is used that suggestion is used, without
 			prompting.  For example, "1z=" always takes the first
 			suggestion.
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 6285f7e..0df6241 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.0e.  Last change: 2006 Apr 15
+*syntax.txt*	For Vim version 7.0e.  Last change: 2006 Apr 20
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1606,12 +1606,22 @@
 
 LUA						*lua.vim* *ft-lua-syntax*
 
-This syntax file may be used for Lua 4.0 and Lua 5.0 (default).  If you are
-programming in Lua 4.0, use this: >
+This syntax file may be used for Lua 4.0, Lua 5.0 or Lua 5.1 (the latter is
+the default). You can select one of these versions using the global variables
+lua_version and lua_subversion. For example, to activate Lua
+4.0 syntax highlighting, use this command: >
 
 	:let lua_version = 4
 
-If lua_version variable doesn't exist, it is set to 5.
+If you are using Lua 5.0, use these commands: >
+
+	:let lua_version = 5
+	:let lua_subversion = 0
+
+To restore highlighting for Lua 5.1: >
+
+	:let lua_version = 5
+	:let lua_subversion = 1
 
 
 MAIL						*mail.vim* *ft-mail.vim*
@@ -2765,7 +2775,7 @@
   :syntax keyword   Type   contained int long char
   :syntax keyword   Type   int long contained char
   :syntax keyword   Type   int long char contained
-<								*E747*
+<								*E789*
 	When you have a keyword with an optional tail, like Ex commands in
 	Vim, you can put the optional characters inside [], to define all the
 	variations at once: >
diff --git a/runtime/doc/tags b/runtime/doc/tags
index e8d6853..2ea8a9e 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -3959,7 +3959,6 @@
 E745	eval.txt	/*E745*
 E746	eval.txt	/*E746*
 E747	editing.txt	/*E747*
-E747	syntax.txt	/*E747*
 E748	repeat.txt	/*E748*
 E749	eval.txt	/*E749*
 E75	vi_diff.txt	/*E75*
@@ -4005,6 +4004,7 @@
 E786	eval.txt	/*E786*
 E787	diff.txt	/*E787*
 E788	autocmd.txt	/*E788*
+E789	syntax.txt	/*E789*
 E79	message.txt	/*E79*
 E80	message.txt	/*E80*
 E800	arabic.txt	/*E800*
@@ -4264,6 +4264,7 @@
 W17	arabic.txt	/*W17*
 W18	syntax.txt	/*W18*
 WORD	motion.txt	/*WORD*
+WWW	intro.txt	/*WWW*
 Win32	os_win32.txt	/*Win32*
 WinEnter	autocmd.txt	/*WinEnter*
 WinLeave	autocmd.txt	/*WinLeave*
@@ -5314,6 +5315,7 @@
 ft-quake-syntax	syntax.txt	/*ft-quake-syntax*
 ft-readline-syntax	syntax.txt	/*ft-readline-syntax*
 ft-rexx-syntax	syntax.txt	/*ft-rexx-syntax*
+ft-ruby-omni	insert.txt	/*ft-ruby-omni*
 ft-ruby-syntax	syntax.txt	/*ft-ruby-syntax*
 ft-scheme-syntax	syntax.txt	/*ft-scheme-syntax*
 ft-sdl-syntax	syntax.txt	/*ft-sdl-syntax*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index e3f0f6f..82fc5dd 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0e.  Last change: 2006 Apr 19
+*todo.txt*      For Vim version 7.0e.  Last change: 2006 Apr 20
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,14 +30,13 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Hang in omni completion when 'lines' is 6. (dtsfan)
+For a tooltip of at GUI tab label we need a new field.  Also 'guitabtip'?
 
 Crash in "z=" when the change triggers checking out the file, FileChangedRO
 event.  Problem in move_lines()?  FileChangedShell also involved? (Neil Bird)
 Added a few checks for valid buffer, did that help?
 
-Check findoption() return value.
-Other coverity false positives?
+Fix coverity false positives?
 
 Add more tests for all new functionality in Vim 7.  Especially new functions.
 
@@ -1086,6 +1085,7 @@
 Tab pages:
 9   GUI implementation for the tab pages line for other systems.
 8   Make GUI menu in tab pages line configurable.  Like the popup menu.
+8   balloons for the tab page labels that are shortened to show the full path.
 8   :tabmove +N	 move tab page N pages forward
 8   :tabmove -N	 move tab page N pages backward
 7   :tabdup	 duplicate the tab with all its windows.
@@ -2009,7 +2009,8 @@
     Error	    - When an error happens
     NormalEnter	    - Entering Normal mode
     ReplaceEnter    - Entering Replace mode
-    CmdEnter	    - Entering Cmdline mode
+    CmdEnter	    - Entering Cmdline mode (with type of cmdline to allow
+			different mapping)
     VisualEnter	    - Entering Visual mode
     *Leave	    - Leaving a mode (in pair with the above *Enter)
     VimLeaveCheck    - Before Vim decides to exit, so that it can be cancelled
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 624c194..6c701e1 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0e.  Last change: 2006 Apr 19
+*version7.txt*  For Vim version 7.0e.  Last change: 2006 Apr 20
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -243,6 +243,7 @@
 	(X)HTML with CSS			|ft-html-omni|
 	JavaScript				|ft-javascript-omni|
 	Python
+	Ruby					|ft-ruby-omni|
 	XML					|ft-xml-omni|
 	any language wih syntax highligting	|ft-syntax-omni|
 
@@ -2559,4 +2560,14 @@
 Win32: When 'encoding' differs from the system encoding tab page labels with
 non-ASCII characters looked wrong. (Yegappan Lakshmanan)
 
+Motif: building failed when Xm/Notebook.h doesn't exist.  Added a configure
+check, disable GUI tabline when it's missing.
+
+Mac: When compiled without multi-byte feature the clipboard didn't work.
+
+It was possible to switch to another tab page when the cmdline window is open.
+
+Completion could hang when 'lines' is 6 and a preview window was opened.
+
+
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/spell/ca/ca_ES.diff b/runtime/spell/ca/ca_ES.diff
index 43ff904..2372e8c 100644
--- a/runtime/spell/ca/ca_ES.diff
+++ b/runtime/spell/ca/ca_ES.diff
@@ -31,7 +31,7 @@
 ! REP l·l l
   
 *** ca_ES.orig.dic	Sat Aug 13 18:33:44 2005
---- ca_ES.dic	Thu Jan 12 21:55:39 2006
+--- ca_ES.dic	Thu Apr 20 20:31:16 2006
 ***************
 *** 1,2 ****
 ! 149661
diff --git a/runtime/spell/es/es_ES.diff b/runtime/spell/es/es_ES.diff
index f52228f..13c6e15 100644
--- a/runtime/spell/es/es_ES.diff
+++ b/runtime/spell/es/es_ES.diff
@@ -24,7 +24,7 @@
 + 
   SFX J Y 12
 *** es_ES.orig.dic	Thu Aug 25 19:19:44 2005
---- es_ES.dic	Thu Aug 25 20:18:55 2005
+--- es_ES.dic	Thu Apr 20 20:30:24 2006
 ***************
 *** 485,487 ****
   acercóse
@@ -74,8 +74,14 @@
   inadecuación/S
 --- 25126,25127 ----
 ***************
-*** 28007,28009 ****
-  librancista/S
-- líbranos
+*** 28008,28010 ****
   líbranos
---- 27999,28000 ----
+- líbranos
+  libranza/S
+--- 28000,28001 ----
+***************
+*** 48480,48481 ****
+--- 48471,48473 ----
+  xilotila/S
++ y
+  ya
diff --git a/runtime/syntax/bindzone.vim b/runtime/syntax/bindzone.vim
index 3c23e21..9facdbe 100644
--- a/runtime/syntax/bindzone.vim
+++ b/runtime/syntax/bindzone.vim
@@ -1,9 +1,12 @@
 " Vim syntax file
-" Language:	BIND 8.x zone files (RFC1035)
-" Maintainer:	glory hump <rnd@web-drive.ru>
-" Last change:	Thu Apr 26 02:16:18 SAMST 2001
-" Filenames:	/var/named/*
-" URL:	http://rnd.web-drive.ru/vim/syntax/bindzone.vim
+" Language:     BIND zone files (RFC1035)
+" Maintainer:   Julian Mehnle <julian@mehnle.net>
+" URL:          http://www.mehnle.net/source/odds+ends/vim/syntax/
+" Last Change:  Thu 2006-04-20 12:30:45 UTC
+" 
+" Based on an earlier version by Вячеслав Горбанев (Slava Gorbanev), with
+" heavy modifications.
+" 
 " $Id$
 
 " For version 5.x: Clear all syntax items
@@ -16,54 +19,55 @@
 
 syn case match
 
-if version >= 600
-  setlocal iskeyword=.,-,48-58,A-Z,a-z,_
-else
-  set iskeyword=.,-,48-58,A-Z,a-z,_
-endif
+" Directives
+syn region      zoneRRecord     start=/^/ end=/$/ contains=zoneOwnerName,zoneSpecial,zoneTTL,zoneClass,zoneRRType,zoneComment,zoneUnknown
 
+syn match       zoneDirective   /^\$ORIGIN\s\+/   nextgroup=zoneOrigin,zoneUnknown
+syn match       zoneDirective   /^\$TTL\s\+/      nextgroup=zoneNumber,zoneUnknown
+syn match       zoneDirective   /^\$INCLUDE\s\+/  nextgroup=zoneText,zoneUnknown
+syn match       zoneDirective   /^\$GENERATE\s/
 
-" Master File Format (rfc 1035)
+syn match       zoneUnknown     contained /\S\+/
 
-" directives
-syn region	zoneRRecord	start=+^+ end=+$+ contains=zoneLHSDomain,zoneLHSIP,zoneIllegalDom,zoneWhitespace,zoneComment,zoneParen,zoneSpecial
-syn match	zoneDirective	/\$ORIGIN\s\+/ nextgroup=zoneDomain,zoneIllegalDom
-syn match	zoneDirective	/\$TTL\s\+/ nextgroup=zoneTTL
-syn match	zoneDirective	/\$INCLUDE\s\+/
-syn match	zoneDirective	/\$GENERATE\s/
+syn match       zoneOwnerName   contained /^[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\)\@=/ nextgroup=zoneTTL,zoneClass,zoneRRType skipwhite
+syn match       zoneOrigin      contained  /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/
+syn match       zoneDomain      contained  /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/
 
-syn match	zoneWhitespace	contained /^\s\+/ nextgroup=zoneTTL,zoneClass,zoneRRType
-syn match	zoneError	"\s\+$"
-syn match	zoneSpecial	contained /^[@.]\s\+/ nextgroup=zoneTTL,zoneClass,zoneRRType
-syn match	zoneSpecial	contained /@$/
+syn match       zoneSpecial     contained /^[@*.]\s/
+syn match       zoneTTL         contained /\<\d[0-9HhWwDd]*\>/  nextgroup=zoneClass,zoneRRType skipwhite
+syn keyword     zoneClass       contained IN CHAOS              nextgroup=zoneRRType,zoneTTL   skipwhite
+syn keyword     zoneRRType      contained A AAAA CNAME HINFO MX NS PTR SOA SRV TXT nextgroup=zoneRData skipwhite
+syn match       zoneRData       contained /[^;]*/ contains=zoneDomain,zoneIPAddr,zoneIP6Addr,zoneText,zoneNumber,zoneParen,zoneUnknown
 
-" domains and IPs
-syn match	zoneLHSDomain	contained /^[-0-9A-Za-z.]\+\s\+/ nextgroup=zoneTTL,zoneClass,zoneRRType
-syn match	zoneLHSIP	contained /^[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\s\+/ nextgroup=zoneTTL,zoneClass,zoneRRType
-syn match	zoneIPaddr	contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/
-syn match	zoneDomain	contained /\<[0-9A-Za-z][-0-9A-Za-z.]\+\>/
+syn match       zoneIPAddr      contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/
 
-syn match	zoneIllegalDom	contained /\S*[^-A-Za-z0-9.[:space:]]\S*\>/
-"syn match	zoneIllegalDom	contained /[0-9]\S*[-A-Za-z]\S*/
+"   Plain IPv6 address          IPv6-embedded-IPv4 address
+"   1111:2:3:4:5:6:7:8          1111:2:3:4:5:6:127.0.0.1
+syn match       zoneIP6Addr     contained /\<\(\x\{1,4}:\)\{6}\(\x\{1,4}:\x\{1,4}\|\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
+"   ::[...:]8                   ::[...:]127.0.0.1
+syn match       zoneIP6Addr     contained /\s\@<=::\(\(\x\{1,4}:\)\{,6}\x\{1,4}\|\(\x\{1,4}:\)\{,5}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
+"   1111::[...:]8               1111::[...:]127.0.0.1
+syn match       zoneIP6Addr     contained /\<\(\x\{1,4}:\)\{1}:\(\(\x\{1,4}:\)\{,5}\x\{1,4}\|\(\x\{1,4}:\)\{,4}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
+"   1111:2::[...:]8             1111:2::[...:]127.0.0.1
+syn match       zoneIP6Addr     contained /\<\(\x\{1,4}:\)\{2}:\(\(\x\{1,4}:\)\{,4}\x\{1,4}\|\(\x\{1,4}:\)\{,3}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
+"   1111:2:3::[...:]8           1111:2:3::[...:]127.0.0.1
+syn match       zoneIP6Addr     contained /\<\(\x\{1,4}:\)\{3}:\(\(\x\{1,4}:\)\{,3}\x\{1,4}\|\(\x\{1,4}:\)\{,2}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
+"   1111:2:3:4::[...:]8         1111:2:3:4::[...:]127.0.0.1
+syn match       zoneIP6Addr     contained /\<\(\x\{1,4}:\)\{4}:\(\(\x\{1,4}:\)\{,2}\x\{1,4}\|\(\x\{1,4}:\)\{,1}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
+"   1111:2:3:4:5::[...:]8       1111:2:3:4:5::127.0.0.1
+syn match       zoneIP6Addr     contained /\<\(\x\{1,4}:\)\{5}:\(\(\x\{1,4}:\)\{,1}\x\{1,4}\|\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
+"   1111:2:3:4:5:6::8           -
+syn match       zoneIP6Addr     contained /\<\(\x\{1,4}:\)\{6}:\x\{1,4}\>/
+"   1111[:...]::                -
+syn match       zoneIP6Addr     contained /\<\(\x\{1,4}:\)\{1,7}:\(\s\|;\|$\)\@=/
 
-" keywords
-syn keyword	zoneClass	IN CHAOS nextgroup=zoneRRType
+syn match       zoneText        contained /"\([^"\\]\|\\.\)*"\(\s\|;\|$\)\@=/
+syn match       zoneNumber      contained /\<[0-9]\+\(\s\|;\|$\)\@=/
+syn match       zoneSerial      contained /\<[0-9]\{9,10}\(\s\|;\|$\)\@=/
 
-syn match	zoneTTL	contained /\<[0-9HhWwDd]\+\s\+/ nextgroup=zoneClass,zoneRRType
-syn match	zoneRRType	contained /\s*\<\(NS\|HINFO\)\s\+/ nextgroup=zoneSpecial,zoneDomain
-syn match	zoneRRType	contained /\s*\<CNAME\s\+/ nextgroup=zoneDomain,zoneSpecial
-syn match	zoneRRType	contained /\s*\<SOA\s\+/ nextgroup=zoneDomain,zoneIllegalDom
-syn match	zoneRRType	contained /\s*\<PTR\s\+/ nextgroup=zoneDomain,zoneIllegalDom
-syn match	zoneRRType	contained /\s*\<MX\s\+/ nextgroup=zoneMailPrio
-syn match	zoneRRType	contained /\s*\<A\s\+/ nextgroup=zoneIPaddr,zoneIllegalDom
-
-" FIXME: catchup serial number
-syn match	zoneSerial	contained /\<[0-9]\{9}\>/
-
-syn match	zoneMailPrio	contained /\<[0-9]\+\s*/ nextgroup=zoneDomain,zoneIllegalDom
-syn match	zoneErrParen	/)/
-syn region	zoneParen	contained start=+(+ end=+)+ contains=zoneSerial,zoneTTL,zoneComment
-syn match	zoneComment	";.*"
+syn match       zoneErrParen    /)/
+syn region      zoneParen       contained start="(" end=")" contains=zoneSerial,zoneNumber,zoneComment
+syn match       zoneComment     /;.*/
 
 " Define the default highlighting.
 " For version 5.7 and earlier: only when not done already
@@ -76,23 +80,31 @@
     command -nargs=+ HiLink hi def link <args>
   endif
 
-  HiLink zoneComment	Comment
-  HiLink zoneDirective	Macro
-  HiLink zoneLHSDomain	Statement
-  HiLink zoneLHSIP	Statement
-  HiLink zoneClass	Include
-  HiLink zoneSpecial	Special
-  HiLink zoneRRType	Type
-  HiLink zoneError	Error
-  HiLink zoneErrParen	Error
-  HiLink zoneIllegalDom	Error
-  HiLink zoneSerial	Todo
-  HiLink zoneIPaddr	Number
-  HiLink zoneDomain	Identifier
+  HiLink zoneDirective    Macro
+  
+  HiLink zoneUnknown      Error
+  
+  HiLink zoneOrigin       Statement
+  HiLink zoneOwnerName    Statement
+  HiLink zoneDomain       Identifier
+  
+  HiLink zoneSpecial      Special
+  HiLink zoneTTL          Constant
+  HiLink zoneClass        Include
+  HiLink zoneRRType       Type
+  
+  HiLink zoneIPAddr       Number
+  HiLink zoneIP6Addr      Number
+  HiLink zoneText         String
+  HiLink zoneNumber       Number
+  HiLink zoneSerial       Special
+  
+  HiLink zoneErrParen     Error
+  HiLink zoneComment      Comment
 
   delcommand HiLink
 endif
 
 let b:current_syntax = "bindzone"
 
-" vim: ts=17
+" vim:sts=2 sw=2
diff --git a/runtime/syntax/crontab.vim b/runtime/syntax/crontab.vim
index 372478c..117f98d 100644
--- a/runtime/syntax/crontab.vim
+++ b/runtime/syntax/crontab.vim
@@ -1,10 +1,12 @@
 " Vim syntax file
-" Language:	crontab
-" Maintainer:	John Hoelzel johnh51@users.sourceforge.net
-" Maintainer:	David Necas (Yeti) <yeti@physics.muni.cz>
-" Last Change:	2005-04-26
-" Filenames:	/tmp/crontab.* used by "crontab -e"
-" URL:		http://trific.ath.cx/Ftp/vim/syntax/crontab.vim
+" Language: crontab
+" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
+" Original Maintainer: John Hoelzel johnh51@users.sourceforge.net
+" License: This file can be redistribued and/or modified under the same terms
+"   as Vim itself.
+" Filenames: /tmp/crontab.* used by "crontab -e"
+" URL: http://trific.ath.cx/Ftp/vim/syntax/crontab.vim
+" Last Change: 2006-04-20
 "
 " crontab line format:
 " Minutes   Hours   Days   Months   Days_of_Week   Commands # comments
@@ -17,24 +19,23 @@
   finish
 endif
 
-syntax match  crontabMin     "^\s*[-0-9/,.*]\+"  nextgroup=crontabHr   skipwhite
-syntax match  crontabHr       "\s[-0-9/,.*]\+"  nextgroup=crontabDay  skipwhite contained
-syntax match  crontabDay      "\s[-0-9/,.*]\+"  nextgroup=crontabMnth skipwhite contained
+syntax match crontabMin "^\s*[-0-9/,.*]\+" nextgroup=crontabHr skipwhite
+syntax match crontabHr "\s[-0-9/,.*]\+" nextgroup=crontabDay skipwhite contained
+syntax match crontabDay "\s[-0-9/,.*]\+" nextgroup=crontabMnth skipwhite contained
 
-syntax match  crontabMnth  "\s[-a-z0-9/,.*]\+"  nextgroup=crontabDow  skipwhite contained
-syntax keyword crontabMnth12 contained   jan feb mar apr may jun jul aug sep oct nov dec
+syntax match crontabMnth "\s[-a-z0-9/,.*]\+" nextgroup=crontabDow skipwhite contained
+syntax keyword crontabMnth12 contained jan feb mar apr may jun jul aug sep oct nov dec
 
-syntax match  crontabDow   "\s[-a-z0-9/,.*]\+"  nextgroup=crontabCmd  skipwhite contained
-syntax keyword crontabDow7   contained    sun mon tue wed thu fri sat
+syntax match crontabDow "\s[-a-z0-9/,.*]\+" nextgroup=crontabCmd skipwhite contained
+syntax keyword crontabDow7 contained sun mon tue wed thu fri sat
 
-"  syntax region crontabCmd  start="\<[a-z0-9\/\(]" end="$" nextgroup=crontabCmnt skipwhite contained contains=crontabCmnt keepend
+syntax region crontabCmd start="\S" end="$" skipwhite contained keepend contains=crontabPercent
+syntax match crontabCmnt "^\s*#.*"
+syntax match crontabPercent "[^\\]%.*"lc=1 contained
 
-syntax region crontabCmd  start="\S" end="$" nextgroup=crontabCmnt skipwhite contained keepend
-syntax match  crontabCmnt "^\s*#.*"
+syntax match crontabNick "^\s*@\(reboot\|yearly\|annually\|monthly\|weekly\|daily\|midnight\|hourly\)\>" nextgroup=crontabCmd skipwhite
 
-syntax match  crontabNick  "^\s*@\(reboot\|yearly\|annually\|monthly\|weekly\|daily\|midnight\|hourly\)\>" nextgroup=crontabCmd skipwhite
-
-syntax match  crontabVar  "^\s*\k\w*\s*="me=e-1
+syntax match crontabVar "^\s*\k\w*\s*="me=e-1
 
 " Define the default highlighting.
 " For version 5.7 and earlier: only when not done already
@@ -63,9 +64,10 @@
 
   HiLink crontabNick		Special
   HiLink crontabVar		Identifier
+  HiLink crontabPercent		Special
 
 " comment out next line for to suppress unix commands coloring.
-  HiLink crontabCmd		Type
+  HiLink crontabCmd		Statement
 
   HiLink crontabCmnt		Comment
 
diff --git a/runtime/syntax/inform.vim b/runtime/syntax/inform.vim
index 1190163..d8ba43d 100644
--- a/runtime/syntax/inform.vim
+++ b/runtime/syntax/inform.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:     Inform
-" Maintainer:   Stephen Thomas (informvim@stephenthomas.uklinux.net)
-" URL:		http://www.stephenthomas.uklinux.net/informvim
-" Last Change:  2004 May 16
+" Maintainer:   Stephen Thomas (stephen@gowarthomas.com)
+" URL:		http://www.gowarthomas.com/informvim
+" Last Change:  2006 April 20
 
 " Quit when a syntax file was already loaded
 if version < 600
diff --git a/runtime/syntax/lua.vim b/runtime/syntax/lua.vim
index fe97712..7d72603 100644
--- a/runtime/syntax/lua.vim
+++ b/runtime/syntax/lua.vim
@@ -1,297 +1,299 @@
-" Vim syntax file

-" Language:	Lua 4.0, Lua 5.0 and Lua 5.1

-" Maintainer:	Marcus Aurelius Farias <marcus.cf 'at' bol.com.br>

-" First Author:	Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br>

-" Last Change:	2006 Apr. 19

-" Options:	lua_version = 4 or 5

-"		lua_subversion = 0 (4.0, 5.0) or 1 (5.1)

-"		default 5.1

-

-" For version 5.x: Clear all syntax items

-" For version 6.x: Quit when a syntax file was already loaded

-if version < 600

-  syntax clear

-elseif exists("b:current_syntax")

-  finish

-endif

-

-if !exists("lua_version")

-  " Default is lua 5.1

-  let lua_version = 5

-  let lua_subversion = 1

-elseif !exists("lua_subversion")

-  " lua_version exists, but lua_subversion doesn't. So, set it to 0

-  let lua_subversion = 0

-endif

-

-syn case match

-

-" syncing method

-syn sync minlines=100

-

-" Comments

-syn keyword luaTodo             contained TODO FIXME XXX

-syn match   luaComment          "--.*$" contains=luaTodo

-if lua_version == 5 && lua_subversion == 0

-  syn region  luaComment        matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment

-  syn region  luaInnerComment   contained transparent start="\[\[" end="\]\]"

-elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)

-  " Comments in Lua 5.1: [[ ... ]], [=[ ... ]=], [===[ ... ]===], etc.

-  syn region  luaComment        matchgroup=luaComment start="--\[\z(=*\)\[" end="\]\z1\]"

-endif

-

-" First line may start with #!

-syn match luaComment "\%^#!.*"

-

-" catch errors caused by wrong parenthesis and wrong curly brackets or

-" keywords placed outside their respective blocks

-

-syn region luaParen transparent start='(' end=')' contains=ALLBUT,luaError,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement

-syn match  luaError ")"

-syn match  luaError "}"

-syn match  luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>"

-

-" Function declaration

-syn region luaFunctionBlock transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat

-

-" if then else elseif end

-syn keyword luaCond contained else

-

-" then ... end

-syn region luaCondEnd contained transparent matchgroup=luaCond start="\<then\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaRepeat

-

-" elseif ... then

-syn region luaCondElseif contained transparent matchgroup=luaCond start="\<elseif\>" end="\<then\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat

-

-" if ... then

-syn region luaCondStart transparent matchgroup=luaCond start="\<if\>" end="\<then\>"me=e-4 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaCondEnd skipwhite skipempty

-

-" do ... end

-syn region luaBlock transparent matchgroup=luaStatement start="\<do\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat

-

-" repeat ... until

-syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<repeat\>" end="\<until\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat

-

-" while ... do

-syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<while\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaBlock skipwhite skipempty

-

-" for ... do and for ... in ... do

-syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<for\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd nextgroup=luaBlock skipwhite skipempty

-

-" Following 'else' example. This is another item to those

-" contains=ALLBUT,... because only the 'for' luaRepeatBlock contains it.

-syn keyword luaRepeat contained in

-

-" other keywords

-syn keyword luaStatement return local break

-syn keyword luaOperator  and or not

-syn keyword luaConstant  nil

-if lua_version > 4

-  syn keyword luaConstant true false

-endif

-

-" Strings

-syn match  luaSpecial contained "\\[\\abfnrtv\'\"[\]]\|\\\d\{,3}"

-syn region luaString  start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial

-syn region luaString  start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial

-" Nested strings

-if (lua_version == 5 && lua_subversion == 0) || lua_version < 5

-  syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2

-elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)

-  syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]"

-endif

-

-" integer number

-syn match luaNumber "\<[0-9]\+\>"

-" floating point number, with dot, optional exponent

-syn match luaFloat  "\<[0-9]\+\.[0-9]*\%(e[-+]\=[0-9]\+\)\=\>"

-" floating point number, starting with a dot, optional exponent

-syn match luaFloat  "\.[0-9]\+\%(e[-+]\=[0-9]\+\)\=\>"

-" floating point number, without dot, with exponent

-syn match luaFloat  "\<[0-9]\+e[-+]\=[0-9]\+\>"

-

-" tables

-syn region  luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement

-

-syn keyword luaFunc assert collectgarbage dofile error gcinfo next

-syn keyword luaFunc print rawget rawset tonumber tostring type _VERSION

-

-if lua_version == 4

-  syn keyword luaFunc _ALERT _ERRORMESSAGE

-  syn keyword luaFunc call copytagmethods dostring

-  syn keyword luaFunc foreach foreachi getglobal getn

-  syn keyword luaFunc gettagmethod globals newtag

-  syn keyword luaFunc setglobal settag settagmethod sort

-  syn keyword luaFunc tag tinsert tremove

-  syn keyword luaFunc _INPUT _OUTPUT _STDIN _STDOUT _STDERR

-  syn keyword luaFunc openfile closefile flush seek

-  syn keyword luaFunc setlocale execute remove rename tmpname

-  syn keyword luaFunc getenv date clock exit

-  syn keyword luaFunc readfrom writeto appendto read write

-  syn keyword luaFunc PI abs sin cos tan asin

-  syn keyword luaFunc acos atan atan2 ceil floor

-  syn keyword luaFunc mod frexp ldexp sqrt min max log

-  syn keyword luaFunc log10 exp deg rad random

-  syn keyword luaFunc randomseed strlen strsub strlower strupper

-  syn keyword luaFunc strchar strrep ascii strbyte

-  syn keyword luaFunc format strfind gsub

-  syn keyword luaFunc getinfo getlocal setlocal setcallhook setlinehook

-elseif lua_version == 5

-  " Not sure if all these functions need to be highlighted...

-  syn keyword luaFunc _G getfenv getmetatable ipairs loadfile

-  syn keyword luaFunc loadstring pairs pcall rawequal

-  syn keyword luaFunc require setfenv setmetatable unpack xpcall

-  if lua_subversion == 0

-    syn keyword luaFunc loadlib LUA_PATH _LOADED _REQUIREDNAME

-  elseif lua_subversion == 1

-    syn keyword luaFunc load module select

-    syn match luaFunc /package\.cpath/

-    syn match luaFunc /package\.loaded/

-    syn match luaFunc /package\.loadlib/

-    syn match luaFunc /package\.path/

-    syn match luaFunc /package\.preload/

-    syn match luaFunc /package\.seeall/

-    syn match luaFunc /coroutine\.running/

-  endif

-  syn match   luaFunc /coroutine\.create/

-  syn match   luaFunc /coroutine\.resume/

-  syn match   luaFunc /coroutine\.status/

-  syn match   luaFunc /coroutine\.wrap/

-  syn match   luaFunc /coroutine\.yield/

-  syn match   luaFunc /string\.byte/

-  syn match   luaFunc /string\.char/

-  syn match   luaFunc /string\.dump/

-  syn match   luaFunc /string\.find/

-  syn match   luaFunc /string\.len/

-  syn match   luaFunc /string\.lower/

-  syn match   luaFunc /string\.rep/

-  syn match   luaFunc /string\.sub/

-  syn match   luaFunc /string\.upper/

-  syn match   luaFunc /string\.format/

-  syn match   luaFunc /string\.gsub/

-  if lua_subversion == 0

-    syn match luaFunc /string\.gfind/

-  elseif lua_subversion == 1

-    syn match luaFunc /string\.gmatch/

-    syn match luaFunc /string\.match/

-    syn match luaFunc /string\.reverse/

-    syn match luaFunc /table\.maxn/

-  endif

-  syn match   luaFunc /table\.concat/

-  syn match   luaFunc /table\.foreach/

-  syn match   luaFunc /table\.foreachi/

-  syn match   luaFunc /table\.getn/

-  syn match   luaFunc /table\.sort/

-  syn match   luaFunc /table\.insert/

-  syn match   luaFunc /table\.remove/

-  syn match   luaFunc /table\.setn/

-  syn match   luaFunc /math\.abs/

-  syn match   luaFunc /math\.acos/

-  syn match   luaFunc /math\.asin/

-  syn match   luaFunc /math\.atan/

-  syn match   luaFunc /math\.atan2/

-  syn match   luaFunc /math\.ceil/

-  syn match   luaFunc /math\.sin/

-  syn match   luaFunc /math\.cos/

-  syn match   luaFunc /math\.tan/

-  syn match   luaFunc /math\.deg/

-  syn match   luaFunc /math\.exp/

-  syn match   luaFunc /math\.floor/

-  syn match   luaFunc /math\.log/

-  syn match   luaFunc /math\.log10/

-  syn match   luaFunc /math\.max/

-  syn match   luaFunc /math\.min/

-  if lua_subversion == 0

-    syn match luaFunc /math\.mod/

-  elseif lua_subversion == 1

-    syn match luaFunc /math\.fmod/

-    syn match luaFunc /math\.modf/

-    syn match luaFunc /math\.cosh/

-    syn match luaFunc /math\.sinh/

-    syn match luaFunc /math\.tanh/

-  endif

-  syn match   luaFunc /math\.pow/

-  syn match   luaFunc /math\.rad/

-  syn match   luaFunc /math\.sqrt/

-  syn match   luaFunc /math\.frexp/

-  syn match   luaFunc /math\.ldexp/

-  syn match   luaFunc /math\.random/

-  syn match   luaFunc /math\.randomseed/

-  syn match   luaFunc /math\.pi/

-  syn match   luaFunc /io\.stdin/

-  syn match   luaFunc /io\.stdout/

-  syn match   luaFunc /io\.stderr/

-  syn match   luaFunc /io\.close/

-  syn match   luaFunc /io\.flush/

-  syn match   luaFunc /io\.input/

-  syn match   luaFunc /io\.lines/

-  syn match   luaFunc /io\.open/

-  syn match   luaFunc /io\.output/

-  syn match   luaFunc /io\.popen/

-  syn match   luaFunc /io\.read/

-  syn match   luaFunc /io\.tmpfile/

-  syn match   luaFunc /io\.type/

-  syn match   luaFunc /io\.write/

-  syn match   luaFunc /os\.clock/

-  syn match   luaFunc /os\.date/

-  syn match   luaFunc /os\.difftime/

-  syn match   luaFunc /os\.execute/

-  syn match   luaFunc /os\.exit/

-  syn match   luaFunc /os\.getenv/

-  syn match   luaFunc /os\.remove/

-  syn match   luaFunc /os\.rename/

-  syn match   luaFunc /os\.setlocale/

-  syn match   luaFunc /os\.time/

-  syn match   luaFunc /os\.tmpname/

-  syn match   luaFunc /debug\.debug/

-  syn match   luaFunc /debug\.gethook/

-  syn match   luaFunc /debug\.getinfo/

-  syn match   luaFunc /debug\.getlocal/

-  syn match   luaFunc /debug\.getupvalue/

-  syn match   luaFunc /debug\.setlocal/

-  syn match   luaFunc /debug\.setupvalue/

-  syn match   luaFunc /debug\.sethook/

-  syn match   luaFunc /debug\.traceback/

-  if lua_subversion == 1

-    syn match luaFunc /debug\.getfenv/

-    syn match luaFunc /debug\.getmetatable/

-    syn match luaFunc /debug\.getregistry/

-    syn match luaFunc /debug\.setfenv/

-    syn match luaFunc /debug\.setmetatable/

-  endif

-endif

-

-" Define the default highlighting.

-" For version 5.7 and earlier: only when not done already

-" For version 5.8 and later: only when an item doesn't have highlighting yet

-if version >= 508 || !exists("did_lua_syntax_inits")

-  if version < 508

-    let did_lua_syntax_inits = 1

-    command -nargs=+ HiLink hi link <args>

-  else

-    command -nargs=+ HiLink hi def link <args>

-  endif

-

-  HiLink luaStatement		Statement

-  HiLink luaRepeat		Repeat

-  HiLink luaString		String

-  HiLink luaString2		String

-  HiLink luaNumber		Number

-  HiLink luaFloat		Float

-  HiLink luaOperator		Operator

-  HiLink luaConstant		Constant

-  HiLink luaCond		Conditional

-  HiLink luaFunction		Function

-  HiLink luaComment		Comment

-  HiLink luaTodo		Todo

-  HiLink luaTable		Structure

-  HiLink luaError		Error

-  HiLink luaSpecial		SpecialChar

-  HiLink luaFunc		Identifier

-

-  delcommand HiLink

-endif

-

-let b:current_syntax = "lua"

-

-" vim: et ts=8

+" Vim syntax file
+" Language:	Lua 4.0, Lua 5.0 and Lua 5.1
+" Maintainer:	Marcus Aurelius Farias <marcus.cf 'at' bol com br>
+" First Author:	Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br>
+" Last Change:	2006 Apr 21
+" Options:	lua_version = 4 or 5
+"		lua_subversion = 0 (4.0, 5.0) or 1 (5.1)
+"		default 5.1
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+if !exists("lua_version")
+  " Default is lua 5.1
+  let lua_version = 5
+  let lua_subversion = 1
+elseif !exists("lua_subversion")
+  " lua_version exists, but lua_subversion doesn't. So, set it to 0
+  let lua_subversion = 0
+endif
+
+syn case match
+
+" syncing method
+syn sync minlines=100
+
+" Comments
+syn keyword luaTodo             contained TODO FIXME XXX
+syn match   luaComment          "--.*$" contains=luaTodo
+if lua_version == 5 && lua_subversion == 0
+  syn region  luaComment        matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment
+  syn region  luaInnerComment   contained transparent start="\[\[" end="\]\]"
+elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
+  " Comments in Lua 5.1: --[[ ... ]], [=[ ... ]=], [===[ ... ]===], etc.
+  syn region  luaComment        matchgroup=luaComment start="--\[\z(=*\)\[" end="\]\z1\]"
+endif
+
+" First line may start with #!
+syn match luaComment "\%^#!.*"
+
+" catch errors caused by wrong parenthesis and wrong curly brackets or
+" keywords placed outside their respective blocks
+
+syn region luaParen transparent start='(' end=')' contains=ALLBUT,luaError,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement
+syn match  luaError ")"
+syn match  luaError "}"
+syn match  luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>"
+
+" Function declaration
+syn region luaFunctionBlock transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
+
+" if then else elseif end
+syn keyword luaCond contained else
+
+" then ... end
+syn region luaCondEnd contained transparent matchgroup=luaCond start="\<then\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaRepeat
+
+" elseif ... then
+syn region luaCondElseif contained transparent matchgroup=luaCond start="\<elseif\>" end="\<then\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
+
+" if ... then
+syn region luaCondStart transparent matchgroup=luaCond start="\<if\>" end="\<then\>"me=e-4 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaCondEnd skipwhite skipempty
+
+" do ... end
+syn region luaBlock transparent matchgroup=luaStatement start="\<do\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
+
+" repeat ... until
+syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<repeat\>" end="\<until\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
+
+" while ... do
+syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<while\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaBlock skipwhite skipempty
+
+" for ... do and for ... in ... do
+syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<for\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd nextgroup=luaBlock skipwhite skipempty
+
+" Following 'else' example. This is another item to those
+" contains=ALLBUT,... because only the 'for' luaRepeatBlock contains it.
+syn keyword luaRepeat contained in
+
+" other keywords
+syn keyword luaStatement return local break
+syn keyword luaOperator  and or not
+syn keyword luaConstant  nil
+if lua_version > 4
+  syn keyword luaConstant true false
+endif
+
+" Strings
+if lua_version < 5
+  syn match  luaSpecial contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}"
+elseif lua_version == 5 && lua_subversion == 0
+  syn match  luaSpecial contained "\\[\\abfnrtv\'\"[\]]\|\\\d\{,3}"
+  syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2
+elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
+  syn match  luaSpecial contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}"
+  syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]"
+endif
+syn region luaString  start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial
+syn region luaString  start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial
+
+" integer number
+syn match luaNumber "\<[0-9]\+\>"
+" floating point number, with dot, optional exponent
+syn match luaFloat  "\<[0-9]\+\.[0-9]*\%(e[-+]\=[0-9]\+\)\=\>"
+" floating point number, starting with a dot, optional exponent
+syn match luaFloat  "\.[0-9]\+\%(e[-+]\=[0-9]\+\)\=\>"
+" floating point number, without dot, with exponent
+syn match luaFloat  "\<[0-9]\+e[-+]\=[0-9]\+\>"
+
+" tables
+syn region  luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement
+
+syn keyword luaFunc assert collectgarbage dofile error next
+syn keyword luaFunc print rawget rawset tonumber tostring type _VERSION
+
+if lua_version == 4
+  syn keyword luaFunc _ALERT _ERRORMESSAGE gcinfo
+  syn keyword luaFunc call copytagmethods dostring
+  syn keyword luaFunc foreach foreachi getglobal getn
+  syn keyword luaFunc gettagmethod globals newtag
+  syn keyword luaFunc setglobal settag settagmethod sort
+  syn keyword luaFunc tag tinsert tremove
+  syn keyword luaFunc _INPUT _OUTPUT _STDIN _STDOUT _STDERR
+  syn keyword luaFunc openfile closefile flush seek
+  syn keyword luaFunc setlocale execute remove rename tmpname
+  syn keyword luaFunc getenv date clock exit
+  syn keyword luaFunc readfrom writeto appendto read write
+  syn keyword luaFunc PI abs sin cos tan asin
+  syn keyword luaFunc acos atan atan2 ceil floor
+  syn keyword luaFunc mod frexp ldexp sqrt min max log
+  syn keyword luaFunc log10 exp deg rad random
+  syn keyword luaFunc randomseed strlen strsub strlower strupper
+  syn keyword luaFunc strchar strrep ascii strbyte
+  syn keyword luaFunc format strfind gsub
+  syn keyword luaFunc getinfo getlocal setlocal setcallhook setlinehook
+elseif lua_version == 5
+  " Not sure if all these functions need to be highlighted...
+  syn keyword luaFunc _G getfenv getmetatable ipairs loadfile
+  syn keyword luaFunc loadstring pairs pcall rawequal
+  syn keyword luaFunc require setfenv setmetatable unpack xpcall
+  if lua_subversion == 0
+    syn keyword luaFunc gcinfo loadlib LUA_PATH _LOADED _REQUIREDNAME
+  elseif lua_subversion == 1
+    syn keyword luaFunc load module select
+    syn match luaFunc /package\.cpath/
+    syn match luaFunc /package\.loaded/
+    syn match luaFunc /package\.loadlib/
+    syn match luaFunc /package\.path/
+    syn match luaFunc /package\.preload/
+    syn match luaFunc /package\.seeall/
+    syn match luaFunc /coroutine\.running/
+  endif
+  syn match   luaFunc /coroutine\.create/
+  syn match   luaFunc /coroutine\.resume/
+  syn match   luaFunc /coroutine\.status/
+  syn match   luaFunc /coroutine\.wrap/
+  syn match   luaFunc /coroutine\.yield/
+  syn match   luaFunc /string\.byte/
+  syn match   luaFunc /string\.char/
+  syn match   luaFunc /string\.dump/
+  syn match   luaFunc /string\.find/
+  syn match   luaFunc /string\.len/
+  syn match   luaFunc /string\.lower/
+  syn match   luaFunc /string\.rep/
+  syn match   luaFunc /string\.sub/
+  syn match   luaFunc /string\.upper/
+  syn match   luaFunc /string\.format/
+  syn match   luaFunc /string\.gsub/
+  if lua_subversion == 0
+    syn match luaFunc /string\.gfind/
+    syn match luaFunc /table\.getn/
+    syn match luaFunc /table\.setn/
+    syn match luaFunc /table\.foreach/
+    syn match luaFunc /table\.foreachi/
+  elseif lua_subversion == 1
+    syn match luaFunc /string\.gmatch/
+    syn match luaFunc /string\.match/
+    syn match luaFunc /string\.reverse/
+    syn match luaFunc /table\.maxn/
+  endif
+  syn match   luaFunc /table\.concat/
+  syn match   luaFunc /table\.sort/
+  syn match   luaFunc /table\.insert/
+  syn match   luaFunc /table\.remove/
+  syn match   luaFunc /math\.abs/
+  syn match   luaFunc /math\.acos/
+  syn match   luaFunc /math\.asin/
+  syn match   luaFunc /math\.atan/
+  syn match   luaFunc /math\.atan2/
+  syn match   luaFunc /math\.ceil/
+  syn match   luaFunc /math\.sin/
+  syn match   luaFunc /math\.cos/
+  syn match   luaFunc /math\.tan/
+  syn match   luaFunc /math\.deg/
+  syn match   luaFunc /math\.exp/
+  syn match   luaFunc /math\.floor/
+  syn match   luaFunc /math\.log/
+  syn match   luaFunc /math\.log10/
+  syn match   luaFunc /math\.max/
+  syn match   luaFunc /math\.min/
+  if lua_subversion == 0
+    syn match luaFunc /math\.mod/
+  elseif lua_subversion == 1
+    syn match luaFunc /math\.fmod/
+    syn match luaFunc /math\.modf/
+    syn match luaFunc /math\.cosh/
+    syn match luaFunc /math\.sinh/
+    syn match luaFunc /math\.tanh/
+  endif
+  syn match   luaFunc /math\.pow/
+  syn match   luaFunc /math\.rad/
+  syn match   luaFunc /math\.sqrt/
+  syn match   luaFunc /math\.frexp/
+  syn match   luaFunc /math\.ldexp/
+  syn match   luaFunc /math\.random/
+  syn match   luaFunc /math\.randomseed/
+  syn match   luaFunc /math\.pi/
+  syn match   luaFunc /io\.stdin/
+  syn match   luaFunc /io\.stdout/
+  syn match   luaFunc /io\.stderr/
+  syn match   luaFunc /io\.close/
+  syn match   luaFunc /io\.flush/
+  syn match   luaFunc /io\.input/
+  syn match   luaFunc /io\.lines/
+  syn match   luaFunc /io\.open/
+  syn match   luaFunc /io\.output/
+  syn match   luaFunc /io\.popen/
+  syn match   luaFunc /io\.read/
+  syn match   luaFunc /io\.tmpfile/
+  syn match   luaFunc /io\.type/
+  syn match   luaFunc /io\.write/
+  syn match   luaFunc /os\.clock/
+  syn match   luaFunc /os\.date/
+  syn match   luaFunc /os\.difftime/
+  syn match   luaFunc /os\.execute/
+  syn match   luaFunc /os\.exit/
+  syn match   luaFunc /os\.getenv/
+  syn match   luaFunc /os\.remove/
+  syn match   luaFunc /os\.rename/
+  syn match   luaFunc /os\.setlocale/
+  syn match   luaFunc /os\.time/
+  syn match   luaFunc /os\.tmpname/
+  syn match   luaFunc /debug\.debug/
+  syn match   luaFunc /debug\.gethook/
+  syn match   luaFunc /debug\.getinfo/
+  syn match   luaFunc /debug\.getlocal/
+  syn match   luaFunc /debug\.getupvalue/
+  syn match   luaFunc /debug\.setlocal/
+  syn match   luaFunc /debug\.setupvalue/
+  syn match   luaFunc /debug\.sethook/
+  syn match   luaFunc /debug\.traceback/
+  if lua_subversion == 1
+    syn match luaFunc /debug\.getfenv/
+    syn match luaFunc /debug\.getmetatable/
+    syn match luaFunc /debug\.getregistry/
+    syn match luaFunc /debug\.setfenv/
+    syn match luaFunc /debug\.setmetatable/
+  endif
+endif
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_lua_syntax_inits")
+  if version < 508
+    let did_lua_syntax_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  HiLink luaStatement		Statement
+  HiLink luaRepeat		Repeat
+  HiLink luaString		String
+  HiLink luaString2		String
+  HiLink luaNumber		Number
+  HiLink luaFloat		Float
+  HiLink luaOperator		Operator
+  HiLink luaConstant		Constant
+  HiLink luaCond		Conditional
+  HiLink luaFunction		Function
+  HiLink luaComment		Comment
+  HiLink luaTodo		Todo
+  HiLink luaTable		Structure
+  HiLink luaError		Error
+  HiLink luaSpecial		SpecialChar
+  HiLink luaFunc		Identifier
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "lua"
+
+" vim: et ts=8
diff --git a/src/INSTALLpc.txt b/src/INSTALLpc.txt
index 106c767..d2a3e28 100644
--- a/src/INSTALLpc.txt
+++ b/src/INSTALLpc.txt
@@ -143,8 +143,7 @@
 Visual C++ 2005 Express Edition
 -------------------------------
 
-Visual C++ 2005 Express Edition can be downloaded for free
-before November 2006 from
+Visual C++ 2005 Express Edition can be downloaded for free from:
     http://msdn.microsoft.com/vstudio/express/visualC/default.aspx
 This includes the IDE and the debugger. You will also need
 |ms-platform-sdk|. You can build Vim with Make_mvc.mak.
diff --git a/src/auto/configure b/src/auto/configure
index ed5ea56..7a308a7 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -8986,8 +8986,9 @@
 
 
 
+
 for ac_header in Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
-		   Xm/UnhighlightT.h
+		   Xm/UnhighlightT.h Xm/Notebook.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
diff --git a/src/config.h.in b/src/config.h.in
index 8e0863a..9b42b92 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -239,6 +239,7 @@
 #undef HAVE_XM_MANAGER_H
 #undef HAVE_XM_UNHIGHLIGHTT_H
 #undef HAVE_XM_JOINSIDET_H
+#undef HAVE_XM_NOTEBOOK_H
 #undef HAVE_X11_XPM_H
 #undef HAVE_X11_XMU_EDITRES_H
 #undef HAVE_X11_SM_SMLIB_H
diff --git a/src/configure.in b/src/configure.in
index 21a5f80..6a1a56f 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -1901,7 +1901,7 @@
   cppflags_save=$CPPFLAGS
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
-		   Xm/UnhighlightT.h)
+		   Xm/UnhighlightT.h Xm/Notebook.h)
 
   if test $ac_cv_header_Xm_XpmP_h = yes; then
     dnl Solaris uses XpmAttributes_21, very annoying.
diff --git a/src/eval.c b/src/eval.c
index 1f208b9..1e75a31 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -8863,7 +8863,6 @@
 	    ExpandInit(&xpc);
 	    xpc.xp_context = EXPAND_FILES;
 	    rettv->vval.v_string = ExpandOne(&xpc, s, NULL, flags, WILD_ALL);
-	    ExpandCleanup(&xpc);
 	}
 	else
 	    rettv->vval.v_string = NULL;
@@ -10397,7 +10396,6 @@
     rettv->v_type = VAR_STRING;
     rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
 				     NULL, WILD_USE_NL|WILD_SILENT, WILD_ALL);
-    ExpandCleanup(&xpc);
 }
 
 /*
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 27c44ff..4943bfc 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -4371,7 +4371,6 @@
 		    p = ExpandOne(&xpc, eap->arg, NULL,
 					    WILD_LIST_NOTFOUND|WILD_ADD_SLASH,
 						   WILD_EXPAND_FREE);
-		    ExpandCleanup(&xpc);
 		    if (p == NULL)
 			return FAIL;
 		}
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 10f3355..ce48b67 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -3260,7 +3260,8 @@
  * Return a pointer to alloced memory containing the new string.
  * Return NULL for failure.
  *
- * Results are cached in xp->xp_files and xp->xp_numfiles.
+ * Results are cached in xp->xp_files and xp->xp_numfiles, except when "mode"
+ * is WILD_EXPAND_FREE or WILD_ALL.
  *
  * mode = WILD_FREE:	    just free previously expanded matches
  * mode = WILD_EXPAND_FREE: normal expansion, do not keep matches
diff --git a/src/feature.h b/src/feature.h
index fdd7a29..82508fd 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -753,7 +753,8 @@
 /*
  * GUI tabline
  */
-#if defined(FEAT_WINDOWS) && (defined(FEAT_GUI_GTK) || defined(FEAT_GUI_MOTIF)\
+#if defined(FEAT_WINDOWS) && (defined(FEAT_GUI_GTK) \
+	|| (defined(FEAT_GUI_MOTIF) && defined(HAVE_XM_NOTEBOOK_H)) \
 	|| (defined(FEAT_GUI_MSWIN) && (!defined(_MSC_VER) || _MSC_VER > 1020)))
 # define FEAT_GUI_TABLINE
 #endif
diff --git a/src/gui.c b/src/gui.c
index c377a35..755c20c 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -3491,7 +3491,7 @@
 /*
  * Send the event for clicking to select tab page "nr".
  * Returns TRUE if it was done, FALSE when skipped because we are already at
- * that tab page.
+ * that tab page or the cmdline window is open.
  */
     int
 send_tabline_event(nr)
@@ -3501,6 +3501,14 @@
 
     if (nr == tabpage_index(curtab))
 	return FALSE;
+# ifdef FEAT_CMDWIN
+    if (cmdwin_type != 0)
+    {
+	/* Set it back to the current tab page. */
+	gui_mch_set_curtab(tabpage_index(curtab));
+	return FALSE;
+    }
+# endif
     string[0] = CSI;
     string[1] = KS_TABLINE;
     string[2] = KE_FILLER;
diff --git a/src/gui_mac.c b/src/gui_mac.c
index 762d30c..4ebc121 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -48,6 +48,11 @@
 
 /* Vim's Scrap flavor. */
 #define VIMSCRAPFLAVOR 'VIM!'
+#ifdef FEAT_MBYTE
+# define SCRAPTEXTFLAVOR kScrapFlavorTypeUnicode
+#else
+# define SCRAPTEXTFLAVOR kScrapFlavorTypeText
+#endif
 
 static EventHandlerUPP mouseWheelHandlerUPP = NULL;
 SInt32 gMacSystemVersion;
@@ -4427,69 +4432,65 @@
 
     if (flavor == 0)
     {
-	error = GetScrapFlavorFlags(scrap, kScrapFlavorTypeUnicode, &scrapFlags);
+	error = GetScrapFlavorFlags(scrap, SCRAPTEXTFLAVOR, &scrapFlags);
 	if (error != noErr)
 	    return;
 
-	error = GetScrapFlavorSize(scrap, kScrapFlavorTypeUnicode, &scrapSize);
+	error = GetScrapFlavorSize(scrap, SCRAPTEXTFLAVOR, &scrapSize);
 	if (error != noErr)
 	    return;
     }
 
     ReserveMem(scrapSize);
 
-    {
-	/* In CARBON we don't need a Handle, a pointer is good */
-	textOfClip = NewHandle(scrapSize);
-	/* tempclip = lalloc(scrapSize+1, TRUE); */
-	HLock(textOfClip);
-	error = GetScrapFlavorData(scrap,
-		flavor ? VIMSCRAPFLAVOR : kScrapFlavorTypeUnicode,
-		&scrapSize, *textOfClip);
-	scrapSize -= flavor;
+    /* In CARBON we don't need a Handle, a pointer is good */
+    textOfClip = NewHandle(scrapSize);
 
-	if (flavor)
-	    type = **textOfClip;
-	else
-	    type = (strchr(*textOfClip, '\r') != NULL) ? MLINE : MCHAR;
+    /* tempclip = lalloc(scrapSize+1, TRUE); */
+    HLock(textOfClip);
+    error = GetScrapFlavorData(scrap,
+	    flavor ? VIMSCRAPFLAVOR : SCRAPTEXTFLAVOR,
+	    &scrapSize, *textOfClip);
+    scrapSize -= flavor;
 
-	tempclip = lalloc(scrapSize + 1, TRUE);
-#if defined(FEAT_MBYTE)
-	mch_memmove(tempclip, *textOfClip + flavor, scrapSize);
-#else
-	STRNCPY(tempclip, *textOfClip + flavor, scrapSize);
-#endif
-	tempclip[scrapSize] = 0;
+    if (flavor)
+	type = **textOfClip;
+    else
+	type = (strchr(*textOfClip, '\r') != NULL) ? MLINE : MCHAR;
+
+    tempclip = lalloc(scrapSize + 1, TRUE);
+    mch_memmove(tempclip, *textOfClip + flavor, scrapSize);
+    tempclip[scrapSize] = 0;
 
 #ifdef MACOS_CONVERT
+    {
 	/* Convert from utf-16 (clipboard) */
 	size_t encLen = 0;
 	char_u *to = mac_utf16_to_enc((UniChar *)tempclip, scrapSize, &encLen);
-	if (to)
+
+	if (to != NULL)
 	{
 	    scrapSize = encLen;
 	    vim_free(tempclip);
 	    tempclip = to;
 	}
+    }
 #endif
 
-	searchCR = (char *)tempclip;
-	while (searchCR != NULL)
-	{
-	    searchCR = strchr(searchCR, '\r');
-
-	    if (searchCR != NULL)
-		searchCR[0] = '\n';
-
-	}
-
-	clip_yank_selection(type, tempclip, scrapSize, cbd);
-
-	vim_free(tempclip);
-	HUnlock(textOfClip);
-
-	DisposeHandle(textOfClip);
+    searchCR = (char *)tempclip;
+    while (searchCR != NULL)
+    {
+	searchCR = strchr(searchCR, '\r');
+	if (searchCR != NULL)
+	    *searchCR = '\n';
     }
+
+    clip_yank_selection(type, tempclip, scrapSize, cbd);
+
+    vim_free(tempclip);
+    HUnlock(textOfClip);
+
+    DisposeHandle(textOfClip);
 }
 
     void
@@ -4527,12 +4528,10 @@
     /*
      * Once we set the clipboard, lose ownership.  If another application sets
      * the clipboard, we don't want to think that we still own it.
-     *
      */
-
     cbd->owned = FALSE;
 
-    type = clip_convert_selection(&str, (long_u *) &scrapSize, cbd);
+    type = clip_convert_selection(&str, (long_u *)&scrapSize, cbd);
 
 #ifdef MACOS_CONVERT
     size_t utf16_len = 0;
@@ -4555,7 +4554,7 @@
 	**textOfClip = type;
 	mch_memmove(*textOfClip + 1, str, scrapSize);
 	GetCurrentScrap(&scrap);
-	PutScrapFlavor(scrap, kScrapFlavorTypeUnicode, kScrapFlavorMaskNone,
+	PutScrapFlavor(scrap, SCRAPTEXTFLAVOR, kScrapFlavorMaskNone,
 		scrapSize, *textOfClip + 1);
 	PutScrapFlavor(scrap, VIMSCRAPFLAVOR, kScrapFlavorMaskNone,
 		scrapSize + 1, *textOfClip);
diff --git a/src/gui_motif.c b/src/gui_motif.c
index 7eb5758..9e28be2 100644
--- a/src/gui_motif.c
+++ b/src/gui_motif.c
@@ -26,7 +26,6 @@
 #include <Xm/LabelG.h>
 #include <Xm/ToggleBG.h>
 #include <Xm/SeparatoG.h>
-#include <Xm/Notebook.h>
 #include <Xm/XmP.h>
 
 #include <X11/keysym.h>
@@ -43,6 +42,9 @@
 #  include <Xm/XpmP.h>
 # endif
 #endif
+#ifdef HAVE_XM_NOTEBOOK_H
+# include <Xm/Notebook.h>
+#endif
 
 #include "gui_xmebw.h"	/* for our Enhanced Button Widget */
 
diff --git a/src/gui_w48.c b/src/gui_w48.c
index 13e0324..6e4ec1a 100644
--- a/src/gui_w48.c
+++ b/src/gui_w48.c
@@ -2296,18 +2296,26 @@
     int		curtabidx = 0;
     RECT	rc;
 #ifdef FEAT_MBYTE
+    static int	use_unicode = FALSE;
+    int		uu;
     WCHAR	*wstr = NULL;
 #endif
 
     if (s_tabhwnd == NULL)
 	return;
 
-#if defined(FEAT_MBYTE) && defined(CCM_SETUNICODEFORMAT)
-    if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
-	/*
-	 * Enable unicode support
-	 */
-	SendMessage(s_tabhwnd, CCM_SETUNICODEFORMAT, (WPARAM)TRUE, (LPARAM)0);
+#if defined(FEAT_MBYTE)
+# ifndef CCM_SETUNICODEFORMAT
+    /* For older compilers.  We assume this never changes. */
+#  define CCM_SETUNICODEFORMAT 0x2005
+# endif
+    uu = (enc_codepage >= 0 && (int)GetACP() != enc_codepage);
+    if (uu != use_unicode)
+    {
+	/* Enable/disable unicode support */
+	SendMessage(s_tabhwnd, CCM_SETUNICODEFORMAT, (WPARAM)uu, (LPARAM)0);
+	use_unicode = uu;
+    }
 #endif
 
     tie.mask = TCIF_TEXT;
@@ -2330,7 +2338,7 @@
 	tie.pszText = NameBuff;
 #ifdef FEAT_MBYTE
 	wstr = NULL;
-	if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+	if (use_unicode)
 	{
 	    /* Need to go through Unicode. */
 	    wstr = enc_to_ucs2(NameBuff, NULL);
diff --git a/src/memline.c b/src/memline.c
index 9284abb..e86a792 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -1532,7 +1532,7 @@
 			files[i] = files[i + 1];
 		}
 	}
-	if (nr)
+	if (nr > 0)
 	{
 	    file_count += num_files;
 	    if (nr <= file_count)
@@ -1578,7 +1578,8 @@
 
 	for (i = 0; i < num_names; ++i)
 	    vim_free(names[i]);
-	FreeWild(num_files, files);
+	if (num_files > 0)
+	    FreeWild(num_files, files);
     }
     vim_free(dir_name);
     return file_count;
diff --git a/src/menu.c b/src/menu.c
index b4f06d2..55fba1f 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -2336,20 +2336,23 @@
 	    {
 		tp = (menutrans_T *)menutrans_ga.ga_data;
 		from = vim_strsave(from);
-		from_noamp = menu_text(from, NULL, NULL);
-		to = vim_strnsave(to, (int)(arg - to));
-		if (from != NULL && from_noamp != NULL && to != NULL)
+		if (from != NULL)
 		{
-		    tp[menutrans_ga.ga_len].from = from;
-		    tp[menutrans_ga.ga_len].from_noamp = from_noamp;
-		    tp[menutrans_ga.ga_len].to = to;
-		    ++menutrans_ga.ga_len;
-		}
-		else
-		{
-		    vim_free(from);
-		    vim_free(from_noamp);
-		    vim_free(to);
+		    from_noamp = menu_text(from, NULL, NULL);
+		    to = vim_strnsave(to, (int)(arg - to));
+		    if (from_noamp != NULL && to != NULL)
+		    {
+			tp[menutrans_ga.ga_len].from = from;
+			tp[menutrans_ga.ga_len].from_noamp = from_noamp;
+			tp[menutrans_ga.ga_len].to = to;
+			++menutrans_ga.ga_len;
+		    }
+		    else
+		    {
+			vim_free(from);
+			vim_free(from_noamp);
+			vim_free(to);
+		    }
 		}
 	    }
 	}
diff --git a/src/misc1.c b/src/misc1.c
index 7d86e46..67a2fc0 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -3625,7 +3625,6 @@
 		    xpc.xp_context = EXPAND_FILES;
 		    var = ExpandOne(&xpc, dst, NULL,
 				WILD_ADD_SLASH|WILD_SILENT, WILD_EXPAND_FREE);
-		    ExpandCleanup(&xpc);
 		    mustfree = TRUE;
 		}
 
@@ -9363,7 +9362,7 @@
     int	    count;
     char_u  **files;
 {
-    if (files == NULL || count <= 0)
+    if (count <= 0 || files == NULL)
 	return;
 #if defined(__EMX__) && defined(__ALWAYS_HAS_TRAILING_NULL_POINTER) /* XXX */
     /*
diff --git a/src/option.c b/src/option.c
index 29ab1ef..cfca188 100644
--- a/src/option.c
+++ b/src/option.c
@@ -2996,35 +2996,44 @@
      * 'maxmemtot' and 'maxmem' may have to be adjusted for available memory
      */
     opt_idx = findoption((char_u *)"maxmemtot");
-#if !defined(HAVE_AVAIL_MEM) && !defined(HAVE_TOTAL_MEM)
-    if (options[opt_idx].def_val[VI_DEFAULT] == (char_u *)0L)
-#endif
+    if (opt_idx >= 0)
     {
+#if !defined(HAVE_AVAIL_MEM) && !defined(HAVE_TOTAL_MEM)
+	if (options[opt_idx].def_val[VI_DEFAULT] == (char_u *)0L)
+#endif
+	{
 #ifdef HAVE_AVAIL_MEM
-	/* Use amount of memory available at this moment. */
-	n = (mch_avail_mem(FALSE) >> 11);
+	    /* Use amount of memory available at this moment. */
+	    n = (mch_avail_mem(FALSE) >> 11);
 #else
 # ifdef HAVE_TOTAL_MEM
-	/* Use amount of memory available to Vim. */
-	n = (mch_total_mem(FALSE) >> 11);
+	    /* Use amount of memory available to Vim. */
+	    n = (mch_total_mem(FALSE) >> 11);
 # else
-	n = (0x7fffffff >> 11);
+	    n = (0x7fffffff >> 11);
 # endif
 #endif
-	options[opt_idx].def_val[VI_DEFAULT] = (char_u *)n;
-	opt_idx = findoption((char_u *)"maxmem");
-#if !defined(HAVE_AVAIL_MEM) && !defined(HAVE_TOTAL_MEM)
-	if ((long)options[opt_idx].def_val[VI_DEFAULT] > n
-			  || (long)options[opt_idx].def_val[VI_DEFAULT] == 0L)
-#endif
 	    options[opt_idx].def_val[VI_DEFAULT] = (char_u *)n;
+	    opt_idx = findoption((char_u *)"maxmem");
+	    if (opt_idx >= 0)
+	    {
+#if !defined(HAVE_AVAIL_MEM) && !defined(HAVE_TOTAL_MEM)
+		if ((long)options[opt_idx].def_val[VI_DEFAULT] > n
+			|| (long)options[opt_idx].def_val[VI_DEFAULT] == 0L)
+#endif
+		    options[opt_idx].def_val[VI_DEFAULT] = (char_u *)n;
+	    }
+	}
     }
 
 #ifdef FEAT_GUI_W32
     /* force 'shortname' for Win32s */
     if (gui_is_win32s())
-	options[findoption((char_u *)"shortname")].def_val[VI_DEFAULT] =
-							       (char_u *)TRUE;
+    {
+	opt_idx = findoption((char_u *)"shortname");
+	if (opt_idx >= 0)
+	    options[opt_idx].def_val[VI_DEFAULT] = (char_u *)TRUE;
+    }
 #endif
 
 #ifdef FEAT_SEARCHPATH
@@ -3057,8 +3066,11 @@
 		}
 		buf[j] = NUL;
 		opt_idx = findoption((char_u *)"cdpath");
-		options[opt_idx].def_val[VI_DEFAULT] = buf;
-		options[opt_idx].flags |= P_DEF_ALLOCED;
+		if (opt_idx >= 0)
+		{
+		    options[opt_idx].def_val[VI_DEFAULT] = buf;
+		    options[opt_idx].flags |= P_DEF_ALLOCED;
+		}
 	    }
 	    if (mustfree)
 		vim_free(cdpath);
@@ -3259,8 +3271,11 @@
 	if (mb_init() == NULL)
 	{
 	    opt_idx = findoption((char_u *)"encoding");
-	    options[opt_idx].def_val[VI_DEFAULT] = p_enc;
-	    options[opt_idx].flags |= P_DEF_ALLOCED;
+	    if (opt_idx >= 0)
+	    {
+		options[opt_idx].def_val[VI_DEFAULT] = p_enc;
+		options[opt_idx].flags |= P_DEF_ALLOCED;
+	    }
 
 #if defined(MSDOS) || defined(MSWIN) || defined(OS2) || defined(MACOS) \
 		|| defined(VMS)
@@ -3278,9 +3293,11 @@
 		set_string_option_direct((char_u *)"isk", -1,
 					      ISK_LATIN1, OPT_FREE, SID_NONE);
 		opt_idx = findoption((char_u *)"isp");
-		options[opt_idx].def_val[VIM_DEFAULT] = ISP_LATIN1;
+		if (opt_idx >= 0)
+		    options[opt_idx].def_val[VIM_DEFAULT] = ISP_LATIN1;
 		opt_idx = findoption((char_u *)"isk");
-		options[opt_idx].def_val[VIM_DEFAULT] = ISK_LATIN1;
+		if (opt_idx >= 0)
+		    options[opt_idx].def_val[VIM_DEFAULT] = ISK_LATIN1;
 		(void)init_chartab();
 	    }
 #endif
@@ -3297,8 +3314,11 @@
 		if (p_tenc != NULL)
 		{
 		    opt_idx = findoption((char_u *)"termencoding");
-		    options[opt_idx].def_val[VI_DEFAULT] = p_tenc;
-		    options[opt_idx].flags |= P_DEF_ALLOCED;
+		    if (opt_idx >= 0)
+		    {
+			options[opt_idx].def_val[VI_DEFAULT] = p_tenc;
+			options[opt_idx].flags |= P_DEF_ALLOCED;
+		    }
 		    convert_setup(&input_conv, p_tenc, p_enc);
 		    convert_setup(&output_conv, p_enc, p_tenc);
 		}
@@ -3436,10 +3456,13 @@
     if (p != NULL)		/* we don't want a NULL */
     {
 	opt_idx = findoption((char_u *)name);
-	if (options[opt_idx].flags & P_DEF_ALLOCED)
-	    vim_free(options[opt_idx].def_val[VI_DEFAULT]);
-	options[opt_idx].def_val[VI_DEFAULT] = p;
-	options[opt_idx].flags |= P_DEF_ALLOCED;
+	if (opt_idx >= 0)
+	{
+	    if (options[opt_idx].flags & P_DEF_ALLOCED)
+		vim_free(options[opt_idx].def_val[VI_DEFAULT]);
+	    options[opt_idx].def_val[VI_DEFAULT] = p;
+	    options[opt_idx].flags |= P_DEF_ALLOCED;
+	}
     }
 }
 
@@ -3452,7 +3475,11 @@
     char	*name;
     long	val;
 {
-    options[findoption((char_u *)name)].def_val[VI_DEFAULT] = (char_u *)val;
+    int		opt_idx;
+
+    opt_idx = findoption((char_u *)name);
+    if (opt_idx >= 0)
+	options[opt_idx].def_val[VI_DEFAULT] = (char_u *)val;
 }
 
 #if defined(EXITFREE) || defined(PROTO)
@@ -3498,7 +3525,7 @@
      */
     set_number_default("scroll", (long)((long_u)Rows >> 1));
     idx = findoption((char_u *)"scroll");
-    if (!(options[idx].flags & P_WAS_SET))
+    if (idx >= 0 && !(options[idx].flags & P_WAS_SET))
 	set_option_default(idx, OPT_LOCAL, p_cp);
     comp_col();
 
@@ -3507,7 +3534,7 @@
      * Default is Rows - 1.
      */
     idx = findoption((char_u *)"wi");
-    if (!(options[idx].flags & P_WAS_SET))
+    if (idx >= 0 && !(options[idx].flags & P_WAS_SET))
 	p_window = Rows - 1;
     set_number_default("window", Rows - 1);
 
@@ -3519,7 +3546,8 @@
      * with a dark background, that can handle color.
      */
     idx = findoption((char_u *)"bg");
-    if (!(options[idx].flags & P_WAS_SET) && *term_bg_default() == 'd')
+    if (idx >= 0 && !(options[idx].flags & P_WAS_SET)
+						 && *term_bg_default() == 'd')
     {
 	set_string_option_direct(NULL, idx, (char_u *)"dark", OPT_FREE, 0);
 	/* don't mark it as set, when starting the GUI it may be
@@ -3594,10 +3622,16 @@
 #endif
 
     idx_srr = findoption((char_u *)"srr");
-    do_srr = !(options[idx_srr].flags & P_WAS_SET);
+    if (idx_srr < 0)
+	do_srr = FALSE;
+    else
+	do_srr = !(options[idx_srr].flags & P_WAS_SET);
 #ifdef FEAT_QUICKFIX
     idx_sp = findoption((char_u *)"sp");
-    do_sp = !(options[idx_sp].flags & P_WAS_SET);
+    if (idx_sp < 0)
+	do_sp = FALSE;
+    else
+	do_sp = !(options[idx_sp].flags & P_WAS_SET);
 #endif
 
     /*
@@ -3692,7 +3726,7 @@
 	int	idx3;
 
 	idx3 = findoption((char_u *)"shcf");
-	if (!(options[idx3].flags & P_WAS_SET))
+	if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
 	{
 	    p_shcf = (char_u *)"-c";
 	    options[idx3].def_val[VI_DEFAULT] = p_shcf;
@@ -3702,14 +3736,14 @@
 #  ifdef WIN3264
 	/* Somehow Win32 requires the quotes around the redirection too */
 	idx3 = findoption((char_u *)"sxq");
-	if (!(options[idx3].flags & P_WAS_SET))
+	if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
 	{
 	    p_sxq = (char_u *)"\"";
 	    options[idx3].def_val[VI_DEFAULT] = p_sxq;
 	}
 #  else
 	idx3 = findoption((char_u *)"shq");
-	if (!(options[idx3].flags & P_WAS_SET))
+	if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
 	{
 	    p_shq = (char_u *)"\"";
 	    options[idx3].def_val[VI_DEFAULT] = p_shq;
@@ -3738,7 +3772,7 @@
     if (lang == NULL || STRLEN(lang) < 2)	/* safety check */
 	return;
     idx = findoption((char_u *)"hlg");
-    if (!(options[idx].flags & P_WAS_SET))
+    if (idx >= 0 && !(options[idx].flags & P_WAS_SET))
     {
 	if (options[idx].flags & P_ALLOCED)
 	    free_string_option(p_hlg);
@@ -3807,7 +3841,7 @@
      * not need to be contacted.
      */
     idx1 = findoption((char_u *)"title");
-    if (!(options[idx1].flags & P_WAS_SET))
+    if (idx1 >= 0 && !(options[idx1].flags & P_WAS_SET))
     {
 #ifdef FEAT_GUI
 	if (gui.starting || gui.in_use)
@@ -3819,7 +3853,7 @@
 	p_title = val;
     }
     idx1 = findoption((char_u *)"icon");
-    if (!(options[idx1].flags & P_WAS_SET))
+    if (idx1 >= 0 && !(options[idx1].flags & P_WAS_SET))
     {
 #ifdef FEAT_GUI
 	if (gui.starting || gui.in_use)
@@ -5224,7 +5258,7 @@
     if (opt_idx == -1)		/* use name */
     {
 	opt_idx = findoption(name);
-	if (opt_idx == -1)	/* not found (should not happen) */
+	if (opt_idx < 0)	/* not found (should not happen) */
 	{
 	    EMSG2(_(e_intern2), "set_string_option_direct()");
 	    return;
@@ -8127,7 +8161,7 @@
     long_u	flags;
 
     opt_idx = findoption(name);
-    if (opt_idx == -1)
+    if (opt_idx < 0)
 	EMSG2(_("E355: Unknown option: %s"), name);
     else
     {
@@ -9464,7 +9498,8 @@
     curbuf->b_p_ma = FALSE;
     p_ma = FALSE;
     opt_idx = findoption((char_u *)"ma");
-    options[opt_idx].def_val[VI_DEFAULT] = FALSE;
+    if (opt_idx >= 0)
+	options[opt_idx].def_val[VI_DEFAULT] = FALSE;
 }
 
 /*
@@ -10297,12 +10332,16 @@
 change_compatible(on)
     int	    on;
 {
+    int	    opt_idx;
+
     if (p_cp != on)
     {
 	p_cp = on;
 	compatible_set();
     }
-    options[findoption((char_u *)"cp")].flags |= P_WAS_SET;
+    opt_idx = findoption((char_u *)"cp");
+    if (opt_idx >= 0)
+	options[opt_idx].flags |= P_WAS_SET;
 }
 
 /*
diff --git a/src/po/de.po b/src/po/de.po
index eee8e2e..046e2ea 100644
--- a/src/po/de.po
+++ b/src/po/de.po
@@ -4999,8 +4999,8 @@
 msgstr "E397: Dateiname wird benötigt"
 
 #, c-format
-msgid "E747: Missing ']': %s"
-msgstr "E747: Fehlende ']': %s"
+msgid "E789: Missing ']': %s"
+msgstr "E789: Fehlende ']': %s"
 
 #, c-format
 msgid "E398: Missing '=': %s"
diff --git a/src/po/fr.po b/src/po/fr.po
index 3bf94ba..f7bc907 100644
--- a/src/po/fr.po
+++ b/src/po/fr.po
@@ -71,8 +71,15 @@
 # 			  - Hundreds of error messages numbers added (wow)
 # 2006-04-15    DB      Vim 7.0 first draft, based on fr.po 7.0c03
 #                         - 285 new messages.
+# 2006-05-17    DB      VIM 7.0 second draft, still 7.0c03
+#                         - (check.vim) Fixed 2 wrong translated messages.
+# 2006-05-19    DB      VIM 7.0 second draft, 7.0e02
+#                         - 15 new messages.
+# 2006-05-19    DB      VIM 7.0, based on 7.0e03
+#                         - (check.vim) Fixed wrong messages.
+#                         - header comment of this file should be updated.
 #
-# Translated:	 1677/1677 (100.00%)
+# Translated:	 1692/1692 (100.00%)
 #
 # Polishing done on:
 #  buffer.c
@@ -94,7 +101,7 @@
 "Project-Id-Version: Vim(Français)\n"
 "Report-Msgid-Bugs-To: Adrien Beau <version.francaise@free.fr>\n"
 "POT-Creation-Date: 2006-04-01 17:09+0200\n"
-"PO-Revision-Date: 2006-04-15 22:53+0200\n"
+"PO-Revision-Date: 2006-04-21 00:31+0200\n"
 "Last-Translator: David Blanchet <david.blanchet@free.fr>\n"
 "Language-Team: Adrien Beau <version.francaise@free.fr>\n"
 "MIME-Version: 1.0\n"
@@ -110,7 +117,7 @@
 #      explicite.
 msgid "E83: Cannot allocate buffer, using other one..."
 msgstr ""
-"E83: L'allocation du tampon a échoué: arrêtez Vim, libérez de la mémoire"
+"E83: L'allocation du tampon a échoué : arrêtez Vim, libérez de la mémoire"
 
 msgid "E515: No buffers were unloaded"
 msgstr "E515: Aucun tampon n'a été déchargé"
@@ -327,6 +334,9 @@
 msgid "E103: Buffer \"%s\" is not in diff mode"
 msgstr "E103: Le tampon %s n'est pas en mode diff"
 
+msgid "E787: Buffer changed unexpectedly"
+msgstr "E787: Le tampon a été modifié inopinément"
+
 # AB - Je cherche une traduction plus concise pour "escape".
 msgid "E104: Escape not allowed in digraph"
 msgstr "E104: Un digraphe ne peut contenir le caractère d'échappement"
@@ -346,8 +356,8 @@
 
 # DB - todo : Faut-il une majuscule à "mode" ?
 #. ctrl_x_mode == 0, ^P/^N compl.
-msgid " ^X mode (^]^D^E^F^I^K^L^N^O^P^S^U^V^Y)"
-msgstr " mode ^X (^]^D^E^F^I^K^L^N^O^P^S^U^V^Y)"
+msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
+msgstr " mode ^X (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)"
 
 msgid " Whole line completion (^L^N^P)"
 msgstr " Complètement de ligne entière (^L^N^P)"
@@ -388,8 +398,8 @@
 msgid " Omni completion (^O^N^P)"
 msgstr " Complètement selon le type de fichier (Omni) (^O^N^P)"
 
-msgid " Spelling suggestion (^S^N^P)"
-msgstr " Suggestion d'orthographe (^S^N^P)"
+msgid " Spelling suggestion (s^N^P)"
+msgstr " Suggestion d'orthographe (s^N^P)"
 
 msgid " Keyword Local completion (^N^P)"
 msgstr " Complètement local de mot-clé (^N/^P)"
@@ -656,6 +666,22 @@
 msgid "E724: variable nested too deep for displaying"
 msgstr "E724: variable trop imbriquée pour être afficher"
 
+#, c-format
+msgid "E117: Unknown function: %s"
+msgstr "E117: Fonction inconnue : %s"
+
+#, c-format
+msgid "E119: Not enough arguments for function: %s"
+msgstr "E119: La fonction %s n'a pas reçu assez d'arguments"
+
+#, c-format
+msgid "E120: Using <SID> not in a script context: %s"
+msgstr "E120: <SID> utilisé en dehors d'un script : %s"
+
+#, c-format
+msgid "E725: Calling dict function without Dictionary: %s"
+msgstr "E725: Appel d'une fonction « dict » sans Dictionnaire : %s"
+
 msgid "E699: Too many arguments"
 msgstr "E699: Trop d'arguments"
 
@@ -696,8 +722,8 @@
 msgid "called inputrestore() more often than inputsave()"
 msgstr "inputrestore() a été appelé plus de fois qu'inputsave()"
 
-msgid "E745: Range not allowed"
-msgstr "E745: Les plages ne sont pas autorisés"
+msgid "E786: Range not allowed"
+msgstr "E786: Les plages ne sont pas autorisés"
 
 msgid "E701: Invalid type for len()"
 msgstr "E701: Type invalide avec len()"
@@ -1200,7 +1226,8 @@
 
 msgid "E146: Regular expressions can't be delimited by letters"
 msgstr ""
-"E146: Les expressions régulières ne peuvent pas être délimitées par des lettres"
+"E146: Les expressions régulières ne peuvent pas être délimitées par des "
+"lettres"
 
 #, c-format
 msgid "replace with %s (y/n/a/q/l/^E/^Y)?"
@@ -1266,7 +1293,6 @@
 msgid "E478: Don't panic!"
 msgstr "E478: Pas de panique !"
 
-# DB - c-format : langue de l'aide puis sujet de l'aide.
 #, c-format
 msgid "E661: Sorry, no '%s' help for %s"
 msgstr "E661: Désolé, aucune aide en langue '%s' pour %s"
@@ -1304,7 +1330,7 @@
 # DB - Suggestion.
 #, c-format
 msgid "E154: Duplicate tag \"%s\" in file %s/%s"
-msgstr "E154: Marqueur \"%s\" dupliqué fichier %s/%s"
+msgstr "E154: Marqueur \"%s\" dupliqué dans le fichier %s/%s"
 
 # AB - Il faut respecter l'esprit plus que la lettre.
 #, c-format
@@ -1375,9 +1401,8 @@
 msgid "E464: Ambiguous use of user-defined command"
 msgstr "E464: Utilisation ambigüe d'une commande définie par l'utilisateur"
 
-# DB - Espace final car Vim peut ajouter ": <informations>" à la suite
 msgid "E492: Not an editor command"
-msgstr "E492: Commande inconnue "
+msgstr "E492: Commande inconnue"
 
 msgid "E493: Backwards range given"
 msgstr "E493: La plage spécifiée est inversée"
@@ -1444,8 +1469,7 @@
 msgstr "E182: Nom de commande invalide"
 
 msgid "E183: User defined commands must start with an uppercase letter"
-msgstr ""
-"E183: Les commandes utilisateur doivent commencer par une majuscule"
+msgstr "E183: Les commandes utilisateur doivent commencer par une majuscule"
 
 #, c-format
 msgid "E184: No such user-defined command: %s"
@@ -1487,11 +1511,10 @@
 msgid "Append File"
 msgstr "Ajouter fichier"
 
-# DB - todo : le messages d'aide (":h E747") n'a rien à voir...
 msgid "E747: Cannot change directory, buffer is modifed (add ! to override)"
 msgstr ""
-"E747: Tampon modifié : impossible de changer de répertoire (ajoutez ! "
-"pour passer outre)"
+"E747: Tampon modifié : impossible de changer de répertoire (ajoutez ! pour "
+"passer outre)"
 
 msgid "E186: No previous directory"
 msgstr "E186: Pas de répertoire précédent"
@@ -1555,8 +1578,7 @@
 msgstr "E496: Aucun numéro de tampon d'autocommande à substituer à \"<abuf>\""
 
 msgid "E497: no autocommand match name to substitute for \"<amatch>\""
-msgstr ""
-"E497: Aucune correspondance d'autocommande à substituer à \"<amatch>\""
+msgstr "E497: Aucune correspondance d'autocommande à substituer à \"<amatch>\""
 
 msgid "E498: no :source file name to substitute for \"<sfile>\""
 msgstr "E498: Aucun nom de fichier :source à substituer à \"<sfile>\""
@@ -1664,12 +1686,15 @@
 msgid "E603: :catch without :try"
 msgstr "E603: :catch sans :try"
 
+#. Give up for a ":catch" after ":finally" and ignore it.
+#. * Just parse.
 msgid "E604: :catch after :finally"
 msgstr "E604: :catch après :finally"
 
 msgid "E606: :finally without :try"
 msgstr "E606: :finally sans :try"
 
+#. Give up for a multiple ":finally" and ignore it.
 msgid "E607: multiple :finally"
 msgstr "E607: Il ne peut y avoir qu'un seul :finally"
 
@@ -1679,6 +1704,9 @@
 msgid "E193: :endfunction not inside a function"
 msgstr "E193: :endfunction en dehors d'une fonction"
 
+msgid "E788: Not allowed to edit another buffer now"
+msgstr "E788: L'édition d'un autre tampon n'est plus permise"
+
 # DB - TODO : Pas compris le message ni comment le déclencher malgré une visite
 #      dans le code.
 msgid "tagname"
@@ -1754,6 +1782,7 @@
 msgid "Reading from stdin..."
 msgstr "Lecture de stdin..."
 
+#. Re-opening the original file failed!
 msgid "E202: Conversion made file unreadable!"
 msgstr "E202: La conversion a rendu le fichier illisible !"
 
@@ -1831,17 +1860,15 @@
 msgstr "est en lecture seule (ajoutez ! pour passer outre)"
 
 msgid "E506: Can't write to backup file (add ! to override)"
-msgstr ""
-"E506: Impossible d'écrire la copie de secours (! pour passer outre)"
+msgstr "E506: Impossible d'écrire la copie de secours (! pour passer outre)"
 
 msgid "E507: Close error for backup file (add ! to override)"
-msgstr ""
-"E507: Erreur de fermeture de la copie de secours (! pour passer outre)"
+msgstr "E507: Erreur de fermeture de la copie de secours (! pour passer outre)"
 
 msgid "E508: Can't read file for backup (add ! to override)"
 msgstr ""
-"E508: Impossible de lire le fichier pour la copie de secours (ajoutez ! "
-"pour passer outre)"
+"E508: Impossible de lire le fichier pour la copie de secours (ajoutez ! pour "
+"passer outre)"
 
 msgid "E509: Cannot create backup file (add ! to override)"
 msgstr ""
@@ -1963,6 +1990,9 @@
 msgid "[Incomplete last line]"
 msgstr "[Dernière ligne incomplète]"
 
+#. don't overwrite messages here
+#. must give this prompt
+#. don't use emsg() here, don't want to flush the buffers
 msgid "WARNING: The file has been changed since reading it!!!"
 msgstr "ALERTE: Le fichier a été modifié depuis que Vim l'a lu !"
 
@@ -2044,6 +2074,7 @@
 msgid "auto-removing autocommand: %s <buffer=%d>"
 msgstr "Autocommandes marquées pour auto-suppression : %s <tampon=%d>"
 
+#. the group doesn't exist
 #, c-format
 msgid "E367: No such group: \"%s\""
 msgstr "E367: Aucun groupe \"%s\""
@@ -2356,11 +2387,11 @@
 msgid "Find & Replace (use '\\\\' to find  a '\\')"
 msgstr "Chercher et remplacer (utilisez '\\\\' pour trouver un '\\')"
 
-#. We fake this: Use a filter that doesn't select anything and a default
-#. * file name that won't be used.
 # DB - Traduction non indispensable puisque le code indique qu'il s'agit d'un
 #      paramétrage bidon afin de sélectionner un répertoire plutôt qu'un
 #      fichier.
+#. We fake this: Use a filter that doesn't select anything and a default
+#. * file name that won't be used.
 msgid "Not Used"
 msgstr "Non utilisé"
 
@@ -2434,6 +2465,7 @@
 msgid "Name:"
 msgstr "Nom :"
 
+#. create toggle button
 msgid "Show size in Points"
 msgstr "Afficher la taille en Points"
 
@@ -2516,8 +2548,7 @@
 "E674: 'printmbcharset' ne peut pas être vide avec un encodage multi-octets"
 
 msgid "E675: No default font specified for multi-byte printing."
-msgstr ""
-"E675: Aucune police par défaut pour l'impression multi-octets"
+msgstr "E675: Aucune police par défaut pour l'impression multi-octets"
 
 msgid "E324: Can't open PostScript output file"
 msgstr "E324: Impossible d'ouvrir le fichier PostScript de sortie"
@@ -2627,8 +2658,7 @@
 # DB - todo
 #, c-format
 msgid "E259: no matches found for cscope query %s of %s"
-msgstr ""
-"E259: aucune correspondance trouvée pour la requête cscope %s de %s"
+msgstr "E259: aucune correspondance trouvée pour la requête cscope %s de %s"
 
 #, c-format
 msgid "E469: invalid cscopequickfix flag %c for %c"
@@ -2663,6 +2693,7 @@
 msgid "cscope connection %s closed"
 msgstr "connexion cscope %s fermée"
 
+#. should not reach here
 msgid "E570: fatal error in cs_manage_matches"
 msgstr "E570: erreur fatale dans cs_manage_matches"
 
@@ -2817,12 +2848,33 @@
 msgid "no such window"
 msgstr "Cette fenêtre n'existe pas"
 
+msgid "E265: $_ must be an instance of String"
+msgstr "E265: $_ doit être une instance de chaîne (String)"
+
 msgid ""
 "E266: Sorry, this command is disabled, the Ruby library could not be loaded."
 msgstr ""
 "E266: Désolé, commande désactivée : la bibliothèque Ruby n'a pas pu être "
 "chargée."
 
+msgid "E267: unexpected return"
+msgstr "E267: « return » inattendu"
+
+msgid "E268: unexpected next"
+msgstr "E268: « next » inattendu"
+
+msgid "E269: unexpected break"
+msgstr "E269: « break » inattendu"
+
+msgid "E270: unexpected redo"
+msgstr "E270: « redo » inattendu"
+
+msgid "E271: retry outside of rescue clause"
+msgstr "E271: « retry » hors d'une clause « rescue »"
+
+msgid "E272: unhandled exception"
+msgstr "E272: Exception non prise en charge"
+
 # DB - todo
 #, c-format
 msgid "E273: unknown longjmp status %d"
@@ -3047,6 +3099,7 @@
 msgid "Vim: Warning: Input is not from a terminal\n"
 msgstr "Vim: Alerte: L'entrée ne se fait pas sur un terminal\n"
 
+#. just in case..
 msgid "pre-vimrc command line"
 msgstr "ligne de commande pre-vimrc"
 
@@ -3095,7 +3148,8 @@
 # DB - todo (VMS uniquement).
 msgid "where case is ignored prepend / to make flag upper case"
 msgstr ""
-"pour lesquels la casse est indifférente (/ pour que le drapeau soit majuscule)"
+"pour lesquels la casse est indifférente (/ pour que le drapeau soit "
+"majuscule)"
 
 msgid ""
 "\n"
@@ -3123,7 +3177,8 @@
 
 msgid "-f  or  --nofork\tForeground: Don't fork when starting GUI"
 msgstr ""
-"-f, --nofork\tPremier-plan : ne pas détacher l'interface graphique du terminal"
+"-f, --nofork\tPremier-plan : ne pas détacher l'interface graphique du "
+"terminal"
 
 msgid "-v\t\t\tVi mode (like \"vi\")"
 msgstr "-v\t\tMode Vi (comme \"vi\")"
@@ -3278,7 +3333,8 @@
 
 msgid "--remote-expr <expr>\tEvaluate <expr> in a Vim server and print result"
 msgstr ""
-"--remote-expr <expr>\tÉvaluer <expr> dans un serveur Vim, afficher le résultat"
+"--remote-expr <expr>\tÉvaluer <expr> dans un serveur Vim, afficher le "
+"résultat"
 
 msgid "--serverlist\t\tList available Vim server names and exit"
 msgstr ""
@@ -3312,7 +3368,7 @@
 
 msgid ""
 "\n"
-"Arguments recognised by gvim (Athena version) :\n"
+"Arguments recognised by gvim (Athena version):\n"
 msgstr ""
 "\n"
 "Arguments reconnus par gvim (version Athena) :\n"
@@ -3394,8 +3450,7 @@
 "-display <display>\tLancer Vim sur ce <display>\t(également : --display)"
 
 msgid "--role <role>\tSet a unique role to identify the main window"
-msgstr ""
-"--role <rôle>\tDonner un rôle pour identifier la fenêtre principale"
+msgstr "--role <rôle>\tDonner un rôle pour identifier la fenêtre principale"
 
 msgid "--socketid <xid>\tOpen Vim inside another GTK widget"
 msgstr "--socketid <xid>\tOuvrir Vim dans un autre widget GTK"
@@ -3504,7 +3559,8 @@
 
 msgid "E289: input method doesn't support my preedit type"
 msgstr ""
-"E289: le type de préédition de Vim n'est pas supporté par la méthode de saisie"
+"E289: le type de préédition de Vim n'est pas supporté par la méthode de "
+"saisie"
 
 # DB - todo
 msgid "E290: over-the-spot style requires fontset"
@@ -3576,8 +3632,8 @@
 "Maybe no changes were made or Vim did not update the swap file."
 msgstr ""
 "\n"
-"Il est possible qu'aucune modif. n'a été faite ou que Vim n'a pas mis à jour "
-" le fichier d'échange."
+"Il est possible qu'aucune modif. n'a été faite ou que Vim n'a pas mis à "
+"jour  le fichier d'échange."
 
 msgid " cannot be used with this version of Vim.\n"
 msgstr " ne peut pas être utilisé avec cette version de Vim.\n"
@@ -3651,7 +3707,8 @@
 msgid ""
 "E312: Errors detected while recovering; look for lines starting with ???"
 msgstr ""
-"E312: Erreurs lors de la récupération ; examinez les lignes commençant par ???"
+"E312: Erreurs lors de la récupération ; examinez les lignes commençant "
+"par ???"
 
 msgid "See \":help E312\" for more information."
 msgstr "Consultez \":help E312\" pour plus d'information."
@@ -3954,6 +4011,8 @@
 msgid "E332: Separator cannot be part of a menu path"
 msgstr "E332: Un séparateur ne peut faire partie d'un chemin de menu"
 
+#. Now we have found the matching menu, and we list the mappings
+#. Highlight title
 msgid ""
 "\n"
 "--- Menus ---"
@@ -4048,6 +4107,7 @@
 msgid "Open File dialog"
 msgstr "Ouvrir un fichier"
 
+#. TODO: non-GUI file selector here
 msgid "E338: Sorry, no file browser in console mode"
 msgstr "E338: Désolé, pas de sélecteur de fichiers en mode console"
 
@@ -4089,6 +4149,7 @@
 msgid "Vim: preserving files...\n"
 msgstr "Vim: préservation des fichiers...\n"
 
+#. close all memfiles, without deleting
 msgid "Vim: Finished.\n"
 msgstr "Vim: Fini.\n"
 
@@ -4175,6 +4236,7 @@
 msgid "E347: No more file \"%s\" found in path"
 msgstr "E347: Plus de fichier \"%s\" dans 'path'"
 
+#. Get here when the server can't be found.
 msgid "Cannot connect to Netbeans #2"
 msgstr "Impossible de se connecter à Netbeans n°2"
 
@@ -4184,7 +4246,8 @@
 #, c-format
 msgid "E668: Wrong access mode for NetBeans connection info file: \"%s\""
 msgstr ""
-"E668: Mode d'accès incorrect au fichier d'infos de connexion NetBeans : \"%s\""
+"E668: Mode d'accès incorrect au fichier d'infos de connexion NetBeans : \"%s"
+"\""
 
 # DB : message d'un appel à perror().
 msgid "read from Netbeans socket"
@@ -4259,6 +4322,7 @@
 msgstr "E748: Aucun registre n'a été précédemment utilisé"
 
 # DB - Question O/N.
+#. must display the prompt
 msgid "cannot yank; delete anyway"
 msgstr "impossible de réaliser une copie ; effacer tout de même"
 
@@ -4291,6 +4355,7 @@
 msgid "E353: Nothing in register %s"
 msgstr "E353: Le registre %s est vide"
 
+#. Highlight title
 msgid ""
 "\n"
 "--- Registers ---"
@@ -4327,8 +4392,8 @@
 "Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld "
 "Bytes"
 msgstr ""
-"%s%ld sur %ld Lignes ; %ld sur %ld Mots ; %ld sur %ld Caractères ; "
-"%ld sur %ld octets sélectionnés"
+"%s%ld sur %ld Lignes ; %ld sur %ld Mots ; %ld sur %ld Caractères ; %ld sur "
+"%ld octets sélectionnés"
 
 #, c-format
 msgid "Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld"
@@ -4339,8 +4404,9 @@
 msgid ""
 "Col %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of "
 "%ld"
-msgstr "Colonne %s sur %s ; Ligne %ld sur %ld ; Mot %ld sur %ld ; "
-"Caractère %ld sur %ld ; Octet %ld sur %ld"
+msgstr ""
+"Colonne %s sur %s ; Ligne %ld sur %ld ; Mot %ld sur %ld ; Caractère %ld sur "
+"%ld ; Octet %ld sur %ld"
 
 #, c-format
 msgid "(+%ld for BOM)"
@@ -4352,9 +4418,8 @@
 msgid "Thanks for flying Vim"
 msgstr "Merci d'avoir choisi Vim"
 
-# DB - Espace final car Vim peut ajouter ": <informations>" à la suite
 msgid "E518: Unknown option"
-msgstr "E518: Option inconnue "
+msgstr "E518: Option inconnue"
 
 msgid "E519: Option not supported"
 msgstr "E519: Option non supportée"
@@ -4376,8 +4441,7 @@
 msgstr "E529: 'term' ne doit pas être une chaîne vide"
 
 msgid "E530: Cannot change term in GUI"
-msgstr ""
-"E530: Impossible de modifier term dans l'interface graphique"
+msgstr "E530: Impossible de modifier term dans l'interface graphique"
 
 msgid "E531: Use \":gui\" to start the GUI"
 msgstr "E531: Utilisez \":gui\" pour démarrer l'interface graphique"
@@ -4553,15 +4617,11 @@
 msgid "I/O ERROR"
 msgstr "ERREUR d'E/S"
 
-msgid "...(truncated)"
-msgstr "...(tronqué)"
-
 msgid "Message"
 msgstr "Message"
 
 msgid "'columns' is not 80, cannot execute external commands"
-msgstr ""
-"'columns' ne vaut pas 80, impossible d'exécuter des commandes externes"
+msgstr "'columns' ne vaut pas 80, impossible d'exécuter des commandes externes"
 
 msgid "E237: Printer selection failed"
 msgstr "E237: La sélection de l'imprimante a échoué"
@@ -5000,6 +5060,16 @@
 msgid "E389: Couldn't find pattern"
 msgstr "E389: Impossible de trouver le motif"
 
+#, c-format
+msgid ""
+"\n"
+"# Last %sSearch Pattern:\n"
+"~"
+msgstr ""
+"\n"
+"# Dernier motif de recherche %s :\n"
+"~"
+
 msgid "E759: Format error in spell file"
 msgstr "E759: Erreur de format du fichier orthographique"
 
@@ -5064,7 +5134,7 @@
 
 #, c-format
 msgid "Conversion in %s not supported"
-msgstr "La conversion dans %s non supportée" 
+msgstr "La conversion dans %s non supportée"
 
 #, c-format
 msgid "Invalid value for FLAG in %s line %d: %s"
@@ -5075,6 +5145,22 @@
 msgstr "FLAG trouvé après des drapeaux dans %s ligne %d : %s"
 
 #, c-format
+msgid ""
+"Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line "
+"%d"
+msgstr ""
+"Définir COMPOUNDFORBIDFLAG après des PFX peut donner des résultats erronés "
+"dans %s ligne %d"
+
+#, c-format
+msgid ""
+"Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line "
+"%d"
+msgstr ""
+"Définir COMPOUNDPERMITFLAG après des PFX peut donner des résultats erronés "
+" dans %s ligne %d"
+
+#, c-format
 msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s"
 msgstr "Valeur de COMPOUNDWORDMAX erronée dans %s ligne %d : %s"
 
@@ -5106,8 +5192,8 @@
 "Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST in %s "
 "line %d: %s"
 msgstr ""
-"Affixe aussi utilisée pour BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST "
-"dans %s ligne %d : %s"
+"Affixe aussi utilisée pour BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/"
+"NOSUGGEST dans %s ligne %d : %s"
 
 #, c-format
 msgid "Expected Y or N in %s line %d: %s"
@@ -5118,13 +5204,6 @@
 msgid "Broken condition in %s line %d: %s"
 msgstr "Condition non valide dans %s ligne %d : %s"
 
-# DB - todo
-#, c-format
-msgid "Affix flags ignored when PFXPOSTPONE used in %s line %d: %s"
-msgstr ""
-"Drapeaux de l'affixe ignorés quand PFXPOSTPONE est utilisé dans %s ligne %d "
-": %s"
-
 #, c-format
 msgid "Expected REP(SAL) count in %s line %d"
 msgstr "Nombre de REP(SAL) attendu dans %s ligne %d"
@@ -5248,8 +5327,10 @@
 msgid "Reading back spell file..."
 msgstr "Relecture du fichier orthographique"
 
+#.
 #. * Go through the trie of good words, soundfold each word and add it to
 #. * the soundfold trie.
+#.
 msgid "Performing soundfolding..."
 msgstr "Analyse phonétique en cours..."
 
@@ -5313,6 +5394,7 @@
 msgid "Sorry, only %ld suggestions"
 msgstr "Désolé, seulement %ld suggestions"
 
+#. avoid more prompt
 #, c-format
 msgid "Change \"%.*s\" to:"
 msgstr "Remplacer \"%.*s\" par :"
@@ -5594,6 +5676,7 @@
 msgid "E429: File \"%s\" does not exist"
 msgstr "E429: Le fichier \"%s\" n'existe pas"
 
+#. Highlight title
 msgid ""
 "\n"
 "  # TO tag         FROM line  in file/text"
@@ -5654,6 +5737,7 @@
 msgid "E437: terminal capability \"cm\" required"
 msgstr "E437: capacité de terminal \"cm\" requise"
 
+#. Highlight title
 msgid ""
 "\n"
 "--- Terminal keys ---"
@@ -5668,6 +5752,7 @@
 msgstr "Vim: Erreur lors de la lecture de l'entrée, sortie...\n"
 
 # DB - Question O/N.
+#. must display the prompt
 msgid "No undo possible; continue anyway"
 msgstr "Annulation impossible ; continuer"
 
@@ -5719,6 +5804,10 @@
 msgid "number changes  time"
 msgstr "numéro  modif.  instant"
 
+#, c-format
+msgid "%ld seconds ago"
+msgstr "il y a %ld secondes"
+
 msgid "E439: undo list corrupt"
 msgstr "E439: la liste d'annulation est corrompue"
 
@@ -6031,6 +6120,9 @@
 msgid "type  :help windows95<Enter>  for info on this"
 msgstr "tapez  :help windows95<Entrée>  pour plus d'information"
 
+msgid "Already only one window"
+msgstr "Il n'y a déjà plus qu'une fenêtre"
+
 msgid "E441: There is no preview window"
 msgstr "E441: Il n'y a pas de fenêtre de prévisualisation"
 
@@ -6043,9 +6135,6 @@
 msgid "E444: Cannot close last window"
 msgstr "E444: Impossible de fermer la dernière fenêtre"
 
-msgid "Already only one window"
-msgstr "Il n'y a déjà plus qu'une fenêtre"
-
 msgid "E445: Other window contains changes"
 msgstr "E445: Les modifications de l'autre fenêtre n'ont pas été enregistrées"
 
@@ -6079,6 +6168,7 @@
 msgid "Edit with &Vim"
 msgstr "Éditer dans &Vim"
 
+#. Now concatenate
 msgid "Edit with existing Vim - "
 msgstr "Éditer dans le Vim existant - "
 
@@ -6088,8 +6178,8 @@
 # DB - MessageBox win32, la longueur n'est pas un problème !
 msgid "Error creating process: Check if gvim is in your path!"
 msgstr ""
-"Erreur de création du processus : "
-"vérifiez que gvim est bien dans votre chemin !"
+"Erreur de création du processus : vérifiez que gvim est bien dans votre "
+"chemin !"
 
 msgid "gvimext.dll error"
 msgstr "Erreur de gvimext.dll"
@@ -6102,6 +6192,10 @@
 msgid "--No lines in buffer--"
 msgstr "--Le tampon est vide--"
 
+#.
+#. * The error messages that can be shared are included here.
+#. * Excluded are errors that are only used once and debugging messages.
+#.
 msgid "E470: Command aborted"
 msgstr "E470: Commande annulée"
 
@@ -6338,7 +6432,8 @@
 
 #, c-format
 msgid "E46: Cannot set variable in the sandbox: \"%s\""
-msgstr "E46: Impossible de modifier une variable depuis le bac à sable : \"%s\""
+msgstr ""
+"E46: Impossible de modifier une variable depuis le bac à sable : \"%s\""
 
 msgid "E47: Error while reading errorfile"
 msgstr "E47: Erreur lors de la lecture du fichier d'erreurs"
@@ -6429,7 +6524,7 @@
 msgid "E139: File is loaded in another buffer"
 msgstr "E139: Le fichier est chargé dans un autre tampon"
 
-#,c-format
+#, c-format
 msgid "E764: Option '%s' is not set"
 msgstr "E764: L'option '%s' n'est pas activée"
 
diff --git a/src/po/it.po b/src/po/it.po
index 7e970d4..2673c63 100644
--- a/src/po/it.po
+++ b/src/po/it.po
@@ -5096,8 +5096,8 @@
 msgstr "E397: Nome file necessario"
 
 #, c-format
-msgid "E747: Missing ']': %s"
-msgstr "E747: Manca ']': %s"
+msgid "E789: Missing ']': %s"
+msgstr "E789: Manca ']': %s"
 
 #, c-format
 msgid "E398: Missing '=': %s"
diff --git a/src/po/ja.po b/src/po/ja.po
index 67d877d..9549c24 100644
--- a/src/po/ja.po
+++ b/src/po/ja.po
@@ -5109,8 +5109,8 @@
 msgstr "E397: ¥Õ¥¡¥¤¥ë̾¤¬É¬ÍפǤ¹"
 
 #, c-format
-msgid "E747: Missing ']': %s"
-msgstr "E747: ']' ¤¬¤¢¤ê¤Þ¤»¤ó: %s"
+msgid "E789: Missing ']': %s"
+msgstr "E789: ']' ¤¬¤¢¤ê¤Þ¤»¤ó: %s"
 
 #, c-format
 msgid "E398: Missing '=': %s"
diff --git a/src/po/ja.sjis.po b/src/po/ja.sjis.po
index 29592bb..96c2037 100644
--- a/src/po/ja.sjis.po
+++ b/src/po/ja.sjis.po
@@ -5109,8 +5109,8 @@
 msgstr "E397: ƒtƒ@ƒCƒ‹–¼‚ª•K—v‚Å‚·"
 
 #, c-format
-msgid "E747: Missing ']': %s"
-msgstr "E747: ']' ‚ª‚ ‚è‚Ü‚¹‚ñ: %s"
+msgid "E789: Missing ']': %s"
+msgstr "E789: ']' ‚ª‚ ‚è‚Ü‚¹‚ñ: %s"
 
 #, c-format
 msgid "E398: Missing '=': %s"
diff --git a/src/po/pl.UTF-8.po b/src/po/pl.UTF-8.po
index 64b3203..323d6ac 100644
--- a/src/po/pl.UTF-8.po
+++ b/src/po/pl.UTF-8.po
@@ -5101,8 +5101,8 @@
 msgstr "E397: Wymagana nazwa pliku"
 
 #, c-format
-msgid "E747: Missing ']': %s"
-msgstr "E747: Brak ']': %s"
+msgid "E789: Missing ']': %s"
+msgstr "E789: Brak ']': %s"
 
 #, c-format
 msgid "E398: Missing '=': %s"
diff --git a/src/po/pl.cp1250.po b/src/po/pl.cp1250.po
index 79cb55e..efd9afd 100644
--- a/src/po/pl.cp1250.po
+++ b/src/po/pl.cp1250.po
@@ -5101,8 +5101,8 @@
 msgstr "E397: Wymagana nazwa pliku"
 
 #, c-format
-msgid "E747: Missing ']': %s"
-msgstr "E747: Brak ']': %s"
+msgid "E789: Missing ']': %s"
+msgstr "E789: Brak ']': %s"
 
 #, c-format
 msgid "E398: Missing '=': %s"
diff --git a/src/po/pl.po b/src/po/pl.po
index 5103473..40e140f 100644
--- a/src/po/pl.po
+++ b/src/po/pl.po
@@ -5101,8 +5101,8 @@
 msgstr "E397: Wymagana nazwa pliku"
 
 #, c-format
-msgid "E747: Missing ']': %s"
-msgstr "E747: Brak ']': %s"
+msgid "E789: Missing ']': %s"
+msgstr "E789: Brak ']': %s"
 
 #, c-format
 msgid "E398: Missing '=': %s"
diff --git a/src/po/sk.cp1250.po b/src/po/sk.cp1250.po
index b8dad1b..75095c0 100644
--- a/src/po/sk.cp1250.po
+++ b/src/po/sk.cp1250.po
@@ -4871,8 +4871,8 @@
 msgstr "E397: Vyžadovaný názov súboru"
 
 #, c-format
-msgid "E747: Missing ']': %s"
-msgstr "E747: Chýba ']': %s"
+msgid "E789: Missing ']': %s"
+msgstr "E789: Chýba ']': %s"
 
 #, c-format
 msgid "E398: Missing '=': %s"
diff --git a/src/po/sk.po b/src/po/sk.po
index 5474a55..3c67b32 100644
--- a/src/po/sk.po
+++ b/src/po/sk.po
@@ -4871,8 +4871,8 @@
 msgstr "E397: Vy¾adovaný názov súboru"
 
 #, c-format
-msgid "E747: Missing ']': %s"
-msgstr "E747: Chýba ']': %s"
+msgid "E789: Missing ']': %s"
+msgstr "E789: Chýba ']': %s"
 
 #, c-format
 msgid "E398: Missing '=': %s"
diff --git a/src/po/sv.po b/src/po/sv.po
index e4a92df..e6bf7ee 100644
--- a/src/po/sv.po
+++ b/src/po/sv.po
@@ -5066,8 +5066,8 @@
 msgstr "E397: Filnamn krävs"
 
 #, c-format
-msgid "E747: Missing ']': %s"
-msgstr "E747: Saknar ']': %s"
+msgid "E789: Missing ']': %s"
+msgstr "E789: Saknar ']': %s"
 
 #, c-format
 msgid "E398: Missing '=': %s"
diff --git a/src/po/zh_CN.UTF-8.po b/src/po/zh_CN.UTF-8.po
index 83eaaf1..de60cda 100644
--- a/src/po/zh_CN.UTF-8.po
+++ b/src/po/zh_CN.UTF-8.po
@@ -5056,8 +5056,8 @@
 msgstr "E397: 需要文件名称"
 
 #, c-format
-msgid "E747: Missing ']': %s"
-msgstr "E747: 缺少 ']': %s"
+msgid "E789: Missing ']': %s"
+msgstr "E789: 缺少 ']': %s"
 
 #, c-format
 msgid "E398: Missing '=': %s"
diff --git a/src/po/zh_CN.cp936.po b/src/po/zh_CN.cp936.po
index 6e701ac..dd4df46 100644
--- a/src/po/zh_CN.cp936.po
+++ b/src/po/zh_CN.cp936.po
@@ -5056,8 +5056,8 @@
 msgstr "E397: ÐèÒªÎļþÃû³Æ"
 
 #, c-format
-msgid "E747: Missing ']': %s"
-msgstr "E747: ȱÉÙ ']': %s"
+msgid "E789: Missing ']': %s"
+msgstr "E789: ȱÉÙ ']': %s"
 
 #, c-format
 msgid "E398: Missing '=': %s"
diff --git a/src/po/zh_CN.po b/src/po/zh_CN.po
index 83bd7f4..b77b45e 100644
--- a/src/po/zh_CN.po
+++ b/src/po/zh_CN.po
@@ -5056,8 +5056,8 @@
 msgstr "E397: ÐèÒªÎļþÃû³Æ"
 
 #, c-format
-msgid "E747: Missing ']': %s"
-msgstr "E747: ȱÉÙ ']': %s"
+msgid "E789: Missing ']': %s"
+msgstr "E789: ȱÉÙ ']': %s"
 
 #, c-format
 msgid "E398: Missing '=': %s"
diff --git a/src/popupmnu.c b/src/popupmnu.c
index fc5ffff..21dfc85 100644
--- a/src/popupmnu.c
+++ b/src/popupmnu.c
@@ -30,7 +30,7 @@
 
 static int pum_do_redraw = FALSE;	/* do redraw anyway */
 
-static int pum_set_selected __ARGS((int n));
+static int pum_set_selected __ARGS((int n, int repeat));
 
 #define PUM_DEF_HEIGHT 10
 #define PUM_DEF_WIDTH  15
@@ -59,6 +59,7 @@
     int		height;
     int		col;
     int		above_row = cmdline_row;
+    int		redo_count = 0;
 
 redo:
     def_width = PUM_DEF_WIDTH;
@@ -209,8 +210,9 @@
     pum_size = size;
 
     /* Set selected item and redraw.  If the window size changed need to redo
-     * the positioning. */
-    if (pum_set_selected(selected))
+     * the positioning.  Limit this to two times, when there is not much
+     * room the window size will keep changing. */
+    if (pum_set_selected(selected, redo_count) && ++redo_count <= 2)
 	goto redo;
 }
 
@@ -338,12 +340,17 @@
 /*
  * Set the index of the currently selected item.  The menu will scroll when
  * necessary.  When "n" is out of range don't scroll.
+ * This may be repeated when the preview window is used:
+ * "repeat" == 0: open preview window normally
+ * "repeat" == 1: open preview window but don't set the size
+ * "repeat" == 2: don't open preview window
  * Returns TRUE when the window was resized and the location of the popup menu
  * must be recomputed.
  */
     static int
-pum_set_selected(n)
+pum_set_selected(n, repeat)
     int	    n;
+    int	    repeat;
 {
     int	    resized = FALSE;
     int	    context = pum_height / 2;
@@ -404,10 +411,14 @@
 	/*
 	 * Show extra info in the preview window if there is something and
 	 * 'completeopt' contains "preview".
+	 * Skip this when tried twice already.
+	 * Skip this also when there is not much room.
 	 * NOTE: Be very careful not to sync undo!
 	 */
 	if (pum_array[pum_selected].pum_info != NULL
-					    && vim_strchr(p_cot, 'p') != NULL)
+		&& Rows > 10
+		&& repeat <= 1
+		&& vim_strchr(p_cot, 'p') != NULL)
 	{
 	    win_T	*curwin_save = curwin;
 	    int		res = OK;
@@ -470,12 +481,15 @@
 
 		    /* Increase the height of the preview window to show the
 		     * text, but no more than 'previewheight' lines. */
-		    if (lnum > p_pvh)
-			lnum = p_pvh;
-		    if (curwin->w_height < lnum)
+		    if (repeat == 0)
 		    {
-			win_setheight((int)lnum);
-			resized = TRUE;
+			if (lnum > p_pvh)
+			    lnum = p_pvh;
+			if (curwin->w_height < lnum)
+			{
+			    win_setheight((int)lnum);
+			    resized = TRUE;
+			}
 		    }
 
 		    curbuf->b_changed = 0;
diff --git a/src/syntax.c b/src/syntax.c
index dfeda5e..714de44 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -4528,7 +4528,7 @@
 			    break;
 			if (p[1] == NUL)
 			{
-			    EMSG2(_("E747: Missing ']': %s"), kw);
+			    EMSG2(_("E789: Missing ']': %s"), kw);
 			    kw = p + 2;		/* skip over the NUL */
 			    break;
 			}
@@ -6329,9 +6329,9 @@
      * depend on the number of colors available. */
     if (t_colors > 8)
 	do_highlight((char_u *)(*p_bg == 'l' ? "Visual ctermbg=LightGrey"
-				   : "Visual ctermbg=DarkGrey"), reset, TRUE);
+				   : "Visual ctermbg=DarkGrey"), FALSE, TRUE);
     else
-	do_highlight((char_u *)"Visual cterm=reverse", reset, TRUE);
+	do_highlight((char_u *)"Visual cterm=reverse", FALSE, TRUE);
 
 #ifdef FEAT_SYN_HL
     /*
diff --git a/src/tag.c b/src/tag.c
index 24809e3..c9af52c 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -3356,7 +3356,6 @@
 	xpc.xp_context = EXPAND_FILES;
 	expanded_fname = ExpandOne(&xpc, (char_u *)fname, NULL,
 			    WILD_LIST_NOTFOUND|WILD_SILENT, WILD_EXPAND_FREE);
-	ExpandCleanup(&xpc);
 	if (expanded_fname != NULL)
 	    fname = expanded_fname;
     }
diff --git a/src/version.h b/src/version.h
index 4c8a6ac..d2a14fe 100644
--- a/src/version.h
+++ b/src/version.h
@@ -35,6 +35,6 @@
  */
 #define VIM_VERSION_NODOT	"vim70e"
 #define VIM_VERSION_SHORT	"7.0e"
-#define VIM_VERSION_MEDIUM	"7.0e03 BETA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0e03 BETA (2006 Apr 19)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0e03 BETA (2006 Apr 19, compiled "
+#define VIM_VERSION_MEDIUM	"7.0e04 BETA"
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0e04 BETA (2006 Apr 20)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0e04 BETA (2006 Apr 20, compiled "