function hex_md5(a) { return binl2hex(core_md5(str2binl(a), a.length * chrsz)) } function b64_md5(a) { return binl2b64(core_md5(str2binl(a), a.length * chrsz)) } function str_md5(a) { return binl2str(core_md5(str2binl(a), a.length * chrsz)) } function hex_hmac_md5(a, t) { return binl2hex(core_hmac_md5(a, t)) } function b64_hmac_md5(a, t) { return binl2b64(core_hmac_md5(a, t)) } function str_hmac_md5(a, t) { return binl2str(core_hmac_md5(a, t)) } function md5_vm_test() { return "900150983cd24fb0d6963f7d28e17f72" == hex_md5("abc") } function core_md5(a, t) { a[t >> 5] |= 128 << t % 32, a[(t + 64 >>> 9 << 4) + 14] = t; for (var r = 1732584193, e = -271733879, i = -1732584194, s = 271733878, o = 0; o < a.length; o += 16) { var n = r , c = e , h = i , l = s; r = md5_ff(r, e, i, s, a[o + 0], 7, -680876936), s = md5_ff(s, r, e, i, a[o + 1], 12, -389564586), i = md5_ff(i, s, r, e, a[o + 2], 17, 606105819), e = md5_ff(e, i, s, r, a[o + 3], 22, -1044525330), r = md5_ff(r, e, i, s, a[o + 4], 7, -176418897), s = md5_ff(s, r, e, i, a[o + 5], 12, 1200080426), i = md5_ff(i, s, r, e, a[o + 6], 17, -1473231341), e = md5_ff(e, i, s, r, a[o + 7], 22, -45705983), r = md5_ff(r, e, i, s, a[o + 8], 7, 1770035416), s = md5_ff(s, r, e, i, a[o + 9], 12, -1958414417), i = md5_ff(i, s, r, e, a[o + 10], 17, -42063), e = md5_ff(e, i, s, r, a[o + 11], 22, -1990404162), r = md5_ff(r, e, i, s, a[o + 12], 7, 1804603682), s = md5_ff(s, r, e, i, a[o + 13], 12, -40341101), i = md5_ff(i, s, r, e, a[o + 14], 17, -1502002290), e = md5_ff(e, i, s, r, a[o + 15], 22, 1236535329), r = md5_gg(r, e, i, s, a[o + 1], 5, -165796510), s = md5_gg(s, r, e, i, a[o + 6], 9, -1069501632), i = md5_gg(i, s, r, e, a[o + 11], 14, 643717713), e = md5_gg(e, i, s, r, a[o + 0], 20, -373897302), r = md5_gg(r, e, i, s, a[o + 5], 5, -701558691), s = md5_gg(s, r, e, i, a[o + 10], 9, 38016083), i = md5_gg(i, s, r, e, a[o + 15], 14, -660478335), e = md5_gg(e, i, s, r, a[o + 4], 20, -405537848), r = md5_gg(r, e, i, s, a[o + 9], 5, 568446438), s = md5_gg(s, r, e, i, a[o + 14], 9, -1019803690), i = md5_gg(i, s, r, e, a[o + 3], 14, -187363961), e = md5_gg(e, i, s, r, a[o + 8], 20, 1163531501), r = md5_gg(r, e, i, s, a[o + 13], 5, -1444681467), s = md5_gg(s, r, e, i, a[o + 2], 9, -51403784), i = md5_gg(i, s, r, e, a[o + 7], 14, 1735328473), e = md5_gg(e, i, s, r, a[o + 12], 20, -1926607734), r = md5_hh(r, e, i, s, a[o + 5], 4, -378558), s = md5_hh(s, r, e, i, a[o + 8], 11, -2022574463), i = md5_hh(i, s, r, e, a[o + 11], 16, 1839030562), e = md5_hh(e, i, s, r, a[o + 14], 23, -35309556), r = md5_hh(r, e, i, s, a[o + 1], 4, -1530992060), s = md5_hh(s, r, e, i, a[o + 4], 11, 1272893353), i = md5_hh(i, s, r, e, a[o + 7], 16, -155497632), e = md5_hh(e, i, s, r, a[o + 10], 23, -1094730640), r = md5_hh(r, e, i, s, a[o + 13], 4, 681279174), s = md5_hh(s, r, e, i, a[o + 0], 11, -358537222), i = md5_hh(i, s, r, e, a[o + 3], 16, -722521979), e = md5_hh(e, i, s, r, a[o + 6], 23, 76029189), r = md5_hh(r, e, i, s, a[o + 9], 4, -640364487), s = md5_hh(s, r, e, i, a[o + 12], 11, -421815835), i = md5_hh(i, s, r, e, a[o + 15], 16, 530742520), e = md5_hh(e, i, s, r, a[o + 2], 23, -995338651), r = md5_ii(r, e, i, s, a[o + 0], 6, -198630844), s = md5_ii(s, r, e, i, a[o + 7], 10, 1126891415), i = md5_ii(i, s, r, e, a[o + 14], 15, -1416354905), e = md5_ii(e, i, s, r, a[o + 5], 21, -57434055), r = md5_ii(r, e, i, s, a[o + 12], 6, 1700485571), s = md5_ii(s, r, e, i, a[o + 3], 10, -1894986606), i = md5_ii(i, s, r, e, a[o + 10], 15, -1051523), e = md5_ii(e, i, s, r, a[o + 1], 21, -2054922799), r = md5_ii(r, e, i, s, a[o + 8], 6, 1873313359), s = md5_ii(s, r, e, i, a[o + 15], 10, -30611744), i = md5_ii(i, s, r, e, a[o + 6], 15, -1560198380), e = md5_ii(e, i, s, r, a[o + 13], 21, 1309151649), r = md5_ii(r, e, i, s, a[o + 4], 6, -145523070), s = md5_ii(s, r, e, i, a[o + 11], 10, -1120210379), i = md5_ii(i, s, r, e, a[o + 2], 15, 718787259), e = md5_ii(e, i, s, r, a[o + 9], 21, -343485551), r = safe_add(r, n), e = safe_add(e, c), i = safe_add(i, h), s = safe_add(s, l) } return Array(r, e, i, s) } function md5_cmn(a, t, r, e, i, s) { return safe_add(bit_rol(safe_add(safe_add(t, a), safe_add(e, s)), i), r) } function md5_ff(a, t, r, e, i, s, o) { return md5_cmn(t & r | ~t & e, a, t, i, s, o) } function md5_gg(a, t, r, e, i, s, o) { return md5_cmn(t & e | r & ~e, a, t, i, s, o) } function md5_hh(a, t, r, e, i, s, o) { return md5_cmn(t ^ r ^ e, a, t, i, s, o) } function md5_ii(a, t, r, e, i, s, o) { return md5_cmn(r ^ (t | ~e), a, t, i, s, o) } function core_hmac_md5(a, t) { var r = str2binl(a); r.length > 16 && (r = core_md5(r, a.length * chrsz)); for (var e = Array(16), i = Array(16), s = 0; 16 > s; s++) e[s] = 909522486 ^ r[s], i[s] = 1549556828 ^ r[s]; var o = core_md5(e.concat(str2binl(t)), 512 + t.length * chrsz); return core_md5(i.concat(o), 640) } function safe_add(a, t) { var r = (65535 & a) + (65535 & t) , e = (a >> 16) + (t >> 16) + (r >> 16); return e << 16 | 65535 & r } function bit_rol(a, t) { return a << t | a >>> 32 - t } function str2binl(a) { for (var t = Array(), r = (1 << chrsz) - 1, e = 0; e < a.length * chrsz; e += chrsz) t[e >> 5] |= (a.charCodeAt(e / chrsz) & r) << e % 32; return t } function binl2str(a) { for (var t = "", r = (1 << chrsz) - 1, e = 0; e < 32 * a.length; e += chrsz) t += String.fromCharCode(a[e >> 5] >>> e % 32 & r); return t } function binl2hex(a) { for (var t = hexcase ? "0123456789ABCDEF" : "0123456789abcdef", r = "", e = 0; e < 4 * a.length; e++) r += t.charAt(a[e >> 2] >> e % 4 * 8 + 4 & 15) + t.charAt(a[e >> 2] >> e % 4 * 8 & 15); return r } function binl2b64(a) { for (var t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", r = "", e = 0; e < 4 * a.length; e += 3) for (var i = (a[e >> 2] >> 8 * (e % 4) & 255) << 16 | (a[e + 1 >> 2] >> 8 * ((e + 1) % 4) & 255) << 8 | a[e + 2 >> 2] >> 8 * ((e + 2) % 4) & 255, s = 0; 4 > s; s++) r += 8 * e + 6 * s > 32 * a.length ? b64pad : t.charAt(i >> 6 * (3 - s) & 63); return r } "undefined" == typeof console && (console = { log: function(a) {}, debug: function(a) {} }); var Gravatar = { profile_stack: {}, profile_map: {}, overTimeout: !1, outTimeout: !1, stopOver: !1, active_grav: !1, active_hash: !1, active_id: !1, active_grav_clone: !1, profile_cb: null, stats_queue: [], throbber: null, has_bg: !1, disabled: !1, url_prefix: "http://en", disable: function() { Gravatar.disabled = !0, Gravatar.hide_card(); var a = new Date(2100,1,1,1,1,1); Gravatar.stat("disable"), -1 == window.location.host.search(/wordpress.com/i) ? document.cookie = "nohovercard=1; expires=" + a.toUTCString() + ";" : document.cookie = "nohovercard=1; expires=" + a.toUTCString() + "; domain=.wordpress.com; path=/" }, mouseOut: function(a) { a.stopImmediatePropagation(), Gravatar.stopOver = !0, Gravatar.outTimeout = setTimeout(function() { Gravatar.hide_card() }, 300) }, init: function(a, t) { var r, e, i = document.cookie.split(";"); for (r = 0; r < i.length; r++) { for (e = i[r]; " " == e.charAt(0); ) e = e.substring(1, e.length); if (0 == e.indexOf("nohovercard=1")) return } "https:" == window.location.protocol && (this.url_prefix = "https://secure"), this.attach_profiles(a, t), this.add_card_css(), jQuery("body").on("mouseenter.gravatar mouseleave.gravatar", "img.grav-hashed", function(a) { if (!Gravatar.disabled) { if (a.preventDefault(), a.stopPropagation(), "mouseleave" == a.type || "mouseout" == a.type) return Gravatar.mouseOut.call(this, a); Gravatar.stopOver = !1, Gravatar.active_id = jQuery(this).attr("id"), Gravatar.active_hash = Gravatar.active_id.split("-")[1], Gravatar.untilt_gravatar(), clearTimeout(Gravatar.overTimeout), !1 !== Gravatar.profile_map["g" + Gravatar.active_hash] && (Gravatar.stat("hover"), clearTimeout(Gravatar.outTimeout), Gravatar.tilt_gravatar(), Gravatar.fetch_profile_by_hash(Gravatar.active_hash, Gravatar.active_id), Gravatar.overTimeout = setTimeout(function() { Gravatar.show_card() }, 600)) } }), jQuery("body").on("mouseenter.gravatar mouseleave.gravatar", "div.gcard, img.grav-clone", function(a) { Gravatar.disabled || (a.preventDefault(), a.stopPropagation(), "mouseenter" == a.type || "mouseover" == a.type ? (Gravatar.stopOver = !1, clearTimeout(Gravatar.outTimeout)) : Gravatar.mouseOut.call(this, a)) }), jQuery(window).bind("scroll", function() { Gravatar.active_hash.length && Gravatar.hide_card() }) }, attach_profiles: function(a, t) { setInterval(Gravatar.send_stats, 3e3), a = "undefined" == typeof a ? "body" : a, t && "string" == typeof t && jQuery(t).addClass("no-grav"), jQuery(a + ' img[src*="gravatar.com/avatar"]').not(".no-grav, .no-grav img").each(function() { if (hash = Gravatar.extract_hash(this), uniq = 0, jQuery("#grav-" + hash + "-" + uniq).length) for (; jQuery("#grav-" + hash + "-" + uniq).length; ) uniq++; var a = jQuery(this).attr("id", "grav-" + hash + "-" + uniq).attr("title", "").removeAttr("title"); a.parent("a").length && a.parent("a").attr("title", "").removeAttr("title"), a.addClass("grav-hashed"), (a.parents("#comments, .comments, #commentlist, .commentlist, .grav-hijack").length || !a.parents("a:first").length) && a.addClass("grav-hijack") }) }, show_card: function() { if (!Gravatar.stopOver) { if (dom_id = this.profile_map["g" + Gravatar.active_hash], jQuery(".gcard").hide(), "fetching" == this.profile_stack["g" + Gravatar.active_hash]) return Gravatar.show_throbber(), this.listen(Gravatar.active_hash, "show_card"), void Gravatar.stat("wait"); if ("undefined" == typeof this.profile_stack["g" + Gravatar.active_hash]) return Gravatar.show_throbber(), this.listen(Gravatar.active_hash, "show_card"), void this.fetch_profile_by_hash(Gravatar.active_hash, dom_id); Gravatar.stat("show"), Gravatar.hide_throbber(), jQuery("#profile-" + this.active_hash).length || this.build_card(this.active_hash, this.profile_stack["g" + this.active_hash]), this.render_card(this.active_grav, "profile-" + this.active_hash) } }, hide_card: function() { clearTimeout(Gravatar.overTimeout), this.untilt_gravatar(), jQuery("div.gcard").filter("#profile-" + this.active_hash).fadeOut(120, function() { jQuery("img.grav-large").stop().remove() }).end().not("#profile-" + this.active_hash).hide() }, render_card: function(a, t) { var r = jQuery("#" + t).stop() , e = a , i = e.offset(); if (null != i) { var s = e.width() , o = e.height() , n = 5 + .4 * s , c = r.width() , h = r.height(); c == jQuery(window).width() && (c = 400, h = 200); var l = i.left - 17 , d = i.top - 7 , f = "pos-right"; i.left + s + n + c > jQuery(window).width() + jQuery(window).scrollLeft() && (l = i.left - c + s + 17, f = "pos-left"); var v = .25 * o; jQuery("#" + t).removeClass("pos-right pos-left").addClass(f).css({ top: d - v + "px", left: l + "px" }); var u = o / 2; u > h && (u = h / 2), u > h / 2 - 6 && (u = h / 2 - 6), u > 53 && (u = 53), this.has_bg && (u -= 8), 0 > u && (u = 0); var g = { height: 2 * o + v + "px" }; "pos-right" == f ? (g.right = "auto", g.left = "-7px", g["background-position"] = "0px " + u + "px") : (g.right = "-10px", g.left = "auto", g["background-position"] = "0px " + u + "px"), jQuery("#" + t + " .grav-cardarrow").css(g) } r.stop().css({ opacity: 0 }).show().animate({ opacity: 1 }, 150, "linear", function() { jQuery(this).css({ opacity: "auto" }), jQuery(this).stop() }) }, build_card: function(a, t) { Object.size = function(a) { var t, r = 0; for (t in a) a.hasOwnProperty(t) && r++; return r } , GProfile.init(t); var r = GProfile.get("urls") , e = (GProfile.get("photos"), GProfile.get("accounts")) , i = 100; i += Object.size(r) > 3 ? 90 : 10 + 20 * Object.size(r), Object.size(e) > 0 && (i += 30); var s = GProfile.get("aboutMe"); s = s.replace(/<[^>]+>/gi, ""), s = s.toString().substr(0, i), i == s.length && (s += '…'); var o = "grav-inner"; Gravatar.my_hash && a == Gravatar.my_hash && (o += " grav-is-user", s.length || (s = "
Want a better profile? Click here.
")), s.length && (o += " gcard-about"), name = GProfile.get("displayName"), name.length || (name = GProfile.get("preferredUsername")); var n = '