From bugzilla-daemon at qos.ch Mon Jul 9 16:37:24 2012 From: bugzilla-daemon at qos.ch (bugzilla-daemon at qos.ch) Date: Mon, 9 Jul 2012 16:37:24 +0200 (CEST) Subject: [slf4j-dev] [Bug 259] jcl-over-slf4j repackages and duplicates classes from commons-logging.jar In-Reply-To: References: Message-ID: <20120709143724.26B97467195@pixie.qos.ch> http://bugzilla.slf4j.org/show_bug.cgi?id=259 David Boden changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |INVALID --- Comment #1 from David Boden 2012-07-09 16:37:23 CEST --- Apologies, I entirely missed the point of the jcl-over-slf4j package that's documented here: http://www.slf4j.org/legacy.html The approach should be to the commons-logging jar and retrofit the slf4j jar instead. It pipes everything logged by older components (that use commons-logging) into SLF4J. -- Configure bugmail: http://bugzilla.slf4j.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug. From git-noreply at pixie.qos.ch Mon Jul 9 22:49:43 2012 From: git-noreply at pixie.qos.ch (Gitbot) Date: Mon, 9 Jul 2012 22:49:43 +0200 (CEST) Subject: [slf4j-dev] [GIT] SLF4J: Simple Logging Facade for Java branch master updated. v_1.6.6-9-gd8eb296 Message-ID: <20120709204943.D24AC46716A@pixie.qos.ch> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "SLF4J: Simple Logging Facade for Java". The branch, master has been updated via d8eb296c9cefde451647fb5e7a6a409943b98b85 (commit) from a6f12c712182cd6fa8fa2199462b625cbe61c0bf (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://git.qos.ch/gitweb/?p=slf4j.git;a=commit;h=d8eb296c9cefde451647fb5e7a6a409943b98b85 http://github.com/ceki/slf4j/commit/d8eb296c9cefde451647fb5e7a6a409943b98b85 commit d8eb296c9cefde451647fb5e7a6a409943b98b85 Author: Ceki Gulcu Date: Mon Jul 9 22:47:42 2012 +0200 migraring to anchoring by decoration diff --git a/slf4j-site/src/site/pages/codes.html b/slf4j-site/src/site/pages/codes.html index 6b24388..6ec99ec 100644 --- a/slf4j-site/src/site/pages/codes.html +++ b/slf4j-site/src/site/pages/codes.html @@ -5,12 +5,21 @@ SLF4J Error Codes + + - + + + + -
@@ -24,12 +33,9 @@ -

- - The method - o.a.commons.logging.impl.SLF4FLogFactory#release - was invoked. - +

The method + o.a.commons.logging.impl.SLF4FLogFactory#release was + invoked.

Given the structure of the commons-logging API, in particular @@ -60,10 +66,9 @@ -

- - Operation [suchAndSuch] is not supported in jcl-over-slf4j. - +

Operation + [suchAndSuch] is not supported in jcl-over-slf4j.

An UnsuportedOperationException is thrown whenever @@ -86,12 +91,8 @@ -

- - Failedto load class - org.slf4j.impl.StaticLoggerBinder - -

+

Failedto load class + org.slf4j.impl.StaticLoggerBinder

This error is reported when the org.slf4j.impl.StaticLoggerBinder class could not be @@ -140,10 +141,10 @@ href="faq.html#compatibility">FAQ entry.

--> + -

- Multiple - bindings were found on the class path +

Multiple bindings + were found on the class path

@@ -169,8 +170,9 @@

-

slf4j-api - version does not match that of the binding

+ +

slf4j-api version + does not match that of the binding

An SLF4J binding designates an artifact such as slf4j-jdk14.jar or slf4j-log4j12.jar used to @@ -201,11 +203,10 @@ about the suspected mismatch.

- -

- Logging factory implementation - cannot be null -

+ + +

Logging factory implementation + cannot be null

