MalwareMustDie

#MalwareMustDie! Neutrino Exploit Kit's PluginDetect 0.8.0

Jun 24th, 2013
543
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Neutrino Exploit Kit's PluginDetect 0.8.0
  2. // We WACKED you good, Neutrino actor moronz!
  3. //   ..repent & git a new legit work!!
  4. // here's the code in beautified view...
  5.  
  6. var PluginDetect = {
  7.     version: "0.8.0",
  8.     name: "PluginDetect",
  9.     openTag: "<",
  10.     isDefined: function (a) {
  11.         return "undefined" != typeof a
  12.     },
  13.     isArray: function (a) {
  14.         return /array/i.test(Object.prototype.toString.call(a))
  15.     },
  16.     isFunc: function (a) {
  17.         return "function" == typeof a
  18.     },
  19.     isString: function (a) {
  20.         return "string" == typeof a
  21.     },
  22.     isNum: function (a) {
  23.         return "number" == typeof a
  24.     },
  25.     isStrNum: function (a) {
  26.         return "string" == typeof a && /\d/.test(a)
  27.     },
  28.     getNumRegx: /[\d][\d\.\_,-]*/,
  29.     splitNumRegx: /[\.\_,-]/g,
  30.     getNum: function (a, b) {
  31.         var c = this.isStrNum(a) ? (this.isDefined(b) ?
  32.             RegExp(b) : this.getNumRegx)
  33.             .exec(a) : null;
  34.         return c ? c[0] : null
  35.     },
  36.     compareNums: function (a, b, c) {
  37.         var d = parseInt;
  38.         if (this.isStrNum(a) && this.isStrNum(b)) {
  39.             if (this.isDefined(c) && c.compareNums) return c.compareNums(a, b);
  40.             a = a.split(this.splitNumRegx);
  41.             b = b.split(this.splitNumRegx);
  42.             for (c = 0; c < Math.min(a.length, b.length); c++) {
  43.                 if (d(a[c], 10) > d(b[c], 10)) return 1;
  44.                 if (d(a[c], 10) < d(b[c], 10)) return -1
  45.             }
  46.         }
  47.         return 0
  48.     },
  49.     formatNum: function (a, b) {
  50.         var c, d;
  51.         if (!this.isStrNum(a)) return null;
  52.         this.isNum(b) || (b = 4);
  53.         b--;
  54.         d = a.replace(/\s/g, "")
  55.             .split(this.splitNumRegx)
  56.             .concat(["0",
  57.                 "0", "0", "0"
  58.             ]);
  59.         for (c = 0; 4 > c; c++)
  60.             if (/^(0+)(.+)$/.test(d[c]) && (d[c] = RegExp.$2), c > b || !/\d/.test(d[c])) d[c] = "0";
  61.         return d.slice(0, 4)
  62.             .join(",")
  63.     },
  64.     $$hasMimeType: function (a) {
  65.         return function (b) {
  66.             if (!a.isIE && b) {
  67.                 var c, d, e = a.isArray(b) ? b : a.isString(b) ? [b] : [];
  68.                 for (d = 0; d < e.length; d++)
  69.                     if (a.isString(e[d]) && /[^\s]/.test(e[d]) && (c = (b = navigator.mimeTypes[e[d]]) ? b.enabledPlugin : 0) && (c.name || c.description)) return b
  70.             }
  71.             return null
  72.         }
  73.     },
  74.     getPROP: function (a, b, c) {
  75.         try {
  76.             a && (c = a[b])
  77.         } catch (d) {}
  78.         return c
  79.     },
  80.     isEnabled: {
  81.         $: 1,
  82.         IEPluginSecurityPopup: function () {
  83.             var a =
  84.                 this.$;
  85.             return a.isIE && 7 <= a.verIE ? 1 : 0
  86.         },
  87.         objectProperty: function (a) {
  88.             var b = this.$,
  89.                 c = 0;
  90.             b.isIE && 7 <= b.verIE && (a = b.getPROP(a, "object"), b.isDefined(a) && (c = a ? 1 : -1));
  91.             return c
  92.         }
  93.     },
  94.     findNavPlugin: function (a, b, c) {
  95.         a = RegExp(a, "i");
  96.         b = !this.isDefined(b) || b ? /\d/ : 0;
  97.         c = c ? RegExp(c, "i") : 0;
  98.         var d = navigator.plugins,
  99.             e, f, g;
  100.         for (e = 0; e < d.length; e++)
  101.             if (g = d[e].description || "", f = d[e].name || "", a.test(g) && (!b || b.test(RegExp.leftContext + RegExp.rightContext)) || a.test(f) && (!b || b.test(RegExp.leftContext + RegExp.rightContext)))
  102.                 if (!c || !c.test(g) && !c.test(f)) return d[e];
  103.         return null
  104.     },
  105.     getMimeEnabledPlugin: function (a, b, c) {
  106.         var d;
  107.         b = RegExp(b, "i");
  108.         c = c ? RegExp(c, "i") : 0;
  109.         var e, f, g = this.isString(a) ? [a] : a;
  110.         for (f = 0; f < g.length; f++)
  111.             if ((d = this.hasMimeType(g[f])) && (d = d.enabledPlugin))
  112.                 if (e = d.description || "", a = d.name || "", b.test(e) || b.test(a))
  113.                     if (!c || !c.test(e) && !c.test(a)) return d;
  114.         return 0
  115.     },
  116.     init: function (a) {
  117.         var b, c = {
  118.                 status: -3,
  119.                 plugin: 0
  120.             };
  121.         if (!this.isString(a)) return c;
  122.         if (1 == a.length) return this.getVersionDelimiter = a, c;
  123.         a = a.toLowerCase()
  124.             .replace(/\s/g, "");
  125.         b = this.Plugins[a];
  126.         if (!b || !b.getVersion) return c;
  127.         c.plugin = b;
  128.         this.isDefined(b.installed) || (b.installed = null, b.version = null, b.version0 = null, b.getVersionDone = null, b.pluginName = a);
  129.         if (this.isIE && !this.ActiveXEnabled && "java" !== a) return c.status = -2, c;
  130.         c.status = 1;
  131.         return c
  132.     },
  133.     getPluginFileVersion: function (a, b) {
  134.         var c, d, e, f, g = -1;
  135.         if (2 < this.OS || !a || !a.version || !(c = this.getNum(a.version))) return b;
  136.         if (!b) return c;
  137.         c = this.formatNum(c);
  138.         b = this.formatNum(b);
  139.         d = b.split(this.splitNumRegx);
  140.         e = c.split(this.splitNumRegx);
  141.         for (f = 0; f < d.length; f++)
  142.             if (-1 <
  143.                 g && f > g && "0" != d[f] || e[f] != d[f] && (-1 == g && (g = f), "0" != d[f])) return b;
  144.         return c
  145.     },
  146.     AXO: window.ActiveXObject,
  147.     getAXO: function (a) {
  148.         var b = null;
  149.         try {
  150.             b = new this.AXO(a)
  151.         } catch (c) {}
  152.         return b
  153.     },
  154.     convertFuncs: function (a) {
  155.         var b, c, d = /^[\$][\$]/;
  156.         for (b in a)
  157.             if (d.test(b)) try {
  158.                 c = b.slice(2), 0 < c.length && !a[c] && (a[c] = a[b](a), delete a[b])
  159.             } catch (e) {}
  160.     },
  161.     initObj: function (a, b, c) {
  162.         var d;
  163.         if (a) {
  164.             if (1 == a[b[0]] || c)
  165.                 for (d = 0; d < b.length; d += 2) a[b[d]] = b[d + 1];
  166.             for (d in a)(c = a[d]) && 1 == c[b[0]] && this.initObj(c, b)
  167.         }
  168.     },
  169.     initScript: function () {
  170.         var a = navigator,
  171.             b, c = document,
  172.             d = a.userAgent || "",
  173.             e = a.vendor || "",
  174.             f = a.platform || "",
  175.             a = a.product || "";
  176.         this.initObj(this, ["$", this]);
  177.         for (b in this.Plugins) this.Plugins[b] && this.initObj(this.Plugins[b], ["$", this, "$$", this.Plugins[b]], 1);
  178.         this.convertFuncs(this);
  179.         this.OS = 100;
  180.         if (f) {
  181.             var g = ["Win", 1, "Mac", 2, "Linux", 3, "FreeBSD", 4, "iPhone", 21.1, "iPod", 21.2, "iPad", 21.3, "Win.*CE", 22.1, "Win.*Mobile", 22.2, "Pocket\\s*PC", 22.3, "", 100];
  182.             for (b = g.length - 2; 0 <= b; b -= 2)
  183.                 if (g[b] && RegExp(g[b], "i")
  184.                     .test(f)) {
  185.                     this.OS = g[b + 1];
  186.                     break
  187.                 }
  188.         }
  189.         this.head = c.getElementsByTagName("head")[0] ||
  190.             c.getElementsByTagName("body")[0] || c.body || null;
  191.         this.verIE = (this.isIE = eval("/*@cc_on!@*/!1")) ? /MSIE\s*(\d+\.?\d*)/i.test(d) ? parseFloat(RegExp.$1, 10) : 7 : null;
  192.         this.docModeIE = this.verIEfull = null;
  193.         if (this.isIE) {
  194.             b = document.createElement("div");
  195.             try {
  196.                 b.style.behavior = "url(#default#clientcaps)", this.verIEfull = b.getComponentVersion("{89820200-ECBD-11CF-8B85-00AA005B4383}", "componentid")
  197.                     .replace(/,/g, ".")
  198.             } catch (h) {}
  199.             b = parseFloat(this.verIEfull || "0", 10);
  200.             this.docModeIE = c.documentMode || (/back/i.test(c.compatMode ||
  201.                 "") ? 5 : b) || this.verIE;
  202.             this.verIE = b || this.docModeIE
  203.         }
  204.         this.ActiveXEnabled = !1;
  205.         if (this.isIE) {
  206.             c = "Msxml2.XMLHTTP Msxml2.DOMDocument Microsoft.XMLDOM ShockwaveFlash.ShockwaveFlash TDCCtl.TDCCtl Shell.UIHelper Scripting.Dictionary wmplayer.ocx".split(" ");
  207.             for (b = 0; b < c.length; b++)
  208.                 if (this.getAXO(c[b])) {
  209.                     this.ActiveXEnabled = !0;
  210.                     break
  211.                 }
  212.             d = ""
  213.         }
  214.         this.verGecko = (this.isGecko = /Gecko/i.test(a) && /Gecko\s*\/\s*\d/i.test(d)) ? this.formatNum(/rv\s*\:\s*([\.\,\d]+)/i.test(d) ? RegExp.$1 : "0.9") : null;
  215.         this.verChrome = (this.isChrome = /Chrome\s*\/\s*(\d[\d\.]*)/i.test(d)) ?
  216.             this.formatNum(RegExp.$1) : null;
  217.         this.verSafari = (this.isSafari = (/Apple/i.test(e) || !e && !this.isChrome) && /Safari\s*\/\s*(\d[\d\.]*)/i.test(d)) && /Version\s*\/\s*(\d[\d\.]*)/i.test(d) ? this.formatNum(RegExp.$1) : null;
  218.         this.verOpera = (this.isOpera = /Opera\s*[\/]?\s*(\d+\.?\d*)/i.test(d)) && (/Version\s*\/\s*(\d+\.?\d*)/i.test(d) || 1) ? parseFloat(RegExp.$1, 10) : null;
  219.         this.addWinEvent("load", this.handler(this.runWLfuncs, this))
  220.     },
  221.     handler: function (a, b, c) {
  222.         return function () {
  223.             a(b, c)
  224.         }
  225.     },
  226.     fPush: function (a, b) {
  227.         this.isArray(b) && (this.isFunc(a) ||
  228.             this.isArray(a) && 0 < a.length && this.isFunc(a[0])) && b.push(a)
  229.     },
  230.     callArray: function (a) {
  231.         var b, c;
  232.         if (this.isArray(a)) {
  233.             c = [].concat(a);
  234.             for (b = 0; b < c.length; b++) this.call(c[b]), a.splice(0, 1)
  235.         }
  236.     },
  237.     call: function (a) {
  238.         var b = this.isArray(a) ? a.length : -1;
  239.         if (0 < b && this.isFunc(a[0])) a[0](this, 1 < b ? a[1] : 0, 2 < b ? a[2] : 0, 3 < b ? a[3] : 0);
  240.         else this.isFunc(a) && a(this)
  241.     },
  242.     $$isMinVersion: function (a) {
  243.         return function (b, c, d, e) {
  244.             var f = a.init(b);
  245.             b = -1;
  246.             if (0 > f.status) return f.status;
  247.             f = f.plugin;
  248.             c = a.formatNum(a.isNum(c) ? c.toString() : a.isStrNum(c) ? a.getNum(c) :
  249.                 "0");
  250.             1 != f.getVersionDone && (f.getVersion(c, d, e), null === f.getVersionDone && (f.getVersionDone = 1));
  251.             null !== f.installed && (b = 0.5 >= f.installed ? f.installed : 0.7 == f.installed ? 1 : null === f.version ? 0 : 0 <= a.compareNums(f.version, c, f) ? 1 : -0.1);
  252.             return b
  253.         }
  254.     },
  255.     getVersionDelimiter: ",",
  256.     $$getVersion: function (a) {
  257.         return function (b, c, d) {
  258.             b = a.init(b);
  259.             if (0 > b.status) return null;
  260.             b = b.plugin;
  261.             1 != b.getVersionDone && (b.getVersion(null, c, d), null === b.getVersionDone && (b.getVersionDone = 1));
  262.             return c = (c = b.version || b.version0) ? c.replace(a.splitNumRegx,
  263.                 a.getVersionDelimiter) : c
  264.         }
  265.     },
  266.     $$getInfo: function (a) {
  267.         return function (b, c, d) {
  268.             var e = {}, f = a.init(b);
  269.             if (0 > f.status) return e;
  270.             f = f.plugin;
  271.             f.getInfo && (null === f.getVersionDone && (a.getVersion ? a.getVersion(b, c, d) : a.isMinVersion(b, "0", c, d)), e = f.getInfo());
  272.             return e
  273.         }
  274.     },
  275.     codebase: {
  276.         $: 1,
  277.         isDisabled: function () {
  278.             var a = this.$;
  279.             return a.ActiveXEnabled && a.isIE && 7 <= a.verIE ? 0 : 1
  280.         },
  281.         checkGarbage: function (a) {
  282.             var b = this.$;
  283.             return b.isIE && (a && 0 < b.isEnabled.objectProperty(a.firstChild)) && (a = b.getPROP(a.firstChild, "readyState"), b.isNum(a) &&
  284.                 4 != a) ? this.garbage = 1 : 0
  285.         },
  286.         emptyGarbage: function () {
  287.             if (this.$.isIE && this.garbage) {
  288.                 try {
  289.                     window.CollectGarbage()
  290.                 } catch (a) {}
  291.                 this.garbage = 0
  292.             }
  293.         },
  294.         init: function (a) {
  295.             if (!a.init) {
  296.                 var b = this.$,
  297.                     c;
  298.                 a.init = 1;
  299.                 a.min = 0;
  300.                 a.max = 0;
  301.                 a.hasRun = 0;
  302.                 a.version = null;
  303.                 a.L = 0;
  304.                 a.altHTML = "";
  305.                 a.span = document.createElement("span");
  306.                 a.tagA = '<object width="1" height="1" style="display:none;" codebase="#version=';
  307.                 a.tagB = '" classid="' + a.$$.classID + '">' + a.ParamTags + a.altHTML + b.openTag + "/object>";
  308.                 for (c = 0; c < a.Lower.length; c++) a.Lower[c] = b.formatNum(a.Lower[c]),
  309.                 a.Upper[c] = b.formatNum(a.Upper[c])
  310.             }
  311.         },
  312.         isActiveXObject: function (a, b) {
  313.             var c = this.$,
  314.                 d = 0,
  315.                 e = a.$$,
  316.                 f = a.span;
  317.             if (a.min && 0 >= c.compareNums(b, a.min)) return 1;
  318.             if (a.max && 0 <= c.compareNums(b, a.max)) return 0;
  319.             e.BIfuncs && e.BIfuncs.length && c.callArray(e.BIfuncs);
  320.             f.innerHTML = a.tagA + b + a.tagB;
  321.             0 < c.isEnabled.objectProperty(f.firstChild) && (d = 1);
  322.             this.checkGarbage(f);
  323.             f.innerHTML = "";
  324.             d ? a.min = b : a.max = b;
  325.             return d
  326.         },
  327.         convert_: function (a, b, c, d) {
  328.             b = a.convert[b];
  329.             a = a.$;
  330.             return b ? a.isFunc(b) ? a.formatNum(b(c.split(a.splitNumRegx), d)
  331.                 .join(",")) :
  332.                 c : b
  333.         },
  334.         convert: function (a, b, c) {
  335.             var d = a.$,
  336.                 e, f, g;
  337.             b = d.formatNum(b);
  338.             f = {
  339.                 v: b,
  340.                 x: -1
  341.             };
  342.             if (b)
  343.                 for (e = 0; e < a.Lower.length; e++)
  344.                     if ((g = this.convert_(a, e, a.Lower[e])) && 0 <= d.compareNums(b, c ? g : a.Lower[e]) && (!e || 0 > d.compareNums(b, c ? this.convert_(a, e, a.Upper[e]) : a.Upper[e]))) {
  345.                         f.v = this.convert_(a, e, b, c);
  346.                         f.x = e;
  347.                         break
  348.                     }
  349.             return f
  350.         },
  351.         isMin: function (a, b) {
  352.             var c = a.$,
  353.                 d, e = 0;
  354.             this.init(a);
  355.             if (!c.isStrNum(b) || this.isDisabled()) return e;
  356.             if (!a.L) {
  357.                 a.L = {};
  358.                 for (d = 0; d < a.Lower.length; d++)
  359.                     if (this.isActiveXObject(a, a.Lower[d])) {
  360.                         a.L = this.convert(a, a.Lower[d]);
  361.                         break
  362.                     }
  363.             }
  364.             a.L.v && (d = this.convert(a, b, 1), 0 <= d.x && (e = (a.L.x == d.x ? this.isActiveXObject(a, d.v) : 0 >= c.compareNums(b, a.L.v)) ? 1 : -1));
  365.             return e
  366.         },
  367.         search: function (a) {
  368.             var b = this,
  369.                 c = b.$,
  370.                 d = 0,
  371.                 e;
  372.             b.init(a);
  373.             e = a.hasRun || b.isDisabled() ? 1 : 0;
  374.             a.hasRun = 1;
  375.             if (e) return a.version;
  376.             var f, g = function (c, e) {
  377.                     var f = [].concat(l);
  378.                     f[c] = e;
  379.                     (f = b.isActiveXObject(a, f.join(","))) ? (d = 1, l[c] = e) : m[c] = e;
  380.                     return f
  381.                 }, h = a.DIGITMAX,
  382.                 j, k, l = [0, 0, 0, 0],
  383.                 m = [0, 0, 0, 0];
  384.             for (e = 0; e < m.length; e++) {
  385.                 l[e] = a.DIGITMIN[e] || 0;
  386.                 j = l.join(",");
  387.                 k = l.slice(0, e)
  388.                     .concat([9999999, 9999999,
  389.                         9999999, 9999999
  390.                     ])
  391.                     .slice(0, l.length)
  392.                     .join(",");
  393.                 for (f = 0; f < h.length; f++) c.isArray(h[f]) && (h[f].push(0), h[f][e] > m[e] && (0 <= c.compareNums(k, a.Lower[f]) && 0 > c.compareNums(j, a.Upper[f])) && (m[e] = h[f][e]));
  394.                 for (f = 0; 20 > f; f++) {
  395.                     if (16 >= m[e] - l[e]) {
  396.                         for (f = m[e]; f >= l[e] + (e ? 1 : 0) && !g(e, f); f--);
  397.                         break
  398.                     }
  399.                     g(e, Math.round((m[e] + l[e]) / 2))
  400.                 }
  401.                 if (!d) break;
  402.                 m[e] = l[e]
  403.             }
  404.             d && (a.version = b.convert(a, l.join(","))
  405.                 .v);
  406.             return a.version
  407.         }
  408.     },
  409.     addWinEvent: function (a, b) {
  410.         var c = window,
  411.             d;
  412.         this.isFunc(b) && (c.addEventListener ? c.addEventListener(a, b, !1) : c.attachEvent ?
  413.             c.attachEvent("on" + a, b) : (d = c["on" + a], c["on" + a] = this.winHandler(b, d)))
  414.     },
  415.     winHandler: function (a, b) {
  416.         return function () {
  417.             a();
  418.             "function" == typeof b && b()
  419.         }
  420.     },
  421.     WLfuncs0: [],
  422.     WLfuncs: [],
  423.     runWLfuncs: function (a) {
  424.         a.winLoaded = !0;
  425.         a.callArray(a.WLfuncs0);
  426.         a.callArray(a.WLfuncs);
  427.         if (a.DOM) a.DOM.onDoneEmptyDiv()
  428.     },
  429.     winLoaded: !1,
  430.     $$onWindowLoaded: function (a) {
  431.         return function (b) {
  432.             a.winLoaded ? a.call(b) : a.fPush(b, a.WLfuncs)
  433.         }
  434.     },
  435.     $$onDetectionDone: function (a) {
  436.         return function (b, c, d, e) {
  437.             var f = a.init(b);
  438.             if (-3 == f.status) return -1;
  439.             f = f.plugin;
  440.             a.isArray(f.funcs) ||
  441.                 (f.funcs = []);
  442.             1 != f.getVersionDone && (a.getVersion ? a.getVersion(b, d, e) : a.isMinVersion(b, "0", d, e));
  443.             return -0.5 != f.installed && 0.5 != f.installed ? (a.call(c), 1) : f.NOTF ? (a.fPush(c, f.funcs), 0) : 1
  444.         }
  445.     },
  446.     DOM: {
  447.         $: 1,
  448.         div: null,
  449.         divID: "plugindetect",
  450.         divWidth: 50,
  451.         pluginSize: 1,
  452.         altHTML: "&nbsp;&nbsp;&nbsp;&nbsp;",
  453.         emptyNode: function (a) {
  454.             var b = this.$,
  455.                 c;
  456.             if (a && a.childNodes) {
  457.                 for (c = a.childNodes.length - 1; 0 <= c; c--) try {
  458.                     b.isIE && (a.childNodes[c].style.display = "none")
  459.                 } catch (d) {}
  460.                 try {
  461.                     a.innerHTML = ""
  462.                 } catch (e) {}
  463.             }
  464.         },
  465.         LASTfuncs: [],
  466.         onDoneEmptyDiv: function () {
  467.             var a =
  468.                 this.$,
  469.                 b, c;
  470.             if (a.winLoaded && !a.WLfuncs0.length && !a.WLfuncs.length) {
  471.                 for (b in a.Plugins)
  472.                     if ((c = a.Plugins[b]) && (3 == c.OTF || c.funcs && c.funcs.length)) return;
  473.                 a.callArray(this.LASTfuncs);
  474.                 if (this.div && this.div.childNodes) {
  475.                     for (b = this.div.childNodes.length - 1; 0 <= b; b--) a = this.div.childNodes[b], this.emptyNode(a);
  476.                     try {
  477.                         this.div.innerHTML = ""
  478.                     } catch (d) {}
  479.                 }
  480.                 if (!this.div && (b = document.getElementById(this.divID))) this.div = b;
  481.                 if (this.div && this.div.parentNode) {
  482.                     try {
  483.                         this.div.parentNode.removeChild(this.div)
  484.                     } catch (e) {}
  485.                     this.div = null
  486.                 }
  487.             }
  488.         },
  489.         width: function () {
  490.             var a = this.DOM.$,
  491.                 b = this.span;
  492.             return b ? a.isNum(b.scrollWidth) ? b.scrollWidth : a.isNum(b.offsetWidth) ? b.offsetWidth : -1 : -1
  493.         },
  494.         obj: function (a) {
  495.             var b = this.DOM,
  496.                 c = this.span,
  497.                 c = c && c.firstChild ? c.firstChild : null;
  498.             try {
  499.                 c && a && b.div.focus()
  500.             } catch (d) {}
  501.             return c
  502.         },
  503.         getTagStatus: function (a, b, c, d) {
  504.             if (!a || !b || !c) return -2;
  505.             var e = this.$,
  506.                 f = a.width(),
  507.                 g = c.width(),
  508.                 h = b.width();
  509.             if (!c.span || !b.span || !a.obj()) return -2;
  510.             if (0 > f || 0 > g || 0 > h || h <= this.pluginSize || g < h) return 0;
  511.             if (f >= h) return -1;
  512.             try {
  513.                 if (f == this.pluginSize && (!e.isIE ||
  514.                     4 == e.getPROP(a.obj(), "readyState")))
  515.                     if (!a.winLoaded && e.winLoaded || a.winLoaded && e.isNum(d) && (e.isNum(a.count) || (a.count = d), 10 <= d - a.count)) return 1
  516.             } catch (j) {}
  517.             return 0
  518.         },
  519.         setStyle: function (a, b) {
  520.             var c = a.style,
  521.                 d;
  522.             if (c && b)
  523.                 for (d = 0; d < b.length; d += 2) try {
  524.                     c[b[d]] = b[d + 1]
  525.                 } catch (e) {}
  526.         },
  527.         insertDivInBody: function (a, b) {
  528.             var c = this.$,
  529.                 d = null,
  530.                 e = b ? window.top.document : window.document,
  531.                 f = e.getElementsByTagName("body")[0] || e.body;
  532.             if (!f) try {
  533.                 e.write('<div id="pd33993399">.' + c.openTag + "/div>"), d = e.getElementById("pd33993399")
  534.             } catch (g) {}
  535.             if (f =
  536.                 e.getElementsByTagName("body")[0] || e.body) f.insertBefore(a, f.firstChild), d && f.removeChild(d)
  537.         },
  538.         insert: function (a, b, c, d) {
  539.             var e = this.$,
  540.                 f = document,
  541.                 g, h = f.createElement("span"),
  542.                 j, k = "outlineStyle none borderStyle none padding 0px margin 0px visibility visible".split(" ");
  543.             e.isDefined(d) || (d = "");
  544.             if (e.isString(a) && /[^\s]/.test(a)) {
  545.                 a = a.toLowerCase()
  546.                     .replace(/\s/g, "");
  547.                 g = e.openTag + a + ' width="' + this.pluginSize + '" height="' + this.pluginSize + '" ';
  548.                 g += 'style="outline-style:none;border-style:none;padding:0px;margin:0px;visibility:visible;display:inline;" ';
  549.                 for (j = 0; j < b.length; j += 2) /[^\s]/.test(b[j + 1]) && (g += b[j] + '="' + b[j + 1] + '" ');
  550.                 g += ">";
  551.                 for (j = 0; j < c.length; j += 2) /[^\s]/.test(c[j + 1]) && (g += e.openTag + 'param name="' + c[j] + '" value="' + c[j + 1] + '" />');
  552.                 g += d + e.openTag + "/" + a + ">"
  553.             } else a = "", g = d;
  554.             this.div || ((b = f.getElementById(this.divID)) ? this.div = b : (this.div = f.createElement("div"), this.div.id = this.divID), this.setStyle(this.div, k.concat(["width", this.divWidth + "px", "height", this.pluginSize + 3 + "px", "fontSize", this.pluginSize + 3 + "px", "lineHeight", this.pluginSize + 3 + "px", "verticalAlign",
  555.                 "baseline", "display", "block"
  556.             ])), b || (this.setStyle(this.div, "position absolute right 0px top 0px".split(" ")), this.insertDivInBody(this.div)));
  557.             a = {
  558.                 span: null,
  559.                 winLoaded: e.winLoaded,
  560.                 tagName: a,
  561.                 outerHTML: g,
  562.                 DOM: this,
  563.                 width: this.width,
  564.                 obj: this.obj
  565.             };
  566.             if (this.div && this.div.parentNode) {
  567.                 this.setStyle(h, k.concat(["fontSize", this.pluginSize + 3 + "px", "lineHeight", this.pluginSize + 3 + "px", "verticalAlign", "baseline", "display", "inline"]));
  568.                 this.div.appendChild(h);
  569.                 try {
  570.                     h.innerHTML = g
  571.                 } catch (l) {}
  572.                 a.span = h;
  573.                 a.winLoaded = e.winLoaded
  574.             }
  575.             return a
  576.         }
  577.     },
  578.     file: {
  579.         $: 1,
  580.         any: "fileStorageAny999",
  581.         valid: "fileStorageValid999",
  582.         save: function (a, b, c) {
  583.             var d = this.$;
  584.             a && d.isDefined(c) && (a[this.any] || (a[this.any] = []), a[this.valid] || (a[this.valid] = []), a[this.any].push(c), (b = this.split(b, c)) && a[this.valid].push(b))
  585.         },
  586.         getValidLength: function (a) {
  587.             return a && a[this.valid] ? a[this.valid].length : 0
  588.         },
  589.         getAnyLength: function (a) {
  590.             return a && a[this.any] ? a[this.any].length : 0
  591.         },
  592.         getValid: function (a, b) {
  593.             return a && a[this.valid] ? this.get(a[this.valid], b) : null
  594.         },
  595.         getAny: function (a, b) {
  596.             return a && a[this.any] ?
  597.                 this.get(a[this.any], b) : null
  598.         },
  599.         get: function (a, b) {
  600.             var c = a.length - 1,
  601.                 d = this.$.isNum(b) ? b : c;
  602.             return 0 > d || d > c ? null : a[d]
  603.         },
  604.         split: function (a, b) {
  605.             var c = this.$,
  606.                 d = null,
  607.                 e;
  608.             a = a ? a.replace(".", "\\.") : "";
  609.             e = RegExp("^(.*[^\\/])(" + a + "\\s*)$");
  610.             c.isString(b) && e.test(b) && (c = RegExp.$1.split("/"), d = {
  611.                 name: c[c.length - 1],
  612.                 ext: RegExp.$2,
  613.                 full: b
  614.             }, c[c.length - 1] = "", d.path = c.join("/"));
  615.             return d
  616.         },
  617.         z: 0
  618.     },
  619.     Plugins: {
  620.         quicktime: {
  621.             mimeType: ["video/quicktime", "application/x-quicktimeplayer", "image/x-macpaint", "image/x-quicktime"],
  622.             progID: "QuickTimeCheckObject.QuickTimeCheck.1",
  623.             progID0: "QuickTime.QuickTime",
  624.             classID: "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B",
  625.             codebase: {
  626.                 $: 1,
  627.                 isMin: function (a) {
  628.                     return this.$.codebase.isMin(this, a)
  629.                 },
  630.                 search: function () {
  631.                     return this.$.codebase.search(this)
  632.                 },
  633.                 ParamTags: '<param name="src" value="" /><param name="controller" value="false" />',
  634.                 DIGITMAX: [
  635.                     [12, 11, 11],
  636.                     [7, 60],
  637.                     [7, 11, 11], 0, [7, 11, 11]
  638.                 ],
  639.                 DIGITMIN: [5, 0, 0, 0],
  640.                 Upper: ["999", "7,60", "7,50", "7,6", "7,5"],
  641.                 Lower: ["7,60", "7,50", "7,6", "7,5", "0"],
  642.                 convert: [1,
  643.                     function (a, b) {
  644.                         return b ? [a[0], a[1] + a[2], a[3], "0"] : [a[0],
  645.                             a[1].charAt(0), a[1].charAt(1), a[2]
  646.                         ]
  647.                     },
  648.                     1, 0, 1
  649.                 ]
  650.             },
  651.             setPluginStatus: function (a, b, c) {
  652.                 var d = this.$;
  653.                 this.installed = b ? 1 : c ? 0 < c ? 0.7 : -0.1 : a ? 0 : -1;
  654.                 b && (this.version = d.formatNum(b, 3));
  655.                 this.getVersionDone = 0.7 == this.installed || -0.1 == this.installed ? 0 : 1;
  656.                 d.codebase.emptyGarbage()
  657.             },
  658.             getVersion: function (a) {
  659.                 var b = this.$,
  660.                     c = null,
  661.                     d = null;
  662.                 if (b.isIE) {
  663.                     b.isStrNum(a) && (a = a.split(b.splitNumRegx), 3 < a.length && 0 < parseInt(a[3], 10) && (a[3] = "9999"), a = a.join(","));
  664.                     if (a = this.codebase.isMin(a)) {
  665.                         this.setPluginStatus(0, 0, a);
  666.                         return
  667.                     }
  668.                     if (!c || b.debug) c =
  669.                         this.codebase.search();
  670.                     if (!c || b.debug)
  671.                         if (d = b.getAXO(this.progID), (a = b.getPROP(d, "QuickTimeVersion")) && a.toString) c = a.toString(16), c = parseInt(c.charAt(0) || "0", 16) + "." + parseInt(c.charAt(1) || "0", 16) + "." + parseInt(c.charAt(2) || "0", 16)
  672.                 } else b.hasMimeType(this.mimeType) && (d = 3 != b.OS ? b.findNavPlugin("QuickTime.*Plug-?in", 0) : null) && d.name && (c = b.getNum(d.name));
  673.                 this.setPluginStatus(d, c)
  674.             }
  675.         },
  676.         java: {
  677.             mimeType: ["application/x-java-applet", "application/x-java-vm", "application/x-java-bean"],
  678.             classID: "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93",
  679.             navigator: {
  680.                 $: 1,
  681.                 a: function () {
  682.                     var a = !0;
  683.                     try {
  684.                         a = window.navigator.javaEnabled()
  685.                     } catch (b) {}
  686.                     return a
  687.                 }(),
  688.                 javaEnabled: function () {
  689.                     return this.a
  690.                 },
  691.                 mimeObj: 0,
  692.                 pluginObj: 0
  693.             },
  694.             OTF: null,
  695.             info: {
  696.                 $: 1,
  697.                 Plugin2Status: 0,
  698.                 setPlugin2Status: function (a) {
  699.                     this.$.isNum(a) && (this.Plugin2Status = a)
  700.                 },
  701.                 getPlugin2Status: function () {
  702.                     var a = this.$,
  703.                         b = this.$$.navigator,
  704.                         c, d;
  705.                     0 === this.Plugin2Status && (a.isIE && 1 == a.OS && /Sun|Oracle/i.test(this.getVendor()) ? (b = this.isMinJre4Plugin2(), 0 < b ? this.setPlugin2Status(1) : 0 > b && this.setPlugin2Status(-1)) : !a.isIE &&
  706.                         b.pluginObj && (a = /Next.*Generation.*Java.*Plug-?in|Java.*Plug-?in\s*2\s/i, c = /Classic.*Java.*Plug-in/i, d = b.pluginObj.description || "", b = b.pluginObj.name || "", a.test(d) || a.test(b) ? this.setPlugin2Status(1) : (c.test(d) || c.test(b)) && this.setPlugin2Status(-1)));
  707.                     return this.Plugin2Status
  708.                 },
  709.                 isMinJre4Plugin2: function (a) {
  710.                     var b = this.$,
  711.                         c = this.$$,
  712.                         d = "",
  713.                         e = c.applet.codebase,
  714.                         f = c.applet.getResult()[0],
  715.                         d = 1 == b.OS ? "1,6,0,10" : 2 == b.OS ? "1,6,0,12" : "1,6,0,10";
  716.                     a || (a = (f && !c.applet.isRange(f) ? f : 0) || c.version || (e.min && d ? 0 < e.isMin(d) ?
  717.                         d : "0,0,0,0" : 0));
  718.                     return (a = b.formatNum(b.getNum(a))) ? 0 <= b.compareNums(a, d) ? 1 : -1 : 0
  719.                 },
  720.                 BrowserForbidsPlugin2: function () {
  721.                     var a = this.$;
  722.                     return 20 <= a.OS ? 0 : a.isIE && 6 > a.verIE || a.isGecko && 0 > a.compareNums(a.verGecko, "1,9,0,0") || a.isOpera && a.verOpera && 10.5 > a.verOpera ? 1 : 0
  723.                 },
  724.                 BrowserRequiresPlugin2: function () {
  725.                     var a = this.$;
  726.                     return 20 <= a.OS ? 0 : a.isGecko && 0 <= a.compareNums(a.verGecko, "1,9,2,0") || a.isChrome || 1 == a.OS && a.verOpera && 10.6 <= a.verOpera ? 1 : 0
  727.                 },
  728.                 VENDORS: ["Sun Microsystems Inc.", "Apple Computer, Inc.", "Oracle Corporation"],
  729.                 OracleMin: "1,7,0,0",
  730.                 OracleOrSun: function (a) {
  731.                     var b = this.$;
  732.                     return this.VENDORS[0 > b.compareNums(b.formatNum(a), this.OracleMin) ? 0 : 2]
  733.                 },
  734.                 OracleOrApple: function (a) {
  735.                     var b = this.$;
  736.                     return this.VENDORS[0 > b.compareNums(b.formatNum(a), this.OracleMin) ? 1 : 2]
  737.                 },
  738.                 getVendor: function () {
  739.                     var a = this.$,
  740.                         b = this.$$,
  741.                         c = b.vendor || b.applet.getResult()[1] || "",
  742.                         d = b.applet.codebase;
  743.                     if (!c)
  744.                         if (d = b.DTK.version || d.version || (d.min ? 0 < d.isMin(this.OracleMin) ? this.OracleMin : "0,0,0,0" : 0)) c = this.OracleOrSun(d);
  745.                         else if (b.version)
  746.                         if (2 == a.OS) c = this.OracleOrApple(b.version);
  747.                         else if (!a.isIE && 1 == a.OS || 3 == a.OS) c = this.OracleOrSun(b.version);
  748.                     return c
  749.                 },
  750.                 isPlugin2InstalledEnabled: function () {
  751.                     var a = -1,
  752.                         b = this.$$.installed,
  753.                         c = this.getPlugin2Status(),
  754.                         d = this.BrowserRequiresPlugin2(),
  755.                         e = this.BrowserForbidsPlugin2(),
  756.                         f = this.isMinJre4Plugin2();
  757.                     if (null !== b && -0.1 <= b)
  758.                         if (3 <= c) a = 1;
  759.                         else if (!(-3 >= c))
  760.                         if (2 == c) a = 1;
  761.                         else if (-2 != c)
  762.                         if (d && 0 <= c && 0 < f) a = 1;
  763.                         else if (!e || !(0 >= c && 0 > f)) d ? a = 1 : e || (0 < c ? a = 1 : 0 > c || 0 > f || (a = 0));
  764.                     return a
  765.                 }
  766.             },
  767.             getInfo: function () {
  768.                 var a = this.$,
  769.                     b = this.applet,
  770.                     c, d = this.installed,
  771.                     e = this.DTK.query(),
  772.                     f = b.results,
  773.                     e = {
  774.                         All_versions: [],
  775.                         DeployTK_versions: [].concat(a.isArray(e.VERSIONS) ? e.VERSIONS : []),
  776.                         DeploymentToolkitPlugin: 0 == e.status || !e.HTML ? null : e.HTML.obj(),
  777.                         vendor: this.info.getVendor(),
  778.                         isPlugin2: this.info.isPlugin2InstalledEnabled(),
  779.                         OTF: 3 > this.OTF ? 0 : 3 == this.OTF ? 1 : 2,
  780.                         PLUGIN: null,
  781.                         name: "",
  782.                         description: ""
  783.                     };
  784.                 e.All_versions = [].concat(e.DeployTK_versions.length ? e.DeployTK_versions : a.isString(this.version) ? [this.version] : []);
  785.                 var g = e.All_versions;
  786.                 for (c = 0; c < g.length; c++) g[c] = a.formatNum(a.getNum(g[c]));
  787.                 for (c =
  788.                     0; c < f.length; c++)
  789.                     if (f[c][0] && b.HTML[c] && b.HTML[c].obj()) {
  790.                         e.PLUGIN = b.HTML[c].obj();
  791.                         break
  792.                     }
  793.                 g = [null, null, null, null];
  794.                 for (c = 0; c < f.length; c++)
  795.                     if (f[c][0]) g[c] = 1;
  796.                     else if (null !== f[c][0])
  797.                     if (this.NOTF && (!b.HTML[c] || !b.HTML[c].DELETE) && this.NOTF.isAppletActive(c), 1 == b.active[c]) g[c] = 0;
  798.                     else {
  799.                         if (1 <= b.allowed[c] && 3 != this.OTF && (b.isDisabled.single(c) || -0.2 == d || -1 == d || 0 > b.active[c] || 3 == c && (!a.isIE || /Microsoft/i.test(e.vendor)))) g[c] = -1
  800.                     } else 3 == c && f[0][0] && (g[c] = 0);
  801.                 e.objectTag = g[1];
  802.                 e.appletTag = g[2];
  803.                 e.objectTagActiveX =
  804.                     g[3];
  805.                 b = 0;
  806.                 a.isIE || (this.navMime.query()
  807.                     .pluginObj ? b = this.navMime.pluginObj : this.navigator.pluginObj && (b = this.navigator.pluginObj), b && (e.name = b.name || "", e.description = b.description || ""));
  808.                 return e
  809.             },
  810.             getVerifyTagsDefault: function () {
  811.                 return [1, this.applet.isDisabled.VerifyTagsDefault_1() ? 0 : 1, 1]
  812.             },
  813.             getVersion: function (a, b, c) {
  814.                 var d = this.$,
  815.                     e = this.applet,
  816.                     f = this.verify,
  817.                     g = this.navigator,
  818.                     h = null,
  819.                     j = null,
  820.                     k = null;
  821.                 null === this.getVersionDone && (this.OTF = 0, g.mimeObj = d.hasMimeType(this.mimeType), g.mimeObj && (g.pluginObj = g.mimeObj.enabledPlugin),
  822.                     f && f.begin());
  823.                 e.setVerifyTagsArray(c);
  824.                 d.file.save(this, ".jar", b);
  825.                 if (0 === this.getVersionDone) e.should_Insert_Query_Any() && (b = e.insert_Query_Any(a), this.setPluginStatus(b[0], b[1], h, a));
  826.                 else {
  827.                     if ((!h || d.debug) && this.DTK.query()
  828.                         .version) h = this.DTK.version;
  829.                     if ((!h || d.debug) && this.navMime.query()
  830.                         .version) h = this.navMime.version;
  831.                     if ((!h || d.debug) && this.navPlugin.query()
  832.                         .version) h = this.navPlugin.version;
  833.                     this.nonAppletDetectionOk(h) && (k = h);
  834.                     if (!k || d.debug || e.VerifyTagsHas(2.2) || e.VerifyTagsHas(2.5)) b = this.lang.System.getProperty(),
  835.                     b[0] && (h = b[0], k = b[0], j = b[1]);
  836.                     this.setPluginStatus(k, j, h, a);
  837.                     e.should_Insert_Query_Any() && (b = e.insert_Query_Any(a), b[0] && (k = b[0], j = b[1]));
  838.                     this.setPluginStatus(k, j, h, a)
  839.                 }
  840.             },
  841.             nonAppletDetectionOk: function (a) {
  842.                 var b = this.$,
  843.                     c = this.navigator,
  844.                     d = 1;
  845.                 !a || !c.javaEnabled() && !this.lang.System.getPropertyHas(a) || !b.isIE && !c.mimeObj && !this.lang.System.getPropertyHas(a) || b.isIE && !b.ActiveXEnabled ? d = 0 : 20 <= b.OS || this.info && (0 > this.info.getPlugin2Status() && this.info.BrowserRequiresPlugin2()) && (d = 0);
  846.                 return d
  847.             },
  848.             setPluginStatus: function (a,
  849.                 b, c, d) {
  850.                 var e = this.$,
  851.                     f, g = 0,
  852.                     h = this.applet;
  853.                 c = c || this.version0;
  854.                 0 < this.OTF && (a = a || this.lang.System.getProperty()[0]);
  855.                 if (f = h.isRange(a)) h.setRange(f, d) == a && (g = f), a = 0;
  856.                 3 > this.OTF && (this.installed = g ? 0 < g ? 0.7 : -0.1 : a ? 1 : c ? -0.2 : -1);
  857.                 2 == this.OTF && (this.NOTF && !this.applet.getResult()[0] && !this.lang.System.getProperty()[0]) && (this.installed = c ? -0.2 : -1);
  858.                 c && (this.version0 = e.formatNum(e.getNum(c)));
  859.                 a && !g && (this.version = e.formatNum(e.getNum(a)));
  860.                 b && e.isString(b) && (this.vendor = b);
  861.                 this.vendor || (this.vendor = "");
  862.                 this.verify &&
  863.                     this.verify.isEnabled() ? this.getVersionDone = 0 : 1 != this.getVersionDone && (this.getVersionDone = 2 > this.OTF ? 0 : this.applet.can_Insert_Query_Any() ? 0 : 1);
  864.                 e.codebase.emptyGarbage()
  865.             },
  866.             DTK: {
  867.                 $: 1,
  868.                 hasRun: 0,
  869.                 status: null,
  870.                 VERSIONS: [],
  871.                 version: "",
  872.                 HTML: null,
  873.                 Plugin2Status: null,
  874.                 classID: ["clsid:CAFEEFAC-DEC7-0000-0001-ABCDEFFEDCBA", "clsid:CAFEEFAC-DEC7-0000-0000-ABCDEFFEDCBA"],
  875.                 mimeType: ["application/java-deployment-toolkit", "application/npruntime-scriptable-plugin;DeploymentToolkit"],
  876.                 isDisabled: function () {
  877.                     var a = this.$;
  878.                     return a.isIE &&
  879.                         (6 > a.verIE || !a.ActiveXEnabled) || a.isGecko && 0 >= a.compareNums(a.verGecko, a.formatNum("1.6")) || a.isSafari && 1 == a.OS && (!a.verSafari || 0 > a.compareNums(a.verSafari, "5,1,0,0")) || a.isChrome ? 1 : 0
  880.                 },
  881.                 query: function () {
  882.                     var a = this.$,
  883.                         b = this.$$,
  884.                         c, d, e = a.DOM.altHTML,
  885.                         f = {}, g, h = null,
  886.                         j = null,
  887.                         k = this.hasRun || this.isDisabled();
  888.                     this.hasRun = 1;
  889.                     if (k) return this;
  890.                     this.status = 0;
  891.                     if (a.isIE)
  892.                         for (c = 0; c < this.classID.length && !(this.HTML = a.DOM.insert("object", ["classid", this.classID[c]], [], e), h = this.HTML.obj(), a.getPROP(h, "jvms")); c++);
  893.                     else if ((d =
  894.                         a.hasMimeType(this.mimeType)) && d.type) this.HTML = a.DOM.insert("object", ["type", d.type], [], e), h = this.HTML.obj();
  895.                     if (h) {
  896.                         try {
  897.                             2 > Math.abs(b.info.getPlugin2Status()) && (this.Plugin2Status = h.isPlugin2())
  898.                         } catch (l) {}
  899.                         null !== this.Plugin2Status && (this.Plugin2Status ? b.info.setPlugin2Status(2) : (a.isIE || 0 >= b.info.getPlugin2Status()) && b.info.setPlugin2Status(-2));
  900.                         try {
  901.                             if (g = a.getPROP(h, "jvms"))
  902.                                 if (j = g.getLength(), a.isNum(j)) {
  903.                                     this.status = 0 < j ? 1 : -1;
  904.                                     for (c = 0; c < j; c++)
  905.                                         if (d = a.getNum(g.get(j - 1 - c)
  906.                                             .version)) this.VERSIONS.push(d),
  907.                                     f["a" + a.formatNum(d)] = 1
  908.                                 }
  909.                         } catch (m) {}
  910.                     }
  911.                     d = 0;
  912.                     for (c in f) d++;
  913.                     d && d !== this.VERSIONS.length && (this.VERSIONS = []);
  914.                     this.VERSIONS.length && (this.version = a.formatNum(this.VERSIONS[0]));
  915.                     return this
  916.                 }
  917.             },
  918.             navMime: {
  919.                 $: 1,
  920.                 hasRun: 0,
  921.                 mimetype: "",
  922.                 version: "",
  923.                 length: 0,
  924.                 mimeObj: 0,
  925.                 pluginObj: 0,
  926.                 isDisabled: function () {
  927.                     var a = this.$$.navigator;
  928.                     return this.$.isIE || !a.mimeObj || !a.pluginObj ? 1 : 0
  929.                 },
  930.                 query: function () {
  931.                     var a = this.$,
  932.                         b = this.hasRun || this.isDisabled();
  933.                     this.hasRun = 1;
  934.                     if (b) return this;
  935.                     var b = /^\s*application\/x-java-applet;jpi-version\s*=\s*(\d.*)$/i,
  936.                         c, d, e, f, g = {}, h = a.formatNum("0");
  937.                     for (d = 0; d < navigator.mimeTypes.length; d++)
  938.                         if (f = (e = navigator.mimeTypes[d]) ? e.enabledPlugin : 0, (c = e && b.test(e.type || "") ? a.formatNum(a.getNum(RegExp.$1)) : 0) && f && (f.description || f.name)) g["a" + c] || this.length++, g["a" + c] = e.type, 0 < a.compareNums(c, h) && (h = c);
  939.                     if (c = g["a" + h]) this.pluginObj = (this.mimeObj = e = a.hasMimeType(c)) ? e.enabledPlugin : 0, this.mimetype = c, this.version = h;
  940.                     return this
  941.                 }
  942.             },
  943.             navPlugin: {
  944.                 $: 1,
  945.                 hasRun: 0,
  946.                 version: "",
  947.                 isDisabled: function () {
  948.                     var a = this.$$.navigator;
  949.                     return this.$.isIE || !a.mimeObj || !a.pluginObj ? 1 : 0
  950.                 },
  951.                 query: function () {
  952.                     var a = this.$,
  953.                         b = this.$$.navigator,
  954.                         c, d, e = 0;
  955.                     c = this.hasRun || this.isDisabled();
  956.                     this.hasRun = 1;
  957.                     if (c) return this;
  958.                     c = b.pluginObj.name || "";
  959.                     b = b.pluginObj.description || "";
  960.                     if (!e || a.debug)
  961.                         if (d = /Java.*TM.*Platform[^\d]*(\d+)(?:[\.,_](\d*))?(?:\s*[Update]+\s*(\d*))?/i, (d.test(c) || d.test(b)) && 5 <= parseInt(RegExp.$1, 10)) e = "1," + RegExp.$1 + "," + (RegExp.$2 ? RegExp.$2 : "0") + "," + (RegExp.$3 ? RegExp.$3 : "0");
  962.                     if (!e || a.debug) {
  963.                         d = /Java[^\d]*Plug-in/i;
  964.                         b = d.test(b) ? a.formatNum(a.getNum(b)) :
  965.                             0;
  966.                         c = d.test(c) ? a.formatNum(a.getNum(c)) : 0;
  967.                         if (b && (0 > a.compareNums(b, a.formatNum("1,3")) || 0 <= a.compareNums(b, a.formatNum("2")))) b = 0;
  968.                         if (c && (0 > a.compareNums(c, a.formatNum("1,3")) || 0 <= a.compareNums(c, a.formatNum("2")))) c = 0;
  969.                         (c = b && c ? 0 < a.compareNums(b, c) ? b : c : b || c) && (e = c)
  970.                     }
  971.                     if (!e && (a.isSafari && 2 == a.OS) && (c = a.findNavPlugin("Java.*\\d.*Plug-in.*Cocoa", 0)))(b = a.getNum(c.description)) && (e = b);
  972.                     e && (this.version = a.formatNum(e));
  973.                     return this
  974.                 }
  975.             },
  976.             lang: {
  977.                 $: 1,
  978.                 System: {
  979.                     $: 1,
  980.                     hasRun: 0,
  981.                     result: [null, null],
  982.                     isDisabled: function () {
  983.                         var a =
  984.                             this.$;
  985.                         return !window.java || a.isIE || 2 == a.OS && a.verOpera && 9.2 > a.verOpera && 9 <= a.verOpera ? 1 : 0
  986.                     },
  987.                     getPropertyHas: function (a) {
  988.                         var b = this.$,
  989.                             c = this.getProperty()[0];
  990.                         return a && c && 0 === b.compareNums(b.formatNum(a), b.formatNum(c)) ? 1 : 0
  991.                     },
  992.                     getProperty: function () {
  993.                         var a = this.$,
  994.                             b, c = this.hasRun || this.isDisabled();
  995.                         this.hasRun = 1;
  996.                         if (!c) {
  997.                             a.java_qqq990 = 0;
  998.                             try {
  999.                                 b = document.createElement("script"), b.type = "text/javascript", b.appendChild(document.createTextNode("(function(){var e;try{" + a.name + ".java_qqq990=[window.java.lang.System.getProperty('java.version')+'',window.java.lang.System.getProperty('java.vendor')+'']}catch(e){}})();")),
  1000.                                 a.head.insertBefore(b, a.head.firstChild), a.head.removeChild(b)
  1001.                             } catch (d) {}
  1002.                             a.isArray(a.java_qqq990) && (this.result = [].concat(a.java_qqq990))
  1003.                         }
  1004.                         return this.result
  1005.                     }
  1006.                 }
  1007.             },
  1008.             applet: {
  1009.                 $: 1,
  1010.                 codebase: {
  1011.                     $: 1,
  1012.                     isMin: function (a) {
  1013.                         return this.$.codebase.isMin(this, a)
  1014.                     },
  1015.                     search: function () {
  1016.                         return this.$.codebase.search(this)
  1017.                     },
  1018.                     ParamTags: '<param name="code" value="A19999.class" /><param name="codebase_lookup" value="false" />',
  1019.                     DIGITMAX: [
  1020.                         [16, 64],
  1021.                         [6, 0, 512], 0, [1, 5, 2, 256], 0, [1, 4, 1, 1],
  1022.                         [1, 4, 0, 64],
  1023.                         [1, 3, 2, 32]
  1024.                     ],
  1025.                     DIGITMIN: [1, 0, 0, 0],
  1026.                     Upper: "999 10 5,0,20 1,5,0,20 1,4,1,20 1,4,1,2 1,4,1 1,4".split(" "),
  1027.                     Lower: "10 5,0,20 1,5,0,20 1,4,1,20 1,4,1,2 1,4,1 1,4 0".split(" "),
  1028.                     convert: [
  1029.                         function (a, b) {
  1030.                             return b ? [1 < parseInt(a[0], 10) ? "99" : parseInt(a[1], 10) + 3 + "", a[3], "0", "0"] : ["1", parseInt(a[0], 10) - 3 + "", "0", a[1]]
  1031.                         },
  1032.                         function (a, b) {
  1033.                             return b ? [a[1], a[2], a[3] + "0", "0"] : ["1", a[0], a[1], a[2].substring(0, a[2].length - 1 || 1)]
  1034.                         },
  1035.                         0,
  1036.                         function (a, b) {
  1037.                             return b ? [a[0], a[1], a[2], a[3] + "0"] : [a[0], a[1], a[2], a[3].substring(0, a[3].length - 1 || 1)]
  1038.                         },
  1039.                         0, 1,
  1040.                         function (a, b) {
  1041.                             return b ? [a[0], a[1], a[2], a[3] + "0"] : [a[0], a[1], a[2], a[3].substring(0, a[3].length -
  1042.                                 1 || 1)]
  1043.                         },
  1044.                         1
  1045.                     ]
  1046.                 },
  1047.                 results: [
  1048.                     [null, null],
  1049.                     [null, null],
  1050.                     [null, null],
  1051.                     [null, null]
  1052.                 ],
  1053.                 getResult: function () {
  1054.                     var a = this.results,
  1055.                         b, c = [];
  1056.                     for (b = a.length - 1; 0 <= b && !(c = a[b], c[0]); b--);
  1057.                     return c = [].concat(c)
  1058.                 },
  1059.                 HTML: [0, 0, 0, 0],
  1060.                 active: [0, 0, 0, 0],
  1061.                 DummyObjTagHTML: 0,
  1062.                 DummySpanTagHTML: 0,
  1063.                 allowed: [1, 1, 1, 1],
  1064.                 VerifyTagsHas: function (a) {
  1065.                     var b;
  1066.                     for (b = 0; b < this.allowed.length; b++)
  1067.                         if (this.allowed[b] === a) return 1;
  1068.                     return 0
  1069.                 },
  1070.                 saveAsVerifyTagsArray: function (a) {
  1071.                     var b = this.$,
  1072.                         c;
  1073.                     if (b.isArray(a)) {
  1074.                         for (c = 1; c < this.allowed.length; c++) a.length > c - 1 && b.isNum(a[c -
  1075.                             1]) && (0 > a[c - 1] && (a[c - 1] = 0), 3 < a[c - 1] && (a[c - 1] = 3), this.allowed[c] = a[c - 1]);
  1076.                         this.allowed[0] = this.allowed[3]
  1077.                     }
  1078.                 },
  1079.                 setVerifyTagsArray: function (a) {
  1080.                     var b = this.$,
  1081.                         c = this.$$;
  1082.                     null === c.getVersionDone && this.saveAsVerifyTagsArray(c.getVerifyTagsDefault());
  1083.                     b.debug || c.verify && c.verify.isEnabled() ? this.saveAsVerifyTagsArray([3, 3, 3]) : a && this.saveAsVerifyTagsArray(a)
  1084.                 },
  1085.                 isDisabled: {
  1086.                     $: 1,
  1087.                     single: function (a) {
  1088.                         var b = this.$;
  1089.                         if (0 == a) return b.codebase.isDisabled();
  1090.                         if (3 == a && !b.isIE || this.all()) return 1;
  1091.                         if (1 == a || 3 == a) return this.ObjectTag();
  1092.                         if (2 == a) return this.AppletTag()
  1093.                     },
  1094.                     aA_: null,
  1095.                     all: function () {
  1096.                         var a = this.$,
  1097.                             b = this.$$,
  1098.                             c = b.navigator,
  1099.                             d = 0;
  1100.                         null === this.aA_ && (20 <= a.OS ? d = 0 : a.verOpera && 11 > a.verOpera && !c.javaEnabled() && !b.lang.System.getProperty()[0] ? d = 1 : a.verGecko && 0 > a.compareNums(a.verGecko, a.formatNum("2")) && !c.mimeObj && !b.lang.System.getProperty()[0] ? d = 1 : this.AppletTag() && this.ObjectTag() && (d = 1), this.aA_ = d);
  1101.                         return this.aA_
  1102.                     },
  1103.                     AppletTag: function () {
  1104.                         var a = this.$$.navigator;
  1105.                         return this.$.isIE ? !a.javaEnabled() : 0
  1106.                     },
  1107.                     ObjectTag: function () {
  1108.                         var a = this.$;
  1109.                         return a.isIE ? !a.ActiveXEnabled : 0
  1110.                     },
  1111.                     VerifyTagsDefault_1: function () {
  1112.                         var a = this.$;
  1113.                         return 20 <= a.OS ? 1 : a.isIE && (9 > a.verIE || !a.ActiveXEnabled) || a.verGecko && 0 > a.compareNums(a.verGecko, a.formatNum("2")) || a.isSafari && (!a.verSafari || 0 > a.compareNums(a.verSafari, a.formatNum("4"))) || a.verOpera && 10 > a.verOpera ? 0 : 1
  1114.                     },
  1115.                     z: 0
  1116.                 },
  1117.                 can_Insert_Query: function (a) {
  1118.                     var b = this.results[0][0],
  1119.                         c = this.getResult()[0];
  1120.                     return this.HTML[a] || 0 == a && null !== b && !this.isRange(b) || 0 == a && c && !this.isRange(c) ? 0 : !this.isDisabled.single(a)
  1121.                 },
  1122.                 can_Insert_Query_Any: function () {
  1123.                     var a;
  1124.                     for (a = 0; a < this.results.length; a++)
  1125.                         if (this.can_Insert_Query(a)) return 1;
  1126.                     return 0
  1127.                 },
  1128.                 should_Insert_Query: function (a) {
  1129.                     var b = this.allowed,
  1130.                         c = this.$$,
  1131.                         d = this.getResult()[0],
  1132.                         d = d && (0 < a || !this.isRange(d));
  1133.                     return !this.can_Insert_Query(a) || 0 === b[a] ? 0 : 3 == b[a] || (2.8 == b[a] && !d || 2.5 == b[a] && !c.lang.System.getProperty()[0] || 2.2 == b[a] && !c.lang.System.getProperty()[0] && !d) || !c.nonAppletDetectionOk(c.version0) && (2 == b[a] || 1 == b[a] && !d) ? 1 : 0
  1134.                 },
  1135.                 should_Insert_Query_Any: function () {
  1136.                     var a;
  1137.                     for (a = 0; a < this.allowed.length; a++)
  1138.                         if (this.should_Insert_Query(a)) return 1;
  1139.                     return 0
  1140.                 },
  1141.                 query: function (a) {
  1142.                     var b = this.$,
  1143.                         c = this.$$,
  1144.                         d = null,
  1145.                         e = null,
  1146.                         f = this.results,
  1147.                         g, h;
  1148.                     if ((g = this.HTML[a]) && g.obj() && !(f[a][0] || b.debug && 3 > c.OTF))
  1149.                         if (g = g.obj(!0), b.isIE && (h = b.getPROP(g, "readyState")), !b.isIE || 4 == h) {
  1150.                             try {
  1151.                                 d = b.getNum(g.getVersion() + ""), e = g.getVendor() + "", g.statusbar(" ")
  1152.                             } catch (j) {}
  1153.                             if (d && b.isStrNum(d) && (f[a] = [d, e], 3 > Math.abs(c.info.getPlugin2Status()))) {
  1154.                                 try {
  1155.                                     g.Packages.A.isPlugin2() && c.info.setPlugin2Status(3)
  1156.                                 } catch (k) {}
  1157.                                 3 > Math.abs(c.info.getPlugin2Status()) && c.info.setPlugin2Status(-3)
  1158.                             }
  1159.                         }
  1160.                 },
  1161.                 isRange: function (a) {
  1162.                     return /^[<>]/.test(a || "") ? ">" == a.charAt(0) ? 1 : -1 : 0
  1163.                 },
  1164.                 setRange: function (a, b) {
  1165.                     return (a ? 0 < a ? ">" : "<" : "") + (this.$.isString(b) ? b : "")
  1166.                 },
  1167.                 insert_Query_Any: function (a) {
  1168.                     var b = this.$,
  1169.                         c = this.$$,
  1170.                         d = this.results,
  1171.                         e = this.HTML,
  1172.                         f = b.DOM.altHTML,
  1173.                         g, h = b.file.getValid(c);
  1174.                     this.should_Insert_Query(0) && (2 > c.OTF && (c.OTF = 2), d[0] = [0, 0], (g = a ? this.codebase.isMin(a) : this.codebase.search()) && (d[0][0] = a ? this.setRange(g, a) : g));
  1175.                     if (!h) return this.getResult();
  1176.                     a = h.path;
  1177.                     h = ["archive", h.name + h.ext, "code", "A.class"];
  1178.                     g = ["mayscript",
  1179.                         "true"
  1180.                     ];
  1181.                     var j = ["scriptable", "true", "codebase_lookup", "false"].concat(g),
  1182.                         k = c.navigator,
  1183.                         k = !b.isIE && k.mimeObj && k.mimeObj.type ? k.mimeObj.type : c.mimeType[0];
  1184.                     this.should_Insert_Query(1) && (2 > c.OTF && (c.OTF = 2), e[1] = b.DOM.insert("object", ["type", k], ["codebase", a].concat(h)
  1185.                         .concat(j), f, c), d[1] = [0, 0], this.query(1));
  1186.                     this.should_Insert_Query(2) && (2 > c.OTF && (c.OTF = 2), e[2] = b.isIE ? b.DOM.insert("applet", ["alt", f].concat(g)
  1187.                         .concat(h), ["codebase", a].concat(j), f, c) : b.DOM.insert("applet", ["codebase", a, "alt", f].concat(g)
  1188.                         .concat(h), [].concat(j), f, c), d[2] = [0, 0], this.query(2));
  1189.                     this.should_Insert_Query(3) && (2 > c.OTF && (c.OTF = 2), e[3] = b.isIE ? b.DOM.insert("object", ["classid", c.classID], ["codebase", a].concat(h)
  1190.                         .concat(j), f, c) : b.DOM.insert(), d[3] = [0, 0], this.query(3));
  1191.                     !this.DummyObjTagHTML && !this.isDisabled.ObjectTag() && (this.DummyObjTagHTML = b.DOM.insert("object", [], [], f));
  1192.                     this.DummySpanTagHTML || (this.DummySpanTagHTML = b.DOM.insert("", [], [], f));
  1193.                     return this.getResult()
  1194.                 }
  1195.             },
  1196.             zz: 0
  1197.         },
  1198.         flash: {
  1199.             mimeType: "application/x-shockwave-flash",
  1200.             progID: "ShockwaveFlash.ShockwaveFlash",
  1201.             classID: "clsid:D27CDB6E-AE6D-11CF-96B8-444553540000",
  1202.             getVersion: function () {
  1203.                 var a = function (a) {
  1204.                     return !a ? null : (a = /[\d][\d\,\.\s]*[rRdD]{0,1}[\d\,]*/.exec(a)) ? a[0].replace(/[rRdD\.]/g, ",")
  1205.                         .replace(/\s/g, "") : null
  1206.                 }, b = this.$,
  1207.                     c, d = null,
  1208.                     e = null,
  1209.                     f = null;
  1210.                 if (b.isIE) {
  1211.                     for (c = 15; 2 < c; c--)
  1212.                         if (e = b.getAXO(this.progID + "." + c)) {
  1213.                             f = c.toString();
  1214.                             break
  1215.                         }
  1216.                     e || (e = b.getAXO(this.progID));
  1217.                     if ("6" == f) try {
  1218.                         e.AllowScriptAccess = "always"
  1219.                     } catch (g) {
  1220.                         return "6,0,21,0"
  1221.                     }
  1222.                     try {
  1223.                         d = a(e.GetVariable("$version"))
  1224.                     } catch (h) {}!d && f && (d = f)
  1225.                 } else {
  1226.                     if (e = b.hasMimeType(this.mimeType)) {
  1227.                         c =
  1228.                             b.DOM.insert("object", ["type", this.mimeType], [], "", this)
  1229.                             .obj();
  1230.                         try {
  1231.                             d = b.getNum(c.GetVariable("$version"))
  1232.                         } catch (j) {}
  1233.                     }
  1234.                     d || ((c = e ? e.enabledPlugin : null) && c.description && (d = a(c.description)), d && (d = b.getPluginFileVersion(c, d)))
  1235.                 }
  1236.                 this.installed = d ? 1 : -1;
  1237.                 this.version = b.formatNum(d);
  1238.                 return !0
  1239.             }
  1240.         },
  1241.         shockwave: {
  1242.             mimeType: "application/x-director",
  1243.             progID: "SWCtl.SWCtl",
  1244.             classID: "clsid:166B1BCA-3F9C-11CF-8075-444553540000",
  1245.             getVersion: function () {
  1246.                 var a = null,
  1247.                     b = null,
  1248.                     c = this.$;
  1249.                 if (c.isIE) {
  1250.                     try {
  1251.                         b = c.getAXO(this.progID)
  1252.                             .ShockwaveVersion("")
  1253.                     } catch (d) {}
  1254.                     c.isString(b) &&
  1255.                         0 < b.length ? a = c.getNum(b) :
  1256.                            c.getAXO(this.progID + ".8") ? a = "8" :
  1257.                            c.getAXO(this.progID + ".7") ? a = "7" :
  1258.                            c.getAXO(this.progID + ".1") && (a = "6")
  1259.                 } else(b = c.findNavPlugin("Shockwave\\s*for\\s*Director")) && (b.description && c.hasMimeType(this.mimeType)) && (a = c.getNum(b.description)), a && (a = c.getPluginFileVersion(b, a));
  1260.                 this.installed = a ? 1 : -1;
  1261.                 this.version = c.formatNum(a)
  1262.             }
  1263.         },
  1264.         windowsmediaplayer: {
  1265.             mimeType: ["application/x-mplayer2", "application/asx", "application/x-ms-wmp"],
  1266.             navPluginObj: null,
  1267.             progID: "wmplayer.ocx",
  1268.             classID: "clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6",
  1269.             INSTALLED: {
  1270.                 dfault: null,
  1271.                 inputMime: {}
  1272.             },
  1273.             getVersion: function (a, b) {
  1274.                 var c = this.$,
  1275.                     d, e = null,
  1276.                     f = null,
  1277.                     g = this.mimeType;
  1278.                 this.installed = -1;
  1279.                 c.isString(b) ? (b = b.replace(/\s/g, "")) && (g = b) : b = null;
  1280.                 if (b) {
  1281.                     if (e = this.INSTALLED.inputMime[b], c.isDefined(e)) {
  1282.                         this.installed = e;
  1283.                         return
  1284.                     }
  1285.                 } else if (e = this.INSTALLED.dfault, null !== e) {
  1286.                     this.installed = e;
  1287.                     return
  1288.                 }
  1289.                 if (c.isIE) e = c.getAXO(this.progID), f = c.getPROP(e, "versionInfo") || f, this.installed = e && f ? 1 : e ? 0 : -1;
  1290.                 else {
  1291.                     if (20 > c.OS && 3 <= c.OS) {
  1292.                         this.installed = -1;
  1293.                         return
  1294.                     }
  1295.                     null === this.getVersionDone ? (this.getVersionDone =
  1296.                         0, e = c.getMimeEnabledPlugin(this.mimeType, "Windows\\s*Media\\s*Player.*Plug-?in|Flip4Mac.*Windows\\s*Media.*Plug-?in", "Totem|VLC|RealPlayer"), b || (d = e), !e && c.hasMimeType(this.mimeType) && (e = c.findNavPlugin("Windows\\s*Media\\s*Player.*Plug-?in|Flip4Mac.*Windows\\s*Media.*Plug-?in", 0, "Totem|VLC|RealPlayer")), e && (this.navPluginObj = e, e = (e = (e = c.isGecko && 0 > c.compareNums(c.verGecko, c.formatNum("1.8"))) || c.isOpera && 10 > c.verOpera) || c.isChrome, !e && c.getMimeEnabledPlugin(this.mimeType[2], "Windows\\s*Media\\s*Player.*Firefox.*Plug-?in",
  1297.                             "Totem|VLC|RealPlayer") && (f = c.getPROP(c.DOM.insert("object", ["type", this.mimeType[2], "data", ""], ["src", ""], "", this)
  1298.                             .obj(), "versionInfo") || f))) : f = this.version;
  1299.                     c.isDefined(d) || (d = c.getMimeEnabledPlugin(g, "Windows\\s*Media\\s*Player.*Plug-?in|Flip4Mac.*Windows\\s*Media.*Plug-?in", "Totem|VLC|RealPlayer"));
  1300.                     this.installed = d && f ? 1 : d ? 0 : this.navPluginObj ? -0.2 : -1
  1301.                 }
  1302.                 this.version || (this.version = c.formatNum(f));
  1303.                 b ? this.INSTALLED.inputMime[b] = this.installed : this.INSTALLED.dfault = this.installed
  1304.             }
  1305.         },
  1306.         silverlight: {
  1307.             mimeType: "application/x-silverlight",
  1308.             progID: "AgControl.AgControl",
  1309.             digits: [20, 20, 9, 12, 31],
  1310.             getVersion: function () {
  1311.                 var a = this.$,
  1312.                     b = null,
  1313.                     c = null,
  1314.                     c = null,
  1315.                     d = !0,
  1316.                     e = [1, 0, 1, 1, 1],
  1317.                     f = [1, 0, 1, 1, 1],
  1318.                     g = function (a) {
  1319.                         return (10 > a ? "0" : "") + a.toString()
  1320.                     }, h = function (a, b, c, d, e, f) {
  1321.                         try {
  1322.                             return a.IsVersionSupported(b + "." + c + "." + d + g(e) + g(f) + ".0")
  1323.                         } catch (h) {}
  1324.                         return !1
  1325.                     };
  1326.                 if (a.isIE) {
  1327.                     var c = a.getAXO(this.progID),
  1328.                         j;
  1329.                     if (c && h(c, e[0], e[1], e[2], e[3], e[4])) {
  1330.                         for (e = 0; e < this.digits.length; e++) {
  1331.                             j = f[e];
  1332.                             for (j += 0 == e ? 0 : 1; j <= this.digits[e]; j++)
  1333.                                 if (h(c, 0 == e ? j : f[0], 1 == e ? j : f[1], 2 == e ? j : f[2], 3 == e ? j :
  1334.                                     f[3], 4 == e ? j : f[4])) d = !0, f[e] = j;
  1335.                                 else break;
  1336.                             if (!d) break
  1337.                         }
  1338.                         d && (b = f[0] + "." + f[1] + "." + f[2] + g(f[3]) + g(f[4]) + ".0")
  1339.                     }
  1340.                 } else a.hasMimeType(this.mimeType) && (f = a.isGecko && 0 >= a.compareNums(a.verGecko, a.formatNum("1.6")), a.isGecko && f && (d = !1), (c = a.findNavPlugin("Silverlight.*Plug-?in", 0)) && c.description && (b = a.formatNum(c.description)), b && (f = b.split(a.splitNumRegx), 30226 <= parseInt(f[2], 10) && 2 > parseInt(f[0], 10) && (f[0] = "2"), b = f.join(",")));
  1341.                 this.installed = c && d && b ? 1 : c && d ? 0 : c ? -0.2 : -1;
  1342.                 this.version = a.formatNum(b)
  1343.             }
  1344.         },
  1345.         vlc: {
  1346.             mimeType: "application/x-vlc-plugin",
  1347.             progID: "VideoLAN.VLCPlugin",
  1348.             classID: "clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921",
  1349.             compareNums: function (a, b) {
  1350.                 var c = this.$,
  1351.                     d = a.split(c.splitNumRegx),
  1352.                     c = b.split(c.splitNumRegx),
  1353.                     e, f, g, h, j;
  1354.                 for (e = 0; e < Math.min(d.length, c.length); e++) {
  1355.                     /([\d]+)([a-z]?)/.test(d[e]);
  1356.                     f = parseInt(RegExp.$1, 10);
  1357.                     h = 2 == e && 0 < RegExp.$2.length ? RegExp.$2.charCodeAt(0) : -1;
  1358.                     /([\d]+)([a-z]?)/.test(c[e]);
  1359.                     g = parseInt(RegExp.$1, 10);
  1360.                     j = 2 == e && 0 < RegExp.$2.length ? RegExp.$2.charCodeAt(0) : -1;
  1361.                     if (f != g) return f > g ? 1 : -1;
  1362.                     if (2 == e && h != j) return h > j ? 1 : -1
  1363.                 }
  1364.                 return 0
  1365.             },
  1366.             getVersion: function () {
  1367.                 var a = this.$,
  1368.                     b, c = null;
  1369.                 a.isIE ? ((b = a.getAXO(this.progID)) && (c = a.getNum(a.getPROP(b, "VersionInfo"), "[\\d][\\d\\.]*[a-z]*")), this.installed = c ? 1 : b ? 0 : -1) : (a.hasMimeType(this.mimeType) && (b = a.findNavPlugin("VLC.*Plug-?in", 0, "Totem")) && b.description && (c = a.getNum(b.description, "[\\d][\\d\\.]*[a-z]*")), this.installed = c ? 1 : -1);
  1370.                 this.version = a.formatNum(c)
  1371.             }
  1372.         },
  1373.         adobereader: {
  1374.             mimeType: "application/pdf",
  1375.             navPluginObj: null,
  1376.             progID: ["AcroPDF.PDF", "PDF.PdfCtrl"],
  1377.             classID: "clsid:CA8A9780-280D-11CF-A24D-444553540000",
  1378.             INSTALLED: {},
  1379.             pluginHasMimeType: function (a, b, c) {
  1380.                 for (var d in a)
  1381.                     if (a[d] && a[d].type && a[d].type == b) return 1;
  1382.                 return this.$.getMimeEnabledPlugin(b, c) ? 1 : 0
  1383.             },
  1384.             getVersion: function (a, b) {
  1385.                 var c = this.$,
  1386.                     d, e, f, g = null,
  1387.                     h = null,
  1388.                     j = this.mimeType;
  1389.                 c.isString(b) ? (b = b.replace(/\s/g, "")) && (j = b) : b = null;
  1390.                 if (c.isDefined(this.INSTALLED[j])) this.installed = this.INSTALLED[j];
  1391.                 else {
  1392.                     if (c.isIE) {
  1393.                         g = c.getAXO(this.progID[0]) || c.getAXO(this.progID[1]);
  1394.                         f = /=\s*([\d\.]+)/g;
  1395.                         try {
  1396.                             d = (g || c.DOM.insert("object", ["classid", this.classID], ["src", ""], "",
  1397.                                     this)
  1398.                                 .obj())
  1399.                                 .GetVersions();
  1400.                             for (e = 0; 5 > e; e++)
  1401.                                 if (f.test(d) && (!h || RegExp.$1 > h)) h = RegExp.$1
  1402.                         } catch (k) {}
  1403.                         this.installed = h ? 1 : g ? 0 : -1
  1404.                     } else 0 !== this.getVersionDone ? (this.getVersionDone = 0, g = c.getMimeEnabledPlugin(this.mimeType, "Adobe.*PDF.*Plug-?in|Adobe.*Acrobat.*Plug-?in|Adobe.*Reader.*Plug-?in"), b || (f = g), !g && c.hasMimeType(this.mimeType) && (g = c.findNavPlugin("Adobe.*PDF.*Plug-?in|Adobe.*Acrobat.*Plug-?in|Adobe.*Reader.*Plug-?in", 0)), g && (this.navPluginObj = g, h = c.getNum(g.description) || c.getNum(g.name), h = c.getPluginFileVersion(g,
  1405.                         h), !h && 1 == c.OS && (this.pluginHasMimeType(g, "application/vnd.adobe.pdfxml", "Adobe.*PDF.*Plug-?in|Adobe.*Acrobat.*Plug-?in|Adobe.*Reader.*Plug-?in") ? h = "9" : this.pluginHasMimeType(g, "application/vnd.adobe.x-mars", "Adobe.*PDF.*Plug-?in|Adobe.*Acrobat.*Plug-?in|Adobe.*Reader.*Plug-?in") && (h = "8")))) : h = this.version, c.isDefined(f) || (f = c.getMimeEnabledPlugin(j, "Adobe.*PDF.*Plug-?in|Adobe.*Acrobat.*Plug-?in|Adobe.*Reader.*Plug-?in")), this.installed = f && h ? 1 : f ? 0 : this.navPluginObj ? -0.2 : -1;
  1406.                     this.version || (this.version =
  1407.                         c.formatNum(h));
  1408.                     this.INSTALLED[j] = this.installed
  1409.                 }
  1410.             }
  1411.         },
  1412.         realplayer: {
  1413.             mimeType: ["audio/x-pn-realaudio-plugin"],
  1414.             progID: ["rmocx.RealPlayer G2 Control",
  1415.                      "rmocx.RealPlayer G2 Control.1",
  1416.                      "RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)",
  1417.                      "RealVideo.RealVideo(tm) ActiveX Control (32-bit)",
  1418.                      "RealPlayer"],
  1419.             classID: "clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA",
  1420.             INSTALLED: {},
  1421.             q1: [
  1422.                 [11, 0, 0],
  1423.                 [999],
  1424.                 [663],
  1425.                 [663],
  1426.                 [663],
  1427.                 [660],
  1428.                 [468],
  1429.                 [468],
  1430.                 [468],
  1431.                 [468],
  1432.                 [468],
  1433.                 [468],
  1434.                 [431],
  1435.                 [431],
  1436.                 [431],
  1437.                 [372],
  1438.                 [180],
  1439.                 [180],
  1440.                 [172],
  1441.                 [172],
  1442.                 [167],
  1443.                 [114],
  1444.                 [0]
  1445.             ],
  1446.             q3: [
  1447.                 [6, 0],
  1448.                 [12, 99],
  1449.                 [12, 69],
  1450.                 [12, 69],
  1451.                 [12, 69],
  1452.                 [12, 69],
  1453.                 [12, 69],
  1454.                 [12, 69],
  1455.                 [12, 69],
  1456.                 [12, 69],
  1457.                 [12, 69],
  1458.                 [12, 69],
  1459.                 [12, 46],
  1460.                 [12, 46],
  1461.                 [12, 46],
  1462.                 [11, 3006],
  1463.                 [11, 2806],
  1464.                 [11, 2806],
  1465.                 [11, 2804],
  1466.                 [11, 2804],
  1467.                 [11, 2799],
  1468.                 [11, 2749],
  1469.                 [11, 2700]
  1470.             ],
  1471.             compare: function (a, b) {
  1472.                 var c, d = a.length,
  1473.                     e = b.length,
  1474.                     f, g;
  1475.                 for (c = 0; c < Math.max(d, e); c++) {
  1476.                     f = c < d ? a[c] : 0;
  1477.                     g = c < e ? b[c] : 0;
  1478.                     if (f > g) return 1;
  1479.                     if (f < g) return -1
  1480.                 }
  1481.                 return 0
  1482.             },
  1483.             convertNum: function (a, b, c) {
  1484.                 var d = this.$,
  1485.                     e;
  1486.                 if (!a || !(e = d.formatNum(a))) return null;
  1487.                 e = e.split(d.splitNumRegx);
  1488.                 for (a = 0; a < e.length; a++) e[a] = parseInt(e[a],
  1489.                     10);
  1490.                 if (0 != this.compare(e.slice(0, Math.min(b[0].length, e.length)), b[0])) return null;
  1491.                 e = e.length > b[0].length ? e.slice(b[0].length) : [];
  1492.                 if (0 < this.compare(e, b[1]) || 0 > this.compare(e, b[b.length - 1])) return null;
  1493.                 for (a = b.length - 1; 1 <= a && 1 != a && !(0 == this.compare(b[a], e) && 0 == this.compare(b[a], b[a - 1])) && !(0 <= this.compare(e, b[a]) && 0 > this.compare(e, b[a - 1])); a--);
  1494.                 return c[0].join(".") + "." + c[a].join(".")
  1495.             },
  1496.             getVersion: function (a, b) {
  1497.                 var c = null,
  1498.                     d = 0,
  1499.                     e = 0,
  1500.                     f = this.$,
  1501.                     g, h = this.mimeType[0];
  1502.                 f.isString(b) ? (b = b.replace(/\s/g, "")) &&
  1503.                     (h = b) : b = null;
  1504.                 if (f.isDefined(this.INSTALLED[h])) this.installed = this.INSTALLED[h];
  1505.                 else {
  1506.                     if (f.isIE) {
  1507.                         for (d = 0; d < this.progID.length; d++)
  1508.                             if (g = f.getAXO(this.progID[d])) try {
  1509.                                 c = f.getNum(g.GetVersionInfo());
  1510.                                 break
  1511.                             } catch (j) {}
  1512.                             this.installed = c ? 1 : -1
  1513.                     } else {
  1514.                         g = f.hasMimeType(this.mimeType);
  1515.                         var k = f.findNavPlugin("RealPlayer.*Plug-?in", 0);
  1516.                         g && k && (d = 1, e = b ? f.getMimeEnabledPlugin(b, "RealPlayer.*Plug-?in") ? 1 : 0 : 1);
  1517.                         if (0 !== this.getVersionDone) {
  1518.                             if (this.getVersionDone = 0, g) {
  1519.                                 var k = 1,
  1520.                                     l = null,
  1521.                                     m = null;
  1522.                                 (g = f.hasMimeType("application/vnd.rn-realplayer-javascript")) &&
  1523.                                     (l = f.formatNum(f.getNum(g.enabledPlugin.description)));
  1524.                                 1 == f.OS && l && (g = l.split(f.splitNumRegx), m = !0, 0 > this.compare(g, [6, 0, 12, 200]) ? m = !1 : 0 >= this.compare(g, [6, 0, 12, 1739]) && 0 <= this.compare(g, [6, 0, 12, 857]) && (m = !1));
  1525.                                 !1 === m && (k = 0);
  1526.                                 2 >= f.OS ? (f.isGecko && 0 > f.compareNums(f.verGecko, f.formatNum("1,8")) && (k = 0), f.isChrome && (k = 0), f.isOpera && 10 > f.verOpera && (k = 0)) : k = 0;
  1527.                                 if (k) {
  1528.                                     g = f.DOM.insert("object", ["type", this.mimeType[0]], "src  autostart false imagestatus false controls stopbutton".split(" "), "", this)
  1529.                                         .obj();
  1530.                                     try {
  1531.                                         c =
  1532.                                             f.getNum(g.GetVersionInfo())
  1533.                                     } catch (n) {}
  1534.                                     f.DOM.setStyle(g, ["display", "none"])
  1535.                                 }!c && (l && !1 === m) && (c = (g = this.convertNum(l, this.q3, this.q1)) ? g : l)
  1536.                             }
  1537.                         } else c = this.version;
  1538.                         this.installed = d && e && c ? 1 : d && e ? 0 : d ? -0.2 : -1
  1539.                     }
  1540.                     this.version || (this.version = f.formatNum(c));
  1541.                     this.INSTALLED[h] = this.installed
  1542.                 }
  1543.             }
  1544.         },
  1545.         zz: 0
  1546.     }
  1547. };
  1548. PluginDetect.initScript();
  1549.  
  1550. ---
  1551. Wacked by #MalwareMustDie!
RAW Paste Data