PageSourceSearch

https://www.netscout.com/client.ns.js

js netscout.com collected 2026-09-24 08:00:50 UTC 79,148 bytes, 1,540 lines download raw bytes

1const dfp_post_url = '/4a3c3a7ff8193f1fdd6f61111ae6b011bc1967e2'
2if (typeof exports === 'undefined') {
3	    var exports = {}; 
4}
5! function(e) {
6    var i, t, n = function() {
7        return i = (new(window.UAParser || exports.UAParser)).getResult(), t = new Detector, this
8    };
9    n.prototype = {
10        getSoftwareVersion: function() {
11            return "0.1.11"
12        },
13        getBrowserData: function() {
14            return i
15        },
16        getFingerprint: function() {
17            return murmurhash3_32_gc(i.ua + "|" + this.getScreenPrint() + "|" + this.getPlugins() + "|" + this.getFonts() + "|" + this.isLocalStorage() + "|" + this.isSessionStorage() + "|" + this.getTimeZone() + "|" + this.getLanguage() + "|" + this.getSystemLanguage() + "|" + this.isCookie() + "|" + this.getCanvasPrint(), 256)
18        },
19        getCustomFingerprint: function() {
20            for (var e = "", i = 0; i < arguments.length; i++) e += arguments[i] + "|";
21            return murmurhash3_32_gc(e, 256)
22        },
23        getUserAgent: function() {
24            return i.ua.substring(0, Math.min(199, i.ua.length));
25        },
26        getUserAgentLowerCase: function() {
27            return i.ua.toLowerCase()
28        },
29        getBrowser: function() {
30            return i.browser.name
31        },
32        getBrowserVersion: function() {
33            return i.browser.version
34        },
35        getBrowserMajorVersion: function() {
36            return i.browser.major
37        },
38        isIE: function() {
39            return /IE/i.test(i.browser.name)
40        },
41        isChrome: function() {
42            return /Chrome/i.test(i.browser.name)
43        },
44        isFirefox: function() {
45            return /Firefox/i.test(i.browser.name)
46        },
47        isSafari: function() {
48            return /Safari/i.test(i.browser.name)
49        },
50        isMobileSafari: function() {
51            return /Mobile\sSafari/i.test(i.browser.name)
52        },
53        isOpera: function() {
54            return /Opera/i.test(i.browser.name)
55        },
56        getWebdriver: function() {
57            let webdriver = navigator.webdriver;
58            return webdriver;
59        },
60
61        getAppVersion: function() {
62            let appVersion = navigator.appVersion;
63            return appVersion;
64        },
65
66        getPluginsPrototype: function() {
67            let correctPrototypes = PluginArray.prototype === navigator.plugins.__proto__;
68            if (navigator.plugins.length > 0)
69                correctPrototypes &= Plugin.prototype === navigator.plugins[0].__proto__;
70            return Boolean(correctPrototypes);
71        },
72
73        getMimePrototype: function() {
74            let correctPrototypes = MimeTypeArray.prototype === navigator.mimeTypes.__proto__;
75            if (navigator.mimeTypes.length > 0)
76                correctPrototypes &= MimeType.prototype === navigator.mimeTypes[0].__proto__;
77            return Boolean(correctPrototypes);
78        },
79
80        getLanguagesLength: function() {
81            let language = navigator.language;
82            let languagesLength = navigator.languages.length;
83            return (!language || languagesLength === 0)
84        },
85
86        getOuterValue: function() {
87            let outerHeight = window.outerHeight;
88            let outerWidth  = window.outerWidth;
89            return (outerHeight === 0 || outerWidth === 0);
90        },
91
92        getEngine: function() {
93            return i.engine.name
94        },
95        getEngineVersion: function() {
96            return i.engine.version
97        },
98        getOS: function() {
99            return i.os.name
100        },
101        getOSVersion: function() {
102            return i.os.version
103        },
104        isWindows: function() {
105            return /Windows/i.test(i.os.name)
106        },
107        isMac: function() {
108            return /Mac/i.test(i.os.name)
109        },
110        isLinux: function() {
111            return /Linux/i.test(i.os.name)
112        },
113        isUbuntu: function() {
114            return /Ubuntu/i.test(i.os.name)
115        },
116        isSolaris: function() {
117            return /Solaris/i.test(i.os.name)
118        },
119        getDevice: function() {
120            return i.device.model
121        },
122        getDeviceType: function() {
123            return i.device.type
124        },
125        getDeviceVendor: function() {
126            return i.device.vendor
127        },
128        getCPU: function() {
129            return i.cpu.architecture
130        },
131        isMobile: function() {
132            var e = i.ua || navigator.vendor || window.opera;
133            return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(e) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|
133sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0, 4))
134        },
135        isMobileMajor: function() {
136            return this.isMobileAndroid() || this.isMobileBlackBerry() || this.isMobileIOS() || this.isMobileOpera() || this.isMobileWindows()
137        },
138        isMobileAndroid: function() {
139            return !!i.ua.match(/Android/i)
140        },
141        isMobileOpera: function() {
142            return !!i.ua.match(/Opera Mini/i)
143        },
144        isMobileWindows: function() {
145            return !!i.ua.match(/IEMobile/i)
146        },
147        isMobileBlackBerry: function() {
148            return !!i.ua.match(/BlackBerry/i)
149        },
150        isMobileIOS: function() {
151            return !!i.ua.match(/iPhone|iPad|iPod/i)
152        },
153        isIphone: function() {
154            return !!i.ua.match(/iPhone/i)
155        },
156        isIpad: function() {
157            return !!i.ua.match(/iPad/i)
158        },
159        isIpod: function() {
160            return !!i.ua.match(/iPod/i)
161        },
162        getScreenPrint: function() {
163            var t = "Current Resolution: " + this.getCurrentResolution() + ", Available Resolution: " + this.getAvailableResolution() + ", Color Depth: " + this.getColorDepth() + ", Device XDPI: " + this.getDeviceXDPI() + ", Device YDPI: " + this.getDeviceYDPI()
164            return t.substring(0, Math.min(199, t.length))
165        },
166        getColorDepth: function() {
167            return screen.colorDepth
168        },
169        getCurrentResolution: function() {
170            return screen.width + "x" + screen.height
171        },
172        getAvailableResolution: function() {
173            return screen.availWidth + "x" + screen.availHeight
174        },
175        getDeviceXDPI: function() {
176            return screen.deviceXDPI
177        },
178        getDeviceYDPI: function() {
179            return screen.deviceYDPI
180        },
181        getPlugins: function() {
182            for (var e = "", i = 0; i < navigator.plugins.length; i++) e = i == navigator.plugins.length - 1 ? e + navigator.plugins[i].name : e + (navigator.plugins[i].name + ", ");
183	    return e.substring(0, Math.min(99, e.length))
184        },
185        isJava: function() {
186            return navigator.javaEnabled()
187        },
188        getJavaVersion: function() {
189            return deployJava.getJREs().toString()
190        },
191        isFlash: function() {
192            return !!navigator.plugins["Shockwave Flash"]
193        },
194        getFlashVersion: function() {
195            return this.isFlash() ? (objPlayerVersion = swfobject.getFlashPlayerVersion(), objPlayerVersion.major + "." + objPlayerVersion.minor + "." + objPlayerVersion.release) : ""
196        },
197        isSilverlight: function() {
198            return !!navigator.plugins["Silverlight Plug-In"]
199        },
200        getSilverlightVersion: function() {
201            return this.isSilverlight() ? navigator.plugins["Silverlight Plug-In"].description : ""
202        },
203        isMimeTypes: function() {
204            return !!navigator.mimeTypes.length
205        },
206        getMimeTypes: function() {
207            for (var e = "", i = 0; i < navigator.mimeTypes.length; i++) e = i == navigator.mimeTypes.length - 1 ? e + navigator.mimeTypes[i].description : e + (navigator.mimeTypes[i].description + ", ");
208            return e
209        },
210        isFont: function(e) {
211            return t.detect(e)
212        },
213        getFonts: function() {
214            for (var e = "Abadi MT Condensed Light;Adobe Fangsong Std;Adobe Hebrew;Adobe Ming Std;Agency FB;Aharoni;Andalus;Angsana New;AngsanaUPC;Aparajita;Arab;Arabic Transparent;Arabic Typesetting;Arial Baltic;Arial Black;Arial CE;Arial CYR;Arial Greek;Arial TUR;Arial;Batang;BatangChe;Bauhaus 93;Bell MT;Bitstream Vera Serif;Bodoni MT;Bookman Old Style;Braggadocio;Broadway;Browallia New;BrowalliaUPC;Calibri Light;Calibri;Californian FB;Cambria Math;Cambria;Candara;Castellar;Casual;Centaur;Century Gothic;Chalkduster;Colonna MT;Comic Sans MS;Consolas;Constantia;Copperplate Gothic Light;Corbel;Cordia New;CordiaUPC;Courier New Baltic;Courier New CE;Courier New CYR;Courier New Greek;Courier New TUR;Courier New;DFKai-SB;DaunPenh;David;DejaVu LGC Sans Mono;Desdemona;DilleniaUPC;DokChampa;Dotum;DotumChe;Ebrima;Engravers MT;Eras Bold ITC;Estrangelo Edessa;EucrosiaUPC;Euphemia;Eurostile;FangSong;Forte;FrankRuehl;Franklin Gothic Heavy;Franklin Gothic Medium;FreesiaUPC;French Script MT;Gabriola;Gautami;Georgia;Gigi;Gisha;Goudy Old Style;Gulim;GulimChe;GungSeo;Gungsuh;GungsuhChe;Haettenschweiler;Harrington;Hei S;HeiT;Heisei Kaku Gothic;Hiragino Sans GB;Impact;Informal Roman;IrisUPC;Iskoola Pota;JasmineUPC;KacstOne;KaiTi;Kalinga;Kartika;Khmer UI;Kino MT;KodchiangUPC;Kokila;Kozuka Gothic Pr6N;Lao UI;Latha;Leelawadee;Levenim MT;LilyUPC;Lohit Gujarati;Loma;Lucida Bright;Lucida Console;Lucida Fax;Lucida Sans Unicode;MS Gothic;MS Mincho;MS PGothic;MS PMincho;MS Reference Sans Serif;MS UI Gothic;MV Boli;Magneto;Malgun Gothic;Mangal;Marlett;Matura MT Script Capitals;Meiryo UI;Meiryo;Menlo;Microsoft Himalaya;Microsoft JhengHei;Microsoft New Tai Lue;Microsoft PhagsPa;Microsoft Sans Serif;Microsoft Tai Le;Microsoft Uighur;Microsoft YaHei;Microsoft Yi Baiti;MingLiU;MingLiU-ExtB;MingLiU_HKSCS;MingLiU_HKSCS-ExtB;Miriam Fixed;Miriam;Mongolian Baiti;MoolBoran;NSimSun;
214Narkisim;News Gothic MT;Niagara Solid;Nyala;PMingLiU;PMingLiU-ExtB;Palace Script MT;Palatino Linotype;Papyrus;Perpetua;Plantagenet Cherokee;Playbill;Prelude Bold;Prelude Condensed Bold;Prelude Condensed Medium;Prelude Medium;PreludeCompressedWGL Black;PreludeCompressedWGL Bold;PreludeCompressedWGL Light;PreludeCompressedWGL Medium;PreludeCondensedWGL Black;PreludeCondensedWGL Bold;PreludeCondensedWGL Light;PreludeCondensedWGL Medium;PreludeWGL Black;PreludeWGL Bold;PreludeWGL Light;PreludeWGL Medium;Raavi;Rachana;Rockwell;Rod;Sakkal Majalla;Sawasdee;Script MT Bold;Segoe Print;Segoe Script;Segoe UI Light;Segoe UI Semibold;Segoe UI Symbol;Segoe UI;Shonar Bangla;Showcard Gothic;Shruti;SimHei;SimSun;SimSun-ExtB;Simplified Arabic Fixed;Simplified Arabic;Snap ITC;Sylfaen;Symbol;Tahoma;Times New Roman Baltic;Times New Roman CE;Times New Roman CYR;Times New Roman Greek;Times New Roman TUR;Times New Roman;TlwgMono;Traditional Arabic;Trebuchet MS;Tunga;Tw Cen MT Condensed Extra Bold;Ubuntu;Umpush;Univers;Utopia;Utsaah;Vani;Verdana;Vijaya;Vladimir Script;Vrinda;Webdings;Wide Latin;Wingdings".split(";"), i = "", n = 0; n < e.length; n++) t.detect(e[n]) && (i = n == e.length - 1 ? i + e[n] : i + (e[n] + ", "));
215            return i.substring(0, Math.min(2499, i.length));
216        },
217        isLocalStorage: function() {
218            try {
219                return !!e.localStorage
220            } catch (e) {
221                return !0
222            }
223        },
224        isSessionStorage: function() {
225            try {
226                return !!e.sessionStorage
227            } catch (e) {
228                return !0
229            }
230        },
231        isCookie: function() {
232            return navigator.cookieEnabled
233        },
234        getTimeZone: function() {
235            return String(String(new Date).split("(")[1]).split(")")[0]
236        },
237        getLanguage: function() {
238            return navigator.language
239        },
240        getSystemLanguage: function() {
241            return navigator.systemLanguage
242        },
243        isCanvas: function() {
244            var e = document.createElement("canvas");
245            try {
246                return !(!e.getContext || !e.getContext("2d"))
247            } catch (e) {
248                return !1
249            }
250        },
251        getCanvasPrint: function() {
252            var e, i = document.createElement("canvas");
253            try {
254                e = i.getContext("2d");
255            } catch (e) {
256                return ""
257            }
258            return e.textBaseline = "top", e.font = "14px 'Arial'", e.textBaseline = "alphabetic", e.fillStyle = "#f60", e.fillRect(125, 1, 62, 20), e.fillStyle = "#069", e.fillText("ClientJS,org <canvas> 1.0", 2, 15), e.fillStyle = "rgba(102, 204, 0, 0.7)", e.fillText("ClientJS,org <canvas> 1.0", 4, 17), i.toDataURL().substring(0, Math.min(9999, i.toDataURL().length));
259        }
260    }, "object" == typeof module && "undefined" != typeof exports && (module.exports = n), e.ClientJS = n
261}(window);
262var deployJava = function() {
263        function e(e) {
264            a.debug && (console.log ? console.log(e) : alert(e))
265        }
266
267        function i(e) {
268            return null == e || 0 == e.length ? "http://java.com/dt-redirect" : ("&" == e.charAt(0) && (e = e.substring(1, e.length)), "http://java.com/dt-redirect?" + e)
269        }
270        var t = ["id", "class", "title", "style"];
271        "classid codebase codetype data type archive declare standby height width usemap name tabindex align border hspace vspace".split(" ").concat(t, ["lang", "dir"], "onclick ondblclick onmousedown onmouseup onmouseover onmousemove onmouseout onkeypress onkeydown onkeyup".split(" "));
272        var n, r = "codebase code name archive object width height alt align hspace vspace".split(" ").concat(t);
273        try {
274            n = -1 != document.location.protocol.indexOf("http") ? "//java.com/js/webstart.png" : "http://java.com/js/webstart.png"
275        } catch (e) {
276            n = "http://java.com/js/webstart.png"
277        }
278        var a = {
279            debug: null,
280            version: "20120801",
281            firefoxJavaVersion: null,
282            myInterval: null,
283            preInstallJREList: null,
284            returnPage: null,
285            brand: null,
286            locale: null,
287            installType: null,
288            EAInstallEnabled: !1,
289            EarlyAccessURL: null,
290            oldMimeType: "application/npruntime-scriptable-plugin;DeploymentToolkit",
291            mimeType: "application/java-deployment-toolkit",
292            launchButtonPNG: n,
293            browserName: null,
294            browserName2: null,
295            getJREs: function() {
296                var i = [];
297                if (this.isPluginInstalled())
298                    for (var t = this.getPlugin().jvms, n = 0; n < t.getLength(); n++) i[n] = t.get(n).version;
299                else t = this.getBrowser(), "MSIE" == t ? this.testUsingActiveX("1.7.0") ? i[0] = "1.7.0" : this.testUsingActiveX("1.6.0") ? i[0] = "1.6.0" : this.testUsingActiveX("1.5.0") ? i[0] = "1.5.0" : this.testUsingActiveX("1.4.2") ? i[0] = "1.4.2" : this.testForMSVM() && (i[0] = "1.1") : "Netscape Family" == t && (this.getJPIVersionUsingMimeType(), null != this.firefoxJavaVersion ? i[0] = this.firefoxJavaVersion : this.testUsingMimeTypes("1.7") ? i[0] = "1.7.0" : this.testUsingMimeTypes("1.6") ? i[0] = "1.6.0" : this.testUsingMimeTypes("1.5") ? i[0] = "1.5.0" : this.testUsingMimeTypes("1.4.2") ? i[0] = "1.4.2" : "Safari" == this.browserName2 && (this.testUsingPluginsArray("1.7.
2990") ? i[0] = "1.7.0" : this.testUsingPluginsArray("1.6") ? i[0] = "1.6.0" : this.testUsingPluginsArray("1.5") ? i[0] = "1.5.0" : this.testUsingPluginsArray("1.4.2") && (i[0] = "1.4.2")));
300                if (this.debug)
301                    for (n = 0; n < i.length; ++n) e("[getJREs()] We claim to have detected Java SE " + i[n]);
302                return i
303            },
304            installJRE: function(e, i) {
305                if (this.isPluginInstalled() && this.isAutoInstallEnabled(e)) {
306                    var t;
307                    return (t = this.isCallbackSupported() ? this.getPlugin().installJRE(e, i) : this.getPlugin().installJRE(e)) && (this.refresh(), null != this.returnPage && (document.location = this.returnPage)), t
308                }
309                return this.installLatestJRE()
310            },
311            isAutoInstallEnabled: function(e) {
312                if (!this.isPluginInstalled()) return !1;
313                if (void 0 === e && (e = null), "MSIE" != deployJava.browserName || deployJava.compareVersionToPattern(deployJava.getPlugin().version, ["10", "0", "0"], !1, !0)) e = !0;
314                else if (null == e) e = !1;
315                else {
316                    var i = "1.6.0_33+";
317                    if (null == i || 0 == i.length) e = !0;
318                    else {
319                        var t = i.charAt(i.length - 1);
320                        if ("+" != t && "*" != t && -1 != i.indexOf("_") && "_" != t && (i += "*", t = "*"), 0 < (i = i.substring(0, i.length - 1)).length) {
321                            var n = i.charAt(i.length - 1);
322                            "." != n && "_" != n || (i = i.substring(0, i.length - 1))
323                        }
324                        e = "*" == t ? 0 == e.indexOf(i) : "+" == t && i <= e
325                    }
326                    e = !e
327                }
328                return e
329            },
330            isCallbackSupported: function() {
331                return this.isPluginInstalled() && this.compareVersionToPattern(this.getPlugin().version, ["10", "2", "0"], !1, !0)
332            },
333            installLatestJRE: function(e) {
334                if (this.isPluginInstalled() && this.isAutoInstallEnabled()) {
335                    var t = !1;
336                    return (t = this.isCallbackSupported() ? this.getPlugin().installLatestJRE(e) : this.getPlugin().installLatestJRE()) && (this.refresh(), null != this.returnPage && (document.location = this.returnPage)), t
337                }
338                if (e = this.getBrowser(), t = navigator.platform.toLowerCase(), "true" == this.EAInstallEnabled && -1 != t.indexOf("win") && null != this.EarlyAccessURL) this.preInstallJREList = this.getJREs(), null != this.returnPage && (this.myInterval = setInterval("deployJava.poll()", 3e3)), location.href = this.EarlyAccessURL;
339                else {
340                    if ("MSIE" == e) return this.IEInstall();
341                    if ("Netscape Family" == e && -1 != t.indexOf("win32")) return this.FFInstall();
342                    location.href = i((null != this.returnPage ? "&returnPage=" + this.returnPage : "") + (null != this.locale ? "&locale=" + this.locale : "") + (null != this.brand ? "&brand=" + this.brand : ""))
343                }
344                return !1
345            },
346            runApplet: function(i, t, n) {
347                "undefined" != n && null != n || (n = "1.1");
348                var r = n.match("^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?$");
349                null == this.returnPage && (this.returnPage = document.location), null != r ? "?" != this.getBrowser() ? this.versionCheck(n + "+") ? this.writeAppletTag(i, t) : this.installJRE(n + "+") && (this.refresh(), location.href = document.location, this.writeAppletTag(i, t)) : this.writeAppletTag(i, t) : e("[runApplet()] Invalid minimumVersion argument to runApplet():" + n)
350            },
351            writeAppletTag: function(e, i) {
352                var t = "<applet ",
353                    n = "",
354                    a = !0;
355                null != i && "object" == typeof i || (i = {});
356                for (var o in e) {
357                    var s;
358                    e: {
359                        s = o.toLowerCase();
360                        for (var l = r.length, u = 0; u < l; u++)
361                            if (r[u] === s) {
362                                s = !0;
363                                break e
364                            } s = !1
365                    }
366                    s ? (t += " " + o + '="' + e[o] + '"', "code" == o && (a = !1)) : i[o] = e[o]
367                }
368                o = !1;
369                for (var c in i) "codebase_lookup" == c && (o = !0), "object" != c && "java_object" != c && "java_code" != c || (a = !1), n += '<param name="' + c + '" value="' + i[c] + '"/>';
370                o || (n += '<param name="codebase_lookup" value="false"/>'), a && (t += ' code="dummy"'), document.write(t + ">\n" + n + "\n</applet>")
371            },
372            versionCheck: function(i) {
373                var t = 0,
374                    n = i.match("^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?(\\*|\\+)?$");
375                if (null != n) {
376                    for (var r = i = !1, a = [], o = 1; o < n.length; ++o) "string" == typeof n[o] && "" != n[o] && (a[t] = n[o], t++);
377                    for ("+" == a[a.length - 1] ? (r = !0, i = !1, a.length--) : "*" == a[a.length - 1] ? (r = !1, i = !0, a.length--) : 4 > a.length && (r = !1, i = !0), t = this.getJREs(), o = 0; o < t.length; ++o)
378                        if (this.compareVersionToPattern(t[o], a, i, r)) return !0
379                } else t = "Invalid versionPattern passed to versionCheck: " + i, e("[versionCheck()] " + t), alert(t);
380                return !1
381            },
382            isWebStartInstalled: function(i) {
383                if ("?" == this.getBrowser()) return !0;
384                "undefined" != i && null != i || (i = "1.4.2");
385                var t = !1;
386                return null != i.match("^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?$") ? t = this.versionCheck(i + "+") : (e("[isWebStartInstaller()] Invalid minimumVersion argument to isWebStartInstalled(): " + i), t = this.versionCheck("1.4.2+")), t
387            },
388            getJPIVersionUsingMimeType: function() {
389                for (var e = 0; e < navigator.mimeTypes.length; ++e) {
390                    var i = navigator.mimeTypes[e].type.match(/^application\/x-java-applet;jpi-version=(.*)$/);
391                    if (null != i && (this.firefoxJavaVersion = i[1], "Opera" != this.browserName2)) break
392                }
393            },
394            launchWebStartApplication: function(e) {
395                if (navigator.userAgent.toLowerCase(), this.getJPIVersionUsingMimeType(), 0 == this.isWebStartInstalled("1.7.0") && (0 == this.installJRE("1.7.
3950+") || 0 == this.isWebStartInstalled("1.7.0"))) return !1;
396                var i = null;
397                document.documentURI && (i = document.documentURI), null == i && (i = document.URL);
398                var t, n = this.getBrowser();
399                "MSIE" == n ? t = '<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="0" height="0"><PARAM name="launchjnlp" value="' + e + '"><PARAM name="docbase" value="' + i + '"></object>' : "Netscape Family" == n && (t = '<embed type="application/x-java-applet;jpi-version=' + this.firefoxJavaVersion + '" width="0" height="0" launchjnlp="' + e + '"docbase="' + i + '" />'), "undefined" == document.body || null == document.body ? (document.write(t), document.location = i) : ((e = document.createElement("div")).id = "div1", e.style.position = "relative", e.style.left = "-10000px", e.style.margin = "0px auto", e.className = "dynamicDiv", e.innerHTML = t, document.body.appendChild(e))
400            },
401            createWebStartLaunchButtonEx: function(e, i) {
402                null == this.returnPage && (this.returnPage = e), document.write("<a href=\"javascript:deployJava.launchWebStartApplication('" + e + '\');" onMouseOver="window.status=\'\'; return true;"><img src="' + this.launchButtonPNG + '" border="0" /></a>')
403            },
404            createWebStartLaunchButton: function(e, i) {
405                null == this.returnPage && (this.returnPage = e), document.write('
405<a href="javascript:if (!deployJava.isWebStartInstalled(&quot;' + i + "&quot;)) {if (deployJava.installLatestJRE()) {if (deployJava.launch(&quot;" + e + "&quot;)) {}}} else {if (deployJava.launch(&quot;" + e + '&quot;)) {}}" onMouseOver="window.status=\'\'; return true;"><img src="' + this.launchButtonPNG + '" border="0" /></a>')
406            },
407            launch: function(e) {
408                return document.location = e, !0
409            },
410            isPluginInstalled: function() {
411                var e = this.getPlugin();
412                return !(!e || !e.jvms)
413            },
414            isAutoUpdateEnabled: function() {
415                return !!this.isPluginInstalled() && this.getPlugin().isAutoUpdateEnabled()
416            },
417            setAutoUpdateEnabled: function() {
418                return !!this.isPluginInstalled() && this.getPlugin().setAutoUpdateEnabled()
419            },
420            setInstallerType: function(e) {
421                return this.installType = e, !!this.isPluginInstalled() && this.getPlugin().setInstallerType(e)
422            },
423            setAdditionalPackages: function(e) {
424                return !!this.isPluginInstalled() && this.getPlugin().setAdditionalPackages(e)
425            },
426            setEarlyAccess: function(e) {
427                this.EAInstallEnabled = e
428            },
429            isPlugin2: function() {
430                if (this.isPluginInstalled() && this.versionCheck("1.6.0_10+")) try {
431                    return this.getPlugin().isPlugin2()
432                } catch (e) {}
433                return !1
434            },
435            allowPlugin: function() {
436                return this.getBrowser(), "Safari" != this.browserName2 && "Opera" != this.browserName2
437            },
438            getPlugin: function() {
439                this.refresh();
440                var e = null;
441                return this.allowPlugin() && (e = document.getElementById("deployJavaPlugin")), e
442            },
443            compareVersionToPattern: function(e, i, t, n) {
444                if (void 0 == e || void 0 == i) return !1;
445                var r = e.match("^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?$");
446                if (null != r) {
447                    var a = 0;
448                    e = [];
449                    for (var o = 1; o < r.length; ++o) "string" == typeof r[o] && "" != r[o] && (e[a] = r[o], a++);
450                    if (r = Math.min(e.length, i.length), n) {
451                        for (o = 0; o < r; ++o) {
452                            if (e[o] < i[o]) return !1;
453                            if (e[o] > i[o]) break
454                        }
455                        return !0
456                    }
457                    for (o = 0; o < r; ++o)
458                        if (e[o] != i[o]) return !1;
459                    return !!t || e.length == i.length
460                }
461                return !1
462            },
463            getBrowser: function() {
464                if (null == this.browserName) {
465                    var i = navigator.userAgent.toLowerCase();
466                    e("[getBrowser()] navigator.userAgent.toLowerCase() -> " + i), -1 != i.indexOf("msie") && -1 == i.indexOf("opera") ? this.browserName2 = this.browserName = "MSIE" : -1 != i.indexOf("iphone") ? (this.browserName = "Netscape Family", this.browserName2 = "iPhone") : -1 != i.indexOf("firefox") && -1 == i.indexOf("opera") ? (this.browserName = "Netscape Family", this.browserName2 = "Firefox") : -1 != i.indexOf("chrome") ? (this.browserName = "Netscape Family", this.browserName2 = "Chrome") : -1 != i.indexOf("safari") ? (this.browserName = "Netscape Family", this.browserName2 = "Safari") : -1 != i.indexOf("mozilla") && -1 == i.indexOf("opera") ? (this.browserName = "Netscape Family", this.browserName2 = "Other") : -1 != i.indexOf("opera") ? (this.browserName = "Netscape Family", this.browserName2 = "Opera") : (this.browserName = "?", this.browserName2 = "unknown"), e("[getBrowser()] Detected browser name:" + this.browserName + ", " + this.browserName2)
467                }
468                return this.browserName
469            },
470            testUsingActiveX: function(i) {
471                if (i = "JavaWebStart.isInstalled." + i + ".0", "undefined" == typeof ActiveXObject || !Active
471XObject) return e("[testUsingActiveX()] Browser claims to be IE, but no ActiveXObject object?"), !1;
472                try {
473                    return null != new ActiveXObject(i)
474                } catch (e) {
475                    return !1
476                }
477            },
478            testForMSVM: function() {
479                if ("undefined" != typeof oClientCaps) {
480                    var e = oClientCaps.getComponentVersion("{08B0E5C0-4FCB-11CF-AAA5-00401C608500}", "ComponentID");
481                    return "" != e && "5,0,5000,0" != e
482                }
483                return !1
484            },
485            testUsingMimeTypes: function(i) {
486                if (!navigator.mimeTypes) return e("[testUsingMimeTypes()] Browser claims to be Netscape family, but no mimeTypes[] array?"), !1;
487                for (var t = 0; t < navigator.mimeTypes.length; ++t) {
488                    s = navigator.mimeTypes[t].type;
489                    var n = s.match(/^application\/x-java-applet\x3Bversion=(1\.8|1\.7|1\.6|1\.5|1\.4\.2)$/);
490                    if (null != n && this.compareVersions(n[1], i)) return !0
491                }
492                return !1
493            },
494            testUsingPluginsArray: function(e) {
495                if (!navigator.plugins || !navigator.plugins.length) return !1;
496                for (var i = navigator.platform.toLowerCase(), t = 0; t < navigator.plugins.length; ++t)
497                    if (s = navigator.plugins[t].description, -1 != s.search(/^Java Switchable Plug-in (Cocoa)/)) {
498                        if (this.compareVersions("1.5.0", e)) return !0
499                    } else if (-1 != s.search(/^Java/) && -1 != i.indexOf("win") && (this.compareVersions("1.5.0", e) || this.compareVersions("1.6.0", e))) return !0;
500                return !!this.compareVersions("1.5.0", e)
501            },
502            IEInstall: function() {
503                return location.href = i((null != this.returnPage ? "&returnPage=" + this.returnPage : "") + (null != this.locale ? "&locale=" + this.locale : "") + (null != this.brand ? "&brand=" + this.brand : "")), !1
504            },
505            done: function(e, i) {},
506            FFInstall: function() {
507                return location.href = i((null != this.returnPage ? "&returnPage=" + this.returnPage : "") + (null != this.locale ? "&locale=" + this.locale : "") + (null != this.brand ? "&brand=" + this.brand : "") + (null != this.installType ? "&type=" + this.installType : "")), !1
508            },
509            compareVersions: function(e, i) {
510                for (var t = e.split("."), n = i.split("."), r = 0; r < t.length; ++r) t[r] = Number(t[r]);
511                for (r = 0; r < n.length; ++r) n[r] = Number(n[r]);
512                return 2 == t.length && (t[2] = 0), t[0] > n[0] || !(t[0] < n[0]) && (t[1] > n[1] || !(t[1] < n[1]) && (t[2] > n[2] || !(t[2] < n[2])))
513            },
514            enableAlerts: function() {
515                this.browserName = null, this.debug = !0
516            },
517            poll: function() {
518                this.refresh();
519                var e = this.getJREs();
520                0 == this.preInstallJREList.length && 0 != e.length && (clearInterval(this.myInterval), null != this.returnPage && (location.href = this.returnPage)), 0 != this.preInstallJREList.length && 0 != e.length && this.preInstallJREList[0] != e[0] && (clearInterval(this.myInterval), null != this.returnPage && (location.href = this.returnPage))
521            },
522            writePluginTag: function() {
523                var e = this.getBrowser();
524                "MSIE" == e ? document.write('<object classid="clsid:CAFEEFAC-DEC7-0000-0001-ABCDEFFEDCBA" id="deployJavaPlugin" width="0" height="0"></object>') : "Netscape Family" == e && this.allowPlugin() && this.writeEmbedTag()
525            },
526            refresh: function() {
527                navigator.plugins.refresh(!1), "Netscape Family" == this.getBrowser() && this.allowPlugin() && null == document.getElementById("deployJavaPlugin") && this.writeEmbedTag()
528            },
529            writeEmbedTag: function() {
530                var e = !1;
531                if (null != navigator.mimeTypes) {
532                    for (var i = 0; i < navigator.mimeTypes.length; i++) navigator.mimeTypes[i].type == this.mimeType && navigator.mimeTypes[i].enabledPlugin && (document.write('<embed id="deployJavaPlugin" type="' + this.mimeType + '" hidden="true" />'), e = !0);
533                    if (!e)
534                        for (i = 0; i < navigator.mimeTypes.length; i++) navigator.mimeTypes[i].type == this.oldMimeType && navigator.mimeTypes[i].enabledPlugin && document.write('
534<embed id="deployJavaPlugin" type="' + this.oldMimeType + '" hidden="true" />')
535                }
536            }
537        };
538        if (a.writePluginTag(), null == a.locale) {
539            if (null == (t = null)) try {
540                t = navigator.userLanguage
541            } catch (e) {}
542            if (null == t) try {
543                t = navigator.systemLanguage
544            } catch (e) {}
545            if (null == t) try {
546                t = navigator.language
547            } catch (e) {}
548            null != t && (t.replace("-", "_"), a.locale = t)
549        }
550        return a
551    }(),
552    Detector = function() {
553        var e = ["monospace", "sans-serif", "serif"],
554            i = document.getElementsByTagName("body")[0],
555            t = document.createElement("span");
556        t.style.fontSize = "72px", t.innerHTML = "mmmmmmmmmmlli";
557        var n, r = {},
558            a = {};
559        for (n in e) t.style.fontFamily = e[n], i.appendChild(t), r[e[n]] = t.offsetWidth, a[e[n]] = t.offsetHeight, i.removeChild(t);
560        this.detect = function(n) {
561            var o, s = !1;
562            for (o in e) {
563                t.style.fontFamily = n + "," + e[o], i.appendChild(t);
564                var l = t.offsetWidth != r[e[o]] || t.offsetHeight != a[e[o]];
565                i.removeChild(t), s = s || l
566            }
567            return s
568        }
569    };
570
571function murmurhash3_32_gc(e, i) {
572    var t, n, r, a, o;
573    for (t = 3 & e.length, n = e.length - t, r = i, o = 0; o < n;) a = 255 & e.charCodeAt(o) | (255 & e.charCodeAt(++o)) << 8 | (255 & e.charCodeAt(++o)) << 16 | (255 & e.charCodeAt(++o)) << 24, ++o, a = 3432918353 * (65535 & a) + ((3432918353 * (a >>> 16) & 65535) << 16) & 4294967295, a = a << 15 | a >>> 17, a = 461845907 * (65535 & a) + ((461845907 * (a >>> 16) & 65535) << 16) & 4294967295, r ^= a, r = r << 13 | r >>> 19, r = 5 * (65535 & r) + ((5 * (r >>> 16) & 65535) << 16) & 4294967295, r = 27492 + (65535 & r) + ((58964 + (r >>> 16) & 65535) << 16);
574    switch (a = 0, t) {
575        case 3:
576            a ^= (255 & e.charCodeAt(o + 2)) << 16;
577        case 2:
578            a ^= (255 & e.charCodeAt(o + 1)) << 8;
579        case 1:
580            r ^= 461845907 * (65535 & (a = (a = 3432918353 * (65535 & (a ^= 255 & e.charCodeAt(o))) + ((3432918353 * (a >>> 16) & 65535) << 16) & 4294967295) << 15 | a >>> 17)) + ((461845907 * (a >>> 16) & 65535) << 16) & 4294967295
581    }
582    return r ^= e.length, r = 2246822507 * (65535 & (r ^= r >>> 16)) + ((2246822507 * (r >>> 16) & 65535) << 16) & 4294967295, ((r = 3266489909 * (65535 & (r ^= r >>> 13)) + ((3266489909 * (r >>> 16) & 65535) << 16) & 4294967295) ^ r >>> 16) >>> 0
583}
584function SHA1(msg) {
585    function rotate_left(n, s) {
586        var t4 = (n << s) | (n >>> (32 - s));
587        return t4;
588    };
589    function lsb_hex(val) {
590        var str = "";
591        var i;
592        var vh;
593        var vl;
594        for (i = 0; i <= 6; i += 2) {
595            vh = (val >>> (i * 4 + 4)) & 0x0f;
596            vl = (val >>> (i * 4)) & 0x0f;
597            str += vh.toString(16) + vl.toString(16);
598        }
599        return str;
600    };
601    function cvt_hex(val) {
602        var str = "";
603        var i;
604        var v;
605        for (i = 7; i >= 0; i--) {
606            v = (val >>> (i * 4)) & 0x0f;
607            str += v.toString(16);
608        }
609        return str;
610    };
611    function Utf8Encode(string) {
612        string = string.replace(/\r\n/g, "\n");
613        var utftext = "";
614        for (var n = 0; n < string.length; n++) {
615            var c = string.charCodeAt(n);
616            if (c < 128) {
617                utftext += String.fromCharCode(c);
618            } else if ((c > 127) && (c < 2048)) {
619                utftext += String.fromCharCode((c >> 6) | 192);
620                utftext += String.fromCharCode((c & 63) | 128);
621            } else {
622                utftext += String.fromCharCode((c >> 12) | 224);
623                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
624                utftext += String.fromCharCode((c & 63) | 128);
625            }
626        }
627        return utftext;
628    };
629    var blockstart;
630    var i, j;
631    var W = new Array(80);
632    var H0 = 0x67452301;
633    var H1 = 0xEFCDAB89;
634    var H2 = 0x98BADCFE;
635    var H3 = 0x10325476;
636    var H4 = 0xC3D2E1F0;
637    var A, B, C, D, E;
638    var temp;
639    msg = Utf8Encode(msg);
640    var msg_len = msg.length;
641    var word_array = new Array();
642    for (i = 0; i < msg_len - 3; i += 4) {
643        j = msg.charCodeAt(i) << 24 | msg.charCodeAt(i + 1) << 16 |
644            msg.charCodeAt(i + 2) << 8 | msg.charCodeAt(i + 3);
645        word_array.push(j);
646    }
647    switch (msg_len % 4) {
648        case 0:
649            i = 0x080000000;
650            break;
651        case 1:
652            i = msg.charCodeAt(msg_len - 1) << 24 | 0x0800000;
653            break;
654        case 2:
655            i = msg.charCodeAt(msg_len - 2) << 24 | msg.charCodeAt(msg_len - 1) << 16 | 0x08000;
656            break;
657        case 3:
658            i = msg.charCodeAt(msg_len - 3) << 24 | msg.charCodeAt(msg_len - 2) << 16 | msg.charCodeAt(msg_len - 1) << 8 | 0x80;
659            break;
660    }
661    word_array.push(i);
662    while ((word_array.length % 16) != 14) word_array.push(0);
663    word_array.push(msg_len >>> 29);
664    word_array.push((msg_len << 3) & 0x0ffffffff);
665    for (blockstart = 0; blockstart < word_array.length; blockstart += 16) {
666        for (i = 0; i < 16; i++) W[i] = word_array[blockstart + i];
667        for (i = 16; i <= 79; i++) W[i] = rotate_left(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
668        A = H0;
669        B = H1;
670        C = H2;
671        D = H3;
672        E = H4;
673        for (i = 0; i <= 19; i++) {
674            temp = (rotate_left(A, 5) + ((B & C) | (~B & D)) + E + W[i] + 0x5A827999) & 0x0ffffffff;
675            E = D;
676            D = C;
677            C = rotate_left(B, 30);
678            B = A;
679            A = temp;
680        }
681        for (i = 20; i <= 39; i++) {
682            temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff;
683            E = D;
684            D = C;
685            C = rotate_left(B, 30);
686            B = A;
687            A = temp;
688        }
689        for (i = 40; i <= 59; i++) {
690            temp = (rotate_left(A, 5) + ((B & C) | (B & D) | (C & D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff;
691            E = D;
692            D = C;
693            C = rotate_left(B, 30);
694            B = A;
695            A = temp;
696        }
697        for (i = 60; i <= 79; i++) {
698            temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff;
699            E = D;
700            D = C;
701            C = rotate_left(B, 30);
702            B = A;
703            A = temp;
704        }
705        H0 = (H0 + A) & 0x0ffffffff;
706        H1 = (H1 + B) & 0x0ffffffff;
707        H2 = (H2 + C) & 0x0ffffffff;
708        H3 = (H3 + D) & 0x0ffffffff;
709        H4 = (H4 + E) & 0x0ffffffff;
710    }
711    var temp = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4);
712    return temp.toLowerCase();
713}
714var swfobject = function() {
715    function e() {
716        if (!x) {
717            try {
718                (e = P.getElementsByTagName("body")[0].appendChild(P.createElement("span"))).parentNode.removeChild(e)
719            } catch (e) {
720                return
721            }
722            x = !0;
723            for (var e = E.length, i = 0; i < e; i++) E[i]()
724        }
725    }
726
727    function i(e) {
728        x ? e() : E[E.length] = e
729    }
730
731    function t(e) {
732        if (void 0 !== C.addEventListener) C.addEventListener("load", e, !1);
733        else if (void 0 !== P.addEventListener) P.addEventListener("load", e, !1);
734        else if (void 0 !== C.attachEvent) t = C, n = "onload", r = e, t.attachEvent(n, r), I[I.length] = [t, n, r];
735        else if ("function" == typeof C.onload) {
736            var i = C.onload;
737            C.onload = function() {
738                i(), e()
739            }
740        } else C.onload = e;
741        var t, n, r
742    }
743
744    function n() {
745        var e = T.length;
746        if (0 < e)
747            for (var i = 0; i < e; i++) {
748                var t = T[i].id,
749                    n = T[i].callbackFn,
750                    l = {
751                        success: !1,
752                        id: t
753                    };
754                if (0 < N.pv[0]) {
755                    if (u = d(t))
756                        if (!m(T[i].swfVersion) || N.wk && 312 > N.wk)
757                            if (T[i].expressInstall && a()) {
758                                (l = {}).data = T[i].expressInstall, l.width = u.getAttribute("width") || "0", l.height = u.getAttribute("height") || "0", u.getAttribute("class") && (l.styleclass = u.getAttribute("class")), u.getAttribute("align") && (l.align = u.getAttribute("align"));
759                                for (var u, c = {}, g = (u = u.getElementsByTagName("param")).length, p = 0; p < g; p++) "movie" != u[p].getAttribute("name").toLowerCase() && (c[u[p].getAttribute("name")] = u[p].getAttribute("value"));
760                                o(l, c, t, n)
761                            } else s(u), n && n(l);
762                    else h(t, !0), n && (l.success = !0, l.ref = r(t), n(l))
763                } else h(t, !0), n && ((t = r(t)) && void 0 !== t.SetVariable && (l.success = !0, l.ref = t), n(l))
764            }
765    }
766
767    function r(e) {
768        var i = null;
769        return (e = d(e)) && "OBJECT" == e.nodeName && (void 0 !== e.SetVariable ? i = e : (e = e.getElementsByTagName("object")[0]) && (i = e)), i
770    }
771
772    function a() {
773        return !B && m("6.0.65") && (N.win || N.mac) && !(N.wk && 312 > N.wk)
774    }
775
776    function o(e, i, t, n) {
777        B = !0, w = n || null, b = {
778            success: !1,
779            id: t
780        };
781        var r = d(t);
782        r && ("OBJECT" == r.nodeName ? (v = l(r), f = null) : (v = r, f = t), e.id = "SWFObjectExprInst", (void 0 === e.width || !/%$/.test(e.width) && 310 > parseInt(e.width, 10)) && (e.width = "310"), (void 0 === e.height || !/%$/.test(e.height) && 137 > parseInt(e.height, 10)) && (e.height = "137"), P.title = P.title.slice(0, 47) + " - Flash Player Installation", n = N.ie && N.win ? "ActiveX" : "PlugIn", n = "MMredirectURL=" + C.location.toString().replace(/&/g, "%26") + "&MMplayerType=" + n + "&MMdoctitle=" + P.title, i.flashvars = void 0 !== i.flashvars ? i.flashvars + "&" + n : n, N.ie && N.win && 4 != r.readyState && (t += "SWFObjectNew", (n = P.createElement("div")).setAttribute("id", t), r.parentNode.insertBefore(n, r), r.style.display = "none", function() {
783            4 == r.readyState ? r.parentNode.removeChild(r) : setTimeout(arguments.callee, 10)
784        }()), u(e, i, t))
785    }
786
787    function s(e) {
788        if (N.ie && N.win && 4 != e.readyState) {
789            var i = P.createElement("div");
790            e.parentNode.insertBefore(i, e), i.parentNode.replaceChild(l(e), i), e.style.display = "none",
791                function() {
792                    4 == e.readyState ? e.parentNode.removeChild(e) : setTimeout(arguments.callee, 10)
793                }()
794        } else e.parentNode.replaceChild(l(e), e)
795    }
796
797    function l(e) {
798        var i = P.createElement("div");
799        if (N.win && N.ie) i.innerHTML = e.innerHTML;
800        else if ((e = e.getElementsByTagName("object")[0]) && (e = e.childNodes))
801            for (var t = e.length, n = 0; n < t; n++) 1 == e[n].nodeType && "PARAM" == e[n].nodeName || 8 == e[n].nodeType || i.appendChild(e[n].cloneNode(!0));
802        return i
803    }
804
805    function u(e, i, t) {
806        var n, r = d(t);
807        if (N.wk && 312 > N.wk) return n;
808        if (r)
809            if (void 0 === e.id && (e.id = t), N.ie && N.win) {
810                var a, o = "";
811                for (a in e) e[a] != Object.prototype[a] && ("data" == a.toLowerCase() ? i.movie = e[a] : "styleclass" == a.toLowerCase() ? o += ' class="' + e[a] + '"' : "classid" != a.toLowerCase() && (o += " " + a + '="' + e[a] + '"'));
812                a = "";
813                for (var s in i) i[s] != Object.prototype[s] && (a += '<param name="' + s + '" value="' + i[s] + '" />');
814                r.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + o + ">" + a + "</object>", k[k.length] = e.id, n = d(e.id)
815            } else {
816                (s = P.createElement("object")).setAttribute("type", "application/x-shockwave-flash");
817                for (var l in e) e[l] != Object.prototype[l] && ("styleclass" == l.toLowerCase() ? s.setAttribute("class", e[l]) : "classid" != l.toLowerCase() && s.setAttribute(l, e[l]));
818                for (o in i) i[o] != Object.prototype[o] && "movie" != o.toLowerCase() && (e = s, a = o, l = i[o], t = P.createElement("param"), t.setAttribute("name", a), t.setAttribute("value", l), e.appendChild(t));
819                r.parentNode.replaceChild(s, r), n = s
820            } return n
821    }
822
823    function c(e) {
824        var i = d(e);
825        i && "OBJECT" == i.nodeName && (N.ie && N.win ? (i.style.display = "none", function() {
826            if (4 == i.readyState) {
827                var t = d(e);
828                if (t) {
829                    for (var n in t) "function" == typeof t[n] && (t[n] = null);
830                    t.parentNode.removeChild(t)
831                }
832            } else setTimeout(arguments.callee, 10)
833        }()) : i.parentNode.removeChild(i))
834    }
835
836    function d(e) {
837        var i = null;
838        try {
839            i = P.getElementById(e)
840        } catch (e) {}
841        return i
842    }
843
844    function m(e) {
845        var i = N.pv;
846        return (e = e.split("."))[0] = parseInt(e[0], 10), e[1] = parseInt(e[1], 10) || 0, e[2] = parseInt(e[2], 10) || 0, i[0] > e[0] || i[0] == e[0] && i[1] > e[1] || i[0] == e[0] && i[1] == e[1] && i[2] >= e[2]
847    }
848
849    function g(e, i, t, n) {
850        if (!N.ie || !N.mac) {
851            var r = P.getElementsByTagName("head")[0];
852            r && (t = t && "string" == typeof t ? t : "screen", n && (S = y = null), y && S == t || ((n = P.createElement("style")).setAttribute("type", "text/css"), n.setAttribute("media", t), y = r.appendChild(n), N.ie && N.win && void 0 !== P.styleSheets && 0 < P.styleSheets.length && (y = P.styleSheets[P.styleSheets.length - 1]), S = t), N.ie && N.win ? y && "object" == typeof y.addRule && y.addRule(e, i) : y && void 0 !== P.createTextNode && y.appendChild(P.createTextNode(e + " {" + i + "}")))
853        }
854    }
855
856    function h(e, i) {
857        if (L) {
858            var t = i ? "visible" : "hidden";
859            x && d(e) ? d(e).style.visibility = t : g("#" + e, "visibility:" + t)
860        }
861    }
862
863    function p(e) {
864        return null != /[\\\"<>\.;]/.exec(e) && "undefined" != typeof encodeURIComponent ? encodeURIComponent(e) : e
865    }
866    var v, f, w, b, y, S, C = window,
867        P = document,
868        M = navigator,
869        A = !1,
870        E = [function() {
871            A ? function() {
872                var e = P.getElementsByTagName("body")[0],
873                    i = P.createElement("object");
874                i.setAttribute("type", "application/x-shockwave-flash");
875                var t = e.appendChild(i);
876                if (t) {
877                    var r = 0;
878                    ! function() {
879                        if (void 0 !== t.GetVariable) {
880                            var a = t.GetVariable("$version");
881                            a && (a = a.split(" ")[1].split(","), N.pv = [parseInt(a[0], 10), parseInt(a[1], 10), parseInt(a[2], 10)])
882                        } else if (10 > r) return r++, void setTimeout(arguments.callee, 10);
883                        e.removeChild(i), t = null, n()
884                    }()
885                } else n()
886            }() : n()
887        }],
888        T = [],
889        k = [],
890        I = [],
891        x = !1,
892        B = !1,
893        L = !0,
894        N = function() {
895            var e = void 0 !== P.getElementById && void 0 !== P.getElementsByTagName && void 0 !== P.createElement,
896                i = M.userAgent.toLowerCase(),
897                t = M.platform.toLowerCase(),
898                n = /win/.test(t || i),
899                r = (t = /mac/.test(t || i), i = !!/webkit/.test(i) && parseFloat(i.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")), !1),
900                a = [0, 0, 0],
901                o = null;
902            if (void 0 !== M.plugins && "object" == typeof M.plugins["Shockwave Flash"]) !(o = M.plugins["Shockwave Flash"].description) || void 0 !== M.mimeTypes && M.mimeTypes["application/x-shockwave-flash"] && !M.mimeTypes["application/x-shockwave-flash"].enabledPlugin || (A = !0, r = !1, o = o.replace(/^.*\s+(\S+\s+\S+$)/, "$1"), a[0] = parseInt(o.replace(/^(.*)\..*$/, "$1"), 10), a[1] = parseInt(o.replace(/^.*\.(.*)\s.*$/, "$1"), 10), a[2] = /[a-zA-Z]/.test(o) ? parseInt(o.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0);
903            else if (void 0 !== C.ActiveXObject) try {
904                var s = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
905                s && (o = s.GetVariable("$version")) && (r = !0, o = o.split(" ")[1].split(","), a = [parseInt(o[0], 10), parseInt(o[1], 10), parseInt(o[2], 10)])
906            } catch (e) {}
907            return {
908                w3: e,
909                pv: a,
910                wk: i,
911                ie: r,
912                win: n,
913                mac: t
914            }
915        }();
916    return N.w3 && ((void 0 !== P.readyState && "complete" == P.readyState || void 0 === P.readyState && (P.getElementsByTagName("body")[0] || P.body)) && e(), x || (void 0 !== P.addEventListener && P.addEventListener("DOMContentLoaded", e, !1), N.ie && N.win && (P.attachEvent("onreadystatechange", function() {
917        "complete" == P.readyState && (P.detachEvent("onreadystatechange", arguments.callee), e())
918    }
918), C == top && function() {
919        if (!x) {
920            try {
921                P.documentElement.doScroll("left")
922            } catch (e) {
923                return void setTimeout(arguments.callee, 0)
924            }
925            e()
926        }
927    }()), N.wk && function() {
928        x || (/loaded|complete/.test(P.readyState) ? e() : setTimeout(arguments.callee, 0))
929    }(), t(e))), N.ie && N.win && window.attachEvent("onunload", function() {
930        for (var e = I.length, i = 0; i < e; i++) I[i][0].detachEvent(I[i][1], I[i][2]);
931        for (e = k.length, i = 0; i < e; i++) c(k[i]);
932        for (var t in N) N[t] = null;
933        N = null;
934        for (var n in swfobject) swfobject[n] = null;
935        swfobject = null
936    }), {
937        registerObject: function(e, i, t, n) {
938            if (N.w3 && e && i) {
939                var r = {};
940                r.id = e, r.swfVersion = i, r.expressInstall = t, r.callbackFn = n, T[T.length] = r, h(e, !1)
941            } else n && n({
942                success: !1,
943                id: e
944            })
945        },
946        getObjectById: function(e) {
947            if (N.w3) return r(e)
948        },
949        embedSWF: function(e, t, n, r, s, l, c, d, g, p) {
950            var v = {
951                success: !1,
952                id: t
953            };
954            N.w3 && !(N.wk && 312 > N.wk) && e && t && n && r && s ? (h(t, !1), i(function() {
955                n += "", r += "";
956                var i = {};
957                if (g && "object" == typeof g)
958                    for (var f in g) i[f] = g[f];
959                if (i.data = e, i.width = n, i.height = r, f = {}, d && "object" == typeof d)
960                    for (var w in d) f[w] = d[w];
961                if (c && "object" == typeof c)
962                    for (var b in c) f.flashvars = void 0 !== f.flashvars ? f.flashvars + "&" + b + "=" + c[b] : b + "=" + c[b];
963                if (m(s)) w = u(i, f, t), i.id == t && h(t, !0), v.success = !0, v.ref = w;
964                else {
965                    if (l && a()) return i.data = l, void o(i, f, t, p);
966                    h(t, !0)
967                }
968                p && p(v)
969            })) : p && p(v)
970        },
971        switchOffAutoHideShow: function() {
972            L = !1
973        },
974        ua: N,
975        getFlashPlayerVersion: function() {
976            return {
977                major: N.pv[0],
978                minor: N.pv[1],
979                release: N.pv[2]
980            }
981        },
982        hasFlashPlayerVersion: m,
983        createSWF: function(e, i, t) {
984            if (N.w3) return u(e, i, t)
985        },
986        showExpressInstall: function(e, i, t, n) {
987            N.w3 && a() && o(e, i, t, n)
988        },
989        removeSWF: function(e) {
990            N.w3 && c(e)
991        },
992        createCSS: function(e, i, t, n) {
993            N.w3 && g(e, i, t, n)
994        },
995        addDomLoadEvent: i,
996        addLoadEvent: t,
997        getQueryParamValue: function(e) {
998            if (i = P.location.search || P.location.hash) {
999                if (/\?/.test(i) && (i = i.split("?")[1]), null == e) return p(i);
1000                for (var i = i.split("&"), t = 0; t < i.length; t++)
1001                    if (i[t].substring(0, i[t].indexOf("=")) == e) return p(i[t].substring(i[t].indexOf("=") + 1))
1002            }
1003            return ""
1004        },
1005        expressInstallCallback: function() {
1006            if (B) {
1007                var e = d("SWFObjectExprInst");
1008                e && v && (e.parentNode.replaceChild(v, e), f && (h(f, !0), N.ie && N.win && (v.style.display = "block")), w && w(b)), B = !1
1009            }
1010        }
1011    }
1012}();
1013
1014! function(e, i) {
1015    var t = {
1016            extend: function(e, i) {
1017                for (var t in i) - 1 !== "browser cpu device engine os".indexOf(t) && 0 == i[t].length % 2 && (e[t] = i[t].concat(e[t]));
1018                return e
1019            },
1020            has: function(e, i) {
1021                return "string" == typeof e && -1 !== i.toLowerCase().indexOf(e.toLowerCase())
1022            },
1023            lowerize: function(e) {
1024                return e.toLowerCase()
1025            },
1026            major: function(e) {
1027                return "string" == typeof e ? e.split(".")[0] : i
1028            }
1029        },
1030        n = function() {
1031            for (var e, t, n, r, a, o, s, l = 0, u = arguments; l < u.length && !o;) {
1032                var c = u[l],
1033                    d = u[l + 1];
1034                if (void 0 === e)
1035                    for (r in e = {}, d) d.hasOwnProperty(r) && (a = d[r], "object" == typeof a ? e[a[0]] = i : e[a] = i);
1036                for (t = n = 0; t < c.length && !o;)
1037                    if (o = c[t++].exec(this.getUA()))
1038                        for (r = 0; r < d.length; r++) s = o[++n], a = d[r], "object" == typeof a && 0 < a.length ? 2 == a.length ? e[a[0]] = "function" == typeof a[1] ? a[1].call(this, s) : a[1] : 3 == a.length ? e[a[0]] = "function" != typeof a[1] || a[1].exec && a[1].test ? s ? s.replace(a[1], a[2]) : i : s ? a[1].call(this, s, a[2]) : i : 4 == a.length && (e[a[0]] = s ? a[3].call(this, s.replace(a[1], a[2])) : i) : e[a] = s || i;
1039                l += 2
1040            }
1041            return e
1042        },
1043        r = function(e, n) {
1044            for (var r in n)
1045                if ("object" == typeof n[r] && 0 < n[r].length) {
1046                    for (var a = 0; a < n[r].length; a++)
1047                        if (t.has(n[r][a], e)) return "?" === r ? i : r
1048                } else if (t.has(n[r], e)) return "?" === r ? i : r;
1049            return e
1050        },
1051        a = {
1052            ME: "4.90",
1053            "NT 3.11": "NT3.51",
1054            "NT 4.0": "NT4.0",
1055            2e3: "NT 5.0",
1056            XP: ["NT 5.1", "NT 5.2"],
1057            Vista: "NT 6.0",
1058            7: "NT 6.1",
1059            8: "NT 6.2",
1060            8.1: "NT 6.3",
1061            10: ["NT 6.4", "NT 10.0"],
1062            RT: "ARM"
1063        },
1064        o = {
1065            browser: [
1066                [/(opera\smini)\/([\w\.-]+)/i, /(opera\s[mobiletab]+).+version\/([\w\.-]+)/i, /(opera).+version\/([\w\.]+)/i, /(opera)[\/\s]+([\w\.]+)/i],
1067                ["name", "version"],
1068                [/\s(opr)\/([\w\.]+)/i],
1069                [
1070                    ["name", "Opera"], "version"
1071                ],
1072                [/(kindle)\/([\w\.]+)/i, /(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]+)*/i, /(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i, /(?:ms|\()(ie)\s([\w\.]+)/i, /(rekonq)\/([\w\.]+)*/i, /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs)\/([\w\.-]+)/i],
1073                ["name", "version"],
1074                [/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i],
1075                [
1076                    ["name", "IE"], "version"
1077                ],
1078                [/(edge)\/((\d+)?[\w\.]+)/i],
1079                ["name", "version"],
1080                [/(yabrowser)\/([\w\.]+)/i],
1081                [
1082                    ["name", "Yandex"], "version"
1083                ],
1084                [/(comodo_dragon)\/([\w\.]+)/i],
1085                [
1086                    ["name", /_/g, " "], "version"
1087                ],
1088                [/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i, /(qqbrowser)[\/\s]?([\w\.]+)/i],
1089                ["name", "version"],
1090                [/(uc\s?browser)[\/\s]?([\w\.]+)/i, /ucweb.+(ucbrowser)[\/\s]?([\w\.]+)/i, /JUC.+(ucweb)[\/\s]?([\w\.]+)/i],
1091                [
1092                    ["name", "UCBrowser"], "version"
1093                ],
1094                [/(dolfin)\/([\w\.]+)/i],
1095                [
1096                    ["name", "Dolphin"], "version"
1097                ],
1098                [/((?:android.+)crmo|crios)\/([\w\.]+)/i],
1099                [
1100                    ["name", "Chrome"], "version"
1101                ],
1102                [/XiaoMi\/MiuiBrowser\/([\w\.]+)/i],
1103                ["version", ["name", "MIUI Browser"]],
1104                [/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)/i],
1105                ["version", ["name", "Android Browser"]],
1106                [/FBAV\/([\w\.]+);/i],
1107                ["version", ["name", "Facebook"]],
1108                [/fxios\/([\w\.-]+)/i],
1109                ["version", ["name", "Firefox"]],
1110                [/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i],
1111                ["version", ["name", "Mobile Safari"]],
1112                [/version\/([\w\.]+).+?(mobile\s?safari|safari)/i],
1113                ["version", "name"],
1114                [/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i],
1115                ["name", ["version", r, {
1116                    "1.0": "/8",
1117                    1.2: "/1",
1118                    1.3: "/3",
1119                    "2.0": "/412",
1120                    "2.0.2": "/416",
1121                    "2.0.3": "/417",
1122                    "2.0.4": "/419",
1123                    "?": "/"
1124                }]],
1125                [/(konqueror)\/([\w\.]+)/i, /(webkit|khtml)\/([\w\.]+)/i],
1126                ["name", "version"],
1127                [/(navigator|netscape)\/([\w\.-]+)/i],
1128                [
1129                    ["name", "Netscape"], "version"
1130                ],
1131                [/(swiftfox)/i, /(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i, /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/([\w\.-]+)/i, /(mozilla)\/([\w\.]+).+rv\:.
1131+gecko\/\d+/i, /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i, /(links)\s\(([\w\.]+)/i, /(gobrowser)\/?([\w\.]+)*/i, /(ice\s?browser)\/v?([\w\._]+)/i, /(mosaic)[\/\s]([\w\.]+)/i],
1132                ["name", "version"]
1133            ],
1134            cpu: [
1135                [/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i],
1136                [
1137                    ["architecture", "amd64"]
1138                ],
1139                [/(ia32(?=;))/i],
1140                [
1141                    ["architecture", t.lowerize]
1142                ],
1143                [/((?:i[346]|x)86)[;\)]/i],
1144                [
1145                    ["architecture", "ia32"]
1146                ],
1147                [/windows\s(ce|mobile);\sppc;/i],
1148                [
1149                    ["architecture", "arm"]
1150                ],
1151                [/((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i],
1152                [
1153                    ["architecture", /ower/, "", t.lowerize]
1154                ],
1155                [/(sun4\w)[;\)]/i],
1156                [
1157                    ["architecture", "sparc"]
1158                ],
1159                [/((?:avr32|ia64(?=;))|68k(?=\))|arm(?:64|(?=v\d+;))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i],
1160                [
1161                    ["architecture", t.lowerize]
1162                ]
1163            ],
1164            device: [
1165                [/\((ipad|playbook);[\w\s\);-]+(rim|apple)/i],
1166                ["model", "vendor", ["type", "tablet"]],
1167                [/applecoremedia\/[\w\.]+ \((ipad)/],
1168                ["model", ["vendor", "Apple"],
1169                    ["type", "tablet"]
1170                ],
1171                [/(apple\s{0,1}tv)/i],
1172                [
1173                    ["model", "Apple TV"],
1174                    ["vendor", "Apple"]
1175                ],
1176                [/(archos)\s(gamepad2?)/i, /(hp).+(touchpad)/i, /(kindle)\/([\w\.]+)/i, /\s(nook)[\w\s]+build\/(\w+)/i, /(dell)\s(strea[kpr\s\d]*[\dko])/i],
1177                ["vendor", "model", ["type", "tablet"]],
1178                [/(kf[A-z]+)\sbuild\/[\w\.]+.*silk\//i],
1179                ["model", ["vendor", "Amazon"],
1180                    ["type", "tablet"]
1181                ],
1182                [/(sd|kf)[0349hijorstuw]+\sbuild\/[\w\.]+.*silk\//i],
1183                [
1184                    ["model", r, {
1185                        "Fire Phone": ["SD", "KF"]
1186                    }],
1187                    ["vendor", "Amazon"],
1188                    ["type", "mobile"]
1189                ],
1190                [/\((ip[honed|\s\w*]+);.+(apple)/i],
1191                ["model", "vendor", ["type", "mobile"]],
1192                [/\((ip[honed|\s\w*]+);/i],
1193                ["model", ["vendor", "Apple"],
1194                    ["type", "mobile"]
1195                ],
1196                [/(blackberry)[\s-]?(\w+)/i, /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|huawei|meizu|motorola|polytron)[\s_-]?([\w-]+)*/i, /(hp)\s([\w\s]+\w)/i, /(asus)-?(\w+)/i],
1197                ["vendor", "model", ["type", "mobile"]],
1198                [/\(bb10;\s(\w+)/i],
1199                ["model", ["vendor", "BlackBerry"],
1200                    ["type", "mobile"]
1201                ],
1202                [/android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7)/i],
1203                ["model", ["vendor", "Asus"],
1204                    ["type", "tablet"]
1205                ],
1206                [/(sony)\s(tablet\s[ps])\sbuild\//i, /(sony)?(?:sgp.+)\sbuild\//i],
1207                [
1208                    ["vendor", "Sony"],
1209                    ["model", "Xperia Tablet"],
1210                    ["type", "tablet"]
1211                ],
1212                [/(?:sony)?(?:(?:(?:c|d)\d{4})|(?:so[-l].+))\sbuild\//i],
1213                [
1214                    ["vendor", "Sony"],
1215                    ["model", "Xperia Phone"],
1216                    ["type", "mobile"]
1217                ],
1218                [/\s(ouya)\s/i, /(nintendo)\s([wids3u]+)/i],
1219                ["vendor", "model", ["type", "console"]],
1220                [/android.+;\s(shield)\sbuild/i],
1221                ["model", ["vendor", "Nvidia"],
1222                    ["type", "console"]
1223                ],
1224                [/(playstation\s[34portablevi]+)/i],
1225                ["model", ["vendor", "Sony"],
1226                    ["type", "console"]
1227                ],
1228                [/(sprint\s(\w+))/i],
1229                [
1230                    ["vendor", r, {
1231                        HTC: "APA",
1232                        Sprint: "Sprint"
1233                    }],
1234                    ["model", r, {
1235                        "Evo Shift 4G": "7373KT"
1236                    }],
1237                    ["type", "mobile"]
1238                ],
1239                [/(lenovo)\s?(S(?:5000|6000)+(?:[-][\w+]))/i],
1240                ["vendor", "model", ["type", "tablet"]],
1241                [/(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i, /(zte)-(\w+)*/i, /(alcatel|geeksphone|huawei|lenovo|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]+)*/i],
1242                ["vendor", ["model", /_/g, " "],
1243                    ["type", "mobile"]
1244                ],
1245                [/(nexus\s9)/i],
1246                ["model", ["vendor", "HTC"],
1247                    ["type", "tablet"]
1248                ],
1249                [/[\s\(;](xbox(?:\sone)?)[\s\);]/i],
1250                ["model", ["vendor", "Microsoft"],
1251                    ["type", "console"]
1252                ],
1253                [/(kin\.[onetw]{3})/i],
1254                [
1255                    ["model", /\./g, " "],
1256                    ["vendor", "Microsoft"],
1257                    ["type", "mobile"]
1258                ],
1259                [/\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?(:?\s4g)?)[\w\s]+build\//i, /mot[\s-]?(\w+)*/i, /(XT\d{3,4}) build\//i, /(nexus\s[6])/i],
1260                ["model", ["vendor", "Motorola"],
1261                    ["type", "mobile"]
1262                ],
1263                [/android.+\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i],
1264                ["model", ["vendor", "Motorola"],
1265                    ["type", "tablet"]
1266                ],
1267                [/android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n8000|sgh-t8[56]9|nexus 10))/i, /((SM-T\w+))/i],
1268                [
1269                    ["vendor", "Samsung"], "model", ["type", "tablet"]
1270                ],
1271                [/((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-n900))/i, /(sam[sung]*)[\s-]*(\w+-?[\w-]*)*/i, /sec-((sgh\w+))/i],
1272                [
1273                    ["vendor", "Samsung"], "model", ["type", "mobile"]
1274                ],
1275                [/(samsung);smarttv/i],
1276                ["vendor", "model", ["type", "smarttv"]],
1277                [/\(dtv[\);].+(aquos)/i],
1278                ["model", ["vendor", "Sharp"],
1279                    ["type", "smarttv"]
1280                ],
1281                [/sie-(\w+)*/i],
1282                ["model", ["vendor", "Siemens"],
1283                    ["type", "mobile"]
1284                ],
1285                [/(maemo|nokia).*(n900|lumia\s\d+)/i, /(nokia)[\s_-]?([\w-]+)*/i],
1286                [
1287                    ["vendor", "Nokia"], "model", ["type", "mobile"]
1288                ],
1289                [/android\s3\.[\s\w;-]{10}(a\d{3})/i],
1290                ["model", ["vendor", "Acer"],
1291                    ["type", "tablet"]
1292                ],
1293                [/android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i],
1294                [
1295                    ["vendor", "LG"], "model", ["type", "tablet"]
1296                ],
1297                [/(lg) netcast\.tv/i],
1298                ["vendor", "model", ["type", "smarttv"]],
1299                [/(nexus\s[45])/i, /lg[e;\s\/-]+(\w+)*/i],
1300                ["model", ["vendor", "LG"],
1301                    ["type", "mobile"]
1302                ],
1303                [/android.+(ideatab[a-z0-9\-\s]+)/i],
1304                ["model", ["vendor", "Lenovo"],
1305                    ["type", "tablet"]
1306                ],
1307                [/linux;.+((jolla));/i],
1308                ["vendor", "model", ["type", "mobile"]],
1309                [/((pebble))app\/[\d\.]+\s/i],
1310                ["vendor", "model", ["type", "wearable"]],
1311                [/android.+;\s(glass)\s\d/i],
1312                ["model", ["vendor", "Google"],
1313                    ["type", "wearable"]
1314                ],
1315                [/android.+(\w+)\s+build\/hm\1/i, /android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i, /android.+(mi[\s\-_]*(?:one|one[\s_]plus)?[\s_]*(?:\d\w)?)\s+build/i],
1316                [
1317                    ["model", /_/g, " "],
1318                    ["vendor", "Xiaomi"],
1319                    ["type", "mobile"]
1320                ],
1321                [/\s(tablet)[;\/\s]/i, /\s(mobile)[;\/\s]/i],
1322                [
1323                    ["type", t.lowerize], "vendor", "model"
1324                ]
1325            ],
1326            engine: [
1327                [/windows.+\sedge\/([\w\.]+)/i],
1328                ["version", ["name", "EdgeHTML"]],
1329                [/(presto)\/([\w\.]+)/i, /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i, /(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i, /(icab)[\/\s]([23]\.[\d\.]+)/i],
1330                ["name", "version"],
1331                [/rv\:([\w\.]+).*(gecko)/i],
1332                ["version", "name"]
1333            ],
1334            os: [
1335                [/microsoft\s(windows)\s(vista|xp)/i],
1336                ["name", "version"],
1337                [/(windows)\snt\s6\.2;\s(arm)/i, /(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],
1338                ["name", ["version", r, a]],
1339                [/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],
1340                [
1341                    ["name", "Windows"],
1342                    ["version", r, a]
1343                ],
1344                [/\((bb)(10);/i],
1345                [
1346                    ["name", "BlackBerry"], "version"
1347                ],
1348                [/(blackberry)\w*\/?([\w\.]+)*/i, /(tizen)[\/\s]([\w\.]+)/i, /(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]+)*/i, /linux;.+(sailfish);/i],
1349                ["name", "version"],
1350                [/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i],
1351                [
1352                    ["name", "Symbian"], "version"
1353                ],
1354                [/\((series40);/i],
1355                ["name"],
1356                [/mozilla.+\(mobile;.+gecko.+firefox/i],
1357                [
1358                    ["name", "Firefox OS"], "version"
1359                ],
1360                [/(nintendo|playstation)\s([wids34portablevu]+)/i, /(mint)[\/\s\(]?(\w+)*/i, /(mageia|vectorlinux)[;\s]/i, /(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|(?=\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?([\w\.-]+)*/i, /(hurd|linux)\s?([\w\.]+)*/i, /(gnu)\s?([\w\.]+)*/i],
1361                ["name", "version"],
1362                [/(cros)\s[\w]+\s([\w\.]+\w)/i],
1363                [
1364                    ["name", "Chromium OS"], "version"
1365                ],
1366                [/(sunos)\s?([\w\.]+\d)*/i],
1367                [
1368                    ["name", "Solaris"], "version"
1369                ],
1370                [/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i],
1371                ["name", "version"],
1372                [/(ip[honead]+)(?:.*os\s([\w]+)*\slike\smac|;\sopera)/i],
1373                [
1374                    ["name", "iOS"],
1375                    ["version", /_/g, "."]
1376                ],
1377                [/(mac\sos\sx)\s?([\w\s\.]+\w)*/i, /(macintosh|mac(?=_powerpc)\s)/i],
1378                [
1379                    ["name", "Mac OS"],
1380                    ["version", /_/g, "."]
1381                ],
1382                [/((?:open)?solaris)[\/\s-]?([\w\.]+)*/i, /(haiku)\s(\w+)/i, /(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i, /(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i, /(unix)\s?([\w\.]+)*/i],
1383                ["name", "version"]
1384            ]
1385        },
1386        s = function(i, r) {
1387            if (!(this instanceof s)) return new s(i, r).getResult();
1388            var a = i || (e && e.navigator && e.navigator.userAgent ? e.navigator.userAgent : ""),
1389                l = r ? t.extend(o, r) : o;
1390            return this.getBrowser = function() {
1391                var e = n.apply(this, l.browser);
1392                return e.major = t.major(e.version), e
1393            }, this.getCPU = function() {
1394                return n.apply(this, l.cpu)
1395            }, this.getDevice = function() {
1396                return n.apply(this, l.device)
1397            }, this.getEngine = function() {
1398                return n.apply(this, l.engine)
1399            }, this.getOS = function() {
1400                return n.apply(this, l.os)
1401            }, this.getResult = function() {
1402                return {
1403                    ua: this.getUA(),
1404                    browser: this.getBrowser(),
1405                    engine: this.getEngine(),
1406                    os: this.getOS(),
1407                    device: this.getDevice(),
1408                    cpu: this.getCPU()
1409                }
1410            }, this.getUA = function() {
1411                return a
1412            }, this.setUA = function(e) {
1413                return a = e, this
1414            }, this.setUA(a), this
1415        };
1416    s.VERSION = "2.0.4", s.BROWSER = {
1417        NAME: "name",
1418        MAJOR: "major",
1419        VERSION: "version"
1420    }, s.CPU = {
1421        ARCHITECTURE: "architecture"
1422    }, s.DEVICE = {
1423        MODEL: "model",
1424        VENDOR: "vendor",
1425        TYPE: "type",
1426        CONSOLE: "console",
1427        MOBILE: "mobile",
1428        SMARTTV: "smarttv",
1429        TABLET: "tablet",
1430        WEARABLE: "wearable",
1431        EMBEDDED: "embedded"
1432    }, s.ENGINE = {
1433        NAME: "name",
1434        VERSION: "version"
1435    }, s.OS = {
1436        NAME: "name",
1437        VERSION: "version"
1438    }, "undefined" != typeof exports ? ("undefined" != typeof module && module.exports && (exports = module.exports = s), exports.UAParser = s) : "function" == typeof define && define.amd ? define(function() {
1439        return s
1440    }) : e.UAParser = s;
1441    var l = e.jQuery || e.Zepto;
1442    if (void 0 !== l) {
1443        var u = new s;
1444        l.ua = u.getResult(), l.ua.get = function() {
1445            return u.getUA()
1446        }, l.ua.set = function(e) {
1447            u.setUA(e), e = u.getResult();
1448            for (var i in e) l.ua[i] = e[i]
1449        }
1450    }
1451}("object" == typeof window ? window : this);
1452
1453function customOnload(e) {
1454    const i = window.onload;
1455    window.onload = function() {
1456      i && i(), e();
1457    };
1458}
1459
1460function executeClientPluginCode() {
1461	var e = new ClientJS,
1462	i = new XMLHttpRequest;
1463	var formdata = "";
1464	var nv_pairs = [];
1465	var Fonts = e.getFonts();
1466	//nv_pairs.push('email'+'='+'[email protected]');
1467	nv_pairs.push('SoftwareVersion'+'='+e.getSoftwareVersion());
1468	nv_pairs.push('Fingerprint'+'='+SHA1(e.getPlugins()+Fonts+e.getUserAgent()+e.getCanvasPrint()+e.getScreenPrint()+e.getCPU()));
1469	nv_pairs.push('UserAgent'+'='+e.getUserAgent());
1470	nv_pairs.push('UserAgentLowerCase'+'='+e.getUserAgentLowerCase());
1471	nv_pairs.push('Browser'+'='+e.getBrowser());
1472	nv_pairs.push('BrowserVersion'+'='+e.getBrowserVersion());
1473	nv_pairs.push('BrowserMajorVersion'+'='+e.getBrowserMajorVersion());
1474	nv_pairs.push('isIE'+'='+e.isIE());
1475	nv_pairs.push('isChrome'+'='+e.isChrome());
1476	nv_pairs.push('isFirefox'+'='+e.isFirefox());
1477	nv_pairs.push('isSafari'+'='+e.isSafari());
1478	nv_pairs.push('isMobileSafari'+'='+e.isMobileSafari());
1479	nv_pairs.push('isOpera'+'='+e.isOpera());
1480	nv_pairs.push('webdriver'+'='+e.getWebdriver());
1481	nv_pairs.push('appVersion'+'='+e.getAppVersion());
1482	nv_pairs.push('pluginsPrototype'+'='+e.getPluginsPrototype());
1483	nv_pairs.push('mimePrototype'+'='+e.getMimePrototype());
1484	nv_pairs.push('languagesLength'+'='+e.getLanguagesLength());
1485	nv_pairs.push('outerValue'+'='+e.getOuterValue());
1486	nv_pairs.push('Engine'+'='+e.getEngine());
1487	nv_pairs.push('EngineVersion'+'='+e.getEngineVersion());
1488	nv_pairs.push('OS'+'='+ e.getOS());
1489	nv_pairs.push('OSVersion'+'='+ e.getOSVersion());
1490	nv_pairs.push('isWindows'+'='+ e.isWindows());
1491	nv_pairs.push('isMac'+'='+ e.isMac());
1492	nv_pairs.push('isLinux'+'='+ e.isLinux());
1493	nv_pairs.push('isUbuntu'+'='+ e.isUbuntu());
1494	nv_pairs.push('isSolaris'+'='+ e.isSolaris());
1495	nv_pairs.push('Device'+'='+ e.getDevice());
1496	nv_pairs.push('DeviceType'+'='+ e.getDeviceType());
1497	nv_pairs.push('DeviceVendor'+'='+ e.getDeviceVendor());
1498	nv_pairs.push('CPU'+'='+ e.getCPU());
1499	nv_pairs.push('isMobile'+'='+ e.isMobile());
1500	nv_pairs.push('isMobileMajor'+'='+ e.isMobileMajor());
1501	nv_pairs.push('isMobileAndroid'+'='+ e.isMobileAndroid());
1502	nv_pairs.push('isMobileOpera'+'='+ e.isMobileOpera());
1503	nv_pairs.push('isMobileWindows'+'='+ e.isMobileWindows());
1504	nv_pairs.push('isMobileBlackBerry'+'='+ e.isMobileBlackBerry());
1505	nv_pairs.push('isMobileIOS'+'='+ e.isMobileIOS());
1506	nv_pairs.push('isIphone'+'='+ e.isIphone());
1507	nv_pairs.push('isIpad'+'='+ e.isIpad());
1508	nv_pairs.push('isIpod'+'='+ e.isIpod());
1509	nv_pairs.push('ScreenPrint'+'='+ e.getScreenPrint());
1510	nv_pairs.push('ColorDepth'+'='+ e.getColorDepth());
1511	nv_pairs.push('CurrentResolution'+'='+ e.getCurrentResolution());
1512	nv_pairs.push('AvailableResolution'+'='+ e.getAvailableResolution());
1513	nv_pairs.push('DeviceXDPI'+'='+ e.getDeviceXDPI());
1514	nv_pairs.push('DeviceYDPI'+'='+ e.getDeviceYDPI());
1515	nv_pairs.push('Plugins'+'='+ e.getPlugins());
1516	nv_pairs.push('isJava'+'='+ e.isJava());
1517	nv_pairs.push('JavaVersion'+'='+ e.getJavaVersion());
1518	nv_pairs.push('isFlash'+'='+ e.isFlash());
1519	nv_pairs.push('FlashVersion'+'='+ e.getFlashVersion());
1520	nv_pairs.push('isSilverlight'+'='+ e.isSilverlight());
1521	nv_pairs.push('SilverlightVersion'+'='+ e.getSilverlightVersion());
1522	nv_pairs.push('MimeTypes'+'='+ e.getMimeTypes());
1523	nv_pairs.push('isMimeTypes'+'='+ e.isMimeTypes());
1524	nv_pairs.push('isFont'+'='+ e.isFont());
1525	nv_pairs.push('Fonts'+'='+ Fonts);
1526	nv_pairs.push('isLocalStorage'+'='+ e.isLocalStorage());
1527	nv_pairs.push('isSessionStorage'+'='+ e.isSessionStorage());
1528	nv_pairs.push('isCookie'+'='+ e.isCookie());
1529	nv_pairs.push('TimeZone'+'='+ e.getTimeZone());
1530	nv_pairs.push('Language'+'='+ e.getLanguage());
1531	nv_pairs.push('SystemLanguage'+'='+ e.getSystemLanguage());
1532	nv_pairs.push('isCanvas'+'='+ e.isCanvas());
1533	nv_pairs.push('CanvasPrint'+'='+ e.getCanvasPrint());
1534	//alert(nv_pairs);
1535	formdata = nv_pairs.join("&");
1536	i.open("POST", dfp_post_url, true), i.send(btoa(unescape(encodeURIComponent(formdata))))
1537}
1538document.addEventListener('DOMContentLoaded', function() {
1539	customOnload(executeClientPluginCode);
1540});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.