This error is reported when the LoggerFactory class could not find an appropriate binding. Placing one (and only @@ -217,11 +218,9 @@ -

- Detected both log4j-over-slf4j.jar - AND slf4j-log4j12.jar on the class path, preempting - StackOverflowError. +

Detected both + log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, + preempting StackOverflowError.

The purpose of slf4j-log4j12 module is to delegate or redirect @@ -267,10 +266,9 @@ -

- Detected - both jcl-over-slf4j.jar AND slf4j-jcl.jar on the class path, - preempting StackOverflowError. +

Detected both + jcl-over-slf4j.jar AND slf4j-jcl.jar on the class path, preempting + StackOverflowError.

The purpose of slf4j-jcl module is to delegate or redirect @@ -311,12 +309,8 @@ -

- Failed to load class - "org.slf4j.impl.StaticMDCBinder" - -

+

Failed to load + class "org.slf4j.impl.StaticMDCBinder"

This error indicates that appropriate SLF4J binding could not be found on the class path. Placing one (and only one) of @@ -326,9 +320,9 @@ problem.

-

- MDCAdapter cannot be null - + + +

MDCAdapter cannot be null

This error is reported when org.slf4j.MDC class @@ -336,9 +330,10 @@ previously listed item.

- -

SLF4J versions - 1.4.0 and later requires log4j 1.2.12 or later

+ + +

SLF4J versions 1.4.0 and + later requires log4j 1.2.12 or later

The trace level was added to log4j in version 1.2.12 released on August 29, 2005. The trace level was added to the SLF4J API in @@ -355,9 +350,9 @@ DEBUG.

-

Substitute - loggers were created during the default configuration phase of the - underlying logging system

+

Substitute loggers + were created during the default configuration phase of the + underlying logging system

Highly configurable logging systems such as logback and log4j may create components which invoke loggers during their own @@ -392,14 +387,14 @@ relevant section..

- -

If you are not interested in the output from any of the substitute loggers, then no action is required on your part.

- + + + \ No newline at end of file diff --git a/slf4j-site/src/site/pages/css/site.css b/slf4j-site/src/site/pages/css/site.css index 1a4754d..79ec598 100644 --- a/slf4j-site/src/site/pages/css/site.css +++ b/slf4j-site/src/site/pages/css/site.css @@ -345,3 +345,45 @@ table.bodyTable tr.alt { .label.notice { background-color: #62cffc; } + + +/* ------------------------------------ */ + +dt { + border-top: 2px solid #888888; + color: #333; + padding-bottom: 1ex; + padding-top: 1ex; + font-weight: bold; +} +dd { + margin-top: 1ex; + margin-bottom: 1ex; +} + +/* ------------------------------------ */ +.anchor { display:none; } + +h1 .anchor:before {content:url(anchor24.png);} +h2 .anchor:before {content:url(anchor20.png);} +h3 .anchor:before {content:url(anchor16.png);} +h4 .anchor:before {content:url(anchor12.png);} +td .anchor:before {content:url(anchor12.png);} +dt .anchor:before {content:url(anchor12.png);} + +h1:hover .anchor { margin-left: -24px; } +h2:hover .anchor { margin-left: -20px; } +h3:hover .anchor { margin-left: -16px; } +h4:hover .anchor { margin-left: -12px; } +td:hover .anchor { margin-left: -12px; } +dt:hover .anchor { margin-left: -12px; } + +h1:hover .anchor, +h2:hover .anchor, +h3:hover .anchor, +h4:hover .anchor, +td:hover .anchor, +dt:hover .anchor { + display: inline-block; + text-decoration: none; +} \ No newline at end of file diff --git a/slf4j-site/src/site/pages/faq.html b/slf4j-site/src/site/pages/faq.html index 939228e..b9a07b1 100644 --- a/slf4j-site/src/site/pages/faq.html +++ b/slf4j-site/src/site/pages/faq.html @@ -8,12 +8,15 @@ - + - + + + +
@@ -149,10 +152,10 @@
    -
  1. How do I make my logging +
  2. How do I make my logging framework SLF4J compatible?
  3. -
  4. How can my logging system add +
  5. How can my logging system add support for the Marker interface?
  6. How does SLF4J's version check @@ -179,18 +182,15 @@

    Generalities

    -
    What is SLF4J?
    +
    What is SLF4J?

    SLF4J is a simple facade for logging systems allowing the end-user to plug-in the desired logging system at deployment time. -

    - -
    +

    -
    When should SLF4J be used? -
    +
    When should SLF4J be used?

    In short, libraries and other embedded components should @@ -231,14 +231,12 @@ to be made.

    -
    +
    -
    - - Is SLF4J yet another logging facade? -
    +
    Is SLF4J yet + another logging facade?

    SLF4J is conceptually very similar to JCL. As such, it can @@ -247,14 +245,12 @@ nutshell, SLF4J avoid the class loader issues that plague JCL.

    -
    +
    -
    - - If SLF4J fixes JCL, then why wasn't the fix made in JCL - instead of creating a new project? - +
    If SLF4J fixes JCL, + then why wasn't the fix made in JCL instead of creating a new + project?
    @@ -276,13 +272,12 @@ need be.

    -
    +
    -
    - When - using SLF4J, do I have to recompile my application to switch - to a different logging system? +
    When using SLF4J, do + I have to recompile my application to switch to a different + logging system?
    @@ -299,11 +294,11 @@ slf4j-log4j12.jar with slf4j-jdk14.jar.

    -
    +
    -
    - What are SLF4J's - requirements? + +
    What are SLF4J's + requirements?
    @@ -317,7 +312,7 @@

     

    - +
    @@ -349,13 +344,14 @@
    Binding Requirements
    -
    +
    -
    Are SLF4J - versions backward compatible? + +
    Are SLF4J versions + backward compatible?
    @@ -382,14 +378,14 @@ mismatch.

    -
    +
    -
    I am getting +
    I am getting IllegalAccessError exceptions when using SLF4J. Why - is that? + is that?
    @@ -437,17 +433,14 @@ org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory href="#compatibility">backward compatibility for a more general explanation.

    -
    +
    -
    - - Why is SLF4J licensed under X11 type license instead of the - Apache Software License? - +
    Why is SLF4J licensed under + X11 type license instead of the Apache Software License?
    @@ -460,14 +453,12 @@ org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory compatible with their respective licenses.

    -
    +
    -
    - - Where can I get a particular SLF4J binding? - +
    Where can I get a + particular SLF4J binding?
    @@ -491,11 +482,11 @@ org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory logback-classic binding requires slf4j-api.jar.

    -
    +
    -
    - Should my library attempt to configure logging? +
    Should my library + attempt to configure logging?
    @@ -510,17 +501,14 @@ org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory configured.

    -
    +
    -
    - In - order to reduce the number of dependencies of our software we - would like to make SLF4J an optional dependency. Is that a good - idea? - +
    In order to reduce + the number of dependencies of our software we would like to make + SLF4J an optional dependency. Is that a good idea?
    @@ -610,8 +598,8 @@ org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory -
    What about Maven - transitive dependencies? +
    What about Maven transitive + dependencies?
    @@ -652,15 +640,13 @@ org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory implementation.

    -
    +
    - -
    - How do I exclude - commons-logging as a Maven dependency? - + +
    How do I exclude + commons-logging as a Maven dependency?
    @@ -783,6 +769,7 @@ org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
    +
    @@ -790,9 +777,9 @@ org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
    -
    Why - don't the printing methods in the Logger interface accept - message of type Object, but only messages of type String? +
    Why don't the + printing methods in the Logger interface accept message of type + Object, but only messages of type String?
    @@ -842,14 +829,15 @@ debug(String msg, Throwable t); ensures that every logged exception is accompanied with a descriptive message.

    -
    +
    -
    - - Can I log an exception without an accompanying message? - + + +
    Can I log an + exception without an accompanying message?
    +

    In short, no.

    @@ -899,17 +887,16 @@ debug(String msg, Throwable t); accompanying message as a good a thing (TM).

    -
    + -
    - - What is the fastest way of (not) logging? +
    What is the + fastest way of (not) logging?
    -
    - + +

    SLF4J supports an advanced feature called parameterized logging which can significantly boost logging performance for disabled logging statement.

    @@ -1039,16 +1026,12 @@ logger.debug("The new entry is {}.", entry);
    logger.debug("File name is C:\\\\{}.", "file.zip");

    will print as "File name is C:\file.zip".

    -
    -
    + -
    How can - I log the string contents of a single (possibly complex) - object? - -
    +
    How can I log the + string contents of a single (possibly complex) object?

    In relatively rare cases where the message to be logged @@ -1070,17 +1053,16 @@ logger.debug("The new entry is {}.", entry); advantageously avoided.

    -
    +
    + - -
    - Why doesn't the - org.slf4j.Logger interface have methods for the - FATAL level? +
    Why doesn't the + org.slf4j.Logger interface have methods for the FATAL + level?
    @@ -1136,14 +1118,12 @@ class Bar { only logback supports marker data. However, nothing prevents other logging frameworks from making use of marker data.

    -
    +
    -
    - Why was the TRACE level introduced only in - SLF4J version 1.4.0? - -
    + +
    Why was the TRACE level + introduced only in SLF4J version 1.4.0?
    @@ -1182,14 +1162,13 @@ class Bar { requests of level TRACE are wasteful, given that people kept asking for it, we decided to bow to popular demand.

    -
    +
    - -
    - Does the SLF4J logging API support - I18N (internationalization)? - + + +
    Does the SLF4J logging API + support I18N (internationalization)?
    @@ -1199,12 +1178,14 @@ class Bar { support as a thin layer built upon the CAL10N API.

    -
    +
    -
    Is it - possible to retrieve loggers without going through the static - methods in LoggerFactory? + + +
    Is it possible to + retrieve loggers without going through the static methods in + LoggerFactory?
    @@ -1233,9 +1214,11 @@ class Bar { inventing your own logging API.

    -
    In the presence of an + + +
    In the presence of an exception/throwable, is it possible to parametizere a logging - statement?
    + statement?
    @@ -1267,9 +1250,6 @@ try {

    - - -
    @@ -1277,9 +1257,11 @@ try {

    Implementing the SLF4J API

    -
    How do - I make my logging framework SLF4J compatible? - + + + +
    How do I make my + logging framework SLF4J compatible?
    @@ -1332,13 +1314,13 @@ try { factory you created in the previous step
-
+ -
- How - can my logging system add support for the Marker - interface? - + + + +
How can my logging + system add support for the Marker interface?
@@ -1366,11 +1348,13 @@ try { Marker as the first argument.

-
+
-
How does - SLF4J's version check mechanism work? + + +
How does SLF4J's + version check mechanism work?
@@ -1422,9 +1406,12 @@ try {

General questions about logging

+
-
Should Logger - members of a class be declared as static? + + +
Should Logger members + of a class be declared as static?
@@ -1586,10 +1573,10 @@ try {
+
-
Is there a recommended idiom for - declaring a logger in a class? +
Is there a + recommended idiom for declaring a logger in a class?
diff --git a/slf4j-site/src/site/pages/js/decorator.js b/slf4j-site/src/site/pages/js/decorator.js new file mode 100644 index 0000000..7fe202e --- /dev/null +++ b/slf4j-site/src/site/pages/js/decorator.js @@ -0,0 +1,77 @@ + + +//

Logger context

+ +function decorate() { + decoratePropertiesInTables(); + decorateDoAnchor(); + decorateConversionWordInTables(); +} + +function decoratePropertiesInTables() { + //if(1==1) return; + var elems = $('tr td:first-child span.prop'); + + for(var i = 0; i < elems.length; i++) { + var e = elems[i]; + var p = e.parentNode; + if(p == null) continue; + + var tmpHTML = p.innerHTML; + var propName = e.innerHTML; + var nameAttr = $(e).attr('name') + + if(nameAttr == null) { + var containerAttr = $(e).attr('container') + if(containerAttr != null) + nameAttr = containerAttr+capitaliseFirstLetter(propName); + else + nameAttr = propName; + } + + p.innerHTML = "" +tmpHTML +""; + } // for +} + +function decorateConversionWordInTables() { + var elems = $('tr td.word'); + for(var i = 0; i < elems.length; i++) { + var e = elems[i]; + var tmpHTML = e.innerHTML; + var nameAttr = $(e).attr('name') + if(nameAttr == null) + continue; + e.innerHTML = "" +tmpHTML; + } +} + + +function decorateDoAnchor() { + var elems = $('.doAnchor'); + for(var i = 0; i < elems.length; i++) { + var e = elems[i]; + var tmpHTML = e.innerHTML; + var nameAttr = $(e).attr('name') + if(nameAttr == null) { + nameAttr = camelCase($.trim(tmpHTML)) + } + e.innerHTML = "" +tmpHTML; + } +} + +function capitaliseFirstLetter(str) { + return str.charAt(0).toUpperCase() + str.slice(1); +} + + +function camelCase(str) { + var res = str.trim().replace(/\s\w/g, function(match) { + return match.trim().toUpperCase(); + }); + return res; +} + diff --git a/slf4j-site/src/site/pages/js/jquery-min.js b/slf4j-site/src/site/pages/js/jquery-min.js new file mode 100644 index 0000000..16ad06c --- /dev/null +++ b/slf4j-site/src/site/pages/js/jquery-min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.2 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="
"+""+"
",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="
t
",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="
",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function( +a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f +.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(;d1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===""&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/slf4j-site/src/site/pages/legacy.html b/slf4j-site/src/site/pages/legacy.html index 7817684..aac8a13 100644 --- a/slf4j-site/src/site/pages/legacy.html +++ b/slf4j-site/src/site/pages/legacy.html @@ -8,10 +8,14 @@ - + + - + + + +
@@ -46,10 +50,10 @@

-

Gradual migration to - SLF4J from Jakarta Commons Logging (JCL)

+

Gradual migration to + SLF4J from Jakarta Commons Logging (JCL)

-

jcl-over-slf4j.jar

+

jcl-over-slf4j.jar

To ease migration to SLF4J from JCL, SLF4J distributions include the jar file jcl-over-slf4j.jar. This jar file is @@ -74,7 +78,7 @@ class loader issues related to commons logging.

-

slf4j-jcl.jar

+

slf4j-jcl.jar

Some of our users after having switched to SLF4J API realize that in some contexts the use of JCL is mandatory and their use of SLF4J @@ -88,8 +92,9 @@ of the application which can continue to use JCL.

-

jcl-over-slf4j.jar should not be confused with - slf4j-jcl.jar

+

jcl-over-slf4j.jar should not be + confused with slf4j-jcl.jar

JCL-over-SLF4J, i.e. jcl-over-slf4j.jar, comes in handy @@ -118,7 +123,7 @@

-

log4j-over-slf4j

+

log4j-over-slf4j

SLF4J ship with a module called log4j-over-slf4j. It allows log4j users to migrate existing applications to SLF4J without @@ -127,7 +132,7 @@ described below.

-

How does it work?

+

How does it work?

The log4j-over-slf4j module contains replacements of most widely used log4j classes, namely org.apache.log4j.Category, @@ -157,7 +162,7 @@ href="http://logback.qos.ch/manual/index.html">its manual.

-

When does it not work?

+

When does it not work?

The log4j-over-slf4j module will not work when the application calls log4j components that are not present in the @@ -171,7 +176,8 @@ -

What about the overhead?

+

What about the + overhead?

There overhead of using log4j-over-slf4j instead of log4j directly is relatively small. Given that log4j-over-slf4j @@ -186,8 +192,8 @@ log4j-over-slf4j instead of log4j directly.

-

log4j-over-slf4j.jar and slf4j-logj12.jar cannot be present - simultaneously +

log4j-over-slf4j.jar + and slf4j-logj12.jar cannot be present simultaneously

The presence of slf4j-logj12.jar, that is the log4j @@ -201,7 +207,7 @@ -

jul-to-slf4j bridge

+

jul-to-slf4j bridge

The jul-to-slf4j module includes a java.util.logging (jul) handler, namely SLF4JBridgeHandler, which routes all @@ -240,7 +246,7 @@ -

jul-to-slf4j.jar and slf4j-jdk14.jar cannot be present +

jul-to-slf4j.jar and slf4j-jdk14.jar cannot be present simultaneously

diff --git a/slf4j-site/src/site/pages/manual.html b/slf4j-site/src/site/pages/manual.html index 2141882..47e345a 100644 --- a/slf4j-site/src/site/pages/manual.html +++ b/slf4j-site/src/site/pages/manual.html @@ -8,13 +8,14 @@ - + - - + + +
- +
@@ -34,9 +35,7 @@ implementation.

-

- Hello World -

+

Hello World

As customary in programming tradition, here is an example illustrating the simplest way to output "Hello world" using SLF4J. @@ -84,10 +83,8 @@ SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further detail

0 [main] INFO HelloWorld - Hello World
-

- Typical usage - pattern -

+

Typical usage + pattern

The sample code below illustrates the typical usage pattern for SLF4J. Note the use of {}-placeholders on line 15. See the @@ -121,8 +118,8 @@ SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further detail -

Binding with a logging - framework at deployment time

+

Binding with a logging + framework at deployment time

As mentioned previously, SLF4J supports various logging frameworks. The SLF4J distribution ships with several jar files @@ -214,7 +211,7 @@ SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further detail find it very easy to write SLF4J bindings.

-

Libraries

+

Libraries

Authors of widely-distributed components and libraries may code against the SLF4J interface in order to avoid imposing an @@ -247,8 +244,8 @@ SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further detail

-

Declaring project - dependencies for logging

+

Declaring project + dependencies for logging

Please note that embedded components such as libraries or frameworks should not declare a dependency on any slf4j binding @@ -313,8 +310,8 @@ SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further detail -

Binary - compatibility

+

Binary + compatibility

An SLF4J binding designates an artifact such as slf4j-jdk14.jar or slf4j-log4j12.jar used to @@ -356,8 +353,8 @@ SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further detail

-

Consolidate - logging via SLF4J

+

Consolidate logging via + SLF4J

Often times, a given project will depend on various components which rely on logging APIs other than SLF4J. It is @@ -370,8 +367,8 @@ SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further detail APIs.

-

Mapped Diagnostic Context (MDC) - support

+

Mapped Diagnostic Context (MDC) support

+

"Mapped Diagnostic Context" is essentially a map maintained by the logging framework where the application can provided key-value pairs, which can then be inserted by the logging framework in log messages.

@@ -398,9 +395,7 @@ SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further detail -

Executive - summary -

+

Executive summary

diff --git a/slf4j-site/src/site/resources/css/anchor12.png b/slf4j-site/src/site/resources/css/anchor12.png new file mode 100644 index 0000000..2cd97ac Binary files /dev/null and b/slf4j-site/src/site/resources/css/anchor12.png differ diff --git a/slf4j-site/src/site/resources/css/anchor16.png b/slf4j-site/src/site/resources/css/anchor16.png new file mode 100644 index 0000000..c0676f4 Binary files /dev/null and b/slf4j-site/src/site/resources/css/anchor16.png differ diff --git a/slf4j-site/src/site/resources/css/anchor20.png b/slf4j-site/src/site/resources/css/anchor20.png new file mode 100644 index 0000000..76ca74b Binary files /dev/null and b/slf4j-site/src/site/resources/css/anchor20.png differ diff --git a/slf4j-site/src/site/resources/css/anchor24.png b/slf4j-site/src/site/resources/css/anchor24.png new file mode 100644 index 0000000..13c433f Binary files /dev/null and b/slf4j-site/src/site/resources/css/anchor24.png differ ----------------------------------------------------------------------- Summary of changes: slf4j-site/src/site/pages/codes.html | 105 +++++------ slf4j-site/src/site/pages/css/site.css | 42 ++++ slf4j-site/src/site/pages/faq.html | 249 +++++++++++------------- slf4j-site/src/site/pages/js/decorator.js | 77 ++++++++ slf4j-site/src/site/pages/js/jquery-min.js | 4 + slf4j-site/src/site/pages/legacy.html | 38 ++-- slf4j-site/src/site/pages/manual.html | 45 ++--- slf4j-site/src/site/resources/css/anchor12.png | Bin 0 -> 624 bytes slf4j-site/src/site/resources/css/anchor16.png | Bin 0 -> 945 bytes slf4j-site/src/site/resources/css/anchor20.png | Bin 0 -> 1269 bytes slf4j-site/src/site/resources/css/anchor24.png | Bin 0 -> 1685 bytes 11 files changed, 333 insertions(+), 227 deletions(-) create mode 100644 slf4j-site/src/site/pages/js/decorator.js create mode 100644 slf4j-site/src/site/pages/js/jquery-min.js create mode 100644 slf4j-site/src/site/resources/css/anchor12.png create mode 100644 slf4j-site/src/site/resources/css/anchor16.png create mode 100644 slf4j-site/src/site/resources/css/anchor20.png create mode 100644 slf4j-site/src/site/resources/css/anchor24.png hooks/post-receive -- SLF4J: Simple Logging Facade for Java From ceki at qos.ch Mon Jul 9 22:47:57 2012 From: ceki at qos.ch (Ceki Gulcu) Date: Mon, 09 Jul 2012 13:47:57 -0700 Subject: [slf4j-dev] [qos-ch/slf4j] d8eb29: migraring to anchoring by decoration Message-ID: <4ffb437deb059_3aea14b7ae89426e@sh2.rs.github.com.mail> Branch: refs/heads/master Home: https://github.com/qos-ch/slf4j Commit: d8eb296c9cefde451647fb5e7a6a409943b98b85 https://github.com/qos-ch/slf4j/commit/d8eb296c9cefde451647fb5e7a6a409943b98b85 Author: Ceki Gulcu Date: 2012-07-09 (Mon, 09 Jul 2012) Changed paths: M slf4j-site/src/site/pages/codes.html M slf4j-site/src/site/pages/css/site.css M slf4j-site/src/site/pages/faq.html A slf4j-site/src/site/pages/js/decorator.js A slf4j-site/src/site/pages/js/jquery-min.js M slf4j-site/src/site/pages/legacy.html M slf4j-site/src/site/pages/manual.html A slf4j-site/src/site/resources/css/anchor12.png A slf4j-site/src/site/resources/css/anchor16.png A slf4j-site/src/site/resources/css/anchor20.png A slf4j-site/src/site/resources/css/anchor24.png Log Message: ----------- migraring to anchoring by decoration From git-noreply at pixie.qos.ch Thu Jul 12 00:27:19 2012 From: git-noreply at pixie.qos.ch (Gitbot) Date: Thu, 12 Jul 2012 00:27:19 +0200 (CEST) Subject: [slf4j-dev] [GIT] SLF4J: Simple Logging Facade for Java branch master updated. v_1.6.6-10-g2e49281 Message-ID: <20120711222720.0AA3D390543@pixie.qos.ch> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "SLF4J: Simple Logging Facade for Java". The branch, master has been updated via 2e4928103e219e4deaf4576e105e70fd9945e9d8 (commit) from d8eb296c9cefde451647fb5e7a6a409943b98b85 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://git.qos.ch/gitweb/?p=slf4j.git;a=commit;h=2e4928103e219e4deaf4576e105e70fd9945e9d8 http://github.com/ceki/slf4j/commit/2e4928103e219e4deaf4576e105e70fd9945e9d8 commit 2e4928103e219e4deaf4576e105e70fd9945e9d8 Author: Ceki Gulcu Date: Thu Jul 12 00:25:15 2012 +0200 without scrolling anchors are useless diff --git a/slf4j-site/src/site/pages/js/decorator.js b/slf4j-site/src/site/pages/js/decorator.js index 7fe202e..6c4b806 100644 --- a/slf4j-site/src/site/pages/js/decorator.js +++ b/slf4j-site/src/site/pages/js/decorator.js @@ -4,12 +4,26 @@ // class="anchor"/>Logger context function decorate() { - decoratePropertiesInTables(); - decorateDoAnchor(); + var anchor = findAnchorInURL(document.URL); + decoratePropertiesInTables(anchor); + decorateDoAnchor(anchor); decorateConversionWordInTables(); } -function decoratePropertiesInTables() { +// ---------------------------------------------- +function findAnchorInURL(url) { + + if(url == null) return null + var index = url.lastIndexOf("#"); + if(index != -1 && (index+1) < url.length) + return url.substr(index+1); + else + return null; +} + +// ---------------------------------------------- +function decoratePropertiesInTables(anchor) { + //if(1==1) return; var elems = $('tr td:first-child span.prop'); @@ -21,7 +35,7 @@ function decoratePropertiesInTables() { var tmpHTML = p.innerHTML; var propName = e.innerHTML; var nameAttr = $(e).attr('name') - + if(nameAttr == null) { var containerAttr = $(e).attr('container') if(containerAttr != null) @@ -29,9 +43,10 @@ function decoratePropertiesInTables() { else nameAttr = propName; } - + p.innerHTML = "" +tmpHTML +""; + scrollIfMatch(p, nameAttr, anchor); } // for } @@ -45,11 +60,12 @@ function decorateConversionWordInTables() { continue; e.innerHTML = "" +tmpHTML; + scrollIfMatch(e, nameAttr, anchor); } } -function decorateDoAnchor() { +function decorateDoAnchor(anchor) { var elems = $('.doAnchor'); for(var i = 0; i < elems.length; i++) { var e = elems[i]; @@ -60,9 +76,17 @@ function decorateDoAnchor() { } e.innerHTML = "" +tmpHTML; + scrollIfMatch(e, nameAttr, anchor); } } +function scrollIfMatch(element, nameAttr, anchor) { + if(anchor != null && nameAttr.toString() == anchor) + element.scrollIntoView(true); + + +} + function capitaliseFirstLetter(str) { return str.charAt(0).toUpperCase() + str.slice(1); } ----------------------------------------------------------------------- Summary of changes: slf4j-site/src/site/pages/js/decorator.js | 36 ++++++++++++++++++++++++----- 1 files changed, 30 insertions(+), 6 deletions(-) hooks/post-receive -- SLF4J: Simple Logging Facade for Java From ceki at qos.ch Thu Jul 12 00:25:31 2012 From: ceki at qos.ch (Ceki Gulcu) Date: Wed, 11 Jul 2012 15:25:31 -0700 Subject: [slf4j-dev] [qos-ch/slf4j] 2e4928: without scrolling anchors are useless Message-ID: <4ffdfd5b9815e_6fa818f8ae410387c@sh2.rs.github.com.mail> Branch: refs/heads/master Home: https://github.com/qos-ch/slf4j Commit: 2e4928103e219e4deaf4576e105e70fd9945e9d8 https://github.com/qos-ch/slf4j/commit/2e4928103e219e4deaf4576e105e70fd9945e9d8 Author: Ceki Gulcu Date: 2012-07-11 (Wed, 11 Jul 2012) Changed paths: M slf4j-site/src/site/pages/js/decorator.js Log Message: ----------- without scrolling anchors are useless From bugzilla-daemon at qos.ch Thu Jul 12 16:21:46 2012 From: bugzilla-daemon at qos.ch (bugzilla-daemon at qos.ch) Date: Thu, 12 Jul 2012 16:21:46 +0200 (CEST) Subject: [slf4j-dev] [Bug 84] Could you please implement MDC.getContext() In-Reply-To: References: Message-ID: <20120712142146.C3E8F31B22A@pixie.qos.ch> http://bugzilla.slf4j.org/show_bug.cgi?id=84 Christoffer S. changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |christoffer.sawicki at gmail.c | |om --- Comment #8 from Christoffer S. 2012-07-12 16:21:46 CEST --- Why wasn't `MDC.getContext()` added in the end? Was it perhaps to not sanction use of an internal method? The implementation should only be `return new Hashtable(org.slf4j.MDC.getCopyOfContextMap())`, no? -- Configure bugmail: http://bugzilla.slf4j.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug. From bugzilla-daemon at qos.ch Thu Jul 12 16:25:48 2012 From: bugzilla-daemon at qos.ch (bugzilla-daemon at qos.ch) Date: Thu, 12 Jul 2012 16:25:48 +0200 (CEST) Subject: [slf4j-dev] [Bug 84] Could you please implement MDC.getContext() In-Reply-To: References: Message-ID: <20120712142548.BBCF131C3D0@pixie.qos.ch> http://bugzilla.slf4j.org/show_bug.cgi?id=84 Ceki Gulcu changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |listid at qos.ch --- Comment #9 from Ceki Gulcu 2012-07-12 16:25:48 CEST --- MDC.getContext() was implemented with but given a different name, i.e. getCopyOfContextMap(). -- Configure bugmail: http://bugzilla.slf4j.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug. From bugzilla-daemon at qos.ch Thu Jul 12 16:26:06 2012 From: bugzilla-daemon at qos.ch (bugzilla-daemon at qos.ch) Date: Thu, 12 Jul 2012 16:26:06 +0200 (CEST) Subject: [slf4j-dev] [Bug 84] Could you please implement MDC.getContext() In-Reply-To: References: Message-ID: <20120712142606.43FE6458EC5@pixie.qos.ch> http://bugzilla.slf4j.org/show_bug.cgi?id=84 Ceki Gulcu changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED -- Configure bugmail: http://bugzilla.slf4j.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug. From bugzilla-daemon at qos.ch Thu Jul 12 16:34:31 2012 From: bugzilla-daemon at qos.ch (bugzilla-daemon at qos.ch) Date: Thu, 12 Jul 2012 16:34:31 +0200 (CEST) Subject: [slf4j-dev] [Bug 84] Could you please implement MDC.getContext() In-Reply-To: References: Message-ID: <20120712143431.8AEE845BDAE@pixie.qos.ch> http://bugzilla.slf4j.org/show_bug.cgi?id=84 --- Comment #10 from Christoffer S. 2012-07-12 16:34:31 CEST --- Yes, `org.slf4j.MDC.getCopyOfContextMap()` was implemented, but not `org.apache.log4j.MDC.getContext()`. This has the effect that `log4j-over-slf4j` is not a 100% drop-in replacement for `log4j` because of the missing (internal) method. I'm not sure if this is deliberate or not, hence my question. -- Configure bugmail: http://bugzilla.slf4j.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug. From bugzilla-daemon at qos.ch Thu Jul 12 16:43:09 2012 From: bugzilla-daemon at qos.ch (bugzilla-daemon at qos.ch) Date: Thu, 12 Jul 2012 16:43:09 +0200 (CEST) Subject: [slf4j-dev] [Bug 84] Could you please implement MDC.getContext() In-Reply-To: References: Message-ID: <20120712144309.D6BC031D1F0@pixie.qos.ch> http://bugzilla.slf4j.org/show_bug.cgi?id=84 --- Comment #11 from Christoffer S. 2012-07-12 16:43:09 CEST --- I should add that I'm interested in this because I have spotted code that uses `org.apache.log4j.MDC.getContext()` in the wild and I would like that code to work with `log4j-over-slf4j`. (I've reported that `getContext()` is meant for internal use but there doesn't seem to be a good replacement: http://jira.pentaho.com/browse/MONDRIAN-1171) -- Configure bugmail: http://bugzilla.slf4j.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug. From bugzilla-daemon at qos.ch Mon Jul 16 09:29:44 2012 From: bugzilla-daemon at qos.ch (bugzilla-daemon at qos.ch) Date: Mon, 16 Jul 2012 09:29:44 +0200 (CEST) Subject: [slf4j-dev] [Bug 266] New: Memory Leak: Clearing MDC context with Log4J Message-ID: http://bugzilla.slf4j.org/show_bug.cgi?id=266 Summary: Memory Leak: Clearing MDC context with Log4J Product: SLF4J Version: 1.6.x Platform: All OS/Version: All Status: NEW Severity: major Priority: P1 Component: Implementations AssignedTo: slf4j-dev at qos.ch ReportedBy: f.bantner at axon-e.de Recently after a long time log4j got it's problem with clearing the MDC context and the underlying ThreadLocal Hashmap fixed. S. https://issues.apache.org/bugzilla/show_bug.cgi?id=50486 This fixed a long running Problem with Tomcat freeing memory on reload. In order to do so, log4j's MDC got the clear method with 1.2.16 and with 1.2.17 fixed it so that it works. Log4j has an MDC adaptor for Log4J and it's own clear method. But instead of calling Log4J's clear it implements essentially (MDC.getContext()).clear() which only clears the HashMap but doesn't remove it from the ThreadLocal context resulting in a MemroryLeak. Short workaround: Instead of calling slf4j's MDC.clear() call log4j's MDC.clear() (but that is the exact opositit of what slf4j is made for) Simple Fix: change log4j's mdc adaptor to call MDC.clear() instead of MDC.getContext().clear(). More complex fix: If backward compatibility is an issue (like it was f?r log4j) than log4js solution can be applied here: Instead of calling MDC.clear() directly call it via reflexion if it exists and otherwise keep calling MDC.getContext().clear(). -- Configure bugmail: http://bugzilla.slf4j.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug. From bugzilla-daemon at qos.ch Mon Jul 16 17:44:35 2012 From: bugzilla-daemon at qos.ch (bugzilla-daemon at qos.ch) Date: Mon, 16 Jul 2012 17:44:35 +0200 (CEST) Subject: [slf4j-dev] [Bug 254] Configurable support for Roboguice's 'Ln' logger In-Reply-To: References: Message-ID: <20120716154435.CF86D467253@pixie.qos.ch> http://bugzilla.slf4j.org/show_bug.cgi?id=254 trash723723-android at yahoo.fr changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |trash723723-android at yahoo.f | |r --- Comment #1 from trash723723-android at yahoo.fr 2012-07-16 17:44:35 CEST --- +1 for this feature -- Configure bugmail: http://bugzilla.slf4j.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug. From bugzilla-daemon at qos.ch Tue Jul 17 09:04:28 2012 From: bugzilla-daemon at qos.ch (bugzilla-daemon at qos.ch) Date: Tue, 17 Jul 2012 09:04:28 +0200 (CEST) Subject: [slf4j-dev] [Bug 267] New: IllegalStateException when logging to Level.ALL Message-ID: http://bugzilla.slf4j.org/show_bug.cgi?id=267 Summary: IllegalStateException when logging to Level.ALL Product: SLF4J Version: 1.6.x Platform: PC OS/Version: All Status: NEW Severity: blocker Priority: P1 Component: log4j-over-slf4j AssignedTo: slf4j-dev at qos.ch ReportedBy: bbrandl at atoss-csd.de We are trying to migrate from log4j to slf4j. During the process we use the log4j-over-slf4j bridge. In this bridge following error occurs: If an entry is logged with priotory Level.ALL, logger.log( Level.ALL, "log entry to all" );, the follwing exception is thrown: Exception in thread "Thread-6" java.lang.IllegalStateException: Unknown Priority ALL at org.apache.log4j.Category.priorityToLevelInt(Category.java:325) at org.apache.log4j.Category.log(Category.java:305) -- Configure bugmail: http://bugzilla.slf4j.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug. From bugzilla-daemon at qos.ch Tue Jul 17 12:44:38 2012 From: bugzilla-daemon at qos.ch (bugzilla-daemon at qos.ch) Date: Tue, 17 Jul 2012 12:44:38 +0200 (CEST) Subject: [slf4j-dev] [Bug 84] Could you please implement MDC.getContext() In-Reply-To: References: Message-ID: <20120717104438.9854145894B@pixie.qos.ch> http://bugzilla.slf4j.org/show_bug.cgi?id=84 --- Comment #12 from Christoffer S. 2012-07-17 12:44:38 CEST --- Here's a patch that adds org.apache.log4j.MDC.getContext() to log4j-over-slf4j for those who miss it: https://gist.github.com/d21af753dc2b41f84654 -- Configure bugmail: http://bugzilla.slf4j.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug. From git-noreply at pixie.qos.ch Tue Jul 17 17:46:33 2012 From: git-noreply at pixie.qos.ch (Gitbot) Date: Tue, 17 Jul 2012 17:46:33 +0200 (CEST) Subject: [slf4j-dev] [GIT] SLF4J: Simple Logging Facade for Java branch master updated. v_1.6.6-11-g024fcd0 Message-ID: <20120717154633.C26EA46746F@pixie.qos.ch> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "SLF4J: Simple Logging Facade for Java". The branch, master has been updated via 024fcd000725f3d572ab801714d61506643140df (commit) from 2e4928103e219e4deaf4576e105e70fd9945e9d8 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://git.qos.ch/gitweb/?p=slf4j.git;a=commit;h=024fcd000725f3d572ab801714d61506643140df http://github.com/ceki/slf4j/commit/024fcd000725f3d572ab801714d61506643140df commit 024fcd000725f3d572ab801714d61506643140df Author: Ceki Gulcu Date: Tue Jul 17 17:44:25 2012 +0200 minor edits diff --git a/slf4j-site/src/site/pages/js/decorator.js b/slf4j-site/src/site/pages/js/decorator.js index 6c4b806..362712e 100644 --- a/slf4j-site/src/site/pages/js/decorator.js +++ b/slf4j-site/src/site/pages/js/decorator.js @@ -7,7 +7,7 @@ function decorate() { var anchor = findAnchorInURL(document.URL); decoratePropertiesInTables(anchor); decorateDoAnchor(anchor); - decorateConversionWordInTables(); + decorateConversionWordInTables(anchor); } // ---------------------------------------------- @@ -50,7 +50,7 @@ function decoratePropertiesInTables(anchor) { } // for } -function decorateConversionWordInTables() { +function decorateConversionWordInTables(anchor) { var elems = $('tr td.word'); for(var i = 0; i < elems.length; i++) { var e = elems[i]; diff --git a/slf4j-site/src/site/pages/manual.html b/slf4j-site/src/site/pages/manual.html index 47e345a..940a825 100644 --- a/slf4j-site/src/site/pages/manual.html +++ b/slf4j-site/src/site/pages/manual.html @@ -335,16 +335,16 @@ SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further detail slf4j-simple-1.5.5.jar will not work.

-

From the client's perspective all versions of slf4j-api are - compatible. Client code compiled with slf4j-api-N.jar - will run perfectly fine with slf4j-api-M.jar for any N - and M. You only need to ensure that the version of your binding - matches that of the slf4j-api.jar. You do not have to worry - about the version of slf4j-api.jar used by a given dependency in - your project. You can always use any version of - slf4j-api.jar, and as long as the version of - slf4j-api.jar and its binding match, you should be - fine. +

However, from the client's perspective all versions of + slf4j-api are compatible. Client code compiled with + slf4j-api-N.jar will run perfectly fine with + slf4j-api-M.jar for any N and M. You only need to + ensure that the version of your binding matches that of the + slf4j-api.jar. You do not have to worry about the version of + slf4j-api.jar used by a given dependency in your project. You + can always use any version of slf4j-api.jar, and as + long as the version of slf4j-api.jar and its binding + match, you should be fine.

At initialization time, if SLF4J suspects that there may be ----------------------------------------------------------------------- Summary of changes: slf4j-site/src/site/pages/js/decorator.js | 4 ++-- slf4j-site/src/site/pages/manual.html | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) hooks/post-receive -- SLF4J: Simple Logging Facade for Java From ceki at qos.ch Tue Jul 17 17:44:38 2012 From: ceki at qos.ch (Ceki Gulcu) Date: Tue, 17 Jul 2012 08:44:38 -0700 Subject: [slf4j-dev] [qos-ch/slf4j] 024fcd: minor edits Message-ID: <5005886642a1_2b9d1271af4678bc@sh3.rs.github.com.mail> Branch: refs/heads/master Home: https://github.com/qos-ch/slf4j Commit: 024fcd000725f3d572ab801714d61506643140df https://github.com/qos-ch/slf4j/commit/024fcd000725f3d572ab801714d61506643140df Author: Ceki Gulcu Date: 2012-07-17 (Tue, 17 Jul 2012) Changed paths: M slf4j-site/src/site/pages/js/decorator.js M slf4j-site/src/site/pages/manual.html Log Message: ----------- minor edits From git-noreply at pixie.qos.ch Mon Jul 30 22:24:40 2012 From: git-noreply at pixie.qos.ch (Gitbot) Date: Mon, 30 Jul 2012 22:24:40 +0200 (CEST) Subject: [slf4j-dev] [GIT] SLF4J: Simple Logging Facade for Java branch master updated. v_1.6.6-12-gd74da46 Message-ID: <20120730202440.F414946616A@pixie.qos.ch> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "SLF4J: Simple Logging Facade for Java". The branch, master has been updated via d74da4635bf1bb026c181e816482f8f81825c734 (commit) from 024fcd000725f3d572ab801714d61506643140df (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://git.qos.ch/gitweb/?p=slf4j.git;a=commit;h=d74da4635bf1bb026c181e816482f8f81825c734 http://github.com/ceki/slf4j/commit/d74da4635bf1bb026c181e816482f8f81825c734 commit d74da4635bf1bb026c181e816482f8f81825c734 Author: Ceki Gulcu Date: Mon Jul 30 22:22:04 2012 +0200 link to short video diff --git a/slf4j-site/src/site/pages/docs.html b/slf4j-site/src/site/pages/docs.html index 2fa7abd..18fa5cf 100644 --- a/slf4j-site/src/site/pages/docs.html +++ b/slf4j-site/src/site/pages/docs.html @@ -104,6 +104,11 @@ Logging with SLF4J by Baptiste Wicht + +

  • + Steps to use + SLF4J short (8 minute) video +
  • ----------------------------------------------------------------------- Summary of changes: slf4j-site/src/site/pages/docs.html | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) hooks/post-receive -- SLF4J: Simple Logging Facade for Java From ceki at qos.ch Mon Jul 30 22:22:31 2012 From: ceki at qos.ch (Ceki Gulcu) Date: Mon, 30 Jul 2012 13:22:31 -0700 Subject: [slf4j-dev] [qos-ch/slf4j] d74da4: link to short video Message-ID: <5016ed07e124_1a1ae77ae86282c@sh2.rs.github.com.mail> Branch: refs/heads/master Home: https://github.com/qos-ch/slf4j Commit: d74da4635bf1bb026c181e816482f8f81825c734 https://github.com/qos-ch/slf4j/commit/d74da4635bf1bb026c181e816482f8f81825c734 Author: Ceki Gulcu Date: 2012-07-30 (Mon, 30 Jul 2012) Changed paths: M slf4j-site/src/site/pages/docs.html Log Message: ----------- link to short video